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
Platform Access Diagnostics — Current Operational Surface Addendum¶
- Status:
CURRENT SOURCE-RECONCILED SUPPORT DRAFT / NOT FIELD ACCEPTED - Review ref:
qa/master@2c0dd0bfadde7633337ec4357be1cbf9835c5c8b - Parent Runbook:
PLATFORM_ACCESS_DIAGNOSTICS_ADMIN_SUPPORT_RUNBOOK.md - Source refresh:
PLATFORM_AUTHORIZATION_CURRENT_SURFACE_REFRESH_2026-08-08.md - Action matrix:
PLATFORM_AUTHORIZATION_CURRENT_ACTION_MATRIX_2026-08-08.md - Evidence package:
RBR-ACCESS-001-READONLY-CURRENT-SURFACE-PREFLIGHT.md - Phase implementation:
USER HOLD
1. Purpose¶
Use this addendum when a user reports:
The page is missing.
The page opens but data does not load.
The action button is missing.
The action button appears but the API denies it.
A direct API request succeeds while the UI hides the action.
Client 1 and Client 2 behave differently.
An Administrator works but the operational role does not.
This is a diagnostic procedure. It does not authorize broad role changes or action retries.
2. Required Diagnostic Order¶
Always investigate in this order:
1. Environment and source SHA
2. Physical actor / effective subject / tenant
3. Role IDs and role names
4. Module resolution
5. Menu findability
6. Direct page access
7. Initial GET API
8. Action-control visibility
9. Route metadata
10. Handler actor predicate
11. Record tenant/relation
12. Record state
13. Config/credential/provider requirement
14. Expected versus actual decision
Do not skip directly to a role grant.
3. Evidence To Capture¶
Environment:
Source SHA:
Config reference:
Tenant/profile:
Actor user ID:
Effective subject user ID:
Impersonation mode:
Role IDs:
Role names:
Page route:
Normal menu path:
Initial GET API:
Action label:
Action route/method:
Approved record ID:
Record tenant/state:
Expected result:
Actual result:
Mutation observed: YES/NO
Provider effect observed: YES/NO
Do not include passwords, cookies, tokens or broad customer data.
4. Loader Work Assignment¶
4.1 Manager cannot see or manage assignments¶
Check separately:
Page UI compatibility:
CLIENT_ID 1 and numeric role 1/2/3 on Inbound Planning
API manager compatibility:
role name contains Administrator, Office Manager or Manager
Possible mismatch:
numeric page allow + role-name API deny
numeric page hide + role-name API allow
Do not fix this by assigning Administrator. Record both decisions and escalate the exact mismatch.
4.2 Loader cannot see or act on own assignment¶
Verify:
- effective staff user ID;
- planner
LOADER_NAMErelation; - tenant;
SPECIAL_INSTRUCTION='QUEUE_WORK_ASSIGNMENT';- current/next queue position;
SCHEDULEDorSTARTEDstate;- clock/break state;
- competing current work.
A manager's ability to act does not prove the Loader self path is correct.
4.3 Hidden general Clock Out versus workflow Clock Out¶
The Work Assignment route and the general Staff Time route use different guards. Diagnose the exact row representation and current state before concluding the action is denied or available correctly.
Do not advise the Loader to bypass the workflow with the general Clock Out action.
5. Street Turn¶
5.1 Create unavailable¶
Check:
Import Dispatch page access
YMS Container Tracking module
Street Turn control visibility
Booking search access through TMS Booking
source equipment load is EMPTY
matching equipment relation
supported size
matching active EXPORT booking
shipping line
cutoff
The create route has strong record/state checks but no dedicated action-role declaration in the reviewed source.
5.2 Revert unavailable¶
Check:
Export page access
TMS Booking module
Revert control state
exact generated export equipment-load ID
container Street Turn status AVAILABLE
no Delivery history
no Transload history
matching prior RETURNED import load
Create access does not prove Revert access because the routes use different module keys.
5.3 Do not bypass blockers¶
Do not remove Delivery/Transload history, change state manually or call a generic mutation to force Revert.
6. Final Loading Review¶
6.1 Page opens but write action denied¶
For Client 1, current write helper expects numeric role 1, 2 or 3.
For other tenants, the same helper does not apply an equivalent explicit role restriction. Record the tenant-specific result; do not copy the Client 1 numeric rule into another tenant as an emergency fix.
6.2 Control visible to a denied user¶
The current page renders operational controls and relies on the API for final enforcement. Record:
control visible
API result
record state
no-mutation proof
Hide/show mismatch is a UI/API parity issue, not proof that the API must be opened.
6.3 Record-state denial¶
Confirm whether the denial is caused by:
- role/tenant policy;
- stale expected values;
- Pending/Confirmed state;
- missing source/weight/leftover data;
- domain mutation guard.
Do not solve a state denial by changing a role.
7. AR Billing And QBO¶
7.1 Read page unavailable¶
Check:
bms.transaction module
current menu row
current role list
normal page entry
AR Billing GET APIs
schema readiness
7.2 Confirm or QBO action unexpectedly available¶
The reviewed routes do not declare a dedicated action role. Before changing anything, record:
- current role/account;
- menu/page source;
- control visibility;
- direct API result only if a disposable authorized fixture exists;
- current local QBO state;
- whether a provider effect occurred.
Do not test QBO delivery merely to determine access.
7.3 Unexpected denial¶
Separate:
access denial
business validation
QBO state conflict
credential/config unavailable
provider failure
Giving a broader role cannot resolve missing source mapping, stale QBO state or provider configuration.
8. BOL And Packing List Email¶
8.1 Send control missing¶
Check page/menu/module and current UI conditions. The send routes do not contain a dedicated action-role declaration in the reviewed source.
8.2 Send API denies or fails¶
Separate:
access
record not found/foreign tenant
recipient missing/invalid
attachment generation/readability
report-mode prerequisite
provider initialization
provider rejection/unknown result
Do not resend after a missing response until provider evidence is reconciled.
9. Safe Temporary Disposition¶
While policy remains unknown:
Unexpected allow
-> stop the consequential action
-> preserve evidence
-> do not broaden use
Unexpected deny
-> preserve current operational fallback if one is already accepted
-> do not assign Administrator
-> escalate exact matrix row
UI/API mismatch
-> treat API as the enforcement result
-> preserve no-mutation evidence
-> correct only through a bounded approved change
Tenant asymmetry
-> document profile/role expectation
-> do not add another numeric tenant branch
10. Escalation Packet¶
Incident/request title:
Environment/source/config:
Tenant/profile:
Actor/subject/roles:
Page/menu result:
API route/method:
Route module/role metadata:
Handler actor predicate:
Record ID/tenant/state:
Expected decision:
Actual decision:
UI/API mismatch:
Mutation/provider effect:
Current workaround:
Proposed bounded correction:
Rollback:
Evidence links:
11. Completion Criteria¶
A diagnostic is complete only when:
the exact failing access layer is identified
+ business-state errors are separated from access errors
+ no unintended mutation occurred
+ no broad role grant was used
+ expected/actual matrix row is recorded
+ the next owner is named
This Runbook does not establish M3 or authorize a policy rollout.
---¶
Source:
docs/runbooks/PLATFORM_ACCESS_DIAGNOSTICS_CURRENT_SURFACE_ADDENDUM.md— ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.