Tier classification of all 26 categories
Goal
Populate the detection descriptor for EVERY category + subcat by classifying into the five tiers (graph-native / graph-assist / ast-lint / graph-gap / llm-only) plus out-of-code-graph, so the rules JSON declares how each of the ~120 subcats is caught or narrowed.
Implementation Sketch
Encode this plan’s analysis as data: each subcat gets its tier + detector/query/enrichment/narrowing spec. A coverage test asserts zero unclassified subcats.
Spec References
impl-hygiene-rules.json categories[]; section-01 schema; intelligence.md subsystem mapping.
Work Items
- Classify the graph-native + graph-assist set (LEAK:algorithmic-duplication/phase-bleeding/scattered-knowledge/duplicated-dispatch, WASTE:dead-code, BLOAT:file-length/fn-length, PARAM_SPRAWL, NAMING:ephemeral/weak/domain-empty/over-qualified, GAP:cross-phase, EXPOSURE, COMMENT_HYGIENE_DRIFT:name-restatement, DRIFT:registration, hot-path, hub) with detector ids + graph props.
- Classify the ast-lint set (LEAK:swallowed-error/lossy-fallback/let-underscore/error-source-discard, ARITH:, SOUNDNESS:, NAMING:ephemeral-id/provenance, EPHEMERAL_DATA:count-leak, PUBLIC_LEAK, ORI_EMBED) with the owning linter (clippy/hygiene-lint/prose-lint).
- Classify the graph-gap set with enrichment_needed: COMMENT_HYGIENE_DRIFT:narration/removal-trail/attribution/editorial-voice -> code-comment nodes (section 04); LEAK error-handling + ARITH graph-native -> typed dataflow (section 05).
- Classify the llm-only set with its narrowing_query: INVERTED-TDD-deep, WASTE:defensive-impossible-state, NAMING:domain-mismatched, COMMENT_HYGIENE_DRIFT:inaccurate-comment, LEAK:validation-bypass/inline-policy/AIMS-ad-hoc-emission.
- Mark the out-of-code-graph governance set (STRUCTURE plan-subcats, PLAN_ROUTING_DRIFT, PLAN_COHERENCE_DRIFT, PLAN_DELIVERY_DRIFT, DISPOSITION_DRIFT, LAYER_GAP, LEDGER) tier=out-of-code-graph with the owning detector (plan_corpus/skill_audit) — explicit non-goal in data.
- Coverage test: every category + subcat carries a valid detection descriptor; zero unclassified.
Items
- Mark the out-of-code-graph governance set (STRUCTURE plan-subcats, PLAN_ROUTING_DRIFT, PLAN_COHERENCE_DRIFT, PLAN_DELIVERY_DRIFT, DISPOSITION_DRIFT, LAYER_GAP, LEDGER) with an enum-VALID detection descriptor that records it as an explicit non-goal of the code graph: tier=llm-only (the only KNOWN_TIERS value with no graph substrate requirement) with detector naming the real owner (plan_corpus / skill_audit) so the descriptor declares these plan-structure subcats are detected OUTSIDE the CPG. Do NOT write tier=‘out-of-code-graph’ — that value is not in the closed five-tier enum the completed rules-detection-schema sibling (s-c6147920) locked across both runtimes (detection_descriptor.py:KNOWN_TIERS + loader.py:DETECTION_TIERS), and the coverage test (w-f4fe3543) would reject it. If a genuine sixth enum tier is later judged necessary, that is a lockstep two-runtime schema amendment owned by rules-detection-schema’s contract, NOT a hand-edit from this data-population section.
Fresh intel (regenerated)
{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “graph-driven-hygiene/s-27514c7f” }, “generated_at”: “2026-06-22T02:54:38.424856+00:00”, “graph_state”: { “head_sha”: “d1b2a9dc”, “last_code_import_at”: “2026-06-22T02:44:36.199Z”, “embedding_stale”: false, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:graph-driven-hygiene/s-27514c7f] agent-authored dossier”, “degraded”: false, “dossier”: { “objective_symbols”: [], “tiers”: {}, “agent_authored”: true, “difficulty”: { “class”: “routine”, “research_online”: false, “research_mode”: “auto”, “signals”: [], “plan_dir”: “/home/eric/projects/ori_lang/plans/graph-driven-hygiene” } } }
(full dossier: tier-classification—s-27514c7f.intel.json)