@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,175 @@
|
|
|
1
|
+
# Complete prototype-review inputs
|
|
2
|
+
|
|
3
|
+
These are the four **CLI input shapes** for a prototype plan and one design cycle. They aren't ready-made approval records. Use them with an existing UI delivery whose intent and design-system guidance you've reviewed.
|
|
4
|
+
|
|
5
|
+
The host normally prepares these files through `ewai-prototype-iteration`; a person reviews the resulting plan and design. Direct CLI use is useful for repeatability and integrations.
|
|
6
|
+
|
|
7
|
+
## Before copying the examples
|
|
8
|
+
|
|
9
|
+
Use your delivery's actual slug instead of `customer-portal`. Replace every capitalised value below with the result from your project:
|
|
10
|
+
|
|
11
|
+
| Value | Source |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| `INTENT_DIGEST` | The reviewed intent content used for this delivery. |
|
|
14
|
+
| `DESIGN_SYSTEM_DIGEST` | The effective digest in this delivery's design-system application receipt. |
|
|
15
|
+
| `PLAN_PREPARATION_DIGEST` | `preparation.preparationDigest` returned by plan preparation. |
|
|
16
|
+
| `PLAN_REVIEW_DIGEST` | `review.contentDigest` returned by plan recording. |
|
|
17
|
+
| `PROTOTYPE_MANIFEST_DIGEST` | The digest of the actual prototype manifest being reviewed. |
|
|
18
|
+
| `CYCLE_PREPARATION_DIGEST` | `preparation.preparationDigest` returned by cycle preparation. |
|
|
19
|
+
| `ACTIVE_PERSONA_ID` | A persona in the active ensemble for **that** preparation. Recheck it for the design cycle. |
|
|
20
|
+
|
|
21
|
+
Keep the complete `sha256:` prefix on digests. These references tie the review to particular inputs; syntactically valid hashes alone don't prove a correct design or grant approval.
|
|
22
|
+
|
|
23
|
+
The [versioned domain schema](../../config/prototype-iteration.schema.json) describes saved contracts. The CLI preparation requests below are intentionally smaller: EWAI adds the schema, slug and selected persona engagement. Don't paste a saved domain object into a CLI request that accepts different fields. [Review semantics](../../skills-src/ewai-prototype-iteration/references/review-contract.md) explains findings, assessments and evidence channels.
|
|
24
|
+
|
|
25
|
+
## 1. plan-prepare.json
|
|
26
|
+
|
|
27
|
+
<!-- example: prototype-plan -->
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"intentDigest": "INTENT_DIGEST",
|
|
31
|
+
"designSystem": {
|
|
32
|
+
"id": "ewai.design-system.default",
|
|
33
|
+
"effectiveDigest": "DESIGN_SYSTEM_DIGEST"
|
|
34
|
+
},
|
|
35
|
+
"plan": {
|
|
36
|
+
"summary": "Let a customer review the status of their request.",
|
|
37
|
+
"screens": [{
|
|
38
|
+
"id": "request-status",
|
|
39
|
+
"title": "Request status",
|
|
40
|
+
"purpose": "Explain the current state and next action.",
|
|
41
|
+
"userOutcomes": ["Understand whether a response is needed"],
|
|
42
|
+
"evidenceRefs": ["intent:request-status"]
|
|
43
|
+
}],
|
|
44
|
+
"journeys": [{
|
|
45
|
+
"id": "check-request",
|
|
46
|
+
"actor": "customer",
|
|
47
|
+
"outcome": "Find out whether to respond or wait.",
|
|
48
|
+
"screenRefs": ["request-status"]
|
|
49
|
+
}]
|
|
50
|
+
},
|
|
51
|
+
"signals": ["user journey", "usability", "recovery"],
|
|
52
|
+
"predecessorDigest": ""
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Use the actual selected pack ID when it isn't the bundled fallback. Replace the fictional intent reference with the accepted source supporting your screen.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
ewai prototype-review plan-prepare customer-portal --input plan-prepare.json --project . --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Read the returned active personas. Preparation hasn't reviewed or selected the design.
|
|
63
|
+
|
|
64
|
+
## 2. plan-review.json
|
|
65
|
+
|
|
66
|
+
After reviewing the plan, record each actual finding and one assessment per finding. This example incorporates a missing explanation:
|
|
67
|
+
|
|
68
|
+
<!-- example: prototype-plan-review -->
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"schema": "ewai.prototype-plan-review-submission/v1",
|
|
72
|
+
"expectedPreparationDigest": "PLAN_PREPARATION_DIGEST",
|
|
73
|
+
"reviewedBy": "Example reviewer",
|
|
74
|
+
"findings": [{
|
|
75
|
+
"personaId": "ACTIVE_PERSONA_ID",
|
|
76
|
+
"concernCode": "next-action",
|
|
77
|
+
"severity": "advisory",
|
|
78
|
+
"observation": "The plan names a status but doesn't explain whether the customer needs to act.",
|
|
79
|
+
"recommendation": "Describe the next action and who is responsible.",
|
|
80
|
+
"evidenceRefs": ["screen:request-status"]
|
|
81
|
+
}],
|
|
82
|
+
"assessments": [{
|
|
83
|
+
"findingRef": {
|
|
84
|
+
"personaId": "ACTIVE_PERSONA_ID",
|
|
85
|
+
"concernCode": "next-action",
|
|
86
|
+
"evidenceRefs": ["screen:request-status"]
|
|
87
|
+
},
|
|
88
|
+
"disposition": "incorporate",
|
|
89
|
+
"rationale": "A status is useful only when the customer can tell what to do next."
|
|
90
|
+
}]
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`findingRef` lets the CLI derive the stable finding ID from persona, concern and references. Saved records use `findingId`.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
ewai prototype-review plan-record customer-portal --input plan-review.json --project . --json
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Keep the returned `review.contentDigest`. Incorporate the accepted feedback; don't call the plan approved merely because recording succeeded.
|
|
101
|
+
|
|
102
|
+
## 3. cycle-prepare.json
|
|
103
|
+
|
|
104
|
+
Produce the runnable prototype under `SPECS/6.Build/customer-portal/ui-design-assets/prototypes/`. Capture the source and rendered viewport evidence before design review. For example, `selected.html` and the evidence labelled `render:desktop` below must correspond to actual files/captures you've inspected.
|
|
105
|
+
|
|
106
|
+
<!-- example: prototype-cycle -->
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"planReviewDigest": "PLAN_REVIEW_DIGEST",
|
|
110
|
+
"cycleNumber": 1,
|
|
111
|
+
"maxCycles": 2,
|
|
112
|
+
"predecessorDigest": "",
|
|
113
|
+
"prototype": {
|
|
114
|
+
"manifestDigest": "PROTOTYPE_MANIFEST_DIGEST",
|
|
115
|
+
"entryPath": "ui-design-assets/prototypes/selected.html"
|
|
116
|
+
},
|
|
117
|
+
"evidenceChannels": [
|
|
118
|
+
{"channel": "source", "status": "available", "evidenceRefs": ["prototype:selected.html"], "note": "Source inspected for this example design."},
|
|
119
|
+
{"channel": "rendered-viewport", "status": "available", "evidenceRefs": ["render:desktop"], "note": "Desktop capture inspected for this example design."},
|
|
120
|
+
{"channel": "interaction", "status": "not-collected", "evidenceRefs": [], "note": "Not exercised in this cycle."},
|
|
121
|
+
{"channel": "assistive-technology", "status": "not-collected", "evidenceRefs": [], "note": "Not exercised."},
|
|
122
|
+
{"channel": "user-research", "status": "not-collected", "evidenceRefs": [], "note": "No representative users involved."},
|
|
123
|
+
{"channel": "manual-qa", "status": "pending-human", "evidenceRefs": [], "note": "Separate human gate."},
|
|
124
|
+
{"channel": "release", "status": "not-collected", "evidenceRefs": [], "note": "No release decision."}
|
|
125
|
+
],
|
|
126
|
+
"signals": ["visual hierarchy", "usability", "responsive"]
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Don't copy the two available states unless you've collected that evidence.** Source and rendered-viewport evidence are prerequisites; if missing, collect them before proceeding. Other channels remain honestly absent.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
ewai prototype-review cycle-prepare customer-portal --input cycle-prepare.json --project . --json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The active design personas can differ from the plan's. Use the current ensemble for the next review.
|
|
137
|
+
|
|
138
|
+
## 4. cycle-review.json
|
|
139
|
+
|
|
140
|
+
This fictional finding illustrates how to record a needed change, not an already-observed fault in your product:
|
|
141
|
+
|
|
142
|
+
<!-- example: prototype-cycle-review -->
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"schema": "ewai.prototype-cycle-review-submission/v1",
|
|
146
|
+
"expectedPreparationDigest": "CYCLE_PREPARATION_DIGEST",
|
|
147
|
+
"reviewedBy": "Example reviewer",
|
|
148
|
+
"findings": [{
|
|
149
|
+
"personaId": "ACTIVE_PERSONA_ID",
|
|
150
|
+
"concernCode": "action-hierarchy",
|
|
151
|
+
"severity": "advisory",
|
|
152
|
+
"observation": "The next action is visually weaker than supporting information.",
|
|
153
|
+
"recommendation": "Give the next action a clearer position and emphasis.",
|
|
154
|
+
"evidenceRefs": ["render:desktop"]
|
|
155
|
+
}],
|
|
156
|
+
"assessments": [{
|
|
157
|
+
"findingRef": {
|
|
158
|
+
"personaId": "ACTIVE_PERSONA_ID",
|
|
159
|
+
"concernCode": "action-hierarchy",
|
|
160
|
+
"evidenceRefs": ["render:desktop"]
|
|
161
|
+
},
|
|
162
|
+
"disposition": "incorporate",
|
|
163
|
+
"rationale": "The main action needs to be easy to find before supporting detail."
|
|
164
|
+
}]
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
ewai prototype-review cycle-record customer-portal --input cycle-review.json --project . --json
|
|
170
|
+
ewai prototype-review status customer-portal --project . --json
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Expect `iterate` when incorporated feedback requires another cycle and capacity remains. The next cycle names the preceding cycle's content digest. At the limit, unresolved work needs a human decision; it doesn't become accepted automatically.
|
|
174
|
+
|
|
175
|
+
Plan and cycle records are saved under the delivery's `ui-design-assets/prototype-iterations/`. Follow the [iteration guide](../persona-guided-prototype-iteration.md) to link the reviewed plan and final cycle in the v3 manifest. Human prototype selection, implemented-feature Manual QA and release remain separate.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Worked example: reproducible Archaeology and Discovery depth
|
|
2
|
+
|
|
3
|
+
This example shows how two sessions can produce different explanatory wording
|
|
4
|
+
while reaching the same material investigation boundary. The project, people,
|
|
5
|
+
IDs, and digests are illustrative; they are not a claim about a real system.
|
|
6
|
+
|
|
7
|
+
Use this alongside the
|
|
8
|
+
[Reproducible Archaeology and Discovery Depth guide](../reproducible-archaeology-and-discovery-depth.md).
|
|
9
|
+
|
|
10
|
+
## What you can reproduce
|
|
11
|
+
|
|
12
|
+
This is a worked interpretation, not a bundled runnable Northstar application. Its IDs and digests won't resolve in your project. To try the workflow, initialise a disposable project with a small codebase, agree its purpose and processing permissions, refresh the Source Map, then follow the [prepare/review/compare guide](../reproducible-archaeology-and-discovery-depth.md). Use the IDs and templates actually returned.
|
|
13
|
+
|
|
14
|
+
You can reproduce how stable evidence and gap identity are compared. Exact explanatory wording, persona availability and coverage depend on your inputs; this example doesn't guarantee matching output.
|
|
15
|
+
|
|
16
|
+
## Scenario
|
|
17
|
+
|
|
18
|
+
Northstar has inherited a small internal case-triage service. It has one web
|
|
19
|
+
application, one API, an SQL database, and an overnight export to a reporting
|
|
20
|
+
platform. The repository is available, but the operating model and data-handling
|
|
21
|
+
decisions are incomplete.
|
|
22
|
+
|
|
23
|
+
The named owner says the immediate outcome is to make a safe maintenance change,
|
|
24
|
+
not to redesign the service. The team wants enough understanding to plan that
|
|
25
|
+
change without turning Archaeology into an unbounded documentation exercise.
|
|
26
|
+
|
|
27
|
+
## 1. Establish the evidence boundary
|
|
28
|
+
|
|
29
|
+
The team refreshes the Source Map against revision `example-4f21a9` and records:
|
|
30
|
+
|
|
31
|
+
| Evidence surface | Result |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Regular files | 286 inventoried |
|
|
34
|
+
| Analysed | 267 |
|
|
35
|
+
| Inventory-only | 8 |
|
|
36
|
+
| Analysis failed | 3 |
|
|
37
|
+
| Sensitive | 2, retained as metadata-only evidence |
|
|
38
|
+
| Oversized | 6, retained as explicit coverage limits |
|
|
39
|
+
| Owner declarations | Service purpose, internal users, current hosting, recovery owner, and client-data classification |
|
|
40
|
+
|
|
41
|
+
The eight inventory-only files and three analysis failures are not removed to
|
|
42
|
+
make coverage appear healthier. They remain inputs to the depth recommendation.
|
|
43
|
+
|
|
44
|
+
## 2. Review the depth profile
|
|
45
|
+
|
|
46
|
+
EWAI recommends each dimension independently:
|
|
47
|
+
|
|
48
|
+
| Dimension | Recommendation | Why | Named-owner selection |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| Architecture | `standard` | Component boundaries are visible, but the reporting integration has two competing implementations. | `standard` |
|
|
51
|
+
| Data | `deep` | The service processes client identifiers and exports them across a system boundary. | `deep` |
|
|
52
|
+
| Security | `deep` | Authorization is partly observed, while the reporting trust boundary is not confirmed. | `deep` |
|
|
53
|
+
| Product | `bounded` | The requested maintenance outcome affects one existing internal journey. | `bounded` |
|
|
54
|
+
| Delivery | `standard` | Unit tests exist, but release and rollback evidence is partial. | `standard` |
|
|
55
|
+
| Governance | `deep` | Client-data policy applies and one retention decision has no named authority. | `deep` |
|
|
56
|
+
| Operations | `standard` | Hosting is known, but recovery ownership and the overnight failure path need confirmation. | `standard` |
|
|
57
|
+
|
|
58
|
+
This is more proportionate than selecting `deep` for the whole project. Repository
|
|
59
|
+
size did not determine the result, and the number of proposed intents is not used
|
|
60
|
+
as evidence of depth.
|
|
61
|
+
|
|
62
|
+
## 3. Observe persona swapping
|
|
63
|
+
|
|
64
|
+
The active ensemble changes with the concern:
|
|
65
|
+
|
|
66
|
+
| Concern | Active perspectives | Reason shown to the reviewer |
|
|
67
|
+
| --- | --- | --- |
|
|
68
|
+
| Product journey | Archaeology lead, local Product Owner | Confirm the affected journey and resist inferring desired behaviour from code. |
|
|
69
|
+
| Client-data export | Archaeology lead, local Data Owner, installed premium Privacy Specialist | Challenge classification, movement, retention, and evidence gaps. |
|
|
70
|
+
| Reporting trust boundary | Archaeology lead, local Security Owner, installed premium Threat Modeller | Examine identity, authorization, exposure, and failure paths. |
|
|
71
|
+
| Recovery | Archaeology lead, local Service Owner | Establish operational ownership and recovery evidence. |
|
|
72
|
+
|
|
73
|
+
The premium specialists are used because they are already installed and relevant.
|
|
74
|
+
Repeating the process without premium access still completes with the core and
|
|
75
|
+
project personas plus the standard model. No persona can confirm an owner
|
|
76
|
+
declaration or approve the selected depth.
|
|
77
|
+
|
|
78
|
+
## 4. Record stable gaps
|
|
79
|
+
|
|
80
|
+
The generated prose differs between two clean sessions:
|
|
81
|
+
|
|
82
|
+
- session A says, “The export retention owner is not evidenced”;
|
|
83
|
+
- session B says, “No accountable retention decision was found for reporting exports.”
|
|
84
|
+
|
|
85
|
+
Both statements resolve to the same structured condition and therefore the same
|
|
86
|
+
illustrative stable ID:
|
|
87
|
+
|
|
88
|
+
| Stable gap | Structured meaning | Evidence references |
|
|
89
|
+
| --- | --- | --- |
|
|
90
|
+
| `GAP-GOV-8ab42c91d730` | Governance · retention owner missing · current state `unassigned` · intended state `named-owner` | Policy applicability and export configuration |
|
|
91
|
+
| `GAP-SEC-27f061c35a9d` | Security · reporting trust boundary unresolved · current state `partial` · intended state `confirmed` | API client and owner declaration |
|
|
92
|
+
| `GAP-OPS-d2e19b07c411` | Operations · overnight failure recovery untested · current state `unknown` · intended state `tested` | Scheduler configuration and runbook |
|
|
93
|
+
|
|
94
|
+
The IDs above illustrate the real `GAP-<dimension>-<digest>` shape. A real ID is
|
|
95
|
+
calculated by EWAI from the complete structured identity; do not invent or edit it.
|
|
96
|
+
|
|
97
|
+
## 5. Keep grouping separate
|
|
98
|
+
|
|
99
|
+
The first reviewer groups all three gaps under `safe-reporting-maintenance`. A
|
|
100
|
+
second reviewer keeps the evidence and gaps unchanged but groups them by owner:
|
|
101
|
+
|
|
102
|
+
- `data-governance` owns the retention gap;
|
|
103
|
+
- `platform-security` owns the trust-boundary gap;
|
|
104
|
+
- `service-operations` owns the recovery gap.
|
|
105
|
+
|
|
106
|
+
That can produce three intents instead of one. The comparison reports a grouping
|
|
107
|
+
change, not new discovery content. Stable gap identity is independent of how the
|
|
108
|
+
organisation chooses to arrange the work.
|
|
109
|
+
|
|
110
|
+
## 6. Compare two reviewed runs
|
|
111
|
+
|
|
112
|
+
| Comparison layer | Run A versus run B | Interpretation |
|
|
113
|
+
| --- | --- | --- |
|
|
114
|
+
| Inputs | Same | Same project, revision, Source Map, packs, provider capability, and exclusions. |
|
|
115
|
+
| Evidence | Same | Repository and bounded owner-evidence fingerprints agree. |
|
|
116
|
+
| Personas | Same | The same named identities and tiers were engaged. |
|
|
117
|
+
| Selected depth | Same | All seven named decisions agree. |
|
|
118
|
+
| Coverage | Same | Failures and limited surfaces remain visible in both runs. |
|
|
119
|
+
| Stable gaps | Same | The same three structured concerns were retained. |
|
|
120
|
+
| Grouping | Different | The owner deliberately changed the work-organisation strategy. |
|
|
121
|
+
| Unexplained variance | Empty | The only material difference has a recorded cause. |
|
|
122
|
+
|
|
123
|
+
The two runs are reproducible despite different prose and grouping. They would
|
|
124
|
+
not be reproducible if the security gap disappeared while all upstream evidence,
|
|
125
|
+
coverage, personas, and depth remained unchanged.
|
|
126
|
+
|
|
127
|
+
## 7. Decide whether the result is good enough
|
|
128
|
+
|
|
129
|
+
The named owner still needs to assess content quality. They review the runs for:
|
|
130
|
+
|
|
131
|
+
- missing material concerns;
|
|
132
|
+
- duplicated or irrelevant questions;
|
|
133
|
+
- evidence traceability;
|
|
134
|
+
- proportionate depth;
|
|
135
|
+
- useful next actions;
|
|
136
|
+
- visibility of failures and contradictions.
|
|
137
|
+
|
|
138
|
+
Only after that review may the owner approve Manual QA through the canonical EWAI
|
|
139
|
+
operation. Reproducible structure is evidence of control, not proof that the
|
|
140
|
+
investigation was complete or that the proposed change is safe to release.
|
|
141
|
+
|
|
142
|
+
Use the
|
|
143
|
+
[operator and Manual QA checklist](../quality/reproducible-archaeology-depth-review-checklist.md)
|
|
144
|
+
to conduct and record that assessment.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Record one reviewed test scenario
|
|
2
|
+
|
|
3
|
+
Use this complete input shape after preparing scenarios for an existing intent. The fictional feature here is `customer-access`; it isn't a requirement your project inherits.
|
|
4
|
+
|
|
5
|
+
## Prepare from accepted requirements
|
|
6
|
+
|
|
7
|
+
Ask EWAI to challenge the intent's permissions and recovery paths, or run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ewai test-scenarios prepare customer-access --focus "permission and recovery" --project . --json
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Read `authoritativeSources`, `sourceDigest` and `activePersonas`. For this example, the accepted requirement is that an authenticated, authorised delegate can submit a valid access request and receive a clear outcome. If that isn't an accepted requirement in your project, don't record it as one.
|
|
14
|
+
|
|
15
|
+
Save this as `scenario-input.json`. Substitute the returned digest, current persona ID and real source IDs. Set the slug, test file and owner for your project.
|
|
16
|
+
|
|
17
|
+
<!-- example: test-scenario -->
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"schema": "ewai.persona-test-scenarios/v1",
|
|
21
|
+
"slug": "customer-access",
|
|
22
|
+
"focus": "permission and recovery",
|
|
23
|
+
"preparedSourceDigest": "SOURCE_DIGEST",
|
|
24
|
+
"scenarios": [{
|
|
25
|
+
"id": "PTS-001",
|
|
26
|
+
"title": "An authorised delegate can submit an access request",
|
|
27
|
+
"type": "happy-path",
|
|
28
|
+
"sourceRefs": ["JOURNEY_SOURCE_ID", "ACCEPTANCE_SOURCE_ID"],
|
|
29
|
+
"personaContributions": [{
|
|
30
|
+
"personaId": "ACTIVE_PERSONA_ID",
|
|
31
|
+
"concern": "Check the permission boundary as well as the successful outcome."
|
|
32
|
+
}],
|
|
33
|
+
"preconditions": ["The delegate is authenticated and authorised to request access."],
|
|
34
|
+
"actions": ["Submit a valid access request."],
|
|
35
|
+
"expectedResults": ["The request is accepted and a clear success outcome is displayed."],
|
|
36
|
+
"evidenceRoute": "automated",
|
|
37
|
+
"automation": "automated",
|
|
38
|
+
"plannedTest": {
|
|
39
|
+
"file": "tests/access.test.mjs",
|
|
40
|
+
"name": "authorised delegate completes access request"
|
|
41
|
+
},
|
|
42
|
+
"owner": "Delivery team",
|
|
43
|
+
"status": "accepted"
|
|
44
|
+
}],
|
|
45
|
+
"gaps": []
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The expected result is the test's **oracle**: the agreed behaviour against which the implementation will be checked. The persona suggests what to investigate; it can't invent that expectation.
|
|
50
|
+
|
|
51
|
+
This one happy-path scenario isn't complete permission coverage. Consider denial and recovery separately, with their own accepted sources.
|
|
52
|
+
|
|
53
|
+
## Review, record and inspect
|
|
54
|
+
|
|
55
|
+
Only set `accepted` after the named reviewer has compared the expectation with its source. Then:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
ewai test-scenarios record customer-access --input scenario-input.json --reviewed-by "Example reviewer" --project . --json
|
|
59
|
+
ewai test-scenarios status customer-access --project . --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The result should be `recorded`, with paired `test-scenarios.json` and `test-scenarios.md` under the intent's Build directory. Recording a scenario doesn't create its test file or run a test.
|
|
63
|
+
|
|
64
|
+
Unknown source IDs, an unrecognised active persona or stale preparation require corrected input and review. Don't remove traceability fields merely to make validation pass.
|
|
65
|
+
|
|
66
|
+
The [complete v1 candidate contract](../../skills-src/ewai-test-scenarios/references/scenario-contract.md#candidate-schema) lists all fields and enums. This contract is enforced by the [scenario validator](../../src/test-scenarios.mjs); there isn't a separate standalone JSON Schema file for it in this release.
|
|
67
|
+
|
|
68
|
+
Return to [persona-driven test scenarios](../quality/persona-driven-test-scenarios.md).
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Worked examples
|
|
2
|
+
|
|
3
|
+
These compact scenarios demonstrate how to apply EWAI proportionately. They're illustrative decision patterns, not specifications to copy unchanged or exhaustive phase checklists. A stage omitted from an example isn't waived; follow the current delivery's required gates.
|
|
4
|
+
|
|
5
|
+
For a step-by-step exercise with observable results, try [your first session](../tutorials/first-session.md) and [first delivery](../tutorials/first-delivery.md).
|
|
6
|
+
|
|
7
|
+
## 1. Start a new internal application
|
|
8
|
+
|
|
9
|
+
**Situation:** An operations team needs a small case-triage tool.
|
|
10
|
+
|
|
11
|
+
**Approach:**
|
|
12
|
+
|
|
13
|
+
1. The Product Owner supplies the current process, users, desired response-time outcome, data classification, and non-goals.
|
|
14
|
+
2. Guided Discovery engages product, operator, accessibility, and security perspectives as the sections change.
|
|
15
|
+
3. If the organisation provides an applicable internal-application Blueprint, the team reviews it, accepts its required security and testing modules, and declines an irrelevant public-service module. Otherwise, Discovery continues without an Organisation Blueprint.
|
|
16
|
+
4. Review shows the exact standards and project personas to be created.
|
|
17
|
+
5. A named owner approves Discovery.
|
|
18
|
+
6. The first intent delivers one journey: view and assign an untriaged case.
|
|
19
|
+
7. Manual QA uses safe test records and checks keyboard access, permissions, exception handling, and operational visibility.
|
|
20
|
+
|
|
21
|
+
**Key lesson:** Start with one useful journey and the evidence needed to operate it, not a generated backlog for the entire imagined product.
|
|
22
|
+
|
|
23
|
+
## 2. Onboard a poorly documented legacy system
|
|
24
|
+
|
|
25
|
+
**Situation:** A team inherits a service with sparse documentation and several years of history.
|
|
26
|
+
|
|
27
|
+
**Approach:**
|
|
28
|
+
|
|
29
|
+
1. The owner describes why the service exists, its users, known failures, and what must not be inferred from current code.
|
|
30
|
+
2. After briefing and source permissions are agreed, the owner accepts the offer of Archaeology. It maps repositories, entry points, integrations, data, tests, and deployment.
|
|
31
|
+
3. The inferred purpose conflicts with one current batch process. The discrepancy is presented before deep analysis.
|
|
32
|
+
4. The owner confirms that the batch is a temporary workaround, not intended behaviour.
|
|
33
|
+
5. Operations and data personas join the relevant deep passes; their output remains hypothesis until supported.
|
|
34
|
+
6. Reviewed findings become canonical SPECS, while the workaround becomes a bounded migration intent.
|
|
35
|
+
|
|
36
|
+
**Key lesson:** Repository behaviour is strong evidence of what exists, not automatic authority for what should continue.
|
|
37
|
+
|
|
38
|
+
## 3. Deliver a user-visible feature
|
|
39
|
+
|
|
40
|
+
**Situation:** Users need to export a filtered report.
|
|
41
|
+
|
|
42
|
+
**Approach:**
|
|
43
|
+
|
|
44
|
+
1. Intent records the user outcome, supported filters, data permissions, accessibility, performance expectation, and export retention.
|
|
45
|
+
2. The repository index identifies the query, permission, UI, and audit-log blast radius.
|
|
46
|
+
3. The plan creates one vertical slice through UI, service, authorization, export generation, and evidence.
|
|
47
|
+
4. Build approval names that scope.
|
|
48
|
+
5. Automated tests cover permissions, filters, empty results, volume, and formula-safe output.
|
|
49
|
+
6. Standards review checks data handling and existing patterns.
|
|
50
|
+
7. Manual QA exercises an authorised and unauthorised user, keyboard flow, a large report, and the downloaded result.
|
|
51
|
+
|
|
52
|
+
**Key lesson:** User-visible acceptance and data-boundary testing belong in the same slice as implementation.
|
|
53
|
+
|
|
54
|
+
## 4. Make a low-risk technical-debt change
|
|
55
|
+
|
|
56
|
+
**Situation:** A duplicated parser should be consolidated without changing behaviour.
|
|
57
|
+
|
|
58
|
+
**Approach:**
|
|
59
|
+
|
|
60
|
+
1. The intent states the maintainability outcome and an explicit no-user-visible-change constraint.
|
|
61
|
+
2. Index and tests identify callers and observable contracts.
|
|
62
|
+
3. Reconcile confirms both copies currently behave the same—or records the differences.
|
|
63
|
+
4. The plan uses characterization tests as the first failing or safety evidence.
|
|
64
|
+
5. Build changes the smallest shared boundary.
|
|
65
|
+
6. Manual QA is proportionate: a focused maintainer walkthrough plus one representative user journey.
|
|
66
|
+
|
|
67
|
+
**Key lesson:** Low risk can reduce ceremony, but it does not justify inventing equivalence or skipping impact evidence.
|
|
68
|
+
|
|
69
|
+
## 5. Apply a mandatory organisation Blueprint
|
|
70
|
+
|
|
71
|
+
**Situation:** A regulated project must use the organisation's reviewed baseline.
|
|
72
|
+
|
|
73
|
+
**Approach:**
|
|
74
|
+
|
|
75
|
+
1. Guided Setup shows publisher, version, compatibility, required modules, dependencies, digest, and destinations.
|
|
76
|
+
2. Required modules cannot be deselected. Optional modules are chosen from actual project applicability.
|
|
77
|
+
3. A compliance persona surfaces questions, but a qualified owner confirms applicable obligations.
|
|
78
|
+
4. Existing destination conflicts stop application.
|
|
79
|
+
5. The team reconciles the existing standard rather than deleting it.
|
|
80
|
+
6. Named approval materialises organisation standards, project personas, receipt, and pipeline pin.
|
|
81
|
+
|
|
82
|
+
**Key lesson:** Mandatory organisational input still requires visible project consequences and accountable adoption.
|
|
83
|
+
|
|
84
|
+
## 6. Use project and premium personas together
|
|
85
|
+
|
|
86
|
+
**Situation:** A payments project has a local settlement-operations persona and access to managed specialist personas.
|
|
87
|
+
|
|
88
|
+
**Approach:**
|
|
89
|
+
|
|
90
|
+
1. Check-in reports entitlement and that the premium library is installed; no download occurs.
|
|
91
|
+
2. In user-outcome sections, a product lens leads.
|
|
92
|
+
3. In data and assurance sections, the relevant project payments persona and a matching premium specialist are deliberately considered.
|
|
93
|
+
4. The UI displays both names, tiers, concerns, and engagement reasons.
|
|
94
|
+
5. The project persona points to existing local operating evidence; it doesn't invent new facts. The premium persona challenges specialist gaps.
|
|
95
|
+
6. A real payments owner resolves the decision.
|
|
96
|
+
|
|
97
|
+
**Key lesson:** Mixed tiers improve perspective coverage, but relevance, evidence, and human authority remain separate.
|
|
98
|
+
|
|
99
|
+
## 7. Deliver a security-sensitive capability
|
|
100
|
+
|
|
101
|
+
**Situation:** A public feature processes sensitive personal data.
|
|
102
|
+
|
|
103
|
+
**Approach:**
|
|
104
|
+
|
|
105
|
+
1. Discovery records classification, purpose, access model, retention, jurisdictions, threat context, and operational ownership.
|
|
106
|
+
2. Candidate compliance findings remain triage until qualified owners confirm them.
|
|
107
|
+
3. Security and privacy standards become explicit Build constraints.
|
|
108
|
+
4. Plan includes abuse cases, authorization boundaries, logging restrictions, dependency risk, incident visibility, and deletion behaviour.
|
|
109
|
+
5. An independent security review is used when configured; if unavailable, the gap is recorded rather than marked passed.
|
|
110
|
+
6. Manual QA uses non-production test data and verifies denial, recovery, and audit behaviour as well as the happy path.
|
|
111
|
+
|
|
112
|
+
**Key lesson:** More AI review does not replace data governance, qualified interpretation, or operational readiness.
|
|
113
|
+
|
|
114
|
+
## 8. Roll a Blueprint update across projects
|
|
115
|
+
|
|
116
|
+
**Situation:** An organisation publishes a new major Blueprint version with a changed mandatory API standard.
|
|
117
|
+
|
|
118
|
+
**Approach:**
|
|
119
|
+
|
|
120
|
+
1. The publisher releases an immutable version with compatibility, affected modules, migration guidance, and deprecation dates.
|
|
121
|
+
2. Catalogue owners identify projects pinned to the earlier version.
|
|
122
|
+
3. Each project compares its receipt and materialised standards with the candidate release.
|
|
123
|
+
4. One project adopts immediately, one records a time-bound exception, and one remains unaffected because the module does not apply.
|
|
124
|
+
5. Each decision is approved and evidenced locally.
|
|
125
|
+
6. The old source remains available long enough to interpret historical receipts.
|
|
126
|
+
|
|
127
|
+
**Key lesson:** A shared release creates review work; it does not create permission to overwrite every consuming project.
|
|
128
|
+
|
|
129
|
+
## Adapt an example safely
|
|
130
|
+
|
|
131
|
+
For your own project, replace:
|
|
132
|
+
|
|
133
|
+
- users and outcomes with direct evidence;
|
|
134
|
+
- risk and data classifications with confirmed context;
|
|
135
|
+
- personas with the installed relevant catalogue;
|
|
136
|
+
- Blueprint and module choices with reviewed local packages;
|
|
137
|
+
- tests and Manual QA with observable acceptance criteria;
|
|
138
|
+
- approvers with people who have real authority.
|
|
139
|
+
|
|
140
|
+
Retain the boundaries: personas advise, SPECS holds durable truth, reusable inputs require review, Build requires explicit scope approval, and Manual QA remains human.
|
|
141
|
+
|
|
142
|
+
## Related guides
|
|
143
|
+
|
|
144
|
+
- [All EWAI guides](../README.md)
|
|
145
|
+
- [Product Owner guide](../product-owner-guide.md)
|
|
146
|
+
- [Developer delivery guide](../developer-delivery-guide.md)
|
|
147
|
+
- [Organisation rollout](../organisation-rollout-guide.md)
|