Evidence - [ERP bug-fix] Bug from /purchase-orders — proof-only

Central proof packs from orchestrator verification runs

← Evidence Library

FAIL

[ERP bug-fix] Bug from /purchase-orders — proof-only

FAIL — wall-clock timeout after 180s · 2 console error(s) · 2 server-5xx response(s)
Projectops-ar-erp
Task16ca1960-8b3f-44d5-a14d-744f76df7321
Updated2026-06-18T23:59:24.178350+00:00
PRhttps://github.com/ar-controls/OPS_AR_ERP/pull/1206

Screenshots

01-landing.png
01-landing.png
02-post-login.png
02-post-login.png
03-l2-menu-smoke-01-root-element.png
03-l2-menu-smoke-01-root-element.png
03-l2-menu-smoke-01-root.png
03-l2-menu-smoke-01-root.png
03-l2-menu-smoke-02-menu-sweep-opportunities-dashboard-projects-cost-analysis-purchase-orders.png
03-l2-menu-smoke-02-menu-sweep-opportunities-dashboard-projects-cost-analysis-purchase-orders.png
03-l2-menu-smoke.png
03-l2-menu-smoke.png
04-erp-proof-only-navigation-smoke-l2-00-journey-start.png
04-erp-proof-only-navigation-smoke-l2-00-journey-start.png
04-erp-proof-only-navigation-smoke-l2-01-dashboard-loaded.png
04-erp-proof-only-navigation-smoke-l2-01-dashboard-loaded.png
04-erp-proof-only-navigation-smoke-l2-02-dismiss-welcome-modal.png
04-erp-proof-only-navigation-smoke-l2-02-dismiss-welcome-modal.png
04-erp-proof-only-navigation-smoke-l2-03-open-opportunities-element.png
04-erp-proof-only-navigation-smoke-l2-03-open-opportunities-element.png
04-erp-proof-only-navigation-smoke-l2-03-open-opportunities.png
04-erp-proof-only-navigation-smoke-l2-03-open-opportunities.png
04-erp-proof-only-navigation-smoke-l2-04-opportunities-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-04-opportunities-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-05-open-projects-element.png
04-erp-proof-only-navigation-smoke-l2-05-open-projects-element.png
04-erp-proof-only-navigation-smoke-l2-05-open-projects.png
04-erp-proof-only-navigation-smoke-l2-05-open-projects.png
04-erp-proof-only-navigation-smoke-l2-06-projects-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-06-projects-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-07-open-resource-manager.png
04-erp-proof-only-navigation-smoke-l2-07-open-resource-manager.png
04-erp-proof-only-navigation-smoke-l2-08-resource-manager-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-08-resource-manager-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis-element.png
04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis-element.png
04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis.png
04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis.png
04-erp-proof-only-navigation-smoke-l2-10-cost-analysis-screen-visible.png
04-erp-proof-only-navigation-smoke-l2-10-cost-analysis-screen-visible.png

Verification Notes

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

**Result:** ❌ FAIL  `FAIL — wall-clock timeout after 180s · 2 console error(s) · 2 server-5xx response(s)`  
**When:** 20260618T235602Z  
**URL:** http://100.121.252.85:3180/  

