feat: three layers, hover highlighting, topic filters, and how to distil a persona - #79
Open
khaneight wants to merge 1 commit into
Open
feat: three layers, hover highlighting, topic filters, and how to distil a persona#79khaneight wants to merge 1 commit into
khaneight wants to merge 1 commit into
Conversation
…til a persona **The graph is three layers now, and the middle one is the persona.** Source material the author wrote, the traits distilled from it, and the work produced from those. `LAYERS` is published in the bundle with names and descriptions, so a front end cannot invent its own account of what the archive is made of. An affirmed trait is a node with an edge down to every document it was read out of and up to every article written from it. That chain is the whole claim the picture makes: a sentence in a generated essay can be followed back through the trait that produced it to the passage in the corpus that supports it. `proposed` traits are absent, for the same reason they are absent from `persona` — drawing an unconfirmed reading of somebody in the middle of the picture asserts it to every reader before that person has seen it. Every article sits in the work layer whatever its origin. Depth answers "what kind of thing is this"; `origin` and `extrapolated` answer "how was it written", and splitting the rings by origin would put a compiled article and a machine-written one at different depths while the legend claims depth means layer. **Hovering a node lights up what it is related to** — its edges drawn in its own colour, its neighbours held bright, everything else dimmed. **Topics filter the graph**, built from the archive's own vocabulary: the domains things are filed under and the tags on them, with counts, any number selectable. Traits have no topic of their own — a trait is a claim about a person, not about a subject — so they stay while anything they touch does. Trait labels on the graph are their ids rather than their claims, which are whole sentences; the claim is still the title in the reader, where there is room to read it. **`value` joins the trait kinds**, and they are ordered surface inwards: style, pattern, principle, value, belief. A principle says *do this*; a value says *this matters*, and the same value produces different rules in different settings. Keeping them apart is what lets the clone extend a view rather than only repeat its conclusions. `/sentinel-clone` gains the distillation method: one pass per kind, with the question that finds each and the test for whether you have one, the principle/value confusion called out, calibration for `confidence`, and an instruction not to fill the table — a trait invented to complete the set is one the user then spends time rejecting. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All four things asked for.
The graph is three layers, and the middle one is the persona
LAYERSis published in the bundle with names and descriptions, so the pagecannot invent its own account of what the archive is made of.
An affirmed trait is now a node, edged down to every document it was read
out of and up to every article written from it. That chain is the claim the
whole picture makes: a sentence in a generated essay can be followed back
through the trait that produced it to the passage in the corpus that supports
it.
proposedtraits are absent — drawing an unconfirmed reading of somebody inthe middle of the picture asserts it to every reader before they have seen it.
Every article sits in the work layer whatever its origin. Depth answers
what kind of thing is this;
originandextrapolatedanswer how was itwritten. Splitting rings by origin would put a compiled and a machine-written
article at different depths while the legend claims depth means layer.
Hover, and filters
Hovering lights a node's edges in its own colour, holds its neighbours bright
and dims the rest. Filters are built from the archive's own vocabulary — domains
and tags, with counts, any number selectable. Traits have no topic of their own,
so they stay while anything they touch does.
Trait labels on the graph are ids rather than claims, since a claim is a whole
sentence; the claim is still the title in the reader, where there is room.
valuejoins the trait kindsOrdered surface inwards:
style,pattern,principle,value,belief.A principle says do this; a value says this matters, and the same value
produces different rules in different settings. Keeping them apart is what lets
the clone extend a view rather than only repeat its conclusions.
/sentinel-clonegains a methodOne pass per kind, with the question that finds each and the test for whether
you actually have one:
Plus calibration for
confidence, and an explicit instruction not to fill thetable — a trait invented to complete the set is one the user then spends time
rejecting.
539 tests (+3), clippy and fmt clean. CLAUDE.md compressed back under budget
rather than raising it again, as its own constant instructs.
🤖 Generated with Claude Code