@sema-agent/core
Version:
Stateless, task-oriented AI agent core
1,822 lines (1,821 loc) • 48.1 kB
JSON
{
"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"
}