Native COM owner-boundary acceptance — 2026-10-20
Accepted for the exact old source/module below. This report preserves completed native evidence; publication did not rerun native tests, rebuild, change source, access the runtime, or integrate main.
Tested identities
| Identity | Value |
|---|---|
| Source commit | ee139a0947c82e3a8eba4920508cb760d99882f5 |
| Module SHA-256 | 5e66c75862052b13b73f80bdcbcd67a1a65fd99d3e9e79d33f96548d00cc2a21 |
| Corrected fixture commit | b71d343012d9e9b12c4ca283ab0740cd6d7427b7 |
| Fixture path at that commit | test/test-com-native-owner-boundaries.js |
| Fixture SHA-256 | 90ccff8a0be806a4ceaf04f7415a8ec451fc623b4008562bc78a28a8c7b9342e |
| Execution environment | bx_6czhvg6m, Linux x64, Node v24.18.1, V8 13.6.233.17-node.50 |
The original run verified 6,438 source identities before and after execution;
module and fixture remained unchanged. Its runtime lease was released at
2026-10-20T14:31:57.198Z, with the runtime left running until its assigned
2026-10-20T15:53:12Z TTL. This is historical evidence, not a current lease.
Positive acceptance and actual controls
One corrected positive run exited 0: 126 completed x86 callbacks, 126
public bridge rows, maximum live depth 63, and 13 unchanged-state
rejections. The callbacks comprise 63 AddRefs and 63 Releases through
public registration/revocation and real storage-to-COM-wrapper execution.
The ABI oracle checks guest this, return sentinel, EAX, EIP, yield and
ret 4 cleanup before parent restoration. Rejections include stale slot,
stale epoch, and retired-child-against-sibling checks.
Three controls actually ran once each against that module:
| Control | Observed result |
|---|---|
| Public 64th-child overflow | Exit 0 for the expected rejection. Exported enter rejected the genuine public child with 63 children still live, zero completed callbacks and six unchanged-state rejection records. No synthetic unwind. |
| Bad return cleanup | Deepest AddRef deliberately used ret 8. Exit 1 at native ret 4 cleanup before restore; actual ESP 4292724 versus expected 4292720, callback index 62 at depth 63. |
| State-corruption sensitivity | After a genuine capacity trap, the observer deliberately changed EAX. Exit 1 at rejected exported operation changed state. This tests the oracle, not a production mutation. |
All four terminal receipts record absent process groups, no timeout, no signal and no log-cap termination. Transport completion is separate from the deliberately failing fixture exits.
The prior failed attempt remains preserved under
scratch/runs/20261020-com-native-owner-boundaries/; it is not acceptance.
Its extraneous region-map assertion was removed and its epoch-token oracle
tightened before these corrected runs. The earlier ten offline controls
remain prior evidence, not additional native executions.
Verification and scope
Evidence root: scratch/runs/20261020-com-native-after-recovery/.
The coordinator independently ran its verify.js successfully, recorded on
the append-only board at 2026-10-20T14:40:20+00:00: hashes, all 126 ABI rows,
13 preserved rejections and three controls passed. This publication reuses
that PASS and independently rechecks all 31 files in SHA256SUMS.json,
receipt/terminal acceptance fields, the fixture's Git identity and the
retained canonical module hash. No native test was repeated.
Unchanged-state checks cover the exported rejection: all 512 MiB shared memory and the observed registers/control state and exported arena fields. Storage cookie allocation precedes entry, so this does not promise that the entire public registration attempt leaves state unchanged.
No current-main qualification. This does not independently observe
private invocation globals or spill_desk_forced, and does not qualify spill
pressure/reclamation, races, serial exhaustion, arbitrary abort/yield,
public activation, gameplay or nonlocal readiness. The report's base on
main does not extend the tested source identity.
Recovery without archive duplication
Keep the existing ignored evidence in place. Git preserves this report and its hash anchors, not the ignored module/archive; no archive is duplicated by this task.
- Recover the fixture from the pinned fixture commit/path above with an
immutable
git show, then check its SHA-256 before use. The evidence also retains the identical bytes atrecovered/fixture.js. - Keep
receipt.json,SHA256SUMS.json,verify.js, all four transport receipts,postflight.jsonand therecovered/tree together.recovered/{positive,overflow}/result.jsoncontains success oracles;recovered/{bad-ret,state-corruption}/failure.jsoncontains the expected failures. Each mode also retainsterminal.jsonandoutput.log. - The existing
recover-transport.jsoncontains the encoded recovered files;run.jsrecords their decoding intorecovered/, original staging, bounded execution and recovery. Inspect these saved recipes before any recovery; running native modes requires a new assignment. - The canonical module, source manifest, source-staging receipt, environment
and build log remain under
scratch/runs/20261020-js-com-native-run/recovered/canonical-build/. The existingscratch/runs/20261020-js-com-native-run/recovery.json.gzis retained. Use its saved recovery machinery and immutable source identities; rebuilding is not evidence that the old binary was tested. - A later evidence-only check can run
node scratch/runs/20261020-com-native-after-recovery/verify.js. It reads saved results and checks their hashes/oracles; it does not execute the native fixture. This publication did not repeat that check.
SHA-256 anchors (paths relative to the evidence root unless stated):
| Artifact | SHA-256 |
|---|---|
SHA256SUMS.json |
45eeffdb427f744c3e01cad7344cc7cacb0ec973d899c72a5f2cf4bd2af29597 |
receipt.json |
45780b36c0c3de15c214b482109ce1279e5c982ed8d41cfdca43eee3653c59b1 |
verify.js |
53aac72378ef5f504d7dd10a82edbc52c01c9a16195d8732e6a061888ebc5530 |
recovered/positive/result.json |
e789e1ad7e5db2278dd39e27a1ab33e4cb8e87684e60aa1729ac82d7d7cd1d6e |
recovered/overflow/result.json |
c5c7db7e57bf5f18307434375ce9e97ecb825c744807f82df3d5386ea9557ba6 |
recovered/bad-ret/failure.json |
21449e431959e6bc582cb96bdfa79e06bc6934ca3d56cd6340655dd68bf360c6 |
recovered/state-corruption/failure.json |
d9221a10feeefa2bafb9aa97e82034057656d71d0760eac42e67291e6e32b20c |
Earlier canonical-build/source-manifest.json |
e395129c92310dfe2043f7c62faa8a4f71ec8ba1e168f9c290fd4ba7ce7adc57 |
Earlier recovery.json.gz |
e62bd6e27c56511a55f2d489aecb2ad9b23389033cf4009ffe51da24dfc2090a |
The original receipt's null report commit and publication-cap blocker are historical and remain unmodified. This later documentation task preserves the accepted result separately; it does not rewrite the original receipt.