Commit Graph
2631 Commits
Author SHA1 Message Date
jason.woltjeandClaude Opus 5.5 ae74c25fdd web verbs: grant before the long wait, abort signal to the backend, one query limit (vikunja:19/307, row 145)
Jason-approved merge, rebased: git diff 813671596..6219c5c8c from
work/vikunja-19-307, stacked on 295. Business reviewer verdict 84c9c4be
approve on 6219c5c8c; Jason resolved merge decision 17bb9efc via the CLI.

Conflict resolution only. packages/harness/src/tools.mjs conflicted with
row 132 (0e947c216): both sides add a constant after TASK_PAGE_MAX. Kept
row 132's ORGANIZATION_KEYS, then 307's WEB_QUERY_MAX. Three other paths
that refactor also changed merged without conflict. For each, the +/-
lines on the new base equal the source commit's. The other nine paths are
the source blobs. Filbert reviews the rebased diff.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:50:59 -05:00
jason.woltjeandClaude Opus 5.5 e9f4431ec1 harness: web_search and web_fetch as broker-served tools, search-source plug-ins and the assistant's web grant (vikunja:19/295, row 145)
Jason-approved merge, rebased: git diff 07c12b51b..813671596 from
work/vikunja-19-295, its seven commits as one (9ede6935b through
813671596, which include task 296's searxng check). Business reviewer
verdict 51c71b46 approve on 813671596; Jason resolved merge decision
29ff6589 via the CLI.

Conflict resolution only. packages/harness/src/tools.mjs conflicted with
row 132 (0e947c216): both sides add a block after review_verdict. Kept
row 132's end_run and change_organization block, then 295's web_search and
web_fetch block, each with its own closing brace. Seven other paths that
refactor also changed merged without conflict. For each, the +/- lines on
the new base equal the source commit's. The other 20 paths are the
source blobs. Filbert reviews the rebased diff.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:50:59 -05:00
jason.woltjeandClaude Opus 5.5 92938ab43a roles: C-suite messaging limited to human, chief-of-staff, pm and cto (vikunja:19/306, row 145)
Jason-approved merge, landed unchanged: git diff bbf61d6dd..3c80fea74
from work/vikunja-19-306. Business reviewer verdict 8ee5be8b approve on that
commit; Jason resolved merge decision 0eebf83f via the CLI. Applied cleanly
on the parent landing; no conflict. Filbert reviews the rebased diff.

Integration with row 121, found in Filbert's round 1 (#1639, comment 28623):
packages/bus/tests/csuite-messaging.test.mjs setup() binds the assistant to a
thread, since row 121 made assistant a thread definition and bindLaunch refuses
an assistant run without one. The human creates a project and thread first.
No assertion or code changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:50:59 -05:00
jason.woltjeandClaude Opus 5.5 5a5509839a docs: register Filbert row 142 round 1 review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:49:18 -05:00
jason.woltjeandClaude Sonnet 5.5 df5bbfb82a researcher: row 142 round 1 packet, mosaic talk prints only the reply to its own message (#1636)
Candidate on 8e2c5c2d0: 4 files, tree 91503e62b8.
6 of 6 mutants killed, 3 controls pass, cli suite and every scripts/test-*.sh green.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-15 17:44:23 -05:00
jason.woltjeandClaude Opus 5.5 10d4b526a3 docs: row 147 brief owns the project dispatch in scripts/mosaic and packages/project in stack-copy.sh
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:42:44 -05:00
jason.woltjeandClaude Opus 5.5 2a4849a2d4 docs: register Filbert row 145 round 2 review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:42:40 -05:00
jason.woltjeandClaude Opus 5.5 8686c7e84c docs: Q167 revised-rows brief, launch notice and project layout (vikunja:19/314, rows 146-147)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:38:10 -05:00
jason.woltjeandClaude Opus 5.5 e7726e2d1a docs: register Filbert row 145 round 1 review (changes)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:38:04 -05:00
jason.woltjeandClaude Opus 5.5 8eae4eae6c docs: register Filbert row 136 round 1 review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:32:54 -05:00
jason.woltjeandClaude Opus 5.5 8e2c5c2d03 agents: Dewey row 136 build packet, approvals bind to the role instance and thread (#1630)
Candidate manifest 38b0d3cda5b7f69a0a4c60fc0434c66ba8cc8e7b834fcb865383dd2ee6d711e8 on e37d6e583.
Owner's gate 22:25:05Z-22:29:11Z exit 0; mutants 4 of 4 killed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:29:54 -05:00
jason.woltjeandClaude Opus 5.5 193ae70c63 roles: the five C-suite role files and contracts, launched by the chief of staff (vikunja:19/301, row 144)
Jason-approved merge, landed unchanged: git diff 07c12b51b..bbf61d6dd
from work/vikunja-19-301. Business reviewer verdict abcd2c87 approve on that
commit; Jason resolved merge decision 29ff6589 via the CLI. No commit on
refactor since 07c12b51b touches these paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:21:19 -05:00
jason.woltjeandClaude Opus 5.5 91b963e256 bus start records why it failed closed; Console banner and bus status show it (vikunja:19/302, row 144)
Jason-approved merge, landed unchanged: git diff 07c12b51b..abda248a8
from work/vikunja-19-302. Business reviewer verdict 4998de97 approve on that
commit; Jason resolved merge decision 29ff6589 via the CLI. No commit on
refactor since 07c12b51b touches these paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:20:09 -05:00
jason.woltjeandClaude Opus 5.5 19fabe47c0 prd: version 1.4, REQ-WEB-3 and REQ-INST-1 (vikunja:19/297, row 144)
Jason-approved merge, landed unchanged: git diff 07c12b51b..b3dd8de83
from work/vikunja-19-297. Business reviewer verdict 0d4c1c68 approve on that
commit; Jason resolved merge decision 29ff6589 via the CLI. No commit on
refactor since 07c12b51b touches these paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:19:49 -05:00
jason.woltjeandClaude Opus 5.5 e37d6e5836 docs: briefs for the Q167 north-star rows 135-143 and the eight vikunja-19 landings
Rows 135-143 are Vikunja P19 task 314 (Q167). The landing brief covers
Jason's merge decisions 29ff6589, 0eebf83f, 17bb9efc and 12a20e47, landed
through Sage rows as Mos relayed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 17:15:02 -05:00
jason.woltjeandClaude Opus 5.5 fc5b342f83 agents: Sage window plan, row 121 update stamp from the commit clock
The update was stamped 19:10Z by estimate. Commit f365a1da9 that
carries it is 19:07:47Z, so the stamp becomes 19:07Z.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 14:08:41 -05:00
jason.woltjeandClaude Opus 5.5 f365a1da9d docs: register Darkwing and Dewey row 121 sessions and the Sage landing; window plan at 3e; P19 task 311
SESSIONS: Darkwing 18:54:54Z and its 18:56:04Z correction, Dewey
19:00:29Z, Sage's landing line. The schema window plan records row 121
landed 2c16d6b93, a rehearsal of the migration on a copy of the backup
(row 121 gate condition 4), and a role_claims check for an open assistant
claim. P19 task 311 holds row 121's follow-ups (sage-0369).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 14:07:47 -05:00
jason.woltjeandClaude Opus 5.5 496e26e0e5 docs: queue revisions 1349-1352 (row 121 round 2 review and landing)
Darkwing 1349-1350: row 121 in-review with the round 2 candidate
710d5086, request comment 28614. Dewey 1351: approve, comment 28615.
Sage 1352: row 121 done, landed 2c16d6b93.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 14:07:15 -05:00
jason.woltjeandClaude Opus 5.5 2c16d6b932 bus: projects and threads, schema 3d to 3e (row 121, #1615)
Darkwing's row 121 round 2 (agents/darkwing/work/queue-121/r2, base
20d2b5788, manifest 710d5086...e67e9b, 30 files), applied unchanged on
d7ebaa9a5; no commit since the base touches any of the 30 paths. Dewey
asked for changes on round 1 in comment 28591 (F1 to F6) and approved
round 2 in 28615. Landing gate on d7ebaa9a5 plus the candidate: all 24
suites passed, 0 failed.

F6 and Dewey's three round 2 notes are follow-ups (sage-0369, P19 task
311). One of them corrects the packet: BUILD.md says the decision-route
setup's projects key is needed, and Dewey's probe showed project.create
reads it only with repo, so the key is dead setup.

The live bus stays at 3b until Mos's schema window migrates it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 14:06:05 -05:00
jason.woltjeandClaude Opus 5.5 d7ebaa9a51 agents: Darkwing row 121 round 2 BUILD.md, the summary line names Dewey too
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:55:52 -05:00
jason.woltjeandClaude Opus 5.5 dd7c222953 agents: Darkwing row 121 round 2 BUILD.md names Dewey as the reviewer (sage-0367)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:55:48 -05:00
jason.woltjeandClaude Opus 5.5 9d74161969 agents: Darkwing row 121 round 2 BUILD.md names the business chief-of-staff test change
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:54:21 -05:00
jason.woltjeandClaude Opus 5.5 e3885f0334 agents: Sage P19 task 310, business tests tmp() leaks its directories
Darkwing's row 121 round 2 gate left 201 mosaic-business-* directories.
Filed as a follow-up, not in row 121.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:54:07 -05:00
jason.woltjeandClaude Opus 5.5 58e85d0fa1 agents: Darkwing row 121 round 2 packet (#1615), rebased on 20d2b5788
Candidate manifest sha256 710d50866e77055b7231a53e3601bd2bab7686b722160f81ddda030875f67e9b,
30 files. Targeted gate green, 77 of 77 mutants killed, repro DIGESTS_OK.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:54:02 -05:00
jason.woltjeandClaude Opus 5.5 a921aeb010 agents: Sage schema window plan, rows 123, 132 and 133 landed
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:28:14 -05:00
jason.woltjeandClaude Opus 5.5 20d2b57881 docs: register Dewey row 133, Researcher row 132 and Sage landing sessions; row 134 P19 filing
SESSIONS lines: Dewey 18:00:14Z (row 133 round 2), Researcher 18:05:08Z
(row 132 round 1 build), Sage 18:26:44Z (rows 133, 70 and 132 landed).
vikunja-setup: the script and read-back that filed row 134 as P19 task 308.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:27:02 -05:00
jason.woltjeandClaude Opus 5.5 ab3a57a3cf docs: queue revisions 1318-1348 (rows 70, 132, 133 and 134; 121 round 2 start)
Sage 1318-1319 (row 132 brief pin, briefed), 1321-1322 (row 70 review),
1327 (row 134 add), 1329-1331 (row 70 round 2), 1333 (row 134 P19 note),
1336-1337 (row 132 review request), 1339 (row 133 done, a622f426c), 1340
(row 70 done, 73fa83a08), 1342 (row 132 round 2 start), 1345-1346
(row 132 round 2 request, comment 28605) and 1348 (row 132 done,
0e947c216).
Researcher 1320 (row 132 claim); 1334-1335 and 1343-1344 are claimant
moves for row 132 made by Sage as researcher, with no token, so the
request outcome is failed and Sage posted it.
Dewey 1323-1325 (row 133 round 2, request 28597).
Filbert 1326 (row 70 round 1 changes, 28598), 1328 (row 133 round 2
approve, 28600), 1332 (row 70 round 2 approve, 28602), 1338 (row 132
round 1 approve, 28604) and 1347 (row 132 round 2 approve, 28606).
Darkwing 1341 (row 121 round 2 start).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:26:35 -05:00
jason.woltjeandClaude Opus 5.5 0e947c216d harness: end_run and change_organization tools for the chief (row 132, #1628)
Researcher's row 132 work (agents/researcher/work/queue-132/row132.patch),
rebased unchanged on 73fa83a08 as round 2 (agents/sage/work/queue-132/r2,
manifest 0a0ebbf6...048e). Filbert approved round 1 in comment 28604 and
the round 2 rebase in 28606. Landing gate on 73fa83a08 plus the
candidate: all 24 suites passed, 0 failed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:25:34 -05:00
jason.woltjeandClaude Opus 5.5 334744ddb8 docs: register Filbert row 132 round 2 confirm review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:25:01 -05:00
jason.woltjeandClaude Opus 5.5 17a66cdb09 agents: Sage row 132 round 2 packet (#1628, rebase on row 133, confirm only)
Researcher's round 1 patch applied unchanged on 73fa83a08. Only
packages/bus/src/broker.mjs differs from the approved manifest, because
row 133 (a622f426c) landed on it. Full landing gate passed, 24 suites.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:22:19 -05:00
jason.woltjeandClaude Opus 5.5 73fa83a08b docs: mosaic on PATH can be the pinned copy wrapper (row 70, #1564)
Sage's row 70 round 2 candidate (agents/sage/work/queue-70/r2, manifest
098b9aef...604e), approved by Filbert in comment 28602. Landing gate on
4a34fb0d6 with rows 133 and 70 applied: all 24 suites passed, 0 failed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:13:37 -05:00
jason.woltjeandClaude Opus 5.5 a622f426c0 bus: a decision raise checks the route may message the raiser; arbiters can't declare messaging lists (row 133, #1627)
Dewey's row 133 round 2 candidate (agents/dewey/work/queue-133/r2,
manifest 1c0e6f8f...0ef0), approved by Filbert in comment 28600.
Landing gate on 4a34fb0d6 with rows 133 and 70 applied: all 24 suites
passed, 0 failed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:13:09 -05:00
jason.woltjeandClaude Opus 5.5 4842791638 docs: register Filbert row 132 round 1 review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:11:28 -05:00
jason.woltjeandClaude Sonnet 5.5 8a73f713cf agents: Researcher row 132 packet (#1628, end_run and change_organization harness tools)
Round 1 packet in agents/researcher/work/queue-132/: row132.patch (8 files, +162 -19) on b6a588cd2,
candidate manifest, build.md, 28 mutants killed, full gate green. No candidate change applied here.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-15 13:05:03 -05:00
jason.woltjeandClaude Opus 5.5 feca383207 docs: register Filbert row 70 round 2 review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:04:08 -05:00
jason.woltjeandClaude Opus 5.5 4a34fb0d67 agents: Sage row 70 round 2 packet (#1564, Filbert 28598 findings)
F1: the scripts/mosaic header names mosaic-old. Both doc-only follow-ups
are done too, plus the test comment wording. Same base, same 4 files.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:02:24 -05:00
jason.woltjeandClaude Opus 5.5 7a32a1228f docs: register Filbert row 133 round 2 delta review (approve)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:01:48 -05:00
jason.woltjeandClaude Opus 5.5 d9bf6b6bc5 docs: register Filbert row 70 round 1 review (changes)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 13:00:11 -05:00
jason.woltjeandClaude Opus 5.5 26f4f97017 docs: brief for the organization revision read (row 132 follow-up)
Researcher's row 132 build found that a role holding organization.change
must send the organization revision, and only the human's limits read
returns it. organization.set fails closed on a stale revision, so this is
a follow-up row, not a blocker for the 3d window.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:59:59 -05:00
jason.woltjeandClaude Opus 5.5 346347c950 agents: Dewey row 133 round 2 packet (#1627, rebase onto rows 49 and 123)
Base 89fd2d6fe. r1's build.patch on the new base gives the r2 tree byte for
byte, so delta.patch is empty; the interdiff shows only index lines and hunk
offsets. Mutants 5/5 killed with controls passing, targeted gate rc 0.
Candidate manifest sha256 1c0e6f8f260ae51b31c2235193c36ed1c005faefe317e1452a351a3bb5690ef0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:59:16 -05:00
jason.woltjeandClaude Opus 5.5 593b437fdf docs: register Sage rows 49 and 123 landings and row 70 review request, with Dewey's two lines
Dewey: row 133 r1 build (17:34:00Z) and row 121 r1 review (17:43:32Z).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:57:18 -05:00
jason.woltjeandClaude Opus 5.5 5dc0c7de74 agents: Sage row 70 round 1 packet (#1564, docs for mosaic on PATH)
Candidate 1126314bd522de838aad03689bed41f6b12a33c2d7f30b2eff1b38653f559ae0,
4 files on 48b893871. The first gate stopped at script-queue: the pre-A2
fixture check pinned the old header comment. The check now skips comment
lines (brief amended in 06e964026). Second gate: 24 suites, 0 failed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:56:04 -05:00
jason.woltjeandClaude Opus 5.5 b6a588cd20 agents: Sage schema window plan update and P19 task 304 filing
The window plan records row 49 landed and row 121's round 1 changes, and
adds Darkwing's 28587 note 2: the first start reads every comment list.
Task 304 is Darkwing's note 1, push a task's comment cursor only when
consider runs for it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:52:06 -05:00
jason.woltjeandClaude Opus 5.5 48b8938719 queue: rows 49 and 123 done (3a4afdc03, 89fd2d6fe), sweep revs 1308-1317
Dewey 1308-1309 (row 133 r1 in review) and 1315 (row 121 r1 verdict,
changes, 28591). Darkwing 1310 (row 49 verdict, approve, 28587) and
1311-1312 (row 121 r1 in review). Filbert 1313 (row 133 r1 verdict,
approve, 28589). Sage 1314 (row 70 brief re-pin), 1316 (row 49 done)
and 1317 (row 123 done).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:50:45 -05:00
jason.woltjeandClaude Opus 5.5 89fd2d6fee bus: the chief of staff ends runs and changes the organization file, schema 3c to 3d (row 123, #1617)
The chief of staff role can revoke a run with a reason (role.revoke) and
write the organization file (organization.set), each under a broker
grant. organization.set checks the grant before the writer runs and
consumes it only after the writer returns, so a refused change leaves no
action.allowed. migrations/3c-3d.sql takes the store from 3c to 3d;
migrate-schema.mjs chains it after 3b to 3c. roles/chief-of-staff.json
and the business vocabulary carry the new actions. The harness tools for
them are row 132, which must land before 3d goes live.

Candidate 255a960582f1018b8d400e8d193e8e95713a078930277652d59ef4153197d9f6,
Researcher packet agents/researcher/work/queue-123/r2 (b959160f9), built
on eaeb5ebf2 plus row 49 r1. Filbert approved round 2 in 28578. Landing
gate at 3a4afdc03: 24 suites green, 0 failed. 14 package suites passed
1611 tests (bus 191, business 92, harness 84, tasks 97, webui 112). The
10 script suites passed (land-work 84, queue 156).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:49:33 -05:00
jason.woltjeandClaude Opus 5.5 3a4afdc03a bus: comment cursors survive a restart, schema 3b to 3c (row 49, #1535)
The broker stores the highest comment id seen per business and task in an
append-only table, task_comment_cursors. The tasks adapter restores those
ids before its startup reconcile, and the first reconcile reads each
task's comment list even with no cached count, so a comment posted while
the bus was down is found. Cursor rows, snapshots and comment events
commit in one transaction. migrate-schema.mjs takes a stopped store from
3b to 3c offline; the store refuses a 3b database until it runs.
scripts/land-work/read.mjs reads SCHEMA_VERSION from store.mjs.

The live bus is 3b. From this commit on, land-work refuses it with
bus-schema until Mos migrates in the schema window
(agents/sage/work/window-plan/schema-chain-3c-3e.md).

Candidate 87ef1321a1a08be64a20499889fc24b5549b47d6d33abfd86db95f62fb3cb6d0,
Rocko packet agents/rocko/work/queue-49/r1 (ea5e70fa8), base 7b166a0f1.
Filbert approved in 28579 and Darkwing in 28587. Landing gate at
ebbbf62da: 24 suites green, 0 failed. 14 package suites passed 1598
tests (bus 178, tasks 97, business 92, cli 195, webui 112). The 10
script suites passed (land-work 84, queue 156). Follow-ups: P19 tasks 300
(duplicate cursor) and 304 (push a task's cursor only when consider runs
for it).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:43:56 -05:00
jason.woltjeandClaude Opus 5.5 06e9640261 docs: row 70 brief allows narrowing the pre-A2 fixture check
The first row 70 gate stopped at script-queue: dispatch.test.mjs requires
every pre-A2 fixture line, comments included, in scripts/mosaic, and the
fixture holds the header this row corrects.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:39:28 -05:00
jason.woltjeandClaude Opus 5.5 4866bd28af docs: register Darkwing row 49 r1 verdict and row 121 r1 in review
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:37:36 -05:00
jason.woltjeandClaude Opus 5.5 e637371656 docs: register Filbert row 133 r1 review (approve, 28589)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:36:06 -05:00
jason.woltjeandClaude Opus 5.5 ef8c3fe713 agents: Darkwing row 121 round 1 packet (candidate manifest, gate, 62 mutants)
Round 1 is a code and test review and won't land. land-work fails at
BASE on the read.mjs 3b pin, which row 49 removes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 12:35:28 -05:00