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]>
Darkwing development TUI
From any terminal, run:
/home/jwoltje/src/mosaic-stack-dev-test/agents/darkwing/launch.sh
The agent launcher is a thin shim to scripts/agent.sh --host-dev darkwing,
forwarding all arguments unchanged. scripts/agent.sh is the common entry
point; scripts/agent-host-dev.sh implements its native development mode.
The host launcher opens the repository as Darkwing's workspace.
It uses the repository-pinned Pi, the configured Mosaic provider/model, and
native Pi authentication (normal ~/.pi/agent, or PI_CODING_AGENT_DIR if
explicitly set). It never copies credentials. Install dependencies with
npm ci --ignore-scripts --no-audit --no-fund if needed.
--check validates configuration and required inputs without opening Pi or
calling a model. --fresh starts a new conversation without deleting earlier
ones. Normal launches continue the latest conversation under
.pi/state/darkwing/sessions/; the first launch creates one. A launcher lock
rejects simultaneous launches through this script. It does not exclude Pi
processes started another way. Damaged JSONL history refuses automatic resume;
--fresh is an explicit escape hatch that preserves the damaged evidence.
The current files are combined into a private launch snapshot under
.pi/state/darkwing/launches/:
contracts/CONSTITUTION.mdandcontracts/STANDARDS.mdagents/darkwing/SOUL.md<configured dataRoot>/user/USER.md, the deployment's live user profile- the repository's
AGENTS.mdand Darkwing'sCONTEXT.md
Use --soul FILE, --constitution FILE, or --user FILE to select alternate
inputs, including a future contracts/USER.md. Relative paths resolve from
the repository root. Missing or empty inputs refuse launch. Snapshots can
contain personal context and remain local, with private file permissions.
Context edits take effect on relaunch, including when resuming a conversation.
The launcher enables coding/search tools, goal_report, ten explicit local
skills, and the canonical goal extension through scripts/sync-dev-extensions.sh.
Ambient context, skills, extensions, templates, and themes are disabled.
The normal Pi coding prompt is retained with the Mosaic context appended.
Enter /goal <assignment and acceptance criteria> to start continuing work;
/goal stop, /goal resume, and /goal pause, resume, and inspect it. A new
process does not automatically adopt a previous process's goal.
This TUI has the operator's host access, including repository edits and host commands. Its tool list is not OS isolation. It creates no managed role or fleet registration. Worker dispatch still uses the governed Mosaic task runner. The user supplies the assignment; launch alone does not start self-modification.
Deployment findings
The existing scripts/agent.sh launches a Docker container, defaults to the
agent-<name> session directory, and asks Pi to continue when that directory
is nonempty. Its default workspace is <dataRoot>/workspaces/<name>, not this
checkout. src/load-contracts.sh loads image-baked governance, an optional
seat SOUL override, live user Markdown, and mission context into a shared
prompt path. A seat override requires agent.json; a standalone SOUL is not
discovered. adapters/pi/adapter.sh disables extensions. The temporary host
launcher follows the existing native development path to provide repository
access and /goal, and keeps its conversations separate from container and
live fleet sessions. It does not invoke release alignment on startup.