UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

1,822 lines (1,821 loc) • 48.1 kB
{ "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" }