UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

2,422 lines • 61.2 kB
{
  "repo": "core",
  "version": "7.51.0",
  "from": "001a2d1ae3bc2a3a21a7d2c962af5632156632cf",
  "to": "1b77945f89c5a5115a7e7bc07e2d6c6d822ba780",
  "added": [
    {
      "name": "APPROVAL_ROUTES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/wiring-manifest.ts:728",
        "src/index.ts:3508"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "AllowEntryInertDetail",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:53",
        "src/index.ts:1479"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "ApprovalRoute",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/wiring-manifest.ts:729",
        "src/index.ts:3508"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "BOUND_GRANT_ABSENCES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/skill-grant-binding.ts:26",
        "src/index.ts:3514"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "BoundGrantAbsence",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/skill-grant-binding.ts:27",
        "src/index.ts:3514"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "COWORK_PROMPT_SECTIONS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/index.ts:2563",
        "src/prompts/cowork.ts:602"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "ConsolidationWriteJudgeInput",
      "kind": "interface",
      "tier": "internal",
      "at": [
        "src/core/runner/memory-consolidation-write-judge.ts:30",
        "src/index.ts:2429"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "DISPOSABLE_PROMPT_SECTIONS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/prompt-section-seat.ts:18",
        "src/index.ts:3517"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "DisposablePromptSection",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/prompt-section-seat.ts:19",
        "src/index.ts:3517"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "Egress",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/untrusted-egress.ts:42",
        "src/index.ts:2964"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "EgressTier",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/untrusted-egress.ts:39",
        "src/index.ts:2964"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "McpInstructionsEntry",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/prompt-section-seat.ts:53",
        "src/index.ts:3517"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "McpMountIdentity",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/mcp-server-spec.ts:143",
        "src/core/types.ts:32",
        "src/index.ts:3519"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "McpRevocationLedger",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/mcp-server-spec.ts:148",
        "src/core/types.ts:32",
        "src/index.ts:3519"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "MediaDescriptor",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/media-byte-cap.ts:67",
        "src/index.ts:159"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PromptSectionAuthor",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/prompt-section-seat.ts:37",
        "src/index.ts:3517"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PromptSectionDisposition",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/prompt-section-seat.ts:34",
        "src/index.ts:3517"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "PromptSectionEntry",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/prompt-section-seat.ts:23",
        "src/index.ts:3517"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "REOPEN_REASONS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/checkpoint-store.ts:1850",
        "src/core/resume-startup-cause.ts:43",
        "src/index.ts:802"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "RESUME_STARTUP_CAUSES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/resume-startup-cause.ts:46",
        "src/index.ts:802"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "RETIRED_MEMBERS",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/gate-outcome.ts:444",
        "src/index.ts:1490"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "RULE_OFFERS_ABSENCES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/ask-origin.ts:203",
        "src/index.ts:3513"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "ResumeStartupCause",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/resume-startup-cause.ts:47",
        "src/index.ts:802"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "RuleEntryReading",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:129",
        "src/index.ts:1479"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "RuleOffersAbsence",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/ask-origin.ts:204",
        "src/index.ts:3513"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "SHADOW_REASON",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:570",
        "src/index.ts:3511"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "SessionRuleEntryField",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:48",
        "src/index.ts:376"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "SessionRuleEntryRefusal",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:85",
        "src/index.ts:375"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "SessionRuleShapeRefusal",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:78",
        "src/index.ts:374"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "TASK_NOTIFICATION_TERMINAL_STATUSES",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:10",
        "src/index.ts:986"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "TaskNotificationTerminalStatus",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/task-notification.ts:11",
        "src/index.ts:987"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "allowRuleShadowSentence",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:625",
        "src/index.ts:3511"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "approvalRouteOf",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/wiring-manifest.ts:738",
        "src/index.ts:3508"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "cardDisclosureOf",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:638",
        "src/index.ts:3511"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "coworkPromptProvider",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/index.ts:2563",
        "src/prompts/cowork.ts:591"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "createConsolidationWriteJudge",
      "kind": "function",
      "tier": "internal",
      "at": [
        "src/core/runner/memory-consolidation-write-judge.ts:86",
        "src/index.ts:2429"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "deliverWriteRefusal",
      "kind": "function",
      "tier": "internal",
      "at": [
        "src/core/runner/memory-consolidation-write-judge.ts:117",
        "src/index.ts:2429"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "isMediaBlock",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/media-byte-cap.ts:61",
        "src/index.ts:159"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "isRetiredMember",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/gate-outcome.ts:493",
        "src/index.ts:1490"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "judgeSessionRulesWrite",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:327",
        "src/index.ts:371"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "mediaBlockDescriptor",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/media-byte-cap.ts:73",
        "src/index.ts:159"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "noApproverSeatDeny",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/tool-policy.ts:384",
        "src/index.ts:1401"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "readRuleEntry",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:141",
        "src/index.ts:1479"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "readSessionRulesShape",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:242",
        "src/index.ts:372"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "reopenReasonOf",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/resume-startup-cause.ts:84",
        "src/index.ts:802"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "resumeStartupCauseOf",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/resume-startup-cause.ts:66",
        "src/index.ts:802"
      ],
      "criteriaCovered": false,
      "breaking": false
    }
  ],
  "removed": [
    {
      "name": "SessionRuleNameRefusal",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:66",
        "src/index.ts:372"
      ],
      "breaking": true
    },
    {
      "name": "assertSessionRuleNamesCurrent",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:133",
        "src/index.ts:370"
      ],
      "breaking": true
    },
    {
      "name": "compileAllowEntry",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/allow-entry.ts:177",
        "src/index.ts:1469"
      ],
      "breaking": true
    },
    {
      "name": "stripRev",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/session-policy-store.ts:359",
        "src/index.ts:369"
      ],
      "breaking": true
    }
  ],
  "changed": [
    {
      "name": "ShellReadVerdict",
      "from": {
        "kind": "interface",
        "tier": "advanced"
      },
      "to": {
        "kind": "type",
        "tier": "advanced"
      },
      "at": [
        "src/index.ts:1129",
        "src/tools/fs/shell-read-check.ts:88"
      ],
      "breaking": true
    }
  ],
  "narrowed": [
    {
      "id": "F5",
      "source": "behaviorFlips.summary",
      "text": "#1480 (behaviour narrowing): a session `toolAllow` is a narrowing — a command line is admitted only when EVERY segment is named by an entry."
    },
    {
      "id": "F8",
      "source": "behaviorFlips.summary",
      "text": "#1534 (hard-breaking; auto-mode narrowing): a removal whose target the command text cannot resolve is a person's question, never the classifier's; the three removal-breaker classes hold one frozen row."
    },
    {
      "id": "F12",
      "source": "behaviorFlips.summary",
      "text": "#1493 (hard-breaking notice reading; behaviour narrowing of the person's reach): a delegated child under a parent in `auto` arms from the ancestor's face, and the fold notice names the folded word on the parent's stream too."
    },
    {
      "id": "F20",
      "source": "behaviorFlips.summary",
      "text": "#1561 / #1562 (additive; behaviour narrowing of the admission): the desktop Cowork base is carried verbatim as data and rendered section by section only where every operational claim in a section is established by a fact here."
    },
    {
      "id": "F23",
      "source": "behaviorFlips.summary",
      "text": "#1708 (security; behaviour narrowing): a read station's answer is read one way by every reader — the resumed leg's belt refuses a RETURNED silence as it refused a thrown one."
    },
    {
      "id": "F25",
      "source": "behaviorFlips.summary",
      "text": "#1694 (security; behaviour narrowing): a resolver that fails for a whole command is not an adapter without a file face."
    },
    {
      "id": "F26",
      "source": "behaviorFlips.summary",
      "text": "#1684 (security; behaviour narrowing): a followed sed backup the station cannot follow is still a write."
    },
    {
      "id": "G2",
      "source": "criteria.title",
      "text": "#1480 / #1497 / #1522 — a session's toolDeny / toolAllow are rule entries of one grammar (toolAllow narrows), commandAllow / commandDeny are retired, the store refuses in one family, and no refusal carries stored text"
    }
  ],
  "closedSetMembers": [
    {
      "set": "ADMITTED_DOCUMENT_MIME_TYPES",
      "at": [
        "src/tools/fs/image-admission.ts:87"
      ],
      "newSet": true,
      "added": [
        "application/pdf"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "APPROVAL_ROUTES",
      "at": [
        "src/core/wiring-manifest.ts:728"
      ],
      "newSet": true,
      "added": [
        "durable_park",
        "live_approver",
        "none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ASK_CLASSES",
      "at": [
        "src/core/ask-origin.ts:631"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "governance_unavailable"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "AdmissionPosture",
      "at": [
        "src/core/permission-rule-model.ts:2391"
      ],
      "newSet": true,
      "added": [
        "grant",
        "narrowing"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ApprovalRoute",
      "at": [
        "src/core/wiring-manifest.ts:729",
        "src/index.ts:3508"
      ],
      "newSet": true,
      "added": [
        "durable_park",
        "live_approver",
        "none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "AskRequest.ruleOffersAbsence",
      "at": [
        "src/core/tool-policy.ts:2666"
      ],
      "newSet": false,
      "added": [
        "allow_outranked",
        "ask_rule_matched"
      ],
      "removed": [
        "shadowed"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "BOUND_GRANT_ABSENCES",
      "at": [
        "src/core/skill-grant-binding.ts:26"
      ],
      "newSet": true,
      "added": [
        "not_bindable",
        "unreadable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "BackgroundChildEvent.stoppedBy",
      "at": [
        "src/core/delegation-frames.ts:196"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "parent",
        "system",
        "user"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "BoundGrantAbsence",
      "at": [
        "src/core/skill-grant-binding.ts:27",
        "src/index.ts:3514"
      ],
      "newSet": true,
      "added": [
        "not_bindable",
        "unreadable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "DISPOSABLE_PROMPT_SECTIONS",
      "at": [
        "src/core/prompt-section-seat.ts:18"
      ],
      "newSet": true,
      "added": [
        "core/discovery.mcp-instructions"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "DisposablePromptSection",
      "at": [
        "src/core/prompt-section-seat.ts:19",
        "src/index.ts:3517"
      ],
      "newSet": true,
      "added": [
        "core/discovery.mcp-instructions"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ENGINE_NOTICE_CODES",
      "at": [
        "src/core/governance-codes.ts:361"
      ],
      "newSet": false,
      "added": [
        "config.read_deny_swapped",
        "permission.entry_mode_clamped",
        "tool_result.media_refused"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "set": "EgressTier",
      "at": [
        "src/core/untrusted-egress.ts:39"
      ],
      "newSet": true,
      "added": [
        "human",
        "same-principal"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "MediaRefusalReason",
      "at": [
        "src/tools/fs/image-admission.ts:106"
      ],
      "newSet": true,
      "added": [
        "base64_too_large",
        "magic_mismatch",
        "mime_unsupported",
        "raw_too_large",
        "undecodable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "PendingAction.ruleOffersAbsence",
      "at": [
        "src/core/checkpoint-store.ts:1034"
      ],
      "newSet": false,
      "added": [
        "allow_outranked",
        "ask_rule_matched"
      ],
      "removed": [
        "shadowed"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "PromptSectionAuthor",
      "at": [
        "src/core/prompt-section-seat.ts:37"
      ],
      "newSet": true,
      "added": [
        "host",
        "server"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "READ_DENY_DEPLOYMENT_SEATS",
      "at": [
        "src/core/read-face-seats.ts:41"
      ],
      "newSet": true,
      "added": [
        "readDenyBuiltinExclude",
        "readDenyBuiltinTiers",
        "readDenyPatterns"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "REOPEN_REASONS",
      "at": [
        "src/core/resume-startup-cause.ts:43"
      ],
      "newSet": true,
      "added": [
        "config_refused",
        "constraint_rejected",
        "env_failed",
        "tool_unavailable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "RESUME_STARTUP_CAUSES",
      "at": [
        "src/core/resume-startup-cause.ts:46"
      ],
      "newSet": true,
      "added": [
        "configuration",
        "decision_rejected",
        "environment",
        "session_gone",
        "tool_unavailable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "RULE_OFFERS_ABSENCES",
      "at": [
        "src/core/ask-origin.ts:203"
      ],
      "newSet": true,
      "added": [
        "allow_outranked",
        "ask_rule_matched",
        "lane_cannot_speak",
        "mandated"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ReadDenyDeploymentSeat",
      "at": [
        "src/core/read-face-seats.ts:42"
      ],
      "newSet": true,
      "added": [
        "readDenyBuiltinExclude",
        "readDenyBuiltinTiers",
        "readDenyPatterns"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ReopenReason",
      "at": [
        "src/core/checkpoint-store.ts:1850",
        "src/core/resume-startup-cause.ts:44",
        "src/index.ts:779"
      ],
      "newSet": false,
      "added": [
        "config_refused"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ResumeStartupCause",
      "at": [
        "src/core/resume-startup-cause.ts:47",
        "src/index.ts:802"
      ],
      "newSet": true,
      "added": [
        "configuration",
        "decision_rejected",
        "environment",
        "session_gone",
        "tool_unavailable"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "RoutePairingPosture",
      "at": [
        "src/engine/llm/types.ts:1167"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "unpinned"
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "RoutePairingStatus",
      "at": [
        "src/brain/route-adjudicator.ts:640"
      ],
      "newSet": false,
      "added": [],
      "removed": [
        "ok:unpinned"
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "RuleOffersAbsence",
      "at": [
        "src/core/ask-origin.ts:204",
        "src/index.ts:3513"
      ],
      "newSet": true,
      "added": [
        "allow_outranked",
        "ask_rule_matched",
        "lane_cannot_speak",
        "mandated"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "SWAPPABLE_DEP_SEATS",
      "at": [
        "src/core/swappable-deps.ts:74"
      ],
      "newSet": false,
      "added": [
        "readDenyBuiltinExclude",
        "readDenyBuiltinTiers",
        "readDenyPatterns"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "SessionPolicyError.code",
      "at": [
        "src/core/session-policy-store.ts:99"
      ],
      "newSet": false,
      "added": [
        "inert_entry",
        "invalid_shape"
      ],
      "removed": [
        "legacy_tool_name"
      ],
      "persistedBy": "none",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "set": "SkillsDirectoryWarningCode",
      "at": [
        "src/core/skills-directory.ts:56"
      ],
      "newSet": false,
      "added": [
        "outside_root"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "TASK_NOTIFICATION_TERMINAL_STATUSES",
      "at": [
        "src/core/task-notification.ts:10"
      ],
      "newSet": true,
      "added": [
        "cancelled",
        "completed",
        "failed",
        "killed"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "TaskNotificationTerminalStatus",
      "at": [
        "src/core/task-notification.ts:11",
        "src/index.ts:987"
      ],
      "newSet": true,
      "added": [
        "cancelled",
        "completed",
        "failed",
        "killed"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    }
  ],
  "closedSetsUnreadable": [],
  "typeKeys": [
    {
      "type": "AllowEntryInert",
      "at": [
        "src/core/allow-entry.ts:76"
      ],
      "via": "SkillGrantHit.readsAsNothing",
      "added": [
        "guidance"
      ],
      "addedDetail": [
        {
          "key": "guidance",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "AskRequest",
      "at": [
        "src/core/tool-policy.ts:2535"
      ],
      "added": [
        "boundGrantAbsence"
      ],
      "addedDetail": [
        {
          "key": "boundGrantAbsence",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "BackgroundChildEvent",
      "at": [
        "src/core/delegation-frames.ts:25"
      ],
      "added": [
        "result"
      ],
      "addedDetail": [
        {
          "key": "result",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "CheckpointSummary",
      "at": [
        "src/core/checkpoint-store.ts:2109"
      ],
      "added": [
        "boundGrantAbsence"
      ],
      "addedDetail": [
        {
          "key": "boundGrantAbsence",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "ClassifierUnavailableInfo",
      "at": [
        "src/core/classifier-unavailable-arm.ts:35"
      ],
      "added": [
        "route"
      ],
      "addedDetail": [
        {
          "key": "route",
          "optional": false
        }
      ],
      "addedRequired": [
        "route"
      ],
      "removed": [
        "disposition"
      ],
      "breaking": true,
      "criteriaCovered": true
    },
    {
      "type": "ClassifierUnavailableSeat",
      "at": [
        "src/core/classifier-unavailable-arm.ts:46"
      ],
      "added": [
        "route"
      ],
      "addedDetail": [
        {
          "key": "route",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [
        "approvalSeat"
      ],
      "breaking": true,
      "criteriaCovered": true
    },
    {
      "type": "InheritedGate",
      "at": [
        "src/core/runner/contracts.ts:1236"
      ],
      "via": "RunInternals.inheritedGate",
      "added": [
        "autoModeFace"
      ],
      "addedDetail": [
        {
          "key": "autoModeFace",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "MaterializedMcp",
      "at": [
        "src/core/mcp.ts:182"
      ],
      "added": [
        "instructionsDelta.pendingAdds[].author",
        "serverInstructions[].author"
      ],
      "addedDetail": [
        {
          "key": "instructionsDelta.pendingAdds[].author",
          "optional": false
        },
        {
          "key": "serverInstructions[].author",
          "optional": false
        }
      ],
      "addedRequired": [
        "instructionsDelta.pendingAdds[].author",
        "serverInstructions[].author"
      ],
      "removed": [],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "McpServerSpec",
      "at": [
        "src/core/mcp-server-spec.ts:14"
      ],
      "added": [
        "fingerprint"
      ],
      "addedDetail": [
        {
          "key": "fingerprint",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "PendingAction",
      "at": [
        "src/core/checkpoint-store.ts:967"
      ],
      "added": [
        "tool_approval.boundGrantAbsence"
      ],
      "addedDetail": [
        {
          "key": "tool_approval.boundGrantAbsence",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "PromptProvider",
      "at": [
        "src/prompts/default.ts:1173"
      ],
      "added": [
        "section"
      ],
      "addedDetail": [
        {
          "key": "section",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "RoutePairingConfig",
      "at": [
        "src/engine/llm/types.ts:1158"
      ],
      "added": [
        "laneDefault"
      ],
      "addedDetail": [
        {
          "key": "laneDefault",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "SessionPermissionRules",
      "at": [
        "src/core/session-policy-store.ts:32"
      ],
      "added": [],
      "addedDetail": [],
      "addedRequired": [],
      "removed": [
        "commandAllow",
        "commandDeny"
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "ShellReadVerdict",
      "at": [
        "src/tools/fs/shell-read-check.ts:88"
      ],
      "arms": "flattened",
      "added": [],
      "addedDetail": [],
      "addedRequired": [],
      "removed": [
        "admit",
        "details",
        "disposition",
        "environmentSilent",
        "face",
        "finding",
        "readRootCandidate",
        "rowsUnread",
        "sentence",
        "targetUnresolved",
        "unestablished",
        "unplacedOptions",
        "unplacedOptions.program",
        "writeProtected",
        "writesPlaced"
      ],
      "uncertain": "admit, details, disposition, environmentSilent, face, finding, readRootCandidate, rowsUnread, sentence, targetUnresolved, unestablished, unplacedOptions, unplacedOptions.program, writeProtected, writesPlaced may have moved into a qualified reference (`ShellReadVouch`); a qualified reference (`ShellReadQuestion`) rather than left this type — this reader does not follow those, so check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "SkillsDirectoryOptions",
      "at": [
        "src/core/skills-directory.ts:87"
      ],
      "added": [
        "containWithin"
      ],
      "addedDetail": [
        {
          "key": "containWithin",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "StablePromptContext",
      "at": [
        "src/prompts/default.ts:1002"
      ],
      "added": [
        "envFacts"
      ],
      "addedDetail": [
        {
          "key": "envFacts",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "StoredSessionRules",
      "at": [
        "src/core/session-policy-store.ts:56"
      ],
      "added": [],
      "addedDetail": [],
      "addedRequired": [],
      "removed": [
        "commandAllow",
        "commandDeny"
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "type": "ToolCallRequest",
      "at": [
        "src/core/tool-policy.ts:57"
      ],
      "added": [
        "approvalReach"
      ],
      "addedDetail": [
        {
          "key": "approvalReach",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    }
  ],
  "typeKeysUnreadableArms": [
    {
      "type": "ReopenReason",
      "at": "src/core/resume-startup-cause.ts:44",
      "reasons": [
        "the two refs do not name this type's union arms the same way (flat -> no union read), 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": "ShellReadVerdict",
      "at": "src/tools/fs/shell-read-check.ts:88",
      "reasons": [
        "a union carrying 2 arm(s) whose keys this reader does not follow (a qualified reference (`ShellReadVouch`); a qualified reference (`ShellReadQuestion`)) — 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"
      ]
    }
  ],
  "typeKeysFlattenedCount": 229,
  "signatures": [
    {
      "name": "RunnerDeps.loadProjectMemory",
      "at": [
        "src/core/runner-deps.ts:1110"
      ],
      "from": [
        "(ctx: { cwd: string; handsEnabled: boolean; isSubagent: boolean; agentName?: string; sessionId?: string; phase?: \"fresh\" | \"resume\" | \"post-compact\" | \"post-clear\"; }): ProjectMemoryLoad | Promise<string | null | ProjectMemoryLoad> | null | string"
      ],
      "to": [
        "(ctx: { cwd: string; handsEnabled: boolean; isSubagent: boolean; agentName?: string; sessionId?: string; runId?: string; phase?: \"fresh\" | \"resume\" | \"post-compact\" | \"post-clear\"; }): ProjectMemoryLoad | Promise<string | null | ProjectMemoryLoad> | null | string"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 1 `ctx` type widened: …ng; sessionId?: string; [ -> runId?: string; ]phase?: \"fresh\" | \"resum…",
          "breaking": false
        }
      ],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "name": "SessionPolicyError.constructor",
      "at": [
        "src/core/session-policy-store.ts:98"
      ],
      "from": [
        "(code: \"conflict\" | \"corrupt\" | \"legacy_tool_name\" | \"loosen_forbidden\", message: string, detail?: SessionRuleNameRefusal)"
      ],
      "to": [
        "(code: \"conflict\" | \"corrupt\" | \"inert_entry\" | \"invalid_shape\" | \"loosen_forbidden\", message: string, detail?: SessionRuleEntryRefusal | SessionRuleShapeRefusal)"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 3 `detail` type changed, direction not read: SessionRule[Nam -> EntryRefusal | SessionRuleShap]eRefusal",
          "breaking": true,
          "uncertain": true
        }
      ],
      "uncertain": "param 3 `detail` type changed, direction not read: SessionRule[Nam -> EntryRefusal | SessionRuleShap]eRefusal — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "boundedRedactedSummary",
      "at": [
        "src/core/untrusted-egress.ts:346"
      ],
      "from": [
        "(value: unknown, max: number): string"
      ],
      "to": [
        "(value: unknown, max: number): Egress<\"same-principal\">"
      ],
      "changes": [
        {
          "aspect": "returns",
          "detail": "return type [string -> Egress<\"same-principal\">]",
          "breaking": true
        }
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "createSessionRulePolicy",
      "at": [
        "src/core/runner/session-rule-policy.ts:323"
      ],
      "from": [
        "(rules: SessionPermissionRules | SessionRuleSource, opts: { env: ExecutionEnv; rootPath?: string; toolEffects?: ReadonlyMap<string, ToolEffect>; }): NamedToolPolicy"
      ],
      "to": [
        "(rules: SessionPermissionRules | SessionRuleSource, opts: { env: ExecutionEnv; rootPath?: string; toolEffects?: ReadonlyMap<string, ToolEffect>; anchors?: PathRuleBases; }): NamedToolPolicy"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 2 `opts` type widened: …ap<string, ToolEffect>; [ -> anchors?: PathRuleBases; ]}",
          "breaking": false
        }
      ],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "name": "findAdmittingRule",
      "at": [
        "src/core/permission-rule-model.ts:2383"
      ],
      "from": [
        "(rules: readonly PersistedRule[], call: { tool: string; command: string; cwd: string | undefined; sessionId?: string; execCwd?: string; }): readonly PersistedRule[] | undefined"
      ],
      "to": [
        "(rules: readonly PersistedRule[], call: AdmissionCall): readonly PersistedRule[] | undefined"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 2 `call` type changed, direction not read: [{ tool: string; command: string; cwd: string | undefined; sessionId?:… -> AdmissionCall]",
          "breaking": true,
          "uncertain": true
        }
      ],
      "uncertain": "param 2 `call` type changed, direction not read: [{ tool: string; command: string; cwd: string | undefined; sessionId?:… -> AdmissionCall] — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "materializeMcpTools",
      "at": [
        "src/core/mcp.ts:1956"
      ],
      "from": [
        "(specs: McpServerSpec[], principal?: string, onElicit?: OnElicit, imageResizer?: McpImageResizer, reminderDisclosure?: { reminderMark?: string; counts?: ReminderDisclosureCounts; }, mcpRevocations?: { isRevoked(serverName: string): boolean; onProbeFailure?: (error: unknown) => void; }, poolOpts?: { pool: McpConnectionPool; ownsPool?: boolean; }): Promise<MaterializedMcp>"
      ],
      "to": [
        "(specs: McpServerSpec[], principal?: string, onElicit?: OnElicit, imageResizer?: McpImageResizer, reminderDisclosure?: { reminderMark?: string; counts?: ReminderDisclosureCounts; }, mcpRevocations?: McpRevocationLedger & { onProbeFailure?: (error: unknown) => void; }, poolOpts?: { pool: McpConnectionPool; ownsPool?: boolean; }, promptSections?: PromptSectionSeat): Promise<MaterializedMcp>"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 6 `mcpRevocations` type changed, direction not read: [{ isRevoked(serverName: string): boolean; -> McpRevocationLedger & {] onProbeFailure?: (error…",
          "breaking": true,
          "uncertain": true
        },
        {
          "aspect": "param",
          "detail": "+optional param `promptSections?: PromptSectionSeat`",
          "breaking": false
        }
      ],
      "uncertain": "param 6 `mcpRevocations` type changed, direction not read: [{ isRevoked(serverName: string): boolean; -> McpRevocationLedger & {] onProbeFailure?: (error… — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "normalizeRules",
      "at": [
        "src/core/session-policy-store.ts:275"
      ],
      "from": [
        "(rules: SessionPermissionRules): SessionPermissionRules"
      ],
      "to": [
        "(rules: unknown): SessionPermissionRules"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 1 `rules` type changed, direction not read: [SessionPermissionRules -> unknown]",
          "breaking": true,
          "uncertain": true
        }
      ],
      "uncertain": "param 1 `rules` type changed, direction not read: [SessionPermissionRules -> unknown] — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "redactHostLeaks",
      "at": [
        "src/core/untrusted-egress.ts:129"
      ],
      "from": [
        "(s: string, report?: RedactionReport): string"
      ],
      "to": [
        "(s: string, report?: RedactionReport): Egress<\"human\">"
      ],
      "changes": [
        {
          "aspect": "returns",
          "detail": "return type [string -> Egress<\"human\">]",
          "breaking": true
        }
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "redactSecrets",
      "at": [
        "src/core/untrusted-egress.ts:124"
      ],
      "from": [
        "(s: string, report?: RedactionReport): string"
      ],
      "to": [
        "(s: string, report?: RedactionReport): Egress<\"same-principal\">"
      ],
      "changes": [
        {
          "aspect": "returns",
          "detail": "return type [string -> Egress<\"same-principal\">]",
          "breaking": true
        }
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "screenGateOutcome",
      "at": [
        "src/core/gate-outcome.ts:554"
      ],
      "from": [
        "(g: GateOutcome): string[]"
      ],
      "to": [
        "(g: unknown, opts?: { readonly reading?: \"archive\" | \"producer\"; }): string[]"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 1 `g` type changed, direction not read: [GateOutcome -> unknown]",
          "breaking": true,
          "uncertain": true
        },
        {
          "aspect": "param",
          "detail": "+optional param `opts?: { readonly reading?: \"archive\" | \"producer\"; }`",
          "breaking": false
        }
      ],
      "uncertain": "param 1 `g` type changed, direction not read: [GateOutcome -> unknown] — the direction of a type change is not read syntactically, so it is reported breaking: check whether existing call sites still type-check before writing the BREAKING line",
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "untrustedEgressForHuman",
      "at": [
        "src/core/untrusted-egress.ts:355"
      ],
      "from": [
        "(value: unknown, opts: { label: string; max: number; }): string"
      ],
      "to": [
        "(value: unknown, opts: { label: string; max: number; }): Egress<\"human\">"
      ],
      "changes": [
        {
          "aspect": "returns",
          "detail": "return type [string -> Egress<\"human\">]",
          "breaking": true
        }
      ],
      "breaking": true,
      "criteriaCovered": false
    }
  ],
  "declarationMoves": [
    {
      "name": "AllowEntryInertDetail",
      "kind": "interface",
      "onSurface": true,
      "from": [
        "src/core/allow-entry.ts"
      ],
      "to": [
        "src/core/allow-entry.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "ProtocolHttpAuth",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/core/mcp.ts"
      ],
      "to": [
        "src/core/protocol-http-auth.ts"
      ]
    },
    {
      "name": "RedactionConfidence",
      "kind": "type",
      "onSurface": true,
      "from": [
        "src/core/arg-summary.ts",
        "src/core/credential-vocabulary.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/credential-vocabulary.ts",
        "src/core/redaction-passes.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "RedactionFinding",
      "kind": "interface",
      "onSurface": true,
      "from": [
        "src/core/arg-summary.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "RedactionPass",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/core/arg-summary.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts"
      ]
    },
    {
      "name": "RedactionReport",
      "kind": "interface",
      "onSurface": true,
      "from": [
        "src/core/arg-summary.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "RedactionSource",
      "kind": "type",
      "onSurface": true,
      "from": [
        "src/core/arg-summary.ts",
        "src/core/credential-vocabulary.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/credential-vocabulary.ts",
        "src/core/redaction-passes.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "ReopenReason",
      "kind": "type",
      "onSurface": true,
      "from": [
        "src/core/checkpoint-store.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/checkpoint-store.ts",
        "src/core/resume-startup-cause.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "SummarizableFinding",
      "kind": "interface",
      "onSurface": true,
      "from": [
        "src/core/arg-summary.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "allowRuleShadowSentence",
      "kind": "function",
      "onSurface": true,
      "from": [
        "src/core/allow-entry.ts"
      ],
      "to": [
        "src/core/allow-entry.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "cardDisclosureOf",
      "kind": "function",
      "onSurface": true,
      "from": [
        "src/core/allow-entry.ts"
      ],
      "to": [
        "src/core/allow-entry.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "deliverWriteRefusal",
      "kind": "function",
      "onSurface": true,
      "from": [
        "src/core/runner/memory-consolidation-write-judge.ts"
      ],
      "to": [
        "src/core/runner/memory-consolidation-write-judge.ts",
        "src/index.ts"
      ]
    },
    {
      "name": "egressPasses",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/core/arg-summary.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts"
      ]
    },
    {
      "name": "notifyResultField",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/agents/subagent.ts"
      ],
      "to": [
        "src/core/task-notification.ts"
      ]
    },
    {
      "name": "resolveProtocolHttpHeaders",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/core/mcp.ts"
      ],
      "to": [
        "src/core/protocol-http-auth.ts"
      ]
    },
    {
      "name": "runRedactionPasses",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/core/arg-summary.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts"
      ]
    },
    {
      "name": "summarizeRedactions",
      "kind": "function",
      "onSurface": true,
      "from": [
        "src/core/arg-summary.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ],
      "to": [
        "src/core/redaction-passes.ts",
        "src/core/untrusted-egress.ts",
        "src/index.ts"
      ]
    }
  ],
  "mintMoves": [],
  "criteriaObserves": [
    {
      "kind": "engineNoticeCode",
      "name": "classifier.unavailable",
      "assertions": [
        "G5.a"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "config.permission_mode_unavailable",
      "assertions": [
        "G5.c"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "config.read_deny_swapped",
      "assertions": [
        "G10.c"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "memory.consolidation_refused",
      "assertions": [
        "G15.b",
        "G17.a"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "tool_result.media_refused",
      "assertions": [
        "G14.a"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.gate",
      "assertions": [
        "G2.a",
        "G3.b",
        "G5.a",
        "G5.c",
        "G11.a",
        "G11.b",
        "G11.c",
        "G11.d",
        "G13.c"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.isError",
      "assertions": [
        "G6.b"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.output",
      "assertions": [
        "G6.b",
        "G7.a",
        "G7.b",
        "G11.a",
        "G14.a",
        "G14.b",
        "G15.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.askClass",
      "assertions": [
        "G3.a",
        "G3.b",
        "G11.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.boundGrantAbsence",
      "assertions": [
        "G4.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.classes",
      "assertions": [
        "G3.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.message",
      "assertions": [
        "G11.d"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.ruleOffersAbsence",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AssistantMessage.errorMessage",
      "assertions": [
        "G1.a",
        "G1.b",
        "G1.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AssistantMessage.stopReason",
      "assertions": [
        "G1.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "BackgroundChildEvent.result",
      "assertions": [
        "G6.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "Checkpoint.reopenReason",
      "assertions": [
        "G6.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "CheckpointSummary.boundGrantAbsence",
      "assertions": [
        "G4.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ClassifierUnavailableInfo.route",
      "assertions": [
        "G5.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ClassifierUnavailableSeat.route",
      "assertions": [
        "G5.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "EngineNotice.code",
      "assertions": [
        "G5.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "GateOutcome.disposition",
      "assertions": [
        "G13.a",
        "G13.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "MaterializedA2a.warnings",
      "assertions": [
        "G8.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "MaterializedMcp.warnings",
      "assertions": [
        "G8.a",
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "McpServerSpec.fingerprint",
      "assertions": [
        "G10.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "McpServerStatus.delivered",
      "assertions": [
        "G8.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "McpServerStatus.errorCode",
      "assertions": [
        "G8.a",
        "G10.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "McpServerStatus.status",
      "assertions": [
        "G8.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ModeRelease.reason",
      "assertions": [
        "G13.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PendingAction.ruleOffersAbsence",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PermissionResult.message",
      "assertions": [
        "G2.a",
        "G2.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PromptProvider.section",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "RedactionFinding.kind",
      "assertions": [
        "G7.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionPolicyError.code",
      "assertions": [
        "G2.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionPolicyError.detail",
      "assertions": [
        "G2.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ShellReadVerdict.disposition",
      "assertions": [
        "G11.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ShellReadVerdict.finding",
      "assertions": [
        "G11.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SkillsDirectoryOptions.containWithin",
      "assertions": [
        "G12.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SkillsDirectoryWarning.code",
      "assertions": [
        "G12.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "StablePromptContext.envFacts",
      "assertions": [
        "G9.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.runId",
      "assertions": [
        "G10.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskSpec.agents",
      "assertions": [
        "G16.a",
        "G16.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskSpec.excludeTools",
      "assertions": [
        "G16.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ToolCallRequest.approvalReach",
      "assertions": [
        "G17.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TraceEvent.sections",
      "assertions": [
        "G9.a",
        "G9.b"
      ]
    }
  ],
  "consumersHint": {
    "cli": [
      "ASK_CLASSES",
      "AllowEntryInert",
      "AllowEntryInertDetail",
      "AskRequest",
      "BackgroundChildEvent",
      "CheckpointSummary",
      "ENGINE_NOTICE_CODES",
      "Egress",
      "InheritedGate",
      "MaterializedMcp",
      "McpServerSpec",
      "PendingAction",
      "RunnerDeps",
      "SWAPPABLE_DEP_SEATS",
      "SessionPermissionRules",
      "SessionPolicyError",
      "SessionRuleNameRefusal",
      "ShellReadVerdict",
      "SkillsDirectoryOptions",
      "SkillsDirectoryWarningCode",
      "StablePromptContext",
      "StoredSessionRules",
      "TASK_NOTIFICATION_TERMINAL_STATUSES",
      "ToolCallRequest",
      "allowRuleShadowSentence",
      "compileAllowEntry",
      "normalizeRules",
      "redactSecrets",
      "screenGateOutcome"
    ],
    "server": [
      "ASK_CLASSES",
      "AskRequest",
      "BackgroundChildEvent",
      "CheckpointSummary",
      "ENGINE_NOTICE_CODES",
      "Egress",
      "InheritedGate",
      "MaterializedMcp",
      "McpRevocationLedger",
      "McpServerSpec",
      "PendingAction",
      "PromptProvider",
      "ReopenReason",
      "RoutePairingStatus",
      "RuleOffersAbsence",
      "RunnerDeps",
      "SWAPPABLE_DEP_SEATS",
      "SessionPermissionRules",
      "SessionPolicyError",
      "SessionRuleNameRefusal",
      "SkillsDirectoryOptions",
      "SkillsDirectoryWarningCode",
      "StablePromptContext",
      "StoredSessionRules",
      "ToolCallRequest",
      "assertSessionRuleNamesCurrent",
      "boundedRedactedSummary",
      "cardDisclosureOf",
      "compileAllowEntry",
      "createSessionRulePolicy",
      "findAdmittingRule",
      "isMediaBlock",
      "materializeMcpTools",
      "normalizeRules",
      "redactHostLeaks",
      "redactSecrets",
      "screenGateOutcome",
      "stripRev",
      "untrustedEgressForHuman"
    ],
    "sdk": [
      "ASK_CLASSES",
      "AskRequest",
      "BackgroundChildEvent",
      "CheckpointSummary",
      "ENGINE_NOTICE_CODES",
      "InheritedGate",
      "McpServerSpec",
      "PendingAction",
      "RoutePairingPosture",
      "RoutePairingStatus",
      "RuleOffersAbsence",
      "RunnerDeps",
      "SessionPermissionRules",
      "SessionPolicyError",
      "StoredSessionRules",
      "assertSessionRuleNamesCurrent",
      "redactSecrets",
      "screenGateOutcome"
    ],
    "note": "scanned cli@1ffe7822 server@c5a3c03a sdk@308eee7 — 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: 5 name(s) matched ONLY in bookkeeping files and were set aside (ClassifierUnavailableInfo, ClassifierUnavailableSeat, RoutePairingConfig, RoutePairingPosture, ShellReadVerdict)"
  },
  "breakingCount": 28,
  "breakingItems": [
    "closed set lost members: ASK_CLASSES -governance_unavailable",
    "closed set lost members: AskRequest.ruleOffersAbsence -shadowed",
    "closed set lost members: BackgroundChildEvent.stoppedBy -parent,system,user",
    "closed set lost members: PendingAction.ruleOffersAbsence -shadowed",
    "closed set lost members: RoutePairingPosture -unpinned",
    "closed set lost members: RoutePairingStatus -ok:unpinned",
    "closed set lost members: SessionPolicyError.code -legacy_tool_name",
    "export kind changed: ShellReadVerdict interface -> type",
    "export removed: SessionRuleNameRefusal (interface)",
    "export removed: assertSessionRuleNamesCurrent (function)",
    "export removed: compileAllowEntry (function)",
    "export removed: stripRev (function)",
    "signature changed: SessionPolicyError.constructor — param 3 `detail` type changed, direction not read: SessionRule[Nam -> EntryRefusal | SessionRuleShap]eRefusal",
    "signature changed: boundedRedactedSummary — return type [string -> Egress<\"same-principal\">]",
    "signature changed: findAdmittingRule — param 2 `call` type changed, direction not read: [{ tool: string; command: string; cwd: string | undefined; sessionId?:… -> AdmissionCall]",
    "signature changed: materializeMcpTools — param 6 `mcpRevocations` type changed, direction not read: [{ isRevoked(serverName: string): boolean; -> McpRevocationLedger & {] onProbeFailure?: (error…",
    "signature changed: normalizeRules — param 1 `rules` type changed, direction not read: [SessionPermissionRules -> unknown]",
    "signature changed: redactHostLeaks — return type [string -> Egress<\"human\">]",
    "signature changed: redactSecrets — return type [string -> Egress<\"same-principal\">]",
    "signature changed: screenGateOutcome — param 1 `g` type changed, direction not read: [GateOutcome -> unknown]",
    "signature changed: untrustedEgressForHuman — return type [string -> Egress<\"human\">]",
    "type gained required keys: ClassifierUnavailableInfo +route",
    "type gained required keys: MaterializedMcp +instructionsDelta.pendingAdds[].author,serverInstructions[].author",
    "type lost keys: ClassifierUnavailableInfo -disposition",
    "type lost keys: ClassifierUnavailableSeat -approvalSeat",
    "type lost keys: SessionPermissionRules -commandAllow,commandDeny",
    "type lost keys: ShellReadVerdict -admit,details,disposition,environmentSilent,face,finding,readRootCandidate,rowsUnread,sentence,targetUnresolved,unestablished,unplacedOptions,unplacedOptions.program,writeProtected,writesPlaced",
    "type lost keys: StoredSessionRules -commandAllow,commandDeny"
  ]
}