REAL-WORLD-SCHEMAS-16: Retire an SDLC invariants.yaml prose linter onto a contract
What it demonstrates
Section titled “What it demonstrates”The SDLC plugin’s required/forbidden-phrase, required-section and tool-ref linter becomes one declarative contract.
Builds on: REAL-WORLD-SCHEMAS-15: Validate the self-hosted SDLC corpus end to end
How it’s done
Section titled “How it’s done”The declarative YAML artifact, verbatim — no code required.
# invariants.yaml (a bespoke SKILL.md linter) -> skill.contract.yamlmcVersion: 1kind: contractbody: forbids: - { pattern: "}scripts/", normalize: false } # forbidden_phrases requires: - { pattern: "sdlc task close-commit" } # required_tool_refs (anywhere) sections: - section: Output contract requires: - { pattern: "DONE pr=" } # required_phrases (section-scoped) - section: Notes # required_h2_sectionsSurfaces exercised
Section titled “Surfaces exercised”requires: / forbids: on the body root and on section nodes (planned declarative text constraints)the SDLC invariants.yaml linter retired onto one contract (DR-0005): required/forbidden phrases + required sections + tool-refs