Skip to content

ci: attribute loaded external-speech teardown timeout after both behavior cases pass #2457

Open
0 of 1 issue completed

Description

@schlessera

Local qualification resumption — 2026-10-22

The observer-control prerequisite #2481 is delivered by #2483 / dcf5341. Candidate proof passed; automatic main run 39688976449 passed all 17 jobs, with every actual checkout independently verified against the squash and the aggregate confirming all categories succeeded without retained results. The scoped correction preserves production observer limits and consumer assertions/deadlines; no historical timeout cause is inferred.

The prior local refresh 7d4db2a26fbf08117dc9d45b5327e31d87f21c19 and its ambient observer assertion failure remain preserved. One GPT-6-Astra worker now owns the local merge of the delivered correction and required affected controls, strict types and check:pr under existing parent claim e1849-2457-20261021-r4-cancel. PR #2464 remains draft at c2932a6 until parent review of fresh local proof. No pressure allocation, hosted dispatch, ready transition or reservation is included in this local task.

Blocked by #2473

That independently owned shutdown correction and the maintainer-required loaded rerun still govern full issue completion. The historical failed hosted run and original pressure acceptance criteria are unchanged.

Current resumption — 2026-10-21

2026-10-21 resumption: main advanced from c2f080f to 2db5626 through #2478. Its automatic main CI run 39675767925 reports success; this statement is an API conclusion, not a new independent checkout audit.

#2478 adds retained planning observations and preserves the consumer assertions/deadlines. Its own remaining-work section says the timeout mechanism and targeted correction are still open. #2465 was closed immediately after that observer merge; closure alone is not interpreted here as repair or satisfaction of this candidate's failed selected proof. The original run 39595607928 remains failed and all diagnostic limitations remain recorded.

One dedicated GPT-6-Astra child is refreshing the preserved #2464 source onto current main, reviewing the relevant observer/worker changes and obtaining required local affected proof. No hosted confirmation, pressure run, ready transition, push or integration reservation is allocated to that child. The exact previous candidate c2932a6 and its receipts remain preserved. Parent owns review and later proof disposition.

#2473 is independently owned through #2475; its grace-then-cancel work and required loaded rerun remain separate. #2319 activation remains deferred. Finite integration-state inspection found no active reservation, so none was released or acquired. Existing parent claim e1849-2457-20261021-r4-cancel remains the scoped owner of this refresh.

Latest hosted result — 2026-10-21

2026-10-21 confirmation on head c2932a6 failed. Unit shard 4 timed out in the actual production consumer check for packages/ui-server/src/brain/application.ts: 34,011.94 ms against the unchanged 30,000 ms limit. The following module-jobs/types.ts check passed in 26,568.12 ms. Worker 2 finished with 1,351 pass / one fail / 14,071 assertions. JUnit records tests/unit-test-consumers.test.ts:16, TimeoutError and one assertion.

Actual unit and aggregate checkout was 0f552f3, tree f432f5af7bef9c11bf79dbd03104d85a2e787506, with parents main c2f080f and candidate c2932a6. All other 15 pre-aggregate jobs succeeded; the aggregate correctly refused selected unit failure. This is not the older cancelled run. Raw logs and the 48-entry unit-proof-4 artifact are retained; artifact SHA256 73bc86c864e73b28435ea15326640dfd9da8c17cdc8b89e4527ec47f41b04abe.

The telemetry opt-out delivered in #2468 is present. Its measured local mechanism correction and successful candidate/main delivery remain valid evidence, but they do not resolve this recurrence or establish its cause. Concurrent worker build tests are visible in the log; their causal contribution is unproven. The next step is retained-artifact/source attribution and a bounded phase diagnostic, preserving both actual production consumer assertions, fallback and all original deadlines. No unchanged hosted retry or speculative planner correction is allocated.

The coordinator released its exact owned integration reservation and independently verified no active reservation. PR #2464 is draft again; no merge occurred. #2465 is reopened for further attribution. Full #2457 completion also still requires #2473 and its loaded rerun; #2319 activation remains deferred.

Current candidate and remaining scope — 2026-10-21

PR #2464 is locally qualified at c2932a6 / tree f432f5af7bef9c11bf79dbd03104d85a2e787506 against main c2f080f. Parent reviewed its source and verified all 124 indexed evidence files. Required preflight passes 569 fast + 2 runtime + 2,321 affected tests; strict types and 48 focused controls pass. Its selected hosted confirmation failed in unit shard 4 as recorded above; the candidate is draft and remains a partial Refs delivery.

The maintainer's separate #2473 grace-then-cancel ruling and requested loaded rerun remain required for the full outcome. The current PR preserves admitted execution; #2473 must explicitly reconcile that lifetime and its tests when introducing execution cancellation. Historical loaded receipts retain their original combined tree. #2471 and #2456 attribution remain unresolved; no unchanged retry, test deadline change or #2319 activation follows.

Blocked by #2473

Blocked by #2465

Historical previous-main refresh and qualification — 2026-10-21

