DECLARATIVE-YAML-20: Retire an invariants list across both scopes
What it demonstrates
Section titled “What it demonstrates”Independent entries on the body root (whole-doc) and on a section node together replace an invariants.yaml linter.
Builds on: DECLARATIVE-YAML-18: Bound occurrences with min / max
How it’s done
Section titled “How it’s done”The declarative YAML artifact, verbatim — no code required.
mcVersion: 1kind: contractbody: forbids: - { pattern: "}validators/", normalize: false } # forbidden_phrases requires: - { pattern: "conventions/commit-messages.md" } # required tool-ref, anywhere sections: - section: Output contract requires: - { pattern: "ALREADY-CLOSED" } # required phrase, this section - { pattern: "STALE-PR pr=" }Surfaces exercised
Section titled “Surfaces exercised”multiple independent entries across two scopes (section subtree + whole doc)1:1 map from invariants.yaml