Plan T — Adapter Registry Pivot (umbrella)
On this page
Status
| Step | Description | Status |
|---|---|---|
1 |
Plan T1 — Foundations & Traits authored + filed. Drafted in its own plan-mode session per |
Done (2026-06-09) — body filed via !659 / |
2 |
Plan T1 executed end-to-end. All Plan T1 steps Done; child epic |
Done (2026-06-10) — 8 step MRs (!662 T1.1 / !663 T1.2 / !664 T1.3 / !665 T1.4 / !666 T1.5 / !667 T1.8 / !668 T1.7 w/ #462 reviewer waiver / !669 T1.6; executed in §Step DAG order) + T1.9 audit-archive MR; epic &51 closed; body archived |
3 |
Plan T2 — Registry Migration authored + filed. Drafted in its own plan-mode session. Body lives at |
Done (2026-06-09) — body filed via !660 / |
4 |
Plan T2 executed end-to-end. All Plan T2 steps Done; child epic |
Done (2026-06-10) — 5 MRs (!673 / !674 / !676 / !677 + the archive MR; T2.4 ran before T2.3 per the DAG); body at |
5 |
Plan T3 — Open Closures & Hardening authored + filed. Drafted in its own plan-mode session. Body lives at |
Done (2026-06-09) — body filed via the Phase E docs MR (see CHANGELOG § Unreleased) |
6 |
Plan T3 executed end-to-end. All Plan T3 steps Done; child epic |
Done (2026-06-11) — Plan T3 shipped in 8 MRs (!679/!680/!681/!682/!683/!684/!685 + the T3.8 audit+archive close-out), all 2026-06-10/11. Type-system closures opened ( |
7 |
Plan T umbrella audit + archive. Standard close-out per |
Done (2026-06-11) — this MR (umbrella audit + archive close-out). Fresh plan-completion-audit Explore subagent PASS on all 7 checks: steps 1-6 all Done with concrete cites, all 3 sub-plan archive bodies exist at |
Context
ADR-032 (Multi-Jurisdiction Partner Registry and Transport Abstraction) anchors Plan S Phase 1; ADR-038 (Trait-Object & Registry Patterns) codifies reusable architectural principles. ADR-032 amendments A1-A11 resolve the 8-round iteration findings from the abandoned single-Plan-T body authoring session.
Plan T executes ADR-032 §1 + §2 foundation into code. The "into code" caveat: T3.4 defers reporting wire-up per A7; Plan U Step 4 ships multi-bundle activation per A10. The architectural depth surfaced during single-Plan-T body authoring justified restructuring into 3 sub-plans: T1 (foundations & traits) sets up everything T2 + T3 build on; T2 (registry migration) migrates the existing closed-enum AnyAdapter dispatch to the registry pattern; T3 (open closures & hardening) opens the type-system + DB closures + test hardening.
Plan T is the keystone of the entire Plan S umbrella: Plans U/V/W/X/Y all gate on Plan T1 (foundations) + Plan T2 (registry materialization) landing substantively. Plan T3 may run partially parallel with downstream plan authoring. Sub-clause: Plans U/V depend on Plan T2 archive for trait + registry stability; Plan W onwards can author against Plan T1 substantively-landed types + Plan T2 substantively-landed registries without waiting on Plan T3 archive.
Decisions locked (Phase A artifact)
10 D-decisions from the 8-round Plan T body iteration are locked in ADR-038 + ADR-032 amendments:
-
D1:
BundleContribution+StateBundlein NEWcrates/craig-state-bundle(ADR-032 A6) -
D2: Factory-shaped adapter contribution +
BootContext(ADR-032 A4) -
D3: Typed
federal_mapping() → HashMap<&'static str, FederalPartnerCategory>(ADR-032 §2.1 unchanged) -
D4: F-065 / Plan G Step 6 / #462 mechanically hard-gates T2.1 via
glab issue view 462 -
D5:
ExchangeAdapterKindenum DELETED in T3.1 (ADR-032 §1.3 open-TEXT carriage; an earlier draft cited a phantom "A8a" amendment — ADR-032 amendments run A1-A11) -
D6: NEW
crates/craig-state-defaultseed bundle in T1.6 registers 14 partner_type tokens verbatim -
D7:
AuditCodectrait + impls BOTH incraig-partner-auditper Rust orphan rule (ADR-032 A2) -
D8: Mock partners self-state-bound; shared
MockStatedeleted in T2.3 (ADR-032 A5) -
D9: Temp hardcoded validators preserve 400→400 during T3.1 + T3.3 transition windows
-
D10: T3.4 ships federal mapping seam only; reporting wire-up deferred (ADR-032 A7)
Calendar
| Sub-plan | Scope | Anticipated MRs | Calendar |
|---|---|---|---|
Plan T1 — Foundations & Traits |
T1.1-T1.9 — trait + macro + 5 NEW types/crates + per-partner adoption |
~9 |
~1.5 wk |
Plan T2 — Registry Migration |
T2.1-T2.5 — AdapterRegistry + AuditCodecRegistry + MockRouterRegistry + DDL adapter_kind + ExchangeAppState (noop:// folded into T2.1) |
~5 |
~1 wk |
Plan T3 — Open Closures & Hardening |
T3.1-T3.8 — open enums + DDL partner_type + georgia removal + tests + archive |
~8 |
~1.5 wk |
Plan T umbrella audit + archive |
Step 7 |
1 |
~0.5 day |
Total: 22 child MRs + 3 sub-plan filing MRs + 1 umbrella body MR (this MR) + 1 archive MR = ~27 MRs across ~3.5-4 weeks. ~3 sub-plan plan-mode review sessions (T1/T2/T3 each authored in own session per delivery-protocol.md:131-136).
Step DAG
Step 1 (T1 body filed)
↓
Step 2 (T1 executed end-to-end + archived)
↓
Step 3 (T2 body filed; authoring may start once T1 Step T1.5 + T1.6 substantively done)
↓
Step 4 (T2 executed end-to-end + archived) ──┐
│ │
│ ┌── Step 5 (T3 body filed; may parallel ─┤
│ │ T2 execution) │
↓ ↓ │
Step 6 (T3 executed; gated on T2 archive) ─────┘
↓
Step 7 (Plan T umbrella audit + archive)
Threat model
-
Plan T1 foundation cascade — if Plan T1 ships an under-specified
BundleContributionshape, every downstream Phase 2 plan (W/X/Y + U Steps 9-10) inherits the defect. Mitigation: Plan T1 body authors in its own plan-mode session with same iteration discipline as the original Plan T was; ADR-038 §4 field-sourcing rule pre-flight check before any Phase 2 plan adds a field. -
Mock partner migration breaks E2E — Plan T2 Step T2.3 migrates mock modules from tools/craig-mock-server to per-partner crates + adds
mockCargo feature. Hardcoded mock URLs in E2E specs / devstack / per-partner test fixtures need lockstep updates. Mitigation: T2.3 audit of 5 URL surfaces (per ADR-032 A5 callout) + T3.7 test lockstep sweep. -
Closed-aggregator limitation surfaces during non-georgia state adoption —
PartnerAuditEventis a closed enum (ADR-032 A2 known limitation). Plan T accepts this; #558 (filed via !657 Phase A) tracks decoupling. Risk realizes only on first non-georgia state adoption signal. -
F-065 timing slip blocks T2.1 — Plan G Step 6 / #462 cross-handler DRY scan must land before T2.1 MR opens. Mitigation: F-065 surfaced as parallel work-stream during Plan T1 execution; T2.1 mechanical pre-step gate via
glab issue view 462.
Cross-cutting invariants
| Invariant | Enforced by | Verification |
|---|---|---|
|
Per-plan MR convention |
ADR-032 §4 cited |
ADR-038 §3 field shape decision documented in each Phase 2 ADR |
Plan-mode session discipline |
Each anchoring ADR cites ADR-038 §3 |
Pre-1.0 destructive migrations OK |
the pre-1.0 destructive-rebuild posture cited in T2.4 + T3.5 commits |
Reviewer check |
Quality budgets monotonic |
|
Pre-push gate |
Axis coverage opt-out monotonic |
|
Pre-push gate |
|
|
Pre-push gate |
Each sub-plan body iterates through 3-4 contextless review rounds |
|
Per-sub-plan plan-mode discipline |
Per-sub-plan test additions tag |
|
Opt-out monotonic shrinkage at |
Risk register
| # | Risk | Impact | Likelihood | Mitigation |
|---|---|---|---|---|
1 |
Sub-plan body authoring re-discovers Phase A architectural decisions |
Plan-mode session inefficiency |
Med |
ADR-032 amendments + ADR-038 + this umbrella body cite D1-D10 at top; sub-plan authors read those first |
2 |
Plan T1 → Plan T2 sequencing gap (T2 execution starts before T1 archived) |
Architectural drift |
Low |
Plan T2 Status cell distinguishes: authoring may start once T1 Step T1.5 + T1.6 land substantively; execution (T2.1 MR) gated on Plan T1 archived + F-065 closed |
3 |
Mock URL migration breaks E2E silently in T2.3 |
Test regression |
Med |
T2.3 audit of 5 hardcoded-URL surfaces; T3.7 sweep |
4 |
Closed-aggregator #558 surfaces during non-georgia adoption |
Adoption friction |
Low |
#558 filed via !657 Phase A; decoupling planned post-Plan-T |
5 |
F-065 / Plan G Step 6 timing slip blocks T2.1 |
Schedule slip |
Med |
T2.1 mechanical |
6 |
Phase 2 plan author misuses BundleContribution growth pattern |
Cross-crate reference drift |
Low |
ADR-038 §4 field-sourcing rule + ADR-032 §4 additive growth contract + per-Phase-2-ADR §3 field-shape decision |
Related decisions
-
ADR-032 — Multi-Jurisdiction Partner Registry + amendments A1-A11.
-
ADR-038 — Trait-Object & Registry Patterns; cited by T1.2 + T1.3 + T1.5.
-
ADR-030 — Status vocabulary on every cell.
-
Plan S — umbrella; this body sits at Plan S Step 3.
-
Plan G — F-065 cross-handler DRY scan hard-gated Plan T2 Step T2.1 (closed 2026-06-10 via !671; gate CLEAR).
-
the pre-1.0 destructive-rebuild posture — Plan T2 Step T2.4 + Plan T3 Step T3.5 commit messages cite.
-
the service-initialization pattern — T2.1 bundle wiring follows canonical service-main shape.
-
the quality-budget enforcement gate — B3a verification discipline for T1.2 macro expansion.
-
#558 (closed-aggregator decoupling tracking) — known limitation accepted; future decoupling deferred.