docs(records): row 25 approver fix, second Discord restart, SetSpark approver and docker network gaps

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-09-26 16:31:11 -05:00
co-authored by Claude Opus 5.5
parent 20ea5a0b64
commit c5db8c8819
4 changed files with 78 additions and 0 deletions
+46
View File
@@ -3074,3 +3074,49 @@ extension enables the eight record and approval verbs from it. Receipt
(0600): `restart-row25-20260926T205803Z.txt` in the Sage evidence directory.
Jason's live check (one work item, one proposal approved by button) is still
to do.
## 2026-09-26: row 25 approver names, a second Discord restart (#1509, Sage, reviewed by Rocko)
Correction to the entry above: the 20:58Z restart put the SetSpark verbs
live, but the approval half did not work. In Jason's live check, SS-027 was
created and read back. DEC-009 was also created, but no Approve button was
posted. The Discord Sage had written `required_approvers` as `["Jason",
"Carmen"]`. The SetSpark service stores approvers as `discord:<id>` and
accepted the names without checking them. `open_approval_request` then
passed the names to the connector, and `validateRequest` refused them ("bad
approver id"). The connector was right to refuse. The gap was that the model
had no way to write a valid approver, and no test ran create through the
connector's check.
After: 20ea5a0b.
- The binding's `users` provide the approver names.
- `record_create` and `record_update` turn each name into `discord:<id>`.
An unknown name, a raw id, a duplicate or a non-list is refused before
any request goes out, and the refusal does not echo the value.
- `hideIds` removes Discord user ids from every SetSpark tool text and
refusal, before any field is cut. The connector's approval request still
carries the bare ids.
- With `setspark` set, a reload that changes a user's id or name is refused.
That change needs a restart.
- A local contract fixture runs from create through `validateRequest`, and
the old name-stored shape still refuses.
Rocko asked for two revisions. R1: a refused id was echoed back, and ids
leaked through nested or embedded text. R2: the service code and bad
property names were cut before hiding. Rocko approved R3 (81379830…, report
da75219f…). The eight suites passed on an index export
(24/90/43/17/14/15/63/18), and the Discord node tests passed 173/173.
The first R3 task and release runs failed 31 and 3 tests. The cause was
Docker running out of network address pools, not the change. My own stale
index-export compose networks had used them up. I removed the five that
were mine, none with a container attached, and both suites passed on the
same export. Follow-up in DEFERRED.
Restart at 21:30:21Z from 20ea5a0b, with `packages/discord` clean. Old PID
499064 stopped cleanly. The new PID is 954332 with pi child 954554, and the
gateway was READY at 21:30:22Z. Pi's `setspark` config has the approver
names jason and carmen. Receipt (0600):
`restart-row25-approvers-20260926T213021Z.txt`. Jason reruns the approval
check. DEC-009 needs a `record_update` to names, or a new decision, and
then a new approval request.
+5
View File
@@ -391,3 +391,8 @@ are never rewritten or removed; corrections are new entries.
2026-09-26T20:35:44Z | Dewey (T3 Claude Code, thread 84fb346c) | #1507 board Host/Origin guard before CHAT-02 | Correction: the entry above at 20:35:39Z used the wrong line format; this one restates it. packages/control-board serve.mjs foreignRequest (d0a9bbed) plus two failing-first tests in serve.test.mjs (e01d7bd9); HEAD fails at foreign Host, six mutations each fail, control-board/webui/seat suites 149/149. Packet agents/dewey/work/board-guard/NOTES.md for Rocko via Sage. No commit or push.
2026-09-26T20:38:14Z | Sage (T3 Claude Code, thread 1ef1e4f8) | Integration: board Host/Origin guard | Rocko approved de9ff942 (review 5a12f08e); Sage committed the guard with records after suites on an index export, pushed, and restarted the control board. Discord restart still held on 6b R2.
2026-09-26T20:58:56Z | Sage (T3 Claude Code, thread 1ef1e4f8) | #1509 row 25 SetSpark live, Gate F routing | Found resolveToolRoots dropping setspark; fixed with failing-first test, Rocko approved, committed 6c06a6f3 and pushed; restarted mosaic-discord@shared-signals (890894 -> 499064), pi has the eight SetSpark verbs. Ruled Darkwing's three Gate F questions; Filbert reviews the brief. Jason live check pending.
2026-09-26T21:04:43Z | Filbert (T3 Claude Code, thread 9cb9731e) | #1508 queue plan round 6; Gate F T3 ledger source brief review (#1506) | Plan re-pinned 889f2566 (Sage's jarvis path and 403 rulings), then 282fabbb answering Rocko r5 (3b031a70): Gate G pins before launch and audits retrospectively, since Pi writes no session file before the first assistant message, and the first entry's parentId is null (G1); the guard is checked as active on every invocation with a git hook run canary, scratch-checked (G2); lead login jarvis. Sent to Rocko for round 6. Gate F brief R1 08959a05: revise (review 19dda29a; WAL tests, live read-only DB counts, header cross-check, test isolation); R2 e8300cb6 approved with 3 nits (review bb02d8d3). My W2 clean-stop claim was wrong, and a correction entry was appended. No source edits, commit or push.
2026-09-26T21:05:39Z | Dewey (T3 Claude Code, thread 84fb346c) | #1507 CHAT-02 backend (packages/conversation) and board routes, at review | New read-only Pi history reader (safe-fs, parser, CHAT-01 pages, pinned snapshots, cursors, follow) plus GET /api/conversations and /api/conversation after the Host/Origin guard. Suites 175/175; chat-00/01/01c checks pass; real data 19 rows, 102 pages, 0 schema-invalid; mutations 27/28 reader (one equivalent) and 9/9 routes. Packet agents/dewey/work/chat-02/BACKEND.md pins nine files. Darkwing asked to review the routes; Filbert's code review request goes when his turn ends. No commit or push.
- 2026-09-26T21:06:18Z | filbert (T3 9cb9731e) | #1508 round 6 approved by Rocko (report 80cde839, verified; builder note: capture H before the step-1 canary and reuse it for base and CAS), plan left at 282fabbb; Gate F R3 f3c05c1b confirmed and approved, review be1aa414 | reported to Sage and Darkwing; no commits
2026-09-26T21:14:06Z | Filbert (T3 Claude Code, thread 9cb9731e) | #1507 CHAT-02 backend code review | Packet 286c3ad5 (nine pins verified): revise. The candidate alone passes 175/175 in a clean worktree. Three required fixes, each reproduced: branch id moves with every append; the assumed-link bridge merges branches; EACCES on a directory component turns the catalogue into a 500. Three small items. Report 27d64e14, scripts in agents/filbert/work/chat-02-backend-review-evidence/. No commit or push.
2026-09-26T21:31:11Z | Sage (T3 Claude Code, thread 1ef1e4f8) | #1509 row 25 approver fix and second Discord restart | Jason's live check found no Approve button (DEC-009 approvers stored as names). Fix 20ea5a0b (Rocko R1/R2 revise, R3 approve 81379830), pushed; restart 21:30:21Z, PID 954332, pi has approver names jason,carmen. Approval recheck with Jason next.
+13
View File
@@ -181,3 +181,16 @@ which stay with him. Each item names who decided it and what happened.
each round stays small. C ships inside A1. Gate F's code goes ahead on
Filbert's verdict, without a separate look from Jason. The design calls
are the lead's (item 12).
16. **Row 25 approvals, second fix and restart.** Jason's live check found no
Approve button. DEC-009's approvers had been stored as names, and the
connector refused them. Sage fixed it so the model writes user names,
the connector maps them to Discord ids, and no id reaches tool text.
Rocko approved R3, and the fix is 20ea5a0b, pushed. Sage restarted the
connector at 21:30:21Z, the second restart today. It is a local dev
service, and Jason was waiting on the check. Two design calls:
- A user id or name change with `setspark` on needs a restart, not a
reload.
- Tool text drops every Discord user id, including ids the binding
doesn't know.
The SetSpark service accepting free-text approvers is reported to
Jason as a shared-signals gap. Mosaic doesn't change it.
+14
View File
@@ -114,6 +114,20 @@ at every gate. Started 2026-09-12 during the control board MVP.
of the runtime files. Until then the rule is that unreviewed Discord source
stays uncommitted in the tree only as long as a review needs it.
(2026-09-26, #1509)
- **SetSpark service accepts any string as a decision approver.** Create
checks only that `required_approvers` are distinct non-empty strings, and
approval checks `discord:<author id>` against them. So a decision stored
with names (DEC-009) can never be approved, and nothing says so until
an approval is tried. Mosaic's connector now writes only `discord:<id>`
(20ea5a0b), but the service should refuse other shapes. This belongs to
shared-signals, not Mosaic. Reported to Jason. (2026-09-26, #1509)
- **Index-export suite runs leave Docker networks behind.** Each export
directory becomes a compose project, and its `<dir>_default` network
stays after the run. On 2026-09-26 the host ran out of address pools. The
task and release suites then failed 31 and 3 tests with "all predefined
address pools have been fully subnetted". Sage removed its own five stale
networks. The dw-* ones are still there. Fix: the export recipe, or the
suites, removes the project network on exit. (2026-09-26)
## Queue