-
-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap and Status
theGreenGuy edited this page Jun 16, 2026
·
38 revisions
Live detail is in
docs/DEVELOPMENT-STATUS.md
(updated with every change). Phases follow build.md §15.
User-facing roadmap:
public/static/roadmap.mdis 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; AMR fleet + AutoStore + ASRS-crane live views ✅ (emulator telemetry → flow twin endpoints GET /api/flow/twin/{amr-fleet,autostore,asrs-cranes} → 3D scene: AMR robots coloured by status with carried HU on hover, AutoStore ports busy/idle + a fill % stat, and ASRS cranes gliding + lifting in the rack coloured by status with carried HU on hover; all poll ~2 s and degrade to nothing when the emulator is off; AMR robots and ASRS cranes interpolated per frame so they glide/lift continuously between polls instead of snapping — AutoStore ports are stationary); see Hardware Visualisation. Configurable handheld process designer ✅ (Phase 1 + Phase 2): a new process-designer service (8097, base path /api/process-designer, distinct from the Flowable process-engine's /api/process) with versioned screen+task definitions (one ACTIVE per key), a client-driven offline handheld runtime, a curated identity-forwarded task library (no arbitrary code), and a WYSIWYG designer with a live handheld preview in Engineering. Phase 2 ✅ adds version management (duplicate/clone a version into a new DRAFT, JSON import/export to move defs between environments), step-level skipWhen skip conditions (validated at publish by a no-eval recursive-descent parser), four more curated tasks (host.confirm, inventory.adjust, counting.capture, order.lookup) plus a live task catalog driving the designer's picker, richer pre-publish validation, and a read-only Process instances monitoring screen (/process-instances). See Process Designer (spec docs/process-designer-spec.md). Gap: the spec's future controlled escape hatches (Phase 3 AI-assist, sandboxed script). |
| 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), picking execution UI ✅ (order-management pick-queue GET /api/orders/pick-tasks + confirm/short POST …/pick-tasks/{lineId}/confirm posting a Picked line txn that decrements stock; guided RF-style /picking operator screen, codes via useCatalog, Enter=confirm — see Outbound Flow); pick location threaded ✅ — allocation returns the primary allocated pick pickLocationId per line, order-management persists it on the order line (pick_location_id, V10), and the pick queue returns the real locationId so the Picking screen shows a real location code. Persisted dispatch waves ✅ — a route_dispatch entity (V11, OPEN/LOADING/DEPARTED + opened/firstLoaded/departed timestamps + assigned/ready counts), lazily upserted and advanced best-effort in-transaction as a route's orders are assigned/released/shipped, now backs GET /api/orders/reports/dispatch (real status + accurate departure) and the SLA report (/reports/sla on-time uses the wave's real departed_at vs cut-off); see Outbound Flow. 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. Physical move dispatch ✅ — slotting turns its plans into real device-task moves via flow POST /api/flow/moves (RELOCATE / AutoStore BIN_RELOCATE; HU's new location booked + HandlingUnitMoved txlog audit fires; stock follows the HU so no StockMoved double-apply): re-slot (POST /api/slotting/reslot/{id}/dispatch), replenishment (…/replenishment/{taskId}/dispatch, FEFO-approx source), and the goods-in decant → put-away step (POST /api/slotting/decant/putaway); plans flip to DISPATCHED, V7 stamps device_task_id, slotting gained OPENWCS_FLOW_ORCHESTRATOR_BASE_URL; see Transport Overview. Multi-leg moves ✅ — POST /api/flow/moves now picks the transport by the two locations' storage block: same-system → a single RELOCATE / BIN_RELOCATE, cross-system → a RETRIEVE → CONVEY → STORE chain routed via the existing routing machinery and tracked leg-by-leg in a flow_move_chain table (V19, idempotent per leg), with the STORE leg's device family resolved from the destination block (so a cross-system move into an AutoStore correctly issues BIN_STORE); the final STORE books the destination + fires the HandlingUnitMoved audit. Lane-depth reconciliation ✅ — POST /api/slotting/lanes/reconcile + an off-peak ShedLock sweep compare slotting's lane-depth ledger (active putaway assignments in multi-deep lanes) against inventory occupancy, report per-lane drift and close ghost assignments (RECONCILED). Gaps: inventory-truth occupancy + HU on-conveyor booking ⬜, true (not approx) FEFO replenishment sourcing ⬜. 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. AI assistant ✅ — a new assistant service (8096) runs an Anthropic Claude Messages-API tool-use agentic loop over read-only, identity-forwarded WCS endpoints (orders, stock, dashboards, HU trace, transports, stock-blocking), answering questions about your warehouse under your own permissions and warehouse scope; a global floating chat widget + a Settings → AI Assistant admin tab (write-only key, model pick, enable); the Anthropic key is write-only on the public API and read by the assistant from a network-only internal endpoint. Requires an admin-supplied Anthropic API key (external, billed); disabled until configured. See AI Assistant. |
| 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. |
- 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.)
- Process designer Phase 3: the spec's future controlled escape hatches (AI task-assist, sandboxed scripting) on the configurable handheld Process Designer. (Phase 2 — version management, JSON import/export, step skip conditions, more curated tasks, instance monitoring — has shipped.)
- 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.
openWCS — open-source Warehouse Control System · summarized from build.md & docs/AS-BUILT.md (the repo docs are authoritative).
Design
Flows
- Areas
- Inbound and Inventory
- Slotting and Replenishment
- Goods-to-Person Stations
- Outbound Flow
- Equipment Integration
- Transport Overview
- Process Designer
- Mobile Process Designer
- Hardware Visualisation
- Host Integration
Reporting & Dashboards
Operations