Skip to content

Roadmap and Status

theGreenGuy edited this page Jun 15, 2026 · 26 revisions

Roadmap & Status

Live detail is in docs/DEVELOPMENT-STATUS.md (updated with every change). Phases follow build.md §15.

User-facing roadmap: public/static/roadmap.md is the single source of truth for the public roadmap page — a plain-text file with done / active / planned / exploring items rendered as a live timeline. Edit that file when a capability's status changes.

Phase Status Notes
0 — Foundations Repo + compose + shared schemas + txlog/outbox/relay + Kafka; IAM model + gateway JWT + per-endpoint RBAC + inter-service identity propagation (toggleable); CI green; Keycloak openwcs realm; JWT edge-auth exercised end-to-end. Remaining hardening: mTLS.
1 — Master data + inventory MVP Master data, inventory projection, log→projection loop proven.
2 — Process engine + one equipment family flow-orchestrator device-task lifecycle + uniform device contract ✅, conveyor adapter ✅, DEVICE RBAC ✅, Flowable BPMN process-engine ✅ with a sample goods-in process that originates a device task. Automation topology ✅ — 3D/2D placement editor (levels, conveyors with polyline paths + function points, ASRS port stubs, GTP workstations) and a routing projection that generates the full conveyor routing graph from the physical layout with geometry-inferred connections. Live 3D digital twin ✅ — the saved topology rendered live with equipment coloured by real-time state, totes replaying the HU scan trail, and stored-tote positions inside the ASRS rack; see Hardware Visualisation. Gap: a process designer UI + richer processes.
3 — Outbound + more equipment 🟡 order-management ✅, allocation + multi-size cubing + per-line carton traceability + per-carton dispatch labels + batch picking ✅, inventory reservation/ATP ✅, dispatch labels/services/routes ✅, canonical Host API (orders/ASNs/SKU/adjustments in, confirmations pull+push, idempotency) ✅, SAP & Manhattan adapters translating into the Host API ✅, complete BPMN outbound process ✅ (release → allocate → gateway → pick/dispatch → route). Gaps: real SAP/Manhattan wire protocols ⬜; more adapters ⬜.
3b — Inbound slotting & replenishment 🟡 slotting service ✅ (ADR 0003): block-level put-away (velocity-to-exit, soft single-SKU-per-lane, aisle redundancy + balancing), HU type capabilities + per-area allowed-HU-types, empty-HU far placement + LOW transport priority, multi-compartment HUs (dominant velocity + SKU-set affinity), cell-as-location coords (aisle/side/x/y/z), manual pick-face min/max + opportunistic replenishment, off-peak re-slotting, self-taught recency-weighted ABC, slotting UI, goods-in put-away delegate. Gaps: physical move dispatch ⬜ (the move-audit foundation is in: flow emits a HandlingUnitMoved event to txlog on every completed/failed STORE/RETRIEVE/RELOCATE — see Transport Overview), inventory-truth occupancy + HU on-conveyor booking ⬜, goods-in decant step ⬜. ADR 0009 multi-deep dig-out: planning endpoint ✅ step 1, physical dispatch ✅ step 2 (flow executes RELOCATE/BIN_RELOCATE chain before blocked retrieves), rack view ✅ step 3. See Slotting and Replenishment.
3c — Goods-to-person station execution 🟡 gtp service ✅ (ADR 0006): GTP station + STOCK/ORDER node config, order-destination demand, present-stock → put-to-light put-list (batch: one stock HU → many orders), confirm/short puts, destination completion; ORDER_LOCATION + PUT_WALL modes; orthogonal operating modes (PICKING / DECANTING / STOCK_COUNT / QC / MAINTENANCE); station inbound queue (IN_TRANSIT → QUEUED → DONE), deactivate/drain control, in-transit capacity caps; topology-projected station nodes (POST /stations/{id}/nodes/sync, inboundDistanceM) — flow-orchestrator pushes STOCK/ORDER conveyor interactions into station nodes on topology projection ✅. ADR 0007 — conveyor transport as a workplace-agnostic layer; arrival-driven queueing ✅ design accepted (2026-06): (1) conveyor movement owned by the emulator's CONVEYOR family, emitting an arrival event to flow via the §3b callback; (2) flow-orchestrator owns the induction queue (station queue relocates from gtp to flow), keyed by destination workplace — because more than one workplace can request the same HU, only a central pool can arbitrate; (3) new lifecycle REQUESTED → IN_TRANSIT → QUEUED → DONE driven by transport events, not local timers — REQUESTED (tote in storage / being retrieved) visible on the workplace screen before the tote is physically in transit (R3); cap counts only {IN_TRANSIT, QUEUED}; (4) R4 per-HU transport trace (hu_transport_trace in flow schema) — timestamped row per function point (retrieve, induct, conveyor divert/merge/recirculate, arrive, queue, present, store-back) + the decision made; extends Transport screen click-to-trace. Detail: docs/adr/0007-conveyor-transport-and-workplace-induction.md. Implementation: 3c-1 ✅ (flow-owned induction queue, per-HU transport trace) + 3c-2 ✅ (emulator loop recirculation + sorter decision-point trace, completing the ADR-0007 emulator-consolidation roadmap). See Goods-to-Person Stations and Transport Overview. Gaps: physical put-lights ⬜, demand auto-wire from allocation ⬜, stock→txlog audit ⬜.
4 — Counting & operations 🟡 StockAdjusted projection ✅; cycle/stock-counting service ✅ (counting: count tasks, ABC-cadence schedule, blind/variance, recount + reconciliation → StockAdjusted); operator count UI ✅ (standalone stock-counting screen: ad-hoc + scheduled tasks, per-line capture, variances, recount, reconcile; plus the GTP at-station blind-count panel); operational Reporting section ✅ — five screens shipped: Material Flow (scan quality with predictive error trends, 3D conveyor traffic heatmap, transit-time p50/p95), ASRS (storage density + 90-day history + 14-day forecast, 3D movement heatmap, per-device throughput), Stock (per-SKU available/allocated/unavailable), Inbound and Outbound (90-day history, hour-of-day peak profile); see Reporting. Dashboards & alerting ✅: a live landing situation dashboard with state-aware heroes (stock-blocking, inbound, outbound, dispatch, automation, putaway) plus five area dashboards (inbound, outbound, replenishment, stock, ABC movers with a Pareto curve) over new read-only per-service aggregation endpoints, and threshold alerting in the now-functional notification service (a ~60 s ShedLock-guarded evaluator opens/dedupes/clears WARNING/CRITICAL alerts and delivers them by email + webhook), with admin alert thresholds in Settings → Alerts; see Dashboards and spec docs/dashboardScope.md. Phase-4 tail ✅: real SLA metrics (on-time-to-cutoff + order-cycle-time median, Outbound heroes), a full-screen andon board (/dashboards/andon), and the ISA-18.2 alert-system-health view (/dashboards/alert-health); plus the data-gap fixes (real receive-errors, true windowed ABC risers/fallers from sku_pick_daily, real dock-to-stock timing from handling_unit.stored_at). Demo mode now also seeds/clears dashboard sample data across services. Nothing dashboard-specific remains.
5 — Hardening & scale 🟡 Horizontal scaling ✅ — ShedLock on all scheduled jobs (outbox relays, off-peak sweeps, webhook loop); pessimistic loop-capacity lock in flow-orchestrator; starter Kubernetes manifests + HPAs in deploy/k8s/. See Horizontal Scaling. Remaining: DLQs, circuit breakers, replay tooling, perf tuning, security review, mTLS.

Known near-term follow-ups

  • Richer BPMN content + more service-task delegates on the process-engine. (The BPMN designer UI (bpmn-js), service-task delegates, user tasks, and sample goods-in / outbound / cycle-count processes are in place.)
  • Real SAP/Manhattan wire protocols (OData/BAPI/IDoc, Manhattan REST) behind the adapter seams.
  • Build out the remaining Go adapters (ASRS, AMR, AutoStore) against real protocols.
  • mTLS between services; runtime resolution of custom IAM roles.
  • Avro / Schema Registry for events; DLQs and replay tooling.

See Architecture and Services for what each piece does today.

Clone this wiki locally