Files
stack/agents/darkwing/work/relaunch-activity/engine-diagnosis.md
T
jason.woltjeandClaude Opus 5.5 af4203ca92 feat(board): session attention, Discord rows, task attribution and relaunch activity (rows 18, 22, #1511, #1512)
One cumulative control-board, webui and seat state. The four rows edit the
same files (scan.mjs, page.html, README.md, app.js), so they land together,
each on its own receipt:

- Row 18, Discord connector rows on the board (#1509): R3 approved by
  Darkwing and Dewey, Gitea comment 26257, manifest 254403b8. Jason
  accepted the visual test.
- Row 22, board attention status (#1503): Filbert approved R1, comment
  26248, manifest e40b58ec; restart receipt 26249.
- #1511, task attribution (row 6 code phase): R2 approved by Filbert and
  Dewey, manifest d4c96395. docs/TOOLS.md carries the approved --by usage
  line (tools-usage.patch 86bcba3c).
- #1512, relaunch activity (row 6 pilot): R1 approved by Darkwing and
  Dewey, candidate manifest 47769fad. All seven source files match it.

Row 16, internal development bootstrap (#1510): the seven files outside
shared records match Filbert's R1 pins, receipt 26204 (agents/researcher/*,
scripts/test-darkwing-launch.mjs, the bootstrap plan).

packages/webui/src/public/app.js is committed at its #1512 R1 pin ce7d79a4.
The working copy holds Dewey's unreviewed return-flow candidate on top of
that, and it stays uncommitted.

Also: the four row briefs and Darkwing's evidence records under
agents/darkwing/work, including the 2026-09-26 tree manifest and the #1512
re-run against 21e3e908. Serial acceptance command: 397/397, three runs.
The failures that only show when tests run concurrently are in #1509 engine
tests, and they reproduce on clean HEAD.

Suites on the exact staged tree: config 24, task 90, foundation 43,
conductor 17, release 14, auth 15, discord 63; package union 397/397
(serial); test-darkwing-launch 5/5.

Shared records (BUILD-LOG, QUEUE, CURRENT, DEFERRED, SESSIONS, AGENTS.md,
agents/README.md) follow in Sage's records commit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-26 14:54:18 -05:00

3.1 KiB

#1512 inherited engine diagnosis

Rocko returned a read-only investigation. No source correction, live connector operation or authority transfer follows from it. Filbert's seven source pins remain the #1512 candidate; they do not change Discord engine code.

A. Test synchronization and cleanup

Rocko reports the tool-turn test asserts engine.busy immediately after prompt resolution at agent_end, while busy clears on a subsequent agent_settled event. Separate pipe reads allow the assertion to run between events. Another basic prompt test uses the same assumption. Success-only engine.stop cleanup leaves the fake child and pipes open after an assertion fails, hiding the final spec report and making the test file hang.

Darkwing independently ran Rocko's scratch relay with DELAY=50 and finally cleanup. It failed 'busy after plain resolved', true versus false, and exited in 148ms. Log: /tmp/darkwing-1512-race-confirmation.txt. This confirms the race mechanism, not the exact historical assertion from the earlier truncated spec log.

Rocko's scratch directory: /tmp/claude-1000/-mnt-storage-src-mosaic-stack/0422f20f-4d8c-43fe-b429-a2730cc1ab9d/scratchpad/1512/ Includes proxy-pi.mjs, race-repro.test.mjs, hang-repro.test.mjs, hang-noforce.txt, hang-force.txt and stress/base-prev run logs. He reports natural busy failures at lines56/75 under contention and deterministic hang behavior without finally cleanup. Darkwing did not repeat load stress.

B. Timeout test synchronization

Rocko reports a 100ms timeout test reads fake-pi's command log before the child has created it or recorded abort under contention. That assertion can also skip success-only cleanup. He observed this in both prior and row21 code. Not the specific failed test named in Darkwing's first run.

C. Separate engine behavior concern

Rocko reports a next-prompt refusal after a client timeout when a done pending entry remains, busy is false and agent_start has not yet been consumed. prompt() then omits followUp because it considers only pending entries not marked done. The still-streaming fake engine refuses that prompt. This is a potential real engine defect, not merely the busy assertion race. No live incident is established.

The row21 owner retains this code. Darkwing notified orch-01 on its verified named socket and requested ownership/disposition, not a code takeover. A focused owner fix needs regression coverage and review. Suggested direction from Rocko: account for unsettled pending runs when choosing followUp; do not blindly change logic from this note alone. Test cleanup and event synchronization also need correction.

Provenance and gates

Rocko reports frozen Discord files match row21 commit1ac812d3, not the stated archive basec4fc8e7d in HANDOFF. Darkwing requested Filbert's construction evidence and append-only provenance correction outside frozen R1. Do not rewrite the old handoff or infer its base from a mutable HEAD.

The later 351/351 bounded run remains valid narrow evidence; the earlier failure is not erased. Integration stays held for owner disposition and provenance reconciliation. No live action, publication, operator acceptance or GateF claim.