ReviewOS

home-lang/home

Bun corpus: finish native inspector realm object routing and lifetime

#888
Open chris opened this 8 days ago ·
8 days ago

Native console methods, buffered replay and cleared-realm lifetime (2026-10-13) landed in source 56df99d7f, merged integration be4364972, and verified evidence de6aea239. Canonical SDK records provide count/reset, typed timeLog/timeEnd and per-session buffered replay with actual stacks/timestamps. Owner attachment differs from VM console state; Runtime.disable suppresses notifications while preserving connected state. groupEnd/clear arguments match the native contract. Clearing the buffer and remote group now retires idle realm injected-script roots; actual still-bound handles, pending calls and paused debugger state prevent retirement. Unrelated object handles and an in-flight async call remain usable. Last frontend detach retires injected-script state, and the non-owning console registry retires across finalization threads. Both source and merged builds pass 56/56 steps; fresh merged validation passes all nine focused commands, six broad drivers, 33 native groups, seven Node/seven Home realm controls, 14 ABI tests/453 assertions and 32 report-validator tests. All 64 report outcomes match expected counts/errors/exits, including twelve negatives. Twenty unchanged originals retain 53 passed cases, one unchanged unsupported-method expectation failure and 17 passed process checks, with zero skips/TODO/filter/retries; #886 receives no pass credit. Failed Node oracle assumptions, the Home post-clear lifetime failure and resource stops remain immutable; temporary tracing is removed. Full schema, independent remote-object/session ownership, evaluated-realm retirement outside explicit console clearing, module/export/callback/owner-shutdown acceptance and full suite/platform validation remain open under #888/#428/#885/#66.

Earlier investigation

Native inspector VM realm enumeration/evaluation and metadata disable/re-enable now pass focused controls on the recovery implementation. The following ordinary two-realm remote-object control aborts at address 0x10; its native crash report identifies Home::unwrapInspectorObjects (+280). Ordinary parameters without objectId query populated WTF string maps with a null key.

Verified evidence preserves the completed 56/56-step Debug build, four passing Node controls, two passing Home controls and the separate object abort. Null-key guards and maintained regressions are preserved on recovery source aac562b7c; they remain unverified and excluded from main.

Reference correction: Node v26.10.0 rejects a remote object argument from a different execution context with -32000 (Argument should belong to the same JavaScript world as target object). The initial success expectation and draft object-transfer bridge were incorrect. Corrected controls are queued; the completed null-key/context-ID build remains pinned separately. See control evidence.

Acceptance criteria:

  • Validate the unchanged two-realm object control against a normally rebuilt repaired executable; preserve the original abort evidence.
  • Route real remote objects, same-world arguments, properties, exceptions and object groups to their owning native realm without cross-realm ID collisions. Reject foreign-world object arguments with the Node inspector -32000 error; do not transfer them between globals.
  • Keep owner evaluation functional after remote-object maps are populated; propagate actual backend errors and asynchronous replies.
  • Verify native controller roots, context retirement, frontend disconnect and worker/owner shutdown; do not retain dead realms merely to make routing succeed.
  • Pass maintained realm/profiling regressions, required unchanged originals, native groups and ABI/report gates before landing source.

Inspector parent: #428. Full Bun parity: #66. Evaluated-context retention: #885. Existing original inspector expectation conflict: #886.

8 days ago

Recovery follow-up 311f18d42 adds native execution-context parameter validation to the remote-object guard batch. Previously malformed context IDs could fall through to owner evaluation. Supplied string/null/fractional/out-of-range IDs now produce -32602 parameter errors before dispatch; unknown integer identities retain the separate missing-context error. Maintained regressions and an ordinary Node/Home comparison control are prepared, and Pickier reports zero findings.

The normal native build remains queued behind a confirmed live shared qualification run. These changes remain unverified and excluded from main; no new pass credit. Continue with the same queued build, then focused controls and the required original/native/ABI/report batch. Parent tracking: #888 / #428 / #66.

8 days ago

Recovery follow-up 0d4df1f1f drafts actual cross-realm object arguments. Per-realm JSC controllers can issue identical native object IDs, so merely stripping the public realm prefix can select the wrong object. The owned controller registers its actual InjectedScriptManager; argument routing retrieves the real source JSValue with findObjectById and wraps that value in the target injected script. Controller destruction retires the registry entry, with globals protected and GC deferred during transfer. Public SDK/class layouts remain unchanged.

A maintained callFunctionOn assertion requires two realm objects to sum to 83, and a focused Node/Home control additionally checks object-group release. These remain unverified. The current live build captured the preceding null-key/context-ID batch before this bridge was added, so bridge success requires a normal follow-up build rather than attributing the older executable to newer source. Full focused/native/original/ABI proof and controller lifetime work remain under #888 / #428 / #66.

