@thebackstoryis/engineering-with-ai 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/Docs/README.md +50 -0
  2. package/Docs/adoption/consultancy-and-multi-project-rollout.md +135 -0
  3. package/Docs/adoption/non-technical-team-guide.md +126 -0
  4. package/Docs/archaeology-technology-and-hosting-discovery.md +212 -0
  5. package/Docs/blast-radius-and-impact-routing-guide.md +325 -0
  6. package/Docs/blueprints/internal-blueprint-catalogue.md +146 -0
  7. package/Docs/blueprints/maintaining-organisation-blueprints.md +154 -0
  8. package/Docs/blueprints/validation-and-troubleshooting.md +168 -0
  9. package/Docs/cli-reference.md +113 -0
  10. package/Docs/completed-phase-evidence-amendments.md +74 -0
  11. package/Docs/consultancy-network-rollout-control-plane-guide.md +202 -0
  12. package/Docs/context-aware-delivery-companion-guide.md +198 -0
  13. package/Docs/context-aware-delivery-companion-user-guide.md +184 -0
  14. package/Docs/context-management-and-token-efficiency.md +113 -0
  15. package/Docs/design-systems/design-system-implementation-guide.md +85 -0
  16. package/Docs/design-systems/design-system-pack-authoring-guide.md +95 -0
  17. package/Docs/design-systems/design-system-review-guide.md +51 -0
  18. package/Docs/design-systems/design-system-user-guide.md +96 -0
  19. package/Docs/design-systems/product-owner-guide.md +49 -0
  20. package/Docs/designing-organisation-blueprint-packs.md +384 -0
  21. package/Docs/developer-delivery-guide.md +224 -0
  22. package/Docs/error-reporting-guide.md +110 -0
  23. package/Docs/error-reporting-provider-guide.md +49 -0
  24. package/Docs/examples/error-report-adapter.md +70 -0
  25. package/Docs/examples/meeting-review.md +76 -0
  26. package/Docs/examples/minimal-design-system.md +67 -0
  27. package/Docs/examples/prototype-review-inputs.md +175 -0
  28. package/Docs/examples/reproducible-archaeology-depth-example.md +144 -0
  29. package/Docs/examples/test-scenario-input.md +68 -0
  30. package/Docs/examples/worked-examples.md +147 -0
  31. package/Docs/existing-project-onboarding-guide.md +214 -0
  32. package/Docs/explanation/core-concepts.md +26 -0
  33. package/Docs/explanation/delivery-workflow.md +48 -0
  34. package/Docs/governance/governance-team-guide.md +139 -0
  35. package/Docs/governed-starter-project-materialisation-guide.md +284 -0
  36. package/Docs/guide-catalogue.md +117 -0
  37. package/Docs/guided-discovery-facilitator-guide.md +172 -0
  38. package/Docs/guided-intent-workspace-guide.md +109 -0
  39. package/Docs/guided-phase-evidence-drafting-guide.md +119 -0
  40. package/Docs/human-approval-and-assurance-guide.md +146 -0
  41. package/Docs/knowledge-proposals-implementer-guide.md +106 -0
  42. package/Docs/knowledge-proposals-user-guide.md +247 -0
  43. package/Docs/maintainers/context-benchmarks.md +29 -0
  44. package/Docs/maintainers/contributing.md +58 -0
  45. package/Docs/maintainers/evidence-depth-acceptance.md +72 -0
  46. package/Docs/maintainers/verification-walkthroughs.md +104 -0
  47. package/Docs/meeting-evidence-implementer-guide.md +132 -0
  48. package/Docs/meeting-evidence-user-guide.md +200 -0
  49. package/Docs/operations/dashboard-and-delivery-state.md +153 -0
  50. package/Docs/operations/dashboard-configuration.md +87 -0
  51. package/Docs/operations/installation-updating-and-entitlements.md +135 -0
  52. package/Docs/operations/premium-personas-setup.md +76 -0
  53. package/Docs/operations/troubleshooting-and-recovery.md +205 -0
  54. package/Docs/organisation-rollout-guide.md +142 -0
  55. package/Docs/persona-entitlement-provider-guide.md +199 -0
  56. package/Docs/persona-guided-prototype-iteration.md +129 -0
  57. package/Docs/personas/organisation-specific-personas.md +103 -0
  58. package/Docs/personas/persona-authoring-cookbook.md +176 -0
  59. package/Docs/personas/persona-engagement-ui.md +133 -0
  60. package/Docs/personas/persona-governance.md +118 -0
  61. package/Docs/platform-export-analysis-guide.md +336 -0
  62. package/Docs/policies/governance-owner-guide.md +36 -0
  63. package/Docs/policies/implementation-guide.md +42 -0
  64. package/Docs/policies/organisation-policy-design-gates.md +58 -0
  65. package/Docs/policies/policy-pack-authoring-guide.md +108 -0
  66. package/Docs/policies/product-owner-guide.md +43 -0
  67. package/Docs/policies/technical-owner-guide.md +37 -0
  68. package/Docs/product-owner-guide.md +327 -0
  69. package/Docs/project-portfolio-orchestration-guide.md +199 -0
  70. package/Docs/quality/manual-qa-and-acceptance.md +162 -0
  71. package/Docs/quality/persona-driven-test-scenarios.md +172 -0
  72. package/Docs/quality/reproducible-archaeology-depth-review-checklist.md +89 -0
  73. package/Docs/reference/capabilities-and-project-layout.md +678 -0
  74. package/Docs/reference/cli-and-configuration.md +398 -0
  75. package/Docs/reference/contributions-api.md +23 -0
  76. package/Docs/reference/security-adapter-authoring.md +81 -0
  77. package/Docs/reference/starter-adapter-authoring.md +74 -0
  78. package/Docs/repository-source-map-guide.md +381 -0
  79. package/Docs/reproducible-archaeology-and-discovery-depth.md +292 -0
  80. package/Docs/screen-prototype-creation-guide.md +324 -0
  81. package/Docs/security-validation-guide.md +353 -0
  82. package/Docs/solution-readiness-review-guide.md +123 -0
  83. package/Docs/standards/project-standards-authoring.md +157 -0
  84. package/Docs/team-hub-guide.md +162 -0
  85. package/Docs/team-hub-resource-registry-guide.md +167 -0
  86. package/Docs/tutorials/first-delivery.md +83 -0
  87. package/Docs/tutorials/first-session.md +62 -0
  88. package/Docs/using-lifecycle-hooks.md +381 -0
  89. package/Docs/working-with-personas.md +274 -0
  90. package/LICENSE +165 -0
  91. package/README.md +96 -0
  92. package/agents-src/claude/ewai-security-reviewer.md +15 -0
  93. package/bin/ewai +5 -0
  94. package/config/archaeology-record-families.yaml +59 -0
  95. package/config/delivery-artifacts.yaml +121 -0
  96. package/config/delivery-stages.yaml +77 -0
  97. package/config/design-system.schema.json +46 -0
  98. package/config/error-reporting.schema.json +79 -0
  99. package/config/evidence-depth.schema.json +53 -0
  100. package/config/intent.schema.json +90 -0
  101. package/config/knowledge-proposals-proposal.schema.json +34 -0
  102. package/config/lifecycle-event.schema.json +68 -0
  103. package/config/lifecycle-handler.schema.json +45 -0
  104. package/config/lifecycle-hook-ack.schema.json +19 -0
  105. package/config/meeting-evidence-candidate.schema.json +102 -0
  106. package/config/organisation-policy.schema.json +137 -0
  107. package/config/pack.schema.json +250 -0
  108. package/config/persona-pack.schema.json +21 -0
  109. package/config/persona.schema.json +17 -0
  110. package/config/policy-evaluation.schema.json +77 -0
  111. package/config/policy-facts.schema.json +140 -0
  112. package/config/portfolio.schema.json +68 -0
  113. package/config/project.schema.json +313 -0
  114. package/config/prototype-iteration.schema.json +128 -0
  115. package/config/rollout.schema.json +87 -0
  116. package/config/security-adapter.schema.json +31 -0
  117. package/config/security-scan-request.schema.json +64 -0
  118. package/config/security-scan-response.schema.json +52 -0
  119. package/config/security-validation-policy.schema.json +74 -0
  120. package/config/starter-source-acknowledgement.schema.json +13 -0
  121. package/config/starter-source-adapter.schema.json +38 -0
  122. package/config/starter-source-request.schema.json +61 -0
  123. package/package.json +77 -0
  124. package/packs/core/pack.yaml +7 -0
  125. package/packs/design-systems/default/experience-promise.md +9 -0
  126. package/packs/design-systems/default/intentional-review.md +10 -0
  127. package/packs/design-systems/default/interaction-and-entry.md +9 -0
  128. package/packs/design-systems/default/meaningful-content-and-states.md +9 -0
  129. package/packs/design-systems/default/pack.yaml +44 -0
  130. package/packs/design-systems/default/principles.md +10 -0
  131. package/packs/personas/core/pack.yaml +7 -0
  132. package/packs/personas/core/personas/archaeologist.md +37 -0
  133. package/packs/personas/core/personas/end-user.md +17 -0
  134. package/packs/personas/core/personas/maintainer.md +17 -0
  135. package/packs/personas/core/personas/operator.md +17 -0
  136. package/packs/personas/core/personas/specs-knowledge-curator.md +35 -0
  137. package/packs/technologies/laravel/pack.yaml +30 -0
  138. package/packs/technologies/laravel-nuxt/pack.yaml +30 -0
  139. package/packs/technologies/nuxt/pack.yaml +30 -0
  140. package/packs/technologies/power-platform/pack.yaml +31 -0
  141. package/packs/technologies/salesforce/pack.yaml +25 -0
  142. package/public/app.js +4896 -0
  143. package/public/apple-touch-icon.png +0 -0
  144. package/public/assets/backstory-icon.png +0 -0
  145. package/public/dashboard-navigation.js +98 -0
  146. package/public/favicon-16.png +0 -0
  147. package/public/favicon-32.png +0 -0
  148. package/public/favicon.ico +0 -0
  149. package/public/index.html +789 -0
  150. package/public/styles.css +2693 -0
  151. package/public/team-hub/app.js +202 -0
  152. package/public/team-hub/index.html +79 -0
  153. package/public/team-hub/styles.css +90 -0
  154. package/scripts/publication-check.mjs +140 -0
  155. package/scripts/setup.mjs +21 -0
  156. package/skills-src/ewai-archaeology/SKILL.md +334 -0
  157. package/skills-src/ewai-archaeology/agents/openai.yaml +4 -0
  158. package/skills-src/ewai-archaeology/references/archaeology-contract.md +201 -0
  159. package/skills-src/ewai-archaeology/references/lifecycle-reconstruction.md +177 -0
  160. package/skills-src/ewai-archaeology/references/maximum-detail-reconstruction.md +97 -0
  161. package/skills-src/ewai-archaeology/references/model-routing.md +26 -0
  162. package/skills-src/ewai-architecture/SKILL.md +108 -0
  163. package/skills-src/ewai-architecture/agents/openai.yaml +4 -0
  164. package/skills-src/ewai-architecture/references/architecture-contract.md +176 -0
  165. package/skills-src/ewai-context/SKILL.md +68 -0
  166. package/skills-src/ewai-context/agents/openai.yaml +4 -0
  167. package/skills-src/ewai-context-import/SKILL.md +118 -0
  168. package/skills-src/ewai-context-import/agents/openai.yaml +4 -0
  169. package/skills-src/ewai-context-import/references/context-import-contract.md +106 -0
  170. package/skills-src/ewai-dashboard-configuration/SKILL.md +20 -0
  171. package/skills-src/ewai-deliver/SKILL.md +122 -0
  172. package/skills-src/ewai-deliver/references/delivery-evidence.md +92 -0
  173. package/skills-src/ewai-deliver/references/phase-routing.md +31 -0
  174. package/skills-src/ewai-design-system-apply/SKILL.md +27 -0
  175. package/skills-src/ewai-design-system-apply/agents/openai.yaml +4 -0
  176. package/skills-src/ewai-design-system-apply/references/application-contract.md +36 -0
  177. package/skills-src/ewai-design-system-author/SKILL.md +28 -0
  178. package/skills-src/ewai-design-system-author/agents/openai.yaml +4 -0
  179. package/skills-src/ewai-design-system-author/references/authoring-contract.md +38 -0
  180. package/skills-src/ewai-design-system-review/SKILL.md +26 -0
  181. package/skills-src/ewai-design-system-review/agents/openai.yaml +4 -0
  182. package/skills-src/ewai-design-system-review/references/review-contract.md +40 -0
  183. package/skills-src/ewai-error-reporting/SKILL.md +46 -0
  184. package/skills-src/ewai-error-reporting/agents/openai.yaml +4 -0
  185. package/skills-src/ewai-error-reporting/references/provider-contract.md +74 -0
  186. package/skills-src/ewai-evidence-depth/SKILL.md +72 -0
  187. package/skills-src/ewai-evidence-depth/agents/openai.yaml +4 -0
  188. package/skills-src/ewai-evidence-depth/references/evidence-depth-contract.md +127 -0
  189. package/skills-src/ewai-intent/SKILL.md +68 -0
  190. package/skills-src/ewai-intent/agents/openai.yaml +4 -0
  191. package/skills-src/ewai-intent/references/intent-contract.md +42 -0
  192. package/skills-src/ewai-knowledge-proposals/SKILL.md +105 -0
  193. package/skills-src/ewai-knowledge-proposals/agents/openai.yaml +4 -0
  194. package/skills-src/ewai-knowledge-proposals/references/proposal-contract.md +59 -0
  195. package/skills-src/ewai-meeting-evidence/SKILL.md +106 -0
  196. package/skills-src/ewai-meeting-evidence/agents/openai.yaml +4 -0
  197. package/skills-src/ewai-meeting-evidence/references/candidate-contract.md +64 -0
  198. package/skills-src/ewai-organisation-policy/SKILL.md +62 -0
  199. package/skills-src/ewai-organisation-policy/agents/openai.yaml +4 -0
  200. package/skills-src/ewai-organisation-policy/references/policy-contract.md +94 -0
  201. package/skills-src/ewai-palace-housekeeping/SKILL.md +55 -0
  202. package/skills-src/ewai-palace-housekeeping/agents/openai.yaml +4 -0
  203. package/skills-src/ewai-persona-entitlement/SKILL.md +60 -0
  204. package/skills-src/ewai-persona-entitlement/agents/openai.yaml +4 -0
  205. package/skills-src/ewai-phase-evidence/SKILL.md +79 -0
  206. package/skills-src/ewai-phase-evidence/agents/openai.yaml +4 -0
  207. package/skills-src/ewai-pipeline/SKILL.md +130 -0
  208. package/skills-src/ewai-pipeline/agents/openai.yaml +4 -0
  209. package/skills-src/ewai-pipeline/references/cli.md +86 -0
  210. package/skills-src/ewai-pipeline/references/specs-contract.md +16 -0
  211. package/skills-src/ewai-portfolio/SKILL.md +70 -0
  212. package/skills-src/ewai-portfolio/agents/openai.yaml +4 -0
  213. package/skills-src/ewai-portfolio/references/portfolio-contract.md +67 -0
  214. package/skills-src/ewai-project-discovery/SKILL.md +95 -0
  215. package/skills-src/ewai-project-discovery/agents/openai.yaml +4 -0
  216. package/skills-src/ewai-project-discovery/references/discovery-contract.md +34 -0
  217. package/skills-src/ewai-prototype-iteration/SKILL.md +30 -0
  218. package/skills-src/ewai-prototype-iteration/agents/openai.yaml +4 -0
  219. package/skills-src/ewai-prototype-iteration/references/review-contract.md +49 -0
  220. package/skills-src/ewai-retro/SKILL.md +48 -0
  221. package/skills-src/ewai-retro/agents/openai.yaml +4 -0
  222. package/skills-src/ewai-retro/references/asset-routing.md +14 -0
  223. package/skills-src/ewai-rollout/SKILL.md +74 -0
  224. package/skills-src/ewai-rollout/agents/openai.yaml +4 -0
  225. package/skills-src/ewai-rollout/references/rollout-contract.md +74 -0
  226. package/skills-src/ewai-shape-intents/SKILL.md +84 -0
  227. package/skills-src/ewai-shape-intents/agents/openai.yaml +4 -0
  228. package/skills-src/ewai-shape-intents/references/intent-mapping-contract.md +109 -0
  229. package/skills-src/ewai-solution-readiness/SKILL.md +55 -0
  230. package/skills-src/ewai-solution-readiness/agents/openai.yaml +4 -0
  231. package/skills-src/ewai-standards-check/SKILL.md +93 -0
  232. package/skills-src/ewai-standards-check/agents/openai.yaml +4 -0
  233. package/skills-src/ewai-standards-check/references/report-contract.md +116 -0
  234. package/skills-src/ewai-test-scenarios/SKILL.md +94 -0
  235. package/skills-src/ewai-test-scenarios/agents/openai.yaml +4 -0
  236. package/skills-src/ewai-test-scenarios/references/scenario-contract.md +88 -0
  237. package/src/afk-worker.mjs +16 -0
  238. package/src/archaeology.mjs +1333 -0
  239. package/src/checkin.mjs +261 -0
  240. package/src/cli.mjs +2427 -0
  241. package/src/companion-guidance.mjs +257 -0
  242. package/src/companion-opening.mjs +62 -0
  243. package/src/companion.mjs +256 -0
  244. package/src/context.mjs +210 -0
  245. package/src/dashboard-preferences.mjs +80 -0
  246. package/src/delivery-artifacts.mjs +204 -0
  247. package/src/delivery-documents.mjs +248 -0
  248. package/src/delivery-gates.mjs +317 -0
  249. package/src/delivery.mjs +1433 -0
  250. package/src/design-system-application.mjs +291 -0
  251. package/src/design-system-authoring.mjs +101 -0
  252. package/src/design-systems.mjs +466 -0
  253. package/src/discovery.mjs +1314 -0
  254. package/src/error-reporting.mjs +323 -0
  255. package/src/evidence-depth.mjs +543 -0
  256. package/src/execution-state.mjs +243 -0
  257. package/src/install.mjs +166 -0
  258. package/src/intent-dependencies.mjs +117 -0
  259. package/src/intent-maps.mjs +402 -0
  260. package/src/intents.mjs +747 -0
  261. package/src/knowledge-proposals.mjs +717 -0
  262. package/src/launcher.mjs +51 -0
  263. package/src/meeting-evidence.mjs +703 -0
  264. package/src/network-rollout.mjs +386 -0
  265. package/src/organisation-blueprints.mjs +438 -0
  266. package/src/organisation-policies.mjs +448 -0
  267. package/src/packs.mjs +44 -0
  268. package/src/paths.mjs +62 -0
  269. package/src/persona-entitlements.mjs +438 -0
  270. package/src/persona-licence-config.mjs +98 -0
  271. package/src/persona-website-provider.mjs +134 -0
  272. package/src/persona-zip.mjs +87 -0
  273. package/src/personas.mjs +159 -0
  274. package/src/platform-metadata-analysis.mjs +314 -0
  275. package/src/policy-design-gates.mjs +623 -0
  276. package/src/policy-gate-integration.mjs +318 -0
  277. package/src/portfolio.mjs +509 -0
  278. package/src/power-platform-source-map.mjs +190 -0
  279. package/src/project.mjs +449 -0
  280. package/src/prototype-iterations.mjs +730 -0
  281. package/src/repository-source-map.mjs +603 -0
  282. package/src/runtime/afk-conductor.mjs +973 -0
  283. package/src/runtime/context-assembly.mjs +457 -0
  284. package/src/runtime/context-benchmarks.mjs +115 -0
  285. package/src/runtime/dashboard-actions.mjs +109 -0
  286. package/src/runtime/dashboard-handoffs.mjs +149 -0
  287. package/src/runtime/dashboard-server.mjs +1272 -0
  288. package/src/runtime/dashboard.mjs +197 -0
  289. package/src/runtime/database.mjs +789 -0
  290. package/src/runtime/error-reporting.mjs +581 -0
  291. package/src/runtime/evidence-depth-workspace.mjs +412 -0
  292. package/src/runtime/execution-leases.mjs +299 -0
  293. package/src/runtime/guided-discovery.mjs +350 -0
  294. package/src/runtime/guided-intents.mjs +517 -0
  295. package/src/runtime/impact-analysis.mjs +535 -0
  296. package/src/runtime/intents.mjs +222 -0
  297. package/src/runtime/knowledge.mjs +86 -0
  298. package/src/runtime/lifecycle-hooks.mjs +1239 -0
  299. package/src/runtime/mcp-config.mjs +110 -0
  300. package/src/runtime/mcp-server.mjs +1885 -0
  301. package/src/runtime/palace.mjs +362 -0
  302. package/src/runtime/paths.mjs +58 -0
  303. package/src/runtime/persona-engagement.mjs +255 -0
  304. package/src/runtime/phase-contributions.mjs +594 -0
  305. package/src/runtime/policy-workspace.mjs +170 -0
  306. package/src/runtime/prototype-iterations.mjs +235 -0
  307. package/src/runtime/provider-adapters.mjs +163 -0
  308. package/src/runtime/repository-index.mjs +838 -0
  309. package/src/runtime/runs.mjs +185 -0
  310. package/src/runtime/security-validation.mjs +1230 -0
  311. package/src/runtime/starter-materialisation.mjs +1155 -0
  312. package/src/runtime/team-hub-client.mjs +479 -0
  313. package/src/runtime/team-hub-database.mjs +288 -0
  314. package/src/runtime/team-hub-server.mjs +191 -0
  315. package/src/runtime/team-hub.mjs +110 -0
  316. package/src/runtime/tree-sitter-index.mjs +390 -0
  317. package/src/runtime/version.mjs +1 -0
  318. package/src/runtime/work.mjs +633 -0
  319. package/src/salesforce-source-map.mjs +212 -0
  320. package/src/security-validation-config.mjs +224 -0
  321. package/src/solution-readiness.mjs +620 -0
  322. package/src/starter-materialisation-contract.mjs +407 -0
  323. package/src/task-graph.mjs +544 -0
  324. package/src/team-hub-resources.mjs +239 -0
  325. package/src/team-hub.mjs +242 -0
  326. package/src/test-scenarios.mjs +622 -0
  327. package/src/validation-config.mjs +289 -0
  328. package/templates/SPECS/1.Scope/personas/registry.yaml +12 -0
  329. package/templates/SPECS/5.Strategy/patterns/context-packet.md +119 -0
  330. package/templates/SPECS/6.Build/_tracker-template.md +16 -0
  331. package/templates/SPECS/pipeline.yaml +62 -0
  332. package/templates/discovery-answers.yaml +86 -0
  333. package/templates/intent-body.md +21 -0
  334. package/tests/fixtures/context-benchmarks.json +9 -0
