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

59 lines
3.1 KiB
Markdown

# #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.