Skip to content

Finish the single-source vocabulary (migrate the remaining 19 hardcoded enums) #54

Description

@openleek

Why this matters

The point of schemas/vocab.json is that the docs, the schema and the validator can never disagree about what a valid token is — there's one source of truth. Rounds 1–3 moved the 12 routing vocabularies there. But ~19 other controlled vocabularies (evidence categories, source classes, readiness levels, thesis states, research actions, etc.) are still hardcoded inside scripts/validate_repo.py, and several are also written out by hand in data/controlled-vocabulary.md. That's the same triplicated drift we just removed for routing — still live for everything else.

Finishing the migration means the entire Mira vocabulary has one home, and a typo or an out-of-date doc gets caught automatically instead of silently diverging.

What's involved

  • Move the remaining ~19 enum sets from validate_repo.py constants into schemas/vocab.json (keep the "each enum lives in exactly one place" invariant — delete the hardcoded copy as you migrate each).
  • Extend the validate_vocab_doc_consistency marker check to cover the newly-migrated fields' sections in data/controlled-vocabulary.md.
  • Do it incrementally (a few related vocabularies per PR) to keep blast radius small, exactly as the routing-only first pass did.

Done when

  • No routing/evidence/source/readiness enum is hardcoded in validate_repo.py; all resolve from vocab.json.
  • controlled-vocabulary.md token lists for migrated fields are marker-bound and pass validate_vocab_doc_consistency.

Context

architecture/harness-productization-notes.md (WS0, "round-1 scope is routing-only by design"). Currently 12 fields in vocab.json, 19 enum sets still hardcoded.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions