@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.
- package/Docs/README.md +50 -0
- package/Docs/adoption/consultancy-and-multi-project-rollout.md +135 -0
- package/Docs/adoption/non-technical-team-guide.md +126 -0
- package/Docs/archaeology-technology-and-hosting-discovery.md +212 -0
- package/Docs/blast-radius-and-impact-routing-guide.md +325 -0
- package/Docs/blueprints/internal-blueprint-catalogue.md +146 -0
- package/Docs/blueprints/maintaining-organisation-blueprints.md +154 -0
- package/Docs/blueprints/validation-and-troubleshooting.md +168 -0
- package/Docs/cli-reference.md +113 -0
- package/Docs/completed-phase-evidence-amendments.md +74 -0
- package/Docs/consultancy-network-rollout-control-plane-guide.md +202 -0
- package/Docs/context-aware-delivery-companion-guide.md +198 -0
- package/Docs/context-aware-delivery-companion-user-guide.md +184 -0
- package/Docs/context-management-and-token-efficiency.md +113 -0
- package/Docs/design-systems/design-system-implementation-guide.md +85 -0
- package/Docs/design-systems/design-system-pack-authoring-guide.md +95 -0
- package/Docs/design-systems/design-system-review-guide.md +51 -0
- package/Docs/design-systems/design-system-user-guide.md +96 -0
- package/Docs/design-systems/product-owner-guide.md +49 -0
- package/Docs/designing-organisation-blueprint-packs.md +384 -0
- package/Docs/developer-delivery-guide.md +224 -0
- package/Docs/error-reporting-guide.md +110 -0
- package/Docs/error-reporting-provider-guide.md +49 -0
- package/Docs/examples/error-report-adapter.md +70 -0
- package/Docs/examples/meeting-review.md +76 -0
- package/Docs/examples/minimal-design-system.md +67 -0
- package/Docs/examples/prototype-review-inputs.md +175 -0
- package/Docs/examples/reproducible-archaeology-depth-example.md +144 -0
- package/Docs/examples/test-scenario-input.md +68 -0
- package/Docs/examples/worked-examples.md +147 -0
- package/Docs/existing-project-onboarding-guide.md +214 -0
- package/Docs/explanation/core-concepts.md +26 -0
- package/Docs/explanation/delivery-workflow.md +48 -0
- package/Docs/governance/governance-team-guide.md +139 -0
- package/Docs/governed-starter-project-materialisation-guide.md +284 -0
- package/Docs/guide-catalogue.md +117 -0
- package/Docs/guided-discovery-facilitator-guide.md +172 -0
- package/Docs/guided-intent-workspace-guide.md +109 -0
- package/Docs/guided-phase-evidence-drafting-guide.md +119 -0
- package/Docs/human-approval-and-assurance-guide.md +146 -0
- package/Docs/knowledge-proposals-implementer-guide.md +106 -0
- package/Docs/knowledge-proposals-user-guide.md +247 -0
- package/Docs/maintainers/context-benchmarks.md +29 -0
- package/Docs/maintainers/contributing.md +58 -0
- package/Docs/maintainers/evidence-depth-acceptance.md +72 -0
- package/Docs/maintainers/verification-walkthroughs.md +104 -0
- package/Docs/meeting-evidence-implementer-guide.md +132 -0
- package/Docs/meeting-evidence-user-guide.md +200 -0
- package/Docs/operations/dashboard-and-delivery-state.md +153 -0
- package/Docs/operations/dashboard-configuration.md +87 -0
- package/Docs/operations/installation-updating-and-entitlements.md +135 -0
- package/Docs/operations/premium-personas-setup.md +76 -0
- package/Docs/operations/troubleshooting-and-recovery.md +205 -0
- package/Docs/organisation-rollout-guide.md +142 -0
- package/Docs/persona-entitlement-provider-guide.md +199 -0
- package/Docs/persona-guided-prototype-iteration.md +129 -0
- package/Docs/personas/organisation-specific-personas.md +103 -0
- package/Docs/personas/persona-authoring-cookbook.md +176 -0
- package/Docs/personas/persona-engagement-ui.md +133 -0
- package/Docs/personas/persona-governance.md +118 -0
- package/Docs/platform-export-analysis-guide.md +336 -0
- package/Docs/policies/governance-owner-guide.md +36 -0
- package/Docs/policies/implementation-guide.md +42 -0
- package/Docs/policies/organisation-policy-design-gates.md +58 -0
- package/Docs/policies/policy-pack-authoring-guide.md +108 -0
- package/Docs/policies/product-owner-guide.md +43 -0
- package/Docs/policies/technical-owner-guide.md +37 -0
- package/Docs/product-owner-guide.md +327 -0
- package/Docs/project-portfolio-orchestration-guide.md +199 -0
- package/Docs/quality/manual-qa-and-acceptance.md +162 -0
- package/Docs/quality/persona-driven-test-scenarios.md +172 -0
- package/Docs/quality/reproducible-archaeology-depth-review-checklist.md +89 -0
- package/Docs/reference/capabilities-and-project-layout.md +678 -0
- package/Docs/reference/cli-and-configuration.md +398 -0
- package/Docs/reference/contributions-api.md +23 -0
- package/Docs/reference/security-adapter-authoring.md +81 -0
- package/Docs/reference/starter-adapter-authoring.md +74 -0
- package/Docs/repository-source-map-guide.md +381 -0
- package/Docs/reproducible-archaeology-and-discovery-depth.md +292 -0
- package/Docs/screen-prototype-creation-guide.md +324 -0
- package/Docs/security-validation-guide.md +353 -0
- package/Docs/solution-readiness-review-guide.md +123 -0
- package/Docs/standards/project-standards-authoring.md +157 -0
- package/Docs/team-hub-guide.md +162 -0
- package/Docs/team-hub-resource-registry-guide.md +167 -0
- package/Docs/tutorials/first-delivery.md +83 -0
- package/Docs/tutorials/first-session.md +62 -0
- package/Docs/using-lifecycle-hooks.md +381 -0
- package/Docs/working-with-personas.md +274 -0
- package/LICENSE +165 -0
- package/README.md +96 -0
- package/agents-src/claude/ewai-security-reviewer.md +15 -0
- package/bin/ewai +5 -0
- package/config/archaeology-record-families.yaml +59 -0
- package/config/delivery-artifacts.yaml +121 -0
- package/config/delivery-stages.yaml +77 -0
- package/config/design-system.schema.json +46 -0
- package/config/error-reporting.schema.json +79 -0
- package/config/evidence-depth.schema.json +53 -0
- package/config/intent.schema.json +90 -0
- package/config/knowledge-proposals-proposal.schema.json +34 -0
- package/config/lifecycle-event.schema.json +68 -0
- package/config/lifecycle-handler.schema.json +45 -0
- package/config/lifecycle-hook-ack.schema.json +19 -0
- package/config/meeting-evidence-candidate.schema.json +102 -0
- package/config/organisation-policy.schema.json +137 -0
- package/config/pack.schema.json +250 -0
- package/config/persona-pack.schema.json +21 -0
- package/config/persona.schema.json +17 -0
- package/config/policy-evaluation.schema.json +77 -0
- package/config/policy-facts.schema.json +140 -0
- package/config/portfolio.schema.json +68 -0
- package/config/project.schema.json +313 -0
- package/config/prototype-iteration.schema.json +128 -0
- package/config/rollout.schema.json +87 -0
- package/config/security-adapter.schema.json +31 -0
- package/config/security-scan-request.schema.json +64 -0
- package/config/security-scan-response.schema.json +52 -0
- package/config/security-validation-policy.schema.json +74 -0
- package/config/starter-source-acknowledgement.schema.json +13 -0
- package/config/starter-source-adapter.schema.json +38 -0
- package/config/starter-source-request.schema.json +61 -0
- package/package.json +77 -0
- package/packs/core/pack.yaml +7 -0
- package/packs/design-systems/default/experience-promise.md +9 -0
- package/packs/design-systems/default/intentional-review.md +10 -0
- package/packs/design-systems/default/interaction-and-entry.md +9 -0
- package/packs/design-systems/default/meaningful-content-and-states.md +9 -0
- package/packs/design-systems/default/pack.yaml +44 -0
- package/packs/design-systems/default/principles.md +10 -0
- package/packs/personas/core/pack.yaml +7 -0
- package/packs/personas/core/personas/archaeologist.md +37 -0
- package/packs/personas/core/personas/end-user.md +17 -0
- package/packs/personas/core/personas/maintainer.md +17 -0
- package/packs/personas/core/personas/operator.md +17 -0
- package/packs/personas/core/personas/specs-knowledge-curator.md +35 -0
- package/packs/technologies/laravel/pack.yaml +30 -0
- package/packs/technologies/laravel-nuxt/pack.yaml +30 -0
- package/packs/technologies/nuxt/pack.yaml +30 -0
- package/packs/technologies/power-platform/pack.yaml +31 -0
- package/packs/technologies/salesforce/pack.yaml +25 -0
- package/public/app.js +4896 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/backstory-icon.png +0 -0
- package/public/dashboard-navigation.js +98 -0
- package/public/favicon-16.png +0 -0
- package/public/favicon-32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +789 -0
- package/public/styles.css +2693 -0
- package/public/team-hub/app.js +202 -0
- package/public/team-hub/index.html +79 -0
- package/public/team-hub/styles.css +90 -0
- package/scripts/publication-check.mjs +140 -0
- package/scripts/setup.mjs +21 -0
- package/skills-src/ewai-archaeology/SKILL.md +334 -0
- package/skills-src/ewai-archaeology/agents/openai.yaml +4 -0
- package/skills-src/ewai-archaeology/references/archaeology-contract.md +201 -0
- package/skills-src/ewai-archaeology/references/lifecycle-reconstruction.md +177 -0
- package/skills-src/ewai-archaeology/references/maximum-detail-reconstruction.md +97 -0
- package/skills-src/ewai-archaeology/references/model-routing.md +26 -0
- package/skills-src/ewai-architecture/SKILL.md +108 -0
- package/skills-src/ewai-architecture/agents/openai.yaml +4 -0
- package/skills-src/ewai-architecture/references/architecture-contract.md +176 -0
- package/skills-src/ewai-context/SKILL.md +68 -0
- package/skills-src/ewai-context/agents/openai.yaml +4 -0
- package/skills-src/ewai-context-import/SKILL.md +118 -0
- package/skills-src/ewai-context-import/agents/openai.yaml +4 -0
- package/skills-src/ewai-context-import/references/context-import-contract.md +106 -0
- package/skills-src/ewai-dashboard-configuration/SKILL.md +20 -0
- package/skills-src/ewai-deliver/SKILL.md +122 -0
- package/skills-src/ewai-deliver/references/delivery-evidence.md +92 -0
- package/skills-src/ewai-deliver/references/phase-routing.md +31 -0
- package/skills-src/ewai-design-system-apply/SKILL.md +27 -0
- package/skills-src/ewai-design-system-apply/agents/openai.yaml +4 -0
- package/skills-src/ewai-design-system-apply/references/application-contract.md +36 -0
- package/skills-src/ewai-design-system-author/SKILL.md +28 -0
- package/skills-src/ewai-design-system-author/agents/openai.yaml +4 -0
- package/skills-src/ewai-design-system-author/references/authoring-contract.md +38 -0
- package/skills-src/ewai-design-system-review/SKILL.md +26 -0
- package/skills-src/ewai-design-system-review/agents/openai.yaml +4 -0
- package/skills-src/ewai-design-system-review/references/review-contract.md +40 -0
- package/skills-src/ewai-error-reporting/SKILL.md +46 -0
- package/skills-src/ewai-error-reporting/agents/openai.yaml +4 -0
- package/skills-src/ewai-error-reporting/references/provider-contract.md +74 -0
- package/skills-src/ewai-evidence-depth/SKILL.md +72 -0
- package/skills-src/ewai-evidence-depth/agents/openai.yaml +4 -0
- package/skills-src/ewai-evidence-depth/references/evidence-depth-contract.md +127 -0
- package/skills-src/ewai-intent/SKILL.md +68 -0
- package/skills-src/ewai-intent/agents/openai.yaml +4 -0
- package/skills-src/ewai-intent/references/intent-contract.md +42 -0
- package/skills-src/ewai-knowledge-proposals/SKILL.md +105 -0
- package/skills-src/ewai-knowledge-proposals/agents/openai.yaml +4 -0
- package/skills-src/ewai-knowledge-proposals/references/proposal-contract.md +59 -0
- package/skills-src/ewai-meeting-evidence/SKILL.md +106 -0
- package/skills-src/ewai-meeting-evidence/agents/openai.yaml +4 -0
- package/skills-src/ewai-meeting-evidence/references/candidate-contract.md +64 -0
- package/skills-src/ewai-organisation-policy/SKILL.md +62 -0
- package/skills-src/ewai-organisation-policy/agents/openai.yaml +4 -0
- package/skills-src/ewai-organisation-policy/references/policy-contract.md +94 -0
- package/skills-src/ewai-palace-housekeeping/SKILL.md +55 -0
- package/skills-src/ewai-palace-housekeeping/agents/openai.yaml +4 -0
- package/skills-src/ewai-persona-entitlement/SKILL.md +60 -0
- package/skills-src/ewai-persona-entitlement/agents/openai.yaml +4 -0
- package/skills-src/ewai-phase-evidence/SKILL.md +79 -0
- package/skills-src/ewai-phase-evidence/agents/openai.yaml +4 -0
- package/skills-src/ewai-pipeline/SKILL.md +130 -0
- package/skills-src/ewai-pipeline/agents/openai.yaml +4 -0
- package/skills-src/ewai-pipeline/references/cli.md +86 -0
- package/skills-src/ewai-pipeline/references/specs-contract.md +16 -0
- package/skills-src/ewai-portfolio/SKILL.md +70 -0
- package/skills-src/ewai-portfolio/agents/openai.yaml +4 -0
- package/skills-src/ewai-portfolio/references/portfolio-contract.md +67 -0
- package/skills-src/ewai-project-discovery/SKILL.md +95 -0
- package/skills-src/ewai-project-discovery/agents/openai.yaml +4 -0
- package/skills-src/ewai-project-discovery/references/discovery-contract.md +34 -0
- package/skills-src/ewai-prototype-iteration/SKILL.md +30 -0
- package/skills-src/ewai-prototype-iteration/agents/openai.yaml +4 -0
- package/skills-src/ewai-prototype-iteration/references/review-contract.md +49 -0
- package/skills-src/ewai-retro/SKILL.md +48 -0
- package/skills-src/ewai-retro/agents/openai.yaml +4 -0
- package/skills-src/ewai-retro/references/asset-routing.md +14 -0
- package/skills-src/ewai-rollout/SKILL.md +74 -0
- package/skills-src/ewai-rollout/agents/openai.yaml +4 -0
- package/skills-src/ewai-rollout/references/rollout-contract.md +74 -0
- package/skills-src/ewai-shape-intents/SKILL.md +84 -0
- package/skills-src/ewai-shape-intents/agents/openai.yaml +4 -0
- package/skills-src/ewai-shape-intents/references/intent-mapping-contract.md +109 -0
- package/skills-src/ewai-solution-readiness/SKILL.md +55 -0
- package/skills-src/ewai-solution-readiness/agents/openai.yaml +4 -0
- package/skills-src/ewai-standards-check/SKILL.md +93 -0
- package/skills-src/ewai-standards-check/agents/openai.yaml +4 -0
- package/skills-src/ewai-standards-check/references/report-contract.md +116 -0
- package/skills-src/ewai-test-scenarios/SKILL.md +94 -0
- package/skills-src/ewai-test-scenarios/agents/openai.yaml +4 -0
- package/skills-src/ewai-test-scenarios/references/scenario-contract.md +88 -0
- package/src/afk-worker.mjs +16 -0
- package/src/archaeology.mjs +1333 -0
- package/src/checkin.mjs +261 -0
- package/src/cli.mjs +2427 -0
- package/src/companion-guidance.mjs +257 -0
- package/src/companion-opening.mjs +62 -0
- package/src/companion.mjs +256 -0
- package/src/context.mjs +210 -0
- package/src/dashboard-preferences.mjs +80 -0
- package/src/delivery-artifacts.mjs +204 -0
- package/src/delivery-documents.mjs +248 -0
- package/src/delivery-gates.mjs +317 -0
- package/src/delivery.mjs +1433 -0
- package/src/design-system-application.mjs +291 -0
- package/src/design-system-authoring.mjs +101 -0
- package/src/design-systems.mjs +466 -0
- package/src/discovery.mjs +1314 -0
- package/src/error-reporting.mjs +323 -0
- package/src/evidence-depth.mjs +543 -0
- package/src/execution-state.mjs +243 -0
- package/src/install.mjs +166 -0
- package/src/intent-dependencies.mjs +117 -0
- package/src/intent-maps.mjs +402 -0
- package/src/intents.mjs +747 -0
- package/src/knowledge-proposals.mjs +717 -0
- package/src/launcher.mjs +51 -0
- package/src/meeting-evidence.mjs +703 -0
- package/src/network-rollout.mjs +386 -0
- package/src/organisation-blueprints.mjs +438 -0
- package/src/organisation-policies.mjs +448 -0
- package/src/packs.mjs +44 -0
- package/src/paths.mjs +62 -0
- package/src/persona-entitlements.mjs +438 -0
- package/src/persona-licence-config.mjs +98 -0
- package/src/persona-website-provider.mjs +134 -0
- package/src/persona-zip.mjs +87 -0
- package/src/personas.mjs +159 -0
- package/src/platform-metadata-analysis.mjs +314 -0
- package/src/policy-design-gates.mjs +623 -0
- package/src/policy-gate-integration.mjs +318 -0
- package/src/portfolio.mjs +509 -0
- package/src/power-platform-source-map.mjs +190 -0
- package/src/project.mjs +449 -0
- package/src/prototype-iterations.mjs +730 -0
- package/src/repository-source-map.mjs +603 -0
- package/src/runtime/afk-conductor.mjs +973 -0
- package/src/runtime/context-assembly.mjs +457 -0
- package/src/runtime/context-benchmarks.mjs +115 -0
- package/src/runtime/dashboard-actions.mjs +109 -0
- package/src/runtime/dashboard-handoffs.mjs +149 -0
- package/src/runtime/dashboard-server.mjs +1272 -0
- package/src/runtime/dashboard.mjs +197 -0
- package/src/runtime/database.mjs +789 -0
- package/src/runtime/error-reporting.mjs +581 -0
- package/src/runtime/evidence-depth-workspace.mjs +412 -0
- package/src/runtime/execution-leases.mjs +299 -0
- package/src/runtime/guided-discovery.mjs +350 -0
- package/src/runtime/guided-intents.mjs +517 -0
- package/src/runtime/impact-analysis.mjs +535 -0
- package/src/runtime/intents.mjs +222 -0
- package/src/runtime/knowledge.mjs +86 -0
- package/src/runtime/lifecycle-hooks.mjs +1239 -0
- package/src/runtime/mcp-config.mjs +110 -0
- package/src/runtime/mcp-server.mjs +1885 -0
- package/src/runtime/palace.mjs +362 -0
- package/src/runtime/paths.mjs +58 -0
- package/src/runtime/persona-engagement.mjs +255 -0
- package/src/runtime/phase-contributions.mjs +594 -0
- package/src/runtime/policy-workspace.mjs +170 -0
- package/src/runtime/prototype-iterations.mjs +235 -0
- package/src/runtime/provider-adapters.mjs +163 -0
- package/src/runtime/repository-index.mjs +838 -0
- package/src/runtime/runs.mjs +185 -0
- package/src/runtime/security-validation.mjs +1230 -0
- package/src/runtime/starter-materialisation.mjs +1155 -0
- package/src/runtime/team-hub-client.mjs +479 -0
- package/src/runtime/team-hub-database.mjs +288 -0
- package/src/runtime/team-hub-server.mjs +191 -0
- package/src/runtime/team-hub.mjs +110 -0
- package/src/runtime/tree-sitter-index.mjs +390 -0
- package/src/runtime/version.mjs +1 -0
- package/src/runtime/work.mjs +633 -0
- package/src/salesforce-source-map.mjs +212 -0
- package/src/security-validation-config.mjs +224 -0
- package/src/solution-readiness.mjs +620 -0
- package/src/starter-materialisation-contract.mjs +407 -0
- package/src/task-graph.mjs +544 -0
- package/src/team-hub-resources.mjs +239 -0
- package/src/team-hub.mjs +242 -0
- package/src/test-scenarios.mjs +622 -0
- package/src/validation-config.mjs +289 -0
- package/templates/SPECS/1.Scope/personas/registry.yaml +12 -0
- package/templates/SPECS/5.Strategy/patterns/context-packet.md +119 -0
- package/templates/SPECS/6.Build/_tracker-template.md +16 -0
- package/templates/SPECS/pipeline.yaml +62 -0
- package/templates/discovery-answers.yaml +86 -0
- package/templates/intent-body.md +21 -0
- package/tests/fixtures/context-benchmarks.json +9 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Troubleshooting and recovery
|
|
2
|
+
|
|
3
|
+
Use this guide when EWAI cannot check in, find project state, open the dashboard, resolve a pack or persona, or move a delivery forward.
|
|
4
|
+
|
|
5
|
+
## Protect work before diagnosis
|
|
6
|
+
|
|
7
|
+
First establish:
|
|
8
|
+
|
|
9
|
+
- the exact project root and current branch;
|
|
10
|
+
- tracked, modified, staged, and untracked files;
|
|
11
|
+
- whether another agent or person is working in the same checkout;
|
|
12
|
+
- the configured SPECS root;
|
|
13
|
+
- whether the failing action could overwrite or delete material.
|
|
14
|
+
|
|
15
|
+
Do not auto-stash, reset, clean, or delete runtime directories as a first response. Unrelated changes belong to their owner.
|
|
16
|
+
|
|
17
|
+
## Collect a diagnostic baseline
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ewai checkin --project . --json
|
|
21
|
+
ewai doctor --project . --json
|
|
22
|
+
ewai intent audit-state --project . --json
|
|
23
|
+
ewai server status --project .
|
|
24
|
+
ewai index freshness --project . --json
|
|
25
|
+
ewai palace status --project . --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
These commands aren't all read-only. Check-in can start or reuse the dashboard and refresh derived state; `intent audit-state` can recreate missing intent sidecars. Persona licence checks can enforce confirmed matching team expiry. If you only need to inspect a running server or index, use those individual status commands first.
|
|
29
|
+
|
|
30
|
+
Record unknown checks and their reasons. A network failure, missing CLI, stale projection, and invalid durable state require different recoveries.
|
|
31
|
+
|
|
32
|
+
## Project cannot be found
|
|
33
|
+
|
|
34
|
+
Check for:
|
|
35
|
+
|
|
36
|
+
- `.ewai-pipeline/project.json` in the workspace or an ancestor;
|
|
37
|
+
- `SPECS/pipeline.yaml` at the configured location;
|
|
38
|
+
- a Git root if the project was expected to resolve from Git;
|
|
39
|
+
- a moved workspace with stale absolute runtime references;
|
|
40
|
+
- running the command from an unrelated directory.
|
|
41
|
+
|
|
42
|
+
Supply `--project /exact/path` when discovery is ambiguous. Do not create a second SPECS tree just because the expected one was not found.
|
|
43
|
+
|
|
44
|
+
## Check-in reports state drift
|
|
45
|
+
|
|
46
|
+
Four records must remain aligned: intent Markdown, adjacent intent JSON, delivery state, and the rebuildable SQLite projection.
|
|
47
|
+
|
|
48
|
+
Recovery:
|
|
49
|
+
|
|
50
|
+
1. stop delivery actions;
|
|
51
|
+
2. inspect `ewai intent audit-state --project . --json`;
|
|
52
|
+
3. compare durable files with Git history and recent approved actions;
|
|
53
|
+
4. preserve the most recent human-authored intent content;
|
|
54
|
+
5. use canonical intent or delivery operations to repair state;
|
|
55
|
+
6. rerun check-in and the audit;
|
|
56
|
+
7. resume only after consistency is restored.
|
|
57
|
+
|
|
58
|
+
Never edit SQLite directly. Never invent a completed gate or approval.
|
|
59
|
+
|
|
60
|
+
## Dashboard will not start
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
ewai server status --project .
|
|
64
|
+
ewai server stop --project .
|
|
65
|
+
ewai server start --project .
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use the current returned URL. If restart fails, inspect the reported process and log paths, port ownership, Node version, and filesystem permissions. Preserve logs needed for diagnosis before any cleanup.
|
|
69
|
+
|
|
70
|
+
## Repository index is stale or partial
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
ewai index freshness --project . --json
|
|
74
|
+
ewai index refresh --project . --json
|
|
75
|
+
ewai index status --project . --json
|
|
76
|
+
ewai index coverage --project . --json
|
|
77
|
+
ewai index profiles --project . --json
|
|
78
|
+
ewai index files --outcome analysis_failed --project . --json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Report `analysed`, `inventory_only`, `skipped_sensitive`, `skipped_oversized`, and `analysis_failed` separately, then review deep, shallow, and inventory depths. If freshness reports `profile-catalogue-changed`, inspect active packs and profiles before refreshing. Unsupported, malformed, sensitive, or oversized files remain visible without making the whole run unusable; limit source claims to the verified coverage. See the [Repository Source Map guide](../repository-source-map-guide.md).
|
|
82
|
+
|
|
83
|
+
## Delivery will not continue
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
ewai delivery status <intent-slug> --project . --json
|
|
87
|
+
ewai delivery continue <intent-slug> --project . --json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Common causes:
|
|
91
|
+
|
|
92
|
+
- **Completing Intent is blocked because the intent is still draft:** agree its outcome and acceptance criteria and make it ready through the intent workflow. A draft can begin delivery; it can't finish the Intent stage;
|
|
93
|
+
- a required canonical artefact is missing;
|
|
94
|
+
- gate evidence changed after completion;
|
|
95
|
+
- the task graph is invalid or task evidence incomplete;
|
|
96
|
+
- Build approval has not been recorded;
|
|
97
|
+
- a provider validation cycle is unfinished;
|
|
98
|
+
- the delivery is shelf-ready and requires resume/FitCheck;
|
|
99
|
+
- Manual QA is awaiting a person;
|
|
100
|
+
- durable state copies disagree.
|
|
101
|
+
|
|
102
|
+
These commands inspect progress; they don't ask the host to perform the next stage. Continue in the EWAI conversation once the reported blocker is resolved.
|
|
103
|
+
|
|
104
|
+
Compare [the two amendment operations](../completed-phase-evidence-amendments.md#which-amendment-operation) before changing completed evidence.
|
|
105
|
+
|
|
106
|
+
When a named human has approved legitimate amendments and the current phase is Build, use the guarded recovery rather than editing stored hashes:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
ewai delivery ratify-amendments <intent-slug> \
|
|
110
|
+
--project . \
|
|
111
|
+
--yes \
|
|
112
|
+
--approved-by "Owner" \
|
|
113
|
+
--scope "Exact amended evidence being ratified"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This operation validates all completed phase artefacts and ledgers, records their previous and replacement hashes, and does not grant Build approval. Follow the reported next action. Do not change `currentPhase`, gate status, hashes, or completion percentages by hand.
|
|
117
|
+
|
|
118
|
+
## Premium persona sync fails
|
|
119
|
+
|
|
120
|
+
Read the actual failure before retrying. Licence verification, archive download and local validation are different steps.
|
|
121
|
+
|
|
122
|
+
- **Key rejected:** copy it from My Account or the team invitation and retry the private setup form.
|
|
123
|
+
- **Key saved, download failed:** retry setup when the connection is available; the key alone doesn't make the pack ready.
|
|
124
|
+
- **Local files changed:** preserve those edits before deciding how to recover the managed library.
|
|
125
|
+
- **Different seat or provider:** confirm which subscription should own the installation; replacement requires explicit consent.
|
|
126
|
+
- **Archive rejected:** preserve the previous pack and report the validation error. Don't unpack it manually to bypass the check.
|
|
127
|
+
- **Interrupted operation or held lock:** check whether another installation is running before investigating its staging files. Don't delete a live lock.
|
|
128
|
+
|
|
129
|
+
Persona downloads come from the website, not Git. See [Set up and update premium personas](premium-personas-setup.md) for the full recovery path.
|
|
130
|
+
|
|
131
|
+
## A persona is missing or irrelevant
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
ewai persona path --scope project --project .
|
|
135
|
+
ewai persona list --project . --query <topic>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Check valid frontmatter, scope, ID, description, tags, capabilities, and project root. If the persona appears but is not engaged, its metadata may not match the section. Improve the complete owned persona; do not rely on automatic overlay composition.
|
|
139
|
+
|
|
140
|
+
## A Blueprint is rejected
|
|
141
|
+
|
|
142
|
+
Diagnose root discovery, strict manifest parsing, compatibility, dependencies, content paths, size limits, digest, preview revision, and destination conflicts in that order. Use [Blueprint validation and troubleshooting](../blueprints/validation-and-troubleshooting.md).
|
|
143
|
+
|
|
144
|
+
## A Governed Starter Pack cannot be prepared or applied
|
|
145
|
+
|
|
146
|
+
Start with the safe workspace:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
ewai starter status --project . --json
|
|
150
|
+
ewai starter adapters --project . --json
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Check, in order:
|
|
154
|
+
|
|
155
|
+
1. the Organisation Blueprint receipt is still accepted and has not drifted;
|
|
156
|
+
2. every logical target has one non-overlapping `starter_materialisation.targets` mapping;
|
|
157
|
+
3. every configured repository is its own Git working-tree root;
|
|
158
|
+
4. the registered adapter package, publisher, version, entrypoint, and package digest have not drifted;
|
|
159
|
+
5. the adapter supports the receipt's source class and writes every file beneath exactly one target source path;
|
|
160
|
+
6. the independently verified aggregate staged-tree digest matches the receipt;
|
|
161
|
+
7. the preview is unexpired and repository revisions are unchanged;
|
|
162
|
+
8. every destination remains `create` or `identical`, with no conflict or protected path.
|
|
163
|
+
|
|
164
|
+
Prepare a fresh preview after any legitimate change. Never edit the runtime SQLite rows, preview digest, journal, classification, or evidence by hand.
|
|
165
|
+
|
|
166
|
+
If application reports `recovery-required`, inspect the preserved paths and obtain human direction before changing them. Recovery is digest-sensitive:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
ewai starter recover <attempt-id> --project . --yes --json
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
EWAI removes only unchanged files it can prove it created and empty directories it journalled. A changed file is preserved. Do not delete it merely to clear the state. See [Governed Starter-Project Materialisation](../governed-starter-project-materialisation-guide.md).
|
|
173
|
+
|
|
174
|
+
## Recovery requires destructive action
|
|
175
|
+
|
|
176
|
+
Stop and obtain explicit authority when recovery would:
|
|
177
|
+
|
|
178
|
+
- delete or overwrite project knowledge;
|
|
179
|
+
- remove a managed cache or runtime database;
|
|
180
|
+
- discard Git changes;
|
|
181
|
+
- replace host configuration;
|
|
182
|
+
- force an update or rewrite history;
|
|
183
|
+
- affect another project or user.
|
|
184
|
+
|
|
185
|
+
Resolve exact targets with read-only checks and prefer recoverable operations. After any authorised material deletion, record what was removed and how it can be recovered.
|
|
186
|
+
|
|
187
|
+
## Diagnostic handoff template
|
|
188
|
+
|
|
189
|
+
Record:
|
|
190
|
+
|
|
191
|
+
- project root and configured SPECS root;
|
|
192
|
+
- branch and worktree state without secret content;
|
|
193
|
+
- EWAI version and installation source;
|
|
194
|
+
- exact command and error;
|
|
195
|
+
- check-in, doctor, integrity, dashboard, and index status;
|
|
196
|
+
- last known successful action;
|
|
197
|
+
- durable files involved;
|
|
198
|
+
- actions already attempted;
|
|
199
|
+
- the decision or authority now required.
|
|
200
|
+
|
|
201
|
+
## Related guides
|
|
202
|
+
|
|
203
|
+
- [Installation, updating, and entitlements](installation-updating-and-entitlements.md)
|
|
204
|
+
- [Dashboard and delivery state](dashboard-and-delivery-state.md)
|
|
205
|
+
- [Developer delivery guide](../developer-delivery-guide.md)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Organisation rollout guide
|
|
2
|
+
|
|
3
|
+
Use this guide to introduce EWAI across several teams while keeping organisational consistency, project autonomy, and human accountability in balance.
|
|
4
|
+
|
|
5
|
+
## Recommended practice
|
|
6
|
+
|
|
7
|
+
EWAI supports project-local configuration, shared Blueprints and personas, delivery checks, an optional [Team Hub](team-hub-guide.md) and [Governed Rollout views](consultancy-network-rollout-control-plane-guide.md). Your organisation operates and configures the shared services; installing EWAI doesn't connect a project to them automatically.
|
|
8
|
+
|
|
9
|
+
The staged adoption model below is recommended practice, not a mandatory rollout enforced by the software.
|
|
10
|
+
|
|
11
|
+
## Start with an operating agreement
|
|
12
|
+
|
|
13
|
+
Before selecting tools or packs, agree:
|
|
14
|
+
|
|
15
|
+
- the problems EWAI is expected to reduce;
|
|
16
|
+
- which decisions remain with Product Owners, engineers, governance, and platform teams;
|
|
17
|
+
- the minimum Definition of Ready and Definition of Done;
|
|
18
|
+
- evidence and retention expectations;
|
|
19
|
+
- permitted AI hosts and data classifications;
|
|
20
|
+
- independent validation expectations;
|
|
21
|
+
- how exceptions are requested and reviewed;
|
|
22
|
+
- who owns shared Blueprints, standards, and personas.
|
|
23
|
+
|
|
24
|
+
Measure adoption by better decisions and safer outcomes, not the number of generated artefacts.
|
|
25
|
+
|
|
26
|
+
## Choose proportionate adoption levels
|
|
27
|
+
|
|
28
|
+
| Level | Suitable starting point |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| Foundation | One stakeholder perspective, one engineering lens, shared ready/done definitions, independent review, and one learning per delivery |
|
|
31
|
+
| Team | Project SPECS, contextual personas, repository index, guarded delivery, standards sweep, and Manual QA |
|
|
32
|
+
| Organisation | Reviewed Blueprint Packs, organisation personas, catalogue governance, versioning, rollout communication, and assurance reporting |
|
|
33
|
+
|
|
34
|
+
These level names describe an adoption plan, not selectable runtime modes. There isn't a `Foundation` switch that disables required gates. Configure the capabilities your teams need; accepted standards and the active delivery's required checks still apply.
|
|
35
|
+
|
|
36
|
+
Teams can stop at the depth their risk and maturity justify. Do not require every advanced artefact for every small change.
|
|
37
|
+
|
|
38
|
+
## Pilot before mandating
|
|
39
|
+
|
|
40
|
+
Select a small set of contrasting projects:
|
|
41
|
+
|
|
42
|
+
- one new internal tool;
|
|
43
|
+
- one existing system with knowledge gaps;
|
|
44
|
+
- one user-visible feature;
|
|
45
|
+
- one higher-assurance or sensitive workflow.
|
|
46
|
+
|
|
47
|
+
For each pilot, capture baseline cycle time, rework, escaped issues, onboarding effort, approval delay, and participant confidence. Add qualitative evidence about whether the method improved shared understanding.
|
|
48
|
+
|
|
49
|
+
## Build the organisation baseline
|
|
50
|
+
|
|
51
|
+
Use an [Organisation Blueprint Pack](designing-organisation-blueprint-packs.md) only for reviewed defaults that genuinely apply across its declared audience. Separate:
|
|
52
|
+
|
|
53
|
+
- mandatory organisation standards;
|
|
54
|
+
- optional modules for particular risk or technology contexts;
|
|
55
|
+
- organisation-specific persona templates;
|
|
56
|
+
- reference-only boilerplates;
|
|
57
|
+
- project decisions that must remain local.
|
|
58
|
+
|
|
59
|
+
Create a documented owner, review cadence, compatibility policy, and deprecation path before broad use.
|
|
60
|
+
|
|
61
|
+
## Preserve project autonomy
|
|
62
|
+
|
|
63
|
+
A project should be able to explain:
|
|
64
|
+
|
|
65
|
+
- which Blueprint version and modules it accepted;
|
|
66
|
+
- what was materialised into project truth;
|
|
67
|
+
- what local standards or personas were added;
|
|
68
|
+
- what exceptions were approved and why;
|
|
69
|
+
- whether an upstream update has been reviewed;
|
|
70
|
+
- who owns the resulting project decisions.
|
|
71
|
+
|
|
72
|
+
The organisation publishes a baseline. The project owner accepts the consequences.
|
|
73
|
+
|
|
74
|
+
## Develop organisation personas carefully
|
|
75
|
+
|
|
76
|
+
Organisation-specific personas should encapsulate a useful professional perspective—such as the organisation's architecture or API approach—without impersonating a real person or becoming a hidden policy store.
|
|
77
|
+
|
|
78
|
+
Use [Creating organisation-specific personas](personas/organisation-specific-personas.md) and [Persona governance](personas/persona-governance.md). Keep mandatory rules in standards, and use personas to ask context-sensitive questions about those rules.
|
|
79
|
+
|
|
80
|
+
## Establish a change process
|
|
81
|
+
|
|
82
|
+
For each shared release:
|
|
83
|
+
|
|
84
|
+
1. state the reason and affected audience;
|
|
85
|
+
2. classify breaking, additive, corrective, or deprecating changes;
|
|
86
|
+
3. validate the pack and its bounded content;
|
|
87
|
+
4. compare outputs against representative pilot projects;
|
|
88
|
+
5. publish provenance, version, compatibility, digest, and release notes;
|
|
89
|
+
6. communicate required project action;
|
|
90
|
+
7. allow projects to review before adopting;
|
|
91
|
+
8. monitor outcomes and record learning.
|
|
92
|
+
|
|
93
|
+
Never silently rewrite existing project truth from a changed upstream pack.
|
|
94
|
+
|
|
95
|
+
## Support non-technical teams
|
|
96
|
+
|
|
97
|
+
Offer colleagues a facilitated session through Guided Discovery rather than requiring everyone to use the terminal. Discovery shows its active personas and their reasons; use that information to discuss missing perspectives with the group. Explain technical consequences in plain language and involve the same authorised human approvers as in a CLI-based review.
|
|
98
|
+
|
|
99
|
+
See the [non-technical team guide](adoption/non-technical-team-guide.md).
|
|
100
|
+
|
|
101
|
+
## Governance without central bottlenecks
|
|
102
|
+
|
|
103
|
+
Central teams should own shared contracts and assurance expectations, not every project decision. A scalable model separates:
|
|
104
|
+
|
|
105
|
+
- **publisher ownership:** shared pack and standard quality;
|
|
106
|
+
- **project ownership:** local outcomes and adoption decisions;
|
|
107
|
+
- **delivery ownership:** implementation evidence and engineering quality;
|
|
108
|
+
- **governance ownership:** risk thresholds, exceptions, and auditability;
|
|
109
|
+
- **platform ownership:** installation, runtime health, and supported integrations.
|
|
110
|
+
|
|
111
|
+
## Measures worth tracking
|
|
112
|
+
|
|
113
|
+
Recommended measures include:
|
|
114
|
+
|
|
115
|
+
- time from idea to ready intent;
|
|
116
|
+
- decisions reopened because evidence was missing;
|
|
117
|
+
- onboarding time for inherited systems;
|
|
118
|
+
- standards exceptions by reason;
|
|
119
|
+
- defects found before and after Manual QA;
|
|
120
|
+
- percentage of shared updates deliberately reviewed;
|
|
121
|
+
- project and stakeholder confidence;
|
|
122
|
+
- reusable learning incorporated into standards or guides.
|
|
123
|
+
|
|
124
|
+
Avoid league tables based solely on AI usage, token volume, or artefact count.
|
|
125
|
+
|
|
126
|
+
## Rollout checklist
|
|
127
|
+
|
|
128
|
+
- [ ] Operating agreement and ownership model approved.
|
|
129
|
+
- [ ] Data and AI-host boundaries understood.
|
|
130
|
+
- [ ] Pilot portfolio selected and baselines recorded.
|
|
131
|
+
- [ ] Shared standards, personas, and Blueprints have named owners.
|
|
132
|
+
- [ ] Projects retain explicit adoption and exception decisions.
|
|
133
|
+
- [ ] Non-technical participation is supported.
|
|
134
|
+
- [ ] Update, deprecation, recovery, and assurance routes are documented.
|
|
135
|
+
- [ ] Measures assess outcomes and learning rather than activity.
|
|
136
|
+
|
|
137
|
+
## Related guides
|
|
138
|
+
|
|
139
|
+
- [Internal Blueprint catalogue](blueprints/internal-blueprint-catalogue.md)
|
|
140
|
+
- [Maintaining Organisation Blueprints](blueprints/maintaining-organisation-blueprints.md)
|
|
141
|
+
- [Governance team guide](governance/governance-team-guide.md)
|
|
142
|
+
- [Consultancy and multi-project rollout](adoption/consultancy-and-multi-project-rollout.md)
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Persona entitlement and pack providers
|
|
2
|
+
|
|
3
|
+
EWAI distributes premium personas separately from the public framework package. Distribution is website-only: this guide explains licence-checked Easy Digital Downloads (EDD)/WordPress delivery and the independent local verification controls.
|
|
4
|
+
|
|
5
|
+
Premium personas are optional advisory lenses. Core and project personas, together with the standard host model, remain a complete baseline. Entitlement does not engage a persona, and a persona does not acquire approval authority.
|
|
6
|
+
|
|
7
|
+
This is the integration reference. If you just want to enter a key or update your pack, start with [Set up and update premium personas](operations/premium-personas-setup.md).
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
<!-- editorial: contents -->
|
|
11
|
+
## On this page
|
|
12
|
+
|
|
13
|
+
- [Keep four states separate](#keep-four-states-separate)
|
|
14
|
+
- [Inspect safe status](#inspect-safe-status)
|
|
15
|
+
- [Install, repair, or update](#install-repair-or-update)
|
|
16
|
+
- [Pack contract](#pack-contract)
|
|
17
|
+
- [Verification receipts](#verification-receipts)
|
|
18
|
+
- [Website provider: wordpress-edd](#website-provider-wordpress-edd)
|
|
19
|
+
- [This is governance, not DRM](#this-is-governance-not-drm)
|
|
20
|
+
- [Provider implementation checklist](#provider-implementation-checklist)
|
|
21
|
+
- [Troubleshooting](#troubleshooting)
|
|
22
|
+
- [Related guides](#related-guides)
|
|
23
|
+
- [Contract sources](#contract-sources)
|
|
24
|
+
|
|
25
|
+
## Keep four states separate
|
|
26
|
+
|
|
27
|
+
| Question | Meaning | Evidence |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| Is the user entitled? | The configured provider currently permits acquisition. | Provider access result. |
|
|
30
|
+
| Is the pack installed? | A local managed pack directory exists. | Local filesystem state. |
|
|
31
|
+
| Is the pack verified? | The current files, source, revision, manifest, and external receipt agree. | Core validation plus receipt. |
|
|
32
|
+
| Is a persona active? | The current workflow selected an installed persona as a relevant lens. | The workflow's active-persona ensemble. |
|
|
33
|
+
|
|
34
|
+
These states must never be collapsed into one `premium: true` flag. In particular, a verified local installation may still be useful during a temporary provider outage, while an entitled user may choose not to install it.
|
|
35
|
+
|
|
36
|
+
## Inspect safe status
|
|
37
|
+
|
|
38
|
+
Run the status command (it never downloads; confirmed matching team expiry can perform the cleanup described below):
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ewai persona premium status --project . --json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The `ewai.persona-entitlement/v1` result includes the provider, access classification, local status, installed and verified flags, compatibility, safe revision and digest metadata, an optional action, and a conditional upgrade URL. It intentionally omits credentials, raw provider responses, absolute cache paths, pack contents, and persona bodies.
|
|
45
|
+
|
|
46
|
+
Access has three values:
|
|
47
|
+
|
|
48
|
+
- `available`: the provider confirmed access to the configured pack revision;
|
|
49
|
+
- `unavailable`: authenticated status confirms that the subscription no longer grants access;
|
|
50
|
+
- `unknown`: connectivity or another unclassified failure prevented a trustworthy conclusion.
|
|
51
|
+
|
|
52
|
+
Unknown is not denied access. It must not trigger an upsell. A purchase link is available when no key is configured or authenticated status confirms unavailable access, and no local pack is installed.
|
|
53
|
+
|
|
54
|
+
Local status is one of:
|
|
55
|
+
|
|
56
|
+
- `not-installed`;
|
|
57
|
+
- `installed-unverified`;
|
|
58
|
+
- `installed-not-remotely-verified`;
|
|
59
|
+
- `current`;
|
|
60
|
+
- `update-available`.
|
|
61
|
+
|
|
62
|
+
The action may instead report `blocked-local-changes`. Do not force or merge a managed cache in that state.
|
|
63
|
+
|
|
64
|
+
## Install, repair, or update
|
|
65
|
+
|
|
66
|
+
First-time licence submission in the dashboard or interactive `persona premium configure` calls `configureAndInstallPremiumPersonas`: activation, private credential storage, download, validation and readiness confirmation happen in that operation. Submitting the key authorises installation. A saved key with a failed download isn't a ready pack.
|
|
67
|
+
|
|
68
|
+
Status and normal check-in never download premium content. After the user explicitly agrees to the offered action, run:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
ewai persona premium sync --project . --yes
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
If a matching verified pack is already current, sync reports that without downloading again. Otherwise it acquires an immutable archive into `.ewai/packs/.staging/`, verifies the advertised SHA-256 and byte size, validates ZIP paths and the manifest version, and independently validates the content. It then moves the existing pack to a temporary backup, promotes the candidate atomically, writes the receipt, and removes the backup. If promotion or receipt writing fails, it restores the previous installation and receipt.
|
|
75
|
+
|
|
76
|
+
The `--yes` option is a command confirmation, not a standing entitlement or approval. Automation must not add it unless a person has explicitly authorised that particular install, repair, or update.
|
|
77
|
+
|
|
78
|
+
## Pack contract
|
|
79
|
+
|
|
80
|
+
The minimal persona-only manifest in `pack.yaml` is:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
schema: ewai.persona-pack/v1
|
|
84
|
+
id: ewai.personas.professional
|
|
85
|
+
version: 1.0.0
|
|
86
|
+
content:
|
|
87
|
+
personas: premium-personas
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The minimal format's schema is published at `config/persona-pack.schema.json`. The canonical premium source library instead uses the richer `ewai.pack/v1` persona manifest. The runtime supports that source-compatibility format only for `type: persona`, the expected id/version/content, and allowlisted inert name, description, commercial, source, updates, compatibility and normalisation metadata. Boilerplates must be absent or empty; commands, skills and deployment fields are rejected. This compatibility adapter does not expand the minimal JSON schema or execute pack metadata.
|
|
91
|
+
|
|
92
|
+
CCE archives include the customer reference `docs/model-selection.md` and `manifest.json`, the commerce release manifest. Its schema is `ewai.persona-pack/v1` and it counts personas by collection. The client requires pack.yaml version to match the advertised immutable release. For maintainers testing both sides of delivery—not ordinary pack users or independent client implementers—the joint integration test builds and server-validates the actual dual-manifest archive, then installs identical bytes. This optional test uses `EWAI_CCE_PLUGIN_ROOT` or the sibling checkout and PHP ZipArchive; self-contained npm tests explicitly skip that joint test when those dependencies are unavailable.
|
|
93
|
+
|
|
94
|
+
### Legacy compatibility, not the authoring format
|
|
95
|
+
|
|
96
|
+
New releases should use the current full manifest above. Compatibility identifies older installed content; it isn't a recommendation to publish missing identity/version metadata.
|
|
97
|
+
|
|
98
|
+
During transition, a legacy manifest without `schema`, `id`, and `version` remains compatible when it declares `content.personas`; status reports that as `compatible-legacy` rather than pretending it is current.
|
|
99
|
+
|
|
100
|
+
Core validation applies regardless of provider:
|
|
101
|
+
|
|
102
|
+
- the declared persona directory must be a safe relative path inside the candidate;
|
|
103
|
+
- symbolic links and special files are rejected;
|
|
104
|
+
- only Markdown, text, YAML, JSON, CSV, and recognised extensionless notice files are accepted;
|
|
105
|
+
- no file may exceed 1 MiB;
|
|
106
|
+
- a pack may contain at most 1,000 files and 16 MiB in total;
|
|
107
|
+
- the declared persona directory must contain at least one file;
|
|
108
|
+
- the deterministic SHA-256 digest covers every accepted relative path, size, and file body in stable order.
|
|
109
|
+
|
|
110
|
+
These bounds make validation predictable and stop a persona pack from becoming an unbounded executable or binary delivery channel.
|
|
111
|
+
|
|
112
|
+
## Verification receipts
|
|
113
|
+
|
|
114
|
+
A downloaded archive is not trusted merely because the server accepted a licence. EWAI writes a separate `ewai.persona-pack-receipt/v1` receipt beneath the local `.ewai/packs/.receipts/` directory. It records:
|
|
115
|
+
|
|
116
|
+
- pack and provider IDs;
|
|
117
|
+
- manifest version and compatibility mode;
|
|
118
|
+
- exact source revision;
|
|
119
|
+
- deterministic content digest;
|
|
120
|
+
- verification time.
|
|
121
|
+
|
|
122
|
+
Status revalidates the current pack and compares it with the receipt. Editing a persona, replacing the source, changing revision, or altering the receipt makes the installation unverified. The receipt lives outside the pack so a candidate cannot provide its own evidence of trust.
|
|
123
|
+
|
|
124
|
+
## Website provider: `wordpress-edd`
|
|
125
|
+
|
|
126
|
+
Use `ewai persona premium configure --project .` in an interactive terminal. The hidden prompt verifies the key and registers this installation before writing owner-private `~/.ewai/entitlements/conversational-coding.json`, then downloads and verifies the pack immediately. This EWAI config stores the key and activation token for later session check-ins; no credential enters project YAML, Git, SPECS or safe dashboard output.
|
|
127
|
+
|
|
128
|
+
Machine identity is a random 64-hex installation secret in owner-private `~/.config/conversational-coding/installation.json`, schema `cce.installation/v1`, field `installationSecret`. EWAI and Monomyth clients must reuse that secret on the same machine, rather than hashing a hostname or copying the file to another machine. Machine name is a display label. A seat supports three machines. Deactivate old machines in My Account. Monomyth integration itself is deferred to its own build.
|
|
129
|
+
|
|
130
|
+
The website provider is the default even before key setup. Missing credentials offer the private terminal prompt without a network request and never block core EWAI use. Project persona configuration accepts only `provider: wordpress-edd` and an optional server; obsolete source fields and raw licence fields are rejected. Existing unsupported caches stay untouched and excluded until safely replaced through an explicitly owned recovery. The default server is `https://www.conversationalcoding.dev`. A separately approved self-hosted origin can be supplied during setup; never use a different origin as an authentication-failure fallback.
|
|
131
|
+
|
|
132
|
+
Each check-in and dashboard launch performs fresh authenticated status, including reuse of a server; check-in shares one promise with its dashboard launch. Status contains the immutable current manifest/version. Launches never request a grant or archive. When offered an update, obtain consent before sync. Cross-seat/provider replacement additionally requires `--replace`.
|
|
133
|
+
|
|
134
|
+
The REST contract uses activation, bearer-authenticated status and download-grants under `/wp-json/conversational-coding/v1/persona-pack`. Grants return same-origin `/?cce-download=...` URLs. Credential-bearing requests never follow redirects. JSON is capped at 64 KiB, archives at 20 MiB; streams time out. The immutable archive size and SHA-256 must match the release; ZIP entries are bounded before writing and pack validation remains independent. Website revision is its archive SHA-256, not a Git commit. pack.yaml version must match the current release. No source repository is queried or cloned for persona delivery.
|
|
135
|
+
|
|
136
|
+
The external receipt additionally records safe provenance: server, subscription ID, seat ID and plan type. Atomic promotion/receipt rollback and exclusive mutation locking protect the active cache. Interrupted operations may leave a lock/staging directory needing investigation; no timer silently steals an active lock.
|
|
137
|
+
|
|
138
|
+
### Expiry is not a generic error
|
|
139
|
+
|
|
140
|
+
The updated CCE authenticated status supplies subscription id, `plan_type`, explicit `status`, `ends_at`, seat ID and activation ID. The client requires those fields and a consistent unavailable/expired result before expiry handling. Older/malformed contracts produce uncertainty and preserve files.
|
|
141
|
+
|
|
142
|
+
Confirmed team expiry removes **only** the managed premium cache and receipt matching that server/subscription/seat/team plan. A key from another seat cannot delete an individually supplied pack. An expired individual subscription retains its installed personas and reports that updates have ended. No new download is permitted. Cancellation keeps access for the remainder of the paid term. Refunded/revoked/inactive status does not invent an expiry purge policy. There is no invented offline deletion deadline.
|
|
143
|
+
|
|
144
|
+
Personal `~/.ewai/personas` and authored project personas are never scanned or mutated by cleanup. Unknown access, invalid activation, arbitrary 403, timeout and outage never trigger deletion. Unsafe paths/symlinks or a concurrent mutation block cleanup visibly.
|
|
145
|
+
|
|
146
|
+
Locally changed team content is preserved rather than erased. A known-expiry block is recorded in an independent private `persona-access-denial.json` projection before acquiring the pack mutation lock, then in the receipt when safe cleanup can proceed. The denial binds to that installed receipt generation, server, subscription and seat; it cannot follow a fresh authenticated replacement pack. The shared premium catalogue path becomes unavailable, so CLI, dashboard and persona selectors cannot engage the retained expired team pack, including while another mutation holds the lock. That confirmed block survives a later outage. A valid renewed matching subscription can explicitly install a fresh verified pack to restore access; individual receipts are never blocked by this team rule. Filesystem failures that prevent safe denial recording or deletion require an explicit stop and manual investigation, not a successful-cleanup claim.
|
|
147
|
+
|
|
148
|
+
For a deployment acceptance test, verify an individual purchase, an allocated team seat, the three-machine limit and archive delivery against that deployment. A passing local fixture test isn't evidence that a particular live server has been configured correctly.
|
|
149
|
+
|
|
150
|
+
## This is governance, not DRM
|
|
151
|
+
|
|
152
|
+
The mechanism does not provide DRM and cannot guarantee that an authorised recipient will never copy files. Its purpose is to keep commercial content out of the public package, make authorised acquisition explicit, record local provenance, detect drift, and avoid accidental disclosure through product surfaces.
|
|
153
|
+
|
|
154
|
+
Entitlement status is operational evidence. It does not approve Build, cannot approve Manual QA, certify persona quality, accept licence terms on someone's behalf, or replace a commercial system of record.
|
|
155
|
+
|
|
156
|
+
## Provider implementation checklist
|
|
157
|
+
|
|
158
|
+
Before enabling another provider, verify:
|
|
159
|
+
|
|
160
|
+
- all three access outcomes are deterministic and tested;
|
|
161
|
+
- safe output has no credential, raw response, absolute path, or pack-body leakage;
|
|
162
|
+
- check-in/status never download; only authenticated matching team expiry may remove managed content;
|
|
163
|
+
- sync still requires explicit human consent;
|
|
164
|
+
- acquisition is confined to core-supplied staging;
|
|
165
|
+
- the common validator and receipt writer cannot be bypassed;
|
|
166
|
+
- failed validation and failed promotion preserve the previous verified installation;
|
|
167
|
+
- concurrent or interrupted operations cannot produce a half-promoted pack;
|
|
168
|
+
- an upgrade link appears only for known unavailable access without an installation;
|
|
169
|
+
- legacy compatibility is visible rather than silently upgraded;
|
|
170
|
+
- full package and npm dry-run tests include the adapter without including commercial persona content.
|
|
171
|
+
|
|
172
|
+
## Troubleshooting
|
|
173
|
+
|
|
174
|
+
| Status or symptom | Meaning | Safe response |
|
|
175
|
+
| --- | --- | --- |
|
|
176
|
+
| `access: unknown` | The provider could not be classified reliably. | Preserve any verified local pack and retry later. |
|
|
177
|
+
| `installed-unverified` | Local content and its receipt do not agree. | Do not use it as trusted premium content; offer governed repair when access is available. |
|
|
178
|
+
| `installed-not-remotely-verified` | Local validation passes, but current entitlement or freshness is unknown. | Keep the verified local state visible and avoid claiming it is current. |
|
|
179
|
+
| `blocked-local-changes` | The managed cache is dirty or has another origin. | Preserve it for investigation; never force-sync over it. |
|
|
180
|
+
| Candidate rejected | Release digest/size, grant origin, ZIP path/file limits, CRC, manifest version or content validation failed. | Keep the prior pack and report the bounded reason. |
|
|
181
|
+
| Receipt drift | Current files no longer match verified provenance. | Treat the installation as unverified and reacquire only after explicit consent. |
|
|
182
|
+
|
|
183
|
+
## Related guides
|
|
184
|
+
|
|
185
|
+
- [Installation, updating, and entitlements](operations/installation-updating-and-entitlements.md)
|
|
186
|
+
- [Working with personas](working-with-personas.md)
|
|
187
|
+
- [Human approval and assurance](human-approval-and-assurance-guide.md)
|
|
188
|
+
- [Troubleshooting and recovery](operations/troubleshooting-and-recovery.md)
|
|
189
|
+
|
|
190
|
+
## Contract sources
|
|
191
|
+
|
|
192
|
+
- [src/persona-entitlements.mjs](../src/persona-entitlements.mjs)
|
|
193
|
+
- [src/checkin.mjs](../src/checkin.mjs)
|
|
194
|
+
- [src/cli.mjs](../src/cli.mjs)
|
|
195
|
+
- [src/runtime/dashboard-server.mjs](../src/runtime/dashboard-server.mjs)
|
|
196
|
+
- [config/persona-pack.schema.json](../config/persona-pack.schema.json)
|
|
197
|
+
- [config/project.schema.json](../config/project.schema.json)
|
|
198
|
+
- `tests/persona-entitlements.test.mjs`
|
|
199
|
+
- `tests/persona-entitlement-package.test.mjs`
|