All docs · North OS2026-09-15

Actionable matters — implementation plan

Draft, 2026-09-15; not approved, nothing implemented. Implements the design spec for NOS-384. This plan goes to kwiss and to independent plan review before any product code. Substantial weight. No migration is generated in this lane (the db:generate slot is held by the dispatcher); no merge or deploy authorization is implied. Plan only: the five workstreams below are proposals for the configured seats, disjoint by file; no seat is spawned and no code is written from this document until kwiss approves it. Scope is the issue's; nothing here adds product scope, and the spec's completion gates (§ 1) apply: no build ships with identity, contributions or the review entry stubbed.

Ownership, seats and order

WorkstreamSeat (configured)Owner scope (disjoint)
W1 Connector snapshotFable 5.1 high, Claude Code worker (Devin Fusion Fable high on the user's Devin route — recorded deviation)packages/connector-clio/src/{matters,types}.ts, packages/connectors-core/src/matter-sync.ts, packages/clio-sync/src/matter-metadata.ts, apps/worker-clio/src/loops/webhook-consumer.ts
W2 Evidence-seam integration contractAstra @write high (SQL/integration, non-frontend); RLS review Sol maxProvisional, settled by the sibling owner's reply (U2/U3): the integration test that exercises the sibling's evidence relation from this lane's transactions, and any glue the owner's contract requires on this side (candidate: packages/db/test/matter-work-evidence.integration.test.ts). Which package holds the relation itself is the owner's; these files are not settled until then.
W3 Web read layerFable 5.1 highapps/web/lib/matters/{types,read,work-query,own-recency,viewer-identity,links}.ts and their tests
W4 Web UIFable 5.1 highapps/web/components/matters/{matter-work-table,matter-filters,matter-row-actions,team-cell,contribution-cell}.tsx, apps/web/components/chat/live-chat.tsx (one optional prop), apps/web/app/(app)/matters/{page,loading}.tsx, apps/web/app/(app)/deals/[dealId]/overview/page.tsx, chats/new/page.tsx
W5 Tests for substantial Fable codeSol or Grok medium (non-Claude, per seat table)packages/e2e/tests/matters-work-table.spec.ts, pg pagination test under packages/db/test/, the ui-test smoke run (evidence outside the repo)
Reviews / gates / commitAstra high + Grok xhigh deletions + fresh Fable high; Sol max review-rls for W2; gates Sol low; commit Astra lowOrchestrator arbitrates; workers never commit.

Order: U1 and U5 first (read-only). W1 ∥ W3 (types and query builder first, so W4 codes against a real projection) → W2 as soon as the sibling's contract is agreed → W4 → W5. W3's viewer-identity.ts and own-recency.ts are written against the agreed U2/U3 contract, so W3 completes only after the sibling replies; there is no interim body that returns unmapped or absent unconditionally, and W4 is not signed off until the three completion gates pass end to end on the authorized local surface. Every worker records exact files touched and commands run; a worker exceeding its scope stops and reports.

0. Settle the unknowns first (read-only, no product code)

1. W1 — assignment snapshot in the connector

2. W2 — evidence-seam integration contract (dependency on the sibling ledger lane)

3. W3 — web read layer

4. W4 — UI

5. W5 — behavioral and privacy regressions

Gates and status

Acceptance — check only after attached evidence

Verification and evidence boundary

Workers attach exact commands and outputs. Database evidence comes from an isolated clone provisioned with the real roles, every write rolled back; no shared dev database, no live preprod, no live Clio or NetDocuments writes. UI evidence comes from the existing authorized local server and synthetic accounts; no dev server is started by this lane. Documentation checks (bun docs/superpowers/status.ts sync, page parse) are not feature verification. Tooling for the Devin route is recorded in the lane ledger, not in this document.