# Verification — [ERP bug-fix] Bug from /purchase-orders

**Result:** ✅ PASS  `PASS — 34 screenshot(s), 0 smoke selector(s), 1 task browser check(s)`  
**When:** 20260616T175649Z  
**URL:** http://100.68.36.49:3080/  

## Screenshots
![01-landing.png](01-landing.png)
![02-post-login.png](02-post-login.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-00-journey-start.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-00-journey-start.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-01-navigate.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-01-navigate.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-02-a-href-purchase-orders.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-02-a-href-purchase-orders.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-02-a-href-purchase-orders-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-02-a-href-purchase-orders-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-03-a-href-purchase-orders.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-03-a-href-purchase-orders.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-03-a-href-purchase-orders-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-03-a-href-purchase-orders-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-04-input-placeholder-search-po-supplier-or-project.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-04-input-placeholder-search-po-supplier-or-project.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-04-input-placeholder-search-po-supplier-or-project-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-04-input-placeholder-search-po-supplier-or-project-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-05-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-05-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-05-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-05-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-06-data-testid-purchase-orders-send-purchase-orders-to-suppliers-button-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-06-data-testid-purchase-orders-send-purchase-orders-to-suppliers-button-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-06-data-testid-purchase-orders-send-purchase-orders-to-suppliers-button-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-06-data-testid-purchase-orders-send-purchase-orders-to-suppliers-button-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-07-data-testid-purchase-orders-new-purchase-order-button-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-07-data-testid-purchase-orders-new-purchase-order-button-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-07-data-testid-purchase-orders-new-purchase-order-button-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-07-data-testid-purchase-orders-new-purchase-order-button-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-08-data-testid-purchase-orders-status-filter-default-filter-select-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-08-data-testid-purchase-orders-status-filter-default-filter-select-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-08-data-testid-purchase-orders-status-filter-default-filter-select-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-08-data-testid-purchase-orders-status-filter-default-filter-select-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-09-data-testid-purchase-orders-assemblies-button.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-09-data-testid-purchase-orders-assemblies-button.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-09-data-testid-purchase-orders-assemblies-button-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-09-data-testid-purchase-orders-assemblies-button-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-10-input-placeholder-search-assemblies.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-10-input-placeholder-search-assemblies.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-10-input-placeholder-search-assemblies-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-10-input-placeholder-search-assemblies-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-11-data-testid-purchase-orders-new-assembly-button-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-11-data-testid-purchase-orders-new-assembly-button-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-11-data-testid-purchase-orders-new-assembly-button-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-11-data-testid-purchase-orders-new-assembly-button-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-12-data-testid-purchase-orders-orders-button.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-12-data-testid-purchase-orders-orders-button.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-12-data-testid-purchase-orders-orders-button-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-12-data-testid-purchase-orders-orders-button-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-13-input-placeholder-search-po-supplier-or-project.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-13-input-placeholder-search-po-supplier-or-project.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-13-input-placeholder-search-po-supplier-or-project-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-13-input-placeholder-search-po-supplier-or-project-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-14-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-14-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-14-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-14-data-testid-purchase-orders-view-cancelled-purchase-orders-button-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-15-data-testid-purchase-orders-status-filter-default-filter-select-visible.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-15-data-testid-purchase-orders-status-filter-default-filter-select-visible.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-15-data-testid-purchase-orders-status-filter-default-filter-select-visible-element.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-15-data-testid-purchase-orders-status-filter-default-filter-select-visible-element.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-16-purchase-orders.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16-16-purchase-orders.png)
![03-po-toolbar-no-overlap-and-consistent-height-2026-06-16.png](03-po-toolbar-no-overlap-and-consistent-height-2026-06-16.png)

## Proof plan
- **Level:** 2
- **Task browser checks:** 1
- **API checks:** 0
- **task_browser_checks_present:** PASS — Worker must declare task-specific browser_checks in .orch-done.json.
- **task_browser_checks_substantive:** PASS — Browser checks must target changed feature routes and specific selectors/text/actions.
- **browser_checks_grounded:** PASS — Browser checks must use concrete routes and stable user-facing selectors.
- **level2_scope_bounded:** PASS — Level 2 browser checks must stay focused (40 actions max per check). Split broad regression journeys into separate focused checks or Level 3 recipes.
- **level2_entry_to_target_flow:** PASS — Level 2 requires an entry-to-target browser-flow check that starts at entry/login and navigates by visible controls. (For pure render assertions, set kind: static_render on each check.)
- **level2_user_actions:** PASS — Level 2 requires safe user actions such as click, fill, upload, select, or press. (For pure render assertions, set kind: static_render on each check.)
- **level2_assertions:** PASS — Level 2 requires selector/text assertions proving the changed UI state.
- **level2_expected_result:** PASS — Level 2 requires expected_result/success_criteria explaining what success looks like.
- **level2_positive_assertion:** PASS — Level 2 requires at least one POSITIVE assertion — a concrete assert_text value (e.g. the corrected £ total) or that a specific element is present. Absence-only checks (assert_no_text) do not prove the fix; they pass on an empty or wrong page.

