{
  "repo": "core",
  "version": "7.27.0",
  "from": "e90527d7630a7098366f7843b8aae7346ea0a07c",
  "to": "v7.27.0",
  "added": [
    {
      "name": "ApprovalSeatOutcome",
      "kind": "type",
      "tier": "advanced",
      "at": [
        "src/core/tool-policy.ts:1318",
        "src/index.ts:1345"
      ],
      "criteriaCovered": true,
      "breaking": false
    }
  ],
  "removed": [],
  "changed": [],
  "narrowed": [
    {
      "id": "F1",
      "source": "behaviorFlips.summary",
      "text": "NARROWING (#1019, P2, approval face — durable): the auto-mode classifier's denial-limit fallback, when PARKED durably and then settled by nobody (a policy refusal, or no approver), stops the leg with `classifier.denial_limit` exactly as the synchronous station does — the deny stands as the call's result, the stop ends the leg; a person's refusal on the same park does NOT stop (one table, `SETTLEMENT_NOBODY_JUDGED`, both stations)."
    },
    {
      "id": "F3",
      "source": "behaviorFlips.summary",
      "text": "NARROWING (#1002 ①, C-R80, prompt face): the engine-minted approval-posture directive is EXCLUSIVE, bypass first — a run declaring both `autoModeRequested` and `approverPosture:\"bypass\"` receives the bypass segment alone (CC 2.1.259 `case\"auto_mode\"` arm order); single-seat runs are byte-unchanged. Cross-leg coexistence of two segments (a later leg adding the bypass seat after an auto-only leg already stated auto) is unchanged and recorded as KL-1002c."
    },
    {
      "id": "F4",
      "source": "behaviorFlips.summary",
      "text": "NARROWING (#1013, P2, file stores): every JSONL read-back judges the record's SHAPE — a line that parses but is not an object (`123`, `\"str\"`, `null`, `[1]`) is disclosed once through the store's corrupt-read seat with a `CORRUPT_BODY_FORMS` word and skipped, never handed to a consumer; the eight roster faces of `storeReadBackShapeContract` are bound; every tolerant file store has one disclosure seat (one shared guard, sync throw and async rejection both contained); an artifact-ledger idempotency-replay record with a bad shape is refused at the ledger door; the permission-rule adoption marker is judged per arm."
    }
  ],
  "closedSetMembers": [],
  "closedSetsUnreadable": [],
  "typeKeys": [
    {
      "type": "FileBackgroundAgentStoreOptions",
      "at": [
        "src/stores/file/background-agent-store.ts:43"
      ],
      "added": [
        "onCorruptRead"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "FileCheckpointStoreOptions",
      "at": [
        "src/stores/file/checkpoint-store.ts:86"
      ],
      "added": [
        "onCorruptRead"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "FileWorkflowRunStoreOptions",
      "at": [
        "src/stores/file/workflow-run-store.ts:47"
      ],
      "added": [
        "onCorruptRead"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    },
    {
      "type": "Prepared",
      "at": [
        "src/core/runner/contracts.ts:231"
      ],
      "via": "Runner.SuspendReap.env",
      "added": [
        "stopForDenialLimit"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": false
    }
  ],
  "typeKeysUnreadableArms": [],
  "typeKeysFlattenedCount": 212,
  "declarationMoves": [
    {
      "name": "StopForDenialLimit",
      "kind": null,
      "onSurface": false,
      "from": [
        "src/core/runner/denial-limit-arms.ts"
      ],
      "to": [
        "src/core/runner/contracts.ts"
      ]
    }
  ],
  "mintMoves": [],
  "criteriaObserves": [
    {
      "kind": "taskEventField",
      "name": "tool_end.gate",
      "assertions": [
        "G1.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ApprovalSeatOutcome.settledBy",
      "assertions": [
        "G2.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "FileMailboxStoreOptions.onCorruptRead",
      "assertions": [
        "G4.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskSpec.approverPosture",
      "assertions": [
        "G3.a"
      ]
    }
  ],
  "consumersHint": {
    "cli": [
      "Prepared"
    ],
    "server": [
      "FileBackgroundAgentStoreOptions",
      "FileCheckpointStoreOptions",
      "FileWorkflowRunStoreOptions"
    ],
    "sdk": [],
    "note": "scanned cli@17a6b331 server@73a73469 sdk@bfb4fd0 — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
  },
  "breakingCount": 0,
  "breakingItems": [],
  "toResolvedAt": "bc100bca1f15c0658cc4d0f615bb31aca7027c0b"
}
