Ghostlight/docs/architecture/corpus-coverage-ledger.md
2026-05-04 14:06:01 +01:00

3.3 KiB

Corpus Coverage Ledger

The corpus coverage ledger is the project-level index for accepted and planned Aetheria training fixtures.

Its job is not to store story content. Its job is to keep the corpus honest: which factions, movements, flashpoints, timeline lanes, tonal modes, collision axes, review states, and item/economy hooks are represented, and which are still missing.

Live Files

  • Ledger: state/corpus-coverage.json
  • Schema reference: schemas/corpus-coverage.schema.json
  • Validator/status tool: tools/validate_corpus_coverage.py
  • Command: npm run coverage:status

Entry Contract

Each fixture entry records:

  • fixture_id: stable fixture handle.
  • status: planned, draft, accepted_as_draft, accepted, needs_revision, rejected, or superseded.
  • timeline_lane: historical_grounded, transition_grounded, or future_branch.
  • canon_status: single-history, branch-local, promoted branch, template, or draft status.
  • story_type: founding-era, day-in-the-life, flashpoint, movement, future-branch, or trade-life story.
  • primary_subjects and secondary_subjects: factions, movements, institutions, species/body groups, or other represented subjects.
  • collision_axes: the pressures the fixture exercises, such as law, labor, care, class, logistics, species/body affordance, trade, memory, personhood, technology, legitimacy, or infrastructure.
  • tonal_modes: prose modes the fixture contributes to the corpus.
  • training_targets: organs or reference surfaces this fixture is relevant to.
  • training_usability: explicit per-stage declaration of whether the fixture is training_ready, reference_only, or not_training_data.
  • artifacts: paths to fixture files.
  • review: status of schema, narrative, lore, spatial, visual, and IF review.
  • economy_hooks: item, assembly, trade-good, supply-chain, or tech hooks.
  • open_lore_gaps: blocking or useful gaps discovered during generation.

Acceptance Rule

An accepted or accepted-as-draft fixture must have the core artifact refs:

  • lore digest
  • agent state
  • coordinator artifact
  • Ink file
  • training sidecar

It must also carry review fields for schema, narrative, lore, spatial, visual, and IF artifact review. A fixture may still be accepted-as-draft with review caveats, but the caveats should be visible instead of hidden under the nice rug.

Coverage status is not training readiness. A fixture that looks good as a story can still be unusable for a model stage if it lacks exact input/output receipts, raw outputs, reviewer decisions, hidden-context audits, or mutation records in the shape that stage requires. The ledger should be rude about this. If a fixture is only a reference for story shape or grounding, mark it reference_only; do not promote it by implication.

Report Shape

npm run coverage:status validates the ledger and prints:

  • total entries and accepted count
  • progress toward the 100-150 broad target
  • status, timeline lane, story type, collision-axis, tonal-mode, and subject counts
  • training-usability counts
  • major-power founding/day-in-life candidates when present
  • basic gap signals, such as missing future-branch coverage or no day-in-life stories yet

This is deliberately a coarse instrument. It should tell us where to point the next fixture without pretending to be a corpus scientist in a lab coat made of spreadsheet tabs.