aw-spec-cli 0.1.7 → 0.1.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/assets/.appweaver/DESIGN-FORMAT.md +200 -0
- package/assets/.appweaver/ORCH-DIALECT.md +156 -0
- package/assets/.appweaver/RULE-PARTITION.md +175 -0
- package/assets/.appweaver/STACK-PROFILES.md +461 -0
- package/assets/.appweaver/ai-rules.md +180 -0
- package/assets/.appweaver/domain.json +1 -0
- package/assets/.appweaver/extensions/.registry +19 -0
- package/assets/.appweaver/extensions/agent-context/README.md +57 -0
- package/assets/.appweaver/extensions/agent-context/agent-context-config.yml +4 -0
- package/assets/.appweaver/extensions/agent-context/commands/aw-spec.agent-context.update.md +26 -0
- package/assets/.appweaver/extensions/agent-context/extension.yml +37 -0
- package/assets/.appweaver/extensions/agent-context/scripts/bash/update-agent-context.sh +201 -0
- package/assets/.appweaver/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +237 -0
- package/assets/.appweaver/extensions.yml +16 -0
- package/assets/.appweaver/feature.json +3 -0
- package/assets/.appweaver/init-options.json +9 -0
- package/assets/.appweaver/integration.json +15 -0
- package/assets/.appweaver/integrations/aw-spec.manifest.json +9 -0
- package/assets/.appweaver/interpreter/run-skill.py +1176 -0
- package/assets/.appweaver/memory/constitution.md +50 -0
- package/assets/.appweaver/orchestrator/.smoke-out/smoke.md +6 -0
- package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +94 -0
- package/assets/.appweaver/orchestrator/README.md +300 -0
- package/assets/.appweaver/orchestrator/adapters/claude_agent_sdk.py +74 -0
- package/assets/.appweaver/orchestrator/adapters/google_antigravity.py +74 -0
- package/assets/.appweaver/orchestrator/modules/delta-design.orch.yaml +105 -0
- package/assets/.appweaver/orchestrator/modules/delta-spec.orch.yaml +101 -0
- package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +90 -0
- package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +126 -0
- package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +123 -0
- package/assets/.appweaver/orchestrator/orchestrator.py +1721 -0
- package/assets/.appweaver/orchestrator/rev-templates/ai-rules.reference.md +40 -0
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +101 -0
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +245 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-constitution.skeleton.md +63 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-requirements.skeleton.md +48 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +59 -0
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-file.skeleton.md +39 -0
- package/assets/.appweaver/orchestrator/rev-templates/frontend-rule-file.skeleton.md +63 -0
- package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +116 -0
- package/assets/.appweaver/orchestrator/rev-templates/technical-constitution.skeleton.md +106 -0
- package/assets/.appweaver/orchestrator/rev-templates/technical-rule-file.skeleton.md +54 -0
- package/assets/.appweaver/orchestrator/rev-templates/ui-constitution.skeleton.md +125 -0
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +123 -0
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +294 -0
- package/assets/.appweaver/orchestrator/workflows/_smoke.orch.yaml +160 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-add-component.orch.yaml +270 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +934 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-delta-design.orch.yaml +251 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-design.orch.yaml +265 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +437 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +197 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +475 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +181 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +727 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml +100 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-dependency-tree.orch.yaml +69 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-deploy.orch.yaml +85 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-design-ui.orch.yaml +386 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-design.orch.yaml +382 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +462 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml +265 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-delta.orch.yaml +253 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement-ui.orch.yaml +267 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +287 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-inventory.orch.yaml +238 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +1822 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +293 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +194 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-domain.orch.yaml +83 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-feature.orch.yaml +128 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +296 -0
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +439 -0
- package/assets/.appweaver/scripts/bash/aw-inventory.sh +17 -0
- package/assets/.appweaver/scripts/bash/aw-parity.sh +13 -0
- package/assets/.appweaver/scripts/bash/aw-rev-constitution.sh +13 -0
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +2626 -0
- package/assets/.appweaver/scripts/bash/aw-xref.sh +15 -0
- package/assets/.appweaver/scripts/bash/common.sh +533 -0
- package/assets/.appweaver/scripts/powershell/aw-inventory.ps1 +17 -0
- package/assets/.appweaver/scripts/powershell/aw-parity.ps1 +13 -0
- package/assets/.appweaver/scripts/powershell/aw-rev-constitution.ps1 +13 -0
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +2232 -0
- package/assets/.appweaver/scripts/powershell/aw-xref.ps1 +15 -0
- package/assets/.appweaver/scripts/python/aw-component-catalog.py +121 -0
- package/assets/.appweaver/scripts/python/aw-inventory.py +1180 -0
- package/assets/.appweaver/scripts/python/aw-parity.py +380 -0
- package/assets/.appweaver/scripts/python/aw-rev-constitution.py +329 -0
- package/assets/.appweaver/scripts/python/aw-stack.py +1251 -0
- package/assets/.appweaver/scripts/python/aw-xref.py +1330 -0
- package/assets/.appweaver/scripts/python/validate_okf.py +352 -0
- package/assets/.appweaver/stack-profiles/angular.json +16 -0
- package/assets/.appweaver/stack-profiles/blazor-wasm.json +17 -0
- package/assets/.appweaver/stack-profiles/dotnet-webapi.json +15 -0
- package/assets/.appweaver/stack-profiles/go-chi.json +14 -0
- package/assets/.appweaver/stack-profiles/java-spring.json +16 -0
- package/assets/.appweaver/stack-profiles/nextjs.json +16 -0
- package/assets/.appweaver/stack-profiles/node-express.json +15 -0
- package/assets/.appweaver/stack-profiles/python-fastapi.json +16 -0
- package/assets/.appweaver/stack-profiles/react-vite.json +17 -0
- package/assets/.appweaver/stack-profiles/sveltekit.json +16 -0
- package/assets/.appweaver/stack-profiles/vue-vite.json +17 -0
- package/assets/.appweaver/stacks.json +3 -0
- package/assets/.appweaver/templates/constitution-domain-template.md +116 -0
- package/assets/.appweaver/templates/constitution-technical-template.md +108 -0
- package/assets/.appweaver/templates/constitution-ui-template.md +116 -0
- package/assets/.appweaver/templates/delta-design-template.md +69 -0
- package/assets/.appweaver/templates/delta-spec-template.md +63 -0
- package/assets/.appweaver/templates/design-template.md +383 -0
- package/assets/.appweaver/templates/okf-concept-template.md +114 -0
- package/assets/.appweaver/templates/parity-manifest-template.json +49 -0
- package/assets/.appweaver/templates/source-map-template.md +85 -0
- package/assets/.appweaver/templates/spec-template.md +309 -0
- package/assets/.appweaver/templates/ui-design-template.md +273 -0
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.Reference.pack.txt +25248 -0
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.pack.txt +5726 -0
- package/assets/foundations/dotnet/ModularMonolith/pack-foundation.ps1 +145 -0
- package/assets/foundations/dotnet/ModularMonolith/pack-foundation.sh +196 -0
- package/assets/foundations/dotnet/ModularMonolith/pack-reference-foundation.ps1 +157 -0
- package/assets/foundations/dotnet/ModularMonolith/pack-reference-foundation.sh +209 -0
- package/assets/foundations/dotnet/ModularMonolith/unpack-foundation.ps1 +126 -0
- package/assets/foundations/dotnet/ModularMonolith/unpack-foundation.sh +217 -0
- package/assets/foundations/dotnet/ModularMonolith/unpack-reference-foundation.ps1 +129 -0
- package/assets/foundations/dotnet/ModularMonolith/unpack-reference-foundation.sh +218 -0
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.Reference.pack.txt +19318 -0
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.pack.txt +2833 -0
- package/assets/foundations/dotnet/VerticalSlice/pack-foundation.ps1 +145 -0
- package/assets/foundations/dotnet/VerticalSlice/pack-foundation.sh +196 -0
- package/assets/foundations/dotnet/VerticalSlice/pack-reference-foundation.ps1 +157 -0
- package/assets/foundations/dotnet/VerticalSlice/pack-reference-foundation.sh +209 -0
- package/assets/foundations/dotnet/VerticalSlice/unpack-foundation.ps1 +126 -0
- package/assets/foundations/dotnet/VerticalSlice/unpack-foundation.sh +217 -0
- package/assets/foundations/dotnet/VerticalSlice/unpack-reference-foundation.ps1 +129 -0
- package/assets/foundations/dotnet/VerticalSlice/unpack-reference-foundation.sh +218 -0
- package/assets/foundations/dotnet/components/Email/README.md +119 -0
- package/assets/foundations/dotnet/components/Email/ReferenceEndpoints/SendEmailEndpoint.cs +84 -0
- package/assets/foundations/dotnet/components/Email/integration.md +300 -0
- package/assets/foundations/dotnet/components/Jobs/README.md +113 -0
- package/assets/foundations/dotnet/components/Jobs/integration.md +259 -0
- package/assets/foundations/dotnet/components/QrGenerator/README.md +85 -0
- package/assets/foundations/dotnet/components/QrGenerator/ReferenceEndpoints/GenerateQrEndpoint.cs +57 -0
- package/assets/foundations/dotnet/components/QrGenerator/integration.md +230 -0
- package/assets/foundations/dotnet/components/README.md +74 -0
- package/assets/guardrails/README.md +222 -0
- package/assets/guardrails/domain/healthcare/ai-rules.domain.md +34 -0
- package/assets/guardrails/domain/healthcare/api-versioning.domain.md +17 -0
- package/assets/guardrails/domain/healthcare/auditing.domain.md +97 -0
- package/assets/guardrails/domain/healthcare/authorization.domain.md +26 -0
- package/assets/guardrails/domain/healthcare/clinical-terms.md +20 -0
- package/assets/guardrails/domain/healthcare/coding-standards.domain.md +26 -0
- package/assets/guardrails/domain/healthcare/consent.md +19 -0
- package/assets/guardrails/domain/healthcare/cqrs.domain.md +12 -0
- package/assets/guardrails/domain/healthcare/data-classification.domain.md +28 -0
- package/assets/guardrails/domain/healthcare/dependency-policy.domain.md +11 -0
- package/assets/guardrails/domain/healthcare/dicom.md +15 -0
- package/assets/guardrails/domain/healthcare/domain-constitution.md +119 -0
- package/assets/guardrails/domain/healthcare/domain-driven-design.domain.md +28 -0
- package/assets/guardrails/domain/healthcare/eventing.domain.md +18 -0
- package/assets/guardrails/domain/healthcare/fhir.md +36 -0
- package/assets/guardrails/domain/healthcare/folder-structure.domain.md +25 -0
- package/assets/guardrails/domain/healthcare/hipaa.md +34 -0
- package/assets/guardrails/domain/healthcare/hl7.md +15 -0
- package/assets/guardrails/domain/healthcare/ihe-conformance.md +31 -0
- package/assets/guardrails/domain/healthcare/integration-terms.md +21 -0
- package/assets/guardrails/domain/healthcare/persistence.domain.md +20 -0
- package/assets/guardrails/domain/healthcare/terminology.md +30 -0
- package/assets/guardrails/domain/healthcare/testing.domain.md +15 -0
- package/assets/guardrails/domain/healthcare/ux/accessibility-standards.md +36 -0
- package/assets/guardrails/domain/healthcare/ux/content-design.md +32 -0
- package/assets/guardrails/domain/healthcare/ux/interaction-states.md +44 -0
- package/assets/guardrails/domain/healthcare/ux/journey-mapping.md +40 -0
- package/assets/guardrails/domain/healthcare/vertical-slices.domain.md +18 -0
- package/assets/guardrails/domain/healthcare/zero-trust.domain.md +12 -0
- package/assets/guardrails/domain/pharma/ai-rules.domain.md +32 -0
- package/assets/guardrails/domain/pharma/api-versioning.domain.md +20 -0
- package/assets/guardrails/domain/pharma/atc.md +22 -0
- package/assets/guardrails/domain/pharma/auditing.domain.md +90 -0
- package/assets/guardrails/domain/pharma/authorization.domain.md +25 -0
- package/assets/guardrails/domain/pharma/coding-standards.domain.md +28 -0
- package/assets/guardrails/domain/pharma/cqrs.domain.md +16 -0
- package/assets/guardrails/domain/pharma/data-classification.domain.md +24 -0
- package/assets/guardrails/domain/pharma/data-provenance.md +21 -0
- package/assets/guardrails/domain/pharma/dependency-policy.domain.md +11 -0
- package/assets/guardrails/domain/pharma/domain-constitution.md +113 -0
- package/assets/guardrails/domain/pharma/domain-driven-design.domain.md +36 -0
- package/assets/guardrails/domain/pharma/domain-requirements.sample.md +103 -0
- package/assets/guardrails/domain/pharma/eventing.domain.md +18 -0
- package/assets/guardrails/domain/pharma/fhir.md +31 -0
- package/assets/guardrails/domain/pharma/folder-structure.domain.md +26 -0
- package/assets/guardrails/domain/pharma/hl7.md +17 -0
- package/assets/guardrails/domain/pharma/idmp.md +26 -0
- package/assets/guardrails/domain/pharma/integration-terms.md +21 -0
- package/assets/guardrails/domain/pharma/ndc.md +28 -0
- package/assets/guardrails/domain/pharma/persistence.domain.md +23 -0
- package/assets/guardrails/domain/pharma/pharma-terms.md +27 -0
- package/assets/guardrails/domain/pharma/product-lifecycle.domain.md +30 -0
- package/assets/guardrails/domain/pharma/regulatory-compliance.md +19 -0
- package/assets/guardrails/domain/pharma/terminology.md +32 -0
- package/assets/guardrails/domain/pharma/testing.domain.md +19 -0
- package/assets/guardrails/domain/pharma/vertical-slices.domain.md +17 -0
- package/assets/guardrails/domain/pharma/zero-trust.domain.md +12 -0
- package/assets/guardrails/projects/dotnet-default-project/domain/domain-requirements.md +58 -0
- package/assets/guardrails/projects/dotnet-default-project/domain-rule-bindings.md +113 -0
- package/assets/guardrails/projects/dotnet-default-project/frontend/ui-requirements.md +43 -0
- package/assets/guardrails/projects/dotnet-default-project/service/technical-requirements.md +40 -0
- package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +263 -0
- package/assets/guardrails/requirement-spec.txt +27 -0
- package/assets/guardrails/technology/dotnet-webapi/PACKAGING.md +184 -0
- package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +44 -0
- package/assets/guardrails/technology/dotnet-webapi/auditing.md +96 -0
- package/assets/guardrails/technology/dotnet-webapi/authorization-matrix.md +14 -0
- package/assets/guardrails/technology/dotnet-webapi/authorization.md +39 -0
- package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +54 -0
- package/assets/guardrails/technology/dotnet-webapi/coding-standards.md +87 -0
- package/assets/guardrails/technology/dotnet-webapi/cqrs.md +63 -0
- package/assets/guardrails/technology/dotnet-webapi/data-classification.md +38 -0
- package/assets/guardrails/technology/dotnet-webapi/dependency-policy.md +40 -0
- package/assets/guardrails/technology/dotnet-webapi/domain-driven-design.md +91 -0
- package/assets/guardrails/technology/dotnet-webapi/eventing.md +57 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/api-versioning.md +75 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/auditing.md +84 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/authorization.md +68 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/clean-architecture.md +37 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/cqrs.md +97 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/domain-driven-design.md +141 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/eventing.md +46 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/persistence.md +207 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/vertical-slices.md +151 -0
- package/assets/guardrails/technology/dotnet-webapi/examples/zero-trust.md +48 -0
- package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +61 -0
- package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +47 -0
- package/assets/guardrails/technology/dotnet-webapi/persistence.md +82 -0
- package/assets/guardrails/technology/dotnet-webapi/technology-constitution.md +162 -0
- package/assets/guardrails/technology/dotnet-webapi/testing.md +55 -0
- package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +70 -0
- package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +48 -0
- package/assets/guardrails/technology/java-spring/README.md +62 -0
- package/assets/guardrails/technology/nextjs/accessibility-implementation.md +56 -0
- package/assets/guardrails/technology/nextjs/api-client.md +56 -0
- package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +174 -0
- package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +203 -0
- package/assets/guardrails/technology/nextjs/auth-session.md +68 -0
- package/assets/guardrails/technology/nextjs/client-security.md +69 -0
- package/assets/guardrails/technology/nextjs/component-architecture.md +60 -0
- package/assets/guardrails/technology/nextjs/component-conventions.md +58 -0
- package/assets/guardrails/technology/nextjs/design-system.md +60 -0
- package/assets/guardrails/technology/nextjs/error-handling.md +72 -0
- package/assets/guardrails/technology/nextjs/forms-and-validation.md +75 -0
- package/assets/guardrails/technology/nextjs/frontend-testing.md +94 -0
- package/assets/guardrails/technology/nextjs/i18n.md +57 -0
- package/assets/guardrails/technology/nextjs/observability.md +67 -0
- package/assets/guardrails/technology/nextjs/performance-budgets.md +66 -0
- package/assets/guardrails/technology/nextjs/routing-navigation.md +52 -0
- package/assets/guardrails/technology/nextjs/state-management.md +70 -0
- package/assets/guardrails/technology/nextjs/ui-constitution.md +166 -0
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/utils/copy-assets.js +8 -8
- package/dist/utils/copy-assets.js.map +1 -1
- package/package.json +1 -1
- package/assets/docs/pharma-constitution.my-ref.md +0 -86
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
rev-templates/ai-rules.reference.md — domain-agnostic AI OPERATING rules for
|
|
3
|
+
the reverse-engineering authors. Unlike the other files in this folder this is
|
|
4
|
+
NOT a shape skeleton — it is genuine, generic operating guidance (how to
|
|
5
|
+
behave), and it asserts NO project principle, NO domain content, and NO tech
|
|
6
|
+
stack. It is safe to load directly. Kept here (not in the greenfield guardrails/
|
|
7
|
+
tree) so the brownfield reverse-engineering authors are self-contained on a real
|
|
8
|
+
brownfield repo.
|
|
9
|
+
-->
|
|
10
|
+
# AI Operational Rules (reverse-engineering)
|
|
11
|
+
|
|
12
|
+
> Pure operating rules — domain-agnostic, stack-agnostic. Applies to every brownfield
|
|
13
|
+
> reverse-engineering authoring step (onboard's constitution + rule-set authors, adopt).
|
|
14
|
+
|
|
15
|
+
The **code, the deterministic scan, and any adopted spec.md / design.md / source-map.md + the
|
|
16
|
+
OKF bundle are ground truth.** Author only what they evidence; they override any pre-trained
|
|
17
|
+
habit and any greenfield template ideal.
|
|
18
|
+
|
|
19
|
+
## Evidence discipline
|
|
20
|
+
|
|
21
|
+
- Author a principle / rule ONLY for a trait the adopted docs actually evidence. If the code does
|
|
22
|
+
not show it, it is not a rule here.
|
|
23
|
+
- CITE the concrete proof inline (a design section, a named type / port / config, a spec id). An
|
|
24
|
+
assertion you cannot ground does not belong in the output.
|
|
25
|
+
- State partial / stubbed / optional behaviour AT THE LEVEL THE CODE REACHES — never the ideal.
|
|
26
|
+
Route unmet ideals / stubs / deferrals to the as-built debt list, never assert them.
|
|
27
|
+
|
|
28
|
+
## Format vs content
|
|
29
|
+
|
|
30
|
+
- The skeletons in this folder are SHAPE ONLY. Copy their headings, frontmatter, and tone; never
|
|
31
|
+
copy a bracketed token or an example concept as if it were this project's value.
|
|
32
|
+
- Do NOT import a concept, identifier, terminology, regulatory claim, or rule that this project's
|
|
33
|
+
code / specs / designs do not evidence.
|
|
34
|
+
|
|
35
|
+
## Operating envelope
|
|
36
|
+
|
|
37
|
+
- Write ONLY the declared output target (or, for a rule set, only inside the project folder). No
|
|
38
|
+
drive-by edits to unrelated files.
|
|
39
|
+
- No secrets, connection strings, or production hostnames in any authored file.
|
|
40
|
+
- Preserve the rule partition: design and implement receive no domain file.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
3
|
+
rev-templates/delta-design-template.skeleton.md — SHAPE-ONLY reference.
|
|
4
|
+
|
|
5
|
+
This file is the FORMAT reference for the reverse-engineered DELTA-design
|
|
6
|
+
TEMPLATE that onboard installs at
|
|
7
|
+
.appweaver/templates/overrides/delta-design-template.md. It carries the neutral
|
|
8
|
+
bones of a change record — the classification triple, the impact and
|
|
9
|
+
regression sections, the two ledgers, the close contract — and NOTHING ELSE.
|
|
10
|
+
|
|
11
|
+
IT NAMES NO LAYERING AND NO TECHNOLOGY. The "Section" column below is a SLOT:
|
|
12
|
+
it is filled with the ACTUAL sections of the master design template generated
|
|
13
|
+
alongside this one, whatever the code turned out to be organised into. A
|
|
14
|
+
greenfield delta template's example rows name its four layers; naming any
|
|
15
|
+
layer here would re-import exactly the assumption onboard exists to displace.
|
|
16
|
+
|
|
17
|
+
MIRRORS THE MASTER, ALWAYS. The delta-design module classifies changes "per
|
|
18
|
+
the master's OWN section structure", so this template is derived FROM the
|
|
19
|
+
generated master design template rather than from a fixed list. If the master
|
|
20
|
+
has axes A, B and C, the example rows here name A, B and C. That coupling is
|
|
21
|
+
the point: a change is classified against the document it amends.
|
|
22
|
+
|
|
23
|
+
DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
|
|
24
|
+
here to leak):
|
|
25
|
+
• ONE MASTER — a change amends specs/<Aggregate>/design.md; it never opens a
|
|
26
|
+
second design document.
|
|
27
|
+
• ADDED / MODIFIED / REMOVED — the complete classification. A shared element
|
|
28
|
+
is MODIFIED in place, never duplicated into the change.
|
|
29
|
+
• EVERY ROW SERVES A SPEC ID — the delta reads the spec, never the domain
|
|
30
|
+
rule files.
|
|
31
|
+
• TECHNOLOGY-AGNOSTIC — signatures and field shapes, no code, exactly as in
|
|
32
|
+
the master.
|
|
33
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
34
|
+
-->
|
|
35
|
+
# Delta Design — [CR-ID]: [TITLE]
|
|
36
|
+
|
|
37
|
+
**Feature (aggregate)**: [Aggregate]
|
|
38
|
+
|
|
39
|
+
**Base version**: [vX.Y]
|
|
40
|
+
|
|
41
|
+
<!--
|
|
42
|
+
This delta applies to the SINGLE master design at specs/[Aggregate]/design.md
|
|
43
|
+
— never a new design doc. Classify every design change ADDED / MODIFIED /
|
|
44
|
+
REMOVED against the current master, per the MASTER'S OWN SECTIONS, in the same
|
|
45
|
+
technology-agnostic form: behaviour as signatures + pre/post/invariant/raises,
|
|
46
|
+
contracts as field shapes, no code. A new command is a new USER STORY realised
|
|
47
|
+
as delta elements, not a new feature. After this delta is applied,
|
|
48
|
+
`implement-delta` regenerates the touched slice and regression re-tests the
|
|
49
|
+
dependents of every shared element.
|
|
50
|
+
-->
|
|
51
|
+
|
|
52
|
+
## Change summary
|
|
53
|
+
|
|
54
|
+
[One paragraph: what the design change is and which user story / spec delta it serves.]
|
|
55
|
+
|
|
56
|
+
## ADDED — new design elements
|
|
57
|
+
|
|
58
|
+
<!-- New elements and the realisation of any new spec constraint, classification
|
|
59
|
+
or contract. "Section" names a section of THIS project's master design —
|
|
60
|
+
the same section titles the generated design template carries. -->
|
|
61
|
+
|
|
62
|
+
| Section (§ in design.md) | Element | Kind | Serves |
|
|
63
|
+
|---|---|---|---|
|
|
64
|
+
| [§ of the master's own structure] | `[element]` | [kind] | US-[n] · FR-[nnn] |
|
|
65
|
+
|
|
66
|
+
## MODIFIED — existing design elements
|
|
67
|
+
|
|
68
|
+
<!-- Edits to elements the master already defines. A shared element is modified
|
|
69
|
+
here, in place — never copied into the change. -->
|
|
70
|
+
|
|
71
|
+
| Section (§ in design.md) | Element | What changes | Why |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| [§ of the master's own structure] | `[element]` | [the edit] | US-[n] |
|
|
74
|
+
|
|
75
|
+
## REMOVED
|
|
76
|
+
|
|
77
|
+
- [design element removed + why] — or `None`
|
|
78
|
+
|
|
79
|
+
## Cross-section impact
|
|
80
|
+
|
|
81
|
+
[Which of the master's sections ripple; shared elements touched; whether a data
|
|
82
|
+
migration is needed (yes/no); any contract change other systems couple to.]
|
|
83
|
+
|
|
84
|
+
## Regression targets
|
|
85
|
+
|
|
86
|
+
[Existing user stories / behaviours to re-verify because a shared element
|
|
87
|
+
changed.]
|
|
88
|
+
|
|
89
|
+
## New assumptions / deviations (from this change)
|
|
90
|
+
|
|
91
|
+
<!-- Anything this change defers — folds into the master's DA-n / WA-n ledgers
|
|
92
|
+
on apply. -->
|
|
93
|
+
|
|
94
|
+
- **DA-[n]**: [assumption to clarify later] — or `None`
|
|
95
|
+
- **WA-[n]**: [deviation to clear later] — or `None`
|
|
96
|
+
|
|
97
|
+
## On close
|
|
98
|
+
|
|
99
|
+
`finalize-delta` merges this record into the master design.md and appends the
|
|
100
|
+
Change History row; `close-delta` bumps the version and archives the change
|
|
101
|
+
under `changes/archive/`.
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
3
|
+
rev-templates/design-template.skeleton.md — SHAPE-ONLY reference.
|
|
4
|
+
|
|
5
|
+
This file is the FORMAT reference for the reverse-engineered DESIGN TEMPLATE
|
|
6
|
+
that onboard installs at .appweaver/templates/overrides/design-template.md. It
|
|
7
|
+
carries the neutral bones every design document has — the header block, the
|
|
8
|
+
authoring contract, the traceability spine, the two deferral ledgers, the
|
|
9
|
+
Change History — and the section skeleton, and NOTHING ELSE.
|
|
10
|
+
|
|
11
|
+
IT NAMES NO LAYERING, NO ARCHITECTURE STYLE AND NO TECHNOLOGY — not the one a
|
|
12
|
+
greenfield template would assume, and not an alternative to it either, because
|
|
13
|
+
naming any of them hands the generator an answer to the single question it
|
|
14
|
+
exists to ask the code. The §2 axes below are SLOTS, discovered from the repo's
|
|
15
|
+
own folders, projects and modules. Every [BRACKET] token is filled FROM THE
|
|
16
|
+
CODE, never copied.
|
|
17
|
+
|
|
18
|
+
THIS IS A TEMPLATE OF A TEMPLATE. What onboard generates from it is not a
|
|
19
|
+
filled design — it is the project's design TEMPLATE, which the forward
|
|
20
|
+
`design` phase and `adopt` then fill once per feature. So the generated file
|
|
21
|
+
keeps [PLACEHOLDER] tokens and authoring comments; what onboard replaces is
|
|
22
|
+
the STRUCTURE (which sections exist, what they are called), not the content.
|
|
23
|
+
|
|
24
|
+
WHAT IS PINNED, AND WHY (DESIGN-FORMAT.md § Brownfield variant is the
|
|
25
|
+
authority — these are the only fixed points, and each earns it by being
|
|
26
|
+
something a tool keys on):
|
|
27
|
+
• §1.2 is the DOMAIN / DATA MODEL. `aw-xref` reads it for `<Other>Id`
|
|
28
|
+
reference edges, so its position is machinery, not taste.
|
|
29
|
+
• Exactly one §2 subsection's heading contains the word "Integration".
|
|
30
|
+
`aw-xref` matches it by keyword to extract contract edges, which is what
|
|
31
|
+
lets a derived layout and the greenfield layout be read by one tool.
|
|
32
|
+
• The traceability spine (§4) and both ledgers (§5 DA-n, §6 WA-n) survive
|
|
33
|
+
every layout — the analyze gates read them.
|
|
34
|
+
• The §0–§6 numbering itself: the forward `design` bootstrap_bf branch
|
|
35
|
+
names those sections in its prompt.
|
|
36
|
+
Everything else — how many §2 axes there are, what they are called, what
|
|
37
|
+
lives in each — is the code's answer, not the kit's.
|
|
38
|
+
|
|
39
|
+
DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
|
|
40
|
+
here to leak):
|
|
41
|
+
• AS-BUILT — describe the structural convention the code ACTUALLY follows,
|
|
42
|
+
confirmed by reading source, never a convention it ought to follow.
|
|
43
|
+
• ONE AXIS PER RECURRING STRUCTURE — a component the code has that fits no
|
|
44
|
+
textbook layer gets its own section; a layer the code lacks does not
|
|
45
|
+
appear at all, and its absence is not a gap.
|
|
46
|
+
• NOT DEBT — being organised unlike a reference architecture is the as-built
|
|
47
|
+
shape, recorded in §1.1. The §6 ledger takes only debt the code itself
|
|
48
|
+
evidences.
|
|
49
|
+
• TECHNOLOGY-AGNOSTIC — the generated template stays language-free even
|
|
50
|
+
though it was derived from a real stack: signatures + pre/post/invariant/
|
|
51
|
+
raises, contracts as field shapes. The stack binds at `implement`.
|
|
52
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
53
|
+
-->
|
|
54
|
+
# Design: [AGGREGATE]
|
|
55
|
+
|
|
56
|
+
**Aggregate (feature)**: `[Aggregate]`
|
|
57
|
+
|
|
58
|
+
**Design home**: `specs/[Aggregate]/design.md`
|
|
59
|
+
|
|
60
|
+
**Source spec**: `specs/[Aggregate]/spec.md`
|
|
61
|
+
|
|
62
|
+
**Version**: v1.0
|
|
63
|
+
|
|
64
|
+
**Status**: Draft
|
|
65
|
+
|
|
66
|
+
<!--
|
|
67
|
+
WHAT THIS DOCUMENT IS
|
|
68
|
+
=====================
|
|
69
|
+
The single, living High-Level Design for ONE aggregate — the MEDIATOR between
|
|
70
|
+
spec.md (WHAT/WHY) and the generated code (HOW). It carries structure,
|
|
71
|
+
contracts, behaviour and decisions; it is not code.
|
|
72
|
+
|
|
73
|
+
ANCHORING RULES
|
|
74
|
+
- Every design element traces UP to a spec id (FR-/BR-/CN-/DC-/IC-/US-/SC-)
|
|
75
|
+
and the whole spec is covered DOWN here (§4). No element without a spec
|
|
76
|
+
reason; no requirement without a design home.
|
|
77
|
+
- THE SPEC IS THE ONLY DOMAIN INPUT. Design reads the spec + the technical
|
|
78
|
+
standards, never the domain rule files. A domain rule the spec omits is
|
|
79
|
+
recorded as a §5 assumption, never smuggled in.
|
|
80
|
+
- Feature = aggregate. A later requirement is a DELTA on this document.
|
|
81
|
+
|
|
82
|
+
STRUCTURE FOLLOWS THIS PROJECT'S CODE
|
|
83
|
+
- [GENERATED_STRUCTURE_NOTE] — form: one or two sentences naming the
|
|
84
|
+
structural convention this repo actually follows and the dependency
|
|
85
|
+
direction it observes, with the folders/projects that evidence it. This
|
|
86
|
+
stands where a greenfield template would state a standing layering rule.
|
|
87
|
+
|
|
88
|
+
TECHNOLOGY-AGNOSTIC (mandatory)
|
|
89
|
+
- Express behaviour as SIGNATURES + pre/post/invariant/raises and contracts
|
|
90
|
+
as field shapes — never language code. Conceptual types only
|
|
91
|
+
(string, int, decimal, enum, list<T>, set<T>, id<T>, money, date). The same
|
|
92
|
+
design must be generatable on another stack without edits.
|
|
93
|
+
|
|
94
|
+
HOW TO AUTHOR
|
|
95
|
+
- Fill every [PLACEHOLDER]; keep the section order. Omit a §2 subsection only
|
|
96
|
+
when this feature genuinely has nothing there (say why); never "N/A".
|
|
97
|
+
- §5 and §6 are MANDATORY ledgers. Empty reads "None (as of vX.Y)", never a
|
|
98
|
+
deletion.
|
|
99
|
+
- GROUND each filled section in the ACTUAL CODE and the reverse-engineered
|
|
100
|
+
governance — cite real file/folder paths and the technical-constitution
|
|
101
|
+
principle the decision rests on. Never a greenfield assumption.
|
|
102
|
+
- Delete these authoring comments as you fill each section.
|
|
103
|
+
-->
|
|
104
|
+
|
|
105
|
+
## 0. Design Overview
|
|
106
|
+
|
|
107
|
+
<!-- One paragraph: the shape of this aggregate and the 3–5 decisions that
|
|
108
|
+
matter most. The project's standing structural convention is NOT restated
|
|
109
|
+
here — it is §1.1. -->
|
|
110
|
+
|
|
111
|
+
[The architectural essence of this aggregate in 3–6 sentences.]
|
|
112
|
+
|
|
113
|
+
### Ubiquitous Language (design delta)
|
|
114
|
+
|
|
115
|
+
<!-- Only the terms this design introduces or sharpens beyond the spec. These
|
|
116
|
+
become code identifiers. -->
|
|
117
|
+
|
|
118
|
+
| Term | Meaning in this design |
|
|
119
|
+
|---|---|
|
|
120
|
+
| [Port / concept name] | [precise definition] |
|
|
121
|
+
|
|
122
|
+
## 1. Architecture Context & Domain Model
|
|
123
|
+
|
|
124
|
+
### 1.1 As-Built Architecture
|
|
125
|
+
|
|
126
|
+
[AS_BUILT_ARCHITECTURE_CONTENT]
|
|
127
|
+
<!-- Form: the structural convention THIS repo follows — its real
|
|
128
|
+
folder/project/module names, what each holds, the dependency direction
|
|
129
|
+
between them, and the technology base from constitution.technical.md —
|
|
130
|
+
each with a representative code path. A new feature ALIGNS to this rather
|
|
131
|
+
than introducing a second convention. State an inconsistency as an
|
|
132
|
+
inconsistency and name the dominant form; do not pick a winner the code
|
|
133
|
+
has not picked. -->
|
|
134
|
+
|
|
135
|
+
### 1.2 Domain / Data Model
|
|
136
|
+
|
|
137
|
+
<!-- PINNED ANCHOR — follow spec.md exactly. Entities & value objects are the
|
|
138
|
+
spec's Key Entities (SAME names); invariants are its Business Rules
|
|
139
|
+
(BR-nnn, cite each); the boundary is its Aggregate Boundary; states are its
|
|
140
|
+
lifecycle. Cross-slice references are BY ID and live here — the
|
|
141
|
+
cross-reference tool reads this section for those edges. -->
|
|
142
|
+
|
|
143
|
+
| Element | Kind | Fields / shape | Invariants (BR-) |
|
|
144
|
+
|---|---|---|---|
|
|
145
|
+
| `[Entity]` | entity [(root)] | [field: type, …] | BR-00X |
|
|
146
|
+
| `[ValueObject]` | value object | [field: type, …] | BR-00X |
|
|
147
|
+
|
|
148
|
+
**Lifecycle / states**: [states + transitions, or `None`]
|
|
149
|
+
|
|
150
|
+
**References to other aggregates**: [`<Other>Id` — by id only, or `None`]
|
|
151
|
+
|
|
152
|
+
## 2. Component & Behaviour Design
|
|
153
|
+
|
|
154
|
+
<!-- ONE `### 2.n` SUBSECTION PER RECURRING STRUCTURAL AXIS THIS PROJECT USES,
|
|
155
|
+
each TITLED with the project's OWN folder/tier/module name. The count and
|
|
156
|
+
the titles are the code's answer — the slots below are illustrative
|
|
157
|
+
positions, not a required set. In each: the components that live there,
|
|
158
|
+
their behaviour in signature form, and the contracts they expose or
|
|
159
|
+
require. -->
|
|
160
|
+
|
|
161
|
+
### 2.1 [PROJECT_STRUCTURAL_AXIS_NAME]
|
|
162
|
+
|
|
163
|
+
<!-- [What this axis holds in this codebase + the representative path that
|
|
164
|
+
evidences it.] -->
|
|
165
|
+
|
|
166
|
+
| Component | Behaviour (signature) | Pre / Post / Raises | Serves |
|
|
167
|
+
|---|---|---|---|
|
|
168
|
+
| `[Component]` | `[operation](args) -> result` | [pre / post / raises] | FR-00X · US-Y |
|
|
169
|
+
|
|
170
|
+
### 2.n [PROJECT_STRUCTURAL_AXIS_NAME]
|
|
171
|
+
|
|
172
|
+
<!-- … one per axis the code actually shows, then stop … -->
|
|
173
|
+
|
|
174
|
+
### 2.[N] External Integrations
|
|
175
|
+
|
|
176
|
+
<!-- PINNED ANCHOR — the heading MUST contain the word "Integration"; the
|
|
177
|
+
cross-reference tool matches it by keyword to extract contract edges. One
|
|
178
|
+
row per IC- the spec names, realised as the port/adapter this project's
|
|
179
|
+
own structure puts it in. Empty only if the spec has no IC-. -->
|
|
180
|
+
|
|
181
|
+
| Integration | Direction | Contract (field shape) | Realised in | Serves |
|
|
182
|
+
|---|---|---|---|---|
|
|
183
|
+
| `[External system]` | [in / out] | [request/response shape] | [§2.n component] | IC-00X |
|
|
184
|
+
|
|
185
|
+
## 3. Cross-Cutting Concerns
|
|
186
|
+
|
|
187
|
+
<!-- One row per concern this feature must honour. "Serves" is a spec id, or a
|
|
188
|
+
§5 DA-n where the technical constitution mandates the element and no
|
|
189
|
+
per-feature spec id exists — never a fabricated CN-. Keep only the rows
|
|
190
|
+
this project's governance actually carries. -->
|
|
191
|
+
|
|
192
|
+
| Concern | Design decision | Serves |
|
|
193
|
+
|---|---|---|
|
|
194
|
+
| [Concern from constitution.technical.md / the spec] | [where enforced] | [spec id / DA-n] |
|
|
195
|
+
|
|
196
|
+
## 4. Traceability (the spine)
|
|
197
|
+
|
|
198
|
+
<!-- The two-way guarantee: every FR/BR/CN/DC/IC/US/SC has a design home, and
|
|
199
|
+
every design element has a spec reason. EVERY CN-/DC-/IC- in the spec MUST
|
|
200
|
+
appear as a row. The last column names THIS project's own sections. -->
|
|
201
|
+
|
|
202
|
+
| Spec id | Type | Design element(s) | Section |
|
|
203
|
+
|---|---|---|---|
|
|
204
|
+
| FR-001 | requirement | `[element]` | [§ refs in this document's own structure] |
|
|
205
|
+
| BR-001 | invariant | [invariant home] | §1.2 |
|
|
206
|
+
| CN-001 | constraint | [where realised] | [§] |
|
|
207
|
+
| DC-001 | classification | [exposure enforcement] | [§] |
|
|
208
|
+
| IC-001 | contract | [port/adapter] | [§ Integrations] |
|
|
209
|
+
| US-1 | story | [end-to-end elements] | [§] |
|
|
210
|
+
| SC-001 | success | [where met + how verified] | [§] |
|
|
211
|
+
|
|
212
|
+
## 5. Assumptions (to clarify later)
|
|
213
|
+
|
|
214
|
+
<!-- MANDATORY LEDGER. Every default or open interpretation this design commits
|
|
215
|
+
to so it can proceed without blocking — including any cross-cutting element
|
|
216
|
+
the technical constitution mandates that has no per-feature spec id (state
|
|
217
|
+
the basis as "per Const. §<n>", which is what lets the analyze gate accept
|
|
218
|
+
it). Empty → "None (as of vX.Y)". -->
|
|
219
|
+
|
|
220
|
+
| id | Assumption | Why deferred | Impact if wrong | Owner / resolve-by |
|
|
221
|
+
|---|---|---|---|---|
|
|
222
|
+
| DA-1 | [what was assumed] | [why not clarified now] | [blast radius] | [role / phase] |
|
|
223
|
+
|
|
224
|
+
## 6. Deviations & Deferred Decisions (to clear later)
|
|
225
|
+
|
|
226
|
+
<!-- MANDATORY LEDGER. Structural debt KNOWINGLY taken — a shortcut, a temporary
|
|
227
|
+
coupling, a deferred split — with the proper end-state and the trigger that
|
|
228
|
+
forces the cleanup. AS-BUILT DISCIPLINE: this ledger records only debt the
|
|
229
|
+
CODE evidences. Being organised unlike a reference architecture is NOT a
|
|
230
|
+
deviation — that is the as-built shape and it belongs in §1.1.
|
|
231
|
+
Empty → "None (as of vX.Y)". -->
|
|
232
|
+
|
|
233
|
+
| id | Deviation taken | Proper end-state | Trigger to revisit | Serves / caused by |
|
|
234
|
+
|---|---|---|---|---|
|
|
235
|
+
| WA-1 | [the shortcut/coupling] | [the clean design] | [what forces it] | [FR / constraint] |
|
|
236
|
+
|
|
237
|
+
## Change History
|
|
238
|
+
|
|
239
|
+
<!-- In lockstep with spec.md. finalize-delta appends the row when it merges a
|
|
240
|
+
delta; close-delta bumps the version and stamps it into the header. A
|
|
241
|
+
change is a DELTA on this document, never a new design doc. Newest last. -->
|
|
242
|
+
|
|
243
|
+
| Version | Date | Change | User stories | CR |
|
|
244
|
+
|---------|------|--------|--------------|-----|
|
|
245
|
+
| v1.0 | [DATE] | Initial design | US-1 | — |
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
rev-templates/domain-constitution.skeleton.md — SHAPE-ONLY reference for the
|
|
3
|
+
domain-constitution SOURCE (guardrails/projects/[project]/domain/domain-constitution.md),
|
|
4
|
+
the human-readable
|
|
5
|
+
charter the domain half is authored from (so the normal /appweaver
|
|
6
|
+
constitution can re-derive it later). It shows the Project-Identity + Domain-
|
|
7
|
+
Principle shape ONLY. No principle set to inherit; every principle is
|
|
8
|
+
discovered from the adopted specs and cited.
|
|
9
|
+
|
|
10
|
+
THIS IS A PROJECT CHARTER, NOT AN AGGREGATE SPEC. Even with one adopted
|
|
11
|
+
aggregate, describe the domain / bounded context AS A WHOLE — the adopted
|
|
12
|
+
aggregate(s) are the current evidence, never the subject.
|
|
13
|
+
-->
|
|
14
|
+
# [PROJECT_NAME] Domain Constitution (as-built)
|
|
15
|
+
|
|
16
|
+
> `origin: reverse-engineered` · [YYYY-MM-DD]. Domain addenda to the technology base — compose
|
|
17
|
+
> with the technical half; not ratified on its own.
|
|
18
|
+
|
|
19
|
+
## Project Identity
|
|
20
|
+
|
|
21
|
+
- **Project name:** [PROJECT_NAME] (from the OKF overview).
|
|
22
|
+
- **Mission:** [from the OKF overview Purpose].
|
|
23
|
+
- **Bounded contexts / aggregate map:** [list the adopted aggregate(s) AND named external
|
|
24
|
+
references / ports as not-yet-adopted contexts — from the overview's aggregate map + index].
|
|
25
|
+
- **Architecture posture:** [as-built posture named from the designs — not an ideal].
|
|
26
|
+
|
|
27
|
+
## Domain Principles
|
|
28
|
+
|
|
29
|
+
<!-- Numbered to CONTINUE the technology base, which is authored later and is evidenced-only (do
|
|
30
|
+
NOT assume it ends at any fixed numeral). Use a stable "D1, D2, …" convention here — this is
|
|
31
|
+
the human charter, not a constitution half; the domain half's author reads the finished
|
|
32
|
+
technical half and assigns the roman numerals there. TITLE each by its DOMAIN CONCERN,
|
|
33
|
+
never by an aggregate name. State each as a rule that would still hold if a second aggregate
|
|
34
|
+
entered the same context; cite the aggregate(s) + spec ids as the evidence it generalises. -->
|
|
35
|
+
|
|
36
|
+
### D1 — [DOMAIN-CONCERN TITLE] [(NON-NEGOTIABLE)?]
|
|
37
|
+
[The rule the code ACTUALLY enforces — as-built, testable. Note an observed gap as a plain
|
|
38
|
+
principle, not a target.]
|
|
39
|
+
Extends technology [principle ref]. Evidence: [BR-/CN-/DC-/IC-/FR- ids]. → [rule file(s)]
|
|
40
|
+
|
|
41
|
+
### D2 — [DOMAIN-CONCERN TITLE] [(NON-NEGOTIABLE)?]
|
|
42
|
+
[…]
|
|
43
|
+
Extends technology [principle ref]. Evidence: [ids]. → [rule file(s)]
|
|
44
|
+
|
|
45
|
+
<!-- … one per domain concern the specs evidence … -->
|
|
46
|
+
|
|
47
|
+
## Folder Structure Additions
|
|
48
|
+
|
|
49
|
+
- [Only domain-specific additions the module actually uses; otherwise "none beyond the base".]
|
|
50
|
+
|
|
51
|
+
## Security & Governance Addenda
|
|
52
|
+
|
|
53
|
+
- [As-built posture: auditability, authorization surface, classification — named from evidence.]
|
|
54
|
+
- [Stub/permissive adapters recorded as migration debt, not claimed as satisfied ideals.]
|
|
55
|
+
|
|
56
|
+
## Governance Overrides
|
|
57
|
+
|
|
58
|
+
- [Domain change-authority / mandatory approvers — observed or TODO(GOVERNANCE): assign.]
|
|
59
|
+
- Base amendment procedure and SemVer policy in the technical half still apply.
|
|
60
|
+
|
|
61
|
+
## Domain Requirements Pointer
|
|
62
|
+
|
|
63
|
+
→ guardrails/projects/[project]/domain/domain-requirements.md
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
origin: reverse-engineered
|
|
3
|
+
generated_by: aw-spec-onboard/[VERSION]
|
|
4
|
+
---
|
|
5
|
+
<!--
|
|
6
|
+
rev-templates/domain-requirements.skeleton.md — SHAPE-ONLY reference for the
|
|
7
|
+
project's domain/domain-requirements.md: a PROJECT-LEVEL overview of the domain the project
|
|
8
|
+
governs (not a single-aggregate spec). It opens with a bounded-context /
|
|
9
|
+
module map (from the OKF overview + aggregate index), then per-subsection
|
|
10
|
+
pointers to the generated rule files, platform topology, and governance
|
|
11
|
+
overrides. Fill the map from the ACTUAL adopted aggregates + named external
|
|
12
|
+
references; add a subsection pointer ONLY for a file you generated.
|
|
13
|
+
-->
|
|
14
|
+
# DOMAIN REQUIREMENTS — [PROJECT_NAME] (project-level)
|
|
15
|
+
|
|
16
|
+
> Project-level enumeration and headline profiles for the **[PROJECT_NAME]** domain. Detailed
|
|
17
|
+
> domain rules are expanded in the sibling files in this folder. Reverse-engineered, as-built.
|
|
18
|
+
|
|
19
|
+
=====================================================================
|
|
20
|
+
[DOMAIN: Bounded Contexts / Modules]
|
|
21
|
+
=====================================================================
|
|
22
|
+
- [Context / module] — aggregate root: **[Aggregate]** (adopted — current evidence); owns
|
|
23
|
+
[entities] and the value objects ([named VOs]). See [[domain-driven-design.domain]].
|
|
24
|
+
- [Named external reference / port] — [role]; not adopted as an aggregate.
|
|
25
|
+
- [… list each bounded context observed in the OKF overview / aggregate index …]
|
|
26
|
+
|
|
27
|
+
=====================================================================
|
|
28
|
+
[DOMAIN: subsection pointers]
|
|
29
|
+
=====================================================================
|
|
30
|
+
[DOMAIN: <subsection>] -> guardrails/projects/[project]/domain/[generated-file].md
|
|
31
|
+
[DOMAIN: <subsection>] -> guardrails/projects/[project]/domain/[generated-file].md
|
|
32
|
+
[DOMAIN: Platform Topology] -> below
|
|
33
|
+
|
|
34
|
+
=====================================================================
|
|
35
|
+
[DOMAIN: Platform Topology]
|
|
36
|
+
=====================================================================
|
|
37
|
+
- [Runtime / external dependencies AS INVENTORIED — from the OKF overview/platform note, not an ideal.]
|
|
38
|
+
- [Only what the platform actually declares; unknowns are Open Questions, not assumed capabilities.]
|
|
39
|
+
|
|
40
|
+
=====================================================================
|
|
41
|
+
[DOMAIN: Governance Overrides]
|
|
42
|
+
=====================================================================
|
|
43
|
+
- [Approvers / change-authority observed or TODO(GOVERNANCE): assign at ratification.]
|
|
44
|
+
- [Any domain-specific review trigger the code/specs evidence.]
|
|
45
|
+
|
|
46
|
+
## Related
|
|
47
|
+
|
|
48
|
+
- [[domain-driven-design.domain]] · [[<generated siblings>]]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
rev-templates/domain-rule-bindings.skeleton.md — SHAPE-ONLY reference for the project's
|
|
3
|
+
domain-rule-bindings.md (resolve-domain reads it by that exact name — the symmetric
|
|
4
|
+
twin of tech-rule-bindings.md, which resolve-tech reads). It shows the five per-command headings, the RULE PARTITION (design +
|
|
5
|
+
implement get NO domain file), the bullet shape, and the quick-reference
|
|
6
|
+
table. It lists NO real rule files — every bullet is a placeholder for a file
|
|
7
|
+
the author actually generated from THIS project's evidence.
|
|
8
|
+
|
|
9
|
+
Wire ONLY files you generated. Never list a file you did not write.
|
|
10
|
+
-->
|
|
11
|
+
# [PROJECT_NAME] Domain — Command → Rule-File Map
|
|
12
|
+
|
|
13
|
+
Per-command list of the **[PROJECT_NAME] domain** rule files loaded (via `resolve-domain` +
|
|
14
|
+
`domain-select`, into the sticky standards set) for the spec-anchored orchestrator pipeline.
|
|
15
|
+
|
|
16
|
+
**The model (see `.appweaver/RULE-PARTITION.md`):** domain files feed only three
|
|
17
|
+
consumers — **specify** (authors them into the spec as FR/BR/CN-/DC-/IC-), **constitution** (the
|
|
18
|
+
domain principles), and the **gates** (conformance checklist). **design** and **implement** load
|
|
19
|
+
**NO** domain file — the domain reaches them solely through the spec/design ids. This is the rule
|
|
20
|
+
partition; preserve it exactly.
|
|
21
|
+
|
|
22
|
+
- All paths are workspace-relative and live in `guardrails/projects/[project]/domain/`.
|
|
23
|
+
- `resolve-domain --command <name>` collects the `- ` bullets under `## /<name>`.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## /aw-spec-constitution
|
|
28
|
+
<!-- Domain identity / regulatory / interop sources that become domain principles in
|
|
29
|
+
constitution.domain.md. -->
|
|
30
|
+
- guardrails/projects/[project]/domain/[identity-or-requirements-file].md
|
|
31
|
+
- guardrails/projects/[project]/domain/[each generated domain-principle source].md
|
|
32
|
+
|
|
33
|
+
## /aw-spec-specify
|
|
34
|
+
<!-- The FULL generated domain set. Specify models the domain and LIFTS the overlay constraints
|
|
35
|
+
into the spec's CN-/DC-/IC- (design/implement never see these files). -->
|
|
36
|
+
- guardrails/projects/[project]/domain/[each generated domain rule file].md
|
|
37
|
+
|
|
38
|
+
## /aw-spec-design
|
|
39
|
+
_None — design loads no domain file. Domain reaches design only through the spec (BR-/CN-/DC-/IC-)._
|
|
40
|
+
|
|
41
|
+
## /aw-spec-implement
|
|
42
|
+
_None — implement loads no domain file. Domain reaches implement only through design.md._
|
|
43
|
+
|
|
44
|
+
## /aw-spec-gate
|
|
45
|
+
<!-- Conformance checklist for the gates (analyze-design · analyze-slice): the domain-derived
|
|
46
|
+
constraints design/implement were NOT given as authoring input, VALIDATED against output. -->
|
|
47
|
+
- guardrails/projects/[project]/domain/[each *.domain.md overlay to validate against].md
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Quick reference (command → domain file count)
|
|
52
|
+
|
|
53
|
+
| Command | Domain rule files | Role |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| /aw-spec-constitution | [n] | domain principles |
|
|
56
|
+
| /aw-spec-specify | [n] | author into spec (lift → CN-/DC-/IC-) |
|
|
57
|
+
| /aw-spec-design | 0 | none — spec is the only domain input |
|
|
58
|
+
| /aw-spec-implement | 0 | none — design is the only domain input |
|
|
59
|
+
| /aw-spec-gate | [n] | conformance checklist (validate, don't author) |
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
origin: reverse-engineered
|
|
3
|
+
generated_by: aw-spec-onboard/[VERSION]
|
|
4
|
+
concern: "[concern-slug]"
|
|
5
|
+
---
|
|
6
|
+
<!--
|
|
7
|
+
rev-templates/domain-rule-file.skeleton.md — SHAPE-ONLY reference for ONE
|
|
8
|
+
generated `<concern>.domain.md` overlay in the project's domain/ folder. Write one such file per
|
|
9
|
+
concern the adopted specs/designs ACTUALLY exhibit (evidenced-only, lean) —
|
|
10
|
+
e.g. domain-driven-design, persistence, auditing, authorization, cqrs,
|
|
11
|
+
eventing, data-classification, api-versioning, or a domain reference file for
|
|
12
|
+
an identifier/vocabulary the code uses.
|
|
13
|
+
|
|
14
|
+
Every rule below MUST trace to a BR-/CN-/DC-/IC-/FR- id, a named value object
|
|
15
|
+
/ port / entity, or the OKF overview. No rule the code does not evidence.
|
|
16
|
+
Keep the frontmatter (origin + generated_by + concern). Copy the SHAPE only.
|
|
17
|
+
-->
|
|
18
|
+
# [Concern] — [PROJECT_NAME] Domain Addenda
|
|
19
|
+
|
|
20
|
+
> Technology base: [[<technical-base-concern>]]. Commands: [the commands this file feeds, per the partition].
|
|
21
|
+
|
|
22
|
+
> [One-line framing of what this concern IS in this project — from evidence, not an ideal.]
|
|
23
|
+
|
|
24
|
+
## [Section — e.g. Categories / Rules / Invariants]
|
|
25
|
+
|
|
26
|
+
- [As-built rule the code enforces.] (evidence: [BR-/CN-/DC-/IC-/FR- id or named type])
|
|
27
|
+
- [As-built rule.] (evidence: […])
|
|
28
|
+
|
|
29
|
+
## [Section — e.g. Exposure & logging / Constraints / Lifecycle]
|
|
30
|
+
|
|
31
|
+
- [As-built rule.] (evidence: […])
|
|
32
|
+
|
|
33
|
+
<!-- Where the code's behaviour is a stub / partial / permissive, STATE IT AS-BUILT and note that
|
|
34
|
+
the CONTRACT still stands (stub behaviour is migration debt, not a waiver) — do not upgrade a
|
|
35
|
+
stub into a satisfied ideal. -->
|
|
36
|
+
|
|
37
|
+
## Related
|
|
38
|
+
|
|
39
|
+
- [[<sibling generated overlay>]] · [[<technical-base-concern>]]
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
origin: reverse-engineered
|
|
3
|
+
generated_by: aw-spec-onboard/[VERSION]
|
|
4
|
+
concern: "[concern-slug]"
|
|
5
|
+
---
|
|
6
|
+
<!--
|
|
7
|
+
rev-templates/frontend-rule-file.skeleton.md — SHAPE-ONLY reference for ONE
|
|
8
|
+
generated FRONTEND LANE rule file in the project's frontend/ folder
|
|
9
|
+
(guardrails/projects/[project]/frontend/<concern>.md). It is the lane's twin of
|
|
10
|
+
technical-rule-file.skeleton.md, and it exists separately because the lane is a
|
|
11
|
+
different tier: these files are ratified by constitution.ui.md's UX-* series,
|
|
12
|
+
not by the technical half's numerals, and they govern only the code under the
|
|
13
|
+
lane's own root.
|
|
14
|
+
|
|
15
|
+
Write one file per EXPERIENCE concern the UI CODE ACTUALLY exhibits
|
|
16
|
+
(evidenced-only, lean) — e.g. ui-constitution, component-model, routing-and-
|
|
17
|
+
navigation, state-and-data, styling-and-design-system, accessibility,
|
|
18
|
+
interaction-states, forms-and-validation, internationalization, performance,
|
|
19
|
+
ui-testing. NOT per domain concern (those are the *.domain.md overlays), NOT
|
|
20
|
+
per service-tier concern (those are service/), and NOT per greenfield ideal.
|
|
21
|
+
|
|
22
|
+
ONE file in this set is the lane's BASE and is always written where a lane
|
|
23
|
+
exists: `ui-constitution.md` — the detail layer under the whole UX-* series,
|
|
24
|
+
and the file the project's `## /aw-spec-ui-constitution` heading maps first. It
|
|
25
|
+
declares the lane (id, what it is built with, the root it owns) so a later
|
|
26
|
+
/appweaver constitution run can re-ratify the half from the mapped set alone.
|
|
27
|
+
|
|
28
|
+
This skeleton names NO framework, router, component library, design system,
|
|
29
|
+
styling approach or conformance standard — deliberately, for the same reason
|
|
30
|
+
the UI constitution skeleton does not. Copy the SHAPE only.
|
|
31
|
+
|
|
32
|
+
Every rule below MUST cite a CODE COORDINATE (a real component / route / store /
|
|
33
|
+
stylesheet / config path) and, where it maps, the UX-* principle it details.
|
|
34
|
+
This is the DETAIL layer under constitution.ui.md — the thin ratified principle
|
|
35
|
+
points here; here is the enforceable rule. State what the UI DOES (quirks,
|
|
36
|
+
inconsistencies, gaps included), never a greenfield assumption.
|
|
37
|
+
-->
|
|
38
|
+
# [Concern] — [PROJECT_NAME] Frontend Rule (as-built)
|
|
39
|
+
|
|
40
|
+
> Ratified by: constitution.ui.md principle UX-[N] ([short principle title]).
|
|
41
|
+
> Lane: [LANE_ID] at [ROOT].
|
|
42
|
+
> Commands: [the lane commands this file feeds — today, ui-constitution].
|
|
43
|
+
|
|
44
|
+
> [One-line framing of what this concern IS in this codebase's UI — from the code, not an ideal.]
|
|
45
|
+
|
|
46
|
+
## [Section — e.g. Structure / Composition / Rules / Contracts]
|
|
47
|
+
|
|
48
|
+
- [As-built rule the UI follows.] (code: [real component/route/store/stylesheet path]; UX-[N])
|
|
49
|
+
- [As-built rule.] (code: […])
|
|
50
|
+
|
|
51
|
+
## [Section — e.g. Conventions / Constraints / Forbidden patterns]
|
|
52
|
+
|
|
53
|
+
- [As-built rule.] (code: […])
|
|
54
|
+
|
|
55
|
+
<!-- Where the UI's behaviour is inconsistent across the app, state the DOMINANT convention as
|
|
56
|
+
the rule and record the divergence with its coordinates — do NOT pick a winner the code has
|
|
57
|
+
not picked, and do NOT upgrade a partial into a satisfied greenfield ideal. A concern the UI
|
|
58
|
+
shows none of is simply omitted here (modernization is a separate later phase, not this
|
|
59
|
+
set's concern). -->
|
|
60
|
+
|
|
61
|
+
## Related
|
|
62
|
+
|
|
63
|
+
- [[<sibling generated frontend rule>]] · constitution.ui.md principle UX-[N]
|