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,116 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
rev-templates/tech-rule-bindings.skeleton.md — SHAPE-ONLY reference for the
|
|
3
|
+
project's tech-rule-bindings.md (resolve-tech reads it by that exact name — the
|
|
4
|
+
TECHNICAL twin of domain-rule-bindings.md, which resolve-domain reads). It shows the
|
|
5
|
+
per-command headings, the TECHNICAL RULE PARTITION, the bullet shape, and the
|
|
6
|
+
quick-reference table. It lists NO real rule files — every bullet is a
|
|
7
|
+
placeholder for a service/ file the author actually generated from THIS
|
|
8
|
+
project's CODE.
|
|
9
|
+
|
|
10
|
+
Wire ONLY files you generated (all under guardrails/projects/[project]/service/).
|
|
11
|
+
Never list a file you did not write. Never list a path belonging to another
|
|
12
|
+
project (guardrails/projects/<other>/**) — that one is another project's
|
|
13
|
+
rules, not this one's.
|
|
14
|
+
-->
|
|
15
|
+
# [PROJECT_NAME] — Command → Technical-Rule-File Map (as-built)
|
|
16
|
+
|
|
17
|
+
Per-command list of the **[PROJECT_NAME] technical** rule files loaded (via `resolve-tech` +
|
|
18
|
+
the `tech-select` module, into the sticky standards set) for the spec-anchored orchestrator
|
|
19
|
+
pipeline. This is the technical counterpart of `domain-rule-bindings.md` (which maps the DOMAIN rule
|
|
20
|
+
files), and the CODE-DERIVED replacement for the greenfield technical map.
|
|
21
|
+
|
|
22
|
+
**The model:** the technical rule files (this project's own architecture / persistence /
|
|
23
|
+
concurrency / testing / security-posture set, reverse-engineered from the code into
|
|
24
|
+
`guardrails/projects/[project]/service/`) are CONFIGURATION — tune this map, not the workflows. The
|
|
25
|
+
technology base itself (`constitution.technical.md`) is NOT listed here — every consumer still
|
|
26
|
+
refers to it directly, as-is.
|
|
27
|
+
|
|
28
|
+
- All paths are workspace-relative and live in `guardrails/projects/[project]/service/`.
|
|
29
|
+
- `resolve-tech --command <name>` collects the `- ` bullets under `## /<name>`.
|
|
30
|
+
- **`## /aw-spec-specify` is the MODELLING-METHODOLOGY slot** — exactly one file,
|
|
31
|
+
`service/domain-modelling.md`: HOW this code expresses a domain model. Never an architecture /
|
|
32
|
+
persistence / codegen / security file; those would break specify's domain purity. Every other
|
|
33
|
+
heading below feeds the HOW phases.
|
|
34
|
+
- A command with no heading here loads no mapped technical file (only the workflow's universal
|
|
35
|
+
`ai-rules.md` seed + `constitution.technical.md`, referred to directly).
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## /aw-spec-specify
|
|
40
|
+
<!-- MODELLING METHODOLOGY ONLY — exactly one file. HOW this codebase expresses a domain model
|
|
41
|
+
(what marks an aggregate root, entity vs value object, where invariants live, the context
|
|
42
|
+
boundary), NOT what the model is (that is the domain set's domain-driven-design.domain.md,
|
|
43
|
+
wired via domain-rule-bindings). No technology rule may appear under this heading. -->
|
|
44
|
+
- guardrails/projects/[project]/service/domain-modelling.md
|
|
45
|
+
|
|
46
|
+
## /aw-spec-design
|
|
47
|
+
<!-- The as-built architecture / cross-cutting technical rules the design author mediates the spec
|
|
48
|
+
against. NO domain file here — domain reaches design only as spec ids. -->
|
|
49
|
+
- guardrails/projects/[project]/service/[as-built-architecture].md
|
|
50
|
+
- guardrails/projects/[project]/service/[each generated architecture/cross-cutting rule].md
|
|
51
|
+
|
|
52
|
+
## /aw-spec-implement
|
|
53
|
+
<!-- The framework / code-generation rule set the generator builds against (from design.md). -->
|
|
54
|
+
- guardrails/projects/[project]/service/[each generated codegen/convention rule].md
|
|
55
|
+
|
|
56
|
+
## /aw-spec-implement-delta
|
|
57
|
+
<!-- The CR analog of implement — same code-generation set, scoped to the delta-design. -->
|
|
58
|
+
- guardrails/projects/[project]/service/[each generated codegen/convention rule].md
|
|
59
|
+
|
|
60
|
+
## /aw-spec-build
|
|
61
|
+
<!-- The layering + convention rules the compile-fixer respects. -->
|
|
62
|
+
- guardrails/projects/[project]/service/[as-built-architecture].md
|
|
63
|
+
|
|
64
|
+
## /aw-spec-analyze-slice
|
|
65
|
+
<!-- The design↔code conformance gate's TECHNICAL checklist (validate, don't author). -->
|
|
66
|
+
- guardrails/projects/[project]/service/[testing/convention rule to validate against].md
|
|
67
|
+
|
|
68
|
+
## /aw-spec-adopt
|
|
69
|
+
<!-- Brownfield reverse-engineering: the technical REFERENCE set the reversed design mediates the
|
|
70
|
+
reversed spec ↔ existing code against — the CODE wins, these are reference only. -->
|
|
71
|
+
- guardrails/projects/[project]/service/[architecture/cross-cutting reference rule].md
|
|
72
|
+
|
|
73
|
+
## /aw-spec-constitution
|
|
74
|
+
<!-- The set the TECHNICAL half of the split constitution is RE-ratified from when /appweaver
|
|
75
|
+
constitution is run again on this repo — the same code-derived rules the HOW phases build
|
|
76
|
+
against, so a ratified principle can cite the rule it governs. onboard authored the first
|
|
77
|
+
constitution from code evidence directly, before these files existed; this heading is what
|
|
78
|
+
keeps a later re-run authoring from THIS project's rules instead of from nothing. List the
|
|
79
|
+
service/ files that carry a ratifiable standard, NOT every generated file, and NO worked examples/
|
|
80
|
+
sample (the ratified half is one declarative line per principle). NO domain file — the domain
|
|
81
|
+
half's sources are the DOMAIN map's ## /aw-spec-constitution. -->
|
|
82
|
+
- guardrails/projects/[project]/service/[ratifiable technical standard].md
|
|
83
|
+
|
|
84
|
+
## /aw-spec-run
|
|
85
|
+
<!-- The runtime / execution conventions the app-run step honors — add ONLY if the code evidences
|
|
86
|
+
a runtime/hosting concern file. NOT data-migration (migration is the deferred later phase). -->
|
|
87
|
+
- guardrails/projects/[project]/service/[runtime/hosting rule].md
|
|
88
|
+
|
|
89
|
+
<!-- ## /aw-spec-ui-constitution — the FRONTEND LANE's heading. It is NOT written by the step
|
|
90
|
+
that authors this map; onboard's frontend rule-set step APPENDS it here, after the technical
|
|
91
|
+
headings and before the quick-reference table, but only where the scan found a UI in the
|
|
92
|
+
code. It maps the generated frontend/ lane rules (frontend/ui-constitution.md first), and
|
|
93
|
+
it is also the authoritative signal that this project HAS a frontend lane — a later
|
|
94
|
+
/appweaver constitution reads it to decide whether to author constitution.ui.md at all.
|
|
95
|
+
A backend-only repo simply never gets the heading.
|
|
96
|
+
|
|
97
|
+
Do NOT add /aw-spec-characterize or /aw-spec-parity in the DEV flow — characterize is
|
|
98
|
+
opt-on-touch and parity is deferred to the migration phase. Add any other heading later
|
|
99
|
+
ONLY if that phase is entered AND you generated a file it should load — an absent heading
|
|
100
|
+
soft-continues (loads nothing). -->
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Quick reference (command → technical file count)
|
|
105
|
+
|
|
106
|
+
| Command | Technical rule files | Role |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| /aw-spec-specify | 1 | the as-built modelling methodology the domain model is expressed in — no technology |
|
|
109
|
+
| /aw-spec-design | [n] | as-built architecture the design author mediates the spec against |
|
|
110
|
+
| /aw-spec-implement | [n] | code-generation set the generator builds against (from design.md) |
|
|
111
|
+
| /aw-spec-implement-delta | [n] | same code-generation set, scoped to the open change's delta-design |
|
|
112
|
+
| /aw-spec-build | [n] | layering + convention rules the compile-fixer respects |
|
|
113
|
+
| /aw-spec-analyze-slice | [n] | conformance rules the design↔code gate validates against |
|
|
114
|
+
| /aw-spec-adopt | [n] | technical reference set for the reversed design (brownfield) |
|
|
115
|
+
| /aw-spec-constitution | [n] | the standards the technical constitution half is re-ratified from |
|
|
116
|
+
| /aw-spec-run | [n] | runtime/execution conventions the app-run step honors (only if evidenced) |
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
3
|
+
rev-templates/technical-constitution.skeleton.md — SHAPE-ONLY reference.
|
|
4
|
+
|
|
5
|
+
This file is the FORMAT + VOCABULARY reference for the reverse-engineered
|
|
6
|
+
TECHNICAL half (constitution.technical.md). It is loaded as a `standards:`
|
|
7
|
+
entry for the technical-half author (include_standards:true). It carries the
|
|
8
|
+
AppWeaver principle-heading style, the Sync-Impact-Report shape, the
|
|
9
|
+
evidence-line pattern, and the section skeleton — and NOTHING ELSE.
|
|
10
|
+
|
|
11
|
+
IT DELIBERATELY CONTAINS NO PRINCIPLE SET. There is no fixed I–XV list to
|
|
12
|
+
inherit. Every [BRACKET] token below is a slot the author fills from evidence
|
|
13
|
+
— never a value to copy. Copy the SHAPE, discover the CONTENT from the code.
|
|
14
|
+
|
|
15
|
+
DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
|
|
16
|
+
here to leak):
|
|
17
|
+
• EVIDENCE-FIRST — author a principle ONLY for a technology trait the
|
|
18
|
+
adopted design.md files + the OKF overview/platform note actually
|
|
19
|
+
evidence. If the code does not show it, it is not a principle.
|
|
20
|
+
• CITE inline — every principle ends with an `(evidence: …)` line naming a
|
|
21
|
+
design section, a concrete type / port / persistence context / config, or
|
|
22
|
+
an OKF stack line. A principle with no groundable evidence does not belong.
|
|
23
|
+
• AS-BUILT LEVEL — state a partial / stubbed / optional trait at the level
|
|
24
|
+
the code actually reaches; never the aspirational ideal.
|
|
25
|
+
• OMIT pure aspiration — a trait the code shows zero of is not softened into
|
|
26
|
+
a principle; it is left out.
|
|
27
|
+
• ROUTE gaps — an unmet ideal / stub / inactive-optional concern goes into
|
|
28
|
+
the "As-Built Debt → migration backlog" list below, never asserted.
|
|
29
|
+
• VARIABLE LENGTH — number sequentially from I with no gaps and no padding
|
|
30
|
+
to a fixed count. The final numeral is the domain half's continuation
|
|
31
|
+
point.
|
|
32
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
33
|
+
-->
|
|
34
|
+
<!--
|
|
35
|
+
Sync Impact Report
|
|
36
|
+
- Version: [OLD] -> [NEW] (reverse-engineered technical baseline)
|
|
37
|
+
- Project: [PROJECT_NAME]
|
|
38
|
+
- Discovered technical principles: I–[N] (domain half continues at [N+1])
|
|
39
|
+
- Principle set (as-built):
|
|
40
|
+
I [PRINCIPLE_TITLE]
|
|
41
|
+
II [PRINCIPLE_TITLE]
|
|
42
|
+
… (only traits the code evidences — no fixed count)
|
|
43
|
+
- Template ideals DELIBERATELY OMITTED (lack of as-built evidence):
|
|
44
|
+
- [IDEAL] — [why the code does not evidence it]
|
|
45
|
+
- …
|
|
46
|
+
- As-Built Debt → migration backlog (see knowledge/migration-backlog.md; do not restate the table):
|
|
47
|
+
- [gap / stub / inactive-optional concern] — [where it is tracked]
|
|
48
|
+
- …
|
|
49
|
+
- Dependent artifacts:
|
|
50
|
+
- constitution.domain.md — ⚠ authored next; continues at [N+1]
|
|
51
|
+
- guardrails/projects/[project]/domain/domain-constitution.md — [✅/⚠] domain charter source
|
|
52
|
+
- guardrails/projects/[project]/service/ — [✅/⚠] technical rule set
|
|
53
|
+
- TODOs: [none mechanical | …]
|
|
54
|
+
-->
|
|
55
|
+
# [PROJECT_NAME] Constitution — Technical Base
|
|
56
|
+
|
|
57
|
+
> Reverse-engineered, **as-built**, domain-agnostic technical half. Authority for DESIGN and
|
|
58
|
+
> IMPLEMENT. Domain principles live in `constitution.domain.md` (continues at **[N+1]**).
|
|
59
|
+
> This file asserts only technology traits evidenced by the adopted designs + OKF overview/platform.
|
|
60
|
+
|
|
61
|
+
## Core Principles
|
|
62
|
+
|
|
63
|
+
<!-- One block PER EVIDENCED TRAIT. Tag (NON-NEGOTIABLE) only where the code enforces it as such.
|
|
64
|
+
Replace the bracketed text; keep the `### <numeral>. <title>` + rule + `(evidence: …)` shape. -->
|
|
65
|
+
|
|
66
|
+
### I. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
|
|
67
|
+
[One declarative, testable rule the adopted designs actually evidence. State it at the level the
|
|
68
|
+
code reaches — partial/stubbed/optional traits are stated as partial, not as the ideal.]
|
|
69
|
+
(evidence: [design §X.Y named type / port / persistence context / config; or OKF overview Tech-stack line])
|
|
70
|
+
|
|
71
|
+
### II. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
|
|
72
|
+
[…]
|
|
73
|
+
(evidence: […])
|
|
74
|
+
|
|
75
|
+
<!-- … continue with only the principles the code evidences … -->
|
|
76
|
+
|
|
77
|
+
> **Domain half continues at principle [N+1]** in `constitution.domain.md`.
|
|
78
|
+
|
|
79
|
+
## Mandatory Folder Structure (base)
|
|
80
|
+
|
|
81
|
+
- [Solution projects / module layout AS INVENTORIED — from the OKF overview + designs, not an ideal.]
|
|
82
|
+
- [Cross-cutting host files that stay at their template levels.]
|
|
83
|
+
- Domain-specific folder additions (if any) are declared only in the domain constitution half.
|
|
84
|
+
|
|
85
|
+
## Conventions, Forbidden Patterns, AI Rules & Quality Gates (base)
|
|
86
|
+
|
|
87
|
+
- [Prefer the framework abstractions ALREADY in use — name them from evidence.]
|
|
88
|
+
- [Forbidden patterns the code's structure implies — e.g. no cross-aggregate write, endpoints do not touch persistence.]
|
|
89
|
+
- Base AI operating rules: [pointer to the operating-rules reference].
|
|
90
|
+
- Any pre-existing greenfield standards docs are **reference only** until reverse-engineered against
|
|
91
|
+
this codebase — where they conflict with the as-built evidence above, **this constitution wins**.
|
|
92
|
+
|
|
93
|
+
## Governance
|
|
94
|
+
|
|
95
|
+
- This technical half + the paired domain half supersede README / agent-context files where they
|
|
96
|
+
disagree on engineering rules.
|
|
97
|
+
- Amendments via PR that updates the affected half (+ the mapped rule set if needed), includes a migration
|
|
98
|
+
plan for non-compliant code, and bumps SemVer:
|
|
99
|
+
- **MAJOR** — remove/weaken a NON-NEGOTIABLE principle or break mandatory structure
|
|
100
|
+
- **MINOR** — add a principle or mandatory section
|
|
101
|
+
- **PATCH** — clarifications
|
|
102
|
+
- Reviewers cite principle numbers. Domain change-authority overrides live in the domain half.
|
|
103
|
+
- Runtime agent guidance MUST point at the composed constitution and MUST NOT restate these
|
|
104
|
+
principles at length.
|
|
105
|
+
|
|
106
|
+
**Version**: [X.Y.Z] | **Ratified**: [YYYY-MM-DD] | **Last Amended**: [YYYY-MM-DD]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
origin: reverse-engineered
|
|
3
|
+
generated_by: aw-spec-onboard/[VERSION]
|
|
4
|
+
concern: "[concern-slug]"
|
|
5
|
+
---
|
|
6
|
+
<!--
|
|
7
|
+
rev-templates/technical-rule-file.skeleton.md — SHAPE-ONLY reference for ONE
|
|
8
|
+
generated technical rule file in the project's service/ folder
|
|
9
|
+
(guardrails/projects/[project]/service/<concern>.md). It is the TECHNICAL twin of
|
|
10
|
+
domain-rule-file.skeleton.md. Write one such file per TECHNOLOGY concern the
|
|
11
|
+
CODE ACTUALLY exhibits (evidenced-only, lean) — e.g. as-built-architecture,
|
|
12
|
+
persistence, concurrency, testing, security-posture, api-surface, eventing,
|
|
13
|
+
observability, hosting — NOT per domain concern (those are the *.domain.md
|
|
14
|
+
overlays), NOT per greenfield ideal.
|
|
15
|
+
|
|
16
|
+
ONE concern in this set is not a technology concern and is still written here:
|
|
17
|
+
`domain-modelling` — the as-built modelling METHODOLOGY (what marks an aggregate
|
|
18
|
+
root, entity vs value object, where invariants live, the context boundary). It is
|
|
19
|
+
the only file wired under `## /aw-spec-specify`, and it carries NO business
|
|
20
|
+
vocabulary: HOW this code models, never WHAT it models (that is the domain set's
|
|
21
|
+
domain-driven-design.domain.md). Same shape as below — cite code coordinates.
|
|
22
|
+
|
|
23
|
+
Every rule below MUST cite a CODE COORDINATE (a real file/folder path or named
|
|
24
|
+
type) and, where it maps, the technical-constitution principle numeral it
|
|
25
|
+
details. This is the DETAIL layer under constitution.technical.md — the thin
|
|
26
|
+
ratified principle points here; here is the enforceable rule. State what the
|
|
27
|
+
code DOES (quirks, stubs, partials included), never a greenfield assumption.
|
|
28
|
+
Keep the frontmatter (origin + generated_by + concern). Copy the SHAPE only —
|
|
29
|
+
this file carries NO real technology, path, or framework name.
|
|
30
|
+
-->
|
|
31
|
+
# [Concern] — [PROJECT_NAME] Technical Rule (as-built)
|
|
32
|
+
|
|
33
|
+
> Ratified by: constitution.technical.md principle [N] ([short principle title]).
|
|
34
|
+
> Commands: [the technical commands this file feeds, per the partition — e.g. design · implement · build].
|
|
35
|
+
|
|
36
|
+
> [One-line framing of what this concern IS in this codebase — from the code, not an ideal.]
|
|
37
|
+
|
|
38
|
+
## [Section — e.g. Structure / Layering / Rules / Contracts]
|
|
39
|
+
|
|
40
|
+
- [As-built rule the code follows.] (code: [real file/folder path or named type]; principle [N])
|
|
41
|
+
- [As-built rule.] (code: […])
|
|
42
|
+
|
|
43
|
+
## [Section — e.g. Dependency direction / Constraints / Conventions]
|
|
44
|
+
|
|
45
|
+
- [As-built rule.] (code: […])
|
|
46
|
+
|
|
47
|
+
<!-- Where the code's behaviour is a stub / partial / permissive / inactive, STATE IT AS-BUILT at the
|
|
48
|
+
level the code reaches, and mark it so — do NOT upgrade a stub into a satisfied greenfield ideal,
|
|
49
|
+
and do NOT invent a rule the code does not evidence. An unmet ideal is simply omitted here
|
|
50
|
+
(migration/modernization is a separate later phase, not this set's concern). -->
|
|
51
|
+
|
|
52
|
+
## Related
|
|
53
|
+
|
|
54
|
+
- [[<sibling generated tech rule>]] · constitution.technical.md principle [N]
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
3
|
+
rev-templates/ui-constitution.skeleton.md — SHAPE-ONLY reference.
|
|
4
|
+
|
|
5
|
+
This file is the FORMAT + VOCABULARY reference for the reverse-engineered UI
|
|
6
|
+
half (constitution.ui.md) — the FRONTEND LANE's base, authored by onboard from
|
|
7
|
+
an EXISTING codebase. It is the lane's counterpart to
|
|
8
|
+
technical-constitution.skeleton.md, and it carries the AppWeaver principle-
|
|
9
|
+
heading style, the Sync-Impact-Report shape, the evidence-line pattern and the
|
|
10
|
+
section skeleton — and NOTHING ELSE.
|
|
11
|
+
|
|
12
|
+
IT DELIBERATELY CONTAINS NO PRINCIPLE SET, and it names no framework, router,
|
|
13
|
+
component library, design system, styling approach or conformance standard.
|
|
14
|
+
A named example in a skeleton becomes ratified law in a lane it does not fit,
|
|
15
|
+
and the frontend is where that risk is highest — every stack has a house style
|
|
16
|
+
and none of them is the kit's to assume. Every [BRACKET] token below is a slot
|
|
17
|
+
filled FROM THE CODE, never a value to copy.
|
|
18
|
+
|
|
19
|
+
WHERE THE CONTENT COMES FROM — the forward direction is INVERTED here. In a
|
|
20
|
+
greenfield project this half ratifies the project's mapped frontend rule files;
|
|
21
|
+
at onboard those files DO NOT EXIST YET. The evidence is therefore the UI
|
|
22
|
+
SOURCE ITSELF, read through the scan substrate's `frontend_signals` (candidate
|
|
23
|
+
roots, their kind, their component/route/store files) plus the OKF as-built
|
|
24
|
+
frontend note. The project's frontend/ rule files are generated AFTERWARDS, as
|
|
25
|
+
the detail layer under whatever this half ratifies — the same order the
|
|
26
|
+
technical tier already uses.
|
|
27
|
+
|
|
28
|
+
DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
|
|
29
|
+
here to leak):
|
|
30
|
+
• EVIDENCE-FIRST — author a UX principle ONLY for an experience trait the UI
|
|
31
|
+
code actually exhibits. If the code does not show it, it is not a principle.
|
|
32
|
+
• CITE inline — every principle ends with an `(evidence: …)` line naming a
|
|
33
|
+
real component / route / store / stylesheet / config path. A principle with
|
|
34
|
+
no groundable evidence does not belong.
|
|
35
|
+
• AS-BUILT LEVEL — state a partial / inconsistent / absent trait at the level
|
|
36
|
+
the code actually reaches. An app with no accessibility attributes does not
|
|
37
|
+
get an accessibility principle written as though it were met; it gets one
|
|
38
|
+
that says what IS enforced, or none at all.
|
|
39
|
+
• OMIT pure aspiration — a trait the UI shows zero of is not softened into a
|
|
40
|
+
principle. A short honest half a later run can extend is correct.
|
|
41
|
+
• UX-* SERIES — number UX-I, UX-II, … This half is PARALLEL to the technical
|
|
42
|
+
base, never a continuation of it, so its numbering is unaffected by how many
|
|
43
|
+
principles that base carries and it never resumes the domain half's.
|
|
44
|
+
• ONE LANE ONLY — this half governs the frontend lane and stands alone. It
|
|
45
|
+
does not restate service-lane principles, does not cite them by number, and
|
|
46
|
+
carries NO domain principle, identifier, terminology or regulatory rule.
|
|
47
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
48
|
+
-->
|
|
49
|
+
<!--
|
|
50
|
+
Sync Impact Report
|
|
51
|
+
- Version: [OLD] -> [NEW] (reverse-engineered frontend baseline)
|
|
52
|
+
- Project: [PROJECT_NAME]
|
|
53
|
+
- Lane: [LANE_ID] ([KIND]) at [ROOT] — [separable | rendered inside the service tree]
|
|
54
|
+
- Discovered experience principles: UX-I–UX-[N]
|
|
55
|
+
- Principle set (as-built):
|
|
56
|
+
UX-I [PRINCIPLE_TITLE]
|
|
57
|
+
UX-II [PRINCIPLE_TITLE]
|
|
58
|
+
… (only traits the UI code evidences — no fixed count)
|
|
59
|
+
- Experience concerns DELIBERATELY OMITTED (lack of as-built evidence):
|
|
60
|
+
- [CONCERN] — [what the code shows instead, or that it shows nothing]
|
|
61
|
+
- Dependent artifacts:
|
|
62
|
+
- guardrails/projects/[project]/frontend/ — [✅/⚠] generated lane rule set
|
|
63
|
+
- guardrails/projects/[project]/tech-rule-bindings.md — [✅/⚠] `## /aw-spec-ui-constitution`
|
|
64
|
+
- TODOs: [none mechanical | …]
|
|
65
|
+
-->
|
|
66
|
+
# [PROJECT_NAME] Constitution — User Experience Base
|
|
67
|
+
|
|
68
|
+
> Reverse-engineered, **as-built**, domain-agnostic frontend-lane half. Authority for the
|
|
69
|
+
> UI lane. Service-lane principles live in `constitution.technical.md` and domain principles
|
|
70
|
+
> in `constitution.domain.md`; this half neither restates nor renumbers either.
|
|
71
|
+
> It asserts only experience traits evidenced by the UI code itself.
|
|
72
|
+
|
|
73
|
+
## Declared Lane
|
|
74
|
+
|
|
75
|
+
[UI_LANE_DECLARATION]
|
|
76
|
+
<!-- Form: one line naming the lane, what it is built with, and the root directory it owns —
|
|
77
|
+
all three READ FROM THE CODE (the scan's candidate root, its detected kind, the framework
|
|
78
|
+
markers), never invented and never taken from a stack profile. Where the UI is rendered
|
|
79
|
+
inside the service tree and owns no root of its own, SAY SO: that is a legitimate as-built
|
|
80
|
+
lane, reversed in place. Where .appweaver/stacks.json exists and disagrees with the code,
|
|
81
|
+
the disagreement is reported, not silently resolved — a declaration is a human's statement
|
|
82
|
+
of intent and the code is what shipped. -->
|
|
83
|
+
|
|
84
|
+
## Experience Principles
|
|
85
|
+
|
|
86
|
+
<!-- One block PER EVIDENCED TRAIT. Tag (NON-NEGOTIABLE) only where the UI code enforces it
|
|
87
|
+
as such. Replace the bracketed text; keep the `### UX-<numeral>. <title>` + rule +
|
|
88
|
+
`(evidence: …)` shape. -->
|
|
89
|
+
|
|
90
|
+
### UX-I. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
|
|
91
|
+
[One declarative, testable rule the UI code actually evidences, stated at the level it reaches.]
|
|
92
|
+
(evidence: [real component / route / store / stylesheet / config path])
|
|
93
|
+
|
|
94
|
+
### UX-II. [PRINCIPLE TITLE] [(NON-NEGOTIABLE)?]
|
|
95
|
+
[…]
|
|
96
|
+
(evidence: […])
|
|
97
|
+
|
|
98
|
+
<!-- … continue with only the principles the UI code evidences, then stop … -->
|
|
99
|
+
|
|
100
|
+
## [UI_STRUCTURE_SECTION_NAME]
|
|
101
|
+
|
|
102
|
+
[UI_STRUCTURE_CONTENT]
|
|
103
|
+
<!-- Form: the lane's AS-BUILT layout under its own root — where components, screens/pages,
|
|
104
|
+
routing, client state, styling and assets actually live, named as THIS code names them.
|
|
105
|
+
Do not impose a folder taxonomy the code does not use. This layout sits entirely under
|
|
106
|
+
the lane's root and never adds to the service lane's structure. -->
|
|
107
|
+
|
|
108
|
+
## [UI_CONVENTIONS_SECTION_NAME]
|
|
109
|
+
|
|
110
|
+
[UI_CONVENTIONS_CONTENT]
|
|
111
|
+
<!-- Form: the naming, state-management, data-fetching and styling conventions the code
|
|
112
|
+
visibly follows, plus the lane's existing quality gates (its test setup, lint/format
|
|
113
|
+
config, CI steps) — each a thin adopted line pointing at the generated frontend rule
|
|
114
|
+
file that carries the detail. Where the codebase is inconsistent, state the DOMINANT
|
|
115
|
+
convention and record the divergence rather than picking a winner. -->
|
|
116
|
+
|
|
117
|
+
## Governance
|
|
118
|
+
|
|
119
|
+
[UI_GOVERNANCE_RULES]
|
|
120
|
+
<!-- Form: this half versions independently of the other two. State only the lane's own
|
|
121
|
+
overrides. Mark the whole half PROVISIONAL where onboard authored it from the scan
|
|
122
|
+
alone — a later adopt/constitution run reconciles it against per-slice evidence. -->
|
|
123
|
+
|
|
124
|
+
**Version**: [X.Y.Z] | **Ratified**: [YYYY-MM-DD] | **Last Amended**: [YYYY-MM-DD]
|
|
125
|
+
<!-- ISO YYYY-MM-DD dates. Versions INDEPENDENTLY of the other two halves. -->
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
3
|
+
rev-templates/ui-delta-design-template.skeleton.md — SHAPE-ONLY reference.
|
|
4
|
+
|
|
5
|
+
This file is the FORMAT reference for the reverse-engineered UI DELTA-design
|
|
6
|
+
TEMPLATE that onboard installs at
|
|
7
|
+
.appweaver/templates/overrides/ui-delta-design-template.md — the frontend lane's
|
|
8
|
+
twin of delta-design-template.skeleton.md, written only where the CODE has a
|
|
9
|
+
lane. It carries the classification triple, the impact and regression
|
|
10
|
+
sections, the two ledgers and the close contract, and NOTHING ELSE.
|
|
11
|
+
|
|
12
|
+
IT NAMES NO FRAMEWORK AND NO FIXED UI TAXONOMY. The "Section" column is a
|
|
13
|
+
SLOT, filled with the ACTUAL sections of the UI design template generated
|
|
14
|
+
alongside this one — including whatever composition axes §3 turned out to
|
|
15
|
+
carry. A change is classified against the document it amends.
|
|
16
|
+
|
|
17
|
+
ONE CHANGE, TWO LANES, ONE VERSION. A change request that touches both lanes
|
|
18
|
+
produces a service delta AND this one; `finalize-delta` merges the three
|
|
19
|
+
masters (spec.md, design.md, design.ui.md) and the change closes on ONE
|
|
20
|
+
version bump. This record never opens a second UI design document, and it
|
|
21
|
+
never restates the service delta — where the change starts in the service
|
|
22
|
+
contract, this document records only what the EXPERIENCE does with it.
|
|
23
|
+
|
|
24
|
+
DISCIPLINE THIS SKELETON ENFORCES (structurally — there is no project content
|
|
25
|
+
here to leak):
|
|
26
|
+
• ADDED / MODIFIED / REMOVED — the complete classification. A shared
|
|
27
|
+
component is MODIFIED in place, never duplicated into the change.
|
|
28
|
+
• EVERY ROW SERVES A SPEC ID — the delta reads the delta-spec, never the
|
|
29
|
+
domain rule files. A change's experience is stated in the spec first.
|
|
30
|
+
• STATES ARE PART OF THE CHANGE — a new interaction that ships without its
|
|
31
|
+
loading, empty, error and permission-denied states is an incomplete delta,
|
|
32
|
+
not a later refinement.
|
|
33
|
+
• TECHNOLOGY-AGNOSTIC — responsibilities, field shapes and events, no code.
|
|
34
|
+
═══════════════════════════════════════════════════════════════════════════
|
|
35
|
+
-->
|
|
36
|
+
# UI Delta Design — [CR-ID]: [TITLE]
|
|
37
|
+
|
|
38
|
+
**Feature (aggregate)**: [Aggregate]
|
|
39
|
+
|
|
40
|
+
**Base version**: [vX.Y]
|
|
41
|
+
|
|
42
|
+
**Service delta**: [the companion delta-design for this CR, or `None — experience-only change`]
|
|
43
|
+
|
|
44
|
+
<!--
|
|
45
|
+
This delta applies to the SINGLE master UI design at
|
|
46
|
+
specs/[Aggregate]/design.ui.md — never a new document. Classify every change
|
|
47
|
+
ADDED / MODIFIED / REMOVED against the current master, per the MASTER'S OWN
|
|
48
|
+
SECTIONS, in the same technology-agnostic form: responsibilities, inputs as
|
|
49
|
+
field shapes, events and states — no code. After this delta is applied,
|
|
50
|
+
⌛ `ui-implement-delta` regenerates the touched UI and regression re-verifies
|
|
51
|
+
every screen that shares a changed component or state.
|
|
52
|
+
-->
|
|
53
|
+
|
|
54
|
+
## Change summary
|
|
55
|
+
|
|
56
|
+
[One paragraph: what the experience change is and which user story / spec delta
|
|
57
|
+
it serves.]
|
|
58
|
+
|
|
59
|
+
## ADDED — new UI elements
|
|
60
|
+
|
|
61
|
+
<!-- New screens, components, state, interactions or contract bindings.
|
|
62
|
+
"Section" names a section of THIS project's master UI design — the same
|
|
63
|
+
section titles the generated UI design template carries. -->
|
|
64
|
+
|
|
65
|
+
| Section (§ in design.ui.md) | Element | Kind | Serves |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| [§ of the master's own structure] | `[element]` | [screen / component / state / binding] | US-[n] · FR-[nnn] |
|
|
68
|
+
|
|
69
|
+
## MODIFIED — existing UI elements
|
|
70
|
+
|
|
71
|
+
<!-- Edits to elements the master already defines. A shared component or a
|
|
72
|
+
shared state container is modified here, in place — never copied. -->
|
|
73
|
+
|
|
74
|
+
| Section (§ in design.ui.md) | Element | What changes | Why |
|
|
75
|
+
|---|---|---|---|
|
|
76
|
+
| [§ of the master's own structure] | `[element]` | [the edit] | US-[n] |
|
|
77
|
+
|
|
78
|
+
## REMOVED
|
|
79
|
+
|
|
80
|
+
- [UI element removed + why, including where its users now go] — or `None`
|
|
81
|
+
|
|
82
|
+
## Interaction states touched
|
|
83
|
+
|
|
84
|
+
<!-- Every state the change adds or alters — loading, empty, error,
|
|
85
|
+
permission-denied, in-flight. A new interaction lists its full state set
|
|
86
|
+
here; an unlisted state reads as unchanged, not as absent. -->
|
|
87
|
+
|
|
88
|
+
| Interaction | States added / changed | What the user sees | Serves |
|
|
89
|
+
|---|---|---|---|
|
|
90
|
+
| `[interaction]` | [states] | [per-state behaviour] | US-[n] |
|
|
91
|
+
|
|
92
|
+
## Contract impact
|
|
93
|
+
|
|
94
|
+
[What this change needs from the service lane, taken from the change's contract
|
|
95
|
+
projection: bindings added, changed or no longer used. Anything the experience
|
|
96
|
+
requires that the contract does not offer is raised back to the service lane —
|
|
97
|
+
never worked around in the client. Or `None`.]
|
|
98
|
+
|
|
99
|
+
## Cross-section impact
|
|
100
|
+
|
|
101
|
+
[Which of the master's sections ripple; shared components or state containers
|
|
102
|
+
touched; navigation edges added or removed; any screen in ANOTHER feature that
|
|
103
|
+
depends on a changed shared element.]
|
|
104
|
+
|
|
105
|
+
## Regression targets
|
|
106
|
+
|
|
107
|
+
[Existing user stories / screens to re-verify because a shared component, a
|
|
108
|
+
shared state container or a navigation edge changed.]
|
|
109
|
+
|
|
110
|
+
## New assumptions / deviations (from this change)
|
|
111
|
+
|
|
112
|
+
<!-- Anything this change defers — folds into the master's DA-n / WA-n ledgers
|
|
113
|
+
on apply. -->
|
|
114
|
+
|
|
115
|
+
- **DA-[n]**: [assumption to clarify later] — or `None`
|
|
116
|
+
- **WA-[n]**: [deviation to clear later] — or `None`
|
|
117
|
+
|
|
118
|
+
## On close
|
|
119
|
+
|
|
120
|
+
`finalize-delta` merges this record into the master design.ui.md alongside the
|
|
121
|
+
spec and service-design merges, and appends the Change History row;
|
|
122
|
+
`close-delta` bumps the ONE version both lanes share and archives the change
|
|
123
|
+
under `changes/archive/`.
|