Commit Graph
2937 Commits
Author SHA1 Message Date
jason.woltje e1bfc2cd45 queue: row 65 in progress and brief re-pinned to 802e046c with its gate, row 168 approved by Dewey and done (sage revs 1937, 1939-1941; dewey rev 1938) 2026-10-19 08:26:01 -05:00
jason.woltje 8e2cbb5558 brief: row 65 keeps the instance vars as its one source, adds fallback vars and the full harness list (decision 151, #1558) 2026-10-19 08:24:25 -05:00
jason.woltje efb51169de ledger: count only stack issue numbers, a tracker-name skip and a --first-issue floor (#1665) 2026-10-19 08:24:06 -05:00
jason.woltje 54786df03a sessions: Dewey row 168 review round 1, approve (29121) 2026-10-19 08:10:16 -05:00
jason.woltje c34deedf92 sessions: Sage row 168 build and review request, P19 371 rulings 2026-10-19 08:06:53 -05:00
jason.woltje 3bf16114a1 queue: row 168 in review round 1, manifest candidate, request 29120 (sage, revs 1935-1936) 2026-10-19 08:06:31 -05:00
jason.woltje 6da8fdaa98 sage: row 168 packet, candidate f3a966ea4 manifest, diff, build notes and gate (#1665) 2026-10-19 08:04:58 -05:00
jason.woltje e2ad3aa10d queue: row 168 in progress, brief re-pinned to 52ac1975 and piece updated (sage, revs 1932-1934) 2026-10-19 07:54:31 -05:00
jason.woltje 03586947af docs: row 168 brief amended before build, floor moves to a --first-issue option (#1665); window-plan: mos-0838 rulings in the 3i draft 2026-10-19 07:52:47 -05:00
jason.woltje e69e646b40 window-plan: P19 371 3i window draft for Mos, one or two windows and the restore caveat 2026-10-19 07:49:00 -05:00
jason.woltje c16ba2f0c4 queue: row 168 ledger stack refs added and briefed, #1665 (sage) 2026-10-19 07:46:55 -05:00
jason.woltje a1572a8f7d docs: brief for the ledger counting only stack issue numbers (#1665, P19 372, row 7 follow-up) 2026-10-19 07:45:35 -05:00
jason.woltje 15357b4ba7 sessions: Sage AM standup and row 7 week 10-11 ledger rerun record 2026-10-19 07:43:41 -05:00
jason.woltje b90d944c8c queue: row 7 note, 10-11..10-17 ledger rerun 29089 (sage) 2026-10-19 07:43:27 -05:00
jason.woltje 296972652a queue: row 126 Filbert r2 approve and done (sage) 2026-10-18 20:37:38 -05:00
jason.woltje a267a64b19 sessions: Sage row 126 landing, P19 371 and 372, row 7 week ledger; Dewey queue-126 packet 2026-10-18 20:36:53 -05:00
jason.woltje ca15d73e9f limits: a daily token quota for the account the stack uses, and bus schema 3h to 3i (row 126, #1620)
The business file can name the account claude-code launches use,
`launch.account` = {name, credential}. `name` is an identifier and
`credential` names one login set's environment variables, never a value.
`launch.limits.tokens.daily.<account>` = {limit, since, reset, timeZone}
sets a daily quota for that account. A daily key that isn't the account's
name refuses the business read.

The new plug-in limit-check/daily-quota (interface 2, pure) starts a day at
the first instant at or after `reset` on that local date in `timeZone`. Across
DST that makes a 23- or 25-hour day, and a reset in a skipped hour starts at
the gap's end. It counts the account's known records of all four kinds since
the later of the day start and `since`, and counts unknown turns apart.

The launcher refuses account-credential-missing, account-credential-ambiguous
and account-is-credential (an account name equal to a session credential's
value). Messages name variables, never values. The account rides mayLaunch,
bindLaunch, the usage records, mustStop and the launch record. A pi launch
has no account, records NULL, and no daily quota covers it. `mosaic limits`
and the Console's Settings show one fixed line when a daily row shows:
"Daily quotas count only this stack's own use of the account, not its use
anywhere else."

Bus schema 3h to 3i: 3h reserved usage_records.account as
CHECK (account IS NULL). The new step 3h-3i.sql rebuilds the table in one
transaction, keeping every row's seq and the sqlite_sequence value, and
recreates the three append-only triggers. All of sqlite_master equals 3h's
apart from the account line. A 3h engine refuses a 3i store.
packages/bus/tests/account-migration.test.mjs covers all three, with a
step that fails partway and leaves 3h intact. 3i goes live only through
`stack-release.sh activate ... --migrate` with Jason present (P19 371); the
activate path takes the pre-migrate backup, and the way back is restoring
it (agents/dewey/work/queue-126/MIGRATION.md).

Mos's go mos-0835, six conditions: (1) one transaction, account-migration
test 2 and mutant D29; (2) sqlite_master against 3h, test 1 and mutant D28;
(3) account is never a credential, the launcher's account-is-credential
refusal (launch-account.test.mjs) and the business name pattern
(token-limit-settings.test.mjs); (4) MIGRATION.md, accepted by Mos in
mos-0837; (5) the packet's DESIGN.md "no schema change" line corrected;
(6) the public/ digest below.

The public/ change in bus.js (the daily line under the token-limit table)
carries Mos's decision 123 go mos-0833 on the +/- digest 03e6d9da...ba78,
unchanged at landing.

Owner Dewey, brief docs/plans/2026-10-14_prd-1.2-build.md, "Daily quota for
the credential the stack uses today". Review round 2 rebases the round 4
build onto 1df04f52f (row 167). Reviewer: Filbert approve 29068 on round 1
(manifest d18314f7...8e65); Filbert approve 29080 on
round 2 (manifest f332db76...6fa6).
Seat run on round 2: touched 158/0, singles 1388/0 with 1 esbuild skip,
test-land-work.sh 86/0, 30/30 mutants killed.
Sage gate on 54319f552: GATE_PASSED, 2474+422/0, all 15 packages, the queue
suite and 10 script selftests.

Nothing live.
2026-10-18 20:35:02 -05:00
jason.woltje 54319f5521 sessions: Filbert row 126 r2 review, approve 2026-10-18 20:27:32 -05:00
jason.woltje 4c385db45e sessions: Dewey row 126 round 4 build and review rounds 1-2 2026-10-18 20:27:16 -05:00
jason.woltje 2124cfa761 queue: row 126 Filbert r1 approve, brief re-pin for 3h to 3i, row 7 week note, round 2 in-review (sage) 2026-10-18 20:26:41 -05:00
jason.woltje e264db51ba plans: row 126 brief names the 3h to 3i step and the account guard (#1620)
Filbert's r1 note (a): the scope line didn't name the 3i rebuild or the
account-is-credential guard, which sage-0970 and mos-0835 authorize.
Item 6 describes both. The acceptance list gains the mos-0835 tests, and
the scope bullet now covers the migration step, the version bump and the
guard.
2026-10-18 20:14:03 -05:00
jason.woltje 1df04f52f7 sessions: Filbert row 126 r1 review, approve 2026-10-18 20:09:59 -05:00
jason.woltje 9e2b268660 queue: row 167 Filbert approve and done, row 126 round 1 in-review (sage) 2026-10-18 20:09:07 -05:00
jason.woltje 640a1ee978 sessions: Sage row 167 landing and row 126 3i ruling 2026-10-18 20:08:26 -05:00
jason.woltje 5fa9cc8f2c webui: one settings snapshot and a names read that rethrows a refusal (row 167, #1664)
The Settings page held the launch settings twice, one copy for the launch form and the
token-limit reset and one for the Assistant section. A save in one form left the other with
the old revision, so its next save was refused with revision-conflict. Now one snapshot
serves both. Every successful save or reset sets it from the answer, a read replaces it only
while no form has a draft, and reload clears it.

The names read now rethrows a 403 or signed-out like the usage, instances and limits reads,
so a refusal gives the refused page instead of an empty name field.

Tests: the names refusal, one per snapshot path (launch save, assistant save, reset), and a
null body on /api/name and /api/assistant-stop. limits-browser.test.mjs:54 now expects the
reset's revision on the following save.

Owner Darkwing, brief docs/plans/2026-10-18_settings-reads-after-q169.md.
Mos's decision 123 go mos-0836 on the public/ +/- digest
82a8a810...e984. Mos's F1 and Filbert's notes 1-2 are P19 370.
Reviewer on candidate manifest dba38330...59cc: Filbert approve 29062.
Seat run: 231/0 on all 38 webui files singly, 8/8 mutants killed.
Sage gate on ee3f1fb3f: 2443 package tests and 422 script selftests, 0 failed,
GATE_PASSED 01:06:56Z.

Nothing live.
2026-10-18 20:07:31 -05:00
jason.woltje ee3f1fb3f6 sessions: Filbert row 167 r1 review, approve 2026-10-18 19:37:26 -05:00
jason.woltje 0434ecfef0 sessions: Darkwing lines from 2026-10-16 to 2026-10-19 (rows 137, 141, 150, 87, 155, 162, 165, 166) 2026-10-18 19:12:47 -05:00
jason.woltje 81f26551b4 queue: row 165 r3 in-review, approvals and done, row 166 r2 in-review and Filbert approve (sage) 2026-10-18 19:11:54 -05:00
jason.woltje cff5f31eda sessions: Sage row 165 landing 2026-10-18 19:11:13 -05:00
jason.woltje 9466f3e5ed business: the human adds and changes role instances from the CLI and the Console (row 165, Q171, #1662)
`mosaic business instances BUSINESS` reads the role instances, and
`mosaic business instance add|set` writes one add or change through the
broker's new human-only `instances` and `instances.set` verbs. The writer is
packages/business/src/instance-settings.mjs. It takes the caller's revision,
validates the next document, refuses a definition that declares credentials
(organization-credentials-out-of-scope), keeps protected instances as they
are, logs the human as the actor, and says when the running bus needs a
restart. Neither command restarts the bus.

The writer refuses the instance ids human and tester with invalid-request,
because the broker refuses a business whose roles use either name when the
bus starts.

The Console's Settings view shows the instances and, under --send only,
posts to POST /api/instances with the exact Origin and same-origin Fetch
Metadata. A refusal keeps the draft. An answer without the view's shape is
outcome-unknown (503). The page's public/ diff carries the decision 123 go
in mos-0832.

Neither verb is in ORGANIZATION_KEYS, so no agent tool reaches them.

Owner Darkwing, brief in row 165 (#1662). Round 3 rebases round 2 onto
4f45cadc0 (row 156). The public/ +/- digest is 939ecd28...9444, unchanged
at landing. Reviewers on candidate manifest e30b54da...f580: Dewey
approve 29052, Filbert approve 29053. Seat run on 4f45cadc0: 1436/0
singles, 37/37 mutants killed. Sage gate on e8b09735a: GATE_PASSED 25/25,
packages 2282/0, queue node 156/0, script selftests 422/0, 23:59:13Z to
00:05:35Z. Rebased onto 50a57e454 over two SESSIONS-only commits.

Nothing live.
2026-10-18 19:10:20 -05:00
jason.woltje 50a57e454b sessions: Filbert row 166 r2 review, approve 2026-10-18 19:09:30 -05:00
jason.woltje 7f9b976c97 sessions: Filbert row 165 r3 review, approve 2026-10-18 19:07:43 -05:00
jason.woltje e8b09735a5 sessions: Sage row 156 landing 2026-10-18 18:43:21 -05:00
jason.woltje d6a008ad21 agents/dewey: row 156 packet, round 2 (#1651) 2026-10-18 18:43:13 -05:00
jason.woltje 1cf77e4663 queue: row 156 done, row 165 r2 in-review and approvals, row 166 r1 in-review and Filbert approve (sage) 2026-10-18 18:41:30 -05:00
jason.woltje 4f45cadc09 bus, cli, harness: the host starts the landing run once a merge decision is approved (row 156, #1651)
Until now a landing ran only when the chief of staff or merge-gate
followed row 149's manual steps. The host now does it.

Broker. landHolders(business) lists the approved merge decisions each
instance holds, sharing the #held generator with landHeld.
landRelease(record) releases a run's claim with by='land-relaunch'.
Delivered and unread messages keep the run, and a run that hasn't had
its first message.receive answers {released:false, landing:true}
(#received, round 2), so a landing turn in progress is never cut. A
run that never reaches its first receive, a hung landing turn or a
broker restart, keeps the release closed, and the decision falls back
to row 149's path.
usage.begin accepts a decision id that landHolders lists for the run.
The bus process answers both ops from their own launchOp lines and
refuses any op it doesn't name.

Launcher. start() reads landHolders once for a non-thread instance and
takes land_work and the session's landing list from that one answer.
landPass() runs after threadPass() on each tick.

Runner. One turn per landing entry before the message loop, with a
usage bracket on the decision id.

Docs. A "Landing runs" section in the cli README and docs/TOOLS.md.
roles/merge-gate.md, cto.md and chief-of-staff.md say the host starts
the run, and row 149's steps are the fallback.

Owner Dewey, brief docs/plans/2026-10-18_landing-run-launch.md, design
DESIGN.md in the packet (sage-0808). Round 2 answers Filbert's F1-F3
(29033, rulings sage-0942). Reviewer on candidate manifest
72a5c1b6...b700: Filbert approve 29039. Seat run 4: 290/290 singles,
36/36 mutants killed. Sage gate on a618528b2 (candidate 524bfcc80): GATE_PASSED 25/25. Package tests 2258 plus queue 156, script selftests 422, 23:30:07Z to 23:38:04Z. Run 1 stopped at pkg-webui on board-held.test.mjs:163, the P19 366 timeout, 220/1. Run 2 resumed at pkg-webui on the same tree: webui 221/0 and every scripts/test-*.sh green.

Nothing live.
2026-10-18 18:38:57 -05:00
jason.woltje 4d92151bcf sessions: Filbert row 166 r1 review, approve 2026-10-18 18:38:50 -05:00
jason.woltje c9c8c14d41 sessions: Filbert row 165 r2 review, approve 2026-10-18 18:35:00 -05:00
jason.woltje a618528b26 sessions: Filbert row 156 r2 review, approve 2026-10-18 18:14:28 -05:00
jason.woltje 37dbf08620 sessions: Dewey rows 156 r2 accepted, 165 r1 review, 126 packet and Mos go request 2026-10-18 18:13:57 -05:00
jason.woltje c3cd273454 queue: row 165 r1 in-review and Filbert approve, row 156 round 2 in-review (sage) 2026-10-18 18:12:22 -05:00
jason.woltje de34256c66 sessions: Filbert row 165 r1 review, approve 2026-10-18 17:57:13 -05:00
jason.woltje 9d6aca5716 sessions: Sage queue commit 756bc1af1 rev range correction and PM standup 2026-10-18 17:52:07 -05:00
jason.woltje 756bc1af14 queue: revs 1882-1885, row 156 round 1 in-review and Filbert changes (sage) 2026-10-18 17:51:34 -05:00
jason.woltje 139e28673b sessions: Filbert row 156 r1 review, changes 2026-10-18 17:27:43 -05:00
jason.woltje 70c9131f0d queue: revs 1879-1881, row 154 round 5 approvals and done (sage) 2026-10-18 17:19:56 -05:00
jason.woltje 76e2b6e6f8 sessions: Sage row 154 landing 2026-10-18 17:17:05 -05:00
jason.woltje 9353675d1c webui: a WYSIWYG Markdown editor in the Console docs view, built from reviewable source (row 154, Q168, #1648)
Jason's Q168: a visual editor for the Console's project documents,
held to row 148's rendering rules.

Library. ProseMirror with prosemirror-markdown and markdown-it, chosen
in the phase 1 library report (LIBRARY.md, REPORT.md in the packet).
packages/webui/third_party/editor/ holds 19 upstream packages as source,
byte for byte, each with its license, plus NOTICE and PROVENANCE.json.

Build. packages/webui/editor/ holds the model, view, entry and
build.mjs. esbuild 0.28.2 is an exact devDependency of packages/webui
with its own lock; editor/toolchain.mjs checks the version and the
binary's sha256 before any build. MOSAIC_REQUIRE_EDITOR_BUILD=1 turns a
missing or different esbuild into a failure, and the rebuild test then
checks the committed src/public/editor.js and editor.css match a fresh
build. The built bundle is committed under Mos's conditions
(mos-0755, mos-0765).

Console. The docs view gets Visual and Source modes. A save still
writes Markdown through the existing project write path, with the same
stale-base and read-only handling. A mode switch reuses the draft and
reads nothing from the project. Links and images keep row 148's
target rules, and no raw HTML runs. serve.mjs serves /editor.js and
/editor.css; index.html loads them.

Owner Researcher, brief docs/plans/2026-10-16_q168-wysiwyg-editor.md.
Round 5 is a rebase onto d88613bac (row 155); only docs/TOOLS.md,
webui/README.md, public/bus.js and serve.mjs differ from the round
before. Reviewers on candidate manifest 3a4bc21c...3b05: Dewey
(security) approve 29027, Filbert approve 29026. Mos's decision 123 go
for public.diff 902f0244 (handwritten part ea59079e): mos-0824. Sage gate
on 72c3fa598 with MOSAIC_REQUIRE_EDITOR_BUILD=1: GATE_PASSED 25/25
(node 2397, selftests 422), 22:07:29Z to 22:13:50Z; the rebuild test
ran and passed.

Nothing live.
2026-10-18 17:14:39 -05:00
jason.woltje 72c3fa598f sessions: Filbert row 154 r5 review, approve 2026-10-18 16:45:02 -05:00
jason.woltje df078c9c4b queue: revs 1877-1878, row 154 round 5 review request posted as comment 29024 (sage) 2026-10-18 16:44:11 -05:00