## Screenshots
![01-landing.png](01-landing.png)
![02-post-login.png](02-post-login.png)
![03-l2-menu-smoke-01-root.png](03-l2-menu-smoke-01-root.png)
![03-l2-menu-smoke-01-root-element.png](03-l2-menu-smoke-01-root-element.png)
![03-l2-menu-smoke-02-menu-sweep-opportunities-dashboard-projects-cost-analysis-purchase-orders.png](03-l2-menu-smoke-02-menu-sweep-opportunities-dashboard-projects-cost-analysis-purchase-orders.png)
![03-l2-menu-smoke.png](03-l2-menu-smoke.png)
![04-erp-proof-only-navigation-smoke-l2-00-journey-start.png](04-erp-proof-only-navigation-smoke-l2-00-journey-start.png)
![04-erp-proof-only-navigation-smoke-l2-01-dashboard-loaded.png](04-erp-proof-only-navigation-smoke-l2-01-dashboard-loaded.png)
![04-erp-proof-only-navigation-smoke-l2-02-dismiss-welcome-modal.png](04-erp-proof-only-navigation-smoke-l2-02-dismiss-welcome-modal.png)
![04-erp-proof-only-navigation-smoke-l2-03-open-opportunities.png](04-erp-proof-only-navigation-smoke-l2-03-open-opportunities.png)
![04-erp-proof-only-navigation-smoke-l2-03-open-opportunities-element.png](04-erp-proof-only-navigation-smoke-l2-03-open-opportunities-element.png)
![04-erp-proof-only-navigation-smoke-l2-04-opportunities-screen-visible.png](04-erp-proof-only-navigation-smoke-l2-04-opportunities-screen-visible.png)
![04-erp-proof-only-navigation-smoke-l2-05-open-projects.png](04-erp-proof-only-navigation-smoke-l2-05-open-projects.png)
![04-erp-proof-only-navigation-smoke-l2-05-open-projects-element.png](04-erp-proof-only-navigation-smoke-l2-05-open-projects-element.png)
![04-erp-proof-only-navigation-smoke-l2-06-projects-screen-visible.png](04-erp-proof-only-navigation-smoke-l2-06-projects-screen-visible.png)
![04-erp-proof-only-navigation-smoke-l2-07-open-resource-manager.png](04-erp-proof-only-navigation-smoke-l2-07-open-resource-manager.png)
![04-erp-proof-only-navigation-smoke-l2-08-resource-manager-screen-visible.png](04-erp-proof-only-navigation-smoke-l2-08-resource-manager-screen-visible.png)
![04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis.png](04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis.png)
![04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis-element.png](04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis-element.png)
![04-erp-proof-only-navigation-smoke-l2-10-cost-analysis-screen-visible.png](04-erp-proof-only-navigation-smoke-l2-10-cost-analysis-screen-visible.png)

## Proof plan
- **Level:** 2
- **Task browser checks:** 7
- **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
- **l2-menu-smoke:** `/` — selectors: (none); text: (none); actions: 2
- **ERP proof-only navigation smoke L2:** `/employees/my-file` — selectors: #root > *, a[href="/opportunities"]:visible, a[href="/projects"]:visible, a[href="/resource-manager"]:visible, a[href="/project-cost-analysis"]:visible, a[href="/purchase-orders"]:visible, a[href="/task-monitor"]:visible; text: My File; actions: 32
- **purchase-order-first-approval:** `/purchase-orders` — selectors: (none); text: (none); actions: 13
- **purchase-order-over-limit-auto-submits-for-approval:** `/purchase-orders` — selectors: (none); text: (none); actions: 5
- **po-telegram-digest-excludes-requested-2026-06-16:** `/purchase-orders` — selectors: (none); text: (none); actions: 7
- **po-toolbar-no-overlap-and-consistent-height-2026-06-16:** `/purchase-orders` — selectors: (none); text: (none); actions: 14
- **suppliers-list-renders:** `/suppliers` — selectors: (none); text: (none); actions: 4
- **inventory-list-renders:** `/inventory` — selectors: (none); text: (none); actions: 4

## Runtime start checks
- **frontend_http:** PASS — http://100.121.252.85:3180/ returned HTTP 200 (text/html; charset=utf-8); body starts '<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><link rel="icon" type='
- **backend_health:** PASS — 100.121.252.85 http://127.0.0.1:8002/health returned HTTP 200 (application/json); body starts '{"status":"healthy","service":"backend"}'
- **pm2_backend-dev:** PASS — backend-dev status=online
- **pm2_frontend-dev:** PASS — frontend-dev status=online

