llm: tag vocabulary curation from corpus tags #574
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closed vocabulary derived from the existing Zotero/bib corpus tags (7,795 tags — most are mechanical prefixes like docket:/year:/rule: to exclude).
Scope
Acceptance
Spec:
docs/superpowers/specs/2026-07-16-llm-module-design.mdStatus audit (2026-08-13, repo-verified): NOT DONE. No vocab extraction/curation artifact;
src/bib/tag.pyis the mechanical ns:value vocabulary, not a curated topical set;dev/scripts/llm_bakeoff.pyexplicitly defers this to P35.Done — merged to main as
5e37641(commit7693e97). Design:docs/superpowers/specs/2026-09-22-llm-tagging-design.md.src/llm/vocab/themes.yaml— the closed vocabulary, v2, 57 themes (v1 had 53; the CY2027 letters forcedmodifier-25-same-day,lactation-services,health-coaching,radiation-therapy). Each theme: kebab-case slug, label, a one-sentence definition the judge sees, letter-language synonyms, and the FR section stems it was seeded from. Mechanical namespaces (docket:,year:,rule:,reg-docket:,enriched:,code:,family:,mesh:) are excluded by construction — they are provenance, not themes; the corpus'smesh:tags are the skin-substitute literature, not rulemaking themes.dev/scripts/llm_vocab_candidates.pymines heading-like paragraphs fromfr_anchorsfor rules with payment year ≥ 2018 and ranks the stems by how many rule years carry them. Hand-curated from there (by me — please skim the YAML; every slug is stable once published, retire viaretired:and bumpversion).llm.vocab.load()validates (unique slugs, non-empty definitions, version ≥ 1, retired ≠ active);Theme.cardis the text embedded per theme;split_tags()keeps the write-back away from hand tags.stack llm vocab [--path] [--slug].