Strictness
Strictness is two independent axes — presence and closure. Start lax, dial up with a single closure rule.
Hammond: "We spared no expense." Muldoon: ...the fences are only as strict as you set them.
Two independent axes: is it present, and is anything undeclared allowed?
Presence
| Flag | Section missing |
|---|---|
required | error; must also be non-empty |
required allowEmpty | error; may be empty |
recommended | warning, exit 0 |
| none | fine |
<!-- mdv: section recommended content.words.min=3 -->
## Rollback Plan## Other
Stuff.Closure
| Element | Closure rule |
|---|---|
| checklist | strict (same as labels.) |
| table | strict with columns. |
| sections | strict on document or section |
| frontmatter | front strict |
Lax: the checklist must exist, but its labels are only a starter.
<!-- mdv: section required -->
## Checklist
<!-- mdv: list required -->
- [ ] Tests added or updated
- [ ] Docs updatedStrict: exactly these items.
<!-- mdv: section required -->
## Checklist
<!-- mdv: list required labels.eq=@template -->
- [ ] Tests added or updated
- [ ] Docs updated## Checklist
- [ ] Tests added or updated
- [ ] Docs updated
- [ ] Fed the raptorsSection structure
strict forbids undeclared sections, ordered enforces order, freeText opts a scope out (all atoms).
<!-- mdv: document strict ordered -->
<!-- mdv: section required content.words.min=5 -->
## Summary
<!-- mdv: section required content.words.min=5 -->
## Changes## Changes
Five words are right here.
## Summary
Five words are right here.
## Notes
Extra.out-of-order on the swap, unexpected-section on ## Notes.
Conditional sections
requiredWhen makes a section mandatory only when a checkbox is ticked or a frontmatter key matches (requiredWhen.).
<!-- mdv: section required -->
## Type of Change
<!-- mdv: list required checked.eq=1 -->
- [ ] Bug fix
- [ ] Breaking change
<!-- mdv: section requiredWhen.checked="Breaking change" content.words.min=5 content.none=@placeholders -->
## Migration Notes
Dropping the `v1` payload shape; callers must send `schemaVersion: 2` and the renamed `ownerId` field.## Type of Change
- [ ] Bug fix
- [x] Breaking changeHow to adopt
Start with required, add one closure rule per element once the shape settles, and soften with Overrides. Lock release checklists; leave design notes loose.