@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,247 @@
1
+ # Turn reviewed evidence into project knowledge
2
+
3
+ A meeting or retrospective can reveal a missing requirement, a useful working practice or a risk nobody had recorded. Knowledge proposals helps you turn that learning into proposed project documents, check each one and add only the changes you've agreed to SPECS.
4
+
5
+ The original evidence stays linked to the proposal. Reviewing a proposal and adding its file are separate decisions, so you can check the destination and content before anything becomes part of the project's working knowledge.
6
+
7
+ In normal use, [ask EWAI to help](#ask-ewai-to-help). The later [terminal exercise](#prepare-and-record-proposals-from-the-terminal) is a complete scripting example, not a requirement to write JSON before discussing the evidence.
8
+
9
+
10
+ <!-- editorial: contents -->
11
+ ## On this page
12
+
13
+ - [What it produces](#what-it-produces)
14
+ - [Eligible evidence](#eligible-evidence)
15
+ - [How personas participate](#how-personas-participate)
16
+ - [Ask EWAI to help](#ask-ewai-to-help)
17
+ - [Prepare and record proposals from the terminal](#prepare-and-record-proposals-from-the-terminal)
18
+ - [Review every proposal](#review-every-proposal)
19
+ - [Approve adding the documents to SPECS](#approve-adding-the-documents-to-specs)
20
+ - [Recover an interrupted write](#recover-an-interrupted-write)
21
+ - [Ways to operate](#ways-to-operate)
22
+ - [Related guidance](#related-guidance)
23
+
24
+ ## What it produces
25
+
26
+ EWAI saves the proposed documents together under `SPECS/3.Evidence/knowledge-proposals/`. This is a **proposal bundle**, not an update to your working documentation. For each proposal you can see the source passage it refers to, the proposed file and location, why it's useful and what's still uncertain. A reviewer must decide on every proposal before an owner separately approves adding the agreed files to SPECS.
27
+
28
+ The supported document types cover project personas, systems, processes, data concepts, journeys, pending requirements, feature candidates, risks, policies, constraints, standards, decisions, patterns, anti-patterns, runbooks and SOPs. Each type has an allowed location. A proposal can't invent another destination or change delivery state.
29
+
30
+ ## Eligible evidence
31
+
32
+ Start with meeting evidence that's already been reviewed and promoted, or a retrospective saved in the project's SPECS. List the available sources below and use the returned source reference. A raw transcript, arbitrary folder or private review record isn't an eligible source; use [Meeting evidence](meeting-evidence-user-guide.md) first for a transcript. This workflow doesn't fetch material from an external connector.
33
+
34
+ ```bash
35
+ ewai knowledge sources --project . --json
36
+ ```
37
+
38
+ ## How personas participate
39
+
40
+ EWAI selects relevant personas for the source and the concern you're exploring. Your normal AI assistant and the project/core personas are enough to use the workflow. Installed premium or personal personas can add specialist perspectives; this operation never downloads them.
41
+
42
+ Every interface shows active persona name, tier, matched signals and engagement reason. A Product Owner may question whether a feature candidate reflects an actual outcome; a Knowledge Curator may challenge its destination; an Archaeologist may distinguish current evidence from historical interpretation; and a project persona may apply local language or constraints.
43
+
44
+ Personas remain advisory. They cannot turn inference into fact, supply absent stakeholder research, perform named review, approve materialisation, accept risk or authorise release.
45
+
46
+ ## Ask EWAI to help
47
+
48
+ In your EWAI conversation, ask: “Use `$ewai-knowledge-proposals` to review this retrospective and suggest what we should add to our project docs.” Identify the source from the list above. You'll review the proposed content and destinations before deciding whether to add any files. You don't need to author JSON for the conversational route.
49
+
50
+ To inspect a saved bundle, open **Mind Palace → Knowledge proposals**. The source document stays private; this view shows the proposed documents, their evidence references and any conflicts.
51
+
52
+ ## Prepare and record proposals from the terminal
53
+
54
+ The following is a complete, fictional example for a disposable, initialised project. In real work, use a genuine reviewed source returned by `knowledge sources`; don't add fictional evidence just to make a command run. These paths assume the default `SPECS` location. If yours differs, use its actual relative path in the source and destination.
55
+
56
+ Save this example as `SPECS/3.Evidence/retros/sprint-24.md`:
57
+
58
+ <!-- example: knowledge-retrospective -->
59
+ ```markdown
60
+ # Retrospective: Sprint 24
61
+
62
+ ## What we learned
63
+
64
+ The team couldn't follow the recovery notes during a failed import.
65
+
66
+ ## Agreed follow-up
67
+
68
+ Try recovery instructions with a colleague before the next release.
69
+ ```
70
+
71
+ From the project root, prepare the source:
72
+
73
+ ```bash
74
+ ewai knowledge prepare retrospective:sprint-24 --project . --json
75
+ ```
76
+
77
+ Preparation doesn't create proposals or change files. Its JSON result includes `source.ref`, `source.digest` and `source.anchors`: the source identity, a fingerprint of its current contents and IDs for passages you can cite. Check the passage behind an anchor before using it. The AI host receives the allowed source context and format; the browser doesn't receive the source text.
78
+
79
+ Create `proposal-bundle.json` in the project root with the following content. Replace `SOURCE_DIGEST_FROM_PREPARE` with `source.digest`, and both occurrences of `ANCHOR_ID_FROM_PREPARE` with the ID of the passage supporting the proposal. Preserve the outer `bundle` object: that's what the CLI reads.
80
+
81
+ <!-- example: knowledge-proposal-bundle -->
82
+ ```json
83
+ {
84
+ "bundle": {
85
+ "schema": "ewai.knowledge-proposal-bundle/v1",
86
+ "sourceRef": "retrospective:sprint-24",
87
+ "sourceDigest": "SOURCE_DIGEST_FROM_PREPARE",
88
+ "proposals": [
89
+ {
90
+ "id": "KNP-001",
91
+ "kind": "pattern",
92
+ "title": "Try recovery notes before release",
93
+ "destination": "SPECS/5.Strategy/patterns/try-recovery-notes.md",
94
+ "evidenceAnchors": ["ANCHOR_ID_FROM_PREPARE"],
95
+ "rationale": "The retrospective records difficulty following the recovery instructions.",
96
+ "uncertainty": "Confirm which changes need a recovery walkthrough.",
97
+ "relationships": [],
98
+ "proposedMarkdown": "# Try recovery notes before release\n\nAsk a colleague to try the recovery instructions before release.\n\n## Provenance\n\n- Source: retrospective:sprint-24\n- Anchor: ANCHOR_ID_FROM_PREPARE\n"
99
+ }
100
+ ]
101
+ },
102
+ "activePersonas": []
103
+ }
104
+ ```
105
+
106
+ This hand-written example has no persona contribution, so `activePersonas` is empty. When an AI host prepares the proposals, record the returned metadata for the personas actually used; don't invent contributors. Keep observation separate from interpretation in the proposal.
107
+
108
+ Record the file:
109
+
110
+ ```bash
111
+ ewai knowledge record retrospective:sprint-24 \
112
+ --input ./proposal-bundle.json \
113
+ --project . \
114
+ --json
115
+ ```
116
+
117
+ The response returns a `bundleId`. Copy that value for the review and approval commands below. A successful record saves the proposals for review; it doesn't create `try-recovery-notes.md`.
118
+
119
+ Input files must be inside the project; run these examples from its root so relative paths resolve correctly. EWAI doesn't store raw model output, discarded drafts, prompts or source bodies in the bundle. The input files you save yourself remain your responsibility—keep them free of private source text.
120
+
121
+ ## Review every proposal
122
+
123
+ Inspect each proposed kind, destination, anchors, rationale, uncertainty and destination state in **Mind Palace → Knowledge proposals**. The active personas remain visible alongside the bundle.
124
+
125
+ A named reviewer decides `accepted`, `rejected`, `amended` or `deferred` for every proposal. Rejected and deferred items need rationale. Amendments need replacement title, complete replacement Markdown and rationale.
126
+
127
+ For the single proposal above, save this as `proposal-review.json` **only if the reviewer accepts it**:
128
+
129
+ <!-- example: knowledge-review-accepted -->
130
+ ```json
131
+ {
132
+ "dispositions": [
133
+ {"proposalId": "KNP-001", "decision": "accepted"}
134
+ ]
135
+ }
136
+ ```
137
+
138
+ `dispositions` means the decisions you've made. Include exactly one entry for each proposal ID in the bundle. Use the actual reviewer's name or accountable role in the command, not the example role unless that's who made the decision.
139
+
140
+ ```bash
141
+ ewai knowledge review <bundle-id> \
142
+ --input ./proposal-review.json \
143
+ --reviewed-by "Product Owner" \
144
+ --project . \
145
+ --json
146
+ ```
147
+
148
+ The response confirms the review and its decision counts. It still hasn't added the proposed document to SPECS.
149
+
150
+ ### If the reviewer wants a change
151
+
152
+ Use this alternative `proposal-review.json` for the same one-proposal bundle. Replace the anchor placeholder with the same source anchor you checked earlier. An amendment replaces the whole proposed document, not a fragment; retain its `## Provenance` section and source reference.
153
+
154
+ <!-- example: knowledge-review-amended -->
155
+ ```json
156
+ {
157
+ "dispositions": [
158
+ {
159
+ "proposalId": "KNP-001",
160
+ "decision": "amended",
161
+ "rationale": "Limit this practice to changes that introduce or alter a recovery procedure.",
162
+ "replacementTitle": "Check changed recovery procedures",
163
+ "replacementMarkdown": "# Check changed recovery procedures\n\nWhen a change introduces or alters a recovery procedure, ask a colleague to follow it in a safe test environment before release.\n\n## Provenance\n\n- Source: retrospective:sprint-24\n- Anchor: ANCHOR_ID_FROM_PREPARE\n"
164
+ }
165
+ ]
166
+ }
167
+ ```
168
+
169
+ ### If the reviewer rejects or defers it
170
+
171
+ These are two alternative files for the same one-proposal bundle, not two decisions to submit together:
172
+
173
+ <!-- example: knowledge-review-rejected -->
174
+ ```json
175
+ {
176
+ "dispositions": [
177
+ {"proposalId": "KNP-001", "decision": "rejected", "rationale": "The existing release checklist already covers this practice."}
178
+ ]
179
+ }
180
+ ```
181
+
182
+ <!-- example: knowledge-review-deferred -->
183
+ ```json
184
+ {
185
+ "dispositions": [
186
+ {"proposalId": "KNP-001", "decision": "deferred", "rationale": "The release owner needs to confirm which changes require a walkthrough."}
187
+ ]
188
+ }
189
+ ```
190
+
191
+ Choose the correct decision before recording the review. A recorded review can't be replaced. EWAI allows one bundle per version of a source: changing only the proposal or review doesn't create another bundle and will be refused. A new bundle needs genuinely changed eligible evidence or a new eligible source. Don't edit evidence just to bypass this restriction. If the source hasn't changed, keep the existing record and ask the project owner how to handle the follow-up outside this workflow. Rejected and deferred proposals aren't added to working documentation.
192
+
193
+ If every proposal was rejected or deferred, stop here. There are no documents to add, and `materialise` will refuse the operation with “no accepted or amended records to materialise”.
194
+
195
+ ## Approve adding the documents to SPECS
196
+
197
+ Check status with `ewai knowledge status <bundle-id> --project . --json`. Review the accepted content and destination conflicts. When the owner separately approves adding the documents, run the command below. **Materialise** is the CLI's name for this step; recording the review wasn't permission to do it.
198
+
199
+ ```bash
200
+ ewai knowledge materialise <bundle-id> \
201
+ --project . \
202
+ --yes \
203
+ --approved-by "Product Owner" \
204
+ --json
205
+ ```
206
+
207
+ EWAI handles each accepted or amended proposal independently:
208
+
209
+ - absent destination: add it;
210
+ - byte-identical destination: report it as current;
211
+ - differing, linked or non-file destination: report a conflict and leave it unchanged.
212
+
213
+ There is no automatic overwrite, model merge or deletion. Materialisation also does not create a ready intent automatically. A feature candidate remains a candidate until someone uses the normal intent and delivery workflow.
214
+
215
+ ## Recover an interrupted write
216
+
217
+ If status reports `recovery-required`, inspect the bundle and ask an accountable person before running:
218
+
219
+ ```bash
220
+ ewai knowledge recover <bundle-id> --project . --yes --json
221
+ ```
222
+
223
+ Recovery removes a transaction-created file only when it is still a safe regular file and its bytes match the digest recorded at creation. It leaves edited files, symbolic links, hard-linked replacements and files with no original digest untouched. Older journals without digests therefore need manual review, not an automatic deletion.
224
+
225
+ If anything is preserved, you'll see **Recovery paused** with the affected paths and reasons. The journal stays in place; unchanged transaction files may already have been removed. Retrying doesn't force deletion.
226
+
227
+ Review and back up the listed files. If you choose to keep an edited document, move it to a safe location outside its proposed destination before retrying recovery. Once recovery finishes, restore your document; a later materialisation will report it as a conflict rather than overwrite it. Ask the project owner before moving shared work. Don't delete or rewrite the journal just to clear the warning.
228
+
229
+ If the final materialisation ledger already exists, recovery removes only the stale journal and leaves the completed documents in place.
230
+
231
+ ## Ways to operate
232
+
233
+ | Surface | Best use | Boundary |
234
+ | --- | --- | --- |
235
+ | CLI | Repeatable local operation and exact JSON | Project-relative inputs and the same human gates apply |
236
+ | EWAI skill | Persona-led analysis and schema-valid drafting | It cannot approve its own proposals |
237
+ | MCP | Typed AI-host preparation, record, review and materialisation | Server owns the project root; recovery is explicitly destructive |
238
+ | Mind Palace | Source route, proposals, conflicts, review and active personas | It never shows private source bodies or grants release authority |
239
+
240
+ Saving a reviewed proposal makes it project knowledge, not proof that its claims are correct. Review the source, intended meaning and applicability with the responsible people. Security concerns still need the separate [security validation workflow](security-validation-guide.md).
241
+
242
+ ## Related guidance
243
+
244
+ - [Meeting evidence user guide](meeting-evidence-user-guide.md)
245
+ - [Working with personas](working-with-personas.md)
246
+ - [Human approval and assurance](human-approval-and-assurance-guide.md)
247
+ - [Knowledge proposals implementer guide](knowledge-proposals-implementer-guide.md)
@@ -0,0 +1,29 @@
1
+ # Verify EWAI context preparation
2
+
3
+ This page is for engineers changing the harness's context selection or performance. Run source-checkout commands in the EWAI repository, not your application. For everyday inspection, see [context management](../context-management-and-token-efficiency.md).
4
+
5
+ ## Run the regression corpus
6
+
7
+ From the EWAI source checkout, run:
8
+
9
+ ```bash
10
+ npm run context:benchmark
11
+ ```
12
+
13
+ The packaged CLI also exposes the same corpus:
14
+
15
+ ```bash
16
+ ewai context benchmark --json
17
+ ```
18
+
19
+ The committed equal-input corpus contains exactly one fixture for each profile. The benchmark fails unless:
20
+
21
+ - all seven profiles are present and individually ready;
22
+ - every profile retains 100% mandatory recall;
23
+ - median estimated input-demand reduction is at least 40%;
24
+ - median local preparation is no more than 75 ms;
25
+ - aggregate peak RSS growth is no more than 32 MiB.
26
+
27
+ Run the normal syntax and full test suites as well. The benchmark controls a repeatable local regression surface; provider latency, model quality and production workload performance still need appropriate environment evidence.
28
+
29
+ Estimated reduction must never be achieved by giving one profile an easier corpus, omitting a profile, suppressing overflow, or weakening mandatory markers.
@@ -0,0 +1,58 @@
1
+ # Contributing to EWAI
2
+
3
+ This page is for engineers changing **the EWAI harness itself**. If you're using it in an application, start with [the installation guide](../operations/installation-updating-and-entitlements.md) instead.
4
+
5
+ ## Work from a source checkout
6
+
7
+ Use Node.js 22.5 or newer. In your EWAI source checkout, install the locked dependencies and inspect the CLI:
8
+
9
+ ```bash
10
+ npm ci
11
+ node bin/ewai --help
12
+ npm run check
13
+ ```
14
+
15
+ Read the repository instructions and inspect your branch and uncommitted changes before editing. Keep test projects disposable and separate from active customer work. Don't install local changes over a global release as an incidental verification step.
16
+
17
+ ## Development commands
18
+
19
+ ```bash
20
+ npm run build
21
+ npm run check
22
+ npm test
23
+ npm run lint
24
+ npm run typecheck
25
+ ```
26
+
27
+ `npm run build` validates the portable source. Tests cover project discovery, initialisation, non-overwrite behaviour, global and project skill installation, pack and persona discovery, persona-grounded intent creation, SQLite projection, dashboard lifecycle, HTTP serving, and MCP stdio integration.
28
+
29
+ ## Repository layout
30
+
31
+ ```text
32
+ bin/ EWAI CLI entry point
33
+ config/ Schemas and delivery configuration
34
+ packs/ Core, technology, stack, and persona packs
35
+ scripts/ Setup and deterministic build utilities
36
+ skills-src/ Portable agent skill sources
37
+ agents-src/ Host-specific specialist agent definitions
38
+ src/ CLI and runtime source
39
+ templates/ Project output templates
40
+ tests/ Automated tests
41
+ ```
42
+
43
+ The harness's own `SPECS/` workspace is local and excluded from Git. It isn't included in a source checkout or the npm package. Public guides live in `Docs/`; reusable project-output files live in `templates/`. EWAI still creates and uses SPECS when you initialise a project.
44
+
45
+
46
+ ## Verify the change
47
+
48
+ Follow [maintainer verification walkthroughs](verification-walkthroughs.md) for the relevant fixtures. A passing unit test, a successful package build and an observed user journey are different kinds of evidence. Record which you actually ran; don't infer a successful installation or human acceptance from a static check.
49
+
50
+ ## Write documentation for the reader
51
+
52
+ Public operating guides address people using EWAI, including engineers who haven't seen this repository before. Instructions to the host AI belong in `skills-src/` or an explicitly labelled integration reference, not in a user walkthrough.
53
+
54
+ For a guided task, explain the ordinary conversation or dashboard route before optional commands and schemas. Make clear what the reader supplies or chooses, what EWAI prepares, what they review or approve, and where the result is saved. Include meaningful failure and recovery guidance. Don't require users to perform host duties such as displaying persona metadata or presenting findings “to the owner”.
55
+
56
+ Keep tutorials, task guides, explanation and technical reference distinct. Preserve exact commands, capabilities, consent and approval boundaries in the appropriate place; don't simplify by removing them. Use natural wording and contractions where they fit, without marketing claims.
57
+
58
+ Before accepting a documentation change, read the whole changed guide as its intended user and check related pages for conflicting advice. Run `node --test tests/documentation-reader-journeys.test.mjs` for examples, navigation and known audience-regression checks. Those checks supplement editorial review; they can't prove that every sentence is clear or that a real user completed the workflow.
@@ -0,0 +1,72 @@
1
+ # Accept changes to EWAI evidence-depth behaviour
2
+
3
+ This is feature acceptance for **EWAI maintainers**, not a requirement for every application team running Archaeology. Use a disposable, privacy-safe fixture. The [operator checklist](../quality/reproducible-archaeology-depth-review-checklist.md) covers reviewing an ordinary investigation.
4
+
5
+ ## Demonstrate reproducibility
6
+
7
+ For formal Manual QA, use the same repository revision and owner declarations in
8
+ at least three clean sessions:
9
+
10
+ - [ ] Record the project revision, Source Map run, provider capability, installed persona tiers, and session condition.
11
+ - [ ] Confirm all seven dimensions and their material coverage are equivalent.
12
+ - [ ] Confirm stable gap IDs agree when their structured evidence is unchanged.
13
+ - [ ] Compare the reviewed runs.
14
+ - [ ] Confirm changes are explained in causal order: inputs, evidence, personas, depth, coverage, gaps, then grouping.
15
+ - [ ] Treat wording and ordering differences as non-material when structured evidence agrees.
16
+ - [ ] Treat a gap or coverage change without an upstream cause as unexplained variance and investigate it.
17
+ - [ ] When testing grouping, change only the grouping strategy and confirm gap identity remains stable.
18
+
19
+
20
+
21
+ ## Check the interface
22
+
23
+ At desktop width and 390 px:
24
+
25
+ - [ ] Open Guided Setup and expand **Depth and evidence** with the keyboard.
26
+ - [ ] Reach every selector, reviewer field, grouping field, and comparison control in a logical order.
27
+ - [ ] Confirm keyboard focus is visible and status does not depend on colour alone.
28
+ - [ ] Confirm dimension coverage, recommendation, selection, and active personas remain readable without horizontal page scrolling.
29
+ - [ ] Confirm the fallback Design System is labelled as not organisation-approved when no approved pack applies.
30
+ - [ ] Confirm advisory and authority notices remain visible.
31
+ - [ ] Ask an owner to explain why each deep dimension is deep and why each active persona is present.
32
+
33
+ ## Stop conditions
34
+
35
+ Do not approve Manual QA while any of these conditions remains:
36
+
37
+ - stale or missing Source Map evidence;
38
+ - unexplained comparison variance;
39
+ - an unassigned stable gap;
40
+ - a depth reduction without accountable rationale;
41
+ - a hidden analysis failure, exclusion, contradiction, or unknown surface;
42
+ - a persona presented as stakeholder confirmation or approval;
43
+ - materially weaker engineering coverage than the known-good route;
44
+ - inaccessible or unusable controls in a required viewport;
45
+ - unresolved owner concern about missing or disproportionate content.
46
+
47
+ ## Evidence to retain
48
+
49
+ - named participants and roles;
50
+ - date, project revision, and safe Source Map run ID;
51
+ - safe reviewed-run IDs and comparison outcome;
52
+ - selected depths and reduction rationale;
53
+ - persona identities, tiers, and engagement reasons;
54
+ - content-quality ratings and owner comments;
55
+ - viewport, keyboard, and accessibility observations;
56
+ - screenshots that contain no sensitive information;
57
+ - defects, corrective action, and retest evidence;
58
+ - final pass or fail decision made through the canonical Manual QA operation.
59
+
60
+ Do not describe this evidence as security certification, policy compliance,
61
+ production readiness, deployment approval, or release acceptance.
62
+
63
+ ## Related guidance
64
+
65
+ - [Reproducible Archaeology and Discovery Depth](../reproducible-archaeology-and-discovery-depth.md)
66
+ - [Worked example](../examples/reproducible-archaeology-depth-example.md)
67
+ - [Repository Source Map](../repository-source-map-guide.md)
68
+ - [Guided Discovery facilitator guide](../guided-discovery-facilitator-guide.md)
69
+ - [Manual QA and acceptance](../quality/manual-qa-and-acceptance.md)
70
+
71
+
72
+ Keep feature acceptance and a project's investigation review separately labelled. A successful fixture run doesn't establish the quality of every real investigation.
@@ -0,0 +1,104 @@
1
+ # Verify changes to EWAI
2
+
3
+ These checks are for engineers maintaining the EWAI harness. They aren't extra setup or acceptance tasks for someone using EWAI on their own project.
4
+
5
+ Run the test commands from an EWAI source checkout with its development dependencies installed. They aren't npm scripts to add to a consuming application's package.json. Use disposable projects and synthetic records for failure-injection tests; don't run them against someone's active work.
6
+
7
+ Automated checks and the manual walkthroughs below cover different things. Passing a suite doesn't mean a human has completed the walkthrough or approved a release.
8
+
9
+ ## Intent Studio
10
+
11
+ User guide: [Intent Studio](../guided-intent-workspace-guide.md).
12
+
13
+ Before accepting the feature for release, test it in the browser at desktop width and at 390 px:
14
+
15
+ 1. Create, save, leave, and resume a draft.
16
+ 2. Open the same draft in two tabs and confirm a stale save reports a revision conflict.
17
+ 3. Discard a draft and confirm no canonical intent was removed.
18
+ 4. Move through several sections and confirm the active persona names, tiers, matched signals and engagement reasons change appropriately.
19
+ 5. Confirm the Standard host-model baseline remains visible when premium personas are absent.
20
+ 6. Complete a new intent, inspect the exact destinations, and confirm unnamed or stale approval cannot materialise it.
21
+ 7. Reconcile an eligible draft intent and inspect the before and after comparison.
22
+ 8. Confirm an intent with active delivery is not offered for reconciliation.
23
+ 9. Copy the AI review hand-off and confirm no draft field or approval state changes.
24
+ 10. Confirm the approval copy clearly says it does not approve Build, Manual QA, certification, deployment, or release.
25
+
26
+ Record the observed evidence through the EWAI Manual QA gate. Automated tests and persona review do not complete that human gate.
27
+
28
+ ## Solution Readiness Review
29
+
30
+ User guide: [Solution Readiness Review](../solution-readiness-review-guide.md).
31
+
32
+ Use a disposable initialized project and a real delivery slug.
33
+
34
+ 1. List all five profiles and explain why their requirements differ.
35
+ 2. Prepare `internal-only`; open at least three citations and compare their digests and limitations.
36
+ 3. Prepare `critical-regulated`; confirm every dimension and named specialist route is visible.
37
+ 4. Read **Active personas**. Confirm ID, tier and engagement reason are visible, premium is optional, and no persona is an approver.
38
+ 5. Record fixtures producing `ready-for-human-decision`, `conditional`, `blocked` and `insufficient-evidence`.
39
+ 6. Try to accept a missing required dimension. Confirm failure with no report written.
40
+ 7. Change one cited file, run status, and confirm staleness while the original report remains unchanged.
41
+ 8. Confirm every JSON, Markdown, text success and error path carries both notices.
42
+ 9. Confirm delivery phase, Build approval, Manual QA, security dispositions and release state did not change.
43
+
44
+ Record the reviewer, date, environment, assessment IDs and observations in the delivery's Manual QA evidence. Do not approve Manual QA until the human walkthrough is satisfactory.
45
+
46
+ ## Team Hub
47
+
48
+ User guide: [Team Hub](../team-hub-guide.md).
49
+
50
+ The repository test suite exercises Team Hub as both a library and an operated service. It includes:
51
+
52
+ - deterministic two-worker races against independent SQLite connections, proving exact publication becomes one acceptance plus one replay while changed bytes under the same identity produce one stable conflict;
53
+ - late snapshot arrival and process restart, proving every receipt is retained without allowing older evidence to replace the newer portfolio projection;
54
+ - real CLI subprocesses for managed service start, status, stop, contributor connection, publication and resource operations;
55
+ - loopback HTTP authentication, payload limits, invalid envelopes, disabled publishing, service outage and corrupt-storage failure behaviour;
56
+ - a real Chromium journey through the central and local dashboards at a 375-pixel viewport, including keyboard focus, session-only token storage, stale and empty states, exact installation confirmation and authority copy; and
57
+ - an isolated smoke test of the exact `npm pack` artefact, including its installed CLI, managed Team Hub lifecycle and completed-evidence preview.
58
+
59
+ Maintainers can run the whole suite and the focused transaction/coordination coverage gate with:
60
+
61
+ ```bash
62
+ npx playwright install chromium
63
+ npm test
64
+ npm run test:team-hub:coverage
65
+ ```
66
+
67
+ The focused coverage gate deliberately measures the two coordination-critical modules that own local installation state and the central SQLite ledger. The wider Team Hub service, CLI, package and browser surfaces remain mandatory behavioural tests but are not used to dilute or inflate that transactional percentage.
68
+
69
+ ## Team Hub Resource Registry
70
+
71
+ User guide: [Team Hub Resource Registry](../team-hub-resource-registry-guide.md).
72
+
73
+ The mandatory test suite proves exact replay and immutable-identity conflict using two
74
+ independent workers and SQLite connections. It injects failures immediately before the
75
+ installed-state and receipt writes, then verifies the prior active pack, state and
76
+ receipt history are byte-for-byte preserved. It also covers live/dead/malformed leases,
77
+ digest and identity disagreement, invalid JSON, request timeout, outside-owned pack
78
+ collisions, symlink refusal, offline cache replay and safe outage rendering.
79
+
80
+ The local dashboard test uses Chromium to inspect a release, complete the named human
81
+ confirmation and install the exact digest. This is deliberately a browser journey—not a
82
+ DOM string assertion—because form behaviour, keyboard submission and narrow-layout
83
+ defects only exist in the rendered application.
84
+
85
+ Run `npm test` for behavioural assurance and `npm run test:team-hub:coverage` for the
86
+ enforced transaction/coordination coverage thresholds. Neither command selects or
87
+ applies the installed resource, approves its organisational use, or replaces Manual QA.
88
+
89
+ ## Completed-phase evidence amendments
90
+
91
+ User guide: [Completed-phase evidence amendments](../completed-phase-evidence-amendments.md).
92
+
93
+ EWAI's automated suite invokes the public `ewai delivery evidence-amendment` command in real subprocesses rather than calling only its internal functions. It proves preview, missing-authority refusal, stale-digest refusal, exact ratification, deterministic replay and the final `no-changes` state.
94
+
95
+ A deterministic two-worker barrier also launches two CLI processes against the same preview at the same moment. A process-owned mutation lease must leave one complete amendment decision, no partial ledger or SQLite state, and only governed replay or bounded in-progress refusal for the competing process. A dead lease owner is recoverable, while a live owner is never displaced. The exact packaged npm CLI repeats the preview against a fixture built with the public delivery APIs, which guards against files being present in the repository but absent or unusable in the published artefact.
96
+
97
+ Run the relevant assurance directly with:
98
+
99
+ ```bash
100
+ node --test tests/evidence-amendment-cli.test.mjs
101
+ node --test tests/team-hub-package.test.mjs
102
+ ```
103
+
104
+ These tests establish deterministic software behaviour. A named human must still inspect the corrected evidence, reason and preview digest before ratification; the suite cannot supply that authority.
@@ -0,0 +1,132 @@
1
+ # Meeting evidence implementer guide
2
+
3
+ Meeting evidence is a project-local capability built around one domain contract and four adapters: CLI, MCP, loopback HTTP and the Mind Palace UI. The adapters do not implement their own review or promotion rules.
4
+
5
+ Meeting-platform connectors, recording, transcription, diarisation, OCR and provider-specific model calls aren't part of this implementation.
6
+
7
+ ## Architecture
8
+
9
+ `src/meeting-evidence.mjs` owns:
10
+
11
+ - safe registration and private source records;
12
+ - digest freshness and processing policy;
13
+ - contextual persona selection across project, core, installed premium and personal libraries;
14
+ - the host extraction contract;
15
+ - candidate, anchor and named-disposition validation;
16
+ - digest-bound review records;
17
+ - paired evidence persistence, recovery and idempotency;
18
+ - the safe public workspace projection;
19
+ - post-persistence publication of `ewai.meeting-evidence.promoted`.
20
+
21
+ The configured project root comes from EWAI. Browser and MCP callers cannot send an alternative root.
22
+
23
+ ## Storage model
24
+
25
+ Private, gitignored runtime records live below:
26
+
27
+ ```text
28
+ .ewai-pipeline/meeting-evidence/
29
+ ├── sources/<source-id>.json
30
+ ├── reviews/<source-id>.json
31
+ └── transactions/<source-id>.json
32
+ ```
33
+
34
+ The private source record is the only EWAI artefact containing the absolute file path. File mode is `0600`. The raw transcript remains at the user-supplied location and is never copied into the runtime database or SPECS.
35
+
36
+ Promoted evidence is public project truth:
37
+
38
+ ```text
39
+ <configured SPECS root>/3.Evidence/meeting-evidence/<source-id>/
40
+ ├── evidence.json
41
+ └── evidence.md
42
+ ```
43
+
44
+ Both files must exist. The JSON records source and review digests, named review and promotion, accepted/amended candidates, evidence digest and Markdown digest. Markdown includes the authority and security notices.
45
+
46
+ ## Domain operations
47
+
48
+ | Function | Mutates | Boundary |
49
+ | --- | --- | --- |
50
+ | `registerMeetingSource` | Private source record | Explicit confirmation, regular supported file, no symlink/traversal, limits and policy |
51
+ | `prepareMeetingExtraction` | Nothing | Current digest; denied/unknown processing returns manual-local route |
52
+ | `recordMeetingReview` | Private review record | Strict allowlist, anchors in range, every candidate disposed exactly once, named reviewer |
53
+ | `promoteMeetingEvidence` | Paired SPECS evidence and safe lifecycle event | Exact confirmation, named approver, current source/review digests, accepted/amended evidence only |
54
+ | `readMeetingEvidenceWorkspace` | Nothing | Safe source, candidate, disposition, receipt and active-persona projection |
55
+
56
+ An interrupted JSON-first write removes both targets and its staging journal. A later identical approved request is idempotent even when the retry time differs. A materially different source, review, approver or evidence set conflicts rather than overwriting the existing record.
57
+
58
+ ## CLI
59
+
60
+ ```bash
61
+ ewai meeting register FILE --yes [--label NAME] [--classification CLASS] [--cloud-processing POLICY] --project . --json
62
+ ewai meeting prepare SOURCE_ID [--focus TEXT] --project . --json
63
+ ewai meeting review SOURCE_ID --input FILE --reviewed-by NAME --project . --json
64
+ ewai meeting promote SOURCE_ID --yes --approved-by NAME --project . --json
65
+ ewai meeting status [SOURCE_ID] [--focus TEXT] --project . --json
66
+ ```
67
+
68
+ Review input must resolve inside the project. JSON errors include the mandatory assurance notice and must not echo raw source content or a private path.
69
+
70
+ ## MCP
71
+
72
+ The stdio server exposes:
73
+
74
+ - `ewai_meeting_status` as read-only;
75
+ - `ewai_meeting_register` as a confirmed non-destructive mutation;
76
+ - `ewai_meeting_prepare` as read-only;
77
+ - `ewai_meeting_review` as a non-destructive mutation;
78
+ - `ewai_meeting_promote` as a confirmed non-destructive mutation.
79
+
80
+ Schemas constrain classifications, processing policy, candidates, anchors and dispositions before the domain validates them again. No tool accepts a project-root argument.
81
+
82
+ ## HTTP and UI
83
+
84
+ The loopback server provides:
85
+
86
+ - `GET /api/meeting-evidence?source=<id>`;
87
+ - `POST /api/meeting-evidence/<id>/prepare`;
88
+ - `POST /api/meeting-evidence/<id>/promote`.
89
+
90
+ The server uses its configured root and rejects unknown query/body fields. Promotion revalidates confirmation and the named approver. Error responses include the exact mandatory assurance notice.
91
+
92
+ Meeting evidence is a secondary mode inside Mind Palace, not a primary-navigation item. The browser escapes all safe fields. It has no upload control, review authoring, raw source preview, connector, transcription control, downstream canonical authoring or release action. At 960px the ledger and context rail stack; at 600px candidates and receipts become a single reading column. Existing focus-visible and reduced-motion rules apply.
93
+
94
+ ## Persona contract
95
+
96
+ The standard host model and the installed project/core ensemble are sufficient. Premium and personal personas are optional enrichment only when already installed and contextually relevant. The active persona projection exposes name, tier, matched signals and engagement reason, never managed persona bodies.
97
+
98
+ Preparation selects a fresh ensemble for its source and focus. Implementers must replace, not accumulate, that set when context changes. No persona can establish a fact, complete named review, approve promotion or satisfy Manual QA.
99
+
100
+ ## Lifecycle integration
101
+
102
+ After both evidence files exist, EWAI safely publishes `ewai.meeting-evidence.promoted` with only:
103
+
104
+ - `sourceId`;
105
+ - `evidenceDigest`;
106
+ - `candidateCount`;
107
+ - `approvedAt`.
108
+
109
+ The event references the two project-relative evidence paths. It contains no transcript text, source path, reviewer prompt or raw model output. Handler failure cannot veto, delete or roll back canonical evidence; delivery can be inspected and retried through the generic lifecycle-hook system.
110
+
111
+ ## Extension boundary
112
+
113
+ External systems should subscribe through generic lifecycle hooks or call the published CLI/MCP contract. Do not add a vendor-specific connector to the domain module. If a future importer supplies transcripts, it must first materialise a supported local file and obtain the same explicit registration and processing decision.
114
+
115
+ Keep future candidate schema revisions versioned and fail closed on unknown fields. Add tests for redaction, drift, transaction interruption, retry behaviour, annotations, project-root isolation and responsive no-preview behaviour.
116
+
117
+ Registration and validation aren't evidence that a transcript's claims are true. Integrations must preserve source permissions, complete named review and separate promotion approval rather than treating generated candidates as accepted project knowledge.
118
+
119
+ ## Contract sources
120
+
121
+ - `src/meeting-evidence.mjs`
122
+ - `config/meeting-evidence-candidate.schema.json`
123
+ - `src/runtime/lifecycle-hooks.mjs`
124
+ - `src/runtime/mcp-server.mjs`
125
+ - `src/runtime/dashboard-server.mjs`
126
+ - `public/index.html`
127
+ - `public/app.js`
128
+ - `public/styles.css`
129
+ - `tests/meeting-evidence.test.mjs`
130
+ - `tests/meeting-evidence-cli.test.mjs`
131
+ - `tests/lifecycle-hook-emissions.test.mjs`
132
+ - `tests/runtime.test.mjs`