8 days ago

The preserved null-key/context-ID snapshot (311f18d42) has now completed its normal Debug build: 56/56 steps, peak tree footprint 5649 MB. Its generated inspector headers were compared byte-for-byte against that source commit. The focused controls are queued behind a confirmed live shared module-gates run and are pinned to a hash-verified copy of this completed executable, so a later install cannot change the measured baseline.

The follow-up build for cross-realm bridge source 0d4df1f1f is queued separately under the same resource guard. There is still no new runtime pass credit for either the null-key/parameter batch or the bridge. The earlier metadata passes and object abort remain separately retained. Tracking: #888 / #428 / #66.

8 days ago

The initial cross-realm control assumed Runtime.callFunctionOn accepts an object handle from another execution context. Node v26.10.0 rejected that ordinary request with inspector error -32000: Argument should belong to the same JavaScript world as target object. The control stopped before running Home, so its exit does not establish a Home runtime failure.

The expectation is corrected to require that rejection and to retain checks for separate realm object handles, group release, and usable VM contexts after session disconnect. The draft bridge snapshot 0d4df1f1f3abaf8a5693cabd10b74566eb8cad3c therefore does not establish the intended compatibility behavior; its active build will be retained as evidence, then routing will reject foreign-world arguments instead of transferring objects. The completed null-key/context-ID build remains pinned for its own controls.

Realm routing and lifetime acceptance remain open in #888; this does not establish Bun-suite parity.

8 days ago

The draft bridge build completed normally: 56/56 steps, peak process-tree footprint 5633 MB. Its snapshot remains 0d4df1f1f; this is compilation evidence only.

Corrected reference controls all pass on Node (six controls, including foreign-world argument rejection and same-world success). Against the pinned 311f18d42 null-key/context-ID executable, Home passes realm enumeration/evaluation and metadata disable/re-enable. The ordinary object control now exits 1 with a JavaScript TypeError because the property response lacks the CDP result array; the prior native abort is not reproduced. Later Home controls did not run after that failure.

The pinned SDK declares JSC Runtime.getProperties output as properties. Recovery 6e08014c7 adds request-method-aware translation to CDP result, rejects foreign-world object arguments in owner/realm directions, removes the incorrect object-transfer bridge, and tests same-world success. Its normal rebuild is queued; a raw response diagnostic is queued separately. No new runtime success is claimed for this source.

Raw build/control logs and input hashes remain in zig-out/inspector-metadata-repair-2026-10-13. Realm lifetime acceptance in #888, inspector acceptance in #428, and full Bun parity in #66 remain open.

8 days ago

Published the completed inspector build/control checkpoint on main in 2bd4f8c9c. The manifest preserves 30 raw artifacts, verified by decompression/SHA-256 replay. Documentation paths passed (269 files).

Two normal Debug builds completed 56/56 steps. Corrected Node controls: six passed. Pinned null-key Home controls: two passed, one failed with missing CDP property array, later controls not run. The prior native object abort did not recur in that control. The earlier incorrect foreign-world success expectation is preserved beside the corrected rejection/same-world control.

Repair 6e08014c7 remains separate from main runtime source pending its queued normal rebuild and runtime checks. Its raw-response diagnostic and rebuild are confirmed live behind another bounded validation job. #888 realm routing/lifetime, #428 inspector acceptance, and #66 full parity remain incomplete.

8 days ago

The queued raw-response diagnostic and repaired build both terminated with exit 127. Their executable/toolchain inputs were missing when they could run; zig-out and .zig-cache had been removed. This is an infrastructure failure, not runtime or compilation pass evidence. The removed live logs are unavailable.

All eight source files still match pushed recovery 6e08014c7. Thirty immutable completed-build/control artifacts were recovered and hash-verified from the main checkpoint. The source checkout has been synchronized to main 84ae6fd71 while preserving every repair file. The exact pinned Zig 0.17.0-dev.2163+89ff10d archive has been downloaded from ziglang.org; extraction is running. A normal rebuild will follow toolchain restoration. The pinned baseline binaries were also removed, so the original diagnostic cannot run until an executable is normally rebuilt.

#888 and #428 validation remain open; no new runtime credit or full Bun parity is claimed in #66.

8 days ago

The restored normal Debug build for recovery 6e08014c7, applied to main base 84ae6fd71, completed 56/56 steps with peak process-tree footprint 5876 MB. Generated realm headers match the pushed repair source byte-for-byte, and the resulting executable SHA-256 is recorded separately.

Focused controls for properties, argument worlds in both directions, metadata and malformed/unknown context IDs are queued behind a confirmed live bounded validation job. No runtime pass credit yet. The broader original/native/ABI/report drivers were recovered from committed, hash-verified evidence and are prepared for execution after focused controls pass.

The two earlier exit-127 jobs remain infrastructure failures with no pass credit. #888, #428 and the full Bun parity goal #66 remain incomplete.

8 days ago

Focused validation now passes for recovery 6e08014c7 on the restored normal build (main base 84ae6fd71): seven Node controls and seven Home controls, all exit 0. The executable SHA-256 matches the completed 56/56-step build identity.

Validated: named realm enumeration/evaluation, metadata disable/re-enable, distinct remote handles and own properties/release, single metadata getter reads and explicit empty names, malformed/unknown context-ID command errors, foreign-world argument rejection, and same-world arguments across realm/realm and owner/realm directions. The previously failing ordinary object control now passes unchanged. The maintained native-profiling-cli.test.mjs regression also exits 0.

The broader unchanged-original selection, 27 additional native groups, ABI and report-validator checks are running as one bounded batch. Full suite parity, controller roots/retirement and complete inspector behavior remain incomplete; #888 and #428 stay open. No full Bun parity claim for #66.

8 days ago

Native VM inspector realms (2026-10-13) landed in source 2d9025ce5 with verified evidence 3179edc81. Real VM contexts preserve names/origins/native identities; evaluation, distinct remote handles, own properties and release route to the owning JSC controller. Foreign-world arguments receive the Node inspector error; same-world arguments retain native identity. Native property responses translate to CDP result using the request method. Missing metadata/null-key guards prevent the earlier ordinary-control aborts. Debug build and current-main integration: 56/56 each, identical tested executable. Seven Node and seven Home controls, 28 native groups, 14 ABI controls/453 assertions, 32 report-validator controls pass; lint/format/docs checks pass. Twenty byte-identical originals retain 53 passed cases, one failed unsupported-method expectation and 17 process checks, with no skips/TODO/filter/retries. All 64 report outcomes match expected counts/exits/errors, including 12 retained negatives. No #886 pass credit. Earlier aborts, incorrect cross-world expectation, baseline property failure and two infrastructure exits 127 remain documented. #888 retains controller roots/retirement, complete backend/async schemas and teardown; #428 retains full inspector acceptance. Full Bun suite, Release/ASAN, Linux/Windows and #885/#886 remain incomplete.

The 479 raw evidence artifacts have verified uncompressed hashes/byte counts. Both commits are pushed to main; the source checkout is clean and synchronized at publication. This is a validated increment, not full inspector or Bun-suite completion.

8 days ago

Next related inspector batch: native promise metadata/handle routing and accessor-only property requests. On current main, the initial Node controls pass while both Home controls fail. A bounded raw-response diagnostic confirms JSC returns a Promise with no CDP promise subtype, Runtime.awaitPromise receives the exposed realm ID without routing/unwrapping and reports -32000 missing injected script, and accessor-only requests include data properties. The diagnostic returned normally.

Recovery 1cb8ce849 classifies promises from the actual injected native JSValue, routes/unwraps promiseObjectId using the owning realm, filters real native getter/setter descriptors for accessorPropertiesOnly, and rejects non-boolean flags with -32602. A maintained regression adds class-name spoof protection, async function replies, pending-await session closure, and getter non-evaluation checks. Lint passes.

The strengthened baseline controls are pinned to the current main executable; they and the normal draft rebuild are queued behind a confirmed live bounded job. No repaired build/runtime pass credit yet. Earlier validated source/evidence remain on main at 2d9025c/3179edc. #888 and #428 retain complete schema/lifetime acceptance; full Bun parity in #66 remains incomplete.

8 days ago

The strengthened baseline is now hash-verified: both Node controls pass, both controls fail on the pinned main Home executable. The normal draft build found a concrete SDK namespace error (JSC::dynamicDowncast); the compiler exited 1 for that unit. The owned failed build was stopped through its guard (exit 130), preserving the log and giving it no build/runtime pass credit.

Recovery bb57ac090 uses the SDK WTF native cast with an empty-value guard. It also corrects a schema boundary found during review: CallArgument.value and returned RemoteObject value payloads are user JSON, so their literal objectId/promiseObjectId fields must not be rewritten or classified as handles. The maintained regression now checks these fields across owner and VM realms.

A separate pinned payload baseline plus Node maintained regression, and the corrected normal build, are queued. Lint passes; source is preserved on the recovery branch. Complete runtime validation, #888/#428 acceptance and full Bun parity in #66 remain incomplete.

8 days ago

Published baseline evidence 42d7692fa on main: 20 hash-replayed terminal artifacts, two strengthened Node passes, two pinned Home failures, the ordinary raw response diagnostic, and the draft cast compile error with the separate guard stop (130). Documentation paths passed (273 files).

The corrected source remains recovery bb57ac090. Its normal build and separate payload baseline/Node maintained regression are still confirmed live and queued behind a bounded validation job. This checkpoint credits no repaired build/runtime success. #888/#428 acceptance and full Bun parity in #66 remain incomplete.

8 days ago

The payload baseline and corrected inspector build both terminated with guard 125 after eight unavailable physical-footprint measurements. Only the Node payload control had printed exit 0 before its batch stopped; remaining outcomes were unproven. Three direct footprint(1) probes each exceeded the existing two-second deadline. No repaired inspector pass credit.

Published guard fix 2d0ee965c and 25 hash-replayed evidence artifacts on main. It queries macOS kernel ri_phys_footprint through libproc without VM-map traversal. It keeps the same deadline, failed-sample limit, memory/host/disk ceilings and cleanup; unavailable measurements are not replaced by RSS or zero. The legacy probe remains available when helper compilation is unavailable.

Three native probes returned valid readings in 7–96 ms; a 64 MiB allocation increased physical footprint by 67,174,448 bytes. The guard enforced the 32 MB memory ceiling. Existing parser, stalled-probe/deadline/cleanup, positive runs and six disk/scanner controls pass. Documentation paths passed (275 files). Initial test assertion/invocation errors and both inspector resource stops remain in evidence.

Main is synchronized with all four inspector repair files preserved at recovery bb57ac090. The pinned baseline and normal corrected build have been resumed under the repaired guard, with separate logs. #888/#428 validation and full Bun parity in #66 remain incomplete.

8 days ago

The inspector retry after guard publication still did not validate the repaired runtime. Its pinned baseline was refused with 123 because disk availability could not be measured; the normal rebuild stopped with 125 after eight unavailable memory measurements. Both stops receive zero repaired-runtime/build pass credit.

The published physical-footprint guard remains validated independently in 2d0ee965c. Additional process/disk/kernel probes are still live. A proposed direct filesystem-availability helper remains unverified: its compiler command exceeded a 30-second bound on the shared machine. No thresholds or deadlines were relaxed, and the unverified helper is not selected by the guard.

Recovery bb57ac0 and main evidence 42d7692 remain preserved. #888/#428 validation and full Bun parity in #66 remain incomplete.

8 days ago

Published kernel process discovery 1f120e246 with 31 verified evidence artifacts. Complete native PID/parent/group/start-time snapshots avoid stalled ps argument inspection; final probes took 3.6–9.1 ms. Exec-stable identity, detached-child terminal cleanup, legacy stalled-probe/deadline cleanup, memory ceiling, parser and six disk controls pass. Limits and failure behavior remain enforced.

With that guard, inspector recovery bb57ac090 completed a normal 56/56-step build, peak tree footprint 5734 MB. Three focused controls pass on both Node and Home: actual promise metadata/realm await and async function result, accessor-only descriptors/validation without invoking getters, and literal object-ID fields preserved as user JSON in owner/realm values. Six successful runtime executions; this does not establish full acceptance.

The extended Node regression exposed an incorrect teardown expectation: pending Runtime.awaitPromise is rejected synchronously during disconnect with ERR_INSPECTOR_COMMAND (-32000, Execution context was destroyed), and reconnecting inside that callback reports already connected. Home instead delivered ERR_INSPECTOR_CLOSED afterward and allowed that reconnect. Both ordinary traces are preserved.

Recovery acb1a1600 implements explicit frontend runtime cancellation through the protocol callback path and retains connection ordering during delivery. GC/owner teardown keeps the no-JavaScript path. The maintained regression now follows the observed Node error and callback/reconnect ordering. Its Node reference run and normal rebuild are queued; zero runtime pass credit for this newer source. #888/#428 and full Bun parity in #66 remain incomplete.

8 days ago

The corrected maintained inspector regression now passes on Node (exit 0, exact source SHA-256 verified). It checks realm promise metadata/await and async function replies, accessor descriptors without getter execution, literal handle-shaped user JSON, pending-runtime cancellation error, callback-before-disconnect-return ordering, already-connected rejection during that callback, and successful reconnection afterward.

The normal build for recovery acb1a1600 has acquired the machine lock and is actively compiling. Home validation for this newer cancellation source remains pending. Earlier recovery bb57ac0 has the completed 56/56-step build and six passing focused runtime executions; those results do not credit the newer source. #888/#428 acceptance and full Bun parity in #66 remain incomplete.

8 days ago

