Skip to content

This is an internal working record, not an everyday instruction. It was written while the system was being rebuilt, for whoever maintains it. If you are here to do today's work, use the everyday documents instead: Procedures · Processes · Runbooks · The working day, step by step

Inbound Planning And Loader Parity / Cutover Matrix

  • Status: P6/P12 MIGRATION ACCEPTANCE INPUT / NOT ACTIVATED
  • Process input: INBOUND_PLANNING_ASSIGNMENT_LOADER_RECONCILIATION.md
  • Migration packet: INBOUND_PLANNING_MIGRATION_PACKET.md
  • Source baseline: 4fc2f5a893765fbb95e0a2bdcb971322b0ec9fc0
  • Effect boundary: documentation only

1. Evidence Levels

SOURCE CHARACTERIZED
LOCAL ENGINEERING VERIFIED
TARGET-ROLE VERIFIED
RELEASE VERIFIED
STABILIZED
CALLER-ZERO VERIFIED

One level does not prove another.

2. Planning And Assignment Read Parity

Dimension Required old/new comparison Evidence
Operating date same LA/business-date rows and timezone boundary source + query sample
Lane membership same stored/derived status classification representative fixtures
Ready eligibility same actionable/non-actionable rows and reasons positive/negative fixtures
Stable identity same transload/planner IDs and no display-text mutation identity contract + API result
Loader assignment same normalized assigned Loader set single/multiple Loader fixtures
Current job same opened/started planner per Loader active-job fixture
Next queue same order and tie-break behavior ordered queue fixture
Break exclusion QUEUE_BREAK rows never appear as physical jobs source + list result
Break visibility only intended current/sent/assigned Break appears Break fixtures
Auto mode same tenant-configured manual/auto-send mode config readback
Notification state assignment and LAST_SENT_TIME are not conflated silently result contract
Empty/error visible empty, denied and server-error states browser scenarios

3. Assignment Command Parity

Scenario Required result
assign one Loader planner rereads exact Loader token and queue order
assign multiple Loaders approved ordering/ownership and every Loader queue reread
unassign scheduled job assignment fields cleared without changing operational work
unassign started job rejected or processed only by approved recovery command
reorder queue exact per-Loader order reread; no omitted/duplicate planner
duplicate request one logical assignment result
stale planner 409/conflict and current planner returned or reread
response loss reread planner before repeat
Telegram success assignment local result plus separate send evidence
Telegram failure assignment remains committed; retry message only
Clock Out release only approved scheduled/unstarted assignments released in same local transaction
foreign tenant not visible or mutable
role denial no mutation and clear 403-equivalent result

4. Loader Start Parity

Scenario Required result
assigned Loader starts first eligible job planner/transload/current-job reread
wrong Loader token reject without mutation
Office override explicit capability, selected actor and audit evidence
duplicate/concurrent Start one logical job start; loser receives stale conflict
another active job approved one-active-job policy enforced server-side
not first queue item approved queue policy enforced server-side, not button-only
open Break approved policy enforced consistently
not Clocked In approved Clock policy enforced or documented independence
Assignment Board versus Loader page both invoke same command/invariants
response loss current job reread before repeat

5. Completion Parity By Variant

For each supported variant create a separate scenario packet:

TRANSLOAD / RELOAD
UNLOAD
SPARE
DOMESTIC PICKUP
STACK FOOTPRINT REVIEW

Each packet must list:

  • required current state;
  • required quantity/weight/location/seal/file input;
  • authoritative transload/planner/equipment/staff writes;
  • inventory/Yard/Final Review handoff;
  • post-commit Telegram/email/operation event;
  • exact readback;
  • duplicate/timeout/partial recovery;
  • Undo/correction limit.

General completion acceptance:

