Commit Graph
1800 Commits
Author SHA1 Message Date
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
jason.woltje 31788ef85b sessions: Researcher row 154 rounds 3 to 5 and Sage row 154 round 5 request, row 165 credentials ruling 2026-10-18 16:43:12 -05:00
jason.woltje 5e2a1bc118 queue: revs 1869-1874, row 165 briefed, claimed and brief re-pinned on b3cf580a (Sage 1869-1870, 1872-1873; Darkwing 1871); 154 back to in-progress for the d88613bac round (Sage 1874) 2026-10-18 16:39:30 -05:00
jason.woltje b8036b6089 plans: row 165 brief correction, the second reviewer waits on P19 367 (mos-0823)
reviewer, coder, pm and cto declare gitea and vikunja credentials, and the
row keeps credentials out. The writer refuses an added instance or a
definition change whose definition declares credentials, with a named
refusal that says why, and never writes an instance without its binding.
One added test line. Acceptance 314 is covered: security-reviewer and
merge-gate declare none. Jason rules on credential binding in daylight.
2026-10-18 16:32:51 -05:00
jason.woltje d88613bac2 queue: revs 1866-1868, row 155 done, 167 add and briefed (sage) 2026-10-18 16:22:45 -05:00
jason.woltjeandClaude Opus 5.5 ab78898997 sessions: Sage row 155 landing
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:20:36 -05:00
jason.woltjeandClaude Opus 5.5 68fc31a944 plans: brief for the Settings reads and snapshot follow-up to row 155 (Darkwing's draft, Mos's mos-0816 notes, Dewey's F1)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:19:11 -05:00
jason.woltjeandClaude Opus 5.5 b2f57ca70d bus, business, harness, webui: the human and the chief of staff configure the assistant (row 155, Q169, #1649)
Jason's Q169: only the chief of staff removes the assistant; the chief
and the human configure it and its seat name.

Configure. A new organization key, assistants, replaces the vars,
tracker or definition of an instance whose definition is already the
assistant. holder and credentials are refused, and the whole document
still goes through validateBusinessDocument. set() refuses
organization-definition-refused if any other instance's definition
changed. THREAD_DEFINITION and END_PROTECTED move to
packages/business/src/vocabulary.mjs, so the broker and
launch-settings.mjs read one list. The human writes it with
mosaic limits set --file or the Console Settings view's Assistant
section; the chief writes it with change_organization. Both carry the
file's revision.

Seat name. The chief gets a typed set_name tool (name.set,
instance.name). The Console gets POST /api/name on the settings
boundary, through human-cli.

Remove. role.end and role.revoke of a threaded instance revoke every
thread of that instance whose latest claim is a claim, and report
threads: N. The raise and the check both record a missing holder run as
null. A new human-only verb, assistant.stop, revokes the human's own
threads of an assistant instance; the Console calls it from POST
/api/assistant-stop. The bundle, the end_run description and
roles/chief-of-staff.md now say the chief ends and configures the
assistant. No schema step.

Owner Darkwing, brief docs/plans/2026-10-16_q169-assistant-config.md.
Reviewers: Dewey (security) r1 approve 29012, r2 29014, r3 29018; Filbert r1 29010,
r2 29015, r3 29017, on candidate manifest 96cae28e...9016. Round 2 is
confirm-only after rows 162 and 125 moved the base under docs/TOOLS.md
and the cli README. Round 3 bumps row 164's webui/src/bus.mjs byte
baseline in packages/bus/tests/channel-proof.test.mjs for the eight
STATUS entries; Sage's gate on r2 failed only there. Mos's decision 123 go for the public/bus.js diff
(mos-0816) covers 9f9ce31b, unchanged here. Sage gate on 197722caa:
GATE_PASSED 25/25 (node 2370, selftests 422) 21:11:38Z, a rerun on the same tree after a first run stopped at pkg-webui on a board-held.test.mjs timeout that passes singly.

Nothing live. Follow-up brief in the packet: the names read rethrow, one
shared settings snapshot, null tests for the two new routes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:18:47 -05:00
jason.woltjeandClaude Opus 5.5 197722caa2 queue: revs 1861-1865, row 155 r3 in review (darkwing) and confirm-only approvals (filbert, dewey)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:05:27 -05:00
jason.woltjeandClaude Opus 5.5 f742175515 sessions: Filbert row 155 r3 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:04:05 -05:00
jason.woltjeandClaude Opus 5.5 0473574b02 queue: revs 1846-1860, rows 155 r1-r2 reviews (darkwing, dewey, filbert), 162 done, 166 add and briefed (sage), 154 r4 in review (researcher)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:51:56 -05:00
jason.woltjeandClaude Opus 5.5 359adff563 sessions: Filbert row 155 r2 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:48:43 -05:00
jason.woltjeandClaude Opus 5.5 449cadd1f1 sessions: Filbert row 155 r1 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:40:53 -05:00
jason.woltjeandClaude Opus 5.5 7bd2a348ca sessions: Sage row 162 landing
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:40:28 -05:00
jason.woltjeandClaude Opus 5.5 c70f360ae7 plans: D1 brief item 8 re-pinned to the held or stopped store read; stack-release hardening brief (row 162 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:39:38 -05:00
jason.woltjeandClaude Opus 5.5 7e7f8e208e scripts: health-gated stack activate and rollback, stack-release.sh (row 162, D1, #1659)
New scripts/stack-release.sh with four verbs. adopt records the running
copy, the unit flags and the store schema in state/stack-active.json; it
stops nothing. activate ID BUSINESS [--pm] [--migrate] stops the units,
checks the stopped store, backs it up, migrates when the target's schema
differs, installs and starts the target, then gates on both units active,
a live bus host whose pid is the bus unit's MainPID with boot ok, Console
/healthz, stack-copy.sh check and one launched journal line. A failed
gate rolls back inside the same run and keeps the attempted store as
bus.post-attempt-<stamp>. rollback [--restore ACT [--events N]] goes back
to the log's previous copy and counts the events written after the
backup. status prints the pointer, the log tail and the copy check.
--plan prints what a run would do and writes nothing; it reads the store
schema from the store the running bus holds, or from a stopped store.
Exit codes: refusal 3, gate failure with rollback 1, rollback failed 2,
usage 4. Nothing is pruned.

stack-copy.sh gets a reachable function split from copy_commit and a
guard so its helpers can be sourced. TOOLS.md "Pinned stack update" and
the cli README pinned-stack paragraph describe the verbs.

Owner Darkwing, brief docs/plans/2026-10-18_stack-release.md (D1).
Reviewer Filbert: r1 approve (comment 28997) on 091693c5, r2 confirm-only
approve (29004) on candidate manifest c213a801...bd15c after row 125
moved the base under TOOLS.md and the cli README. Sage gate on 23622980f:
25 of 25 steps rc=0 on c96a95320 (15 packages + 10 scripts), node pass 2353 fail 0, selftests 422 passed 0 failed, 2026-10-18T20:32:13Z to 20:38:55Z, network sage-r162_default removed, 0 containers.

Nothing live. The 8e7ea89a1 window (repin-8e7ea89a1.md) runs these verbs
on Mos's go with Jason present.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:39:09 -05:00
jason.woltje 23622980f4 queue: revs 1838-1845, row 125 done (Sage 1838); 156 in progress (Dewey 1839); 162 r2 in review (Darkwing 1840-1842); 126 brief re-pin on 7ce156259 and briefed (Sage 1843-1844); 162 r2 Filbert approve on c213a801 (1845, comment 29004) 2026-10-18 15:30:16 -05:00
jason.woltjeandClaude Opus 5.5 6b21085c4c sessions: Filbert row 162 r2 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:29:17 -05:00
jason.woltjeandClaude Opus 5.5 7ce156259d plans: row 126 brief rewritten on Dewey's tokens.daily design after row 125 landed (#1620)
Row 125's core lets a check see only launch.limits and accept hits on the
four DEPTH kinds, so the quota gets its own depth-1 kind,
tokens.daily.<account>, in the two DEPTH tables and the organization-file
schema. Display is a fixed line keyed on the daily path; no report field.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:27:07 -05:00
jason.woltjeandClaude Opus 5.5 de74dd4735 sessions: Sage row 125 landing
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:22:53 -05:00
jason.woltjeandClaude Opus 5.5 aa625565f6 bus, cli, webui: token limits per instance, model, provider and key (row 125, #1619)
Adds token limits under launch.limits.tokens (instances, providers, keys,
models.P.M). Core (packages/bus/src/limits.mjs) reads the organization
file and the per-turn usage records row 124 writes, then asks every
switched-on limit-check plug-in; the first refusal wins. A limit no
switched-on check reports reads "not enforced". The limit-check kind is
interface 2 (mayLaunch, mustStop, report); a v1 check is refused at load.
The shipped token-limit check is pure and counts known end records only;
unknown turns add nothing and are shown as their own count.

The launcher refuses limit-reached through the host's mayLaunch op, or
limit-check-failed naming the check. The broker asks mustStop after a
usage end and stops the run at its next receive or state. Settings stamps
since on a new or changed limit and runs reset; launch.mjs and
business.mjs validate the shape. Readers: mosaic limits and mosaic limits
reset, the bus limits view, the Console /api/bus/limits route and the
Settings token table with Reset. Key limits stay "not enforced" until
row 126 names accounts on records.

Owner Dewey, design under lead decision 150.
Reviewer Filbert: r1 changes (comment 28965), r2 approve (28981), r3
approve (28996) on candidate manifest 8b71c405...fe56 after the rebase
onto row 164 (37 of 38 paths with identical +/- lines, TOOLS.md:621
bracket). Decision 123 go on the bus.js hunk from Mos (mos-0814). Sage
gate on b6827d19e: 25 steps, all rc 0 (15 packages, 10 script suites), 2295 node tests and 422 script selftests, 0 failed, 20:03:25Z to 20:08:08Z, network sage-r125_default removed.

Live stays as pinned. Not part of the 8e7ea89a1 window.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:21:49 -05:00
jason.woltje b6827d19ea queue: revs 1836-1837, row 125 r3 Filbert approve on 8b71c405 (1836, comment 28996); row 162 r1 Filbert approve on 091693c5 (1837, comment 28997) 2026-10-18 15:03:14 -05:00
jason.woltjeandClaude Opus 5.5 e972b5969a sessions: Filbert row 162 r1 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 15:01:58 -05:00
jason.woltjeandClaude Opus 5.5 5f8e5f0413 sessions: Dewey rows 125 r3, 154 r3 and 164 r2
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:58:10 -05:00
jason.woltjeandClaude Opus 5.5 4c2ff00cd8 sessions: Filbert row 125 r3 review
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:57:11 -05:00
jason.woltjeandClaude Opus 5.5 99d2b49c9c queue: revs 1828-1835, row 154 r3 Filbert approve (1828); 164 done (Sage 1829); 165 brief re-pin after Jason's Q4 (Sage 1830); 125 r3 in review (Dewey 1831-1833); 162 r1 in review (Darkwing 1834-1835)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:50:41 -05:00
jason.woltjeandClaude Opus 5.5 8e47e5e3b3 sessions: Sage row 164 landing, row 165 brief
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:27:44 -05:00
jason.woltjeandClaude Opus 5.5 606fafd431 plans: row 165 brief, Jason's Q4 confirmation relayed (mos-0805), hold lifted
Records Jason's "Q4: yes" (DECISIONS Q171, Q172) and lifts the hold.
The row moves to briefed once row 155 is done. No test reads this file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:26:39 -05:00
jason.woltjeandClaude Opus 5.5 008746b6ed plugins: channel kind for the CLI and Console chat paths (row 164, #1661)
Adds plugin kind `channel` (interfaceVersion 1, dispatch(request, {call}))
with cli and webui modules. Project and thread surfaces and thread
talk/follow in the CLI and the Console chat go through the selected
channel. An empty or absent channel selection is off: the CLI exits 3 and
the Console answers 503, each naming `mosaic plugins` and `mosaic plugins
set` with the business selector. Management plugins and plugins.set stay
on the core transport. The loader gains a synchronous snapshot(kind)
getter; loaded(), modules() and last-good handling are unchanged. No lock
is held across dispatch. serve.mjs, public/ and the bus are untouched.

Owner Rocko. Reviewer Dewey: r1 changes (comment 28980, B1: the recovery
sentence was never asserted), r2 approve (comment 28984) on candidate
manifest ae2fcfda...1fc8, the B1 assert killing mutant D1. Design accepted
by Mos (mos-0768, mos-0773). Fixture rewrite at project.test.mjs:47 acked
by Mos (mos-0789) on Dewey's line-by-line check: lines 48-51 identical,
one added assert. Sage gate on e5b10d275: 25 steps green, 2081 package tests, 156 queue node tests, 422 script selftests, 0 failed.

Live stays as pinned. The re-pin that takes this live puts `mosaic
plugins set` in Jason's window right after activate (mos-0768).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:24:42 -05:00
jason.woltjeandClaude Opus 5.5 e5b10d275e sessions: Filbert row 154 r3 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:17:35 -05:00
jason.woltjeandClaude Opus 5.5 27f01be2ec queue: revs 1805-1827, row 164 r1 in review (Rocko 1806-1807, request by Sage 1808-1809), r1 changes (Dewey 1814), r2 in review (Rocko 1816, 1820-1821, request by Sage 1824-1825) and approve (Dewey 1826); 125 r2 in review (Dewey 1805, 1811-1812) and approve (Filbert 1815); 154 r2 changes (Filbert 1810, Dewey 1813), r3 in review (Researcher 1817-1819, request by Sage 1822-1823) and Dewey approve (1827)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 14:17:18 -05:00
jason.woltjeandClaude Opus 5.5 1dbf456101 sessions: Filbert row 125 r2 review, approve
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 13:55:45 -05:00
jason.woltjeandClaude Opus 5.5 6f963fd657 sessions: Filbert row 154 r2 review, changes
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 13:36:10 -05:00
jason.woltje ed92e2e1e8 logs: correct Rocko row 164 resume stamp from recorded clock 2026-10-18 13:20:31 -05:00
jason.woltje 3d527871c7 docs: Rocko row 164 candidate packet and own verification logs 2026-10-18 13:19:50 -05:00