{
  "rows": [
    {
      "id": "attn-observer",
      "canonical": "AttnObserver",
      "family": "attention",
      "kind": "symbol",
      "definition": "A callback that receives post-softmax attention distributions one (layer, query, head) row at a time for span attribution.",
      "distinction": "A pure post-softmax OBSERVER - NOT the accumulator that folds masses and NOT the AttentionIndex metadata for sparse selection.",
      "distinct_from": ["attention-accumulator", "attention-index"],
      "aliases": ["attnobserver"],
      "grounding": "attnobs",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "attended",
      "canonical": "Attended (span field)",
      "family": "attention",
      "kind": "symbol",
      "definition": "The per-turn witnessed post-softmax attention mass a span accumulated during one forward pass, reset at the turn boundary.",
      "distinction": "The in-flight per-turn scalar - NOT AttendedMass (the sum across spans) and NOT the EMA/Cumulative reductions.",
      "distinct_from": ["attended-mass", "attention-accumulator"],
      "aliases": [],
      "grounding": "attended",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "attended-mass",
      "canonical": "AttendedMass (method)",
      "family": "attention",
      "kind": "symbol",
      "definition": "The total witnessed attention mass currently attributed across all live segments - the denominator that normalizes each span's attention into [0,1].",
      "distinction": "The SUM across spans - NOT Attended (per-span per-turn) and NOT Cumulative (per-span total over time).",
      "distinct_from": ["attended", "attention-accumulator"],
      "aliases": [],
      "grounding": "attendedmass",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "attended",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "attention-accumulator",
      "canonical": "AttentionAccumulator",
      "family": "attention",
      "kind": "symbol",
      "definition": "Folds per-turn per-span witnessed attention masses into a recency-decayed EMA and an undecayed cumulative sum, keeping a bounded trajectory ring per span.",
      "distinction": "The mutable ACCUMULATOR of masses - NOT Attended (the per-turn scalar it folds) and NOT SpanAttention (the read-only snapshot it returns).",
      "distinct_from": ["attended", "span-attention"],
      "aliases": [],
      "grounding": "attentionaccumulator",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "span-attention",
      "canonical": "SpanAttention",
      "family": "attention",
      "kind": "symbol",
      "definition": "A read-only snapshot of one span's accumulated attention: EMA (recency-decayed), Cumulative (undecayed), and the bounded Trajectory ring.",
      "distinction": "The read-only SNAPSHOT - NOT the mutable AttentionAccumulator and NOT Attended (the in-flight scalar).",
      "distinct_from": ["attention-accumulator", "attended"],
      "aliases": [],
      "grounding": "spanattention",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "attention-accumulator",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "turn-mass",
      "canonical": "TurnMass",
      "family": "attention",
      "kind": "symbol",
      "definition": "One entry in a span's attention trajectory: the witnessed mass it drew in a specific (1-based, session-global) turn number.",
      "distinction": "The (turn, mass) PAIR in a trajectory - NOT Attended (the current per-turn scalar) and NOT the Trajectory ring it lives in.",
      "distinct_from": ["attended", "attention-accumulator"],
      "aliases": [],
      "grounding": "turnmass",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "attention-accumulator",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "attention-index",
      "canonical": "AttentionIndex",
      "family": "attention",
      "kind": "subsystem",
      "definition": "Payload-free metadata for a dynamic-sparse-attention (DSA) index artifact, recording binding axes and dependency graph for content-dependent key selection.",
      "distinction": "The stored DSA index METADATA - NOT AttentionIndexRequest (the lookup query) and NOT the KV cache (the K/V it sparsely selects from).",
      "distinct_from": ["attention-index-request", "kv-cache"],
      "aliases": [],
      "grounding": "attentionindex",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "attention-index-request",
      "canonical": "AttentionIndexRequest",
      "family": "attention",
      "kind": "symbol",
      "definition": "The set of axes a DSA index lookup must match for reuse, with strict causal and exactness requirements for prefix matching.",
      "distinction": "The lookup QUERY criteria - NOT AttentionIndex (the candidate being matched) and NOT the index store itself.",
      "distinct_from": ["attention-index"],
      "aliases": [],
      "grounding": "attentionindexrequest",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "attention-index",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "linear-attn-cache",
      "canonical": "linearAttnCache",
      "family": "attention",
      "kind": "symbol",
      "definition": "The cache for Gated-DeltaNet linear-attention layers: accumulated recurrent state and a short-conv window per layer, not per-token K/V.",
      "distinction": "Recurrent STATE for linear attention - NOT the KV cache (per-token softmax K/V) and NOT the attention accumulator (witness masses).",
      "distinct_from": ["kv-cache", "attention-accumulator"],
      "aliases": [],
      "grounding": "linearattncache",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    },
    {
      "id": "attribute-row",
      "canonical": "AttributeRow (method)",
      "family": "attention",
      "kind": "symbol",
      "definition": "Routes one post-softmax attention row onto the segment ledger, attributing each key position's weight to the live span whose cache range owns that position.",
      "distinction": "The attribution ACTION (distributes weights to spans) - NOT Attended (the accumulator that receives weight) and NOT AttendedMass (the sum).",
      "distinct_from": ["attended", "attended-mass"],
      "aliases": [],
      "grounding": "attributerow",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["attention family not yet written into the concept glossary"]
    }
  ]
}
