{
  "target": "http://localhost:4173",
  "runAt": "2026-11-07T15:34:27.766Z",
  "browser": "Chromium (Playwright) headless, fresh contexts, no login",
  "release": "0.1.2",
  "commit": "unknown",
  "storageMode": "browser localStorage per visitor (no shared store)",
  "total": 50,
  "passed": 50,
  "errors": [],
  "log": [
    {
      "id": "W1",
      "action": "Fresh browser opens the site without any login",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "L1",
      "action": "Release label visible on screen in all six views after scrolling",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "W2",
      "action": "All six view tabs render content",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "L2",
      "action": "Workspace keeps the \"fixed script, not a live model\" wording",
      "expected": "contains: The agent follows a fixed script, not a live model.",
      "actual": "\n  What Perceptifx is doing now\n  Two jobs are loaded from fixtures. The agent follows a fixed script, not a live model. You can see what the agent observes, ho",
      "pass": true
    },
    {
      "id": "T1",
      "action": "MF-001 opened, no lessons, side view only",
      "expected": "No defect detected within inspected coverage",
      "actual": "No defect detected within inspected coverage",
      "pass": true
    },
    {
      "id": "T1b",
      "action": "Coverage stated",
      "expected": "contains: Inspected coverage: side",
      "actual": "\n  Visual QC: ModelForge bodies\n  Simulated geometry with rendered views. Results only claim what was inspected. “Not visible” never counts as “missing”.\n  Case",
      "pass": true
    },
    {
      "id": "T1c",
      "action": "Front view shown as not inspected (not as missing)",
      "expected": "contains: front view not inspected",
      "actual": "\n  Visual QC: ModelForge bodies\n  Simulated geometry with rendered views. Results only claim what was inspected. “Not visible” never counts as “missing”.\n  Case",
      "pass": true
    },
    {
      "id": "T2a",
      "action": "Mark wrong with empty note",
      "expected": 0,
      "actual": 0,
      "pass": true
    },
    {
      "id": "T2b",
      "action": "Mark wrong with note -> correction stored",
      "expected": "contains: That mirror isn't connected",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "T3",
      "action": "Learning bot proposes",
      "expected": "contains: L-001v1PROPOSED",
      "actual": "Learning:corrections,lessons,testsAstoredcommentisnotlearning.Alessongoesliveonlyafteritfixesanewcaseitneversaw,leavesacounterexamplealone,andbreaksnothingthatp",
      "pass": true
    },
    {
      "id": "T3b",
      "action": "Nothing active after proposal",
      "expected": null,
      "actual": null,
      "pass": true
    },
    {
      "id": "T4",
      "action": "L-001 evaluator tests pass -> Activate offered",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "T5a",
      "action": "L-002 (any disconnected mesh = defect) cannot be activated",
      "expected": null,
      "actual": null,
      "pass": true
    },
    {
      "id": "T5b",
      "action": "L-002 fails on MF-003 counterexample",
      "expected": "contains: Failed: MF-003",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "T5c",
      "action": "L-002 rejected",
      "expected": "contains: L-002v1REJECTED",
      "actual": "Learning:corrections,lessons,testsAstoredcommentisnotlearning.Alessongoesliveonlyafteritfixesanewcaseitneversaw,leavesacounterexamplealone,andbreaksnothingthatp",
      "pass": true
    },
    {
      "id": "T6a",
      "action": "L-001 activated",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "T6b",
      "action": "MF-002 held-out: agent asks for more evidence first",
      "expected": "Additional view required",
      "actual": "Additional view required",
      "pass": true
    },
    {
      "id": "T6c",
      "action": "After front+top views: asks for measurement",
      "expected": "Additional measurement required",
      "actual": "Additional measurement required",
      "pass": true
    },
    {
      "id": "T6d",
      "action": "After measuring fixture geometry",
      "expected": "Defect confirmed",
      "actual": "Defect confirmed",
      "pass": true
    },
    {
      "id": "T7",
      "action": "MF-003 separate mirror mesh within 1.0 mm is not a defect",
      "expected": "No defect detected within inspected coverage",
      "actual": "No defect detected within inspected coverage",
      "pass": true
    },
    {
      "id": "T8",
      "action": "MF-004 regression (hood scoop) still passes",
      "expected": "No defect detected within inspected coverage",
      "actual": "No defect detected within inspected coverage",
      "pass": true
    },
    {
      "id": "I1",
      "action": "Independent session B does not see session A lessons",
      "expected": "contains: No lessons proposed yet",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "I2",
      "action": "Session B reset leaves session A lessons intact",
      "expected": "contains: L-001v1ACTIVE",
      "actual": "Learning:corrections,lessons,testsAstoredcommentisnotlearning.Alessongoesliveonlyafteritfixesanewcaseitneversaw,leavesacounterexamplealone,andbreaksnothingthatp",
      "pass": true
    },
    {
      "id": "T9a",
      "action": "L-001 rolled back",
      "expected": "contains: L-001v1ROLLEDBACK",
      "actual": "Learning:corrections,lessons,testsAstoredcommentisnotlearning.Alessongoesliveonlyafteritfixesanewcaseitneversaw,leavesacounterexamplealone,andbreaksnothingthatp",
      "pass": true
    },
    {
      "id": "T9b",
      "action": "Lesson history kept (proposed, tested, active, rolled back)",
      "expected": "contains: History (4)",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "T9c",
      "action": "Correction still on record after rollback",
      "expected": "contains: That mirror isn't connected",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "T9d",
      "action": "MF-002 after rollback returns to baseline behavior",
      "expected": "No defect detected within inspected coverage",
      "actual": "No defect detected within inspected coverage",
      "pass": true
    },
    {
      "id": "T9e",
      "action": "Evidence trail grew, nothing removed",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "T10a",
      "action": "Saved file 1 is detected as a login page",
      "expected": "contains: Login page",
      "actual": "\n  Production: Chapter 12 Zoning PDF\n  Replay of a recorded run against a stand-in county code site. A click is not completion: each saved file is opened and ch",
      "pass": true
    },
    {
      "id": "T10b",
      "action": "Handoff shown, Run disabled",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "T10c",
      "action": "Fixture file passes checks, labeled as synthetic",
      "expected": "contains: not an official county document",
      "actual": "\n  Production: Chapter 12 Zoning PDF\n  Replay of a recorded run against a stand-in county code site. A click is not completion: each saved file is opened and ch",
      "pass": true
    },
    {
      "id": "T10d",
      "action": "Retries used",
      "expected": "contains: Retries used 1 of 2",
      "actual": "\n  Production: Chapter 12 Zoning PDF\n  Replay of a recorded run against a stand-in county code site. A click is not completion: each saved file is opened and ch",
      "pass": true
    },
    {
      "id": "W4",
      "action": "Correct the production agent from the public site",
      "expected": "contains: Use the official site",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "T11a",
      "action": "After reload: lesson states kept",
      "expected": "contains: L-001v1ROLLEDBACK",
      "actual": "Learning:corrections,lessons,testsAstoredcommentisnotlearning.Alessongoesliveonlyafteritfixesanewcaseitneversaw,leavesacounterexamplealone,andbreaksnothingthatp",
      "pass": true
    },
    {
      "id": "T11b",
      "action": "After reload: production result kept",
      "expected": "contains: Fixture file passed checks",
      "actual": "\n  Production: Chapter 12 Zoning PDF\n  Replay of a recorded run against a stand-in county code site. A click is not completion: each saved file is opened and ch",
      "pass": true
    },
    {
      "id": "T11c",
      "action": "New tab in same browser profile sees same state",
      "expected": "contains: Fixture file passed checks",
      "actual": "\n  What Perceptifx is doing now\n  Two jobs are loaded from fixtures. The agent follows a fixed script, not a live model. You can see what the agent observes, ho",
      "pass": true
    },
    {
      "id": "T11d",
      "action": "Fresh browser profile does NOT see it (per-browser storage)",
      "expected": false,
      "actual": false,
      "pass": true
    },
    {
      "id": "T12a",
      "action": "Reset needs a second tap",
      "expected": "contains: Tap again",
      "actual": "Tap again to reset",
      "pass": true
    },
    {
      "id": "T12b",
      "action": "Reset clears lessons",
      "expected": "contains: No lessons proposed yet",
      "actual": "\n  Learning: corrections, lessons, tests\n  A stored comment is not learning. A lesson goes live only after it fixes a new case it never saw, leaves a counterexa",
      "pass": true
    },
    {
      "id": "R1",
      "action": "Write attempts on official status are refused (non-2xx)",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "R2",
      "action": "Official status unchanged after demo actions, reset and write attempts",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "E1",
      "action": "Evidence view shows automated test results",
      "expected": "contains: checks passed",
      "actual": "\n  Evidence trail\n  Your demo trail: every step, check, correction and lesson change in this browser, newest first. Labels show where each item came from. It is",
      "pass": true
    },
    {
      "id": "S0",
      "action": "Status tab shows official status, not demo progress",
      "expected": "contains: Official project status",
      "actual": "\n  Official project status\n  This tab shows the real project status, read-only. It is not demo progress, and nothing you do in this demo changes it. Counts are ",
      "pass": true
    },
    {
      "id": "S1",
      "action": "/status loads (HTTP 200) with JavaScript disabled",
      "expected": 200,
      "actual": 200,
      "pass": true
    },
    {
      "id": "S2",
      "action": "/status shows the source commit from version.json",
      "expected": "contains: unknown",
      "actual": "\nPerceptifx project status\nInteractive prototype — scripted demonstrations using simulated/replay data.\nOpen the interactive prototype · status.json · status.tx",
      "pass": true
    },
    {
      "id": "S3",
      "action": "/status shows release, lanes, acceptance, limitations, blockers, next action",
      "expected": true,
      "actual": true,
      "pass": true
    },
    {
      "id": "S4",
      "action": "/status carries the release label",
      "expected": "contains: Interactive prototype — scripted demonstrations using simulated/replay data.",
      "actual": "\nPerceptifx project status\nInteractive prototype — scripted demonstrations using simulated/replay data.\nOpen the interactive prototype · status.json · status.tx",
      "pass": true
    },
    {
      "id": "S5",
      "action": "/status.txt plain-text status with commit",
      "expected": "contains: unknown",
      "actual": "PERCEPTIFX PROJECT STATUS\nInteractive prototype — scripted demonstrations using simulated/replay data.\n\nRelease: 0.1.2 (Public review build of prototype v0.1.1)",
      "pass": true
    },
    {
      "id": "X1",
      "action": "No credentials, emails, Drive IDs, team IDs or private links in published files",
      "expected": "",
      "actual": "",
      "pass": true
    },
    {
      "id": "T13",
      "action": "No page errors",
      "expected": 0,
      "actual": 0,
      "pass": true
    }
  ]
}