Draft #2464 now preserves head e396f1b, tree 2bf0c09ee9ccbac01082caa2262364253d51c88e, tested base b393bf4. Required preflight passed 569 fast, 2 runtime and 2,321 affected tests, zero failures, with strict types and focused cancellation/prune controls passing. Preflight cost 3,379.282 seconds wall / 2,360.298 user / 1,059.110 system CPU. Parent independently verified all 167 evidence files / 9,737,652 bytes.

Two failed invocation setups remain preserved: the first used unsuitable loopback-only browser topology and a 0755 private ledger; the second corrected topology but still failed the unchanged ledger guard. Final qualification uses a private route-free non-loopback network, zero capabilities and owned 0700 ledger. No tracked product/test/assertion/deadline changed. The first run's initial-card timeout remains an independent unresolved finding in #2471; later passing answer cases do not establish its cause.

During that preflight, main advanced through #2472 to c2f080f. Parent verified the explicit maintainer ruling for its local sandbox-setup allowance; product/test deadlines and hosted proof remain unchanged. A separate agent round now incorporates that approved main delta and obtains fresh local qualification. Previous receipts retain their actual tested base. PR stays draft; no hosted request or merge-window reservation exists for this refresh. Historical combined pressure evidence, #2456, #2466 and deferred #2319 activation remain separately attributed.

Historical first hosted confirmation failure — 2026-10-21

2026-10-21 candidate confirmation failed; reservation released.

Unit shard 3 failed three owned-prune diagnostic tests on actual checkout 9d70c46, tree 3b639c2ddf92125d266dfb762c9c5147e41f14ea. Its parents are the recorded main e2deae1 and candidate 063f5a0.

