Graph-native + graph-assist detectors on existing data
Goal
Extend seam_scan’s detector registry to emit or narrow every Tier-1/2 rule the CURRENT graph data already supports, keyed by the section-01 descriptors — no new ingestion required.
Implementation Sketch
Add cypher detectors over already-populated GDS properties + edges; each candidate hard-gated by verify_gate; wired to its rule’s descriptor.
Spec References
seam_scan.py DETECTORS registry; GDS props (visibility, is_hub, is_articulation, pagerank_score, coverage_status); edges (CALLS, HAS_TYPE, EMITS, HAS_VARIANT, HAS_METHOD).
Work Items
- Exposure-precise detector: pub symbol whose only callers share its crate (visibility + CALLS + HAS_TYPE) -> EXPOSURE.
- Naming-stutter detector: owner_qn token echoed in member name -> NAMING:over-qualified.
- Architectural-hub detector: is_hub/is_articulation/pagerank/betweenness top-ranked -> hub/god-object finding (Cascading-fix surface).
- Coverage-gap detector: coverage_status-uncovered functions -> LAYER_GAP triage candidates (narrowing).
- Registration-drift detector: EMITS / HAS_VARIANT / HAS_METHOD parallel-sync gaps -> DRIFT.
- Wire each detector to its rule descriptor; verify-gate every nomination; tests + ori_arc smoke.
Fresh intel (regenerated)
{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “graph-driven-hygiene/s-0f7d096a” }, “generated_at”: “2026-06-22T03:14:01.721645+00:00”, “graph_state”: { “head_sha”: “9e4174b6”, “last_code_import_at”: “2026-06-22T03:04:37.903Z”, “embedding_stale”: false, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:graph-driven-hygiene/s-0f7d096a] 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: graph-native-detectors—s-0f7d096a.intel.json)