Wave Planner — WP0001
Plan sea shipments and truck batches from current data and AI. Save a draft, submit to Route / Load / QO, or abandon the plan.
Hard rule library · rules are data: AI fills a template, four gates, then commit
| Rule | Template | Scope | Params | State | Evidence | Actions |
|---|---|---|---|---|---|---|
| Truck capacity (13 m trailer) | Capacity threshold | all | {"max_weight_kg": 25000, "max_volume_m3": 80, "max_ibc": 12, "eta_buffer_days": 1} | active | Built-in template · unit tested | |
| IMDG segregation | Exclusion / compatibility | loads | {"separate": [["3", "8"], ["5.1", "8"]]} | active | Built-in template · unit tested | |
| Liquid cargo not mixed with dry goods | Exclusion / compatibility | loads | {"liquid_dry": true} | draft | Structure check passed · shadow replay pending | |
| Driver hours | Resource / driver hours | all | {"max_driving_hours": 13, "avg_speed_kmh": 60, "stop_minutes": 45} | active | Built-in template · unit tested | |
| Saskatoon winter receiving cutoff | Time relation | Saskatoon | {"latest_time": "15:00", "seasonal": "winter"} | observing | Structure check passed · shadow replay 2 hits · observe day 3 |
Entry flow: say the rule → AI matches a template and produces a draft →
① structure check → ② shadow replay → ③ observe (runs in production but
only logs for 1–7 days) → ④ manual commit (atomic flip, version kept).
Safety: each rule has its own kill switch; a change creates a new version instead of editing history; AI never generates executable code.
Safety: each rule has its own kill switch; a change creates a new version instead of editing history; AI never generates executable code.