{
  "repo": "core",
  "version": "7.48.0",
  "from": "b29642cbf7daa459e48226114b2ac2132e855036",
  "to": "7161f2a278ed51f0154de745fd7f6a4f8d349039",
  "added": [],
  "removed": [],
  "changed": [],
  "narrowed": [
    {
      "id": "F1",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING, open to veto (#1461): a word that a name's established value spells is read as that value at the program position and as an operand — a `Bash` allow no longer runs `P=rm; $P -rf <root>` without a card."
    },
    {
      "id": "F2",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING, open to veto (#1461, completed): each field of a split unquoted value is a word of its own — named by its text, its `NAME=value` shape kept — for every reader, the removal guard included."
    },
    {
      "id": "F7",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1459): every launcher field asks the one value table — `su -c` / `runuser -c` / `watch` / `bash -c` hand every established value of a name, as `sudo -s` already did."
    },
    {
      "id": "F8",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1460): the combination bound counts distinct names and nothing is sampled past it — the words past the bound are handed on as written with their values as deny floors."
    },
    {
      "id": "F9",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1446): a launcher option cluster is read as getopt reads it, its command-line letter included."
    },
    {
      "id": "F10",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1452): `watch` declares its options (procps and BusyBox) and the words from its first operand on are the shell text; the exported `SHELL_WRAPPER_TABLE` `watch` row gains its option sets."
    },
    {
      "id": "F11",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1463): a shell run as another user starts with that user's home — a login shell stands in it, `HOME` there is the target's."
    },
    {
      "id": "F12",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING, open to veto (#1424): standard input flows into a group and into an inner shell; a process-substitution script and a stream-fed shell are scripts built when the command runs — also for a harmless text."
    },
    {
      "id": "F13",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1466): the judge sees every name bash opens — a part of a pattern word carries the word's widened pattern, a malformed bracket unit is a member as bash reads it, a field forms its pattern once it has fully expanded."
    },
    {
      "id": "F14",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1471): session rules with a bucket that is not a list of strings are refused — a bare `\"rm\"` was stored as `[\"r\",\"m\"]`."
    },
    {
      "id": "F15",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1400): a protocol name with an empty tool segment (`mcp__srv__`) is judged `unmintable_segment`, not `current` — a rule that guarded nothing in silence is refused or announced."
    },
    {
      "id": "F17",
      "source": "behaviorFlips.summary",
      "text": "BEHAVIOR NARROWING (#1442): a `readDenyPatterns` row that opens with `/` is rooted — it names that one absolute location (placed where its literal head leads through a link), not that tail at any depth."
    }
  ],
  "closedSetMembers": [],
  "closedSetsUnreadable": [],
  "typeKeys": [],
  "typeKeysUnreadableArms": [],
  "typeKeysFlattenedCount": 228,
  "signatures": [],
  "declarationMoves": [],
  "mintMoves": [],
  "criteriaObserves": [
    {
      "kind": "taskEventField",
      "name": "tool_end.gate",
      "assertions": [
        "G1.a",
        "G2.a",
        "G2.c",
        "G4.a",
        "G4.b",
        "G5.a",
        "G5.c",
        "G6.a",
        "G7.a",
        "G8.a",
        "G8.b"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.isError",
      "assertions": [
        "G12.a",
        "G12.b"
      ]
    },
    {
      "kind": "taskEventField",
      "name": "tool_end.output",
      "assertions": [
        "G12.a",
        "G12.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.askClass",
      "assertions": [
        "G1.a",
        "G1.b",
        "G1.c",
        "G1.d",
        "G2.a",
        "G3.a",
        "G3.b",
        "G3.c",
        "G3.d",
        "G4.a",
        "G4.c",
        "G5.a",
        "G5.b",
        "G5.c",
        "G5.d",
        "G6.a",
        "G6.b",
        "G6.c",
        "G7.a",
        "G7.b",
        "G8.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.classes",
      "assertions": [
        "G2.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "AskRequest.message",
      "assertions": [
        "G1.c",
        "G3.b",
        "G6.b",
        "G7.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "GateOutcome.disposition",
      "assertions": [
        "G1.b",
        "G2.b",
        "G2.c",
        "G3.a",
        "G3.c",
        "G3.d",
        "G4.b",
        "G4.c",
        "G5.b",
        "G5.d",
        "G6.c",
        "G8.a",
        "G8.b",
        "G8.c"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionPolicyError.code",
      "assertions": [
        "G9.b",
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionPolicyError.detail.verdict",
      "assertions": [
        "G10.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionPolicyStore.getRules",
      "assertions": [
        "G9.a"
      ]
    },
    {
      "kind": "typeMember",
      "name": "SessionPolicyStore.putRules",
      "assertions": [
        "G9.a",
        "G9.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.terminal.code",
      "assertions": [
        "G10.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "TaskResult.terminal.message",
      "assertions": [
        "G10.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WorkflowRun.error",
      "assertions": [
        "G11.a",
        "G11.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WorkflowRun.result",
      "assertions": [
        "G11.b"
      ]
    },
    {
      "kind": "typeMember",
      "name": "WorkflowRun.status",
      "assertions": [
        "G11.a"
      ]
    }
  ],
  "consumersHint": {
    "cli": [],
    "server": [],
    "sdk": [],
    "note": "scanned cli@bad8fa4b server@a49a0616 sdk@ae10bec — a name listed is MENTIONED there today, which is evidence of consumption, not proof of it"
  },
  "breakingCount": 0,
  "breakingItems": []
}
