{
  "repo": "core",
  "version": "7.30.0",
  "from": "b99451b02751a1b147e397ea6807b3b9985d11f3",
  "to": "v7.30.0",
  "added": [
    {
      "name": "COMPACTION_KINDS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:650",
        "src/index.ts:986"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "CompactionEffect",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/frame-settlement.ts:15",
        "src/index.ts:937"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "CompactionKind",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:651",
        "src/index.ts:987"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "DIRECTION_RELATIONS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/team-role.ts:21",
        "src/index.ts:3116"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "DirectionRelation",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/agents/team-role.ts:22",
        "src/index.ts:3116"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "HANDBACK_STATES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:641",
        "src/index.ts:984"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "HandbackState",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:642",
        "src/index.ts:985"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "MailboxAckResult",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/mailbox-store.ts:333",
        "src/index.ts:1253"
      ],
      "criteriaCovered": true,
      "breaking": false
    },
    {
      "name": "PEER_LANE_DEFAULTS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/peer-admission.ts:66",
        "src/index.ts:2999"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PEER_LISTING_FRESH_WINDOW_MS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/list-agents-tool.ts:26",
        "src/index.ts:3117"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PEER_PRESENCE_MAX_CHARS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/peer-directory.ts:37",
        "src/index.ts:3101"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PEER_RESUPPLY_CAP",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/peer-session-drain.ts:129",
        "src/index.ts:3120"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PeerLaneConfig",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/agents/peer-admission.ts:31",
        "src/index.ts:3007"
      ],
      "criteriaCovered": true,
      "breaking": false
    },
    {
      "name": "PeerPresence",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/agents/peer-directory.ts:32",
        "src/index.ts:3100"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "READ_INBOX_MAX_LIMIT",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/read-inbox-tool.ts:16",
        "src/index.ts:3115"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "READ_INBOX_RESULT_BUDGET_CHARS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/read-inbox-tool.ts:26",
        "src/index.ts:3115"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "READ_INBOX_TOOL_NAME",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/read-inbox-tool.ts:14",
        "src/index.ts:3115"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "RESUPPLIED_FRAME_PREAMBLE",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:485",
        "src/index.ts:954"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "ReadInboxToolOptions",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/agents/read-inbox-tool.ts:28",
        "src/index.ts:3115"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "TEAM_ROLES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/team-role.ts:7",
        "src/index.ts:3116"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "TeamRole",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/agents/team-role.ts:8",
        "src/index.ts:3116"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "createReadInboxTool",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/agents/read-inbox-tool.ts:33",
        "src/index.ts:3115"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "handbackStateOf",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:645",
        "src/index.ts:988"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "isFreshPeerRow",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/agents/list-agents-tool.ts:34",
        "src/index.ts:3117"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "mayDirect",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/agents/team-role.ts:36",
        "src/index.ts:3116"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "resolvePeerLaneConfig",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/agents/peer-admission.ts:154",
        "src/index.ts:2998"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "teamRoleOf",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/agents/team-role.ts:15",
        "src/index.ts:3116"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "terminalFrameFacets",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:663",
        "src/index.ts:989"
      ],
      "criteriaCovered": false,
      "breaking": false
    }
  ],
  "removed": [
    {
      "name": "PEER_ADMISSION_DEFAULTS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/agents/peer-admission.ts:54",
        "src/index.ts:2987"
      ],
      "breaking": true
    },
    {
      "name": "PeerAdmissionConfig",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/agents/peer-admission.ts:31",
        "src/index.ts:2995"
      ],
      "breaking": true
    },
    {
      "name": "resolvePeerAdmissionConfig",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/agents/peer-admission.ts:133",
        "src/index.ts:2986"
      ],
      "breaking": true
    }
  ],
  "changed": [
    {
      "name": "FileStorageCorruptReadInfo",
      "from": {
        "kind": "interface",
        "tier": "advanced"
      },
      "to": {
        "kind": "type",
        "tier": "advanced"
      },
      "at": [
        "src/index.ts:928",
        "src/stores/file/index.ts:167"
      ],
      "breaking": true
    }
  ],
  "narrowed": [
    {
      "id": "F1",
      "source": "behaviorFlips.summary",
      "text": "NARROWING of the ack beat + additive keys (#1036, C-R90 M-①; inbox × compaction). A session-box record is acked only after a frame carrying it reached the TRANSCRIPT and no compaction applied up to that settlement beat summarized that entry away; the drain's settlement runs AFTER the same boundary's compaction. A summarized record is handed over ONCE more (same `task_id`, same `seq`, `attempt: 2`, `resupplied: true`, one preamble line `RESUPPLIED_FRAME_PREAMBLE`); a re-supplied occurrence summarized again settles as the new `PeerInboundDisposition` word `resupply_exhausted`, disclosed on `peer.inbound_disposition` as a loss, never as read. New OPTIONAL wire keys (all `?` in src; no 7.30.0 tag yet): `TaskNotificationPayload.resupplied?: true` (absent = not a repair; no `false` form), `.attempt?: number` (absent = 1), `.inboxNotice.resupplied?: number` (absent = no repair this pass; `delivered` now counts only records the model had not seen), `compacted.summarizedCrossSessionMessages?` (present iff ≥ 1). The injection queue's dedup key gains `:a<attempt>` for attempt ≥ 2 only (byte-identical for every pre-7.30 frame); a consumer that folds frames by `taskId:status[:seq]` must add the attempt segment or it hides the repair (@server trace/inbox allowlist, @cli fold, @client-core fold). NOT criterioned in this document (assertion budget ≤ 12; see the receipt's missing-pin list): `UserMessage.engineNoteKey?` (persisted on the transcript entry, stripped from provider payloads, normalized at import — no in-tree pin exercises it), `ReadInbox`'s budget exemption, and the two advisory sinks (`AgentHarness.onFrameCommitted?`, `MaybeCompactOptions.onCommitted?`)."
    },
    {
      "id": "F2",
      "source": "behaviorFlips.summary",
      "text": "BREAKING (store type face) + NARROWING (#1036): `MailboxStore.ack` returns `Promise<MailboxAckResult>` (`{ acked: boolean }`) instead of `Promise<void>`, and a HELD record stays in the box. THREE SENTENCES — WHO IS HURT: every out-of-tree `MailboxStore` implementation (a durable SQL twin included) — its `ack` no longer satisfies the interface, a type error at upgrade. COMPENSATION: the bundled backends' runtime behaviour is unchanged (the MB1 lease fence already made a non-holder's ack a no-op); what is new is that the no-op is REPORTED (`{acked:false}`), the prefix does not move, and the drain announces the refusal through `onError` (`classification: \"peer-box-ack\"`) instead of reading it as success. PICKUP: `docs/wire-consumption/unreleased-1036.md` (store-contract row, @server (b)) and the root type export `MailboxAckResult`. Same flip: a record held by the `crossSessionInbound` judgment is no longer acked into a process-local copy — the box is the held queue's durable seat; later records are still delivered past it; a leg that reacquires the box retires every held entry whose record another owner already acked (`peer.held_settled`, `detail.reason === \"superseded\"`)."
    },
    {
      "id": "F4",
      "source": "behaviorFlips.summary",
      "text": "Agent teams, final form (#969 S1 / #1024 / #1025 / #1034 first slice / #1037; C-R86, C-R89). TWO BREAKING changes, three sentences each. (i) RENAME, no alias: `PeerAdmissionConfig` → `PeerLaneConfig`, `PEER_ADMISSION_DEFAULTS` → `PEER_LANE_DEFAULTS`, `resolvePeerAdmissionConfig` → `resolvePeerLaneConfig`, `RunnerDeps.peerAdmission` → `RunnerDeps.peerLane`, `SendMessageToolOptions.admission` → `.lane`. WHO IS HURT: a deployment wiring `RunnerDeps.peerAdmission` (@server) and a mirror naming the old type (@settings-schema). COMPENSATION: a type error at upgrade, never a silent default; the notice code `config.peer_admission_out_of_range` keeps its spelling; the table gains `maxWakesPerHour` (6), `maxMessagesPerRound` (5), `listingFreshWindowMs` (24 h), whole-number counts, loud fallback. PICKUP: `docs/wire-consumption/unreleased-969.md` (`PeerLaneConfig` row) and the CHANGELOG pickup sentences. (ii) SETTINGS WORD: `crossSessionInbound` is `wake | next-turn | hold | refuse`; `accept` is retired. WHO IS HURT: every reader pinning the closed set (settings-schema mirror, the server's `CROSS_SESSION_INBOUND` enum and its pin, a cli settings face) and every settings file spelling `accept`. COMPENSATION: `accept` is READ as `next-turn` and reported (`ResolvedCrossSessionInboundSetting.deprecatedLayers`, one `onError` per leg `peer-inbound-setting-spelling`). PICKUP: `unreleased-969.md` first row; ORDER LAW core → schema mirror → server pin → hosts may write `wake` (measured: a 7.29.0 core reads `wake` and `next-turn` as invalid and HOLDS). Also in this flip: `ListAgents` lists a peer by default only while FRESH (`includeAll: true` adds stale and offline), rows render `active <N> ago` / cwd tail / `self: agent=…, intent=…`; `TaskSpec.peerPresence` rides `wiring_manifest.peerPresence`; `wiring_manifest.teamRole`; one drain pass injects at most `maxMessagesPerRound` records and an `[Inbox notice]` carrier (`TaskNotificationPayload.inboxNotice`) says how many wait; new built-in tool `ReadInbox`; delegation terminal frames carry `spawnName?` / `handback` / `compaction?` and render `<agent-name>` / `<handback>` (only when not `send`); `ListAgentsToolOptions.includeOffline` removed (type face −1). Measured export surface v7.29.0 → this tree (test/export-surface.snapshot.json): 2450 → 2475, +28 / −3 (the −3 are the renamed names). NOT criterioned in this document (assertion budget ≤ 12): the durable terminal frame behind `RunnerDeps.sessionBoxEngineFrames: true` (`MAILBOX_PEER_RECORD_KINDS` +`engine_frame`, codec version stop, malformed-facet settle; pins `test/backlog969-engine-frame-codec.test.ts`), `SendMessage({ urgent })` ordering and its notice count (drain-level pin only), `mayDirect` / `DIRECTION_RELATIONS` (nothing reads it yet), `StopHookContext.backgroundTasks?()` (not a published type — the v1 vocabulary cannot cite it), the SendMessage narrow-arm wording, `ListAgentsToolOptions.includeOffline` removal."
    },
    {
      "id": "F5",
      "source": "behaviorFlips.summary",
      "text": "NARROWING ×4 / WIDENING ×3 (#994 S1; +0 exports): every shell reader consumes the one lexer's facts; the strict mode, the quote mask and five hand-written readers retire. Package-root faces that move: `parseRuleText` / `RuleReject.code` — a `#`-headed persisted-rule body names no command and is refused `invalid.empty_command` (NARROWING ③); `parseLeadingCommandName` bounds its first word on bash blanks `[ \\t]` only (a non-blank whitespace character fuses — `ls<NBSP>x` names `ls<NBSP>x`, was `ls`) and answers `{ reject: \"empty command\" }` for a `#`-headed text (@server `runtime-governance.ts:31,136`); the classify face reads `#` as a comment, refuses `|&` with its own sentence, asks on `$\"…\"`, reads a HOME reassignment as bash does. Two faces are cited below — the rule-import face (`RuleReject.code`) and the classify face over a real `Bash` tool (`tool_end.gate`, NARROWING ①); the rest are verdict/sentence changes covered by `test/backlog994-s1-dual-run.test.ts` (4297 inputs × 10 faces against the v7.28.1 dist), not by a criterion here, and `parseLeadingCommandName`'s result shape has no named public type the v1 vocabulary can cite."
    }
  ],
  "closedSetMembers": [
    {
      "set": "BASH_ONLY_CONSTRUCTS",
      "at": [
        "src/shell/lex.ts:87"
      ],
      "newSet": false,
      "added": [
        "pipe_both"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "COMPACTION_KINDS",
      "at": [
        "src/core/task-notification.ts:650"
      ],
      "newSet": true,
      "added": [
        "auto",
        "manual",
        "reactive"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "CROSS_SESSION_INBOUND_SETTINGS",
      "at": [
        "src/agents/cross-session-judge.ts:32"
      ],
      "newSet": false,
      "added": [
        "next-turn",
        "wake"
      ],
      "removed": [
        "accept"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "CompactionKind",
      "at": [
        "src/core/task-notification.ts:651",
        "src/index.ts:987"
      ],
      "newSet": true,
      "added": [
        "auto",
        "manual",
        "reactive"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "CrossSessionInboundSetting",
      "at": [
        "src/agents/cross-session-judge.ts:31"
      ],
      "newSet": false,
      "added": [
        "next-turn",
        "wake"
      ],
      "removed": [
        "accept"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "DIRECTION_RELATIONS",
      "at": [
        "src/agents/team-role.ts:21"
      ],
      "newSet": true,
      "added": [
        "lead",
        "peer",
        "stranger"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "DirectionRelation",
      "at": [
        "src/agents/team-role.ts:22",
        "src/index.ts:3116"
      ],
      "newSet": true,
      "added": [
        "lead",
        "peer",
        "stranger"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ENGINE_FRAME_TASK_TYPES",
      "at": [
        "src/core/task-notification.ts:674"
      ],
      "newSet": true,
      "added": [
        "background_agent",
        "monitor",
        "workflow"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ENGINE_NOTICE_CODES",
      "at": [
        "src/core/governance-codes.ts:315"
      ],
      "newSet": false,
      "added": [
        "config.context_settings_swapped"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "set": "HANDBACK_STATES",
      "at": [
        "src/core/task-notification.ts:641"
      ],
      "newSet": true,
      "added": [
        "flagged",
        "send",
        "withheld"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "HandbackState",
      "at": [
        "src/core/task-notification.ts:642",
        "src/index.ts:985"
      ],
      "newSet": true,
      "added": [
        "flagged",
        "send",
        "withheld"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "LexMode",
      "at": [
        "src/shell/lex.ts:25"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "lenient",
        "strict"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "MAILBOX_PEER_RECORD_KINDS",
      "at": [
        "src/core/mailbox-store.ts:123"
      ],
      "newSet": false,
      "added": [
        "engine_frame"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "PARSE_FAILURE_REASONS",
      "at": [
        "src/shell/lex.ts:53"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "background_operator"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "PeerHeldSettleReason",
      "at": [
        "src/agents/peer-held-queue.ts:50"
      ],
      "newSet": false,
      "added": [
        "superseded"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "PeerInboundDisposition",
      "at": [
        "src/agents/peer-session-drain.ts:119"
      ],
      "newSet": false,
      "added": [
        "resupply_exhausted"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "QuoteOpen",
      "at": [
        "src/shell/lex.ts:293"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "\"",
        "'"
      ],
      "persistedBy": "checkpoint-state",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "SWAPPABLE_DEP_SEATS",
      "at": [
        "src/core/swappable-deps.ts:67"
      ],
      "newSet": false,
      "added": [
        "contextSettings"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "SessionErrorCode",
      "at": [
        "src/engine/harness/types.ts:302"
      ],
      "newSet": false,
      "added": [
        "corrupt_session"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "TEAM_ROLES",
      "at": [
        "src/agents/team-role.ts:7"
      ],
      "newSet": true,
      "added": [
        "lead",
        "none",
        "teammate"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "TeamRole",
      "at": [
        "src/agents/team-role.ts:8",
        "src/index.ts:3116"
      ],
      "newSet": true,
      "added": [
        "lead",
        "none",
        "teammate"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "WordExpands",
      "at": [
        "src/tools/fs/shell-read-word.ts:12"
      ],
      "newSet": true,
      "added": [
        "glob",
        "unresolvable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    }
  ],
  "closedSetsUnreadable": [],
  "typeKeys": [
    {
      "type": "CascadeRunResult",
      "at": [
        "src/agents/cascade.ts:130"
      ],
      "added": [
        "compaction"
      ],
      "addedDetail": [
        {
          "key": "compaction",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "CorruptReadInfo",
      "at": [
        "src/stores/file/corrupt-read-sink.ts:11"
      ],
      "via": "FileBackgroundAgentStoreOptions.onCorruptRead",
      "arms": "flattened",
      "added": [],
      "addedDetail": [],
      "addedRequired": [],
      "removed": [
        "path",
        "reason"
      ],
      "uncertain": "path, reason may have moved into a qualified reference (`CorruptRecordRead`); a qualified reference (`CorruptReplayTally`); a qualified reference (`CorruptFileRead`) rather than left this type — this reader does not follow those, so check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "FileStorageCorruptReadInfo",
      "at": [
        "src/stores/file/index.ts:167"
      ],
      "arms": "flattened",
      "added": [],
      "addedDetail": [],
      "addedRequired": [],
      "removed": [
        "path",
        "reason"
      ],
      "uncertain": "path, reason may have moved into a qualified reference (`CorruptRecordRead`); a qualified reference (`CorruptReplayTally`); a qualified reference (`CorruptFileRead`) rather than left this type — this reader does not follow those, so check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "LexedRedirect",
      "at": [
        "src/shell/lex.ts:195"
      ],
      "via": "ShellReadSegment.redirects.op",
      "added": [
        "dup",
        "fd"
      ],
      "addedDetail": [
        {
          "key": "dup",
          "optional": true
        },
        {
          "key": "fd",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "ListAgentsRow",
      "at": [
        "src/agents/list-agents-tool.ts:80"
      ],
      "added": [
        "cwd",
        "lastActiveAt",
        "offlineAt",
        "presence"
      ],
      "addedDetail": [
        {
          "key": "cwd",
          "optional": true
        },
        {
          "key": "lastActiveAt",
          "optional": true
        },
        {
          "key": "offlineAt",
          "optional": true
        },
        {
          "key": "presence",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "ListAgentsToolOptions",
      "at": [
        "src/agents/list-agents-tool.ts:57"
      ],
      "added": [
        "freshWindowMs",
        "now"
      ],
      "addedDetail": [
        {
          "key": "freshWindowMs",
          "optional": true
        },
        {
          "key": "now",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [
        "includeOffline"
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "MailboxPeerMeta",
      "at": [
        "src/core/mailbox-store.ts:56"
      ],
      "added": [
        "urgent"
      ],
      "addedDetail": [
        {
          "key": "urgent",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "MaybeCompactOptions",
      "at": [
        "src/core/auto-compaction.ts:340"
      ],
      "added": [
        "contextOverlay",
        "onCommitted"
      ],
      "addedDetail": [
        {
          "key": "contextOverlay",
          "optional": true
        },
        {
          "key": "onCommitted",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "ParentSpecSeat",
      "at": [
        "src/core/parent-spec-seat.ts:64"
      ],
      "added": [
        "compaction",
        "skillListingBudgetFraction",
        "skillListingMaxDescChars"
      ],
      "addedDetail": [
        {
          "key": "compaction",
          "optional": true
        },
        {
          "key": "skillListingBudgetFraction",
          "optional": true
        },
        {
          "key": "skillListingMaxDescChars",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "PeerHeldQueue",
      "at": [
        "src/agents/peer-held-queue.ts:96"
      ],
      "added": [
        "decisions",
        "forgetDecisions",
        "reconcile"
      ],
      "addedDetail": [
        {
          "key": "decisions",
          "optional": false
        },
        {
          "key": "forgetDecisions",
          "optional": false
        },
        {
          "key": "reconcile",
          "optional": false
        }
      ],
      "addedRequired": [
        "decisions",
        "forgetDecisions",
        "reconcile"
      ],
      "removed": [],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "PeerSessionRecord",
      "at": [
        "src/agents/peer-directory.ts:55"
      ],
      "added": [
        "agent",
        "intent"
      ],
      "addedDetail": [
        {
          "key": "agent",
          "optional": true
        },
        {
          "key": "intent",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "Prepared",
      "at": [
        "src/core/runner/contracts.ts:231"
      ],
      "via": "Runner.SuspendReap.env",
      "added": [
        "frameSettlement",
        "fullShellReachable",
        "peerBoundaryRound",
        "registryAccess"
      ],
      "addedDetail": [
        {
          "key": "frameSettlement",
          "optional": false
        },
        {
          "key": "fullShellReachable",
          "optional": false
        },
        {
          "key": "peerBoundaryRound",
          "optional": true
        },
        {
          "key": "registryAccess",
          "optional": false
        }
      ],
      "addedRequired": [
        "frameSettlement",
        "fullShellReachable",
        "registryAccess"
      ],
      "removed": [],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "ReadCandidate",
      "at": [
        "src/tools/fs/shell-read-plan.ts:106"
      ],
      "added": [
        "floorSpelled"
      ],
      "addedDetail": [
        {
          "key": "floorSpelled",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "RepairResult",
      "at": [
        "src/agents/repair-loop.ts:214"
      ],
      "added": [
        "compaction"
      ],
      "addedDetail": [
        {
          "key": "compaction",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "ResolvedCrossSessionInboundSetting",
      "at": [
        "src/agents/cross-session-judge.ts:58"
      ],
      "added": [
        "deprecatedLayers"
      ],
      "addedDetail": [
        {
          "key": "deprecatedLayers",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "ResolvedRole",
      "at": [
        "src/core/roles.ts:386"
      ],
      "added": [
        "modelRef"
      ],
      "addedDetail": [
        {
          "key": "modelRef",
          "optional": false
        }
      ],
      "addedRequired": [
        "modelRef"
      ],
      "removed": [],
      "breaking": true,
      "criteriaCovered": true
    },
    {
      "type": "RunInternals",
      "at": [
        "src/core/runner/contracts.ts:1384"
      ],
      "added": [
        "inheritedModelRef"
      ],
      "addedDetail": [
        {
          "key": "inheritedModelRef",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "RunnerDeps",
      "at": [
        "src/core/runner-deps.ts:105"
      ],
      "added": [
        "contextSettings",
        "peerLane",
        "sessionBoxEngineFrames"
      ],
      "addedDetail": [
        {
          "key": "contextSettings",
          "optional": true
        },
        {
          "key": "peerLane",
          "optional": true
        },
        {
          "key": "sessionBoxEngineFrames",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [
        "peerAdmission"
      ],
      "breaking": true,
      "criteriaCovered": true
    },
    {
      "type": "RunnerSelfSeat",
      "at": [
        "src/core/runner/contracts.ts:2486"
      ],
      "added": [
        "contextOverlayOf"
      ],
      "addedDetail": [
        {
          "key": "contextOverlayOf",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "SendMessageToolOptions",
      "at": [
        "src/agents/send-message-tool.ts:46"
      ],
      "added": [
        "lane"
      ],
      "addedDetail": [
        {
          "key": "lane",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [
        "admission"
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "SessionPolicyCorruptReadInfo",
      "at": [
        "src/stores/file/session-policy-store.ts:35"
      ],
      "via": "FileSessionPolicyStore.SessionPolicyCorruptReadInfo",
      "added": [
        "kind"
      ],
      "addedDetail": [
        {
          "key": "kind",
          "optional": false
        }
      ],
      "addedRequired": [
        "kind"
      ],
      "removed": [],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "StopHookContext",
      "at": [
        "src/core/hooks.ts:731"
      ],
      "via": "Hooks.stop",
      "added": [
        "backgroundTasks"
      ],
      "addedDetail": [
        {
          "key": "backgroundTasks",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "TaskEvent",
      "at": [
        "src/core/task-event.ts:265"
      ],
      "added": [
        "compacted.summarizedCrossSessionMessages"
      ],
      "addedDetail": [
        {
          "key": "compacted.summarizedCrossSessionMessages",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "TaskNotificationPayload",
      "at": [
        "src/core/task-notification.ts:46"
      ],
      "added": [
        "attempt",
        "compaction",
        "handback",
        "inboxNotice",
        "resupplied",
        "spawnName"
      ],
      "addedDetail": [
        {
          "key": "attempt",
          "optional": true
        },
        {
          "key": "compaction",
          "optional": true
        },
        {
          "key": "handback",
          "optional": true
        },
        {
          "key": "inboxNotice",
          "optional": true
        },
        {
          "key": "resupplied",
          "optional": true
        },
        {
          "key": "spawnName",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "TaskResult",
      "at": [
        "src/core/task-result.ts:169"
      ],
      "added": [
        "compaction"
      ],
      "addedDetail": [
        {
          "key": "compaction",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "TaskSpec",
      "at": [
        "src/core/task-spec.ts:55"
      ],
      "added": [
        "peerPresence"
      ],
      "addedDetail": [
        {
          "key": "peerPresence",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "TeacherRunResult",
      "at": [
        "src/agents/teacher.ts:156"
      ],
      "added": [
        "compaction"
      ],
      "addedDetail": [
        {
          "key": "compaction",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "ToolExecuteContext",
      "at": [
        "src/core/tool-spec.ts:603"
      ],
      "added": [
        "modelRef"
      ],
      "addedDetail": [
        {
          "key": "modelRef",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "UserMessage",
      "at": [
        "src/engine/llm/types.ts:375"
      ],
      "added": [
        "engineNoteKey"
      ],
      "addedDetail": [
        {
          "key": "engineNoteKey",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "VerificationResult",
      "at": [
        "src/agents/verify.ts:262"
      ],
      "added": [
        "compaction"
      ],
      "addedDetail": [
        {
          "key": "compaction",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "WiringFacts",
      "at": [
        "src/core/wiring-manifest.ts:423"
      ],
      "added": [
        "peerPresence",
        "teamRole"
      ],
      "addedDetail": [
        {
          "key": "peerPresence",
          "optional": true
        },
        {
          "key": "teamRole",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "WiringManifest",
      "at": [
        "src/core/wiring-manifest.ts:183"
      ],
      "added": [
        "peerPresence",
        "teamRole"
      ],
      "addedDetail": [
        {
          "key": "peerPresence",
          "optional": true
        },
        {
          "key": "teamRole",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    }
  ],
  "typeKeysUnreadableArms": [
    {
      "type": "CorruptReadInfo",
      "at": "src/stores/file/corrupt-read-sink.ts:11",
      "reasons": [
        "a union carrying 3 arm(s) whose keys this reader does not follow (a qualified reference (`CorruptRecordRead`); a qualified reference (`CorruptReplayTally`); a qualified reference (`CorruptFileRead`)) — a key missing from this type at `to` is still reported REMOVED, carrying `uncertain` so the writer checks whether it moved there",
        "a union of 0 key-bearing arm(s) with no discriminating property (no property is declared by every key-bearing arm with literal words that no other arm shares), so its arms are read TOGETHER — a key added to one arm while a sibling already carries that name moves nothing in this manifest",
        "the two refs do not name this type's union arms the same way (no union read -> flat), so the delta below is stated at UNION level, with arm prefixes dropped — a key that moved between arms without leaving the union is not visible in it"
      ]
    },
    {
      "type": "FileStorageCorruptReadInfo",
      "at": "src/stores/file/index.ts:167",
      "reasons": [
        "a union carrying 3 arm(s) whose keys this reader does not follow (a qualified reference (`CorruptRecordRead`); a qualified reference (`CorruptReplayTally`); a qualified reference (`CorruptFileRead`)) — a key missing from this type at `to` is still reported REMOVED, carrying `uncertain` so the writer checks whether it moved there",
        "a union of 0 key-bearing arm(s) with no discriminating property (no property is declared by every key-bearing arm with literal words that no other arm shares), so its arms are read TOGETHER — a key added to one arm while a sibling already carries that name moves nothing in this manifest",
        "the two refs do not name this type's union arms the same way (no union read -> CorruptReadInfo/flat), so the delta below is stated at UNION level, with arm prefixes dropped — a key that moved between arms without leaving the union is not visible in it"
      ]
    },
    {
      "type": "TaskEvent",
      "at": "src/core/task-event.ts:265",
      "reasons": [
        "a union carrying 2 arm(s) whose keys this reader does not follow (a qualified reference (`TaskEventIdentity`); a qualified reference (`BrainStatus`)) — a key missing from this type at `to` is still reported REMOVED, carrying `uncertain` so the writer checks whether it moved there"
      ]
    }
  ],
  "typeKeysFlattenedCount": 215,
  "declarationMoves": [],
  "mintMoves": [],
  "criteriaObserves": [
    {
      "kind": "engineNoticeCode",
      "name": "config.context_settings_swapped",
      "assertions": [
        "G6.a"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "peer.held_settled",
      "assertions": [
        "G3.b"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "peer.inbound_disposition",
      "assertions": [
        "G2.a",
        "G3.b"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "compacted.summarizedCrossSessionMessages",
      "assertions": [
        "G1.a"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.gate",
      "assertions": [
        "G11.a"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.isError",
      "assertions": [
        "G5.a",
        "G11.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "EngineNotice.detail",
      "assertions": [
        "G2.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ListAgentsRow.lastActiveAt",
      "assertions": [
        "G9.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ListAgentsRow.presence",
      "assertions": [
        "G9.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "MailboxAckResult.acked",
      "assertions": [
        "G3.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "MailboxStore.ack",
      "assertions": [
        "G3.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "MailboxStore.peekCount",
      "assertions": [
        "G3.a",
        "G3.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ParentSpecSeatFields.compaction",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ParentSpecSeatFields.skillListingBudgetFraction",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PeerLaneConfig.maxMessagesPerRound",
      "assertions": [
        "G7.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ResolvedCrossSessionInboundSetting.deprecatedLayers",
      "assertions": [
        "G8.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ResolvedCrossSessionInboundSetting.value",
      "assertions": [
        "G8.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ResolvedRole.modelRef",
      "assertions": [
        "G5.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "RuleReject.code",
      "assertions": [
        "G11.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "RunnerDeps.contextSettings",
      "assertions": [
        "G6.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "RunnerDeps.peerLane",
      "assertions": [
        "G7.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.attempt",
      "assertions": [
        "G1.a",
        "G2.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.compaction",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.handback",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.inboxNotice.pending",
      "assertions": [
        "G7.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.inboxNotice.resupplied",
      "assertions": [
        "G1.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.resupplied",
      "assertions": [
        "G1.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskNotificationPayload.spawnName",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.compaction",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskSpec.compaction.enabled",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ToolExecuteContext.modelRef",
      "assertions": [
        "G5.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WiringManifest.peerPresence",
      "assertions": [
        "G9.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WiringManifest.teamRole",
      "assertions": [
        "G9.a"
      ]
    }
  ],
  "consumersHint": {
    "cli": [
      "BASH_ONLY_CONSTRUCTS",
      "CascadeRunResult",
      "ENGINE_NOTICE_CODES",
      "LexMode",
      "ListAgentsRow",
      "MailboxPeerMeta",
      "MaybeCompactOptions",
      "PARSE_FAILURE_REASONS",
      "ParentSpecSeat",
      "PeerInboundDisposition",
      "PeerSessionRecord",
      "Prepared",
      "QuoteOpen",
      "ReadCandidate",
      "RepairResult",
      "RunInternals",
      "RunnerDeps",
      "SWAPPABLE_DEP_SEATS",
      "SendMessageToolOptions",
      "TaskEvent",
      "TaskNotificationPayload",
      "TaskResult",
      "TaskSpec",
      "TeacherRunResult",
      "ToolExecuteContext",
      "UserMessage",
      "VerificationResult",
      "WiringFacts",
      "WiringManifest"
    ],
    "server": [
      "CROSS_SESSION_INBOUND_SETTINGS",
      "CascadeRunResult",
      "CorruptReadInfo",
      "CrossSessionInboundSetting",
      "ENGINE_NOTICE_CODES",
      "FileStorageCorruptReadInfo",
      "ListAgentsRow",
      "MAILBOX_PEER_RECORD_KINDS",
      "MailboxPeerMeta",
      "PEER_ADMISSION_DEFAULTS",
      "ParentSpecSeat",
      "PeerSessionRecord",
      "Prepared",
      "QuoteOpen",
      "ReadCandidate",
      "RepairResult",
      "RunInternals",
      "RunnerDeps",
      "SWAPPABLE_DEP_SEATS",
      "StopHookContext",
      "TaskEvent",
      "TaskNotificationPayload",
      "TaskResult",
      "TaskSpec",
      "TeacherRunResult",
      "ToolExecuteContext",
      "UserMessage",
      "VerificationResult",
      "WiringFacts",
      "WiringManifest"
    ],
    "sdk": [
      "ENGINE_NOTICE_CODES",
      "RunnerDeps",
      "TaskEvent",
      "TaskNotificationPayload",
      "TaskResult",
      "TaskSpec",
      "WiringManifest"
    ],
    "note": "scanned cli@4e593722 server@567d93b8 sdk@f554971 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it. Ledger files (**/docs/core-consumption/**, **/docs/wire-consumption/**, **/*LEDGER*.json) are not evidence of use — server: 11 name(s) matched ONLY in bookkeeping files and were set aside (ListAgentsToolOptions, MaybeCompactOptions, PeerAdmissionConfig, PeerHeldQueue, PeerHeldSettleReason, PeerInboundDisposition, ResolvedCrossSessionInboundSetting, ResolvedRole, RunnerSelfSeat, SendMessageToolOptions, resolvePeerAdmissionConfig)"
  },
  "breakingCount": 18,
  "breakingItems": [
    "closed set lost members: CROSS_SESSION_INBOUND_SETTINGS -accept",
    "closed set lost members: CrossSessionInboundSetting -accept",
    "closed set lost members: LexMode -lenient,strict",
    "closed set lost members: PARSE_FAILURE_REASONS -background_operator",
    "closed set lost members: QuoteOpen -\",'",
    "export kind changed: FileStorageCorruptReadInfo interface -> type",
    "export removed: PEER_ADMISSION_DEFAULTS (variable)",
    "export removed: PeerAdmissionConfig (interface)",
    "export removed: resolvePeerAdmissionConfig (function)",
    "type gained required keys: PeerHeldQueue +decisions,forgetDecisions,reconcile",
    "type gained required keys: Prepared +frameSettlement,fullShellReachable,registryAccess",
    "type gained required keys: ResolvedRole +modelRef",
    "type gained required keys: SessionPolicyCorruptReadInfo +kind",
    "type lost keys: CorruptReadInfo -path,reason",
    "type lost keys: FileStorageCorruptReadInfo -path,reason",
    "type lost keys: ListAgentsToolOptions -includeOffline",
    "type lost keys: RunnerDeps -peerAdmission",
    "type lost keys: SendMessageToolOptions -admission"
  ],
  "toResolvedAt": "74e3b5a8f2f88672aa1c505151d085eb0a602424"
}