## Notes
- Verification level 2
- ✓ task proof plan L2: 7 task browser check(s), 0 API check(s)
- 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
- ✓ selector present: #root > *
- ✓ smoke_text present: Dashboard
- ✓ l2-menu-smoke: step 1 #root *
- ✓ l2-menu-smoke: step 2 menu_sweep: Opportunities, Dashboard, Projects, Cost Analysis, Purchase Orders
- ✗ l2-menu-smoke: no positive assertion — only trivial/generic anchors or absence checks; this proves nothing
- Browser flow 'ERP proof-only navigation smoke L2' started at /; target is /employees/my-file. Navigation must use visible UI actions from here.
- ✓ ERP proof-only navigation smoke L2: step 1 dashboard loaded
- ✓ ERP proof-only navigation smoke L2: step 2 dismiss welcome modal
- ✓ ERP proof-only navigation smoke L2: step 3 open Opportunities
- ✓ ERP proof-only navigation smoke L2: step 4 Opportunities screen visible
- ✓ ERP proof-only navigation smoke L2: step 5 open Projects
- ✓ ERP proof-only navigation smoke L2: step 6 Projects screen visible
- ✗ ERP proof-only navigation smoke L2: step 7 open Resource Manager: Locator.click: Timeout 30000ms exceeded.
Call log:
  - waiting for locator("a[href=\"/resource-manager\"]:visible")
 | DIAGNOSIS: selector 'a[href="/resource-manager"]:visible' matched 0 elements; the row/control may not exist in dev. Seed a fixture id and target it, or verify the selector against the rendered page.
- ✗ ERP proof-only navigation smoke L2: step 8 Resource Manager screen visible: text missing: Resource Manager
- ✓ ERP proof-only navigation smoke L2: step 9 open Cost Analysis
- ✓ ERP proof-only navigation smoke L2: step 10 Cost Analysis screen visible
- ✗ ERP proof-only navigation smoke L2: step 11 open Email Inbox: Locator.click: Timeout 30000ms exceeded.
Call log:
  - waiting for locator("a[href=\"/email-inbox\"]:visible")
 | DIAGNOSIS: selector 'a[href="/email-inbox"]:visible' matched 0 elements; the row/control may not exist in dev. Seed a fixture id and target it, or verify the selector against the rendered page.
- ✗ Playwright verification exceeded wall-clock timeout
- Runtime start checks passed: 4

## Console errors
- `[error] Failed to load resource: the server responded with a status of 502 (Bad Gateway)`
- `[error] Failed to load resource: the server responded with a status of 502 (Bad Gateway)`

## Network issues
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`
- `GET http://100.121.252.85:3180/api/notifications/stream?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGF1ZGUtZGV2QGFyY29udHJvbHMuaW50ZXJuYWwiLCJ1c2VyX2lkIjoiN2NlNDFmZjAtZDBmNy00NzMxLTkzNG — net::ERR_ABORTED`

Run Metadata

{
  "created_at": "2026-06-18T23:59:24.181290+00:00",
  "github_storage": false,
  "passed": false,
  "pr_url": "https://github.com/ar-controls/OPS_AR_ERP/pull/1206",
  "project": "ops-ar-erp",
  "run_id": "ops-ar-erp-16ca1960-20260618-235924-erp-bug-fix-bug-from-purchase-orders-pro",
  "source_path": "/root/orchestrator/workspace/ops-ar-erp-orch-16ca19608b3f/evidence/20260618T235602Z-16ca1960-l2",
  "storage": "orchestrator-vps",
  "summary": "FAIL \u2014 wall-clock timeout after 180s \u00b7 2 console error(s) \u00b7 2 server-5xx response(s)",
  "task_id": "16ca1960-8b3f-44d5-a14d-744f76df7321",
  "task_short": "16ca1960",
  "title": "[ERP bug-fix] Bug from /purchase-orders \u2014 proof-only"
}

Artifacts