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.