Maelstrom disabled select lifecycle repair — 2026-10-24
PASS offline implementation repair, pending fresh independent review. Started
from review 7fdbfc003ba8d41afa49b122ad0e8b8af1812d1e, tree
07392528b2305d7bf7acad1788e69b0e4cf76593; rejected candidate
0e1b2df6e3adff9ad43424966a389c2ea6af227e remains in history. Main integration
is reserved for a fresh reviewer. Task branch:
task/maelstrom-select-disabled-inertness-repair-oct24.
The lifecycle observer reads enabled first and reads/validates observation
limits only when enabled. Disabled creation does not enumerate options. Transform
returns the exact source before reading lifecycle or pin configuration. Enabled
transform reads its two required pins explicitly after lifecycle validation.
The accepted event observer is unchanged. Disabled wrapping returns the exact
instance without memory/export access; no guest or instantiate access is needed.
Before repair, the unchanged independent disabled-repro.cjs reproduced all three
throwing-getter failures and exited 1. Its fixed acceptance contract explicitly
asserts three failures, labels the candidate rejected, and unconditionally
exits 1. It is retained byte-for-byte as historical rejection evidence. Adjacent
maelstrom-select-disabled-inertness-repair-20261024-evidence/disabled-pass.cjs
repeats the same three calls, requires zero getter accesses, exact transform
identity, disabled instance identity and no output. It exits 0 on this repair
and exits 1 on the unchanged donor candidate. No inertness requirement was relaxed.
Both lifecycle and accepted event suites passed with the exact standing runner,
exports and scheduler pins. The original seven lifecycle and six accepted event
mutations still reject; two added lifecycle mutations restore eager disabled
observer/transform access and also reject (15 total). Regression tests cover
throwing getters for every limit, lifecycle, both pins and unused string/symbol
options; proxies reject enumeration and every property read except enabled.
Explicit false, missing and undefined enable flags all remain disabled. Poisoned
source/instance/memory proxies prove identity and absence of access. Enabled
invalid configuration still rejects before guest reads. Syntax and diff checks
pass. Exact commands, exit codes, captures, hashes and checkout identities are in
the adjacent evidence directory; operational publication/result receipts live in
/tmp/maelstrom-select-disabled-inertness-repair-oct24/ops/.
Existing caps, call matching, run return/exception identity, original invocation
counts and no-clear controls remain covered. Summaries retain witnessedReturns: 0,
API completion unobserved and API result unavailable. Cached tick behavior is
unchanged. This is fake-instantiate/static validation only; the exact invocation
completion hook runtime gate remains unresolved. The historical winsock source
identity receipt is retained unchanged; no native observer was requalified.
Admission includes all newly owned checkout/index/Git/evidence, launcher/session logs, full WAL, positive SQLite growth, future publication/transitive Git and an 8 MiB reserve within 64 MiB. Standing read-only tool/donor inodes were reused. Checkout uses explicit sparse paths and dependency-first flattened alternates; no fetch, clone, repack or object-store copy. No mounts or mount filenames exist in this offline task; the unchanged trusted SSH configuration receipt is reused. CPU/wall 60 s, Node heap 256 MiB, output 128 KiB, files 24 MiB and process-group TERM/KILL/reap within 5 s remain enforced for task commands.
Retained setup failures: the first reproduction could not load the required head
observer dependency; its verified unchanged blob was then sparsely materialized
before reproduction. An accounting helper initially named resource.py shadowed
Python's standard module, preventing four syntax/diff subprocesses from starting;
renaming it account.py restored the same limits and all checks passed. These were
internal setup errors, not access denials. A bounded board watcher ended at its
50-second deadline (exit 124) and was reaped. Historical receipts remain intact.
No real WebAssembly instantiate/compile, native/guest execution, download, box,
deployment, worker, independent review or main integration occurred. Root tracked
files/index/refs and all donors stayed read-only; only root append-only messageboard
updates were made. No box assigned: coordinator reports bx_qa9ex5bu stopped;
bx_69aem736 was untouched. Claude idle. Final commit/tree/actual remote SHA,
resource and cleanup receipts are in ops/result.json.