{
  "api_checks_count": 0,
  "browser_checks_count": 8,
  "checks": [
    {
      "name": "task proof plan L2: 7 task browser check(s), 0 API check(s)",
      "passed": true
    },
    {
      "name": "readiness gate: app ready after 1 probe(s) (status 200)",
      "passed": true
    },
    {
      "name": "selector present: #root > *",
      "passed": true
    },
    {
      "name": "smoke_text present: Dashboard",
      "passed": true
    },
    {
      "name": "l2-menu-smoke: step 1 #root *",
      "passed": true
    },
    {
      "name": "l2-menu-smoke: step 2 menu_sweep: Opportunities, Dashboard, Projects, Cost Analysis, Purchase Orders",
      "passed": true
    },
    {
      "name": "l2-menu-smoke: no positive assertion \u2014 only trivial/generic anchors or absence checks; this proves nothing",
      "passed": false
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 1 dashboard loaded",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 2 dismiss welcome modal",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 3 open Opportunities",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 4 Opportunities screen visible",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 5 open Projects",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 6 Projects screen visible",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 7 open Resource Manager: Locator.click: Timeout 30000ms exceeded.\nCall log:\n  - waiting for locator(\"a[href=\\\"/resource-manager\\\"]:visible\")\n | 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.",
      "passed": false
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 8 Resource Manager screen visible: text missing: Resource Manager",
      "passed": false
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 9 open Cost Analysis",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 10 Cost Analysis screen visible",
      "passed": true
    },
    {
      "name": "ERP proof-only navigation smoke L2: step 11 open Email Inbox: Locator.click: Timeout 30000ms exceeded.\nCall log:\n  - waiting for locator(\"a[href=\\\"/email-inbox\\\"]:visible\")\n | 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.",
      "passed": false
    },
    {
      "name": "Playwright verification exceeded wall-clock timeout",
      "passed": false
    }
  ],
  "console_errors_count": 2,
  "elapsed_ms": 201586,
  "failure": {
    "failure_type": "network_or_auth_failure",
    "next_action": "inspect auth/session/proxy and failed request status before changing UI",
    "schema_version": 1,
    "signals": {
      "console_errors": 2,
      "network_errors": 22,
      "notes_checked": 25
    },
    "summary": "FAIL \u2014 wall-clock timeout after 180s \u00b7 2 console error(s) \u00b7 2 server-5xx response(s)"
  },
  "level": 1,
  "network_errors_count": 22,
  "passed": false,
  "proof_plan": {
    "api_checks_count": 0,
    "assertion_checks_count": 7,
    "checks_count": 7,
    "expected_result_count": 7,
    "issues": [],
    "level": 2,
    "ok": true,
    "requirements": [
      {
        "detail": "Worker must declare task-specific browser_checks in .orch-done.json.",
        "key": "task_browser_checks_present",
        "passed": true
      },
      {
        "detail": "Browser checks must target changed feature routes and specific selectors/text/actions.",
        "key": "task_browser_checks_substantive",
        "passed": true
      },
      {
        "detail": "Browser checks must use concrete routes and stable user-facing selectors.",
        "key": "browser_checks_grounded",
        "passed": true
      },
      {
        "detail": "Level 2 browser checks must stay focused (40 actions max per check). Split broad regression journeys into separate focused checks or Level 3 recipes.",
        "key": "level2_scope_bounded",
        "passed": true
      },
      {
        "detail": "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.)",
        "key": "level2_entry_to_target_flow",
        "passed": true
      },
      {
        "detail": "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.)",
        "key": "level2_user_actions",
        "passed": true
      },
      {
        "detail": "Level 2 requires selector/text assertions proving the changed UI state.",
        "key": "level2_assertions",
        "passed": true
      },
      {
        "detail": "Level 2 requires expected_result/success_criteria explaining what success looks like.",
        "key": "level2_expected_result",
        "passed": true
      },
      {
        "detail": "Level 2 requires at least one POSITIVE assertion \u2014 a concrete assert_text value (e.g. the corrected \u00a3 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.",
        "key": "level2_positive_assertion",
        "passed": true
      }
    ]
  },
  "runtime_checks_count": 4,
  "schema_version": 1,
  "screenshots": [
    "evidence/20260618T235602Z-16ca1960-l2/01-landing.png",
    "evidence/20260618T235602Z-16ca1960-l2/02-post-login.png",
    "evidence/20260618T235602Z-16ca1960-l2/03-l2-menu-smoke-01-root.png",
    "evidence/20260618T235602Z-16ca1960-l2/03-l2-menu-smoke-01-root-element.png",
    "evidence/20260618T235602Z-16ca1960-l2/03-l2-menu-smoke-02-menu-sweep-opportunities-dashboard-projects-cost-analysis-purchase-orders.png",
    "evidence/20260618T235602Z-16ca1960-l2/03-l2-menu-smoke.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-00-journey-start.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-01-dashboard-loaded.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-02-dismiss-welcome-modal.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-03-open-opportunities.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-03-open-opportunities-element.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-04-opportunities-screen-visible.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-05-open-projects.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-05-open-projects-element.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-06-projects-screen-visible.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-07-open-resource-manager.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-08-resource-manager-screen-visible.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-09-open-cost-analysis-element.png",
    "evidence/20260618T235602Z-16ca1960-l2/04-erp-proof-only-navigation-smoke-l2-10-cost-analysis-screen-visible.png"
  ],
  "summary": "FAIL \u2014 wall-clock timeout after 180s \u00b7 2 console error(s) \u00b7 2 server-5xx response(s)",
  "videos": []
}