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:

ObjectWhat it holds
FindingRefThe stable identity of a finding, independent of the scan that produced it.
TriageRecordAn append-only annotation about that finding.
ProposalWhat 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.

GroupSources
Judge behaviorverdict-reliability, judge-liveness, judge-malfunction, co-groundedness
Evaluation structureorthogonality-hypothesis, primary-axis-orthogonality, redundancy-candidate, pairwise-drift, contested-cohort, rubric-gap, rubric-ref-broken
Coverage and reachcoverage-gap, reach-gap, emission-gap, dark-mass-blindspot, read-window-underpowered
Surface lifecycletrajectory, quarantine-candidate, retirement-candidate, hash-provenance
Seams and authoritybuilder-seam, seam-soak, authority-suspended
Storestore-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.