{
  "project": {
    "title": "Adom SMT Supervisory Line",
    "subtitle": "Project timeline",
    "appName": "smt-planner"
  },
  "phases": [
    {
      "name": "Phase 0 — Foundation",
      "start": "2026-06",
      "end": "2026-08"
    },
    {
      "name": "Phase 1 — SPI + Loop 1",
      "start": "2026-09",
      "end": "2027-02"
    },
    {
      "name": "Phase 2 — AOI + Loop 2",
      "start": "2027-03",
      "end": "2027-08"
    },
    {
      "name": "Phase 3 — Reflow + Predict",
      "start": "2027-09",
      "end": "2028-06"
    },
    {
      "name": "Phase 4 — Research",
      "start": "2028-07",
      "end": "2028-12"
    }
  ],
  "items": [
    {
      "type": "group",
      "label": "Phase 0 — Foundation",
      "phase": 0
    },
    {
      "type": "task",
      "id": "day1",
      "name": "Essemtec Day-1 Verification",
      "start": "2026-06-01",
      "end": "2026-07-15",
      "phase": 0,
      "status": "planned",
      "description": "10 empirical tests on dev ePlace install. Blocks PumaBridge file-write design decisions."
    },
    {
      "type": "task",
      "id": "i2s",
      "name": "i2s Evaluation",
      "start": "2026-06-01",
      "end": "2026-07-31",
      "phase": 0,
      "status": "planned",
      "description": "Evaluate i2s 2D inspection: data access via CFX/eData, measurement quality, licensing ($38K)."
    },
    {
      "type": "task",
      "id": "pg",
      "name": "PostgreSQL Schema",
      "start": "2026-06-01",
      "end": "2026-07-15",
      "phase": 0,
      "status": "not-started",
      "description": "Board-GUID-keyed tables: spi_measurements, aoi_measurements, traceability."
    },
    {
      "type": "task",
      "id": "rmq",
      "name": "RabbitMQ Broker",
      "start": "2026-06-01",
      "end": "2026-06-30",
      "phase": 0,
      "status": "not-started",
      "description": "AMQP broker for CFX ingest and WriteOp routing."
    },
    {
      "type": "task",
      "id": "cfx",
      "name": "CFX Ingestor (Rust)",
      "start": "2026-06-15",
      "end": "2026-08-31",
      "phase": 0,
      "status": "not-started",
      "description": "Subscribes to Puma CFX bus, transforms IPC-2591 JSON to Postgres rows.",
      "deps": [
        "rmq",
        "pg"
      ]
    },
    {
      "type": "task",
      "id": "env",
      "name": "Environmental Sensors",
      "start": "2026-06-01",
      "end": "2026-08-15",
      "phase": 0,
      "status": "not-started",
      "description": "Temperature/humidity sensors for Loop 7 SPC bands."
    },
    {
      "type": "task",
      "id": "pb03",
      "name": "PumaBridge v0.1–v0.3",
      "start": "2026-06-15",
      "end": "2026-08-31",
      "phase": 0,
      "status": "planned",
      "description": "W1: env setup. W2: read-only eData. W3: recipe writes. W4: file-watcher + git.",
      "deps": [
        "day1"
      ]
    },
    {
      "type": "task",
      "id": "pfp",
      "name": "puma-file-prep (ongoing)",
      "start": "2026-05-01",
      "end": "2027-02-28",
      "phase": 0,
      "status": "live",
      "striped": true,
      "description": "279 packages, 61 components, 55/55 E2E tests. Ongoing: AMQP transport, UI polish."
    },
    {
      "type": "task",
      "id": "pc",
      "name": "puma-converter (ongoing)",
      "start": "2026-05-01",
      "end": "2026-12-31",
      "phase": 0,
      "status": "live",
      "striped": true,
      "description": "CAD/BOM import engine. KiCad to Puma XML. Stable, incremental."
    },
    {
      "type": "task",
      "id": "inv",
      "name": "pnp-inventory (ongoing)",
      "start": "2026-05-01",
      "end": "2026-12-31",
      "phase": 0,
      "status": "live",
      "striped": true,
      "description": "vendor-cross-ref (port 8893) + job-inventory-check (port 8895)."
    },
    {
      "type": "milestone",
      "name": "M1: Data backbone operational",
      "date": "2026-08-31",
      "phase": 0,
      "description": "Postgres + RabbitMQ + CFX ingestor running. Puma telemetry flowing."
    },
    {
      "type": "group",
      "label": "Phase 1 — SPI + Loop 1",
      "phase": 1
    },
    {
      "type": "task",
      "id": "spi-src",
      "name": "Source Used 3D SPI",
      "start": "2026-07-01",
      "end": "2026-10-31",
      "phase": 1,
      "status": "not-started",
      "description": "Scout used Koh Young KY8030 or similar. $15K–$50K. 3–6 month lead."
    },
    {
      "type": "task",
      "id": "spi-int",
      "name": "3D SPI Integration",
      "start": "2026-10-01",
      "end": "2027-01-31",
      "phase": 1,
      "status": "not-started",
      "description": "Install, integrate with CFX bus, validate per-pad volume data to Postgres.",
      "deps": [
        "spi-src",
        "cfx"
      ]
    },
    {
      "type": "task",
      "id": "spc",
      "name": "SPC Engine (Rust)",
      "start": "2026-09-01",
      "end": "2026-12-31",
      "phase": 1,
      "status": "not-started",
      "description": "Western Electric control-chart rules. Fires alerts on process drift.",
      "deps": [
        "pg"
      ]
    },
    {
      "type": "task",
      "id": "pb10",
      "name": "PumaBridge v0.4–v1.0",
      "start": "2026-09-01",
      "end": "2026-11-30",
      "phase": 1,
      "status": "planned",
      "description": "W5: Package file writes. W6: remaining file-writers, observability, pre-flight checks.",
      "deps": [
        "pb03"
      ]
    },
    {
      "type": "task",
      "id": "loop1",
      "name": "Loop 1: Dispense → SPI (advisory)",
      "start": "2026-12-01",
      "end": "2027-02-28",
      "phase": 1,
      "status": "not-started",
      "description": "Proportional control on per-pad-class jet valve shot params. Advisory mode.",
      "deps": [
        "spi-int",
        "spc",
        "pb10"
      ]
    },
    {
      "type": "task",
      "id": "loop7",
      "name": "Loop 7: Environment → SPC",
      "start": "2026-10-01",
      "end": "2027-01-31",
      "phase": 1,
      "status": "not-started",
      "description": "Temperature/humidity-band SPC limit adjustment.",
      "deps": [
        "spc",
        "env"
      ]
    },
    {
      "type": "task",
      "id": "loop4",
      "name": "Loop 4: Lot Change Screening",
      "start": "2027-01-01",
      "end": "2027-02-28",
      "phase": 1,
      "status": "not-started",
      "description": "Tighten SPC limits on first boards after reel change.",
      "deps": [
        "spc"
      ]
    },
    {
      "type": "task",
      "id": "mol01",
      "name": "Molecule-Inventory v0.1",
      "start": "2026-11-01",
      "end": "2027-02-28",
      "phase": 1,
      "status": "not-started",
      "description": "Standalone app. Reel tracking, feeder-slot mapping, MSL state, stock levels."
    },
    {
      "type": "milestone",
      "name": "M2: SPI data flowing",
      "date": "2027-01-15",
      "phase": 1,
      "description": "Per-pad paste volume data in Postgres. SPC engine monitoring."
    },
    {
      "type": "milestone",
      "name": "M3: Loop 1 advisory",
      "date": "2027-02-28",
      "phase": 1,
      "description": "Dispense closed-loop running in advisory mode."
    },
    {
      "type": "group",
      "label": "Phase 2 — AOI + Loop 2",
      "phase": 2
    },
    {
      "type": "task",
      "id": "i2s-int",
      "name": "i2s Integration (if viable)",
      "start": "2027-01-01",
      "end": "2027-04-30",
      "phase": 2,
      "status": "planned",
      "description": "Integrate Puma i2s 2D pre-reflow inspection into supervisor. Depends on Q-i2s eval.",
      "deps": [
        "i2s"
      ]
    },
    {
      "type": "task",
      "id": "aoi-src",
      "name": "Source Used Post-Reflow AOI",
      "start": "2027-01-01",
      "end": "2027-05-31",
      "phase": 2,
      "status": "not-started",
      "description": "Used Koh Young Zenith or similar. $25K–$80K. Required for Loop 3 and Loop 6."
    },
    {
      "type": "task",
      "id": "aoi-int",
      "name": "Post-Reflow AOI Integration",
      "start": "2027-04-01",
      "end": "2027-07-31",
      "phase": 2,
      "status": "not-started",
      "description": "Install, integrate CFX, validate per-joint solder data.",
      "deps": [
        "aoi-src",
        "cfx"
      ]
    },
    {
      "type": "task",
      "id": "loop2",
      "name": "Loop 2: Placement → AOI (Kalman)",
      "start": "2027-03-01",
      "end": "2027-07-31",
      "phase": 2,
      "status": "not-started",
      "description": "Kalman filter corrects feeder/nozzle offsets from i2s or external pre-reflow AOI.",
      "deps": [
        "i2s-int",
        "pb10"
      ]
    },
    {
      "type": "task",
      "id": "loop6",
      "name": "Loop 6: Test → Root Cause",
      "start": "2027-05-01",
      "end": "2027-08-31",
      "phase": 2,
      "status": "not-started",
      "description": "Correlates test failures to upstream anomalies. Mahalanobis scoring. RCA dossier.",
      "deps": [
        "aoi-int",
        "spc"
      ]
    },
    {
      "type": "task",
      "id": "dash",
      "name": "Operator Dashboard v1",
      "start": "2027-04-01",
      "end": "2027-08-31",
      "phase": 2,
      "status": "not-started",
      "description": "Web app: live SPC charts, alerts, traceability, RCA dossiers."
    },
    {
      "type": "milestone",
      "name": "M4: AOI/i2s data flowing",
      "date": "2027-05-31",
      "phase": 2,
      "description": "Pre-reflow inspection data in Postgres."
    },
    {
      "type": "milestone",
      "name": "M5: Loop 2 closed-loop",
      "date": "2027-08-31",
      "phase": 2,
      "description": "Placement correction running with automatic writebacks."
    },
    {
      "type": "group",
      "label": "Phase 3 — Reflow + Predictive",
      "phase": 3
    },
    {
      "type": "task",
      "id": "loop3",
      "name": "Loop 3: Reflow Bayesian Opt.",
      "start": "2027-09-01",
      "end": "2028-03-31",
      "phase": 3,
      "status": "not-started",
      "description": "Bayesian optimization (BoTorch/Ax) of reflow profile. Human-in-the-loop.",
      "deps": [
        "aoi-int"
      ]
    },
    {
      "type": "task",
      "id": "loop5",
      "name": "Loop 5: Feeder Health",
      "start": "2027-09-01",
      "end": "2028-02-28",
      "phase": 3,
      "status": "not-started",
      "description": "Predictive maintenance. Supervisor module. Pickup retry anomaly detection."
    },
    {
      "type": "task",
      "id": "loop1cl",
      "name": "Loop 1 → Closed-Loop",
      "start": "2027-09-01",
      "end": "2027-12-31",
      "phase": 3,
      "status": "not-started",
      "description": "Promote Loop 1 from advisory to automatic writebacks.",
      "deps": [
        "loop1"
      ]
    },
    {
      "type": "task",
      "id": "mol10",
      "name": "Molecule-Inventory v1.0",
      "start": "2027-09-01",
      "end": "2028-01-31",
      "phase": 3,
      "status": "not-started",
      "description": "Full stock integration, MSL compliance, BOM cross-check.",
      "deps": [
        "mol01"
      ]
    },
    {
      "type": "milestone",
      "name": "M6: Loop 3 BO running",
      "date": "2028-03-31",
      "phase": 3,
      "description": "Reflow Bayesian optimization operational."
    },
    {
      "type": "milestone",
      "name": "M7: Feeder predictive maint.",
      "date": "2028-02-28",
      "phase": 3,
      "description": "Feeder health monitoring and alerting live."
    },
    {
      "type": "group",
      "label": "Phase 4 — Research",
      "phase": 4
    },
    {
      "type": "task",
      "id": "classif",
      "name": "Custom Defect Classifiers",
      "start": "2028-07-01",
      "end": "2028-12-31",
      "phase": 4,
      "status": "not-started",
      "description": "Train custom vision models on accumulated production data."
    },
    {
      "type": "task",
      "id": "loop8",
      "name": "Loop 8: Transfer Learning",
      "start": "2028-07-01",
      "end": "2028-12-31",
      "phase": 4,
      "status": "not-started",
      "description": "Seed new product recipes from similar existing products."
    },
    {
      "type": "task",
      "id": "loop9",
      "name": "Loop 9: LLM Operator Assist",
      "start": "2028-09-01",
      "end": "2028-12-31",
      "phase": 4,
      "status": "not-started",
      "description": "Plain-English diagnostics and recommendations."
    }
  ]
}