Scenario Required result
valid complete intended child records commit and reread
missing required data/file no partial business completion
stale/concurrent complete conflict and current result reread
DB commit + Telegram failure job stays complete; message retry only
DB commit + next-queue Telegram failure next job remains assigned; effect recovery only
completion to Final Review eligible Reload/Transload review row appears separately
completion to Inventory/Yard child IDs/status/location reread separately
Undo only documented compensation occurs; residual effects visible

6. Clock And Staff-Time Parity

Scenario Required result
Clock In one local CLOCK_IN, current state and totals reread
duplicate Clock In rejected or idempotently returns current state per approved rule
Clock Out one local CLOCK_OUT and current state reread
Clock Out release exact released planner IDs/count reread
active job on Clock Out approved policy; no inferred completion
open Break on Clock Out approved policy; no orphan interval
10-minute Break paid interval calculation preserved
Lunch unpaid 30-minute calculation preserved
manager correction original/corrected provenance and required reason
response loss current event stream reread before repeat
QuickBooks Time success local event plus provider evidence
QuickBooks Time failure local event preserved; provider/manual-review state explicit

7. Break Queue Parity

Scenario Required result
manager creates Break one active queue item with assigned Loader, type, time/order
duplicate active Break reject or show existing item
Telegram send send evidence recorded; no duplicate queue item
Telegram failure row remains not-current/self-service unavailable
self-service Start only assigned primary Loader and current sent row
manager Start explicit manager capability and same event invariants
duplicate Start one planner Started state and one BREAK_IN
expiry one planner completion and one BREAK_OUT at approved time
read refresh at expiry target read is side-effect free; worker/command owns transition
cancel scheduled Canceled row; no Break event
cancel started rejected or handled only by approved correction path
next queue message separate post-break effect and retry
response loss reread planner and staff events before retry

8. Role / Tenant Matrix

For each current and target role record:

planning page
assignment read
assign/unassign/reorder
Office Start/Complete override
Loader page
Loader Start/Complete
Clock In/Out
Break self-service
Break manage/send/start/cancel
Timeline read/correct
files/photos
provider reconciliation

For every action specify:

  • expected allow/deny;
  • menu visibility;
  • direct API behavior;
  • same-tenant scope;
  • foreign-tenant negative;
  • no-mutation readback.

Administrator evidence does not replace Forklift Operator, Office Manager or Dispatch acceptance.

9. Cutover Controls

Every write cutover records:

capability/use case
old owner
new owner
cohort selector
single-writer proof
release IDs
schema/config prerequisites
before/after readback
rollback selector
commands during exposure window
error/metric observation
caller-zero condition

Forbidden:

  • selecting writer by numeric tenant ID;
  • enabling old and new writers for one action;
  • changing MySQL/PostgreSQL simultaneously;
  • using UI route as the only write selector;
  • replaying a business mutation to retry Telegram/QBO;
  • treating page parity as process parity.

10. Rollback

Rollback restores the accepted command/page owner. It does not delete or reverse legitimate assignment, job, staff-time or Break records created during the new-owner window.

Required rollback readback:

  • assignments and queue order;
  • active/current jobs;
  • completed variants and downstream children;
  • open Clock/Break intervals;
  • pending external effects;
  • route/menu compatibility;
  • affected Wiki/current-path guidance.

11. Caller-Zero

Before PHP retirement classify:

  • Inbound Planning page callers;
  • embedded/standalone Assignment Board;
  • Loader and Timeline pages;
  • API route strings;
  • legacy actions/helpers;
  • Telegram cron/webhook callbacks;
  • QuickBooks Time sync;
  • files/scripts/tests;
  • Wiki links/bookmarks;
  • Runtime traffic/log evidence where approved.

Statuses:

ACTIVE
COMPATIBILITY
TEST ONLY
HISTORICAL
UNKNOWN
REMOVED AND VERIFIED

Unknown callers block deletion, not bounded coexistence.

---

Source: docs/processes/INBOUND_PLANNING_PARITY_AND_CUTOVER_MATRIX.md — ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.