{
  "rows": [
    {
      "id": "session",
      "canonical": "Session",
      "family": "session-runtime",
      "kind": "subsystem",
      "definition": "The full drive record for one served run (run-state, budget, priority, pace), keyed by TraceID and persisting across turns.",
      "distinction": "The persistent RECORD across turns - NOT a Turn (one round-trip within it) and NOT a Slot (the free/busy signal).",
      "distinct_from": ["turn", "slot"],
      "aliases": [],
      "grounding": "session",
      "grounding_kind": "path",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "",
      "verdict": "crystal",
      "gaps": []
    },
    {
      "id": "turn",
      "canonical": "Turn",
      "family": "session-runtime",
      "kind": "concept",
      "definition": "One model round-trip within a session: the agent submits input, the model generates output, and results are admitted to context.",
      "distinction": "ONE round-trip - NOT a Session (which spans many turns) and NOT a Slot (the scheduling event at a turn boundary).",
      "distinct_from": ["session", "slot"],
      "aliases": [],
      "grounding": "turn",
      "grounding_kind": "symbol",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "session",
      "verdict": "crystal",
      "gaps": []
    },
    {
      "id": "slot",
      "canonical": "Slot",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "The immutable free/busy signal emitted when a session leaves the eligible set (budget exhaustion, pause, drain, stop), freeing scheduling capacity.",
      "distinction": "The free/busy SIGNAL at turn boundaries - NOT the Session (persistent state) and NOT the Budget (the allotment whose exhaustion fires it).",
      "distinct_from": ["session", "turn", "budget"],
      "aliases": ["slotevent"],
      "grounding": "slotevent",
      "grounding_kind": "symbol",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "",
      "verdict": "crystal",
      "gaps": []
    },
    {
      "id": "scheduler",
      "canonical": "Scheduler",
      "family": "session-runtime",
      "kind": "subsystem",
      "definition": "The policy layer that reads a Table's Snapshot and selects the live session that should run next (StrictPriority or WeightedFair).",
      "distinction": "The POLICY that picks a winner - NOT the Table (the mutable store) and NOT a Session (one state record).",
      "distinct_from": ["session", "slot"],
      "aliases": [],
      "grounding": "scheduler",
      "grounding_kind": "symbol",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "",
      "verdict": "crystal",
      "gaps": []
    },
    {
      "id": "budget",
      "canonical": "Budget",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "A session's remaining work allotment across three independent axes: turns (round-trips), output tokens, and context tokens.",
      "distinction": "TOTAL remaining work - NOT Pace (the per-turn throttle) and NOT a Slot (the signal fired when budget is exhausted).",
      "distinct_from": ["pace", "slot"],
      "aliases": [],
      "grounding": "budget",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "session",
      "verdict": "defined",
      "gaps": ["budget/pace/runstate are defined-only, not yet in the glossary"]
    },
    {
      "id": "pace",
      "canonical": "Pace",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "The per-turn throttle: max output tokens and minimum gap between turns, applied cooperatively without pausing the session.",
      "distinction": "PER-TURN throttle (how hard one turn runs) - NOT Budget (total remaining work across all turns).",
      "distinct_from": ["budget"],
      "aliases": [],
      "grounding": "pace",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "session",
      "verdict": "defined",
      "gaps": ["budget/pace/runstate are defined-only, not yet in the glossary"]
    },
    {
      "id": "runstate",
      "canonical": "RunState",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "A served session's lifecycle position in a small total state machine: Running, Throttled, Paused, Draining, or Stopped.",
      "distinction": "ONE field carrying the session's phase - NOT the Session (the full record that contains it).",
      "distinct_from": ["session"],
      "aliases": [],
      "grounding": "runstate",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "session",
      "verdict": "defined",
      "gaps": ["budget/pace/runstate are defined-only, not yet in the glossary"]
    },
    {
      "id": "session-state",
      "canonical": "session.State",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "Live, mutable per-session control record: run-state, budget, priority, pace, and revision (an optimistic-concurrency guard).",
      "distinction": "The LIVE mutable drive record - NOT sessionimage.Image (the persisted on-disk archive) and NOT SessionPlanner (the context-planner state).",
      "distinct_from": ["session-image", "session-planner"],
      "aliases": [],
      "grounding": "sessionstate",
      "grounding_kind": "symbol",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "session",
      "verdict": "crystal",
      "gaps": ["session.State (live) vs sessionimage.Image (persisted) is defined-only"]
    },
    {
      "id": "session-image",
      "canonical": "sessionimage.Image",
      "family": "session-runtime",
      "kind": "subsystem",
      "definition": "Loaded, integrity-verified portable session archive: drive (session.json), recall manifest, ctxplan index, trajectory corpus, and image.json meta.",
      "distinction": "The PERSISTED portable archive - NOT session.State (the live drive record) and NOT recall (one component bundled inside the image).",
      "distinct_from": ["session-state", "recall"],
      "aliases": ["sessionimage"],
      "grounding": "sessionimage",
      "grounding_kind": "path",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "",
      "verdict": "crystal",
      "gaps": ["sessionimage.Image (persisted archive) vs session.State (live) is defined-only"]
    },
    {
      "id": "session-planner",
      "canonical": "SessionPlanner",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "Persistent per-session context planner: a long-lived lossless store plus candidate index that ingests each turn's new messages incrementally.",
      "distinction": "The STATEFUL per-session planner - NOT CtxViewPlanner (the stateless shared seam) and NOT session.State (the drive record).",
      "distinct_from": ["session-state", "ctxviewplanner"],
      "aliases": [],
      "grounding": "sessionplanner",
      "grounding_kind": "symbol",
      "glossary_anchor": "docs/fak/concept-glossary.md",
      "parent": "",
      "verdict": "crystal",
      "gaps": ["SessionPlanner (stateful) vs CtxViewPlanner (stateless) is defined-only"]
    },
    {
      "id": "session-id",
      "canonical": "SessionID",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "The stable identity key for a session (its TraceID), constant across all of the session's turns.",
      "distinction": "The session IDENTITY - NOT a Turn (one round-trip within it) and NOT the Session record it keys.",
      "distinct_from": ["session", "turn"],
      "aliases": [],
      "grounding": "sessionid",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "session",
      "verdict": "defined",
      "gaps": ["SessionID (identity) vs the Session record is defined-only"]
    },
    {
      "id": "new-session",
      "canonical": "NewSession",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "The constructor that admits a fresh session into the table with its initial drive state.",
      "distinction": "The session CONSTRUCTOR - NOT session.State (the record it builds) and NOT the Session concept itself.",
      "distinct_from": ["session-state", "session"],
      "aliases": [],
      "grounding": "newsession",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "session",
      "verdict": "defined",
      "gaps": ["NewSession (constructor) vs session.State (the record) is defined-only"]
    },
    {
      "id": "session-turn",
      "canonical": "SessionTurn",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "One accounted served round-trip bound to a session: the begin / debit / served lifecycle of a single turn.",
      "distinction": "One served TURN's accounting record - NOT Turn (the abstract round-trip concept) and NOT session.State (the persistent record).",
      "distinct_from": ["turn", "session-state"],
      "aliases": [],
      "grounding": "sessionturn",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "turn",
      "verdict": "defined",
      "gaps": ["SessionTurn (accounted round-trip) vs Turn (the concept) is defined-only"]
    },
    {
      "id": "session-usage",
      "canonical": "SessionUsage",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "Per-session token and cost accounting rolled up across the session's turns.",
      "distinction": "The session ACCOUNTING rollup - NOT Budget (the ceiling it counts against) and NOT a single SessionTurn debit.",
      "distinct_from": ["budget", "session-turn"],
      "aliases": [],
      "grounding": "sessionusage",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "session",
      "verdict": "defined",
      "gaps": ["SessionUsage (rollup) vs Budget (the ceiling) is defined-only"]
    },
    {
      "id": "session-control-request",
      "canonical": "SessionControlRequest",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "An external steer directive against a live session: pause / resume / priority / pace change.",
      "distinction": "The external STEER directive - NOT session.State (the record it mutates) and NOT the Scheduler (which reads the result).",
      "distinct_from": ["session-state", "scheduler"],
      "aliases": [],
      "grounding": "sessioncontrolrequest",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["SessionControlRequest (steer) vs session.State (the record) is defined-only"]
    },
    {
      "id": "session-reset",
      "canonical": "SessionReset",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "A directive to clear a session's drive state back to a clean baseline without removing it from the pool.",
      "distinction": "The RESET directive - NOT eviction from the pool and NOT session.State itself.",
      "distinct_from": ["session-state", "session"],
      "aliases": [],
      "grounding": "sessionreset",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["SessionReset (clear state) vs eviction is defined-only"]
    },
    {
      "id": "list-sessions",
      "canonical": "ListSessions",
      "family": "session-runtime",
      "kind": "symbol",
      "definition": "The read query that returns a snapshot of all live sessions in the table.",
      "distinction": "The READ snapshot query - NOT the Scheduler (which picks one to run) and NOT the Session record itself.",
      "distinct_from": ["scheduler", "session"],
      "aliases": [],
      "grounding": "listsessions",
      "grounding_kind": "symbol",
      "glossary_anchor": "",
      "parent": "",
      "verdict": "defined",
      "gaps": ["ListSessions (read snapshot) vs Scheduler (the picker) is defined-only"]
    }
  ]
}
