From eeee9658dacd93e457e78c39408ed2b3267cbdb8 Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Tue, 27 Oct 2026 05:51:32 -0600 Subject: [PATCH] docs: U0a landed; the MCP handler groups are now the rule --- plan/STATUS.md | 16 ++++++++++++++++ plan/served.md | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/plan/STATUS.md b/plan/STATUS.md index 002d9d9..cc27ec7 100644 --- a/plan/STATUS.md +++ b/plan/STATUS.md @@ -144,6 +144,22 @@ adaptation, not a weakening: `terms_keep_one_canonical_spelling` now asserts that `Due 2026-1-5` is accepted and stored as `Due 2026-01-05`, which is S4.1's `Terms::parse`. +**2026-10-27: U0a landed (`45396bdc`).** `server.rs` is the router and the +request machinery (1,909 lines, no `#[tool(..)]` handler); the 98 +handlers it held live in fourteen `crates/ledger-mcp/src/tools/*.rs` +groups, each with its own `tool_router`, and the helpers several groups +share sit in `tools/helpers.rs`, re-exported by `server.rs`, so no group +file reaches into another's. The surface is identical: the tool table is +122 (the unit's 118 is stale), `annotations_complete` passes, and a +one-off dump of every tool's name, title, description, schemas and +annotations in `list_all()` order diffed empty against `main` before the +split. The whole-surface tests stay in `server_tests.rs` beside +`server.rs`; each group's own tests moved with it. `just check` was green +on the merge candidate, which included S4.2. **From here, every unit adds +MCP handlers only in its own group file** (`documents.rs` for S4.4/S6, +`drafts.rs` for P4, `evidence.rs` for P6, `audit.rs` for P8); `server.rs` +keeps the router and the shared helpers. + The 2026-10-16 audit of the first company's books (62 verified findings, 20 engine defects) and the design discussion that followed produced diff --git a/plan/served.md b/plan/served.md index df02ba9..425a5c8 100644 --- a/plan/served.md +++ b/plan/served.md @@ -812,7 +812,7 @@ One row per unit of work. A unit is what one engineer takes into one git worktre | P4b S1 | Documents read their figures from standing lines | landed 2026-10-24 (`d7fa16e9`, `07f213c9`); feature `document_standing` declared on the live books 2026-10-24 | | | | | | P4b S2 | Read tools and viewer pages | landed 2026-10-24 (`7d2bf0b7`, `b7b7f171`) | | | | | | P4b S3 | The invoice PDF | landed 2026-10-24 (`c1f9001c`) | | | | | -| U0a | Split `server.rs` by tool group | not started | none | U0b, U0c, S4.1, S4.2, S7.1 (core steps only) | none | 3-4 | +| U0a | Split `server.rs` by tool group | landed 2026-10-27 (`45396bdc`) | none | U0b, U0c, S4.1, S4.2, S7.1 (core steps only) | none | 3-4 | | U0b | The attention engine over `PackageBooks` | not started | none | U0a, U0c, S4.1, S4.2 | none | 4-6 | | U0c | `docs/testing.md` sections for S1-B, S2, S3; `docs/mcp-interface.md` cleanup of stale P4b notes | landed 2026-10-26 (`198aa2a1`) | none | everything | none | 0.5-1 | | P4b S4 | `documents_v2`: numbers, terms, line accounts, snapshots, preview and confirm, the issued PDF filed, party email and terms, invoicing settings | in progress: S4.1 landed (`13282cf8`), S4.2 landed 2026-10-27 (`bf91c5a7`); S4.3-S4.5 open | S4.1 and S4.2 need nothing; S4.3 needs S4.1, S4.2; S4.4 needs U0a, S4.3; S4.5 needs S4.4 | S5 (after S4.2), S7 (core after S1), P6, P9a, P11a, P13 | `documents_v2` (one upgrade after S7, D-52) | 12-16 |