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]>
This commit is contained in:
2026-09-26 14:54:18 -05:00
co-authored by Claude Opus 5.5
parent 21e3e908b6
commit af4203ca92
67 changed files with 2417 additions and 78 deletions
@@ -0,0 +1,18 @@
{
"at": "2026-09-15T00:11:38.757844+00:00",
"newBackend": [
3414098,
"76594640"
],
"health": true,
"pageMatchesReviewedR2": true,
"allRowsHaveAttributionField": true,
"inapplicableAttributionNull": true,
"legacyRegisteredUnknownCount": 2,
"agentPaneIdentitiesUnchanged": true,
"connectorIdentityUnchanged": true,
"allRegistrationBytesUnchanged": true,
"rocko": [],
"rockoWritePerformed": false,
"blocker": "Rocko registration PID 185602 is dead; native context/lock PID is 3707667. No identity repair authorized."
}
@@ -0,0 +1,2 @@
{"at": "2026-09-15T00:10:51.631297+00:00", "event": "owner-authorized-restart-intent", "oldBackend": [3769124, "72871926"], "agents": {"default/darkwing": [[2733924, "12863634"]], "default/dewey": [[934346, "466065"]], "default/filbert": [[72183, "100870"]], "default/researcher": [[173699, "66404285"]], "mosaic-fleet/rocko": [[90599, "128275"]]}, "connector": [3022843, "67887873"], "registrationHashes": {"seats/repo/darkwing/registration.json": "4eda287e7f3bee8967052d90d5a15fb8bb61457e25991192bfaffcaba92c6075", "seats/repo/filbert/registration.json": "efe469ed81855c7e4d4667146a2e520c3a5f953a534cf4a90d6739d2e6335767", "seats/repo/rocko/registration.json": "2195325104fdaf13e5a8d351143f6c046144b9b99865d18b21d01564ac23b327", "seats/repo/dewey/registration.json": "92960db9f3f3d5c56c5cc79d23f39b3df3f1dcdeaae61bccbf0e62d98563aa6c", "seats/repo/researcher/registration.json": "77816e560918d2a9534ff2c97ef201605fbb5b6ef8e341d4dd948684082563fa"}, "configHash": "8e6b3a4049c7ab11ab6d842d974da0bcf07985cf4db988995436ed4b94b44338", "rockoWriteBlocked": {"registeredPid": 185602, "nativePid": 3707667}, "pinsVerified": 18}
{"at": "2026-09-15T00:10:51.650299+00:00", "event": "replacement-started", "newPid": 3414098, "oldExitedGracefully": true, "log": "/tmp/task-attribution-backend-gmaofryr.log"}
@@ -0,0 +1,7 @@
{
"at": "2026-09-14T14:08:03.786Z",
"issue": 1511,
"exit": 4,
"explicitByRejected": true,
"liveFilesChanged": false
}
@@ -0,0 +1,34 @@
# Proposed #1511 local test envelope
Original proposal retained below. Jason authorized the backend update, completed
2026-09-15. Rocko's stale registration blocked that target before mutation.
Jason then explicitly authorized Filbert instead and confirmed Claude console
integration remains separate. The Filbert metadata update and live API checks
passed; operator visual acceptance is pending. Receipt: live-test.jsonl.
No Rocko registration or process was changed.
- Reverify the approved R2 pins and current backend PID/start/command/config.
Record the five native agent identities and connector service identity.
- Restart only the control-board backend on loopback 7331, using its existing
command/config. Do not restart agents, WebUI or the Discord connector.
- Verify health and that the updated reader accepts existing records. Check
actual asset loading before claiming either presentation loaded R2.
- For the visual test only, update the repository-native Rocko registration's
task to '#1511 task attribution user test', with explicit setter darkwing.
Use the reviewed seat task command and explicit repo layout. First verify the
registration matches the intended native session; a mismatch blocks the write.
- Preserve the original registration privately outside the repository. Never
print its contents. Assert only task, taskSetBy and updatedAt change, with all
identity fields and startedAt preserved. No other registration may change.
- Verify API selection and ask Jason to inspect the 'set by darkwing' tag and
caller-claim wording. Legacy registered attribution remains unknown; inferred
and connector tasks remain not applicable. Agent/connector identities unchanged.
Rollback: before any attribution write, an incompatible old reader can be restored
only from the retained prior artifact. After the one authorized write, restoring
an old reader requires restoring that record's original task metadata first, with
an exact unchanged-current-record check. If anything else changed, stop rather
than overwrite it. Keep the compatible reader while resolving the conflict.
No broad metadata migration or automatic rollback over concurrent edits.
This envelope does not authorize publication or the later Filbert behavior task.
@@ -0,0 +1,3 @@
{"at": "2026-09-15T00:36:13.204764+00:00", "event": "owner-authorized-filbert-test-write", "target": "repo/filbert", "backup": "/tmp/task-attribution-filbert-k3o7zimk/registration-before.json", "nativeIdentity": [793364, "56603274"], "backend": [3414098, "76594640"], "agents": {"default/darkwing": [[2733924, "12863634"]], "default/dewey": [[934346, "466065"]], "default/filbert": [[72183, "100870"]], "default/researcher": [[173699, "66404285"]], "mosaic-fleet/rocko": [[90599, "128275"]]}, "connector": [3022843, "67887873"], "beforeHash": "efe469ed81855c7e4d4667146a2e520c3a5f953a534cf4a90d6739d2e6335767"}
{"at": "2026-09-15T00:36:13.852595+00:00", "event": "verified", "agent": "filbert", "task": "#1511 task attribution user test", "taskSource": "registration", "taskSetBy": "darkwing", "afterHash": "1bc90238adcb0210fcd027d76ac2d87e292d5fe29e6892d4c3efad4fddb93edd", "onlyAllowedTaskMetadataChanged": true, "allOtherRegistrationsUnchanged": true, "agentAndConnectorIdentitiesUnchanged": true, "backendUnchanged": true, "operatorVisualAcceptance": "pending"}
{"at": "2026-09-15T00:47:20.173624+00:00", "event": "operator-visual-confirmed", "tableEvidence": "/tmp/pi-clipboard-afe5713e-77ed-4be6-9a24-d455178ed1f0.png", "inspectorConfirmed": "darkwing (as claimed by the caller, not verified)", "scope": "bounded local attribution delivery; publication and Gate F separate"}
@@ -0,0 +1,15 @@
d289ec7d3a45c541346ece6b32908d75efe4ca0ad47df729bcf493d9bc9be718 packages/seat/src/seat.mjs
a2880bd7b66cd9d6fc3588cc739eadc5db7fe806f81da86e0ac09bbff15a3099 packages/seat/src/cli.mjs
4bb04a3188ab9c5c985206da83bc1cc6f9be042a072aad75224560e7acf57e29 packages/seat/README.md
c06f2fc951ce56c905a98175dc82966893a2ba801405fb407c6c59363d029288 packages/seat/tests/seat.test.mjs
a40c57d011ce54956856c77e6758ca12dcd0ffd4be0d53ae2707b7d3fe3708b1 packages/control-board/src/scan.mjs
7f9b3b684e8af9f933d23cab956d32aad345b61be5001f8f6f591d3a91c57d12 packages/control-board/src/page.html
5f3bf97fd90045b2b1f08f2922ec0f6b33b3729bef39f9bfcbe0229dcd6e2080 packages/control-board/README.md
06a7eab5fa07ca83a210c5317e99ecccff8e8085197b7f66bbbecd67a4d8d541 packages/control-board/tests/scan.test.mjs
41bcaf8685437f130edc98aad92cfdb62e8201ee1861531ee9fa99069f681885 packages/control-board/tests/serve.test.mjs
64a67c91021de0c0ca583b65f8eed23e7e14415f2c18677b80754a7178363d04 packages/control-board/tests/discord.test.mjs
772d564b974de9d30df296d538e7878ceb2421f479ed07285456e7d43dfef8b9 packages/webui/src/public/app.js
0aea0461d9a63b43e7cd2fea7cbaf335af48470b01481d3507a48bce8c355f79 packages/webui/tests/fixture.mjs
d45b138bdb5a3eaf6cf2470b7b2beed16de0a635ad1868c8d25336b4040fe163 packages/webui/tests/browser.test.mjs
d39e5d1e1b7e3d4aa6689e20faabeee6691656e8661f866d98731912eb140d06 packages/webui/tests/browser-edge.test.mjs
c97fd047a970326c096a4771f9bd49496fb6ff244047ea5c1e59bdd7adaeefa2 packages/webui/tests/discord.test.mjs
@@ -0,0 +1,46 @@
# #1511 R1 combined review
Author Rocko. Frozen candidate /tmp/task-attribution-r1-frozen-sRoqqr5m.
15-file manifest: r1-manifest.sha256, SHA256
0185cc65c973f6d89c394e2e9fba67fccd794b8ad2be2720a8bb3700b2b018a3.
Darkwing independently matched every author pin against frozen and working files.
The author snapshot contains selected files, not a standalone runnable checkout.
Both independent lanes returned before correction authorization.
## Filbert backend verdict
APPROVE AS SOURCE for exact R1, subject to separate presentation review.
Reported independent serialized seat/board/WebUI 141/141 in both working tree
and dependency-complete overlay /tmp/filbert-task-attribution-review-EaqP6CYc.
Log: TASK-ATTRIBUTION-TESTS.txt in overlay. Working launcher regressions 6/6,
/tmp/filbert-task-attribution-launchers.txt. Additional invalid-environment and
control-character probes passed. All 15 pins matched after tests.
Confirmed optional v1 compatibility, precedence/refusal rules, preservation of
other fields and task-selected attribution only. No backend blocker.
Nonblocking comment correction: bounded identifier syntax does not guarantee
absence of private identifiers. Numeric IDs and email-like names still fit.
Remove that inaccurate privacy claim in a separately pinned R2.
## Dewey UX verdict
REQUEST CHANGES, R1-U1. WebUI inspector maps null/inapplicable attribution to
unknown, conflating a transcript/connector task with a legacy registered task
whose setter is unknown. Preserve null as not applicable or a missing-value
marker. Keep unknown for a selected legacy registration. Add assertions for
legacy unknown, transcript/Discord null, and transition from a known setter
without stale attribution. Existing edge expectation currently enshrines the bug.
Dewey independently ran matching working-tree browser, browser-edge and Discord
suites, 3/3 passed, 330 contrast samples. Frozen/working pins matched before and
after. No screenshots, live observation or full backend verdict claimed.
Escaping, placement and reply boundaries otherwise passed his scoped review.
## Disposition
R1 is not approved for integration. Preserve its snapshot and manifest. Rocko
corrects R1-U1 and the inaccurate comment, reruns applicable checks, and supplies
R2 with changed/inherited pins. Both review lanes then verify the exact R2.
The missing docs/TOOLS.md usage flag is required additive documentation; preserve
other owners' dirty edits when adding it. No Gate F, live change or publication.
@@ -0,0 +1,15 @@
eec970961a667c9e614d1474d33c31a019b2cf1b0bf931a51458d874bca13a15 packages/seat/src/seat.mjs
a2880bd7b66cd9d6fc3588cc739eadc5db7fe806f81da86e0ac09bbff15a3099 packages/seat/src/cli.mjs
4bb04a3188ab9c5c985206da83bc1cc6f9be042a072aad75224560e7acf57e29 packages/seat/README.md
c06f2fc951ce56c905a98175dc82966893a2ba801405fb407c6c59363d029288 packages/seat/tests/seat.test.mjs
a40c57d011ce54956856c77e6758ca12dcd0ffd4be0d53ae2707b7d3fe3708b1 packages/control-board/src/scan.mjs
7f9b3b684e8af9f933d23cab956d32aad345b61be5001f8f6f591d3a91c57d12 packages/control-board/src/page.html
5f3bf97fd90045b2b1f08f2922ec0f6b33b3729bef39f9bfcbe0229dcd6e2080 packages/control-board/README.md
06a7eab5fa07ca83a210c5317e99ecccff8e8085197b7f66bbbecd67a4d8d541 packages/control-board/tests/scan.test.mjs
41bcaf8685437f130edc98aad92cfdb62e8201ee1861531ee9fa99069f681885 packages/control-board/tests/serve.test.mjs
64a67c91021de0c0ca583b65f8eed23e7e14415f2c18677b80754a7178363d04 packages/control-board/tests/discord.test.mjs
954d98fa2e6b264ed751857f0b76bb36c966c1ef59e4b091eb0b5351e84783d7 packages/webui/src/public/app.js
0aea0461d9a63b43e7cd2fea7cbaf335af48470b01481d3507a48bce8c355f79 packages/webui/tests/fixture.mjs
01636f05a8a59e8aaf7da000e631b83718b79a5e5bbc36d5b67738215cc250a7 packages/webui/tests/browser.test.mjs
b1c2860e69bb099fda476c291c41adddf736dcaf99b68620d5401ce92396336a packages/webui/tests/browser-edge.test.mjs
24cf26c357164857f29be4f47204812d560310ee79dfbfebd7aa48f7a84ba9b0 packages/webui/tests/discord.test.mjs
@@ -0,0 +1,41 @@
# #1511 R2 source approval
Author Rocko. Frozen /tmp/task-attribution-r2-frozen-3PqORMJP.
15-file manifest r2-manifest.sha256, SHA256
d4c963952b3f2b0e1c99133b3fe3fefa4c1883b79a009dc1f8d20ef58b46ca16.
Darkwing verified all working/frozen pins and all retained R1 pins. Exactly five
changed files, ten inherited. R1 remains unchanged.
Filbert independently APPROVED backend/schema/tests as source. He verified
working/frozen/overlay pins after 141/141 serialized seat/board/WebUI checks in
both working tree and /tmp/filbert-task-attribution-r2-review-v6KDM7pv.
Log: R2-TESTS.txt there. Privacy-syntax comment finding closed.
He also approved only Darkwing's additive TOOLS usage patch, SHA256
86bcba3c2889b12151aefa1fa266fff81bb91126450b2deeb7ca519869ff2253.
Other dirty TOOLS changes are not adopted or approved by that verdict.
Dewey independently APPROVED scoped source UX. R1-U1 CLOSED. Null stays not
applicable, legacy registration unknown stays unknown, and transition assertions
remove prior setter names. Matching working-tree browser/browser-edge/Discord
checks 3/3 passed, 330 contrast samples. No screenshots or live visual observation.
He rechecked all 15 pins after tests. Dependency context was the working tree.
Darkwing additionally ran the broader working-tree command:
node --test --test-concurrency=1 packages/control-board/tests/ packages/webui/tests/ packages/seat/tests/ packages/mosaic/tests/ packages/ledger/tests/ packages/discord/tests/
344/344 passed, exit 0. Log /tmp/darkwing-task-attribution-r2-tests.txt.
This is serialized local verification, not CI or default-concurrency success.
## Reader compatibility and remaining gate
Filbert and Darkwing independently reproduced the old strict-v1 reader rejecting
a new taskSetBy field. New readers accept both old and new records.
Darkwing's synthetic-only receipt is reader-compatibility.json; no live record
was used for that probe. Optional v1 is backward-read compatible, not old-reader
forward compatible. Update cached readers before any live attribution write.
Do not roll an old reader back over new records without an approved restoration.
Source approval is complete. Live reader update, operator testing and publication
remain separate. Gate F and the Filbert stale-relaunch assignment are not started
or claimed by these approvals. No agent or connector restart is authorized here.
@@ -0,0 +1,8 @@
{
"at": "2026-09-14T14:28:14.532Z",
"oldReaderRejectsNewField": true,
"newReaderAcceptsOldAndNew": true,
"syntheticOnly": true,
"liveRegistrationReadsOrWrites": 0,
"requirement": "Update cached readers before first live attribution write; old-reader rollback is incompatible with new records."
}
@@ -0,0 +1,5 @@
--- a/docs/TOOLS.md
+++ b/docs/TOOLS.md
@@ -137 +137 @@
-scripts/mosaic seat task <seat> <text> [--layout repo|fleet|unknown] [--config PATH]
+scripts/mosaic seat task <seat> <text> [--by NAME] [--layout repo|fleet|unknown] [--config PATH]