Raw Material Supplier
controlled / 3 route targets
A founder and QA board for checking every demo role dashboard, workbench, primary route, expected role truth, and blocked mutation before real authentication work starts.
Roles covered
7
supplier to founder/admin
Route targets
21
dashboard, workbench, primary
Boundary checks
8
auth, role, data, finance, inventory
Runtime writes
0
manual QA board only
Role queue
Selected route smoke
All three routes open, show correct role context, and keep forbidden finance, inventory, settlement, privacy, or founder-only controls blocked.
Demo phone
+92 300 000 1601
Demo OTP
111111
Scope
supplier_demo_user
Selected route cards
First screen after role selection.
The first role home must show identity, chain position, KPIs, next safe action, and blocked claims.
Role action surface.
The action surface must show role-specific payloads, backend/preview status, and mutation locks.
Role's main chain context.
The primary route must explain the role's real place in source, production, trade, demand, movement, or governance.
Blocked claims
PO commitment
GRN
Inventory movement
Supplier invoice
Payment settlement
All-role matrix
controlled / 3 route targets
controlled / 3 route targets
medium / 3 route targets
medium / 3 route targets
privacy-critical / 3 route targets
medium / 3 route targets
high-governance / 3 route targets
Manual runbook
Open the Phase 171 credential shell and select the role being tested.
Selected role, demo phone, OTP, tenant, and scope are visible.
Open dashboard, workbench, and primary route for the selected role.
Each route returns a rendered page and matches its route purpose.
Confirm the page describes the role's source-to-sale responsibility correctly.
Supplier is source truth, manufacturer is production source, customer is demand endpoint, and so on.
Confirm forbidden actions are not presented as live authority.
No fake wallet, final payout, settlement, GRN, stock posting, hidden cost, or other-customer data claim.
Use responsive/mobile width and confirm text, route buttons, cards, and role controls remain usable.
No horizontal breakage, overlapping content, or invisible primary action.
If a route is weak, mark the role and page for the next implementation phase.
The problem is linked to a route, role, and blocked claim.
Boundary checks
Demo OTP and phone are fixtures only.
No page claims real login, real OTP service, JWT, session, cookie auth, or production account creation.
Each role sees its own chain context.
Supplier, manufacturer, wholesaler, retailer, customer, rider, and admin surfaces stay role-specific.
Customer routes are customer-scoped.
No other-customer data, internal ledger, hidden cost, or organization-private pricing appears.
Payment stays licensed-partner gated.
No fake wallet claim, direct payout, settlement execution, or unlicensed payment mutation appears.
Inventory truth starts only after approved gates.
No route silently posts GRN, stock movement, finished goods, or stock register truth.
Founder sees more, but still with maker-checker controls.
Founder/Admin does not get silent approval, fake ledger, or unreviewed partner payment authority.
Mobile QA
Cards must not overflow at mobile width.
Route buttons must stay tappable with clear labels.
Role identity must appear before dense QA details.
Blocked actions must remain visible without needing desktop hover.
Long route URLs and JSON previews must scroll inside their containers.
The board must feel like an app QA cockpit, not a raw spreadsheet.
Smoke packet
{
"smokeBoardId": "role_route_smoke_test_board_172",
"phase": "Phase 172",
"sourceGate": "FAEDA-ROLE-DEMO-CREDENTIAL-SHELL-001",
"route": "/business-pro/role-route-smoke-test-board",
"credentialShell": "role_demo_credential_shell_171",
"manualOnly": true,
"createsSessions": false,
"createsRecords": false,
"routeTargets": [
{
"roleId": "supplier",
"label": "Dashboard",
"href": "/business-pro/supplier-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "supplier",
"label": "Workbench",
"href": "/business-pro/supplier-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "supplier",
"label": "Primary route",
"href": "/business-pro/supplier-manufacturer",
"expectedStatus": "chain-context"
},
{
"roleId": "manufacturer",
"label": "Dashboard",
"href": "/business-pro/manufacturer-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "manufacturer",
"label": "Workbench",
"href": "/business-pro/manufacturer-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "manufacturer",
"label": "Primary route",
"href": "/business-pro/manufacturer-source-map",
"expectedStatus": "chain-context"
},
{
"roleId": "wholesaler",
"label": "Dashboard",
"href": "/business-pro/wholesaler-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "wholesaler",
"label": "Workbench",
"href": "/business-pro/wholesaler-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "wholesaler",
"label": "Primary route",
"href": "/business-pro/wholesaler-stock-intake-gate",
"expectedStatus": "chain-context"
},
{
"roleId": "retailer",
"label": "Dashboard",
"href": "/business-pro/retailer-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "retailer",
"label": "Workbench",
"href": "/business-pro/retailer-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "retailer",
"label": "Primary route",
"href": "/business-pro/retail-listing-publication-gate",
"expectedStatus": "chain-context"
},
{
"roleId": "customer",
"label": "Dashboard",
"href": "/business-pro/customer-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "customer",
"label": "Workbench",
"href": "/business-pro/customer-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "customer",
"label": "Primary route",
"href": "/business-pro/customer-demand-signal-gate",
"expectedStatus": "chain-context"
},
{
"roleId": "rider",
"label": "Dashboard",
"href": "/business-pro/rider-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "rider",
"label": "Workbench",
"href": "/business-pro/rider-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "rider",
"label": "Primary route",
"href": "/business-pro/logistics-booking-gate",
"expectedStatus": "chain-context"
},
{
"roleId": "admin",
"label": "Dashboard",
"href": "/business-pro/admin-dashboard",
"expectedStatus": "demo-ready"
},
{
"roleId": "admin",
"label": "Workbench",
"href": "/business-pro/admin-action-workbench",
"expectedStatus": "guarded-action"
},
{
"roleId": "admin",
"label": "Primary route",
"href": "/business-pro/source-to-sale-control-room",
"expectedStatus": "chain-context"
}
],
"baselineChecklist": [
"Open each demo persona and confirm phone, OTP, scope, tenant, and role match.",
"Open each dashboard and confirm the route returns 200.",
"Open each workbench and confirm allowed actions are role-specific.",
"Open each primary route and confirm it matches the role's chain position.",
"Confirm non-admin roles do not see founder-only finance or cost controls.",
"Confirm customer persona does not see other-customer data or internal ledger details.",
"Confirm payment ops remains licensed-partner evidence only.",
"Confirm no page claims production authentication, real wallet, final payout, or live settlement."
],
"boundaryChecks": [
"Auth boundary",
"Role boundary",
"Customer privacy",
"Finance boundary",
"Inventory boundary",
"Founder boundary"
],
"nextAllowedGate": "phase_173_role_ux_correction_backlog"
}Hard rules
Phase 172 is a manual route smoke test board only.
Do not create automated test runners, browser bots, API writes, sessions, auth records, or database QA result tables here.
Do not mark routes production-ready just because they render.
A route passes only when role truth, blocked mutations, privacy, finance, and mobile usability are also clear.
Next gate can add role UX correction backlog and automated route probes after this board is accepted.
Next build gate
After smoke testing, the next safe move is a role-by-role correction board for weak UX, missing links, unclear copy, and unsafe claims.