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

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

## Screenshots
![01-landing.png](01-landing.png)
![02-post-login.png](02-post-login.png)
![03-projects-list-column-order-and-financials-00-journey-start.png](03-projects-list-column-order-and-financials-00-journey-start.png)
![03-projects-list-column-order-and-financials-01-navigate.png](03-projects-list-column-order-and-financials-01-navigate.png)
![03-projects-list-column-order-and-financials-02-a-href-projects.png](03-projects-list-column-order-and-financials-02-a-href-projects.png)
![03-projects-list-column-order-and-financials-02-a-href-projects-element.png](03-projects-list-column-order-and-financials-02-a-href-projects-element.png)
![03-projects-list-column-order-and-financials-03-a-href-projects.png](03-projects-list-column-order-and-financials-03-a-href-projects.png)
![03-projects-list-column-order-and-financials-03-a-href-projects-element.png](03-projects-list-column-order-and-financials-03-a-href-projects-element.png)
![03-projects-list-column-order-and-financials-04-data-testid-projects-search-projects-input.png](03-projects-list-column-order-and-financials-04-data-testid-projects-search-projects-input.png)
![03-projects-list-column-order-and-financials-04-data-testid-projects-search-projects-input-element.png](03-projects-list-column-order-and-financials-04-data-testid-projects-search-projects-input-element.png)
![03-projects-list-column-order-and-financials-05-table-thead-th-has-text-customer.png](03-projects-list-column-order-and-financials-05-table-thead-th-has-text-customer.png)
![03-projects-list-column-order-and-financials-05-table-thead-th-has-text-customer-element.png](03-projects-list-column-order-and-financials-05-table-thead-th-has-text-customer-element.png)
![03-projects-list-column-order-and-financials-06-table-thead-th-has-text-description.png](03-projects-list-column-order-and-financials-06-table-thead-th-has-text-description.png)
![03-projects-list-column-order-and-financials-06-table-thead-th-has-text-description-element.png](03-projects-list-column-order-and-financials-06-table-thead-th-has-text-description-element.png)
![03-projects-list-column-order-and-financials-07-table-thead-th-has-text-customer-button.png](03-projects-list-column-order-and-financials-07-table-thead-th-has-text-customer-button.png)
![03-projects-list-column-order-and-financials-07-table-thead-th-has-text-customer-button-element.png](03-projects-list-column-order-and-financials-07-table-thead-th-has-text-customer-button-element.png)
![03-projects-list-column-order-and-financials-08-text-sorted-by-customer-name.png](03-projects-list-column-order-and-financials-08-text-sorted-by-customer-name.png)
![03-projects-list-column-order-and-financials-08-text-sorted-by-customer-name-element.png](03-projects-list-column-order-and-financials-08-text-sorted-by-customer-name-element.png)
![03-projects-list-column-order-and-financials-09-data-testid-projects-search-projects-input.png](03-projects-list-column-order-and-financials-09-data-testid-projects-search-projects-input.png)
![03-projects-list-column-order-and-financials-09-data-testid-projects-search-projects-input-element.png](03-projects-list-column-order-and-financials-09-data-testid-projects-search-projects-input-element.png)
![03-projects-list-column-order-and-financials-10-table-tbody-tr.png](03-projects-list-column-order-and-financials-10-table-tbody-tr.png)
![03-projects-list-column-order-and-financials-10-table-tbody-tr-element.png](03-projects-list-column-order-and-financials-10-table-tbody-tr-element.png)
![03-projects-list-column-order-and-financials-11-projects.png](03-projects-list-column-order-and-financials-11-projects.png)
![03-projects-list-column-order-and-financials-12-manage-your-project-portfolio.png](03-projects-list-column-order-and-financials-12-manage-your-project-portfolio.png)
![03-projects-list-column-order-and-financials-13-customer.png](03-projects-list-column-order-and-financials-13-customer.png)
![03-projects-list-column-order-and-financials-14-description.png](03-projects-list-column-order-and-financials-14-description.png)
![03-projects-list-column-order-and-financials.png](03-projects-list-column-order-and-financials.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
- **projects-list-column-order-and-financials:** `/projects` — selectors: (none); text: Projects; actions: 14

## 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 'projects-list-column-order-and-financials' started at /; target is /projects. Navigation must use visible UI actions from here.
- ✓ projects-list-column-order-and-financials: step 1 navigate
- ✓ projects-list-column-order-and-financials: step 2 a[href="/projects"]
- ✓ projects-list-column-order-and-financials: step 3 a[href="/projects"]
- ✓ projects-list-column-order-and-financials: step 4 [data-testid="projects-search-projects-input"]
- ✓ projects-list-column-order-and-financials: step 5 table thead th:has-text("Customer")
- ✓ projects-list-column-order-and-financials: step 6 table thead th:has-text("Description")
- ✓ projects-list-column-order-and-financials: step 7 table thead th:has-text("Customer") button
- ✓ projects-list-column-order-and-financials: step 8 text=Sorted by: customer_name
- ✓ projects-list-column-order-and-financials: step 9 [data-testid="projects-search-projects-input"]
- ✓ projects-list-column-order-and-financials: step 10 table tbody tr
- ✓ projects-list-column-order-and-financials: step 11 Projects
- ✓ projects-list-column-order-and-financials: step 12 Manage your project portfolio
- ✓ projects-list-column-order-and-financials: step 13 Customer
- ✓ projects-list-column-order-and-financials: step 14 Description
- ✓ projects-list-column-order-and-financials: browser flow reached target path /projects
- ✓ projects-list-column-order-and-financials: text present: Projects

## 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/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`
