Maelstrom halt-cause independent rejection, 2026-10-24

REJECT candidate 9fcd3188383b18756232580026840522a454358b. No main integration. The repair fixes the original false halt attribution, but violates this assignment's explicit requirement to reject JS-only watch conflicts before memory reads. With watchAddr=0x1000, WATCH_JS_ONLY=true, and WATCH_START_BATCH=0, actual transformed runner fragments invoke readGuestSized(0x1000) once before throwing the conflict error. Expected: zero guest reads before rejection. Actual: one watch read, zero main.run calls, zero diagnostic snapshots and rows. This is an ordering defect, not a claim that the repaired code still emits the old false breakpoint label.

The historical runner initializes activateWatchpoint and calls it immediately when WATCH_START_BATCH is zero. Its JS-only branch executes watchPrevVal = readGuestSized(watchAddr) >>> 0. The repair injects its rejection later, at diagnostic initialization immediately before the batch loop. The producer's test supplies readGuestSized: () => 0 without recording that call; its probe.reads records only guest_read8 diagnostic snapshots. Consequently its no-snapshot assertion passes while overlooking this earlier guest read. Enabled conflict validation must precede watch activation to meet the requested ordering. Disabled behavior must remain byte identical and preserve watches. No repair was made in this review.

The minimal reproducer executes only the actual transformed watch and initialization fragments. Default mode asserts the observed defect and exits 0; --acceptance-oracle requires zero reads and exits 1. The independent regression executes actual transformed watch/init/arm/run fragments and separately records JS watch reads and diagnostic reads. It passes the real-breakpoint positive (16 snapshot bytes), wrong-halt negative (zero snapshots, unresolved), target/non-target native-watch rejection, deferred-watch rejection, deferred JS-only rejection, disabled JS-only watch preservation, and an actual transformed-source guard-reverting mutation. Immediate JS-only rejection fails specifically at 1 !== 0 for watch memory reads. The reverting mutation restores the original 16-byte false snapshot and target-observed claim and is rejected by the acceptance oracle. No toy source substitute is used.

The original independent oracle and receipts remain untouched in their original donor. An exact copy is retained here. A separately named identity-only copy changes exactly one adapter SHA pin to the candidate hash. The original baseline oracle fails at its intended false-attribution assertion; the unchanged candidate oracle fails at its old hash pin; the identity-only candidate oracle reaches the explicit conflict error. All downstream original assertions were inspected: its old defect-presence assertions (16 reads and false EIP labels) are obsolete after explicit rejection. The new regression replaces them with conflict rejection, zero execution, zero memory reads, and zero diagnostic-label assertions; it retains positive and wrong-halt controls. Acceptance does not stop at the old hash pin.

Producer test freshly passes: seven mutations, ten missing/duplicate anchors, seven required exports, finite 10,000-batch no-hit, pacing/render/scheduler ordering, discarded run return, unchanged batch size 1000, disabled byte identity, and CLI controls. Full historical runner and exports match Git revision d8cd8c54c8d63c107696f1e4ef7a1e229dcadc1e byte for byte. Runner SHA-256 is 4d7b9587676db38fcf3314807acb2b2a42b5f09d2c98fcf3dccb8a6cde9e1809; exports SHA-256 is 739397dc54a77e93b367334fd4ca96c921180f57a7558913a3301f1de4520b86. Candidate adapter SHA-256 is d0f2ccd205be29c38598137f0c894486dc694f9de91b855852721b85f998b606. All 38 focused input Git blobs and 25 primary plus 23 recovery seals were verified. Nine unchanged earlier controls are reused, with no runtime replay. Exact identities and fragment hashes are adjacent; raw command/output/exit/time/memory receipts are in commands/.

Executable next-use recipe, from a checkout containing this report, using the immutable repaired donor (or a checkout of the exact candidate):

node --max-old-space-size=256 docs/re-notes/maelstrom-halt-cause-independent-20261024/js-only-minimal.cjs /tmp/maelstrom-boundary-halt-cause-repair-oct24/repo --acceptance-oracle
node --max-old-space-size=256 docs/re-notes/maelstrom-halt-cause-independent-20261024/acceptance.cjs /tmp/maelstrom-boundary-halt-cause-repair-oct24/repo

Both commands currently exit 1 on the substantive ordering defect. Removing the final acceptance flag from the minimal command reproduces and asserts the defect with exit 0. Helpers pin the candidate adapter hash and historical source identities. A future repair needs an explicitly reviewed new identity; do not edit this evidence to pretend it passed.

This branch contains only independent review, helpers and evidence, based on immutable main f879fd0cd81d918ea54a18b1b222fae25dd6d618. Candidate source/support files were inspected in an isolated sparse checkout and removed from this review-only commit after testing. No main refs are updated and no integration lock is needed for rejection. Publication and final scoped diff receipts are retained in /tmp/maelstrom-halt-cause-independent-integrate-oct24.

Resource receipts charge all new Git/source/temp/evidence, complete external session/events, positive SQLite/history growth, future allowances and 8 MiB reserve within 64 MiB; per-file ceiling is 24 MiB and host free floor is 2,982,150,144 bytes. Node heap is 256 MiB, CPU/wall limits 60 seconds, fresh MemAvailable at least 805,306,368 bytes. Strict dedicated SSH configuration is retained; mount argv is empty because there is no guest launch. The first setup attempt found an incorrectly guessed tier helper filename before checkout; the receipt-preserving same-task correction uses the existing tools/test-tiers.js. There was no access denial or retry of an unchanged denial.

No build, WASM/native instantiation, guest/browser/box operation, acquisition, deployment or worker launch occurred. Runtime reachability remains UNPROVEN and the historical zero-record cause remains UNKNOWN. Box ID/state/expiry: NONE; lifecycle owner remains the coordinator. No runtime follow-up is assigned by this review.