Phase 172FAEDA-ROLE-DEMO-CREDENTIAL-SHELL-001manual smoke test board

Role Route Smoke Test Board

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

Select a role to smoke test

Selected route smoke

Raw Material Supplier

All three routes open, show correct role context, and keep forbidden finance, inventory, settlement, privacy, or founder-only controls blocked.

ready for manual QA

Demo phone

+92 300 000 1601

Demo OTP

111111

Scope

supplier_demo_user

Selected route cards

What to open and what to verify

Blocked claims

This role must not create

1

PO commitment

2

GRN

3

Inventory movement

4

Supplier invoice

5

Payment settlement

All-role matrix

Every role, every route target

Manual runbook

How QA should check each role

01

Start from credential shell

Open the Phase 171 credential shell and select the role being tested.

Selected role, demo phone, OTP, tenant, and scope are visible.

02

Open all route targets

Open dashboard, workbench, and primary route for the selected role.

Each route returns a rendered page and matches its route purpose.

03

Check role truth

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.

04

Check blocked actions

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.

05

Check mobile usability

Use responsive/mobile width and confirm text, route buttons, cards, and role controls remain usable.

No horizontal breakage, overlapping content, or invisible primary action.

06

Record next correction

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

What makes a route pass

Auth boundary

Demo OTP and phone are fixtures only.

No page claims real login, real OTP service, JWT, session, cookie auth, or production account creation.

Role boundary

Each role sees its own chain context.

Supplier, manufacturer, wholesaler, retailer, customer, rider, and admin surfaces stay role-specific.

Customer privacy

Customer routes are customer-scoped.

No other-customer data, internal ledger, hidden cost, or organization-private pricing appears.

Finance boundary

Payment stays licensed-partner gated.

No fake wallet claim, direct payout, settlement execution, or unlicensed payment mutation appears.

Inventory boundary

Inventory truth starts only after approved gates.

No route silently posts GRN, stock movement, finished goods, or stock register truth.

Founder boundary

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

Responsive checks

1

Cards must not overflow at mobile width.

2

Route buttons must stay tappable with clear labels.

3

Role identity must appear before dense QA details.

4

Blocked actions must remain visible without needing desktop hover.

5

Long route URLs and JSON previews must scroll inside their containers.

6

The board must feel like an app QA cockpit, not a raw spreadsheet.

Smoke packet

JSON preview

{
  "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

No fake production pass

1

Phase 172 is a manual route smoke test board only.

2

Do not create automated test runners, browser bots, API writes, sessions, auth records, or database QA result tables here.

3

Do not mark routes production-ready just because they render.

4

A route passes only when role truth, blocked mutations, privacy, finance, and mobile usability are also clear.

5

Next gate can add role UX correction backlog and automated route probes after this board is accepted.

Next build gate

Phase 173 is role UX correction backlog

After smoke testing, the next safe move is a role-by-role correction board for weak UX, missing links, unclear copy, and unsafe claims.

Open UX backlog