## Task-specific browser checks
- **po-toolbar-no-overlap-and-consistent-height-2026-06-16:** `/purchase-orders` — selectors: (none); text: Purchase Orders; actions: 16

## Notes
- Verification level 2
- ✓ task proof plan L2: 1 task browser check(s), 0 API check(s)
- Task-proof-only mode: Level 1 launch smoke already passed; skipping baseline browser checks.
- Playwright MCP required for level 2+ UI proof; validating worker-declared MCP-backed checks.
- ✓ readiness gate: app ready after 1 probe(s) (status 200)
- networkidle not reached after login (app polls continuously) — non-fatal; confirming login via login-form disappearance instead.
- Logged in as claude-dev@arcontrols.internal
- Browser flow 'po-toolbar-no-overlap-and-consistent-height-2026-06-16' started at /; target is /purchase-orders. Navigation must use visible UI actions from here.
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 1 navigate
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 2 a[href="/purchase-orders"]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 3 a[href="/purchase-orders"]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 4 input[placeholder="Search PO, supplier or project..."]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 5 [data-testid="purchase-orders-view-cancelled-purchase-orders-button"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 6 [data-testid="purchase-orders-send-purchase-orders-to-suppliers-button"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 7 [data-testid="purchase-orders-new-purchase-order-button"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 8 [data-testid="purchase-orders-status-filter-default-filter-select"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 9 [data-testid="purchase-orders-assemblies-button"]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 10 input[placeholder="Search assemblies..."]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 11 [data-testid="purchase-orders-new-assembly-button"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 12 [data-testid="purchase-orders-orders-button"]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 13 input[placeholder="Search PO, supplier or project..."]
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 14 [data-testid="purchase-orders-view-cancelled-purchase-orders-button"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 15 [data-testid="purchase-orders-status-filter-default-filter-select"]:visible
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: step 16 Purchase Orders
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: browser flow reached target path /purchase-orders
- ✓ po-toolbar-no-overlap-and-consistent-height-2026-06-16: text present: Purchase Orders
- Ignored 18 aborted background fetch console error(s); task browser checks, API checks, and runtime checks decide this proof.

## Console errors
- `[error] Failed to check timesheet compliance: TypeError: Failed to fetch
    at u (http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:14135)`
- `[error] Error fetching checklist settings: TypeError: Failed to fetch
    at h (http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:16839)`
- `[error] 🔔 NotificationsDropdown: Error fetching notification summary: TypeError: Failed to fetch
    at T (http://100.68.36.49:3080/static/js/505.03a7c875.chunk.js:1:76319)`
- `[error] Failed to fetch version info: TypeError: Failed to fetch
    at http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:1290
    at http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:1425
    at vs (http://100.68.36.49:3080/static/js/main.768f1b5f.js:2:177100)
    at tc (http://100.68.3`
- `[error] Failed to check projects due date: TypeError: Failed to fetch
    at http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:89576`
- `[error] Error fetching staff comms: TypeError: Failed to fetch
    at g (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:36764)`
- `[error] Error fetching PO requests: TypeError: Failed to fetch
    at d (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:45670)`
- `[error] Error fetching batch widget data: TypeError: Failed to fetch
    at P (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:67040)`
- `[error] Error fetching tasks: TypeError: Failed to fetch
    at o (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:20462)`
- `[error] Error fetching budget warnings: TypeError: Failed to fetch
    at x (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:23348)`
- `[error] Error fetching approval requests: TypeError: Failed to fetch
    at x (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:48850)`
- `[error] Failed to check weekend availability: TypeError: Failed to fetch
    at http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:88958`
- `[error] Error fetching POs: TypeError: Failed to fetch
    at d (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:18190)`
- `[error] Failed to check for nudges: TypeError: Failed to fetch
    at d (http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:20111)`
- `[error] Failed to fetch new task count: TypeError: Failed to fetch
    at e (http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:1521)`
- `[error] Error fetching projects: TypeError: Failed to fetch
    at x (http://100.68.36.49:3080/static/js/872.89f56c8c.chunk.js:1:15247)`
- `[error] 🔔 NotificationsDropdown: Error fetching notification summary: TypeError: Failed to fetch
    at T (http://100.68.36.49:3080/static/js/505.03a7c875.chunk.js:1:76319)`
- `[error] Failed to fetch HR settings: TypeError: Failed to fetch
    at http://100.68.36.49:3080/static/js/9627.6c769993.chunk.js:1:1868`

## Network issues
- `GET http://100.68.36.49:3080/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNGIt — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNGIt — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/resources/timesheets/compliance-check — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/system-settings/ — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/notifications/summary — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/version — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/projects/without-due-date — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/dashboard/widgets/staff-comms — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNGIt — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/dashboard/widgets/po-requests — net::ERR_ABORTED`
- `POST http://100.68.36.49:3080/api/dashboard/widgets/batch — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNGIt — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/email-inbox/stats — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/dashboard/widgets/task-allocations — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/dashboard/widgets/budget-warnings — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/dashboard/widgets/approval-requests — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/employees/my-file — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/resources/check-weekend-availability — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/dashboard/widgets/purchase-orders — net::ERR_ABORTED`
- `GET http://100.68.36.49:3080/api/resources/nudge/active — net::ERR_ABORTED`
