{
  "repo": "core",
  "version": "7.43.0",
  "from": "596c3a64df139e695e8354751c520d3d944010c9",
  "to": "f91ca4b8b3dd618fb90e1e4dd339b10255dd9051",
  "added": [
    {
      "name": "APPROVAL_REACH",
      "kind": "variable",
      "tier": "advanced",
      "at": [
        "src/core/wiring-manifest.ts:68",
        "src/index.ts:1177"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "ApprovalReach",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/wiring-manifest.ts:69",
        "src/index.ts:1178"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "BoundSkillGrants",
      "kind": "interface",
      "tier": "advanced",
      "at": [
        "src/core/skill-grant-binding.ts:12",
        "src/index.ts:1476"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "abortedSeatDeny",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/tool-policy.ts:235",
        "src/index.ts:1406"
      ],
      "criteriaCovered": false,
      "breaking": false
    },
    {
      "name": "isApprovalReach",
      "kind": "function",
      "tier": "advanced",
      "at": [
        "src/core/wiring-manifest.ts:72",
        "src/index.ts:1179"
      ],
      "criteriaCovered": false,
      "breaking": false
    }
  ],
  "removed": [],
  "changed": [],
  "narrowed": [],
  "closedSetMembers": [
    {
      "set": "ALLOW_ENTRY_INERT_REASONS",
      "at": [
        "src/core/allow-entry.ts:39"
      ],
      "newSet": false,
      "added": [
        "near_miss",
        "tool_name"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "APPROVAL_REACH",
      "at": [
        "src/core/wiring-manifest.ts:68"
      ],
      "newSet": true,
      "added": [
        "none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ASK_CLASSES",
      "at": [
        "src/core/ask-origin.ts:596"
      ],
      "newSet": false,
      "added": [
        "classifier_no_ruling"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ApprovalReach",
      "at": [
        "src/core/wiring-manifest.ts:69",
        "src/index.ts:1178"
      ],
      "newSet": true,
      "added": [
        "none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "AskSeamForm",
      "at": [
        "src/core/wiring-manifest.ts:60"
      ],
      "newSet": false,
      "added": [
        "declared_none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "CHECKPOINT_CONFIG_REFUSAL_CODES",
      "at": [
        "src/core/checkpoint-store.ts:2426"
      ],
      "newSet": false,
      "added": [
        "config.approval_reach_invalid",
        "config.skill_deny_unreadable",
        "config.user_invoked_skill_unknown"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "CHILD_CLAMP_SEATS",
      "at": [
        "src/core/child-clamp-seats.ts:32"
      ],
      "newSet": false,
      "added": [
        "approvalReach"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "HeadlessApproverSeat",
      "at": [
        "src/core/ask-origin.ts:858"
      ],
      "newSet": false,
      "added": [
        "declared_none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "PersistedRuleMatch",
      "at": [
        "src/core/permission-rule-model.ts:252"
      ],
      "newSet": false,
      "added": [
        "name",
        "name_prefix"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "RULE_TOOL_NAME_VERDICTS",
      "at": [
        "src/core/tool-name-aliases.ts:75"
      ],
      "newSet": false,
      "added": [
        "unmintable_segment"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "RuleToolNameVerdict.kind",
      "at": [
        "src/core/tool-name-aliases.ts:97",
        "src/core/tool-name-aliases.ts:98",
        "src/core/tool-name-aliases.ts:99",
        "src/core/tool-name-aliases.ts:100"
      ],
      "newSet": false,
      "added": [
        "unmintable_segment"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "RunWorkflowToolDeps.parentApprovalReach",
      "at": [
        "src/orchestration/run-workflow-tool.ts:584"
      ],
      "newSet": true,
      "added": [
        "none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "set": "ToolExecuteContext.approvalReach",
      "at": [
        "src/core/tool-spec.ts:952"
      ],
      "newSet": true,
      "added": [
        "none"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    }
  ],
  "closedSetsUnreadable": [],
  "typeKeys": [
    {
      "type": "AskCarry",
      "at": [
        "src/core/hooks.ts:2204"
      ],
      "added": [
        "classifierNoRuling"
      ],
      "addedDetail": [
        {
          "key": "classifierNoRuling",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "AskRequest",
      "at": [
        "src/core/tool-policy.ts:2828"
      ],
      "added": [
        "boundGrantDigest",
        "boundGrants",
        "classifierNoRuling"
      ],
      "addedDetail": [
        {
          "key": "boundGrantDigest",
          "optional": true
        },
        {
          "key": "boundGrants",
          "optional": true
        },
        {
          "key": "classifierNoRuling",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "CheckpointSummary",
      "at": [
        "src/core/checkpoint-store.ts:2096"
      ],
      "added": [
        "boundGrantDigest",
        "boundGrants",
        "classifierNoRuling"
      ],
      "addedDetail": [
        {
          "key": "boundGrantDigest",
          "optional": true
        },
        {
          "key": "boundGrants",
          "optional": true
        },
        {
          "key": "classifierNoRuling",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "PendingAction",
      "at": [
        "src/core/checkpoint-store.ts:951"
      ],
      "added": [
        "tool_approval.boundGrants",
        "tool_approval.classifierNoRuling"
      ],
      "addedDetail": [
        {
          "key": "tool_approval.boundGrants",
          "optional": true
        },
        {
          "key": "tool_approval.classifierNoRuling",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "PermissionResult",
      "at": [
        "src/core/tool-policy.ts:474"
      ],
      "added": [
        "ask.classifierNoRuling"
      ],
      "addedDetail": [
        {
          "key": "ask.classifierNoRuling",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "PreToolUseResult",
      "at": [
        "src/core/hooks.ts:1180"
      ],
      "added": [
        "ask.classifierNoRuling"
      ],
      "addedDetail": [
        {
          "key": "ask.classifierNoRuling",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "RuleToolNameVerdict",
      "at": [
        "src/core/tool-name-aliases.ts:96"
      ],
      "added": [
        "unmintable_segment.currentName",
        "unmintable_segment.guidance",
        "unmintable_segment.kind"
      ],
      "addedDetail": [
        {
          "key": "unmintable_segment.currentName",
          "optional": true
        },
        {
          "key": "unmintable_segment.guidance",
          "optional": false
        },
        {
          "key": "unmintable_segment.kind",
          "optional": false
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "RunWorkflowToolDeps",
      "at": [
        "src/orchestration/run-workflow-tool.ts:430"
      ],
      "added": [
        "parentApprovalReach"
      ],
      "addedDetail": [
        {
          "key": "parentApprovalReach",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "SkillGrantHit",
      "at": [
        "src/core/skill-grant.ts:200"
      ],
      "added": [
        "readsAsNothing"
      ],
      "addedDetail": [
        {
          "key": "readsAsNothing",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "TaskSpec",
      "at": [
        "src/core/task-spec.ts:52"
      ],
      "added": [
        "approvalReach"
      ],
      "addedDetail": [
        {
          "key": "approvalReach",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    },
    {
      "type": "ToolExecuteContext",
      "at": [
        "src/core/tool-spec.ts:613"
      ],
      "added": [
        "approvalReach"
      ],
      "addedDetail": [
        {
          "key": "approvalReach",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "ToolGateInput",
      "at": [
        "src/core/hooks.ts:1470"
      ],
      "via": "runToolGate.ToolGateInput",
      "added": [
        "askSeatForm"
      ],
      "addedDetail": [
        {
          "key": "askSeatForm",
          "optional": true
        }
      ],
      "addedRequired": [],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    }
  ],
  "typeKeysUnreadableArms": [],
  "typeKeysFlattenedCount": 225,
  "signatures": [
    {
      "name": "compileAllowEntry",
      "at": [
        "src/core/allow-entry.ts:150"
      ],
      "from": [
        "(raw: string, behavior: \"allow\" | \"deny\"): AllowEntryInertReason | CompiledAllowEntry"
      ],
      "to": [
        "(raw: string, behavior: \"allow\" | \"deny\", roster?: ReadonlySet<string>): AllowEntryInertReason | CompiledAllowEntry"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "+optional param `roster?: ReadonlySet<string>`",
          "breaking": false
        }
      ],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "name": "compileAllowList",
      "at": [
        "src/core/allow-entry.ts:162"
      ],
      "from": [
        "(entries: readonly string[], behavior: \"allow\" | \"deny\"): { rows: Array<{ entry: string; compiled: CompiledAllowEntry; }>; inert: Array<{ entry: string; reason: AllowEntryInertReason; }>; }"
      ],
      "to": [
        "(entries: readonly string[], behavior: \"allow\" | \"deny\", roster?: ReadonlySet<string>): { rows: Array<{ entry: string; compiled: CompiledAllowEntry; }>; inert: AllowEntryInert[]; }"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "+optional param `roster?: ReadonlySet<string>`",
          "breaking": false
        },
        {
          "aspect": "returns",
          "detail": "return type …AllowEntry; }>; inert: A[rray<{ entry: string; reason: AllowEntryInertReason; }> -> llowEntryInert[]]; }",
          "breaking": true
        }
      ],
      "breaking": true,
      "criteriaCovered": false
    },
    {
      "name": "resolveAskSeamForm",
      "at": [
        "src/core/wiring-manifest.ts:985"
      ],
      "from": [
        "(spec: Pick<TaskSpec, \"onAsk\">, deps: Pick<RunnerDeps, \"onAsk\">): { form: AskSeamForm; provenance?: SeamProvenance; }"
      ],
      "to": [
        "(spec: Pick<TaskSpec, \"onAsk\" | \"approvalReach\">, deps: Pick<RunnerDeps, \"onAsk\">): { form: AskSeamForm; provenance?: SeamProvenance; }"
      ],
      "changes": [
        {
          "aspect": "param",
          "detail": "param 1 `spec` type changed, direction not read: Pick<TaskSpec, \"onAsk\"[ ->  | \"approvalReach\"]>",
          "breaking": true,
          "uncertain": true
        }
      ],
      "uncertain": "param 1 `spec` type changed, direction not read: Pick<TaskSpec, \"onAsk\"[ ->  | \"approvalReach\"]> — 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": "ruleToolGrammarOf",
      "at": [
        "src/core/permission-rule-model.ts:207"
      ],
      "from": [
        "(toolName: string): \"command\" | \"path\" | undefined"
      ],
      "to": [
        "(toolName: string): \"command\" | \"name\" | \"path\" | undefined"
      ],
      "changes": [
        {
          "aspect": "returns",
          "detail": "return type \"command\" | \"[ -> name\" | \"]path\" | undefined",
          "breaking": true
        }
      ],
      "breaking": true,
      "criteriaCovered": false
    }
  ],
  "declarationMoves": [
    {
      "name": "abortedSeatDeny",
      "kind": "function",
      "onSurface": true,
      "from": [
        "src/core/tool-policy.ts"
      ],
      "to": [
        "src/core/tool-policy.ts",
        "src/index.ts"
      ]
    }
  ],
  "mintMoves": [],
  "criteriaObserves": [
    {
      "kind": "engineNoticeCode",
      "name": "classifier.denial_limit",
      "assertions": [
        "G7.b",
        "G8.b",
        "G10.c"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "classifier.unavailable",
      "assertions": [
        "G7.a"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "delegation.ask_unresolvable",
      "assertions": [
        "G10.b"
      ]
    },
    {
      "kind": "engineNoticeCode",
      "name": "permission.allowed_tool_not_granted",
      "assertions": [
        "G12.a",
        "G12.b"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.gate",
      "assertions": [
        "G1.c",
        "G4.c",
        "G7.b",
        "G7.d",
        "G15.a"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.isError",
      "assertions": [
        "G15.a"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.output",
      "assertions": [
        "G15.a"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "wiring_manifest.manifest",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.askClass",
      "assertions": [
        "G1.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.boundGrantDigest",
      "assertions": [
        "G13.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.boundGrants",
      "assertions": [
        "G13.b",
        "G13.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.classes",
      "assertions": [
        "G7.a",
        "G7.c",
        "G9.a",
        "G9.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.classifierNoRuling",
      "assertions": [
        "G7.a",
        "G7.c",
        "G9.d"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.denialLimitFallback",
      "assertions": [
        "G8.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.message",
      "assertions": [
        "G1.a",
        "G1.b",
        "G3.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.ruleOffers",
      "assertions": [
        "G3.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.ruleOffersAbsence",
      "assertions": [
        "G3.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "Checkpoint.pendingAction.boundGrantDigest",
      "assertions": [
        "G13.a",
        "G14.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "Checkpoint.pendingAction.boundGrants",
      "assertions": [
        "G13.a",
        "G13.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "CheckpointError.code",
      "assertions": [
        "G16.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "CheckpointError.detail.field",
      "assertions": [
        "G14.a",
        "G16.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "CheckpointSummary.boundGrantDigest",
      "assertions": [
        "G13.a",
        "G14.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "CheckpointSummary.boundGrants",
      "assertions": [
        "G13.a",
        "G14.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "CheckpointSummary.classifierNoRuling",
      "assertions": [
        "G9.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PermissionRuleIssue.code",
      "assertions": [
        "G2.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PermissionRuleIssue.message",
      "assertions": [
        "G2.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "PersistedRule.match",
      "assertions": [
        "G1.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "RuleReject.code",
      "assertions": [
        "G2.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "RuleReject.message",
      "assertions": [
        "G2.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionRuleNameRefusal.currentName",
      "assertions": [
        "G11.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionRuleNameRefusal.verdict",
      "assertions": [
        "G11.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.terminal",
      "assertions": [
        "G4.b",
        "G4.c",
        "G6.a",
        "G6.c",
        "G7.b",
        "G8.a",
        "G8.b",
        "G8.c",
        "G11.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.terminal.code",
      "assertions": [
        "G15.b",
        "G17.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.terminal.message",
      "assertions": [
        "G15.b",
        "G17.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskSpec.approvalReach",
      "assertions": [
        "G5.a",
        "G5.b",
        "G5.c",
        "G6.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskSpec.interactionPosture",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WiringManifest.ask.effective",
      "assertions": [
        "G4.a",
        "G4.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WiringManifest.ask.form",
      "assertions": [
        "G4.a",
        "G4.d"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WiringManifest.ask.provenance",
      "assertions": [
        "G4.d"
      ]
    }
  ],
  "consumersHint": {
    "cli": [
      "ASK_CLASSES",
      "AskCarry",
      "AskRequest",
      "CHECKPOINT_CONFIG_REFUSAL_CODES",
      "CHILD_CLAMP_SEATS",
      "CheckpointSummary",
      "PendingAction",
      "PermissionResult",
      "PreToolUseResult",
      "RunWorkflowToolDeps",
      "TaskSpec",
      "ToolExecuteContext",
      "ToolGateInput",
      "ruleToolGrammarOf"
    ],
    "server": [
      "ASK_CLASSES",
      "AskCarry",
      "AskRequest",
      "CHECKPOINT_CONFIG_REFUSAL_CODES",
      "CheckpointSummary",
      "PendingAction",
      "PermissionResult",
      "PersistedRuleMatch",
      "PreToolUseResult",
      "RULE_TOOL_NAME_VERDICTS",
      "RunWorkflowToolDeps",
      "TaskSpec",
      "ToolExecuteContext",
      "ToolGateInput",
      "resolveAskSeamForm",
      "ruleToolGrammarOf"
    ],
    "sdk": [
      "ASK_CLASSES",
      "AskRequest",
      "CheckpointSummary",
      "PendingAction",
      "PermissionResult",
      "PersistedRuleMatch",
      "PreToolUseResult",
      "TaskSpec"
    ],
    "note": "scanned cli@bf15b2f9 server@72e966f3 sdk@e3a5370 — 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: 3 name(s) matched ONLY in bookkeeping files and were set aside (AskSeamForm, RuleToolNameVerdict, SkillGrantHit)"
  },
  "breakingCount": 3,
  "breakingItems": [
    "signature changed: compileAllowList — return type …AllowEntry; }>; inert: A[rray<{ entry: string; reason: AllowEntryInertReason; }> -> llowEntryInert[]]; }",
    "signature changed: resolveAskSeamForm — param 1 `spec` type changed, direction not read: Pick<TaskSpec, \"onAsk\"[ ->  | \"approvalReach\"]>",
    "signature changed: ruleToolGrammarOf — return type \"command\" | \"[ -> name\" | \"]path\" | undefined"
  ]
}
