Maelstrom early watch conflict repair, 2026-10-24
The enabled adapter now rejects watchpoint conflicts before the historical runner activates any immediate watch. Validation is injected immediately after let watchActive = false, before activateWatchpoint is defined or called. The former loop-time guard is removed. Native, JS-only, immediate and deferred watch configurations receive the same explicit conflict error; no watch is silently disabled. Disabled transformation returns the original runner byte for byte.
Input main is f879fd0cd81d918ea54a18b1b222fae25dd6d618; repaired predecessor is 9fcd3188383b18756232580026840522a454358b; independent rejection is 494d4115166a0d23aaa5efc7a92fe7195dcd7932. Historical runner and exports gzip snapshots were compared byte for byte against immutable Git d8cd8c54c8d63c107696f1e4ef7a1e229dcadc1e. Exact sizes, SHA256 identities, independent Git blob manifest, adapter hash and identity-only patches are adjacent. The independent report, helpers and failure receipts are copied unchanged into their original maelstrom-halt-cause-independent-20261024 paths; originals in the immutable donor were never edited.
The independent acceptance and minimal --acceptance-oracle both exit 0. Each new helper differs from its independent original by exactly one adapter SHA256 literal. All assertions, including actual transformed-source reverting mutation, remain unchanged. Historical candidate labels in their JSON remain unchanged too: the new adapter hash and input receipt identify the tested repair. The minimal case reports zero watch reads before rejection, zero main runs, and the explicit conflict error. Acceptance records watch reads separately from diagnostic snapshot reads, and all five conflicts have zero reads, runs, breakpoint arms and rows. Actual breakpoint positive still reads 16 snapshot bytes; wrong halt remains unresolved without snapshot reads. Disabled JS-only watch still reads its original address once and runs normally.
The producer regression now records watch reads separately and tests six conflict configurations, including non-target and deferred JS-only. A mutation of the actual transformed runner moves validation back to its previous late position: it demonstrably reads 0x1000 once before rejection, with zero diagnostic reads, rows or runs, and fails the conflict oracle. Removing the guard also fails acceptance. Original seven mutation controls, ten missing/duplicate anchor controls, seven missing exports, 10,000 finite no-hit batches, breakpoint readback, wrong halt, batch size 1000, discarded run return, suspension, render/pacing/scheduler ordering and CLI controls pass. The entire transformed runner parses; executable tests use exact transformed historical fragments with controlled JS exports, with no guest instantiation. Historical input/pacing/batch/max code is unchanged by this repair.
Commands from the checkout (all executed with 256MiB Node heap, fresh MemAvailable >=805306368, CPU/wall 60 seconds):
node --max-old-space-size=256 test/test-maelstrom-breakpoint-boundary-audit.js
node --max-old-space-size=256 docs/re-notes/maelstrom-early-watch-conflict-repair-20261024/acceptance.cjs /tmp/maelstrom-early-watch-conflict-repair-oct24/repo
node --max-old-space-size=256 docs/re-notes/maelstrom-early-watch-conflict-repair-20261024/js-only-minimal.cjs /tmp/maelstrom-early-watch-conflict-repair-oct24/repo --acceptance-oracle
All exit 0; exact command/time/memory/output receipts are in commands/. The hash-pinned enabled transformation also validates a unique watch activation anchor. No historical original was changed. The focused branch carries the prerequisite unmerged adapter/support plus this repair and evidence; it is not merged to main.
Measured admission was 42,916,579 bytes including focused checkout/Git, source/temp/evidence, full external session/events, positive SQLite/history future growth and 8MiB reserve within 64MiB. Final resource, publication, final diff, recovery and cleanup receipts are in /tmp/maelstrom-early-watch-conflict-repair-oct24. All newly copied inputs are charged, standing read-only tools/donors are separate. Git emits inherited deep-alternate warnings while resolving the retained donor graph; focused objects resolve successfully, and warnings are retained. No access denial occurred. Dedicated trusted SSH is unchanged. No guest mount argv exists, so mount parsing is inapplicable; no runtime operation is authorized.
No main integration, build, WASM/native instantiation, guest/browser/box operation, acquisition, deployment or worker launch occurred. Box ID/state/expiry: NONE; lifecycle owner remains coordinator. Runtime reachability remains UNPROVEN. Historical zero-record cause remains UNKNOWN; no runtime or networking attribution is claimed.