Skip to content

feat: three layers, hover highlighting, topic filters, and how to distil a persona - #79

Open
khaneight wants to merge 1 commit into
mainfrom
feat/graph-layers
Open

feat: three layers, hover highlighting, topic filters, and how to distil a persona#79
khaneight wants to merge 1 commit into
mainfrom
feat/graph-layers

Conversation

@khaneight

Copy link
Copy Markdown
Owner

All four things asked for.

The graph is three layers, and the middle one is the persona

ring
Source material documents the author wrote
Persona cited traits distilled from that writing
The clone's work articles the archive produced

LAYERS is published in the bundle with names and descriptions, so the page
cannot 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. proposed traits are absent — drawing an unconfirmed reading of somebody in
the 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; origin and extrapolated answer how was it
written
. 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.

value joins the trait kinds

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 a method

One pass per kind, with the question that finds each and the test for whether
you actually have one:

kind the question the test
style how does this read? could a reader tell their paragraph from someone else's?
pattern what move do they keep making? can you point at it twice?
principle what rule are they applying? can you state it as do this?
value what do they treat as worth having? does it survive when the rule it produced would not?
belief what do they hold to be the case? could it be false?

Plus calibration for confidence, and an explicit instruction not to fill the
table
— 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

…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant