# P15-087 Stage0 Decision Status: `STOP`. B12 is `STOP-NO-SOURCE`; no production source, B12 case, or B12 fixture is authorized. The final decision uses frozen DUT BASE `c7d692acf9166f5c5e42335db2de64f0793ba8a2`, FreeBSD source HEAD `106727738dcfb6c001b46f25363b91cece970085`, and `mkfs.erofs (erofs-utils) 1.8.6`. The final gate script and input SHA256 values are `349720b900ad2288153c9830f5f5ee84b8da707c06ffabcbd8e3e7a7e89f9e2a` and `cb3aaa6c780c7b1efbd7c339f2b2da2ed8bf38d3ba32229dc17996807fd00787`. ## Workload and Independent Oracle The gate deterministically creates 18,000 long-name regular files. Since erofs-utils tailpacks the root directory even with `-E noinline_data`, the generator moves the final 1,456-byte tail into one appended contiguous block, changes only the root layout from flat-inline to flat-plain, increments the superblock block count, and recomputes CRC32C. A second generation is byte-identical and `fsck.erofs -d0` exits zero. The independent parser does not call DUT code. It verifies a 3,880,368-byte flat-plain directory at physical block 282, covering 948 contiguous 4 KiB blocks and 18,002 entries. Its expected final cookie is 3,880,368 and its record FNV64 is `427bb414efa99dc0`; the random offset is 1,937,408. The fixture SHA256 is `3ecc5b706dd43b734c7e14a648a2bed2fb97a9f7963d4db703d15de81dc07a9d`. The immutable `oracle.json` SHA256 is `f247bbe5029301265342ff2098fcbd463a25e4752608826cbc1126d6620ef5d6`. The generated prototype patch SHA256 is `33b25131a611eec9c8731e88e4c258dfc92fe5897dd6781b6c95414a846dd2d1`. Static extraction proves that it calls `breadn` only on the mapped backing `devvp`, does not call `breadn` on the EROFS directory vnode, caps the window at exactly 1 MiB, gates readahead on an offset-zero sequential readdir, and adds no VM entrypoint, vnode lock, GEOM ownership operation, `cluster_read`, or errno token. The `semantic-ledger.json` SHA256 is `d26dbc37f4f34f65d07745a1b8069217d18545436d7f16f24e775e8c2db1a6b3`. This closes the static design boundary but cannot replace runtime proof. ## Quantitative Decision | Required G11 measurement | Required | Valid result | Decision | |---|---:|---:|---| | Cold sequential runs | 5 baseline + 5 prototype | 0 + 0 | FAIL: no median | | Median latency improvement | at least 10% | not measurable | FAIL | | Extra provider reads | at most 25% | not measurable | FAIL | | Readahead window | at most 1 MiB | 1 MiB static cap | PASS | | Random seek readahead | zero | 0 valid runtime samples | FAIL: not verified | | Hash/cookie equality | exact independent oracle | 0 valid runtime samples | FAIL: not verified | No run produced `runs.tsv`; therefore no latency, read-transfer, random-no-op, or runtime hash/cookie value is claimed. It would be dishonest to infer GO from the static prototype, from QEMU startup, or from build progress. Because the workload could not be measured credibly and repeatably, G11's explicit rule requires low-confidence STOP even though the 1 MiB static bound passes. ## Replay Ledger The authoritative command shape was: ```sh timeout -k 30 1200 tests/pre15/gates/P15-087.sh \ --base c7d692acf9166f5c5e42335db2de64f0793ba8a2 \ --output OWNED_OUTPUT ``` Existing evidence was retained long enough to hash and reconcile before repository cleanup: | Run ID | Result before any benchmark sample | |---|---| | `20260815T044720Z-G11-P15-087` | Superseded generator STOP: mkfs root remained flat-inline | | `20260815T044924Z-G11-P15-087` | `INFRA_BLOCKED`: 12 boot-time providers exceeded SSH deadline | | `20260815T045505Z-G11-P15-087` | `INFRA_BLOCKED`: FreeBSD did not enumerate PCI-hotplugged virtio-blk devices | | `20260815T050003Z-G11-P15-087` | `INFRA_BLOCKED`: guest benchmark declaration error | | `20260815T050520Z-G11-P15-087` | `INFRA_BLOCKED`: baseline KLD load did not reach workload | | `20260815T051933Z-G11-P15-087` | `INFRA_BLOCKED`: phased baseline KLD load did not reach workload | | `20260815T053543Z-G11-P15-087` | `INFRA_BLOCKED`: exact-basename baseline KLD load did not reach workload | | `20260815T054540Z-G11-P15-087` | Aborted on instruction; owned process group terminated and audited | Each completed QEMU ownership record reports that the owned port was free after cleanup, protected PID 26318 retained the same identity, protected port 9222 was not used, and `/work/build/vm-freebsd-build.qcow2.bp` retained inode, size, mtime, and ctime. The interrupted run used owned PID 1172175 and port 49845; both were absent after targeted process-group cleanup. Final process audit found only protected QEMU PID 26318. ## Semantic and Batch Consequences Runtime preservation of FreeBSD vnode, VM, locking, GEOM, errno, hash, and cookie behavior was not established. Correctness may not depend on readahead, so static plausibility is insufficient. P15-087 is STOP for Pre15, B12 remains absent, and no host feature case, K0 build, TC183 QEMU acceptance, or full feature suite is run. Rollback is the single gate decision commit; there is no source commit to revert.