items
How many items a list has, the fewest words each item needs, and the shape each item takes.
Flight director: "Still alive. Potatoes fine." is not a status report.
Quick reference
| Written as | Fails with | Applies to |
|---|---|---|
items. | too-few-items error | list |
items. fix: opt-in | too-many-items error | list |
items. | list-item-too-short warn | list |
items. | item-mismatch errorvalue-wrong-form errorvalue-not-given errorvalue-not-allowed errorunknown-entity error | list |
items. | unknown-entity error | list |
Examples
items. min
Require at least N list items (or checkboxes) — e.g. at least one reproduction step.
Two items meet the minimum
<!-- mdv: section required -->
## Checks
<!-- mdv: list items.min=2 -->
- Rover wheel inspection
- Habitat seal check## Checks
- Rover wheel inspection
- Habitat seal check✓ passes
A list with too few items is flagged
<!-- mdv: section required -->
## Checks
<!-- mdv: list items.min=2 -->
- Rover wheel inspection
- Habitat seal check## Checks
- Rover wheel inspection✗ too-few-items error · line 3
items. max
Allow at most N list items (or checkboxes) — mirrors items.min to bound a list's length.
A list over the cap is flagged
<!-- mdv: section required -->
## Checks
<!-- mdv: list items.max=2 -->
- Rover wheel inspection## Checks
- Align the docking collar
- Ping the Mars relay
- Reseat the antenna
- Swap the filter✗ too-many-items error · line 3
items. words. min
Require every list item to reach at least N words, so no item is a one-word token gesture.
Every item has enough words
<!-- mdv: section required -->
## Changes
<!-- mdv: list items.words.min=3 -->
- Probe handles nested hatches## Changes
- The probe handles nested hatches
- The console aborts on drift✓ passes
A one-word item is flagged
<!-- mdv: section required -->
## Changes
<!-- mdv: list items.words.min=3 -->
- Probe handles nested hatches## Changes
- The probe handles nested hatches
- Fixed✗ list-item-too-short warn · line 4
items. mask
Require every list item to match a mask shape (e.g. "<mention> <text> by <date>"), or any one of an array of masks - items.words.min/max for length instead of shape.
Items shaped like action items pass
<!-- mdv: section required -->
## Action items
<!-- mdv: list items.mask="<mention> <text> by <date>" -->
- @maya add queue-depth alert by 2026-07-21## Action items
- @maya add queue-depth alert by 2026-07-21
- @sam run failover drill by 2026-08-01✓ passes
An item missing its date is flagged
<!-- mdv: section required -->
## Action items
<!-- mdv: list items.mask="<mention> <text> by <date>" -->
- @maya add queue-depth alert by 2026-07-21## Action items
- @maya add queue-depth alert by 2026-07-21
- @sam run failover drill soon✗ value-not-given error · line 4
items. in
Require every list item, taken whole, to be a member of the source — for lists that mirror a catalogue line-for-line; the source's projection defines the line shape once.
An item outside the source list is flagged
<!-- mdv: section required -->
## On call
<!-- mdv: list items.in=./crew.json -->
- maya["maya", "priya"]## On call
- maya
- jsmith✗ unknown-entity error · line 4
Items that all appear in the source pass
<!-- mdv: section required -->
## On call
<!-- mdv: list items.in=./crew.json -->
- maya["maya", "priya"]## On call
- maya
- priya✓ passes
Range
Both bounds at once, inclusive (a. or . for one side):
<!-- mdv: section items.range=20..200 -->
## Summary
<!-- mdv: endsection -->