Skip to content

Migration Roadmap

This is the active implementation roadmap for the BluntDashboard migration program.

It replaces the earlier compressed cutover sketch as the main execution baseline. The older Delivery Plan remains useful as a cutover-oriented summary, but this roadmap is the source of truth for what gets built, in what order, and what counts as done.

  • The roadmap is completion-based, not date-based.
  • A phase closes only when its exit gate is met.
  • Subprojects are defined by Subsystem Topology, not by ad hoc file grouping.
  • Every phase should land through small patch trains that obey Change Topology.
  • The old system stays live until the production cutover gate is passed.

The roadmap is not only a phase plan. It is also the default patch-series plan.

  • Each subproject should land as a series of topology-aware PRs, not as one long-lived branch.
  • The default cross-plane ordering is DATA -> ORCH -> DOM -> EXP -> PLAT/GOV.
  • If a subproject only touches one plane, keep the series inside that plane and prefer leaf subsystem IDs.
  • If a later patch depends on an earlier one, do not merge it first just because the code is ready.
  • Stark sessions and PR drafts should be created per patch step, not per whole phase.
SubprojectDefault patch-series order
Foundation and GovernanceGOV.scenarios-and-architecture -> GOV.runbooks-and-migration -> PLAT.deployment-and-environment -> PLAT.observability
Data BackboneDATA.contracts-and-schema -> DATA.domain-store -> DATA.analytics-store -> GOV.scenarios-and-architecture
Ingest and Analytics FabricDATA.contracts-and-schema -> ORCH.shopify-sync -> DATA.analytics-store -> PLAT.observability
Performance and Taxonomy VerticalDATA.contracts-and-schema -> DOM.performance-intelligence -> DOM.taxonomy-attribution -> EXP.performance-workbench -> GOV.scenarios-and-architecture
Combo and Asset VerticalDATA.contracts-and-schema -> DOM.combo-operations -> DOM.asset-redundancy -> ORCH.asset-and-export-jobs -> EXP.creative-workbench
Fulfillment VerticalDATA.contracts-and-schema -> DOM.fulfillment-operations -> ORCH.casestry-and-release -> EXP.fulfillment-workbench -> PLAT.observability
Shell and Auth CutoverPLAT.identity-and-access -> EXP.shell -> PLAT.deployment-and-environment -> GOV.runbooks-and-migration
Production CutoverPLAT.deployment-and-environment -> PLAT.observability -> GOV.runbooks-and-migration
SubprojectPrimary subsystemsMissionKey deliverables
Foundation and GovernanceGOV.*, PLAT.deployment-and-environment, PLAT.observabilityMake the migration executable and governabledocs site as architecture source of truth, subsystem labels/PR rules, reproducible monorepo/toolchain bootstrap, Stark control-plane baseline, non-prod deployment skeleton
Data BackboneDATA.domain-store, DATA.analytics-store, DATA.contracts-and-schemaEstablish the target data model and migration-safe contractsDrizzle schema, dbmate migration flow, PlanetScale branch strategy, R2 archive conventions, contract definitions for API and jobs
Ingest and Analytics FabricORCH.shopify-sync, DATA.analytics-store, PLAT.observabilityConsolidate ingestion, refresh, and replay behaviorShopify client module, bulk sync pipeline, mart refresh jobs, watermarks, archives, run history, parity queries
Performance and Taxonomy VerticalDOM.performance-intelligence, DOM.taxonomy-attribution, EXP.performance-workbenchCut over the analytics and taxonomy workflows end-to-endWorker endpoints, migrated frontend flows, scenario acceptance pack, parity signoff for analytics workflows
Combo and Asset VerticalDOM.combo-operations, DOM.asset-redundancy, ORCH.asset-and-export-jobs, EXP.creative-workbenchCut over creative testing and asset-management workflowscombo routes/jobs, asset ingest pipeline, dedupe behavior, retry/replay behavior, migrated creative workbench
Fulfillment VerticalDOM.fulfillment-operations, ORCH.casestry-and-release, EXP.fulfillment-workbenchCut over supplier and fulfillment operationsorder lookup, CSV/export jobs, monitoring/reconciliation, webhook/release flows, fulfillment workbench parity
Shell and Auth CutoverEXP.shell, PLAT.identity-and-access, PLAT.deployment-and-environmentReplace the old app shell and auth planeAccess-based auth, frontend shell pointed at Workers, Pages deployment path, legacy auth removal
Production CutoverPLAT.*, GOV.runbooks-and-migrationMove real traffic safely and retire the old stackcutover checklist, rollback drills, production alerting, runbooks, hold period, decommission plan

Status: In progress

Goal: Make the migration buildable, reviewable, and reproducible before major runtime changes start landing.

Primary subprojects: Foundation and Governance

Deliverables

  • Arcadia-grounded architecture reference in docs/
  • canonical subsystem IDs and GitOps label topology
  • repo-local skills and PR SOPs for humans and agents
  • mise + just bootstrap path for the repo and sibling execution backends
  • project-oriented monorepo scaffold rooted at cmd/, pkg/, infra/, etc/
  • pnpm workspace + local-package Vite+ for JS/TS/Node surfaces
  • Stark baseline: durable runs, worktree/session materialization, Dagger handoff, Podman-backed Dagger execution, OpenShell bridge on Podman

Exit gate

  • a fresh machine or sandbox can run mise install and just bootstrap
  • just app-check, just docs-build, and Stark doctor paths pass
  • PRs can be classified by subsystem, patch class, and labels without ambiguity

Status: Planned

Goal: Stand up the target runtime substrate in non-production so vertical work stops depending on the old Express/Supabase hosting path.

