Executable Contract Backlog
Intent
Make requirements testable using conformance statements + examples + tests, tracked to issues.
Structure
The executable contract backlog is a linked set of requirements, artifacts, and tests that can be run automatically. Structurally, it combines: conformance statements (what must be true), artifacts that enforce them (profiles/terminology/examples), and checks that prove them (CI gates).
- Statement registry: RFC2119-style statements with stable IDs and rationale
- Artifact links: each statement points to the enforcing profile rule, terminology binding, and example(s)
- Test links: each statement has at least one positive test (and negative test for high-risk rules)
- Work tracking: statements map to issues/PRs so progress is visible and reviewable
- Definition of Done: objective acceptance criteria that must be satisfied before a statement is considered implemented
Key Components
Conformance statements
- Write requirements as RFC2119-style statements (MUST/SHOULD/MAY)
- Assign stable IDs so statements can be referenced and tracked
- Attach rationale so reviewers understand the ‘why’
- Link to the profile/terminology element that enforces it
- Keep statements small and independently testable
Test cases
- For each statement, define positive and (when risk is high) negative tests
- Use examples as inputs whenever possible
- Specify what tooling runs the test (IG Publisher, terminology server, etc.)
- Keep quick feedback tests in the PR gate
- Track flaky tests separately and fix root causes
Trace links
- Link statements to issues/requirements in a tracker
- Link statements to profiles, ValueSets, examples, and tests
- Keep traceability lightweight but consistent
- Use consistent identifiers in filenames and commit messages
- Make it easy to answer: ‘what changed and why?’
Definition of Done
- Define the minimum bar for accepting a requirement into the IG
- Include validation, rendering, example coverage, and review expectations
- Ensure DONE is objective (pass/fail), not subjective
- Revisit the DoD when releases get blocked by repeated issues
- Keep the DoD visible in the repo
Behavior
Backlog lifecycle
Requirements move through a small lifecycle: propose → implement → validate → ship. The ‘executable’ part is what keeps the backlog honest.
Define
- Write a conformance statement with a stable ID and rationale.
- Decide how it will be enforced (profile constraint, binding strength, invariant, terminology policy).
- Define how it will be tested (validator, terminology server op, cross-product harness).
Implement
- Add the enforcing artifact changes (FSH, terminology artifacts, narrative).
- Add/update examples so the requirement is demonstrably met.
- Add CI checks so violations fail fast with actionable messages.
Operate
- Triage failures: distinguish tool drift vs true regressions.
- When changes are needed, update statement, artifact, and tests together.
- Ship with release notes so implementers can track what changed and why.
Related Patterns
- Validator Gate in CI: Validator gate enforces contracts
Benefits
- Less rework
- Automated gating
- Vendor alignment
Trade-offs
- Needs discipline and triage
References
- IG Publisher Documentation - Publisher docs
- Testing Platforms - Testing ecosystem
Example
For each MUST statement: provide example(s) and a CI check that fails when violated.