@@ -0,0 +1,789 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>EWAI Pipeline</title>
7
+ <link rel="icon" href="/favicon.ico" sizes="any">
8
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png">
9
+ <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png">
10
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
11
+ <link rel="stylesheet" href="/styles.css">
12
+ </head>
13
+ <body>
14
+ <main id="app" class="app-shell">
15
+ <button id="sidebarBackdrop" class="sidebar-backdrop" type="button" tabindex="-1" aria-label="Close navigation" hidden></button>
16
+ <aside id="dashboardSidebar" class="dashboard-sidebar" aria-label="Project navigation">
17
+ <button id="sidebarClose" class="quiet-button sidebar-close" type="button" aria-label="Close navigation">×</button>
18
+ <div class="sidebar-brand"><img class="brand-mark" src="/assets/backstory-icon.png" alt=""><div><strong>Engineering With AI</strong><small>Your project companion</small></div></div>
19
+ <nav class="view-switcher" aria-label="Dashboard view">
20
+ <button type="button" class="active" data-view="board" title="Board"><span class="sidebar-icon" aria-hidden="true">▦</span><span class="sidebar-label">Board</span></button>
21
+ <button type="button" data-view="companion" title="Companion"><span class="sidebar-icon" aria-hidden="true">◇</span><span class="sidebar-label">Companion</span></button>
22
+ <button type="button" data-view="live" title="Live work"><span class="live-dot sidebar-icon" aria-hidden="true"></span><span class="sidebar-label">Live work</span><span id="liveCount" class="nav-count">0</span></button>
23
+ <button type="button" data-view="knowledge" title="Mind Palace"><span class="sidebar-icon" aria-hidden="true">▤</span><span class="sidebar-label">Mind Palace</span></button>
24
+ <p id="optionalViewHeading" class="sidebar-group-label" hidden>Additional views</p>
25
+ <div id="optionalViewLinks"></div>
26
+ </nav>
27
+ <div class="sidebar-premium"><a id="premiumLearn" href="https://www.conversationalcoding.dev/personas/" target="_blank" rel="noopener noreferrer" hidden>Premium personas ↗<span class="sr-only"> (opens in a new tab)</span></a><button id="premiumSetup" type="button" class="quiet-button" hidden>Set up premium personas</button></div>
28
+ <div class="sidebar-bottom"><button id="configurationNav" type="button" data-view="configuration" title="Configuration" disabled><span class="sidebar-icon" aria-hidden="true">⚙</span><span class="sidebar-label">Configuration</span></button><button id="sidebarCollapse" type="button" title="Collapse sidebar" aria-label="Collapse sidebar" aria-controls="dashboardSidebar" aria-expanded="true"><span class="sidebar-icon" aria-hidden="true">«</span><span class="sidebar-label">Collapse sidebar</span></button></div>
29
+ </aside>
30
+ <header class="app-bar">
31
+ <button id="sidebarOpen" class="quiet-button sidebar-open" type="button" aria-label="Open navigation" aria-controls="dashboardSidebar" aria-expanded="false">☰</button>
32
+ <div class="brand-block">
33
+ <img class="brand-mark" src="/assets/backstory-icon.png" alt="Engineering With AI">
34
+ <div>
35
+ <h1 id="projectName">EWAI Pipeline</h1>
36
+ <p><span id="runtimeStatus">Connecting to the local runtime…</span><span id="runtimeWarning" class="runtime-warning" hidden></span></p>
37
+ </div>
38
+ </div>
39
+ <div class="app-actions">
40
+ <button id="kpiToggle" type="button" class="icon-button" aria-label="Show pipeline KPIs" aria-controls="summary" aria-expanded="false" title="Pipeline KPIs">
41
+ <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 19V9m6 10V5m6 14v-7m4 7H2"/></svg>
42
+ </button>
43
+ <label class="global-search">
44
+ <span id="searchLabel" class="sr-only">Search intents, domains, and phases</span>
45
+ <input id="search" type="search" placeholder="Search intents, domains, phases…" autocomplete="off">
46
+ </label>
47
+ <button id="refresh" type="button" class="quiet-button">Refresh</button>
48
+ </div>
49
+ </header>
50
+
51
+ <section id="summary" class="summary-strip" aria-label="Pipeline summary" hidden></section>
52
+ <section id="configurationView" class="dashboard-view dashboard-configuration" hidden>
53
+ <header class="configuration-heading"><h2>Make this dashboard work for you.</h2><p>Keep the everyday tools. Add the extra views when your project needs them.</p></header>
54
+ <form id="dashboardPreferencesForm"><div id="dashboardPreferenceGroups"></div><div class="configuration-save"><button id="saveDashboardPreferences" type="submit" class="primary-action" disabled>Save changes</button><button id="cancelDashboardPreferences" type="button" class="quiet-button">Cancel</button><output id="dashboardPreferenceStatus" aria-live="polite"></output></div></form>
55
+ <p class="configuration-assurance">These settings only change what’s shown. Your standards, required checks and approvals still apply. Turning on a view won’t run a scan, connect a team service or install anything.</p>
56
+ <section class="configuration-group"><header><h3>Premium personas</h3><p>Manage your licence and installed library.</p></header><div class="configuration-licence"><strong id="configurationLicenceStatus">Checking persona status…</strong><p id="configurationLicenceDetail"></p><button id="managePersonaLicence" type="button" class="quiet-button">Manage licence</button></div></section>
57
+ <section class="configuration-group"><header><h3>Setup and support</h3><p>Open these when you need them, without adding permanent navigation.</p></header><div class="configuration-shortcuts"><button type="button" class="quiet-button" data-view="guided">Project discovery</button><button type="button" class="quiet-button" data-view="intent-studio">Shape an intent</button><button type="button" class="quiet-button" data-view="error-reporting">Diagnostics and support</button></div></section>
58
+ </section>
59
+
60
+ <section id="boardView" class="dashboard-view board-layout">
61
+ <aside class="filter-rail">
62
+ <div class="rail-heading">
63
+ <div>
64
+ <span class="eyebrow">Organise</span>
65
+ <h2>Categories</h2>
66
+ </div>
67
+ <span id="visibleCount" class="count-badge">0</span>
68
+ </div>
69
+ <div class="scope-controls">
70
+ <button id="allGroups" type="button" class="scope-button active" data-group="">
71
+ <span>All intents</span><b id="allCount">0</b>
72
+ </button>
73
+ <button id="sprintOnly" type="button" class="scope-button" aria-pressed="false">
74
+ <span>Active sprint</span><b id="sprintCount">0</b>
75
+ </button>
76
+ <label class="done-toggle">
77
+ <input id="showDone" type="checkbox">
78
+ <span>Include completed</span>
79
+ </label>
80
+ </div>
81
+ <div id="groupList" class="group-list" aria-label="Intent categories"></div>
82
+ <a id="premiumCard" class="premium-card" href="https://www.conversationalcoding.dev/personas/" target="_blank" rel="noopener noreferrer" hidden>
83
+ <span class="premium-kicker"><i aria-hidden="true">✦</i> Premium personas</span>
84
+ <strong>Add more expert voices</strong>
85
+ <p>Bring richer specialist perspectives into intent discovery, review, and validation.</p>
86
+ <span class="premium-action">Get Premium Personas <b aria-hidden="true">↗</b></span>
87
+ </a>
88
+ </aside>
89
+
90
+ <section class="board-workspace">
91
+ <header class="workspace-heading">
92
+ <div>
93
+ <span class="eyebrow">Delivery flow</span>
94
+ <h2 id="boardTitle">All intents</h2>
95
+ </div>
96
+ <div class="board-mode" role="group" aria-label="Kanban grouping">
97
+ <button type="button" class="active" data-board-mode="stages">14 stages</button>
98
+ <button type="button" data-board-mode="cycle">Cycle view</button>
99
+ </div>
100
+ </header>
101
+ <div id="kanban" class="kanban" aria-live="polite"></div>
102
+ </section>
103
+ </section>
104
+
105
+ <section id="companionView" class="dashboard-view companion-view" hidden aria-labelledby="companionTitle">
106
+ <header class="companion-heading">
107
+ <div>
108
+ <span class="eyebrow">Context-aware guidance</span>
109
+ <h2 id="companionTitle">What deserves attention now</h2>
110
+ <p id="companionSubtitle">Ranked from current governed project evidence.</p>
111
+ </div>
112
+ <form id="companionFocusForm" class="companion-focus">
113
+ <label for="companionFocus"><span>Focus</span></label>
114
+ <div><input id="companionFocus" name="focus" maxlength="500" autocomplete="off" placeholder="Intent, decision or delivery concern"><button type="submit">Apply focus</button><button type="button" class="quiet-button" data-companion-clear>Clear</button></div>
115
+ </form>
116
+ </header>
117
+ <div id="companionAdvisoryNotice" class="companion-notice advisory" role="note"></div>
118
+ <div id="companionSecurityNotice" class="companion-notice security" role="note"></div>
119
+ <div id="companionContractError" class="companion-contract-error" role="alert" hidden></div>
120
+ <div id="companionStatus" class="companion-status" aria-live="polite" hidden></div>
121
+
122
+ <div class="companion-layout">
123
+ <section class="companion-runway-panel" aria-labelledby="companionRunwayTitle">
124
+ <header>
125
+ <div><span class="eyebrow">Observed state → accountable route</span><h3 id="companionRunwayTitle">Decision runway</h3></div>
126
+ <span id="companionHumanCount" class="count-badge">0</span>
127
+ </header>
128
+ <div id="companionRunway" class="companion-runway" aria-live="polite"></div>
129
+ <footer class="companion-legend"><span><b>Observed</b> governed state</span><span><b>Advisory</b> ranking and persona lenses</span><span><b>Decided</b> by named people and gates</span></footer>
130
+ </section>
131
+
132
+ <aside class="companion-context-panel" aria-label="Selected Companion context" aria-live="polite">
133
+ <section id="companionContext" class="companion-context"></section>
134
+ <section class="companion-persona-section" aria-labelledby="companionPersonasTitle">
135
+ <header><div><span class="eyebrow">Active now</span><h3 id="companionPersonasTitle">Actively engaged personas</h3></div><p>Personas advise. Accountable people decide.</p></header>
136
+ <div id="companionPersonas" class="companion-personas"></div>
137
+ </section>
138
+ <section class="companion-review" aria-labelledby="companionReviewTitle">
139
+ <header><div><span class="eyebrow">Standard host-model baseline</span><h3 id="companionReviewTitle">Questions for accountable people</h3></div></header>
140
+ <ul id="companionReviewQuestions"></ul>
141
+ <div id="companionBaseline" class="companion-baseline"></div>
142
+ </section>
143
+ </aside>
144
+ </div>
145
+ </section>
146
+
147
+ <section id="portfolioView" class="dashboard-view portfolio-view" hidden aria-labelledby="portfolioTitle">
148
+ <header class="portfolio-heading">
149
+ <div>
150
+ <span class="eyebrow">Cross-project evidence</span>
151
+ <h2 id="portfolioTitle">Project and Portfolio Orchestration</h2>
152
+ <p>Review hierarchy, declared dependencies, child-owned evidence and the perspectives examining it.</p>
153
+ </div>
154
+ <div id="portfolioSummary" class="portfolio-summary" aria-live="polite"></div>
155
+ </header>
156
+ <div id="portfolioAdvisoryNotice" class="portfolio-advisory-notice" role="note"></div>
157
+ <div id="portfolioSecurityNotice" class="portfolio-security-notice" role="note"></div>
158
+ <div id="portfolioContractError" class="portfolio-contract-error" role="alert" hidden></div>
159
+ <div id="portfolioStatus" class="portfolio-status" aria-live="polite" hidden></div>
160
+
161
+ <div class="portfolio-workspace">
162
+ <section class="portfolio-line-panel" aria-labelledby="portfolioLineTitle">
163
+ <header>
164
+ <div><span class="eyebrow">Portfolio → Programme → Project</span><h3 id="portfolioLineTitle">Programme line</h3></div>
165
+ <span id="portfolioAttentionCount" class="count-badge">0</span>
166
+ </header>
167
+ <div id="portfolioProgrammeLine" class="portfolio-programme-line" role="tree" aria-label="Portfolio hierarchy"></div>
168
+ <section class="portfolio-dependency-section" aria-labelledby="portfolioDependenciesTitle">
169
+ <header><div><span class="eyebrow">Direction and provenance</span><h3 id="portfolioDependenciesTitle">Dependencies</h3></div></header>
170
+ <div id="portfolioDependencies" class="portfolio-dependencies"></div>
171
+ </section>
172
+ </section>
173
+
174
+ <aside class="portfolio-context-panel" aria-label="Selected portfolio context">
175
+ <section id="portfolioContext" class="portfolio-context"></section>
176
+ <section class="portfolio-persona-section" aria-labelledby="portfolioPersonasTitle">
177
+ <header><div><span class="eyebrow">Current lenses</span><h3 id="portfolioPersonasTitle">Actively engaged personas</h3></div><p>Personas advise. Named people and child projects decide.</p></header>
178
+ <div id="portfolioPersonas" class="portfolio-personas"></div>
179
+ </section>
180
+ <section id="portfolioReview" class="portfolio-review" aria-labelledby="portfolioReviewTitle">
181
+ <header><div><span class="eyebrow">Host-model reasoning</span><h3 id="portfolioReviewTitle">Standard LLM baseline</h3></div></header>
182
+ <div id="portfolioReviewContent"></div>
183
+ </section>
184
+ </aside>
185
+ </div>
186
+ </section>
187
+
188
+ <section id="rolloutView" class="dashboard-view rollout-view" hidden aria-labelledby="rolloutTitle">
189
+ <header class="rollout-heading">
190
+ <div>
191
+ <span class="eyebrow">Consultancy network</span>
192
+ <h2 id="rolloutTitle">Governed rollout</h2>
193
+ <p>Review declared cohort baselines, project-owned evidence, accountable routes and the perspectives engaged now.</p>
194
+ </div>
195
+ <div id="rolloutSummary" class="rollout-summary" aria-live="polite"></div>
196
+ </header>
197
+ <div id="rolloutAdvisoryNotice" class="rollout-advisory-notice" role="note"></div>
198
+ <div id="rolloutSecurityNotice" class="rollout-security-notice" role="note"></div>
199
+ <div id="rolloutContractError" class="rollout-contract-error" role="alert" hidden></div>
200
+ <div id="rolloutStatus" class="rollout-status" aria-live="polite" hidden></div>
201
+
202
+ <div class="rollout-layout">
203
+ <section class="rollout-ledger-panel" aria-labelledby="rolloutLedgerTitle">
204
+ <header>
205
+ <div><span class="eyebrow">Declared policy → observed evidence</span><h3 id="rolloutLedgerTitle">Cohort ledger</h3></div>
206
+ <span id="rolloutAttentionCount" class="count-badge">0</span>
207
+ </header>
208
+ <div id="rolloutLedger" class="rollout-ledger"></div>
209
+ <footer class="rollout-legend">
210
+ <span><b>Declared</b> rollout policy</span>
211
+ <span><b>Observed</b> project metadata</span>
212
+ <span><b>Advisory</b> LLM/persona review</span>
213
+ </footer>
214
+ </section>
215
+
216
+ <aside class="rollout-context-panel" aria-label="Selected rollout context" aria-live="polite">
217
+ <section id="rolloutContext" class="rollout-context"></section>
218
+ <section class="rollout-persona-section" aria-labelledby="rolloutPersonasTitle">
219
+ <header><div><span class="eyebrow">Active now</span><h3 id="rolloutPersonasTitle">Actively engaged personas</h3></div><p>Personas advise. Named people and project governance decide.</p></header>
220
+ <div id="rolloutPersonas" class="rollout-personas"></div>
221
+ </section>
222
+ <section class="rollout-review" aria-labelledby="rolloutReviewTitle">
223
+ <header><div><span class="eyebrow">Host-model reasoning</span><h3 id="rolloutReviewTitle">Standard LLM baseline</h3></div></header>
224
+ <div id="rolloutReviewContent"></div>
225
+ </section>
226
+ </aside>
227
+ </div>
228
+ </section>
229
+
230
+ <section id="liveView" class="dashboard-view live-view" hidden>
231
+ <header class="live-heading">
232
+ <div>
233
+ <span class="eyebrow">Material activity only</span>
234
+ <h2>Work happening now</h2>
235
+ <p>Agent handoffs, decisions, reviews, questions, blockers, and completed milestones.</p>
236
+ </div>
237
+ <div class="poll-state"><span class="live-dot"></span><span id="pollStatus">Refreshing every 5 seconds</span></div>
238
+ </header>
239
+ <section id="liveSummary" class="live-summary"></section>
240
+ <section id="activeSessions" class="active-grid"></section>
241
+ </section>
242
+
243
+ <section id="knowledgeView" class="dashboard-view knowledge-view" hidden>
244
+ <aside class="knowledge-rail">
245
+ <header>
246
+ <div><span class="eyebrow">Project memory</span><h2>Mind Palace</h2></div>
247
+ <span id="knowledgeCount" class="count-badge">0</span>
248
+ </header>
249
+ <div class="knowledge-mode-switcher" role="tablist" aria-label="Mind Palace mode">
250
+ <button type="button" class="active" data-knowledge-mode="knowledge" role="tab" aria-selected="true">Knowledge</button>
251
+ <button type="button" data-knowledge-mode="meeting-evidence" role="tab" aria-selected="false">Meeting evidence</button>
252
+ <button type="button" data-knowledge-mode="knowledge-proposals" role="tab" aria-selected="false">Knowledge proposals</button>
253
+ </div>
254
+ <div id="palaceTidiness" class="palace-tidiness"><i aria-hidden="true"></i><span>Checking tidiness…</span></div>
255
+ <nav id="knowledgeTree" class="knowledge-tree" aria-label="SPECS folders and documents"></nav>
256
+ <nav id="meetingEvidenceSources" class="meeting-evidence-sources" aria-label="Registered meeting sources" hidden></nav>
257
+ <nav id="knowledgeProposalSources" class="knowledge-proposal-sources" aria-label="Eligible knowledge proposal sources and bundles" hidden></nav>
258
+ </aside>
259
+ <article id="knowledgeWorkspace" class="knowledge-workspace">
260
+ <header class="knowledge-heading">
261
+ <div>
262
+ <span id="knowledgeEyebrow" class="eyebrow">EWAI Mind Palace</span>
263
+ <h2 id="knowledgeTitle">Choose a SPECS document</h2>
264
+ <p id="knowledgeMeta">Browse the durable project context used by people and AI.</p>
265
+ </div>
266
+ </header>
267
+ <section id="knowledgeContent" class="knowledge-content">
268
+ <div class="knowledge-empty"><strong>Your project Mind Palace.</strong><p>Select a SPECS document to read it here.</p></div>
269
+ </section>
270
+ </article>
271
+ <article id="meetingEvidenceWorkspace" class="meeting-evidence-workspace" hidden>
272
+ <header class="knowledge-heading meeting-evidence-heading">
273
+ <div><span class="eyebrow">Source → review → evidence</span><h2 id="meetingEvidenceTitle">Meeting evidence</h2><p id="meetingEvidenceMeta">Select a registered source to inspect its safe provenance record.</p></div>
274
+ <div id="meetingEvidenceActions" class="meeting-evidence-actions"></div>
275
+ </header>
276
+ <div class="meeting-evidence-layout">
277
+ <main class="meeting-evidence-ledger" aria-live="polite">
278
+ <div id="meetingEvidenceState"></div>
279
+ <section class="meeting-evidence-spine" aria-labelledby="meetingEvidenceCandidateTitle">
280
+ <header><span class="eyebrow">Provenance spine</span><h3 id="meetingEvidenceCandidateTitle">Reviewed candidates</h3></header>
281
+ <div id="meetingEvidenceCandidates"></div>
282
+ </section>
283
+ </main>
284
+ <aside class="meeting-evidence-context">
285
+ <section><span class="eyebrow">Source context</span><div id="meetingEvidenceContext"></div></section>
286
+ <section><span class="eyebrow">Active now</span><h3>Engaged personas</h3><div id="meetingEvidencePersonas"></div></section>
287
+ <p class="meeting-evidence-advisory">Persona perspectives are advisory. A named person owns review and promotion.</p>
288
+ <p id="meetingEvidenceNotice" class="meeting-evidence-notice">Security validation is evidence, not certification or proof that this system is secure. Tools can miss vulnerabilities and produce false positives. A qualified human must review the scope, findings, limitations and residual risk before release.</p>
289
+ </aside>
290
+ </div>
291
+ </article>
292
+ <article id="knowledgeProposalWorkspace" class="knowledge-proposal-workspace" hidden>
293
+ <header class="knowledge-heading knowledge-proposal-heading">
294
+ <div><span class="eyebrow">Evidence → proposal → reviewed knowledge</span><h2 id="knowledgeProposalTitle">Knowledge proposals</h2><p id="knowledgeProposalMeta">Choose eligible evidence or a recorded bundle.</p></div>
295
+ <div id="knowledgeProposalActions" class="knowledge-proposal-actions"></div>
296
+ </header>
297
+ <div class="knowledge-proposal-layout">
298
+ <main class="knowledge-proposal-ledger" aria-live="polite">
299
+ <div id="knowledgeProposalState"></div>
300
+ <section class="knowledge-proposal-spine" aria-labelledby="knowledgeProposalCardsTitle">
301
+ <header><span class="eyebrow">Provenance and destination</span><h3 id="knowledgeProposalCardsTitle">Proposal bundle</h3></header>
302
+ <div id="knowledgeProposalCards"></div>
303
+ </section>
304
+ </main>
305
+ <aside class="knowledge-proposal-context">
306
+ <section><span class="eyebrow">Source route</span><div id="knowledgeProposalContext"></div></section>
307
+ <section><span class="eyebrow">Active now</span><h3>Engaged personas</h3><div id="knowledgeProposalPersonas"></div></section>
308
+ <p class="knowledge-proposal-advisory">Personas and model output are advisory. A named reviewer disposes of every proposal, and a separately named approver decides materialisation.</p>
309
+ <p id="knowledgeProposalNotice" class="knowledge-proposal-notice">Security validation is evidence, not certification or proof that this system is secure. Tools can miss vulnerabilities and produce false positives. A qualified human must review the scope, findings, limitations and residual risk before release.</p>
310
+ </aside>
311
+ </div>
312
+ </article>
313
+ </section>
314
+
315
+ <section id="guidedView" class="dashboard-view guided-view" hidden>
316
+ <aside class="guided-rail">
317
+ <span class="eyebrow">Project discovery</span>
318
+ <h2>Set the project up together</h2>
319
+ <p>Work through the questions in any session. Nothing becomes project truth until someone reviews and approves it.</p>
320
+ <progress id="guidedProgressBar" class="guided-progress" max="100" value="0" aria-label="Discovery progress"></progress>
321
+ <nav id="guidedSections" class="guided-sections" aria-label="Discovery sections"></nav>
322
+ </aside>
323
+
324
+ <section class="guided-workspace" aria-labelledby="guidedTitle">
325
+ <header class="guided-heading">
326
+ <div><span id="guidedEyebrow" class="eyebrow">Guided Setup</span><h2 id="guidedTitle">Loading project discovery…</h2><p id="guidedSubtitle">Your answers remain a recoverable draft until explicit approval.</p></div>
327
+ <span id="guidedStepCount" class="guided-step-count"></span>
328
+ </header>
329
+ <div id="guidedContent" class="guided-content" aria-live="polite">
330
+ <div class="guided-empty"><strong>Preparing Discovery</strong><p>Loading the shared project questionnaire and relevant perspectives.</p></div>
331
+ </div>
332
+ <footer id="guidedActions" class="guided-actions" hidden>
333
+ <span id="guidedSaveState">Project-local draft</span>
334
+ <div><button type="button" class="secondary-action" data-guided-back>Back</button><button type="button" class="primary-action" data-guided-next>Save and continue</button></div>
335
+ </footer>
336
+ </section>
337
+
338
+ <aside id="guidedOutline" class="guided-outline">
339
+ <span class="eyebrow">Taking shape</span>
340
+ <h2>Your project so far</h2>
341
+ <p>This is a working summary, not approved project truth.</p>
342
+ <div id="guidedOutlineContent"></div>
343
+ </aside>
344
+ </section>
345
+
346
+ <section id="intentStudioView" class="dashboard-view intent-studio-view" hidden aria-labelledby="intentStudioTitle">
347
+ <aside class="intent-studio-spine">
348
+ <span class="eyebrow">Feature intent</span>
349
+ <h2>Build the evidence spine</h2>
350
+ <p>Shape one recoverable draft. Nothing becomes canonical intent truth until named approval.</p>
351
+ <progress id="intentStudioProgress" max="100" value="0" aria-label="Intent completion progress"></progress>
352
+ <nav id="intentStudioSections" aria-label="Intent sections"></nav>
353
+ </aside>
354
+
355
+ <main class="intent-studio-canvas">
356
+ <header>
357
+ <div><span id="intentStudioEyebrow" class="eyebrow">Intent Studio</span><h2 id="intentStudioTitle">Loading guided intent…</h2><p id="intentStudioSubtitle">Standard host-model questions provide a complete baseline.</p></div>
358
+ <span id="intentStudioRevision" class="intent-studio-revision">Project-local draft</span>
359
+ </header>
360
+ <div id="intentStudioNotice" class="intent-studio-notice" role="status" aria-live="polite" hidden></div>
361
+ <section id="intentStudioContent" class="intent-studio-content" aria-live="polite">
362
+ <div class="intent-studio-empty"><strong>Preparing Intent Studio</strong><p>Loading the portable intent contract and relevant installed personas.</p></div>
363
+ </section>
364
+ <footer id="intentStudioActions" hidden>
365
+ <div><button type="button" class="secondary-action" data-intent-discard>Discard draft</button><button type="button" class="secondary-action" data-intent-handoff>Copy AI review hand-off</button></div>
366
+ <div><button type="button" class="secondary-action" data-intent-back>Back</button><button type="button" class="primary-action" data-intent-next>Save and continue</button></div>
367
+ </footer>
368
+ </main>
369
+
370
+ <aside class="intent-studio-persona-rail" aria-live="polite">
371
+ <span class="eyebrow">Active now</span>
372
+ <h2>Engaged personas</h2>
373
+ <p>The ensemble is replaced as the section or material context changes.</p>
374
+ <div id="intentStudioPersonas"></div>
375
+ <section id="intentStudioBaseline" class="intent-studio-baseline"></section>
376
+ <p class="intent-studio-advisory">Persona and model perspectives are advisory hypotheses. Participant evidence and named human decisions remain authoritative.</p>
377
+ </aside>
378
+ </section>
379
+
380
+ <section id="phaseStudioView" class="dashboard-view phase-studio-view" hidden aria-labelledby="phaseStudioTitle">
381
+ <header class="phase-studio-heading">
382
+ <div>
383
+ <span class="eyebrow">Guided phase evidence</span>
384
+ <h2 id="phaseStudioTitle">Contributions</h2>
385
+ <p>Add business or technical knowledge to a delivery. EWAI records who provided it and keeps it separate from approvals.</p>
386
+ </div>
387
+ <label for="phaseStudioWorkItem"><span>Active delivery</span><select id="phaseStudioWorkItem" data-phase-work-item><option value="">Choose a delivery</option></select></label>
388
+ <div id="phaseStudioState" class="phase-studio-state" aria-live="polite">Choose an active delivery.</div>
389
+ </header>
390
+
391
+ <section id="phaseStudioContextBridge" class="phase-studio-context-bridge" aria-label="Owner context bridge">
392
+ <div role="group" aria-label="Contribution owner context">
393
+ <button type="button" data-phase-context="business" aria-pressed="true"><span>Business-facing owner</span><strong id="phaseStudioBusinessOwner">Not named</strong></button>
394
+ <span aria-hidden="true">→</span>
395
+ <button type="button" data-phase-context="technical" aria-pressed="false"><span>Technical owner</span><strong id="phaseStudioTechnicalOwner">Not named</strong></button>
396
+ <span aria-hidden="true">→</span>
397
+ <button type="button" data-phase-context="shared-review" aria-pressed="false"><span>Shared review</span><strong id="phaseStudioSharedOwner">Not named</strong></button>
398
+ </div>
399
+ <p>Context changes guidance and contribution capabilities, not identity, access or delivery authority. The revision and evidence thread stay shared.</p>
400
+ </section>
401
+
402
+ <div class="phase-studio-layout">
403
+ <aside class="phase-studio-spine">
404
+ <span class="eyebrow">Evidence spine</span>
405
+ <h3 id="phaseStudioPhase">Current phase</h3>
406
+ <p id="phaseStudioProfileSummary">The server supplies the contribution profile.</p>
407
+ <nav id="phaseStudioEvidenceSpine" aria-label="Phase evidence topics"></nav>
408
+ <section id="phaseStudioHandoffHistory" class="phase-studio-history"></section>
409
+ </aside>
410
+
411
+ <main class="phase-studio-canvas">
412
+ <div id="phaseStudioNotice" class="phase-studio-notice" role="status" aria-live="polite" hidden></div>
413
+ <div id="phaseStudioContent" class="phase-studio-content" aria-live="polite">
414
+ <div class="phase-studio-empty"><strong>Choose an active delivery</strong><p>EWAI will check its current state before enabling contributions.</p></div>
415
+ </div>
416
+ <footer class="phase-studio-actions">
417
+ <p>Contribution only · cannot complete a phase, approve Build or accept Manual QA.</p>
418
+ <div>
419
+ <button type="button" class="secondary-action" data-phase-discard disabled>Discard draft</button>
420
+ <button type="button" class="secondary-action" data-phase-handoff disabled>Prepare hand-off</button>
421
+ <button type="button" class="secondary-action" data-phase-review disabled>Request host review</button>
422
+ <button type="button" class="secondary-action" data-phase-save disabled>Save contribution</button>
423
+ <button type="button" class="primary-action" data-phase-confirm disabled>Confirm evidence</button>
424
+ </div>
425
+ </footer>
426
+ </main>
427
+
428
+ <aside class="phase-studio-persona-rail">
429
+ <span class="eyebrow">Active now</span>
430
+ <h3>Engaged personas</h3>
431
+ <p>Relevant project, core and optional installed perspectives are swapped as the phase, context and evidence change.</p>
432
+ <div id="phaseStudioPersonaChanges" class="sr-only" aria-live="polite"></div>
433
+ <div id="phaseStudioPersonas"></div>
434
+ <section id="phaseStudioPersonaBaseline" class="phase-studio-persona-baseline"></section>
435
+ <p class="phase-studio-advisory">Personas are advisory lenses. They are not owner evidence, validation, acceptance or approval.</p>
436
+ </aside>
437
+ </div>
438
+
439
+ <details id="prototypeReviewPanel" class="prototype-review-panel" hidden>
440
+ <summary>
441
+ <span><b>Persona-guided prototype review</b><small>Plan → render → assess → bounded iteration</small></span>
442
+ <em id="prototypeReviewStatus">Not prepared</em>
443
+ </summary>
444
+ <div id="prototypeReviewNotice" class="prototype-review-notice" role="status" aria-live="polite" hidden></div>
445
+ <header class="prototype-review-heading">
446
+ <div><span class="eyebrow">Delivery-specific design evidence</span><h3>Review plan and rendered design</h3><p>Relevant available personas are recomputed at each stage. Their findings remain advisory until explicitly assessed.</p></div>
447
+ <div class="prototype-review-stage" role="group" aria-label="Prototype review stage">
448
+ <button type="button" data-prototype-stage="plan" aria-pressed="true">Plan review</button>
449
+ <button type="button" data-prototype-stage="design" aria-pressed="false">Rendered design</button>
450
+ </div>
451
+ </header>
452
+ <section class="prototype-review-availability" aria-labelledby="prototypeAvailabilityTitle">
453
+ <div><span class="eyebrow">Available perspectives</span><h4 id="prototypeAvailabilityTitle">Persona library</h4></div>
454
+ <div id="prototypeReviewAvailability"></div>
455
+ </section>
456
+ <div class="prototype-review-layout">
457
+ <section aria-labelledby="prototypePersonasTitle">
458
+ <header><span class="eyebrow">Active for this stage</span><h4 id="prototypePersonasTitle">Actively engaged prototype reviewers</h4></header>
459
+ <div id="prototypeReviewPersonas" class="prototype-review-personas"></div>
460
+ </section>
461
+ <section aria-labelledby="prototypeFindingsTitle">
462
+ <header><span class="eyebrow">Finding → assessment</span><h4 id="prototypeFindingsTitle">Review ledger</h4></header>
463
+ <div id="prototypeReviewFindings" class="prototype-review-findings"></div>
464
+ </section>
465
+ </div>
466
+ <form id="prototypeReviewForm" class="prototype-review-form">
467
+ <label><span id="prototypeReviewPayloadLabel">Plan preparation JSON</span><textarea id="prototypeReviewPayload" rows="8" spellcheck="false" placeholder="Paste the bounded JSON payload prepared by the EWAI host skill."></textarea></label>
468
+ <footer><p>Personas advise. Human prototype selection, Manual QA, deployment and release remain separate gates.</p><div><button type="button" class="secondary-action" data-prototype-refresh>Refresh</button><button type="submit" class="primary-action">Prepare plan review</button></div></footer>
469
+ </form>
470
+ </details>
471
+ </section>
472
+
473
+ <section id="contextInspectorView" class="dashboard-view context-inspector-view" hidden aria-labelledby="contextInspectorTitle">
474
+ <header class="context-inspector-heading">
475
+ <div>
476
+ <h2 id="contextInspectorTitle">AI context diagnostics</h2>
477
+ <p>See which evidence and personas EWAI selects for a task, what fits in the AI's context, and what it couldn't include.</p>
478
+ </div>
479
+ <div id="contextInspectorSummary" class="context-inspector-summary" aria-live="polite"></div>
480
+ </header>
481
+
482
+ <form id="contextInspectorForm" class="context-inspector-form">
483
+ <label><span>Profile</span><select id="contextProfile" name="profile">
484
+ <option value="companion">Companion</option>
485
+ <option value="intent" selected>Intent</option>
486
+ <option value="plan">Plan</option>
487
+ <option value="build-task">Build task</option>
488
+ <option value="fresh-context-review">Fresh-context review</option>
489
+ <option value="phase-contribution-review">Phase contribution review</option>
490
+ </select></label>
491
+ <label><span>Intent slug</span><input id="contextSlug" name="slug" required pattern="[a-z0-9]+(?:-[a-z0-9]+)*" autocomplete="off" placeholder="governed-context-assembly"></label>
492
+ <label><span>Task ID <small>when required</small></span><input id="contextTask" name="taskId" autocomplete="off" placeholder="T-001"></label>
493
+ <label><span>Budget <small>estimated tokens</small></span><input id="contextBudget" name="budgetTokens" type="number" min="1" max="200000" step="1" value="4000"></label>
494
+ <label class="context-focus-field"><span>Focus <small>optional</small></span><input id="contextFocus" name="focus" maxlength="2000" autocomplete="off" placeholder="Performance, security, a decision or task concern"></label>
495
+ <label class="context-digest-field"><span>Previous digest <small>optional exact predecessor</small></span><input id="contextPreviousDigest" name="previousDigest" minlength="64" maxlength="64" autocomplete="off" placeholder="64-character SHA-256 digest"></label>
496
+ <button type="submit" class="primary-action">Prepare manifest</button>
497
+ </form>
498
+
499
+ <div id="contextInspectorStatus" class="context-inspector-status" aria-live="polite">Choose a profile and intent to inspect its bounded context.</div>
500
+ <div id="contextOverflowAlert" class="context-overflow-alert" role="alert" hidden></div>
501
+
502
+ <div class="context-inspector-layout">
503
+ <section class="context-inspector-panel context-runway-panel" aria-labelledby="contextBudgetTitle">
504
+ <header><div><span class="eyebrow">Mandatory first</span><h3 id="contextBudgetTitle">Budget runway</h3></div><p>Selected, reused, deferred and overflow evidence are visible without exposing source bodies.</p></header>
505
+ <div id="contextBudgetRunway" class="context-budget-runway" aria-live="polite"></div>
506
+ <div id="contextEvidenceLedger" class="context-evidence-ledger"></div>
507
+ </section>
508
+
509
+ <aside class="context-inspector-side">
510
+ <section class="context-inspector-panel" aria-labelledby="contextFidelityTitle">
511
+ <header><div><span class="eyebrow">Hard engineering gate</span><h3 id="contextFidelityTitle">Fidelity rail</h3></div></header>
512
+ <div id="contextFidelityRail" class="context-fidelity-rail" aria-live="polite"></div>
513
+ </section>
514
+ <section class="context-inspector-panel" aria-labelledby="contextPersonasTitle">
515
+ <header><div><span class="eyebrow">Swapped for this moment</span><h3 id="contextPersonasTitle">Actively engaged personas</h3></div><p>Project, local, premium and core personas are advisory lenses. They do not grant approval.</p></header>
516
+ <div id="contextActivePersonas" class="context-active-personas" aria-live="polite"></div>
517
+ </section>
518
+ <section class="context-inspector-panel context-authority" aria-labelledby="contextAuthorityTitle">
519
+ <header><div><span class="eyebrow">Authority boundary</span><h3 id="contextAuthorityTitle">No automated permission</h3></div></header>
520
+ <p>Context preparation cannot approve Build or Manual QA, accept risk, certify quality, deploy or release.</p>
521
+ </section>
522
+ </aside>
523
+ </div>
524
+ </section>
525
+
526
+ <section id="startersView" class="dashboard-view starters-view" hidden aria-labelledby="startersTitle">
527
+ <header class="starters-heading">
528
+ <div>
529
+ <span class="eyebrow">Governed project foundation</span>
530
+ <h2 id="startersTitle">Starter Packs</h2>
531
+ <p>Review one immutable summary, then add only missing content across the configured repositories.</p>
532
+ </div>
533
+ <div id="starterSummary" class="starter-summary" aria-live="polite"></div>
534
+ </header>
535
+ <div id="starterNotice" class="starter-notice" role="note"></div>
536
+ <div id="starterStatus" class="starter-status" aria-live="polite" hidden></div>
537
+ <section class="starter-section" aria-labelledby="starterPersonasTitle">
538
+ <header><div><span class="eyebrow">Current lenses</span><h3 id="starterPersonasTitle">Actively engaged personas</h3></div><p>Personas advise; the named approver decides.</p></header>
539
+ <div id="starterPersonas" class="starter-personas"></div>
540
+ </section>
541
+ <section class="starter-section" aria-labelledby="starterPrepareTitle">
542
+ <header><div><span class="eyebrow">Immutable preview</span><h3 id="starterPrepareTitle">Prepare a Starter Pack</h3></div><p>Adapters are trusted local packages registered with the CLI. The browser never receives their path or executable.</p></header>
543
+ <div id="starterPrepare" class="starter-prepare"></div>
544
+ </section>
545
+ <section class="starter-section" aria-labelledby="starterAttemptsTitle">
546
+ <header><div><span class="eyebrow">Approval and recovery</span><h3 id="starterAttemptsTitle">Materialisation attempts</h3></div><p>No existing destination is overwritten, merged or deleted.</p></header>
547
+ <div id="starterAttempts" class="starter-attempts"></div>
548
+ </section>
549
+ </section>
550
+
551
+ <section id="hooksView" class="dashboard-view hooks-view" hidden aria-labelledby="hooksTitle">
552
+ <header class="hooks-heading">
553
+ <div>
554
+ <span class="eyebrow">Project lifecycle handoff</span>
555
+ <h2 id="hooksTitle">Hooks</h2>
556
+ <p>EWAI records the milestone first. Handlers are notified afterwards.</p>
557
+ </div>
558
+ <div id="hooksSummary" class="hooks-summary" aria-live="polite"></div>
559
+ </header>
560
+ <div id="hooksNotice" class="hooks-notice" role="status" aria-live="polite" hidden></div>
561
+ <section class="hooks-register" aria-labelledby="handlersTitle">
562
+ <header><div><span class="eyebrow">Trusted local packages</span><h3 id="handlersTitle">Connected handlers</h3></div><p>Install and enable handlers with the CLI. The browser never accepts executable paths or credentials.</p></header>
563
+ <div id="hookHandlers" class="hook-handlers"></div>
564
+ </section>
565
+ <section class="hooks-ledger" aria-labelledby="ledgerTitle">
566
+ <header class="hooks-ledger-heading">
567
+ <div><span class="eyebrow">Milestone → Handler → Delivery</span><h3 id="ledgerTitle">Handoff ledger</h3></div>
568
+ <div class="hook-filters">
569
+ <label><span>Status</span><select id="hookStatusFilter"><option value="">All statuses</option><option value="queued">Queued</option><option value="retrying">Retrying</option><option value="succeeded">Delivered</option><option value="exhausted">Exhausted</option><option value="rejected">Rejected</option><option value="incompatible">Incompatible</option><option value="disabled">Disabled</option></select></label>
570
+ <label><span>Event</span><select id="hookEventFilter"><option value="">All events</option></select></label>
571
+ <label><span>Handler</span><select id="hookHandlerFilter"><option value="">All handlers</option></select></label>
572
+ </div>
573
+ </header>
574
+ <div id="hookLedger" class="hook-ledger-list" aria-live="polite"></div>
575
+ </section>
576
+ <aside id="hookDetail" class="hook-detail" aria-live="polite"></aside>
577
+ </section>
578
+
579
+ <section id="policiesView" class="dashboard-view policy-view" hidden aria-labelledby="policiesTitle">
580
+ <header class="policy-heading">
581
+ <div>
582
+ <span class="eyebrow">Optional design-time assurance</span>
583
+ <h2 id="policiesTitle">Organisation policy gates</h2>
584
+ <p>Test proposed designs against an approved Organisation Blueprint before Build.</p>
585
+ </div>
586
+ <div class="policy-view-toggle" role="group" aria-label="Policy workspace audience">
587
+ <button type="button" class="active" data-policy-mode="business" aria-pressed="true">Business</button>
588
+ <button type="button" data-policy-mode="technical" aria-pressed="false">Technical</button>
589
+ </div>
590
+ </header>
591
+ <div id="policyAuthorityNotice" class="policy-authority-notice" role="note"></div>
592
+ <form id="policyIntentForm" class="policy-intent-form">
593
+ <label for="policyIntent"><span>Intent</span><input id="policyIntent" name="intent" maxlength="240" autocomplete="off" placeholder="domain/intent-slug"></label>
594
+ <button type="submit">Inspect design gate</button>
595
+ </form>
596
+ <div id="policyError" class="policy-error" role="alert" hidden></div>
597
+ <div id="policyStatus" class="policy-status" role="status" aria-live="polite"></div>
598
+ <div id="policyWorkspace" class="policy-workspace" aria-live="polite"></div>
599
+ </section>
600
+
601
+ <section id="securityView" class="dashboard-view security-view" hidden aria-labelledby="securityTitle">
602
+ <header class="security-heading">
603
+ <div>
604
+ <span class="eyebrow">Project assurance evidence</span>
605
+ <h2 id="securityTitle">Security validation</h2>
606
+ <p>Capability coverage, provider evidence and accountable human decisions.</p>
607
+ </div>
608
+ <div id="securitySummary" class="security-summary" aria-live="polite"></div>
609
+ </header>
610
+ <div id="securityNotice" class="security-assurance-notice" role="note"></div>
611
+ <div id="securityContractError" class="security-contract-error" role="alert" hidden></div>
612
+ <div id="securityStatus" class="security-status" aria-live="polite"></div>
613
+ <section class="security-section" aria-labelledby="securityProvidersTitle">
614
+ <header><div><span class="eyebrow">External systems</span><h3 id="securityProvidersTitle">Security providers</h3></div><p>EWAI links and interoperates. It does not install, license or certify provider products.</p></header>
615
+ <div id="securityProviders" class="security-card-grid"></div>
616
+ </section>
617
+ <section class="security-section" aria-labelledby="securityPersonasTitle">
618
+ <header><div><span class="eyebrow">Current lenses</span><h3 id="securityPersonasTitle">Active perspectives</h3></div><p>Personas advise; accountable people decide.</p></header>
619
+ <div id="securityPersonas" class="security-personas"></div>
620
+ </section>
621
+ <section class="security-section" aria-labelledby="securityCoverageTitle">
622
+ <header><div><span class="eyebrow">Required evidence</span><h3 id="securityCoverageTitle">Capability coverage</h3></div></header>
623
+ <div id="securityCoverage" class="security-coverage"></div>
624
+ </section>
625
+ <section class="security-section" aria-labelledby="securityRunsTitle">
626
+ <header><div><span class="eyebrow">Execution evidence</span><h3 id="securityRunsTitle">Recent runs</h3></div><p>Runs remain bound to their recorded revision and policy.</p></header>
627
+ <div id="securityRuns" class="security-runs"></div>
628
+ </section>
629
+ <section class="security-section" aria-labelledby="securityFindingsTitle">
630
+ <header><div><span class="eyebrow">Accountable review</span><h3 id="securityFindingsTitle">Findings and decisions</h3></div></header>
631
+ <div id="securityFindings" class="security-findings"></div>
632
+ </section>
633
+ </section>
634
+
635
+ <section id="teamHubView" class="dashboard-view team-hub-view" hidden aria-labelledby="teamHubTitle">
636
+ <header class="team-hub-heading">
637
+ <div>
638
+ <span class="eyebrow">Optional team visibility</span>
639
+ <h2 id="teamHubTitle">Team Hub</h2>
640
+ <p>Keep delivery local while deliberately publishing a bounded, read-only project snapshot to a separately operated hub.</p>
641
+ </div>
642
+ <span id="teamHubMode" class="team-hub-mode">Single contributor</span>
643
+ </header>
644
+ <div id="teamHubStatus" class="team-hub-status" role="status" aria-live="polite" hidden></div>
645
+ <div id="teamHubDisclosure" class="team-hub-disclosure" role="note"></div>
646
+
647
+ <div class="team-hub-grid">
648
+ <section class="team-hub-panel" aria-labelledby="teamHubConnectionTitle">
649
+ <header><span class="eyebrow">Local configuration</span><h3 id="teamHubConnectionTitle">Connection</h3></header>
650
+ <div id="teamHubConnection"></div>
651
+ <form id="teamHubConnectForm" class="team-hub-connect-form">
652
+ <label><span>Hub endpoint</span><input name="endpoint" type="url" required placeholder="https://team-hub.example.org"></label>
653
+ <label><span>Project identifier</span><input name="projectId" pattern="[a-z0-9]+(?:[.-][a-z0-9]+)*" placeholder="claims-platform"></label>
654
+ <label><span>Token environment variable</span><input name="tokenEnv" required pattern="[A-Z][A-Z0-9_]{2,100}" value="EWAI_TEAM_HUB_TOKEN"></label>
655
+ <label class="team-hub-acknowledgement"><input name="disclosureAcknowledged" type="checkbox" required><span>I have reviewed the exact disclosure contract below.</span></label>
656
+ <button type="submit" class="primary-action">Connect this project</button>
657
+ </form>
658
+ <div class="team-hub-actions">
659
+ <button type="button" class="primary-action" data-team-hub-sync>Publish current snapshot</button>
660
+ <button type="button" class="danger-action" data-team-hub-disconnect>Disconnect</button>
661
+ </div>
662
+ </section>
663
+
664
+ <section class="team-hub-panel" aria-labelledby="teamHubEvidenceTitle">
665
+ <header><span class="eyebrow">Transport evidence</span><h3 id="teamHubEvidenceTitle">Latest local record</h3></header>
666
+ <div class="team-hub-evidence">
667
+ <article id="teamHubLastAttempt"><strong>No sync attempt recorded</strong><p>An attempt appears only after an explicit publish action.</p></article>
668
+ <article id="teamHubAcceptedReceipt"><strong>No accepted receipt recorded</strong><p>A receipt proves transport acceptance, not approval or delivery completion.</p></article>
669
+ </div>
670
+ </section>
671
+ </div>
672
+
673
+ <section id="teamHubResources" class="team-hub-contract team-hub-resources" aria-labelledby="teamHubResourcesTitle">
674
+ <header class="team-hub-resource-heading">
675
+ <div><span class="eyebrow">Governed resource registry</span><h3 id="teamHubResourcesTitle">Available releases</h3></div>
676
+ <button type="button" class="primary-action" data-team-hub-resources-refresh>Refresh resources</button>
677
+ </header>
678
+ <p class="team-hub-resource-boundary">Nothing is downloaded automatically. Install makes a release available locally; Blueprint application or design-system selection remains a separate decision.</p>
679
+ <div class="team-hub-release-chain" aria-label="Resource release chain"><strong>Published</strong><span>→</span><strong>Downloaded</strong><span>→</span><strong>Verified</strong><span>→</span><strong>Installed</strong><span>→</span><strong>Select/apply separately</strong></div>
680
+ <div class="team-hub-resource-grid">
681
+ <div id="teamHubResourceList" class="team-hub-resource-list"><p>No remote catalogue loaded.</p></div>
682
+ <div id="teamHubResourceDetail" class="team-hub-resource-detail"><p>Refresh resources, then choose an exact release.</p></div>
683
+ </div>
684
+ </section>
685
+
686
+ <section class="team-hub-contract" aria-labelledby="teamHubContractTitle">
687
+ <header><span class="eyebrow">Closed allow-list</span><h3 id="teamHubContractTitle">What leaves this project</h3></header>
688
+ <div id="teamHubContractFields"></div>
689
+ <p id="teamHubAuthority"></p>
690
+ </section>
691
+ </section>
692
+
693
+ <section id="errorReportingView" class="dashboard-view error-reporting-view" hidden aria-labelledby="errorReportingTitle">
694
+ <header class="error-reporting-heading">
695
+ <div>
696
+ <span class="eyebrow">Local diagnostic custody</span>
697
+ <h2 id="errorReportingTitle">Error Reporting</h2>
698
+ <p>No report leaves this device automatically. Review, finalise and deliberately choose every handoff.</p>
699
+ </div>
700
+ <button type="button" class="primary-action" data-error-report-create-toggle>Create report</button>
701
+ </header>
702
+ <div id="errorReportStatus" class="error-report-status" role="status" aria-live="polite" hidden></div>
703
+ <div class="error-report-local-notice" role="note">
704
+ <strong>Local by default</strong>
705
+ <span>Drafts and ZIP packages stay under the Git-ignored EWAI operational folder. Email preparation is not sending.</span>
706
+ <label><input id="errorReportAutomaticDrafts" type="checkbox"> <span>Automatic local drafts</span></label>
707
+ </div>
708
+ <form id="errorReportCreateForm" class="error-report-create-form" hidden>
709
+ <header><div><span class="eyebrow">Human description</span><h3>Create a local draft</h3></div><p>Only bounded diagnostic facts and the text below are stored.</p></header>
710
+ <div class="error-report-form-grid">
711
+ <label><span>Area</span><input name="capability" required pattern="[a-z0-9]+(?:-[a-z0-9]+)*" value="dashboard"></label>
712
+ <label><span>Public error code</span><input name="errorCode" required pattern="[A-Z][A-Z0-9-]{2,79}" value="EWAI-REPORT-MANUAL"></label>
713
+ <label><span>Command identity</span><input name="command" required value="ewai dashboard"></label>
714
+ <label class="wide"><span>Title</span><input name="title" required maxlength="500"></label>
715
+ <label class="wide"><span>Expected behaviour</span><textarea name="expected" maxlength="4000"></textarea></label>
716
+ <label class="wide"><span>Actual behaviour</span><textarea name="actual" maxlength="4000"></textarea></label>
717
+ <label class="wide"><span>Reproduction steps, one per line</span><textarea name="reproductionSteps" maxlength="8000"></textarea></label>
718
+ </div>
719
+ <footer><button type="submit" class="primary-action">Save local draft</button><button type="button" class="quiet-button" data-error-report-create-toggle>Cancel</button></footer>
720
+ </form>
721
+ <div class="error-reporting-layout">
722
+ <aside class="error-report-ledger" aria-labelledby="errorReportLedgerTitle">
723
+ <header><div><span class="eyebrow">Local reports</span><h3 id="errorReportLedgerTitle">Report ledger</h3></div><select id="errorReportFilter" aria-label="Filter reports by status"><option value="">All states</option><option value="draft">Drafts</option><option value="finalised">Finalised</option><option value="archived">Archived</option></select></header>
724
+ <div id="errorReportList"></div>
725
+ </aside>
726
+ <section id="errorReportViewer" class="error-report-viewer" aria-live="polite"></section>
727
+ </div>
728
+ </section>
729
+ </main>
730
+
731
+ <dialog id="intentDialog" class="intent-dialog" aria-labelledby="drawerTitle">
732
+ <div class="intent-drawer">
733
+ <header class="drawer-header">
734
+ <div>
735
+ <p id="drawerEyebrow" class="eyebrow"></p>
736
+ <h2 id="drawerTitle">Intent</h2>
737
+ <p id="drawerMeta"></p>
738
+ </div>
739
+ <button id="closeDrawer" type="button" class="close-button" aria-label="Close intent details">×</button>
740
+ </header>
741
+ <nav id="drawerTabs" class="drawer-tabs" aria-label="Intent details" role="tablist">
742
+ <button type="button" class="active" data-tab="overview" role="tab" aria-controls="drawerContent" aria-selected="true">Overview</button>
743
+ <button type="button" data-tab="personas" role="tab" aria-controls="drawerContent" aria-selected="false">Personas</button>
744
+ <button type="button" data-tab="impact" role="tab" aria-controls="drawerContent" aria-selected="false">Impact</button>
745
+ <button type="button" data-tab="test-scenarios" role="tab" aria-controls="drawerContent" aria-selected="false">Test scenarios</button>
746
+ <button type="button" data-tab="intent" role="tab" aria-controls="drawerContent" aria-selected="false">Intent</button>
747
+ <button type="button" data-tab="prototype" role="tab" aria-controls="drawerContent" aria-selected="false">Prototype</button>
748
+ <button type="button" data-tab="progress" role="tab" aria-controls="drawerContent" aria-selected="false">Progress</button>
749
+ <button type="button" data-tab="materials" role="tab" aria-controls="drawerContent" aria-selected="false">Materials</button>
750
+ <button type="button" data-tab="activity" role="tab" aria-controls="drawerContent" aria-selected="false">Activity</button>
751
+ </nav>
752
+ <section id="drawerContent" class="drawer-content" role="tabpanel" tabindex="-1"></section>
753
+ </div>
754
+ </dialog>
755
+
756
+ <dialog id="actionDialog" class="action-dialog" aria-labelledby="actionTitle">
757
+ <form id="actionForm" class="action-sheet">
758
+ <header>
759
+ <div>
760
+ <p id="actionEyebrow" class="eyebrow">Move this forward</p>
761
+ <h2 id="actionTitle">Continue with EWAI</h2>
762
+ <p id="actionSummary"></p>
763
+ </div>
764
+ <button id="closeAction" type="button" class="close-button" aria-label="Close action">×</button>
765
+ </header>
766
+ <section id="actionBody" class="action-body"></section>
767
+ <p id="actionError" class="action-error" role="alert" hidden></p>
768
+ <footer>
769
+ <button id="cancelAction" type="button" class="secondary-action">Not now</button>
770
+ <button id="confirmAction" type="submit" class="primary-action">Continue</button>
771
+ </footer>
772
+ </form>
773
+ </dialog>
774
+
775
+ <dialog id="premiumSetupDialog" class="action-dialog" aria-labelledby="premiumSetupTitle">
776
+ <form id="premiumSetupForm" class="action-sheet premium-setup-form">
777
+ <header><div><h2 id="premiumSetupTitle">Set up premium personas</h2><p>Enter the key from My Account or your team invitation. We'll verify your licence and install the pack now.</p></div><button id="closePremiumSetup" type="button" class="close-button" aria-label="Close persona setup">×</button></header>
778
+ <section class="action-body">
779
+ <label for="premiumLicenceKey">Persona licence key</label>
780
+ <input id="premiumLicenceKey" type="password" required maxlength="512" autocomplete="off" spellcheck="false" autocapitalize="off" aria-describedby="premiumKeyHelp">
781
+ <p id="premiumKeyHelp">Your key is stored in private EWAI config, not this project or browser storage. Your own personas won't be changed.</p>
782
+ <p id="premiumSetupStatus" role="status" aria-live="polite"></p>
783
+ </section>
784
+ <footer><button id="cancelPremiumSetup" type="button" class="secondary-action">Not now</button><button id="submitPremiumSetup" type="submit" class="primary-action">Verify and install personas</button></footer>
785
+ </form>
786
+ </dialog>
787
+ <script src="/app.js" type="module"></script>
788
+ </body>
789
+ </html>