aw-spec-cli 0.1.8 → 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/package.json +1 -1
- package/assets/docs/pharma-constitution.my-ref.md +0 -86
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# [PROJECT_NAME] Constitution — Technical Base
|
|
2
|
+
<!--
|
|
3
|
+
AppWeaver split-constitution model. This is the TECHNICAL half — the
|
|
4
|
+
domain-agnostic constitution derived from the set mapped under
|
|
5
|
+
"## /aw-spec-constitution" in the active project's tech-rule-bindings.md: the technology
|
|
6
|
+
base (the mapped stack corpus's technology-constitution.md — its principles and base
|
|
7
|
+
governance), that corpus's STANDARD technical rules, and the project team's own
|
|
8
|
+
service/technical-requirements.md. A project reverse-engineered by `onboard` has no
|
|
9
|
+
such set when this half is authored: there the AS-BUILT CODE is the whole evidence, and
|
|
10
|
+
the rule files are generated afterwards as the detail layer under whatever is ratified
|
|
11
|
+
here.
|
|
12
|
+
It carries NO domain-specific principle, identifier, terminology, or regulatory rule —
|
|
13
|
+
those live in the paired constitution.domain.md.
|
|
14
|
+
|
|
15
|
+
══ THIS FILE IS SHAPE. THE EVIDENCE IS CONTENT. ══════════════════════════════════
|
|
16
|
+
This template is part of the kit and governs projects in any industry, any language
|
|
17
|
+
and any stack. It therefore names NO technology, library, type, framework or
|
|
18
|
+
architectural pattern anywhere — deliberately. An example that named one would be a
|
|
19
|
+
suggestion, and a suggestion in a template becomes ratified law in a project it does
|
|
20
|
+
not fit.
|
|
21
|
+
|
|
22
|
+
Take the principles — their SUBJECTS, their WORDING, their ORDER and their COUNT —
|
|
23
|
+
from the evidence the run puts in front of you: the mapped technology base and the
|
|
24
|
+
project's own technical-requirements where a corpus is mapped, and the CODEBASE ITSELF
|
|
25
|
+
where this half is being reverse-engineered from an existing repo and no map exists
|
|
26
|
+
yet. Never from this file, and never from a stack you happen to know. If the evidence
|
|
27
|
+
supports eight principles this half ends at VIII; if it supports twenty-six it ends at
|
|
28
|
+
XXVI. The five slots below are a scaffold, not a set: add or delete '### ' blocks
|
|
29
|
+
freely and number them I, II, III … in the evidence's own order. The domain half
|
|
30
|
+
resumes at the number after your last one, so where you stop is a fact the domain half
|
|
31
|
+
depends on.
|
|
32
|
+
═══════════════════════════════════════════════════════════════════════════════════
|
|
33
|
+
|
|
34
|
+
Where the project's own requirements file diverges from a standard rule, that is a
|
|
35
|
+
DEVIATION: ratify it as one, naming the rule it departs from and who approved it.
|
|
36
|
+
|
|
37
|
+
This file is the standing technical authority for the TECHNICAL authoring phases —
|
|
38
|
+
DESIGN and IMPLEMENT (specify loads constitution.domain, not this; the gates load
|
|
39
|
+
neither). Keeping it domain-free is what lets design author architecture from "spec
|
|
40
|
+
+ technical docs only" and lets the tech base stay swappable. Do NOT add domain
|
|
41
|
+
principles here.
|
|
42
|
+
|
|
43
|
+
THIN AUTHORITY: each principle is ONE declarative, testable line + a pointer to its
|
|
44
|
+
rule doc. Do NOT restate the rule doc's detail here — this file says WHICH rules are
|
|
45
|
+
supreme/non-negotiable and adopted; the docs (also loaded in the phase) carry the
|
|
46
|
+
detail. That keeps the authority/detail overlap to one line.
|
|
47
|
+
-->
|
|
48
|
+
|
|
49
|
+
## Core Principles
|
|
50
|
+
|
|
51
|
+
### [PRINCIPLE_1_NAME]
|
|
52
|
+
<!-- Form: "I. <the base's first principle, by its own name> (NON-NEGOTIABLE)". The
|
|
53
|
+
numeral, the name and whether the marker applies all come from the mapped base. -->
|
|
54
|
+
[PRINCIPLE_1_DESCRIPTION]
|
|
55
|
+
<!-- Form: ONE declarative, testable sentence saying what MUST hold, then the rule doc
|
|
56
|
+
that carries the detail. State the rule, not the mechanism that implements it —
|
|
57
|
+
an implementation choice belongs in the rule doc, not in the ratified line. -->
|
|
58
|
+
|
|
59
|
+
### [PRINCIPLE_2_NAME]
|
|
60
|
+
[PRINCIPLE_2_DESCRIPTION]
|
|
61
|
+
|
|
62
|
+
### [PRINCIPLE_3_NAME]
|
|
63
|
+
[PRINCIPLE_3_DESCRIPTION]
|
|
64
|
+
|
|
65
|
+
### [PRINCIPLE_4_NAME]
|
|
66
|
+
[PRINCIPLE_4_DESCRIPTION]
|
|
67
|
+
|
|
68
|
+
### [PRINCIPLE_5_NAME]
|
|
69
|
+
<!-- Form: continue one '### ' block per principle through the base's LAST one, then
|
|
70
|
+
stop. Do not pad to a round number, do not stop early because a count "looks
|
|
71
|
+
right", and do not import a principle the base does not state. Mark NON-NEGOTIABLE
|
|
72
|
+
only where the base does. -->
|
|
73
|
+
[PRINCIPLE_5_DESCRIPTION]
|
|
74
|
+
|
|
75
|
+
## [SECTION_2_NAME]
|
|
76
|
+
<!-- Form: the base's structural mandate — how the codebase must be laid out and what
|
|
77
|
+
that layout is not allowed to blur. Name the section as the base names it. -->
|
|
78
|
+
|
|
79
|
+
[SECTION_2_CONTENT]
|
|
80
|
+
<!-- Form: the layout as the base defines it for THIS project's stack, plus a pointer to
|
|
81
|
+
the rule doc holding the full structure. Domain folder ADDITIONS are declared in
|
|
82
|
+
constitution.domain.md, not here. -->
|
|
83
|
+
|
|
84
|
+
## [SECTION_3_NAME]
|
|
85
|
+
<!-- Form: the base's conventions / forbidden-patterns / quality-gate section. -->
|
|
86
|
+
|
|
87
|
+
[SECTION_3_CONTENT]
|
|
88
|
+
<!-- Form: naming and coding conventions, forbidden patterns, dependency governance, CI
|
|
89
|
+
quality gates and the base AI operating rules — each a thin adopted line pointing at
|
|
90
|
+
the rule doc that carries it. Domain overlays are referenced from
|
|
91
|
+
constitution.domain.md. -->
|
|
92
|
+
|
|
93
|
+
## Governance
|
|
94
|
+
<!-- Form: this constitution's authority over other engineering guidance, the amendment
|
|
95
|
+
procedure, and the versioning policy. This base governance also applies to
|
|
96
|
+
constitution.domain.md; domain-specific approver / change-authority overrides are
|
|
97
|
+
declared there. -->
|
|
98
|
+
|
|
99
|
+
[GOVERNANCE_RULES]
|
|
100
|
+
<!-- Form: amendment procedure; SemVer-for-governance (MAJOR = weaken a NON-NEGOTIABLE or
|
|
101
|
+
break the mandated structure; MINOR = new principle or mandatory requirement;
|
|
102
|
+
PATCH = clarification); compliance review cadence. Reviewers cite the principle
|
|
103
|
+
NUMBER, so the numbering above is load-bearing. The paired constitution.domain.md
|
|
104
|
+
extends this section with domain change-authority. -->
|
|
105
|
+
|
|
106
|
+
**Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE]
|
|
107
|
+
<!-- ISO YYYY-MM-DD dates. This file versions INDEPENDENTLY of constitution.domain.md —
|
|
108
|
+
a technical-base change need not bump the domain half, and vice-versa. -->
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# [PROJECT_NAME] Constitution — User Experience Base
|
|
2
|
+
<!--
|
|
3
|
+
AppWeaver split-constitution model. This is the UI half — the standing
|
|
4
|
+
governance for the FRONTEND LANE, derived from the set mapped under
|
|
5
|
+
"## /aw-spec-ui-constitution" in the active project's tech-rule-bindings.md: the standard
|
|
6
|
+
frontend rules (the mapped lane corpus's ui-constitution.md) and the project team's own
|
|
7
|
+
frontend/ui-requirements.md. A lane reverse-engineered by `onboard` has no such set when
|
|
8
|
+
this half is authored: there the UI SOURCE is the whole evidence, and the lane's rule
|
|
9
|
+
files are generated afterwards as the detail layer under whatever is ratified here.
|
|
10
|
+
It exists only in a project that HAS a frontend lane;
|
|
11
|
+
a backend-only project has no such file at all.
|
|
12
|
+
|
|
13
|
+
══ THIS FILE IS SHAPE. THE EVIDENCE IS CONTENT. ══════════════════════════════════
|
|
14
|
+
This template is part of the kit and governs frontends on any stack. It therefore
|
|
15
|
+
names NO framework, language, router, design system, component library or conformance
|
|
16
|
+
standard anywhere — deliberately. An example that named one would be a suggestion, and
|
|
17
|
+
a suggestion in a template becomes ratified law in a lane it does not fit.
|
|
18
|
+
|
|
19
|
+
Take the principles — their SUBJECTS, their WORDING, their ORDER and their COUNT —
|
|
20
|
+
from the evidence the run puts in front of you: the mapped ui-constitution.md and the
|
|
21
|
+
team's ui-requirements where a lane corpus is mapped, and the LANE'S OWN SOURCE where
|
|
22
|
+
this half is being reverse-engineered. The five slots below are a scaffold, not a set.
|
|
23
|
+
═══════════════════════════════════════════════════════════════════════════════════
|
|
24
|
+
|
|
25
|
+
It is the UI lane's counterpart to constitution.technical.md, not a third tier
|
|
26
|
+
of governance. Like that file it is DOMAIN-FREE: it is authored before
|
|
27
|
+
domain-select runs, so no domain rule file can reach it. Domain reaches the UI
|
|
28
|
+
lane the same way it reaches the service lane — through the spec.
|
|
29
|
+
|
|
30
|
+
Loading policy: standing input to UI-DESIGN and UI-IMPLEMENT. It is NOT loaded
|
|
31
|
+
by specify (which loads constitution.domain.md), and NOT by the service lane's
|
|
32
|
+
design/implement (which load constitution.technical.md). One lane's
|
|
33
|
+
constitution never governs the other lane's code.
|
|
34
|
+
|
|
35
|
+
NUMBERING: principles are a UX-* series (UX-I, UX-II, …) and deliberately do NOT
|
|
36
|
+
continue the technical half's numbering or the domain half's. This half is PARALLEL
|
|
37
|
+
to the technical base, not a continuation of it, and the composed constitution.md
|
|
38
|
+
must not read as though one series ran on into another. Because the series is its
|
|
39
|
+
own, it is unaffected by how many principles the technology base happens to have.
|
|
40
|
+
|
|
41
|
+
WHAT THE LANE'S GOVERNANCE MUST SETTLE — as principles, in the lane rules' own terms:
|
|
42
|
+
the accessibility obligation; where visual truth comes from; that the UI's only input
|
|
43
|
+
from the service lane is the design contract, so an interface it needs but the contract
|
|
44
|
+
lacks is a contract change and never a local workaround; that every reachable
|
|
45
|
+
interaction state is a specified requirement rather than something invented in a
|
|
46
|
+
component; and the lane's own testing obligation. Cover what the mapped rules cover —
|
|
47
|
+
this list is the agenda, not the wording.
|
|
48
|
+
|
|
49
|
+
THIN AUTHORITY: each principle is ONE declarative, testable line. Do NOT restate
|
|
50
|
+
the source's detail here — this file says WHICH experience rules are supreme,
|
|
51
|
+
non-negotiable and adopted; the mapped ui-constitution.md carries the detail.
|
|
52
|
+
-->
|
|
53
|
+
|
|
54
|
+
## Declared Lane
|
|
55
|
+
|
|
56
|
+
[UI_LANE_DECLARATION]
|
|
57
|
+
<!-- Form: one line naming the lane, its stack and the root directory it owns — all three
|
|
58
|
+
taken from the mapped ui-constitution.md, which declares them, and never invented
|
|
59
|
+
here. The root is the subtree ui-implement may write; it must match
|
|
60
|
+
.appweaver/stacks.json where that file exists, and a disagreement is a STACK-MISMATCH:
|
|
61
|
+
failure, not a silent rewrite. -->
|
|
62
|
+
|
|
63
|
+
## Experience Principles
|
|
64
|
+
<!-- A UX-* series. Parallel to the technical half, never a continuation of it. -->
|
|
65
|
+
|
|
66
|
+
### [PRINCIPLE_UX_1_NAME]
|
|
67
|
+
<!-- Form: "UX-I. <the experience concern this rule governs> (NON-NEGOTIABLE)". -->
|
|
68
|
+
[PRINCIPLE_UX_1_DESCRIPTION]
|
|
69
|
+
<!-- Form: ONE declarative, testable sentence saying what MUST hold, plus a pointer to the
|
|
70
|
+
lane rule file that carries the detail. Where a principle depends on a threshold or a
|
|
71
|
+
conformance target, say that the target is binding and cite where the spec records
|
|
72
|
+
it — do not restate the target here, and do not invent one. -->
|
|
73
|
+
|
|
74
|
+
### [PRINCIPLE_UX_2_NAME]
|
|
75
|
+
[PRINCIPLE_UX_2_DESCRIPTION]
|
|
76
|
+
|
|
77
|
+
### [PRINCIPLE_UX_3_NAME]
|
|
78
|
+
[PRINCIPLE_UX_3_DESCRIPTION]
|
|
79
|
+
|
|
80
|
+
### [PRINCIPLE_UX_4_NAME]
|
|
81
|
+
[PRINCIPLE_UX_4_DESCRIPTION]
|
|
82
|
+
|
|
83
|
+
### [PRINCIPLE_UX_5_NAME]
|
|
84
|
+
<!-- Form: continue UX-V+ with one '### ' block per principle the mapped lane rules state,
|
|
85
|
+
then stop. Service-lane principles stay in constitution.technical.md and domain
|
|
86
|
+
principles in constitution.domain.md. -->
|
|
87
|
+
[PRINCIPLE_UX_5_DESCRIPTION]
|
|
88
|
+
|
|
89
|
+
## [UI_STRUCTURE_SECTION_NAME]
|
|
90
|
+
<!-- Form: the lane's structural mandate, named as the lane rules name it. -->
|
|
91
|
+
|
|
92
|
+
[UI_STRUCTURE_CONTENT]
|
|
93
|
+
<!-- Form: the lane root and the layout beneath it, as the mapped rules define it for this
|
|
94
|
+
lane's stack, including where generated contract clients land. This layout sits
|
|
95
|
+
ENTIRELY under the lane's root; it never adds to the service lane's structure in
|
|
96
|
+
constitution.technical.md. -->
|
|
97
|
+
|
|
98
|
+
## [UI_CONVENTIONS_SECTION_NAME]
|
|
99
|
+
<!-- Form: the lane's conventions / forbidden-patterns / quality-gate section. -->
|
|
100
|
+
|
|
101
|
+
[UI_CONVENTIONS_CONTENT]
|
|
102
|
+
<!-- Form: naming, state-management policy, forbidden patterns, and the lane's CI gates —
|
|
103
|
+
each a thin adopted line pointing at the lane rule file that carries it. -->
|
|
104
|
+
|
|
105
|
+
## Governance
|
|
106
|
+
|
|
107
|
+
[UI_GOVERNANCE_RULES]
|
|
108
|
+
<!-- Form: this half versions independently of the other two. The base amendment procedure
|
|
109
|
+
and SemVer policy in constitution.technical.md apply unchanged — state only the
|
|
110
|
+
UI-lane overrides here (who may amend the lane's visual authority, who signs off a
|
|
111
|
+
waiver against an accessibility obligation). Retiring the frontend lane is a decision
|
|
112
|
+
to retire this file; nothing removes it automatically. -->
|
|
113
|
+
|
|
114
|
+
**Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE]
|
|
115
|
+
<!-- ISO YYYY-MM-DD dates. Versions INDEPENDENTLY of constitution.technical.md and
|
|
116
|
+
constitution.domain.md — a change to the lane's rules bumps this file only. -->
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Delta Design — [CR-ID]: [TITLE]
|
|
2
|
+
|
|
3
|
+
**Feature (aggregate)**: [Aggregate]
|
|
4
|
+
|
|
5
|
+
**Base version**: [vX.Y] <!-- the current master design version; the design phase bumps the minor on close -->
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
This delta applies to the SINGLE master design at specs/[Aggregate]/design.md —
|
|
9
|
+
never a new design doc. Classify every design change ADDED / MODIFIED / REMOVED
|
|
10
|
+
against the current master, per LAYER section (Domain · Application · API · Infra),
|
|
11
|
+
in the SAME technology-agnostic form as the master: behaviour as signatures +
|
|
12
|
+
pre/post/invariant/raises, contracts as field shapes — NO code. A new command
|
|
13
|
+
(e.g. UpdateOrder) is a new USER STORY realised as delta design elements, NOT a
|
|
14
|
+
new feature/aggregate. After this delta is applied to design.md, `implement`
|
|
15
|
+
regenerates the touched slice; regression re-tests the shared-element dependents.
|
|
16
|
+
-->
|
|
17
|
+
|
|
18
|
+
## Change summary
|
|
19
|
+
|
|
20
|
+
[One paragraph: what the design change is and which user story / spec delta it serves.]
|
|
21
|
+
|
|
22
|
+
## ADDED — new design elements
|
|
23
|
+
|
|
24
|
+
<!-- New entities/VOs/events, use-cases/handlers, endpoints, ports, adapters, and the
|
|
25
|
+
realisation of any new spec constraint/classification/contract. Serves = a spec id
|
|
26
|
+
(FR-/BR-/CN-/DC-/IC-/US-); design reads the spec, never the domain rule files. -->
|
|
27
|
+
|
|
28
|
+
| Layer (§) | Element | Kind | Serves |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| Application (§2) | `[Command/Query]` + handler | use-case | US-[n] · FR-[nnn] |
|
|
31
|
+
| API (§3) | `[VERB] [/route]` | endpoint | US-[n] · FR-[nnn] |
|
|
32
|
+
| Domain (§1) | `[Event]` / `[VO]` | event / value object | BR-[nnn] · CN-[nnn] |
|
|
33
|
+
| Infrastructure (§4.2) | `I[External]` adapter | contract realisation | IC-[nnn] |
|
|
34
|
+
| Cross-cutting (§5) | [audit / retention / exposure decision] | constraint realisation | CN-[nnn] · DC-[nnn] |
|
|
35
|
+
|
|
36
|
+
## MODIFIED — existing design elements
|
|
37
|
+
|
|
38
|
+
<!-- Edits to elements the master already defines (add a behaviour, change a contract). -->
|
|
39
|
+
|
|
40
|
+
| Layer (§) | Element | What changes | Why |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| Domain (§1) | `[Root].[Behaviour]` | add [method] + invariant | US-[n] |
|
|
43
|
+
| Infrastructure (§4) | `I[Aggregate]Repository` | add [operation] | US-[n] |
|
|
44
|
+
|
|
45
|
+
## REMOVED
|
|
46
|
+
|
|
47
|
+
- [design element removed + why] — or `None`
|
|
48
|
+
|
|
49
|
+
## Cross-layer impact
|
|
50
|
+
|
|
51
|
+
[Which layer sections ripple; shared elements touched (e.g. the aggregate root);
|
|
52
|
+
new migration needed? (yes/no); any contract change other systems couple to.]
|
|
53
|
+
|
|
54
|
+
## Regression targets
|
|
55
|
+
|
|
56
|
+
[Existing user stories / behaviours to re-verify because a shared element changed —
|
|
57
|
+
e.g. re-test CreateOrder when the Order root or its repository is MODIFIED.]
|
|
58
|
+
|
|
59
|
+
## New assumptions / workarounds (from this change)
|
|
60
|
+
|
|
61
|
+
<!-- Anything this change defers — folds into the master's §7 / §8 ledgers on apply. -->
|
|
62
|
+
|
|
63
|
+
- **DA-[n]**: [assumption to clarify later] — or `None`
|
|
64
|
+
- **WA-[n]**: [structural workaround to clear later] — or `None`
|
|
65
|
+
|
|
66
|
+
## On close
|
|
67
|
+
|
|
68
|
+
The design phase amends the master design.md doc-first, appends the Change History
|
|
69
|
+
row, bumps the version (minor), and archives this record under `changes/archive/`.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Delta Spec — [CR-ID]: [TITLE]
|
|
2
|
+
|
|
3
|
+
**Feature (aggregate)**: [Aggregate]
|
|
4
|
+
|
|
5
|
+
**Change type**: [new-requirement | changed-requirement | defect | refactor]
|
|
6
|
+
|
|
7
|
+
**Created**: [DATE]
|
|
8
|
+
|
|
9
|
+
**Base version**: [vX.Y] <!-- the current master version; close-delta bumps the minor at the end of the chain -->
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
A change request is a DELTA on the feature's existing spec.md — never a new spec.
|
|
13
|
+
Classify every item ADDED / MODIFIED / REMOVED against the current master, using
|
|
14
|
+
the SAME vocabulary as the master spec: System Requirements in EARS, Business
|
|
15
|
+
Rules (BR-n) as invariants, User Stories with Given/When/Then acceptance criteria,
|
|
16
|
+
and — where their rules apply — Constraints & NFRs (CN-n), Data Classification
|
|
17
|
+
(DC-n), Integration Contracts (IC-n) and Experience Standards (UX-n). A CR that changes
|
|
18
|
+
a retention/audit rule, a data-exposure rule, an interop obligation or a project-wide
|
|
19
|
+
experience standard is a CN-/DC-/IC-/UX- delta, not a smuggled code change. A UX- delta
|
|
20
|
+
states the standard only — never a screen, page or component, which the prototype and
|
|
21
|
+
design.ui.md settle. Adding a command (e.g. UpdateOrder to the Order aggregate) is a new
|
|
22
|
+
user story (US-n), NOT a new feature. Feature = aggregate (see spec-template.md).
|
|
23
|
+
-->
|
|
24
|
+
|
|
25
|
+
## Change summary
|
|
26
|
+
|
|
27
|
+
[One paragraph: what is changing and why.]
|
|
28
|
+
|
|
29
|
+
## ADDED
|
|
30
|
+
|
|
31
|
+
<!-- New user stories, system requirements, business rules, entities, or lifted items (CN/DC/IC/UX). -->
|
|
32
|
+
|
|
33
|
+
- **US-[n] — [title]** (Priority: P?)
|
|
34
|
+
- **Why this priority**: [the value and why it ranks here]
|
|
35
|
+
- **Exercises**: [FR-nnn, BR-nnn]
|
|
36
|
+
- **Acceptance**: Given [state], When [action], Then [outcome]
|
|
37
|
+
- **Independent test**: [how this story is verified on its own]
|
|
38
|
+
- **FR-[nnn]**: WHEN [trigger] THE SYSTEM SHALL [response] <!-- EARS — pick the fitting pattern -->
|
|
39
|
+
- **BR-[nnn]**: [a new invariant that must always hold] — or `None`
|
|
40
|
+
- **CN-[nnn]**: [new constraint / NFR — retention, immutability, audit, performance-as-a-limit; cite lifted source] — or `None`
|
|
41
|
+
- **DC-[nnn]**: [new data-classification category or exposure rule] — or `None`
|
|
42
|
+
- **IC-[nnn]**: [new integration contract / interop obligation] — or `None`
|
|
43
|
+
- **UX-[nnn]**: [new project-wide experience standard — accessibility, interaction states, content, journey integrity, responsiveness-as-a-limit; cite lifted source] — or `None`
|
|
44
|
+
- **Entity**: [new entity / value object + what it represents] — or `None`
|
|
45
|
+
|
|
46
|
+
## MODIFIED
|
|
47
|
+
|
|
48
|
+
- **FR-[nnn]**: was [old] → now [new] <!-- keep EARS form -->
|
|
49
|
+
- **BR-[nnn]**: was [old] → now [new]
|
|
50
|
+
- **CN-[nnn]** / **DC-[nnn]** / **IC-[nnn]** / **UX-[nnn]**: was [old] → now [new]
|
|
51
|
+
- **US-[n]**: [what changes and why]
|
|
52
|
+
|
|
53
|
+
## REMOVED
|
|
54
|
+
|
|
55
|
+
- [FR / BR / CN / DC / IC / UX / US / entity removed and why] — or `None`
|
|
56
|
+
|
|
57
|
+
## Impact
|
|
58
|
+
|
|
59
|
+
- **Affected FR / BR / CN / DC / IC / UX / US / SC**: [ids]
|
|
60
|
+
- **Regression risk**: [existing behaviour that must still hold — e.g. CreateOrder must still pass]
|
|
61
|
+
- **On merge**: the new US-[n] is tagged `Added: (this CR)` in the master; finalize-delta
|
|
62
|
+
merges this delta into spec.md + design.md and appends the Change History row, and
|
|
63
|
+
close-delta (after analyze-slice) archives the change and bumps the minor version.
|