T 165
uid: T-165 title: IA reorg β Tools & Settings estates (Typesetting Β· Pipeline Preview Β· Deployments move) status: done area: tools created: 2026-07-10 updated: 2026-07-10 owner: girafeev1 assignee: User Management related: T-162, T-160, T-047
Source: User Management Β· https://claude.ai/code/session_01GGT5n9vCxKWoUQSRAfMSiW Origin: the owner's 7-point Notification Hub restructure + follow-up rounds (2026-07-09/10, quoted in T-162's decision log β this doc doesn't restate them). T-162 keeps the Hub + System Emails + System Health/DMARC; THIS task carries the Tools/Settings estate migrations. All UI is preview-approved (T-162 preview v9, collapsible housing).
Scope¶
- Tools βΈ Typesetting (
/tools/typesetting, admin) β expandable rows exactly like the Tools page, expanding shows the tool itself (no link-outs): - Project Invoice Previewer (collapsible parent) β Invoice Previewer Β· Full Invoice Preview Β· Invoice Sections (owner-agreed family merge)
- Payment Confirmation Previewer
- Coaching Payment Receipt Preview (renamed from "Payment Receipt Preview (MEL)")
- Coaching Payment Request (Invoice) Preview (renamed from "Payment Request Preview (MEL)") Tools page loses these six rows; keeps Sidebar Icon Reference + Component Showcase.
- Tools βΈ Pipeline Preview (
/tools/pipeline-preview, admin) β the owner-specified live form fronts (name chosen by the owner from their candidates): IR56M + WOPC facsimiles with inline type-in fields rendering immediately, Use demo data, Send demo email (real pipeline), and the sign-&-seal links β/ir56m/sign-test(existing) and NEW/wopc/sign-testmirroring the IR56M harness (doubles as the T-160 signing-name verification rig; coordinate with Records (Infrastructure) if its seams shift). The "IR56M β sign & seal test" Tools row migrates here. - Settings βΈ Deployments (
/settings/deployments, admin) β the "Deployments β build status" Tools row moved (owner: "Deployment should have it's own sub tab under Settings").
Sequencing¶
After T-162's wave B lands the Hub sidebar nesting (this task reuses the same parent/child mechanics for Tools/Settings). Each numbered item is its own PR; commit-only, deploys stay on the owner's explicit word.
Log¶
- 2026-07-10 created at build start (owner: "Go"), splitting the Tools/Settings estate out of T-162 per the recorded scope-split proposal. No code yet.
2026-07-10 β Wave D shipped: Tools βΈ Typesetting¶
- β Read AGENTS.md. Source: User Management Β· https://claude.ai/code/session_01GGT5n9vCxKWoUQSRAfMSiW
/tools/typesetting(admin, Tools gate vocabulary) as a collapsible Tools child β the document previewers as expandable rows, expanding opens the previewer in place (owner spec 1a/1d).- Implementation choice (recorded): the previewers' state is deeply interleaved inside the
2,000-line
ToolsApp, so the split is at the RENDER layer βToolsAppgained avariant: 'main' | 'typesetting'prop with two conditional Collapses in one component scope; the panel JSX moved verbatim, zero state surgery. A future file-split refactor stays open. - Renames applied (owner verbatim, 2026-07-10): parent header "Project Invoice Previewer"; "Payment Receipt Preview (MEL)" β "Coaching Payment Receipt Preview"; "Payment Request Preview (MEL)" β "Coaching Payment Request (Invoice) Preview".
- Structural finding (honest note): the three invoice tools were ALREADY one family in code β "Invoice Previewer" is a parent panel whose body nests "Full Invoice Preview" + "Invoice Sections". So the owner-approved grouping = renaming that parent; its children are those two nested panels (there is no distinct third "Invoice Previewer" child β the row IS the parent).
- Tools page keeps Sidebar Icon Reference + Component Showcase + IR56M harness (the harness moves in wave E). Heavy tsc clean Β· 648 tests green Β· 45 eslint hits byte-identical at baseline.
2026-07-10 β Wave E shipped: Tools βΈ Pipeline Preview + /wopc/sign-test β TASK COMPLETE¶
- β Read AGENTS.md. Source: User Management Β· https://claude.ai/code/session_01GGT5n9vCxKWoUQSRAfMSiW
- Pipeline Preview (
/tools/pipeline-preview, Tools child, Tools gate): the owner-specified live form fronts β IR56M + WOPC facsimiles with inline type-in fields (the form IS the input), Use demo data, Send demo email (real signing-request templates, sample data, magic links β the harnesses), and the sign-&-seal links. The WOPC front's closing block is the LIVE T-160 resolver's answer (/api/wopc-signing/closing-name-preview, demo payee JC β forced-opposite director) β the front doubles as that pipeline's verification rig. - NEW
/wopc/sign-testharness (owner item 6c): twin of the IR56M harness β same shared sign-editor components, WOPC test endpoints:test/preview-filled(sample WOPC rendered by the PRODUCTIONrenderWopcPdfBuffer, i.e. real closing-name resolution),test/preview-signed(same productioncomposeSignedWopcPdf+composeChopOntoPdf),test/send-demo(realWopcSigningRequestEmail, link β the harness). Chop images reuse the IR56M test endpoint (company-wide assets). Newlib/wopc/sampleConfirmation.server.ts(sample payee JC β deliberately a director). Nothing persists or files. - Tools row "IR56M β sign & seal test" retired (its send-demo UI reproduced on the front);
IR56MSignTestTool.tsxdeleted (sole consumer).
Close-out (done β 2026-07-10)¶
β Read AGENTS.md. Source: User Management Β· https://claude.ai/code/session_01GGT5n9vCxKWoUQSRAfMSiW
Verdict. All three scope items delivered per the owner-approved v9 design: (1) Typesetting
(wave D β expandable rows, Project Invoice Previewer parent, coaching renames); (2) Pipeline
Preview + the new WOPC sign-&-seal harness (wave E); (3) Deployments β Settings sub-tab (shipped
inside T-162 wave C alongside the Settings estate, recorded there). Verified: heavy
unfiltered tsc --noEmit clean per wave; vitest green (663 at close); eslint deltas zero
(legacy-file hits byte-identical at baseline each wave). Runtime verification of the harnesses
(draw/chop/preview on real devices) awaits the next production deploy β owner-manual.
Every commit that touched T-165 (append-only, newest last):
- dcf9f5dc β wave D: Tools βΈ Typesetting (variant split, renames) β PR #896
- b09ef91d β Deployments β Settings sub-tab (scope item 3, shipped within T-162 wave C) β PR #891
- (this PR) β wave E: Pipeline Preview + /wopc/sign-test + IR56M row retirement
Blast radius (for agents working nearby):
- components/tools/ToolsApp.tsx β now variant-aware ('main' | 'typesetting'); SIX former
rows live only in the typesetting variant; Email Templates / System Email Routing / IR56M
harness / Deployments rows are gone from 'main'. Anyone adding a Tools row should decide which
variant it belongs to (or a new family).
- WOPC signing seams (Records (Infrastructure) territory) β three NEW test endpoints under
/api/wopc-signing/test/* CONSUME the production pipeline (renderWopcPdfBuffer,
composeSignedWopcPdf, composeChopOntoPdf, closing-name-preview) read-only; if those seams
change shape, the harness follows. Coordinate via T-160's field-notes channel.
- Sidebar/IA β Tools βΈ Typesetting Β· Pipeline Preview; new page rules typesetting /
pipeline-preview (Tools vocabulary). /wopc/sign-test is route-gated (admin) outside the
sidebar, like its IR56M twin.