The promise/accessor/payload/cancellation batch now passes on the normally rebuilt Home executable from recovery source acb1a1600. Debug: 56/56 steps. Three focused controls pass on Node and Home; the maintained regression passes on both, and pending-command cancellation has an identical Node/Home trace, including synchronous callback order and reconnection state.

Broader verification passed: seven earlier realm controls on each runtime; 29 native groups in total; 14 ABI tests / 453 assertions; 32 report-validator tests. Twenty unchanged upstream originals retain 53 passed cases, one failed unsupported method throws expectation (#886), and 17 process checks with zero skips/TODOs/filters/retries. All 64 archived report outcomes match prior expected counts/errors/exits, including 12 negative outcomes. No pass credit for #886.

Source is committed locally; the current-main integration build is queued on the shared machine lock before publication. Controller roots, retirement, complete backend schemas, native pending-producer lifetime, full inspector acceptance and all-platform/full-suite parity remain open.

8 days ago

Native inspector promises, descriptors and cancellation (2026-10-13) landed in source 7acfeeb1e with verified evidence 928576ed5. Real promise handles route to their VM realm; async function replies, accessor-only descriptors and literal JSON payloads pass. Explicit disconnect preserves Node cancellation errors, callback order and reconnection state; GC/owner teardown executes no JS callbacks. Debug and main integration: 56/56 each, identical tested executable. Three async controls and seven earlier realm controls pass on Node and Home, maintained regression passes on both, and cancellation traces match. All 29 native groups, 14 ABI tests/453 assertions and 32 report-validator tests pass; lint/docs paths pass. Twenty unchanged originals retain 53 passed cases, one failed unsupported-method expectation and 17 process checks, with zero skips/TODOs/filters/retries. All 64 report outcomes match expected counts/errors/exits, including 12 negatives. No #886 pass credit. #888 retains roots/retirement, full backend schemas and pending-producer lifetime; #428 retains complete inspector acceptance. Full Bun suite, Release/ASAN, Linux/Windows and #885/#886 remain incomplete. Earlier failures and corrected reference expectations remain archived.

Source and all 454 raw evidence artifacts are published on origin/main. The full parity goal remains open.

8 days ago

The next inspector baseline is preserved on main in evidence 5971c13e9, using the unchanged verified async/property/cancellation executable.

Two controls expose remaining gaps. Node emits the console event from VM-realm evaluation with the correct context ID; Home emits none. With a realm created before Runtime.enable and observed by both sessions, Node collects the unreferenced context and emits its destruction event, while Home retains it and emits no destruction. The initial probe also shows Home omitting creation notifications for contexts created after Runtime.enable. All raw traces and drivers are retained. These are baseline command exits, not acceptance passes; no runtime fix or parity credit is claimed.

This supplies the next paired work in #888: native notification delivery and controller/realm lifetime. Full inspector acceptance remains #428 and full Bun parity remains #66.

8 days ago

Context creation timing and retired-handle cleanup are implemented in recovery source 49396536b, pending native validation. Creation events drain on the owner thread before createContext returns; retirement removes the realm frontend and exposed/native object maps on the owner loop. A Node-backed maintained control passes creation timing, disable/re-enable and callback-driven disconnect/reconnect.

The normal Home build is queued behind a confirmed live shared-machine validation job. No Home pass or main source credit yet. Console notifications and native controller/injected-script roots remain open; prepared collection variants distinguish general VM retention from inspector attachment before changing lifetime behavior.

8 days ago

Additional baseline probe refines the creation-notification finding: the published Home executable delivers the event after one setImmediate, before a later inspector command. The initial missing realm ID was an immediate lookup and does not prove events never arrive. Node delivers the notification before createContext returns; recovery 4939653 targets that timing difference. The observed pre-enable realm still remains alive in the Home collection trace while Node collects it. Console notification and lifetime acceptance remain open.

The recovery build has acquired the machine lock and is actively compiling. No Home validation credit yet.

8 days ago

Recovery 49396536b now builds normally (56/56 steps) and passes the Home creation timing/disable/re-enable/callback-detachment control, maintained async/cancellation and profiler controls, plus seven earlier realm controls on Node and Home. Broader corpus/native/ABI/report gates are running before main publication.

The lifetime variants refine the root investigation: Node collects the dropped sandbox in all four modes (no session, enabled, evaluated, detached); Home retains it in all four, including no inspector session. This shows general VM retention (#885) must be traced alongside inspector/controller roots; removing frontend roots alone cannot establish lifetime parity. Raw variants and conclusions are retained without collection pass credit. Console event delivery remains open in #888.

8 days ago

Context-event source passed its normal build and focused/broader checks before integration. Concurrent main changes merged cleanly, but the combined executable changed; fresh validation exposed one failed native gate. All source and merged investigation evidence are preserved on codex/inspector-context-events-integrating while main publication is held.

Merged build: 56/56. Focused context/async/profiler/realm controls pass. Native broad run: 26/27 pass; native-fetch-resource-timing.test.mjs fails because canceled streamed fetch has no timing entry within its original deadline. A logging-only diagnostic subsequently passes, but does not replace that failure. Separate ABI 14/453 and validator 32 pass. Unchanged originals retain 53/1 cases plus 17 process checks; 64 reports preserve all expected outcomes including 12 negatives.

A returned-scope probe confirms Home retains an unreferenced context without inspector, while Node collects it. Collection/console/controller/backend acceptance remains open; no merged-main or full parity credit. Next action is to resolve the cancellation timing race before publishing this source increment.

8 days ago

Native fetch cancellation and inspector context events (2026-10-13) landed in source 85a079965 with verified evidence bef919e3f. Unread native streams cancel their existing source without starting/pulling; explicit response cancellation terminates HTTP; actual abort terminal milestones publish one resource entry. Signal abort and withheld-body cancellation controls pass, and the original 20ms timing assertion is unchanged. Context creation notifications now arrive before createContext returns, including callback-driven disconnect; retirement removes exposed/native handle maps. Normal build: 56/56. Entire published main tree is identical to the normally rebuilt validated recovery tree. Six focused controls, 31 native groups in total, seven Node/seven Home realm controls, 14 ABI tests/453 assertions and 32 report-validator tests pass; lint/format/docs checks pass. Twenty unchanged originals retain 53 passed cases, one failed expectation and 17 process checks, with zero skips/TODOs/filters/retries. All 64 report outcomes match, including twelve negatives; no #886 credit. Earlier merged timing failure and unread-cancel failure remain archived. Additional integration build is queued and uncredited. #873 retains full timing/protocol/body-size policy; #885/#888/#428 retain VM collection, console/controller roots and full backend/retirement/teardown. Full Bun suite and Release/ASAN/Linux/Windows remain incomplete.

Source, initial context-event evidence, merged-main failure evidence and final cancellation evidence are all preserved on origin/main. Native retirement completion remains unproven because general VM collection still fails; map cleanup is an implemented increment, not a lifetime acceptance claim.

8 days ago

The additional fetch cancellation integration completed 56/56 with identical validated executable bytes; evidence is published in 0a72ebe. New inspector baseline narrows the next gaps: ordinary WeakRef targets collect on both Node and Home, while the VM sandbox remains retained. Native Console.enable still produces no console events in Home.

A Node-backed console regression passes owner/realm events, real remote object properties, Runtime.disable and independent sessions. Recovery source 658f2cdf7 owns the native console agent/client bridge and routes native wrapped arguments, timestamps and context IDs without changing public ABI headers. Home validation is pending. The active build reports missing generated cache inputs; those directories are outside the recorded cleanup set. Source is preserved remotely; failed build receives no credit. Once terminal, a consistent derived-cache rebuild will run.

VM retention, complete console/backend schema, controller roots, retirement and full inspector acceptance remain open in #885/#888/#428. Full Bun parity remains #66.

8 days ago

The first fresh-cache console build compiled but failed linking with duplicate InspectorConsoleAgent symbols from the SDK unity object. That failure is retained; no Home pass credit. Revised recovery b67038130 removes the SDK-agent replacement and uses a Home console client that forwards real arguments through canonical native wrapping while delegating SDK behavior. Public ABI headers remain unchanged.

The revision also gives each NodeVMGlobalObject its own Structure, preserving the template prototype. JSC mutates that structure's realm during global initialization; the prior cached parent structure has a heap path retaining the VM global. Node controls pass dropped-context collection, announced unused-realm destruction and live-context usability. Home validation remains pending. The old executable is separately pinned for the multiple-context baseline, so queued rebuilding cannot overwrite its evidence.

Normal revised build is queued behind a confirmed live shared-machine job. Full console methods/schema, remote-object/controller lifetime and complete inspector/all-platform/Bun-suite acceptance remain open (#885/#888/#428/#66).

8 days ago

Revised recovery b670381 built successfully: normal Debug 56/56 steps, peak guarded tree 5653 MB. The SDK symbol duplication is resolved through a Home console client that delegates existing SDK behavior; public ABI headers remain unchanged.

The separately pinned old Home executable confirms the cached-structure prediction: with two dropped contexts, Node reports [false,false] for WeakRef liveness while old Home reports [false,true], retaining only the last realm. This matches the main-global -> Structure -> VM-global heap path and JSC's per-global setRealm initialization. The fresh per-global structure implementation is built, but repaired Home collection/console acceptance is still queued behind a confirmed live machine validation job. No new Home pass credit yet.

Earlier missing-cache failures, disk admission refusal, copied-baseline permission failure and SDK-link duplication remain retained. Full remote-object/controller lifetime, console methods/schema, teardown and full inspector/all-platform/Bun-suite acceptance remain open (#885/#888/#428/#66).

8 days ago

Investigation evidence 8544a0330 is published on main, including the completed 56/56 revised build, source/executable identity, pinned last-context retention baseline, native heap path, Node controls, and all infrastructure/link failures.

Implementation remains preserved in recovery b670381 pending Home acceptance and broader gates. The exact built-source/executable snapshot is verified; its acceptance job is queued behind the confirmed live shared-machine validation job. No repaired Home collection/console pass credit or full parity claim yet.

8 days ago

Repaired Home source b670381 passes dropped-context collection and owner-loop destruction of an announced unused realm. The separately pinned earlier executable retains only the last dropped context; the repair reports both collected. Five byte-identical earlier lifetime controls now pass: all array/fill/map/Math contexts collect in both orderings, payload measurement reports zero leftover contexts, and retained closures/compiled functions remain callable; Script reuse still works.

The console control passes owner/realm events and native object properties but fails synchronous delivery to the second connected session. Recovery a1f71644d drains each enabled local frontend during native console delivery. Its normal rebuild is active. The unchanged original lifetime assertion was recovered for the next batch; broader gates and full lifetime/console acceptance remain pending.

No console pass credit for the failed multi-session control. Full Bun/all-platform parity remains open; source is preserved remotely while verification continues.

8 days ago

Native console delivery and VM structure lifetime (2026-10-13) landed in source 7cfff1c01, integrated with current main in e37bbf2, with verified evidence 4852a2330. Each VM global has its own Structure; the parent-cached structure retained the last context because JSC writes its realm during initialization. Old Home retains [false,true]; Node and repaired Home collect both. The unchanged original lifetime assertion passes, including zero leftover measured contexts; five earlier controls preserve callable closures/compiled functions and Script reuse. Announced unused realms retire on the owner loop. Native console events preserve actual arguments/object handles, timestamps, frames and owning context IDs; Runtime.disable and synchronous delivery to independent local sessions pass. Callback GC/reconnection passes. Normal and merged builds: 56/56 each. The changed merged executable received a fresh validation batch: eleven focused commands, 33 native groups, seven Node/seven Home realm controls, 14 ABI tests/453 assertions and 32 validator tests pass; lint/format/docs paths pass. Twenty unchanged originals retain 53 passed cases, one failed expectation and 17 process checks, with zero skips/TODOs/filters/retries. All 64 report outcomes match, including twelve negatives; no #886 credit. Earlier failures remain archived. #885 retains full module/export/callback/shutdown lifetime acceptance; #888/#428 retain complete console/backend schema, remote-object/controller roots and inspector retirement/teardown. Full Bun suite and Release/ASAN/Linux/Windows remain incomplete.

Source and 771 raw artifacts are published on origin/main. The goal remains incomplete; full lifetime, inspector and all-platform/full-suite acceptance retain their open criteria.

8 days ago

Follow-up console method comparison on the unchanged main executable is preserved in verified evidence. Completed Node/Home probes retain a usable sandbox through the final command. Both owner and VM realms lack Runtime events for count and native timeLog/timeEnd in Home; groupEnd/clear emit empty arguments where Node emits method-name strings. The other tested method types arrive. This is investigation evidence, with no method repair or full schema pass claim.

The independent remote-object lifetime probe completes and reads answer=42 in both runtimes. Both retain the context after group release, Console.clearMessages and disconnect, so this does not establish a Home-specific collection regression. Initial sandbox-liveness failure and raw outputs remain archived. The pinned SDK owns native counter/timer state; the next implementation batch must integrate that state and preserve object lifetimes. Full acceptance remains open under #888/#428/#66.

8 days ago

The next console-method implementation is preserved at 616913c78 on the recovery branch. An owned InspectorConsoleAgent subclass reads the SDK's actual counters, timer results and message records; owner and VM console methods share that state. Added acceptance assertions cover count/reset, typed timeLog objects, timeEnd, groupEnd/clear arguments and state across Runtime.disable/enable.

Validation is pending. The first compile exposed a ScriptArguments reference API error, now corrected; the guard then stopped remaining work at the 512 MB critical storage floor. Several later launches were refused below the unchanged 1536 MB admission threshold. Inactive native cache generations, duplicate build copies and package extraction caches have been removed while source/evidence/active jobs remain preserved. The current build retry is running; main remains the previously verified source. No new method pass credit is claimed. Parents #66/#428; acceptance remains #888.

8 days ago

Console count/timer/groupEnd/clear implementation is preserved at 889a44b6a on the recovery branch. Runtime source remains unverified and has not replaced the last verified main checkpoint. The native subclass reads canonical SDK records; assertions cover native counter resets, timeLog object handles, timeEnd and disabled/enabled state.

Validation has encountered real shared-resource failures: a corrected reference API compile error, disk admission/critical-floor stops, stale generated-file records after obsolete cache cleanup (subsequently invalidated), and eight consecutive memory measurement failures. No limits were relaxed and no failed run receives pass credit. A controlled zombie/live footprint probe succeeds, so zombie handling was not changed. Added failure diagnostics preserve the existing memory ceiling, probe deadline and failure limit; stalled-probe cleanup and footprint parser controls pass.

The current retry is queued behind a confirmed live compiler regression suite, retaining its original process handle. Complete console schema, inspector/VM lifetime ownership and full Bun corpus acceptance remain open under #888/#428/#885/#66. Earlier comparison evidence on main remains c2186df64.

8 days ago

The console-method Debug build has completed 56/56 steps with a 5710 MB peak tree footprint. The generated controller copy matches the current native source, including the inspection-policy check that avoids storing unobserved timeLog arguments. Executable SHA256: 018151c2d6d7b12976860b337314291a3f31afbe6f1b8a6e3e95cdb0e8db2bcf.

Runtime acceptance remains pending: the focused driver is queued behind a confirmed live release build. Its batch includes Node and Home console assertions and dropped timer-context collection, plus existing inspector/profiler/fetch lifecycle controls. The source is preserved on the recovery branch (runtime retention fix 05d480af6, current diagnostic controls 512e92605); main remains the last verified checkpoint. Initial native kernel-probe deadline failures are preserved; monitoring recovered and the build completed without changing its limits. No runtime or full-suite pass credit is claimed. #888/#428/#885 remain open.

8 days ago

The expanded native console build at 4af40d6e7 completed 56/56 steps. Node and Home pass the maintained console method assertions, including real counter/reset values, typed timer object handles, groupEnd/clear arguments and attachment versus Runtime.disable behavior. Native SDK history now replays actual buffered records with captured stacks and per-session delivery.

The broader lifecycle acceptance remains failed: Node replays a buffered timeLog object and collects its VM realm after clearing console entries and the remote object group; Home replays/inspects that object successfully but retains the realm after clearing. The failed assertion is unchanged. A connected heap snapshot shows native strong roots, and a temporary native probe is tracing buffer counts and controller detach; its 56/56 build is complete but runtime audit is queued behind a confirmed live job. No full inspector/lifetime or full-suite pass credit is claimed; main remains the verified checkpoint.

Two earlier new oracle assumptions failed on Node and are preserved: owner and VM consoles have different pre-attachment inspector state, and Node legitimately retains the unobserved timer object in its replay buffer until clearing. Corrected maintained controls pass on Node; Home's remaining clear/collection failure is separate. #66/#888/#885/#428 remain open.

8 days ago

Native console methods, buffered replay and cleared-realm lifetime (2026-10-13) landed in source 56df99d7f, merged integration be4364972, and verified evidence de6aea239. Canonical SDK records provide count/reset, typed timeLog/timeEnd and per-session buffered replay with actual stacks/timestamps. Owner attachment differs from VM console state; Runtime.disable suppresses notifications while preserving connected state. groupEnd/clear arguments match the native contract. Clearing the buffer and remote group now retires idle realm injected-script roots; actual still-bound handles, pending calls and paused debugger state prevent retirement. Unrelated object handles and an in-flight async call remain usable. Last frontend detach retires injected-script state, and the non-owning console registry retires across finalization threads. Both source and merged builds pass 56/56 steps; fresh merged validation passes all nine focused commands, six broad drivers, 33 native groups, seven Node/seven Home realm controls, 14 ABI tests/453 assertions and 32 report-validator tests. All 64 report outcomes match expected counts/errors/exits, including twelve negatives. Twenty unchanged originals retain 53 passed cases, one unchanged unsupported-method expectation failure and 17 passed process checks, with zero skips/TODO/filter/retries; #886 receives no pass credit. Failed Node oracle assumptions, the Home post-clear lifetime failure and resource stops remain immutable; temporary tracing is removed. Full schema, independent remote-object/session ownership, evaluated-realm retirement outside explicit console clearing, module/export/callback/owner-shutdown acceptance and full suite/platform validation remain open under #888/#428/#885/#66.

Sign in to comment on this issue.