init
This commit is contained in:
commit
41481636d8
12 changed files with 2126 additions and 0 deletions
155
rules/validation.md
Normal file
155
rules/validation.md
Normal file
|
|
@ -0,0 +1,155 @@
|
|||
# Validation Rules
|
||||
|
||||
The ABC Validation Rules define the mechanical checks required to verify that an
|
||||
ABC architecture conforms to the ABC Schema and the normative rules of the
|
||||
specification. These rules are intended for:
|
||||
|
||||
* automated validators
|
||||
* linters
|
||||
* compilers
|
||||
* agent‑driven code generation
|
||||
* CI/CD enforcement
|
||||
|
||||
Validation Rules are **not** conceptual rules; they are operational constraints
|
||||
that ensure an ABC description is structurally correct and unambiguous.
|
||||
|
||||
Validation Rules follow the canonical identifier format:
|
||||
|
||||
```default
|
||||
ABC-VALID-R#
|
||||
```
|
||||
|
||||
They are grouped into:
|
||||
|
||||
* Structural Validation
|
||||
* Contract Validation
|
||||
* Data‑Flow Validation
|
||||
* Hierarchy Validation
|
||||
* Profile‑Specific Validation (optional)
|
||||
|
||||
## Structural Validation Rules
|
||||
|
||||
These rules ensure the ABC hierarchy is well‑formed.
|
||||
|
||||
### ABC-VALID-R1 (MUST)
|
||||
|
||||
Every construct MUST have exactly one parent, except the ApplicationStack which
|
||||
MUST have none.
|
||||
|
||||
### ABC-VALID-R2 (MUST)
|
||||
|
||||
The hierarchy MUST follow the pattern:
|
||||
`ApplicationStack → LogicalUnit → ResourceGroup`.
|
||||
|
||||
### ABC-VALID-R3 (MUST)
|
||||
|
||||
Construct trees MUST NOT contain cycles.
|
||||
|
||||
### ABC-VALID-R4 (MUST)
|
||||
|
||||
Construct IDs MUST be unique within the architecture.
|
||||
|
||||
### ABC-VALID-R5 (MUST)
|
||||
|
||||
Construct types MUST be one of:
|
||||
ApplicationStack, LogicalUnit, ResourceGroup.
|
||||
|
||||
### ABC-VALID-R6 (MUST)
|
||||
|
||||
ResourceGroups MUST NOT have children.
|
||||
|
||||
### ABC-VALID-R7 (MUST)
|
||||
|
||||
LogicalUnits MUST NOT have parents that are not ApplicationStacks.
|
||||
|
||||
### ABC-VALID-R8 (MUST)
|
||||
|
||||
ResourceGroups MUST NOT have parents that are not LogicalUnits.
|
||||
|
||||
## Contract Validation Rules
|
||||
|
||||
These rules ensure Input/Output Contracts are well‑defined and consistent.
|
||||
|
||||
### ABC-VALID-R10 (MUST)
|
||||
|
||||
Every construct MUST define both an InputContract and an OutputContract.
|
||||
|
||||
### ABC-VALID-R11 (MUST)
|
||||
|
||||
InputContracts MUST be immutable after instantiation.
|
||||
|
||||
### ABC-VALID-R12 (MUST)
|
||||
|
||||
Constructs MUST NOT reference values not present in their InputContract.
|
||||
|
||||
### ABC-VALID-R13 (MUST)
|
||||
|
||||
Constructs MUST NOT expose outputs not declared in their OutputContract.
|
||||
|
||||
### ABC-VALID-R14 (SHOULD)
|
||||
|
||||
OutputContracts SHOULD be minimal and stable across versions.
|
||||
|
||||
### ABC-VALID-R15 (MUST)
|
||||
|
||||
InputContracts MUST NOT reference parent or sibling constructs directly.
|
||||
|
||||
### ABC-VALID-R16 (MUST)
|
||||
|
||||
OutputContracts MUST NOT expose internal implementation details (e.g., resource
|
||||
objects).
|
||||
|
||||
## Data‑Flow Validation Rules
|
||||
|
||||
These rules enforce Capturing Down and Bubbling Up.
|
||||
|
||||
### ABC-VALID-R20 (MUST)
|
||||
|
||||
All downward references MUST originate from:
|
||||
|
||||
* parent.InputContract
|
||||
* parent.OutputContract
|
||||
|
||||
### ABC-VALID-R21 (MUST)
|
||||
|
||||
All upward references MUST originate from:
|
||||
|
||||
* child.OutputContract
|
||||
|
||||
### ABC-VALID-R22 (MUST)
|
||||
|
||||
No lateral data flow is permitted between siblings.
|
||||
|
||||
### ABC-VALID-R23 (MUST)
|
||||
|
||||
Constructs MUST NOT read values from grandparents or ancestors except through
|
||||
parent‑mediated Capturing Down.
|
||||
|
||||
### ABC-VALID-R24 (MUST)
|
||||
|
||||
Constructs MUST NOT write values to ancestors except through Bubbling Up.
|
||||
|
||||
### ABC-VALID-R25 (MUST)
|
||||
|
||||
Constructs MUST NOT read or write values from siblings or cousins.
|
||||
|
||||
## Instantiation Validation Rules
|
||||
|
||||
These rules ensure constructs are instantiated correctly.
|
||||
|
||||
### ABC-VALID-R30 (MUST)
|
||||
|
||||
Constructs MUST be instantiated using the Instantiation Interface:
|
||||
(scope, id, inputs).
|
||||
|
||||
### ABC-VALID-R31 (MUST)
|
||||
|
||||
Instantiation MUST NOT accept parameters outside the InputContract.
|
||||
|
||||
### ABC-VALID-R32 (MUST)
|
||||
|
||||
Instantiation MUST NOT produce side effects beyond constructing children.
|
||||
|
||||
### ABC-VALID-R33 (MUST)
|
||||
|
||||
Constructs MUST NOT mutate their InputContract after instantiation.
|
||||
Loading…
Add table
Add a link
Reference in a new issue