The precise failure is Owned prune fixture anchor changed in scripts/native-proof/owned-prune-variant.ts:23. The fixed source transformer still requires return gated(execution, async hold => {; the cancellation implementation now uses gated(admission, ...). All three tests refuse generation before their behavioral checks. Unit worker 2 reports 1,269 passes, three failures and 7,304 assertions; this is a real related fixture regression, not a flaky runtime or an infrastructure retry.

The coordinator released reservation 498c4bfada8ecb906ea2a8f8c377f1d2 immediately and verified no active reservation. The controller then exited 1 with No reservation to renew. PR #2464 is back in draft. No merge or retry occurred. Other selected jobs may finish, but this candidate remains unconfirmed.

The exact one-line diagnostic-anchor correction is now pushed at f8c97e1, tree f273dd566237778051296b3ab9e6b3545daf45fe. The focused original and reversion each fail all three named anchor checks; corrected/restored runs pass 3 tests / 131 assertions. Related wrapper checks pass 16 tests / 152 assertions, strict types pass, and required preflight passes 569 fast, 2 runtime and 2,321 affected tests, zero failures. Parent independently verified 58 archived files / 2,503,978 bytes, manifest SHA256 5f7517c3c83b5cb5eb014899743b8481eff0540bac347e81b4ef97a6f05583ed. Preflight cost was 3,094.81 s wall / 1,557.67 s user / 779.73 s system; its private bubblewrap prerequisite is separately attributed. Historical pressure evidence remains bound to its original combined tree, with only a later source-relevance assessment.

The corrected head has no completed selected hosted confirmation. #2465 is now delivered and closed after #2468 and verified candidate/main proof. Parent is resuming current-main refresh and qualification of this corrected draft; no new reservation or hosted request is claimed here. The existing early-failure fixture-root cleanup gap is recorded separately as #2466, without adding a delivery blocker.


Earlier local qualification and original confirmation disposition — 2026-10-21

2026-10-21 independent review and original-load qualification passed.

The reviewer found no unresolved cancellation correctness gap and reran the exact #2464 metadata suite: 9 passed, 108 assertions. A separate local merge combines #2464 head 063f5a0, #2458 head b751f30 and main e2deae1. Combined commit 113cd7f1d56a9c7b182b0b69a2bb9bb183d74003 has tree dea94afaaf2f6168fe47f2d6f650ceeb723412c8. There were no merge conflicts; only the CI decision document combines content from both sides. Full source attribution retained all invocation, metadata, producer-audit and dormant-reuse guarantees.

Exactly one original-load invocation passed on that combined tree. Twenty owned busy loops remained on CPUs 0–3 throughout; all original assertions, timeouts and guards remained unchanged. The actual audio/final-drain/no-grant case passed in 14,774.05 ms, unmount in 13,464.65 ms; inner 2 pass / 0 fail / 13 assertions, outer 1 pass / 0 fail / 1 assertion. Teardown completed. Whole command exit 0, signal null and both output EOFs joined; no safety watchdog fired. Strict types and 48 focused combined-tree tests also passed.

This run used system bubblewrap 0.9.0, Bun 1.4.2, Node 24.21.0, Chrome 140.0.7339.127 and 3,689 mount entries, with actual native admission. No diagnostic overlay, private fast-native prefix, clean namespace, JIT change or retry was used. The unlabelled idle-request warning still appears and is not assigned a cause. Historical #2456 attribution remains open.

Fresh invocation build: 198.053 s wall / 61.326 s waited CPU. Checked hook admission: 7.621 ms. Controller start through command exit/EOF/anchor: 260.514 s; command waited CPU 66.682 s includes the build. Controller including cleanup: 262.551 s wall / 1.029 s CPU. Load loops: 964.484 s CPU, separately accounted. These are overlapping scopes with declared exclusions, not a matched speedup or comprehensive total.

Parent independently verified 177 indexed files / 44,245,801 bytes with no mismatch, manifest SHA256 b7031119f6c79c0906711c4bcd4f78dfb7881410adbdd998b05ce4ee18e515bd. All 153 recorded PID/start identities were absent, including zombies; one-second sampling cannot establish exhaustive descendant coverage. The unrelated sibling survived owned cleanup before its own owner stopped it.

The runtime allocation is terminal. This is exact local combined-tree qualification, not hosted proof or delivery of either source PR. #2464 was then eligible for the repository's reserved candidate-confirmation procedure as a scoped Refs #2457 correction. Its current head and live main still match its successful preflight; the synthetic merge parents and tree were checked independently. Selected hosted proof and actual squash/main-push verification remain required. #2458 remains separate, historical #2456 attribution is retained, and #2319 activation remains deferred.

Parent claim e1849-2457-20261021-r4-cancel remains active; release milestone 0.44.0. Implementation and prior diagnostic details remain in the dated comments and PR #2464.

Observation

#2279's bounded unconditional-build mutation/restoration pair on 2026-10-20 produced a new teardown failure after both original external-speech browser/audio cases passed. The complete restored run still exited 1. This is separate from #2456's earlier typed-turn failure and is not a passing pressure control.

Command: BRAIN_REQUIRE_CHROME=1 taskset -c 0-3 bun run test packages/ui-react/tests/external-speech-runtime.test.ts, with exactly 20 owned busy loops on CPUs 0–3 throughout. Local shared Linux host: Bun 1.4.2, Node 24.21.0, Chrome 140.0.7339.127, 32 logical CPUs, 48,169 MiB RAM. No outer watchdog fired.

Both arms used an uncommitted candidate over base 468618cf106c3e793cbb030f8fc90bf8d018913f. Independent comparison of 5,236 source-file hashes found only the intended runtime helper mutation between arms. Restored source manifest SHA-256: c18e9ea8503775125eac3d696c72a9b736f303bdaf2d7340282db19bcec44c29; restored helper digest 2a8a9f5376b7c0179e579642fb72b0a7ed855e3372f54b00e4f88fc7bc45777a. Complete restored output digest: 603e5cc86925c7f0ab52fe04c18a51f2e894bf9b82fd4be95c2a4235a2d2891b. These are frozen experimental identities, not committed-candidate qualification.

The unconditional hook mutation hit the intended unnamed setup timeout at 180,009.32 ms; its controller took 393.947 seconds, including a 209.393-second prebuild. After restoration, actual checked hook admission took 9.318 ms; browser-client bundle exit and both output streams completed successfully. Then:

  • Actual browser audio, supplied session, final text drain and no-grant case passed in 14,694.58 ms.
  • Actual capture unmount/hard-stop/no-graceful-final case passed in 14,608.01 ms.
  • An unnamed post-case hook failed at 30,019.22 ms. A Bun.serve 10-second idle-request warning and dangling-process cleanup were also logged, without stage/request attribution.

Child totals are two passes, one failure, 13 assertions; the isolated parent fails on child exit 1. Controller wall is 294.819 seconds. GNU time reports 294.76 seconds command wall and 61.81 user + 6.16 system CPU seconds; this is waited-process accounting excluding busy loops/controller and potentially un-reaped grandchildren, not total CPU or a speedup. The worker's independent PID/start cleanup census reports 162 observed / zero live after final cleanup, and all 20 loops absent. Post-command absence does not make in-test teardown pass.

Unknown boundary and related work

The source's afterAll awaits browser close, stops the application and speech servers, then awaits application close (packages/ui-react/tests/external-speech-runtime.test.ts:83 in the captured source). The original failure log did not identify which hook/await or registered cleanup was stalled; the later experiment localizes its outer await to HttpContractApp.close(), which includes production app close, native-fixture cleanup and directory removal; its inner operation was unattributed in those historical receipts. The later diagnostic separately identified the HTTP-handler drain over queued status metadata, and the correction now has the local combined-tree qualification above; it does not retroactively diagnose those older runs or assign the worker durations to a cause.

#1600(b) concerns a different stats-render cleanup; #995 concerns chat-focus cleanup on older Bun. #2456 concerns this fixture's earlier typed-turn failure before audio. Shared timeout wording establishes no common cause. #2334's silent bundle failure is also distinct; bundling succeeded here. This finding supports #2279/#1849 and references #736's deterministic verification scope.

Acceptance criteria

  • Preserve exact failed source, command/load, full output and result accounting; keep the successful behavior cases distinct from failed teardown.
  • In a separately attributed bounded diagnostic, identify the actual registered hook and stalled browser/server/application or child-output boundary, with owned process lifetime and request state before timeout cleanup.
  • Select a correction only after causal attribution. Preserve original audio/drain/no-grant/unmount assertions, budgets, offline/native guards and failure cleanup; prove the identified condition with meaningful failing/restored control.
  • Reconcile complete relevant invocation termination and required proof before closing. If only passing or unsupported-context controls occur, record the missing causal evidence rather than declaring repair.

Exclusions and contract impact

No further unchanged pressure attempts, timeout or idleTimeout increases, reduced load, skipped assertions, speculative lifecycle repair or #2319 activation. The correction may add optional cancellation to a public TypeScript method, requiring an additive contract record and minor changeset; no breaking HTTP semantics are selected. #2279's full-pressure pass remains required; moving this finding into a child issue does not satisfy that criterion. Independent implementation/preflight can continue while qualification is blocked.

2026-10-20 triage: folded the later outer-await attribution into the current body, separated measured boundary observations from the untraced source wait chain, and named the remaining causal evidence. Preserve original failed identities, native #2279 parent, priority and needs: repro; no repair or pressure qualification is claimed.

2026-10-21: refined the later experiment from recovered raw markers and fixture source, separated run groups, corrected cumulative durations and rejected unsupported original-pressure binary attribution. Original acceptance criteria remain unchanged.

2026-10-21: recorded the admitted diagnostic’s HTTP-drain localization, incomplete OS sampling and terminal allocation; retained historical identities and original acceptance criteria.

2026-10-21: recorded the missing metadata-cancellation path and bounded implementation scope; retained all original complete-pressure criteria.

2026-10-21: linked the exact cancellation draft and recorded its proof, costs and separate bounded combined-tree qualification; original remaining acceptance criteria are retained.

2026-10-21: recorded the complete local combined-tree pass and candidate-confirmation disposition. Hosted delivery and historical attribution remain separately tracked.

Resolved hosted qualification prerequisite — 2026-10-21

#2465 delivered via #2468 / b393bf4; all 17 candidate and all 17 automatic-main jobs passed with actual checkout verification. Its local telemetry retry-lifetime correction preserves original production consumer assertions and deadlines. The earlier unit-shard-4 timeout remains historical evidence, not retroactively diagnosed.

The dependency is resolved. PR #2464 remains draft until its corrected head is refreshed against current main and independently qualified, including required preflight and exact-candidate selected hosted proof. Original pressure receipts retain their actual combined-source identity; no extra pressure attempt or unrelated #2456 repair is implied.

Activity

  1. added
    type: testCoverage, harness or proof work with no behaviour change.
    area: ui-reactReact chat/files/voice components, stores, WebSocket transport.
    area: ciCI workflows, the gates they run, release scripts, packaging.
    priority: p2Wanted, not scheduled. Pulled in when a milestone has room.
    needs: reproBlocked on a reproduction.
    on Oct 20, 2026
  2. schlessera commented on Oct 20, 2026

    @schlessera
    OwnerAuthor

    Attribution: the stalled await is app.close(), and on this host its cost comes almost entirely from sandbox launch latency (2026-10-20).

    Source 468618cf106c3e793cbb030f8fc90bf8d018913f, Bun 1.4.2, host Chrome 140.0.7339.127. The host had 3,685 mount-table entries, which is the Docker Desktop leak from #2370; a bare bwrap --ro-bind / / true takes about 330 ms. The load was 32 unpinned busy loops for the whole run. Command:

    unshare --user --map-current-user --keep-caps --net sh -c 'ip link set lo up && ip link add repro0 type dummy && ip addr add 192.0.2.1/32 dev repro0 && ip link set repro0 up && exec setpriv --inh-caps=-all --ambient-caps=-all --bounding-set=-all env BRAIN_REQUIRE_CHROME=1 BUN_JSC_useConcurrentJIT=false bun run test packages/ui-react/tests/external-speech-runtime.test.ts'

    Unchanged source, 3 loaded runs: 2 failed with the same shape as this issue. Both behaviour cases passed, then (fail) (unnamed) [30000.12ms] a beforeEach/afterEach hook timed out, plus Bun.serve() timed out a request after 10 seconds and dangling-process cleanup. The client bundle completed normally (exit 0, empty streams); the package build alone took 115 s under this load.

    For attribution, a temporary experiment wrapped each step of the afterAll at external-speech-runtime.test.ts:83 with timestamps and nothing else. It was reverted afterwards.

    Condition browser.close() server.stop / speechServer.stop app.close() Result
    Host, idle 99 ms 0 ms 6,158 ms pass
    Host, 32 loops (3 runs) 118–121 ms 0 ms 27,276 ms; 29,457 ms; more than 30 s (timed out) 1 of 3 failed
    Same load, mount namespace without the leaked mounts (74 entries; nested bwrap about 2 ms), 3 runs n/a n/a 756 / 804 / 843 ms 3 of 3 passed, no Bun.serve warning

    The clean namespace binds every top-level directory except /mnt, through bwrap --unshare-user. Everything else matched: source, command, offline namespace and the 32-loop load.

    What app.close() waits on, read from the source and not separately instrumented:

    • close in packages/ui-server/src/app.ts:1059-1093 awaits, in sequence, every in-flight HTTP handler (app.ts:1073), keyedReindex.idle() (app.ts:1083 → packages/ui-server/src/brain/host-execution.ts:47) and governedTurns.close() (app.ts:1084 → packages/ui-server/src/brain/governed-turn.ts:52).
    • governedTurns.close() awaits the post-turn index refresh scheduled by host.governedTurns?.refresh(...) at packages/ui-server/src/ws/run-session.ts:768.
    • None of these is aborted, and none has a deadline. execBrain (packages/ui-server/src/brain/client.ts:225-263) passes a timeout only for bounded maintenance and a signal only for read-only search, so index, module list and briefing run unbounded.
    • Each such CLI run chains two or three sandboxed maintenance workers. Under the leak plus CPU load, each costs seconds.
    • The 10 s Bun.serve warning fits the test server's default idleTimeout, tripping on /api/status. That handler awaits getContentRenderers (packages/ui-server/src/routes/health.ts:61-63), which is brain.modules() → brain module list (app.ts:794). app.ts:1073 then waits for the same handler after server.stop(true).

    What this does and does not show:

    • It names the stalled step: app.close(), not browser.close() or the server stops.
    • It shows that on a host with leaked mounts, sandbox launch latency multiplied by CPU contention is the dominant cost: about 4.5× idle, and over 30 s against 0.8 s in the clean namespace.
    • It does not show which specific in-flight CLI run is live at teardown. That needs a per-run trace inside app.close.
    • It does not show the cause on a host without leaked mounts. Your 2026-10-20 receipt used 20 loops pinned to 4 CPUs, which can stretch the same unbounded waits without any leak. Recording the mount-table size alongside each local receipt would separate the two.
    • No correction is proposed here, per this issue's exclusions.
  3. schlessera commented on Oct 20, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 parent evidence reconciliation: recovered raw logs and the exact temporary markers refine the later experiment in the attribution comment.

    The measured app.close() is the test's HttpContractApp.close(): production app shutdown is followed in finally by native-fixture cleanup and directory removal (httpContractApp, packages/ui-server/tests/helpers/http-contract-app.ts:23-115, close at 110-113, source 468618cf106c3e793cbb030f8fc90bf8d018913f). The unfinished outer await therefore does not isolate the internal production shutdown operation.

    The raw markers are cumulative from hook entry. Approximate fixture-close durations are 27,155/29,336 ms for the two loaded successes, 6,059 ms idle, and 601/629/643 ms in the clean namespace. The failed instrumented run completes the preceding stop marker at 118 ms, then prints no fixture-close completion before the 30,016.47-ms hook failure. Server-stop durations round to zero; these are synchronous calls, not proof of awaited server shutdown. The earlier uninstrumented group selected both speech and stats-render files (2/3 failed); the instrumented speech-only group failed 1/3. Those denominators and command contexts remain distinct.

    The clean wrapper changes visible root, mounts and namespace construction, not only mount count. The serial timing difference is consistent with a sandbox-preparation hypothesis, but it does not identify the actual pending CLI/refresh/HTTP operation or its causal contribution. Neither /api/status nor a shared cause with #2342 is established.

    The later worker's observations identify bubblewrap 0.9.0. The separately retained private 0.13.1 qualification belongs to later #2279 preflight; it does not establish the original restored pressure arm's effective binary or native admission. That arm's complete PATH/worker-probe identity remains unrecorded. The new audit's contrary 0.13.1 attribution is rejected here; its original files are retained with a separate parent correction rather than silently rewritten.

    Parent verified 185 recovered/audit files (5,493,773 bytes) with zero checksum mismatches and checked the fixture source and raw timing deltas. A diagnostic overlay now distinguishes fixture/native removal from individual production close stages and correlates requests, refreshes and worker preparation/exit/EOF/publication. It has static/pure checks only; real observer integration remains pending. No #2457 runtime allocation is started while #2456 owns its one instrumented diagnostic.

    Keep needs: repro, original failure identities, assertions, deadlines and full-pressure acceptance. No production repair, complete pressure pass or hosted qualification follows from these corrections.

  4. schlessera commented on Oct 20, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 new evidence and bounded next diagnostic: #2456's single instrumented invocation at b751f30becd03af1b506e34f4f62f0cb155b83d3 plus observation edits passed both actual speech cases, then failed an unnamed post-case hook at 30,007.56 ms. It used the original 20 loops pinned to CPUs 0–3, system bubblewrap 0.9.0 and unchanged test budgets. All owned runtime resources are stopped. The typed path passed; its historical failure remains unresolved.

    Fifteen observed status request starts have no recorded return before that observer closed. The observer stopped before teardown, and ordinary maintenance workers bypassed its instrumented agent-launcher branch. Neither pending records nor the idle warning identify the stalled cleanup operation. This is additional failed-invocation evidence, not a causal repair or a completed #2457 attribution. Sampler overhead was substantial at 77.397 CPU seconds and remains an explicit measurement condition.

    One fresh #2457 diagnostic round now has the sole local runtime allocation. Before any full run, it must validate trace coverage through an actual ordinary maintenance worker and real delayed-output completion, distinguish fixture/production/native/removal boundaries, and retain tracing through shutdown. It will reduce broad polling overhead while retaining explicit observation limits and costs. If observer and native prerequisites pass, it may execute exactly one instrumented original-load invocation with unchanged assertions, deadlines, resources and guards. No unchanged retry, additional contrast, product correction, readiness or hosted request is allocated. Stop at its terminal result and retain every failed or incomplete observation.

  5. schlessera commented on Oct 20, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 terminal diagnostic and parent review.

    The single allocated invocation failed with exit 1 after both behavior cases passed (16,359.86 ms and 14,551.66 ms; 13 assertions). Its post-case hook timed out at 30,051.83 ms. Source was draft b751f30 plus a retained observation overlay. Original 20 loops on CPUs 0–3, setup/case deadlines, native/offline guards and speech case bodies were preserved. This is diagnostic evidence, not unmodified-candidate qualification.

    The new trace identifies the unfinished operation: production close awaits the admitted HTTP-handler promises at app.ts:1073, within the outer fixture close. The actual pending promise IDs join to 15 /api/status requests, then content-renderer discovery, module list --json and serialized per-brain maintenance execution. Five handlers completed while close waited; ten remained at the final snapshot, 29,434 ms after close began. Those ten had entered outputLock.withLock but not its callback. The unchanged lock implementation establishes the acquisition-wait interpretation; lock queue internals were not instrumented.

    A governed index refresh also competed for that lock, entering its body after approximately 44,476 ms and launching a worker about 28,860 ms after close began. Its final observed lifetime was only about 574 ms. The later governedTurns.close stage, other subsequent production shutdown stages and fixture native cleanup/removal were not reached. The observed queue was making progress; this is not proof of a permanently stuck process or an abnormally slow final index worker. The unlabelled idle warning remains unattributed.

    The operation trace stayed active through teardown with 1,875 sequential events and 13 ordinary maintenance launches. Actual ordinary-worker, delayed-output, fixture-nesting and cleanup controls admitted the observer; a classifier mutation produced the intended EOF assertion failure and restoration passed. External sampling stopped at its data cap before teardown. It recorded 18,186,777 bytes because its between-sample check overshot the nominal 16 MiB threshold. Thus no teardown-time OS wait-state or leaf-internal timing establishes whether sandbox preparation, payload execution or another stage accounts for the worker durations. Observer timing effects remain a limitation.

    The actual diagnostic used system bubblewrap 0.9.0 and passed the native worker-host guard. This does not establish the original historical arm's effective binary; later private 0.13.1 preflight remains separate. No common cause with #2456 or #2342 is claimed.

    Command exit and both output EOFs joined. All 20 loops exited; the final independent census found zero surviving or unreaped matches across 276 owned PID/start identities. Failed fixture scratch was preserved then removed after process cleanup; that does not make in-test teardown pass. Parent independently rehashed all 284 indexed files / 52,044,914 bytes without mismatch, manifest SHA256 84b4331c49d82e4d18b92b322b9ad0668678f14ad8351b655ee172bd8131be85.

    Builder wall was 223.829 s, with 67.062 s CPU. Command-through-exit/EOF/anchor wall was 315.725 s and reported waited-tree CPU 73.132 s, including the builder and potentially excluding interrupted unreaped descendants. Controller including cleanup took 316.757 s; loop CPU was 1,172.990 s and sampler CPU 0.618 s, each separately accounted. Complete observer CPU is unknown. No matched speedup or aggregate total is claimed.

    This runtime allocation is terminal. A fresh source/mechanism review now traces request cancellation, metadata discovery and maintenance ownership against existing guarantees and current main, to specify a decisive bounded causal control and justified correction. No further full pressure run, product correction, hosted dispatch or merge reservation is allocated. Keep needs: repro and all original acceptance criteria; #2279's complete-pressure qualification and #2456's historical typed failure remain open.

  6. added
    type: fixSomething is broken and must behave the way it is documented.
    area: ui-serverHono app factory: turn coordinator, auth, session catalog, routes, cron.
    agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.
    and removed
    type: testCoverage, harness or proof work with no behaviour change.
    needs: reproBlocked on a reproduction.
    on Oct 20, 2026
  7. 3 remaining items

  8. schlessera commented on Oct 21, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 implementation handoff and independent qualification allocation.

    Draft PR #2464 is open at 063f5a0, tree 3b639c2ddf92125d266dfb762c9c5147e41f14ea, tested base e2deae1. It is linked to the coordinator thread, remains draft, and carries milestone 0.44.0 and the additive contract/minor changeset. The separate #2279 draft is unchanged.

    The correction forwards admission-only cancellation for status and GET modules. Queued lookups cancel on caller abort or app close; admitted execution retains its worker, publication and cleanup lifetime. The real app fails the named queue-before-lock-release oracle before the correction and when propagation is removed, then passes on restoration. Both routes cover pre-aborted, queued, shutdown and actual loopback abort. The real ordinary-worker test holds stdin, observes exit and both EOFs, then holds publication and cleanup; locks and database ownership remain until those stages finish. Forwarding shutdown into active execution causes the intended publication assertion failure. Unchanged HTTP-drain/browser/native owner tests and search cancellation tests pass.

    Required preflight passed once on the committed tree: 562 fast invariants, two separately invoked runtime tests, and 2,307 affected tests across 184 files with 20,421 assertions; zero failures. All nine final metadata tests ran. Strict types, API, citation/leakage and changeset checks passed. Wall 3,074.84 s, user CPU 1,534.99 s and system CPU 775.71 s. These are validation costs, not a performance gain. System bubblewrap 0.9.0 was used for causal controls; private 0.13.1 was separately qualified for the preflight prerequisite only.

    Parent independently verified 127 indexed files / 11,939,440 bytes, manifest SHA256 fd5f14cdc17590c75dbcb4b300aab0b00ee1ccd8c5723d40441532e1b079b901. Cleanup confirms the recorded owned identities absent, with sampling coverage limits retained. Complete pressure, hosted proof and historical #2456 attribution remain open.

    A fresh independent review now checks the exact cancellation candidate. If no unresolved correctness finding prevents qualification, it will prepare a separate local combined tree containing current main, this candidate and exact #2279 head b751f30. After merge-specific checks and controller/native admission, it has the sole allocation for exactly one original 20-loop/CPUs 0–3 speech invocation with all original assertions, deadlines and guards. The combined source receives its own identity; earlier proof is not relabelled. No diagnostic overlay, extra baseline/contrast, unchanged retry, private fast-native substitution or producer-audit weakening is allowed. A review or prerequisite failure stops before pressure.

    Parent claim e1849-2457-20261021-r4-cancel remains active. No readiness transition for either PR, hosted dispatch or merge-window reservation is allocated. #2319 activation stays deferred.

  9. schlessera commented on Oct 21, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 independent review and original-load qualification passed.

    The reviewer found no unresolved cancellation correctness gap and reran the exact #2464 metadata suite: 9 passed, 108 assertions. A separate local merge combines #2464 head 063f5a0, #2458 head b751f30 and main e2deae1. Combined commit 113cd7f1d56a9c7b182b0b69a2bb9bb183d74003 has tree dea94afaaf2f6168fe47f2d6f650ceeb723412c8. There were no merge conflicts; only the CI decision document combines content from both sides. Full source attribution retained all invocation, metadata, producer-audit and dormant-reuse guarantees.

    Exactly one original-load invocation passed on that combined tree. Twenty owned busy loops remained on CPUs 0–3 throughout; all original assertions, timeouts and guards remained unchanged. The actual audio/final-drain/no-grant case passed in 14,774.05 ms, unmount in 13,464.65 ms; inner 2 pass / 0 fail / 13 assertions, outer 1 pass / 0 fail / 1 assertion. Teardown completed. Whole command exit 0, signal null and both output EOFs joined; no safety watchdog fired. Strict types and 48 focused combined-tree tests also passed.

    This run used system bubblewrap 0.9.0, Bun 1.4.2, Node 24.21.0, Chrome 140.0.7339.127 and 3,689 mount entries, with actual native admission. No diagnostic overlay, private fast-native prefix, clean namespace, JIT change or retry was used. The unlabelled idle-request warning still appears and is not assigned a cause. Historical #2456 attribution remains open.

    Fresh invocation build: 198.053 s wall / 61.326 s waited CPU. Checked hook admission: 7.621 ms. Controller start through command exit/EOF/anchor: 260.514 s; command waited CPU 66.682 s includes the build. Controller including cleanup: 262.551 s wall / 1.029 s CPU. Load loops: 964.484 s CPU, separately accounted. These are overlapping scopes with declared exclusions, not a matched speedup or comprehensive total.

    Parent independently verified 177 indexed files / 44,245,801 bytes with no mismatch, manifest SHA256 b7031119f6c79c0906711c4bcd4f78dfb7881410adbdd998b05ce4ee18e515bd. All 153 recorded PID/start identities were absent, including zombies; one-second sampling cannot establish exhaustive descendant coverage. The unrelated sibling survived owned cleanup before its own owner stopped it.

    The runtime allocation is terminal. This is exact local combined-tree qualification, not hosted proof or delivery of either source PR. #2464 is now eligible for the repository's reserved candidate-confirmation procedure as a scoped Refs #2457 correction. Its current head and live main still match its successful preflight; the synthetic merge parents and tree were checked independently. Selected hosted proof and actual squash/main-push verification remain required. #2458 remains separate, historical #2456 attribution is retained, and #2319 activation remains deferred.

  10. added
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 21, 2026
  11. removed
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 21, 2026
  12. schlessera commented on Oct 21, 2026

    @schlessera
    OwnerAuthor

    Decision (maintainer, 2026-10-21): correct the attributed boundary by having app.close() cancel in-flight read-only (gate: "shared") brain runs after a short grace period. Runs that write Markdown or git are not interrupted. This is implemented under #2473, which carries the scope and acceptance criteria. This issue's own receipt requirements (#2279's full-pressure pass and the loaded re-run) still apply once #2473 lands.

  13. added
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 21, 2026
  14. schlessera commented on Oct 21, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 resumption: main advanced from c2f080f to 2db5626 through #2478. Its automatic main CI run 39675767925 reports success; this statement is an API conclusion, not a new independent checkout audit.

    #2478 adds retained planning observations and preserves the consumer assertions/deadlines. Its own remaining-work section says the timeout mechanism and targeted correction are still open. #2465 was closed immediately after that observer merge; closure alone is not interpreted here as repair or satisfaction of this candidate's failed selected proof. The original run 39595607928 remains failed and all diagnostic limitations remain recorded.

    One dedicated GPT-6-Astra child is refreshing the preserved #2464 source onto current main, reviewing the relevant observer/worker changes and obtaining required local affected proof. No hosted confirmation, pressure run, ready transition, push or integration reservation is allocated to that child. The exact previous candidate c2932a6 and its receipts remain preserved. Parent owns review and later proof disposition.

    #2473 is independently owned through #2475; its grace-then-cancel work and required loaded rerun remain separate. #2319 activation remains deferred. Finite integration-state inspection found no active reservation, so none was released or acquired. Existing parent claim e1849-2457-20261021-r4-cancel remains the scoped owner of this refresh.

  15. schlessera commented on Oct 21, 2026

    @schlessera
    OwnerAuthor

    2026-10-21 refresh review: local head 7d4db2a26fbf08117dc9d45b5327e31d87f21c19 / tree e79af978ccf6944bcb558bd76e093373cdc140ff preserves the history merge of c2932a6 with main 2db5626. Final fetched main is unchanged. Parent independently verified all 89 evidence files / 1,971,530 bytes; manifest SHA256 30c263d1a0b7941dc9a074608510585e8867edd553eb42d0bd6c1c57ab4609a8.

    The focused run passed 62 cases and failed one new upstream observer control: its expected complete record was marked incomplete because more than ten host processes were busy. All admission, owned-prune and consumer controls passed, as did strict types. Required check:pr remains unrun; the plan-only output is not a preflight pass. The observer failure is separately tracked by #2481, attached to #1849, with one isolated GPT-6-Astra implementation worker. Production caps, truthfulness, deadlines and real accounting guarantees must remain.

    The clean local refresh is retained without push; PR #2464 remains draft at c2932a6. Resume required local qualification after the scoped observer correction, then reassess hosted prerequisites. No unchanged retry, pressure attempt, ready transition or merge reservation occurred. #2473 and the historical planning-timeout evidence remain separate.

  16. schlessera commented on Oct 21, 2026

    @schlessera
    OwnerAuthor

    Local qualification resumption — 2026-10-22

    The observer-control prerequisite #2481 is delivered by #2483 / dcf5341. Candidate proof passed; automatic main run 39688976449 passed all 17 jobs, with every actual checkout independently verified against the squash and the aggregate confirming all categories succeeded without retained results. The scoped correction preserves production observer limits and consumer assertions/deadlines; no historical timeout cause is inferred.

    The prior local refresh 7d4db2a26fbf08117dc9d45b5327e31d87f21c19 and its ambient observer assertion failure remain preserved. One GPT-6-Astra worker now owns the local merge of the delivered correction and required affected controls, strict types and check:pr under existing parent claim e1849-2457-20261021-r4-cancel. PR #2464 remains draft at c2932a6 until parent review of fresh local proof. No pressure allocation, hosted dispatch, ready transition or reservation is included in this local task.

    Blocked by #2473

    That independently owned shutdown correction and the maintainer-required loaded rerun still govern full issue completion. The historical failed hosted run and original pressure acceptance criteria are unchanged.

  17. schlessera commented on Oct 22, 2026

    @schlessera
    OwnerAuthor

    Unblocked: #2473, #2473, #2465 are closed, so scripts/sync-project.ts is removing the blocked label.

  18. removed
    blockedWaiting on another issue or an upstream dependency. Say which in the body.
    on Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyContext and acceptance criteria are complete enough for an agent to take this unattended.area: ciCI workflows, the gates they run, release scripts, packaging.area: ui-reactReact chat/files/voice components, stores, WebSocket transport.area: ui-serverHono app factory: turn coordinator, auth, session catalog, routes, cron.priority: p2Wanted, not scheduled. Pulled in when a milestone has room.type: fixSomething is broken and must behave the way it is documented.

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions