{
  "repo": "core",
  "version": "7.17.2",
  "from": "1cb20e749ccc4e1e379f991f622424ea20aa4718",
  "to": "v7.17.2",
  "added": [],
  "removed": [],
  "changed": [],
  "narrowed": [
    {
      "id": "F1",
      "source": "behaviorFlips.summary",
      "text": "Narrowing of the write gate's asks — the directories the prompt advertises as writable feed the write gate's exemption through the request (#749; cli B-102; server S-261): a run whose prompt advertises a memory write home (and a scratchpad) stamps those CANONICAL roots on every policy adjudication as `ToolCallRequest.advertisedWritableRoots`, and `createFsWriteGatePolicy` allows a covered write whose canonical target lies inside one of them — no ask, no second exemption list on the deployment."
    },
    {
      "id": "F2",
      "source": "behaviorFlips.summary",
      "text": "Narrowing corrected — a refused shell command is exempt from the read-boundary mandate only when every part of it is a shape the scan fully understands (#751; test [7111] codex track): a here-document or here-string is a reader's stdin, not a file, so `cat <<'EOF' > out.txt` and `wc -l <<< \"x\"` no longer raise a mandated ask under the default doctrine; everything the scan does not understand mandates."
    }
  ],
  "closedSetMembers": [],
  "typeKeys": [
    {
      "type": "ToolCallRequest",
      "at": [
        "src/core/tool-policy.ts:33"
      ],
      "added": [
        "advertisedWritableRoots"
      ],
      "removed": [],
      "breaking": false,
      "criteriaCovered": true
    }
  ],
  "declarationMoves": [],
  "mintMoves": [],
  "criteriaObserves": [
    {
      "kind": "typeMember",
      "name": "AskRequest.ruleOffersAbsence",
      "assertions": [
        "G2.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "ToolCallRequest.advertisedWritableRoots",
      "assertions": [
        "G1.a"
      ]
    }
  ],
  "consumersHint": {
    "cli": [],
    "server": [
      "ToolCallRequest"
    ],
    "sdk": [],
    "note": "scanned cli@25ce6655 server@b132e73b sdk@f6ae86f — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
  },
  "breakingCount": 0,
  "breakingItems": [],
  "toResolvedAt": "d6ef7ed0985d53ad982b51998a5bd05ae807e719"
}