Primary subprojects: Foundation and Governance, Data Backbone

Deliverables

  • dashboard-api Worker skeleton deployed to non-prod
  • ingest Worker skeleton deployed to non-prod
  • Pages preview path for the frontend
  • PlanetScale database, branch strategy, and migration workflow
  • Hyperdrive, R2, Queue, Cron, and secret/binding setup in Wrangler
  • health endpoints and basic observability/telemetry wiring
  • Access application configured for staff auth in non-prod

Exit gate

  • all target runtimes deploy successfully in non-prod
  • health checks are green end-to-end
  • DB migrations run repeatably in non-prod
  • Access-authenticated requests reach Worker endpoints successfully

Status: Planned

Goal: Make the new data plane trustworthy before frontends or domain cutovers depend on it.

Primary subprojects: Data Backbone, Ingest and Analytics Fabric

Deliverables

  • Drizzle schema covering operational tables and analytics structures
  • consolidated Shopify client module
  • bulk sync pipeline with watermarking and retry semantics
  • mart refresh process replacing manual materialized-view refreshes
  • JSONL archival to R2 and replay tooling/runbooks
  • parity queries for raw counts, top products, classifications, tag coverage, and asset linkage

Exit gate

  • core parity checks are within agreed tolerance
  • ingest runs are queryable and replayable
  • no critical workflow depends on manual sync triggers anymore

Phase 3: Performance and Taxonomy Vertical

Section titled “Phase 3: Performance and Taxonomy Vertical”

Status: Planned

Goal: Move the analytics-heavy staff workflows onto the new stack first, because they exercise the deepest parts of the new data plane.

Primary subprojects: Performance and Taxonomy Vertical

Deliverables

  • performance metrics endpoints on dashboard-api
  • tag analytics and classification behavior ported out of old RPC/stored-proc paths
  • designer assignment and tag-group APIs on the new stack
  • performance workbench UI pointed at Worker endpoints
  • scenario-level acceptance checks for performance, analytics, tag classification, tag groups, and designer assignment

Exit gate

  • staff can complete performance and taxonomy workflows against the new stack in non-prod
  • old and new outputs match closely enough for signoff

Status: Planned

Goal: Move creative workflow state and asset redundancy flows onto the new runtime and job fabric.

Primary subprojects: Combo and Asset Vertical

Deliverables

  • combo logs/templates/suggestions APIs on dashboard-api
  • combo import and suggestion generation jobs on ingest
  • asset ingest pipeline, dedupe semantics, and artifact linkage on the new stack
  • creative workbench UI switched to the new APIs/jobs
  • retry/replay runbooks for asset and combo job failures

Exit gate

  • combo workflows run end-to-end on the new stack
  • asset ingest and redundancy flows are observable, retryable, and no longer depend on Supabase Edge Functions

Status: Planned

Goal: Move supplier and fulfillment-critical flows after the data and asset substrate is stable.

Primary subprojects: Fulfillment Vertical

Deliverables

  • order lookup and fulfillment monitoring APIs on dashboard-api
  • CSV generation and related exports on ingest
  • Casestry webhook/release/reconciliation behavior moved into the target workflow fabric
  • fulfillment workbench UI switched to the new stack
  • operational alerts and rollback notes for fulfillment-sensitive jobs

Exit gate

  • fulfillment and supplier workflows run on the new stack with validated outputs
  • webhook/reconciliation flows are observable and replayable

Status: Planned

Goal: Remove the legacy app shell assumptions once all major verticals have viable replacements.

Primary subprojects: Shell and Auth Cutover

Deliverables

  • frontend shell pointed at Worker endpoints by default
  • Access-based auth in place for all staff flows
  • Supabase Auth and Passport paths removed from the active UI/runtime
  • Pages deployment path used for preview and staging validation
  • end-to-end UAT pack across Ops, Creative, Fulfillment, and Design workflows

Exit gate

  • all primary staff workflows run through the new shell and auth plane
  • no production-critical route depends on legacy auth/session behavior

Phase 7: Production Cutover and Decommission

Section titled “Phase 7: Production Cutover and Decommission”

Status: Planned

Goal: Move production traffic with explicit rollback posture, then retire the old stack only after the hold period.

Primary subprojects: Production Cutover

Deliverables

  • production cutover checklist
  • rollback-tested DNS/runtime switch plan
  • live alerting and operational dashboards
  • runbooks for sync validation, replay, ingest failure handling, and incident response
  • old stack hold-period policy and decommission checklist

Exit gate

  • production traffic is stable on the new system
  • rollback triggers were not hit during the hold period
  • old infrastructure can be decommissioned without losing required recovery paths

The default dependency chain is:

  1. Foundation and Governance
  2. Platform Backbone
  3. Data and Ingest Parity
  4. Performance and Taxonomy Vertical
  5. Combo and Asset Vertical
  6. Fulfillment Vertical
  7. Shell and Auth Cutover
  8. Production Cutover and Decommission

Some work can overlap, but only after the upstream substrate is real.

  • Performance/Taxonomy should not cut over before data parity exists.
  • Combo/Assets should not cut over before the workflow fabric and data contracts are stable.
  • Fulfillment should not cut over before the workflow and asset layers are trustworthy.
  • Shell/Auth cutover should happen after the major verticals have proven replacements.
  • Use the roadmap to decide what to build next.
  • Use Change Topology to decide how to slice each phase into PRs.
  • Use Subsystem Topology to choose the right subproject and owner surface.
  • Treat each deliverable as an acceptance artifact, not just an activity list item.

The roadmap should evolve as phases close and new blockers are discovered, but it should stay phase- and deliverable-oriented rather than drifting into a task dump.