Summary¶
The bundle is designed to grow in four directions, each with a fixed procedure. Run python3 tools/validate_bundle.py before committing anything.1
1. Add a concept to an existing holder¶
python3 tools/new_concept.py 30-actors labour-unions-and-media --title "Labour Unions and Media"
Fill in the frontmatter (sources[], tags, description), write # Summary → sections → # Links → # Footnotes, then add a line to that holder's index.md.
2. Add a new holder¶
Create the directory with the next free two-digit prefix (100-, 110-, …) plus a short slug, add an index.md following the existing pattern, and add a row to the parent table in the bundle index.
3. Add a source¶
Append to the evidence ledger with the next free id. Never reuse or renumber an id — ids are stable identities, and concept footnotes point at them.
4. Add a dated finding¶
Put it in 95-inbox as YYYY-MM-DD-<slug>.md with published, retrieved, as_of, stale_after and a snapshot note, per the intake convention. Never edit a published inbox item; append an # Amendment section.
The three rules that keep it coherent¶
- No restatement. A concept distils and cross-links; it does not copy another concept's content.2
- Label every claim.
documented/inferred/contested, inline, with the interest named where relevant.1 - Nothing self-promotes. Agent-authored concepts stay
status: draft;stablerequires averifiedevent by the human owner.1
What the validator checks¶
Frontmatter parses; required keys present; status in the allowed set; every sources[].resource that is a bundle-relative path exists; every bundle-rooted internal link resolves; every footnote reference has a matching footnote definition. It does not check whether claims are true — that is the claim verification playbook.