Probe controls DONE and full receipt written. No blocker. RECEIPT d2/d2-pinned-removal-receipt.md sha256 d9141055af310a89c69250f15bf2c2518328c661b1149447b03210ef50086e81 SUCCESSOR d2/fp-driver-d2.sh bb4171924ca921dce6a53f5b5969fafc29bfacdf9ba61474a6361f6503717cbd (unchanged by this round - controls only) DIFF d2/fp-driver-d2-bafed7a7-to-bb417192.diff bfef425f... (6 hunks, +201/-25) CONTROLS d2/rig-d2/cleanup-controls.sh 5fc82d4c... -> cleanup-controls.out 39156aaa..., 49/49 PROBE FIXTURES d2/rig-d2/probe-fixtures.ps1 28d9a7c9..., 11/11 on their own TRANSCRIPTS d2/rig-d2/probe-transcripts/ + TRANSCRIPTS.sha256 32f78eec... THE ACTUAL PROBE, five fixture answers, then its REAL output into removal_check. probe-fixtures.ps1 DOT-SOURCES rule-probe.ps1 so a shadowed Get-NetFirewallRule wins inside the probe's own bytes; no host query either layer. PRESENT (object returned) -> probe state=PRESENT x4 -> removal_check FAILED typed NotFound -> state=ABSENT notfound x4 -> CONFIRMED access denial -> state=UNREADABLE fqid=AccessDenied... -> UNREADABLE_STATE unrelated error (RPC fault) -> state=UNREADABLE fqid=RpcFault... -> UNREADABLE_STATE empty success -> state=UNREADABLE empty_success_is_not_absence -> UNREADABLE_STATE dead per-store control -> RULEPROBE_CONTROL_OK ok=False x2 -> UNREADABLE_CONTROLS partial (one name left) -> one ABSENT one PRESENT per store -> PARTIAL ActiveStore residue -> persistent clean, active holding a name -> ACTIVESTORE_RESIDUE A denial and an empty success both read UNREADABLE, never ABSENT - that was the point of asking for them. SCOPE, distinguished as you required. NEVER-STARTED SETUP is no longer a branch excerpt. The control now cuts the WHOLE firewall section of cleanup() from the subject - `if has_state fw_mutation_may_have_occurred; then` through its closing fi - and runs those bytes. Marker unset: no dispatch, TEARDOWN_DISPATCH=NOT_REACHED, removal_check never reached, no VERIFIED available, and the subject's own two skip records present. a7 is the extraction's positive control: same bytes, marker set, reaches the dispatch. NOT covered: cleanup() end to end - the capture/validate/guard subsystems and the handoff are stubbed BY NAME. PARTIAL REMOVAL is an OBSERVATION test. removal_check and the probe are shown to read and classify a host state in which one rule is gone and the other is not. NOTHING deleted a rule, failed, and left the other in place. That is a field run of the instrument; it has not happened and is not authorized. The probe never read a real host. That its readings match a real firewall's behaviour is inherited from the D3 admission measurements, not established here. CORRECTION YOU CALLED: bafed7a7 is the SCHEDULING SUCCESSOR, this lane's previous pin - NOT the field-executed driver. The 04:14Z field run executed 2e3aec1b. My earlier "byte-identical to the frozen field driver" is withdrawn in the receipt rather than left standing. ALSO CORRECTED BY REPLACEMENT: the controls file said "ran NO pwsh" in its header and disposition. True of sections A-I, false once J runs the fixture harness. Both statements now name the two layers separately and say which started a process. Process disposition: one pwsh started (section J, the fixture harness), plus the harness's own shell; sections A-I started none. No host query, nothing signalled, scratch dir removed on exit, transcripts copied out first. No field run, elevation or kill. D2 GO remains yours.