Chapter 18
The attention spine
Every observe-only surface produces findings, and there are twenty-five sources of them. The spine gives all of them one operator lifecycle instead of one list per surface, and it is the substrate the authority state reads.
What it is
A cross-source triage layer over findings. It declares three objects and nothing else:
| Object | What it holds |
|---|---|
FindingRef | The stable identity of a finding, independent of the scan that produced it. |
TriageRecord | An append-only annotation about that finding. |
Proposal | What a confirmed finding mints into Curate. |
The sources
Twenty-five, spanning judge behavior, evaluation structure, coverage, the store, and the seam work. They are listed here because the spine is only as good as what files into it.
| Group | Sources |
|---|---|
| Judge behavior | verdict-reliability, judge-liveness, judge-malfunction, co-groundedness |
| Evaluation structure | orthogonality-hypothesis, primary-axis-orthogonality, redundancy-candidate, pairwise-drift, contested-cohort, rubric-gap, rubric-ref-broken |
| Coverage and reach | coverage-gap, reach-gap, emission-gap, dark-mass-blindspot, read-window-underpowered |
| Surface lifecycle | trajectory, quarantine-candidate, retirement-candidate, hash-provenance |
| Seams and authority | builder-seam, seam-soak, authority-suspended |
| Store | store-capacity, retention-integrity |
A code seam and a model call file into the same spine. They arrive from different sources and sit on adjacent surfaces, and from the lifecycle's side they are the same object.
Three grains
What a finding's identity means depends on its grain: run for one call,
conversation for one conversation, and structural for a declared
surface, dimension or axis with no single event behind it.
Why it matters
Two invariants hold the spine apart from the measurement it annotates.
A triage annotation never reaches the substrate
An annotation is about a derived finding. It lives in a separate store, downstream of derivation. It is never an input to the lens hash, and it never mutates the substrate, a prompt, or a threshold. The spine proposes; the existing gated approver path disposes. A triage click changes nothing on the lens.
Identity survives re-derivation
Findings are re-derived on every scan. A triage record therefore keys to a content-derived
findingKey rather than a per-scan row index. Keying to a row index would orphan
every annotation on the next deploy. clusterId stays an attribute, never the
primary grain, because a non-deterministic key has the same effect.
How to use it
- Read findings from the spine rather than per-surface. One queue, one lifecycle.
- Annotate a finding to record what triage concluded. Annotations accumulate; nothing is overwritten.
- Mint a proposal from a confirmed finding. The proposal enters the approver path as a proposal, not as a change.
Reading the output
A finding carries its findingRef, the surface and dimension it came from, the run
mode it was derived under, and its triage state. Where a finding has an exemplar, the exemplar
payload travels with it under the same husk projection used elsewhere in the store, so a triaged
finding on a compacted span still opens.
What sits on top
The spine is the base. Authority is a reading over the same record: a per-surface state derived
from what the gates, the dependencies and the soak evidence say, re-derived on every read. A
surface whose grant is withdrawn files authority-suspended back onto the spine as
another finding, which is how a withdrawal reaches the same queue as everything else.
Reflection sits above that again, switched on for a cell once its authority is established.
Reference
The public module declares the wire and store contract only. Which surface maps to which
FindingRef, and the store implementation, live in the lens package.