{
  "findings": [
    {
      "id": "pages",
      "label": "\ud83d\udcc4 Pages",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 169,
      "panel_text_sample": "\ud83d\udcc4 Pages | \u2212 | \u00d7 | \ud83d\udcc4 Pages |  | Pages declared in annotation.json. Click a page to open its regions for editing. |  | No pages found. Add regions to annotation.json or load a template.",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/pages-panel.png",
      "elements_count": 4,
      "elements_clicked_ok": 0,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "users",
      "label": "\ud83d\udc65 Users & Roles",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 311,
      "panel_text_sample": "\ud83d\udc65 Users & Roles | \u2212 | \u00d7 | \ud83d\udc65 Users & Roles |  | Operators and their DAO roles (per app-pact \u00a711). The 5 roles are defined in roles-config.json. |  | Current operator: unknown | roles-config.json not loaded. The canonical list is in freshvibe-cms/app-pact/roles-config.json (5 roles: admin, builder, reviewer, auditor,",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/users-panel.png",
      "elements_count": 4,
      "elements_clicked_ok": 0,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "settings",
      "label": "\u2699\ufe0f Settings",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 238,
      "panel_text_sample": "\u2699\ufe0f Settings | \u2212 | \u00d7 | \u2699\ufe0f Settings |  | fvCMS configuration. Edit the runtime via the form, or download the JSON for commit. |  | DNA Tier | stable | experimental | legacy | Chrome Theme | Dev Mode | Audit Log Level | off | error | warn | info | debug | Save to store (preview)",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 4,
          "tag": "select",
          "type": "select-one",
          "text": "stable\nexperimental\nlegacy",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-4",
          "result": "clicked-ok"
        },
        {
          "idx": 5,
          "tag": "input",
          "type": "text",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-5",
          "result": "filled"
        },
        {
          "idx": 6,
          "tag": "input",
          "type": "checkbox",
          "text": "on",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-6",
          "result": "clicked-ok"
        },
        {
          "idx": 7,
          "tag": "select",
          "type": "select-one",
          "text": "off\nerror\nwarn\ninfo\ndebug",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-7",
          "result": "clicked-ok"
        },
        {
          "idx": 8,
          "tag": "button",
          "type": "button",
          "text": "Save to store (preview)",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-8",
          "result": "clicked-ok"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/settings-panel.png",
      "elements_count": 9,
      "elements_clicked_ok": 4,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "monitor",
      "label": "\ud83d\udcca Monitor",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 166,
      "panel_text_sample": "\ud83d\udcca Monitor | \u2212 | \u00d7 | \ud83d\udcca Monitor |  | Runtime health + drift detection (I1-I5). Updates every 5s. |  | Runtime | 3s | Regions | 0 | Modules | 0 | Drift detected | 0 | Errors caught | 0 | Events emitted | 0",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/monitor-panel.png",
      "elements_count": 4,
      "elements_clicked_ok": 0,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "audit",
      "label": "\ud83d\udd0d Audit",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 95,
      "panel_text_sample": "\ud83d\udd0d Audit | \u2212 | \u00d7 | \ud83d\udd0d Audit | Audit log (last 50) | No audit events yet. | Event bus (last 50) | No events yet.",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/audit-panel.png",
      "elements_count": 4,
      "elements_clicked_ok": 0,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "deploy",
      "label": "\ud83d\ude80 Deploy",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 439,
      "panel_text_sample": "\ud83d\ude80 Deploy | \u2212 | \u00d7 | \ud83d\ude80 Deploy |  | 5-step workflow per app-pact \u00a712.4: build \u2192 test \u2192 audit \u2192 deploy \u2192 verify. Audit is non-skippable. |  | Build: ? | Deployed: ? | URL: /demo/admin-launcher-test.html | 1. Build | npm run build \u2192 vendored bundle | \u2014 | 2. Test | npm test \u2192 in-repo suite | \u2014 | 3. Audit | fvcms audit \u2192 DNA, app-pact, dri",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 4,
          "tag": "button",
          "type": "button",
          "text": "\u25b6 Run pipeline",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-4",
          "result": "clicked-ok"
        },
        {
          "idx": 5,
          "tag": "button",
          "type": "button",
          "text": "\u21a9 Rollback",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-5",
          "result": "clicked-ok"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/deploy-panel.png",
      "elements_count": 6,
      "elements_clicked_ok": 2,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "ai",
      "label": "\ud83e\udd16 AI Agent",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 486,
      "panel_text_sample": "\ud83e\udd16 AI Agent | \u2212 | \u00d7 | \ud83e\udd16 AI Agent |  | Propose changes via the same path the operator uses. 3-tier approval per app-pact \u00a73.13. Manual + AI both, always (\u00a73.11). |  | Context (what the agent can see) | Proposal (in natural language) | Propose | 3-tier approval (per \u00a73.13): | SMALL (1 write): agent does it, asks \"save?\" | MED",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 4,
          "tag": "textarea",
          "type": "textarea",
          "text": "e.g. \"Add a new page called /blog with a heading and a paragraph\"",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-4",
          "result": "clicked-ok"
        },
        {
          "idx": 5,
          "tag": "button",
          "type": "button",
          "text": "Propose",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-5",
          "result": "clicked-ok"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/ai-panel.png",
      "elements_count": 6,
      "elements_clicked_ok": 2,
      "elements_failed": 0,
      "elements_skipped": 4
    },
    {
      "id": "ai2",
      "label": "\ud83e\udd16 AI v0.2",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 287,
      "panel_text_sample": "\ud83e\udd16 AI Agent v0.2 | \u2212 | \u00d7 | \ud83e\udd16 AI Agent v0.2 |  | Generates a prompt for the LLM, parses the response, classifies the tier (per \u00a73.13), and shows a preview. The LLM call is made by the operator (paste prompt + response) or by a configured proxy. |  | 1. What do you want the AI to do? | Generate LLM prompt",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 4,
          "tag": "textarea",
          "type": "textarea",
          "text": "e.g. \"Add a BlogPost content type to the homepage region\"",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-4",
          "result": "clicked-ok"
        },
        {
          "idx": 5,
          "tag": "button",
          "type": "button",
          "text": "Generate LLM prompt",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-5",
          "result": "clicked-ok"
        },
        {
          "idx": 6,
          "tag": "textarea",
          "type": "textarea",
          "text": "[{ \"type\": \"region:bind-content-type\", \"regionId\": \"home\", \"contentType\": \"BlogP",
          "disabled": false,
          "hasClick": false,
          "id": "fvcms-ai-v02-resp",
          "className": "",
          "auditId": "audit-el-6",
          "result": "click-failed: ElementHandle.scroll_into_view_if_needed: Timeout 2000ms exceeded."
        },
        {
          "idx": 7,
          "tag": "button",
          "type": "button",
          "text": "Parse response",
          "disabled": false,
          "hasClick": false,
          "id": "fvcms-ai-v02-parse",
          "className": "",
          "auditId": "audit-el-7",
          "result": "click-failed: ElementHandle.scroll_into_view_if_needed: Timeout 2000ms exceeded."
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/ai2-panel.png",
      "elements_count": 8,
      "elements_clicked_ok": 2,
      "elements_failed": 2,
      "elements_skipped": 4
    },
    {
      "id": "mig",
      "label": "\ud83d\udd04 Migration",
      "clicked_launcher": true,
      "panel_found": true,
      "panel_visible": true,
      "panel_text_len": 191,
      "panel_text_sample": "\ud83d\udd04 Smart Migration | \u2212 | \u00d7 | \ud83d\udd04 Smart Migration |  | Analyzes the site and suggests panel/content-type migrations. Operator approves each one before apply (per app-pact \u00a73.13 SMALL tier). |  | \u25b6 Analyze site",
      "elements": [
        {
          "idx": 0,
          "tag": "button",
          "type": "button",
          "text": "\u21d4",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-squeeze",
          "auditId": "audit-el-0",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 1,
          "tag": "button",
          "type": "button",
          "text": "\u2212",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-collapse",
          "auditId": "audit-el-1",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 2,
          "tag": "button",
          "type": "button",
          "text": "",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-detach",
          "auditId": "audit-el-2",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 3,
          "tag": "button",
          "type": "button",
          "text": "\u00d7",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "fvcms-pm-btn fvcms-pm-close",
          "auditId": "audit-el-3",
          "result": "skipped-panel-chrome"
        },
        {
          "idx": 4,
          "tag": "button",
          "type": "button",
          "text": "\u25b6 Analyze site",
          "disabled": false,
          "hasClick": false,
          "id": null,
          "className": "",
          "auditId": "audit-el-4",
          "result": "clicked-ok"
        }
      ],
      "errors": [],
      "screenshot": "/workspace/freshvibe-cms/aux-tests/launcher/audit-pov/mig-panel.png",
      "elements_count": 5,
      "elements_clicked_ok": 1,
      "elements_failed": 0,
      "elements_skipped": 4
    }
  ],
  "page_errors": [
    "console.error: Failed to load resource: the server responded with a status of 404 (File not found)",
    "console.error: Failed to load resource: the server responded with a status of 404 (File not found)"
  ]
}