Disciplines · Decisions (ADRs)

ADR-S5: Compatibility and Incremental Migration

§S0.10.a registered Tara's surface: 209 public imports, 70 routes, 1 durable store, 1 domain-lib consumer (@oshun/bff).

Adopted · 2026-07-24
8sections3 minread

On this page

Status: Adopted (agent-recorded design decision) — pending named architecture ratification Date: 2026-07-24 Authors: V1 Domain Workbenches extraction audit (Phase S)

Records how Tara adopts the shared workbench-kit without a flag day (V1_DOMAIN_WORKBENCHES_TODOS_2026-07-23.md §S0.10). Built on §S0.10.a (tara-migration-surface.json), the §S0.2 extraction matrix (the migration slices), the §S0.7 extension model (the seams), and §S0.8 (the store boundary). Machine-checked model: evidence/v1-workbenches/migration-plan.json.

Context#

§S0.10.a registered Tara's surface: 209 public imports, 70 routes, 1 durable store, 1 domain-lib consumer (@oshun/bff). The migration must not break any of these while the kit is introduced.

S0.10.b — Coexistence architecture (additive seams)#

Seam Mechanism
adapter each kit contract is fed by a Tara-supplied domain adapter (§S0.7 ImportAdapter/PublishAdapter/ScoreProvider); the kit never names a Tara concept
alias re-export the kit contract under Tara's existing symbol names so current importers keep compiling (additive, no rename)
version-negotiation kit capability discovery (§S0.7.d) lets a partially-migrated host detect which contracts are kit-backed vs Tara-inline
no-breaking-change every seam is additive; @oshun/tara-workbench keeps serving all 70 routes throughout — there is no flag day

S0.10.c — Migration slices (independently verifiable capabilities)#

The slices are the 13 neutral interaction contracts the §S0.2 matrix extracted — not a package-wide replacement. Ordered by risk:

  • Tier 1 — proven-reuse-first: EvidenceGroundingPanel, SourceLibrary (Veritas is the near 2nd consumer → clears the §S0.11 threshold first).
  • Tier 2 — lowest-coupling neutral: the 0-meditation-signal contracts (AssignmentPanel, CommentThread, PipelineFunnel, ReviewDecisionPanel).
  • Tier 3 — mixed-split: the remaining contracts that need their domain adapter wired (GateRunnerPanel, CatalogBrowser, SchedulingCalendar, BundlePublisher, SourceInspector, TaxonomyEditor, AgentAutonomyBudget).

Full ordered list (1..13) in migration-plan.json .slices.

S0.10.d — Slice transition contract#

Per slice: enable (feature-flag the kit-backed contract; Tara inline stays default) → verify (the slice's existing tests pass against the kit) → coexist (both render identically; flip the flag) → remove (delete the Tara inline copy only once the kit contract clears §S0.11).

No dual-read/write reconciliation is needed: each slice is a UI-contract extraction over the same Tara BFF + durable store (§S0.8 keeps the store Tara-owned) — there is no second copy of the data to reconcile.

S0.10.e — Mixed-version journey plan#

A partially-migrated user sees no difference:

  • 70 routes unchanged, 1 durable store unchanged.
  • the /studio/tara-workbench/* deep-link namespace is Tara-owned (§S0.9 IA) and does not change — deep links resolve identically.
  • the migration swaps a component implementation, not a route/store/URL; the §S0.2 seam is the interaction contract, so behavior is preserved.

S0.10.f — Retirement plan#

Milestone-gated, not calendar-fixed (so it cannot slip a flag day):

Milestone Condition
T0 first slice (EvidenceGroundingPanel/SourceLibrary) gains its Veritas 2nd consumer → clears §S0.11 → first deletion eligible
T1 neutral-candidate slices migrated + verified behind the flag
T2 mixed-split slices migrated once their domain adapters are wired
T3 all migrated slices past §S0.11 → Tara inline copies deleted; contract period ends
  • Contract period: each slice keeps its inline copy until its kit contract clears §S0.11 (≥2 real consumers).
  • Legacy consumer: the single @oshun/bff consumer re-points per slice.
  • Deletion gate: §S0.11 — delete only at ≥2 consumers and passing tests.
  • Absolute dates are set at named ratification (governance).

Consequences#

  • No flag day: @oshun/tara-workbench serves every route until each slice is independently proven and retired.
  • The §S0.11 deletion threshold is the single retirement gate, tying this ADR to ADR-S1/S0.11.
  • Named ratification remains a human step; the slice order, seams, and gate are coherence-gated in CI against the §S0.2/§S0.8/§S0.10.a evidence.

References#

  • V1_DOMAIN_WORKBENCHES_TODOS_2026-07-23.md §S0.10
  • evidence/v1-workbenches/tara-migration-surface.json (§S0.10.a), component-extraction-matrix.json (§S0.2)
  • evidence/v1-workbenches/migration-plan.json (this plan, machine-checked)
  • docs/adr/ADR-S1-*.mdADR-S4-*.md