§10 detector consumer expansion
Goal
The new edges pay rent: seam_scan detectors over every new edge class (through the drop-unless-verified gate), rule-metadata tier migrations, dossier enrichment, and the tier-migration fitness probe green.
Implementation Sketch
- Detectors: one row per new capability in seam_scan registry + DETECTOR_TO_BATCH + substrate category constants; every candidate through gate.py (INTEL-06 discipline).
- Tier migrations: tier: annotations in impl-hygiene.md aliases move subcats to graph-native/graph-assist; rule_metadata.py derives; finding-categories.md Detection columns synced same commit.
- Consumer surfaces: dossier tiers gain writer/reader + fabric + co-change blocks; intelligence.md Graph-First rows; per-rules-file blurbs; all drift tests green.
Spec References
- scripts/impl_hygiene_review_runtime/seam_scan/{registry,substrate,gate}.py + seam_routing.py + rule_metadata.py; .claude/rules/finding-categories.md; .claude/rules/intelligence.md (blurbs + Graph-First table)
Work Items
- New seam_scan detectors over the new edges (writer/reader registration DRIFT, sibling divergence, exit-reason parity, suppression audit, test-topology gaps) each through gate.py drop-unless-verified + DETECTOR_TO_BATCH routing + validate_routing
- rule_metadata tier migrations: update tier: annotations in impl-hygiene.md rule aliases for every subcat the new edges make graph-native/graph-assist; finding-categories.md detection columns synced
- Dossier enrichment: intel_package_runtime surfaces the new seam surfaces (writers/readers, fabric edges, co-change) in dossier tiers; intelligence.md Graph-First Mandate rows + rules-file blurbs updated (drift test green)
- Fitness tier-migration probe green at target; detector candidate quality spot-audit recorded
Fresh intel (regenerated)
This section makes the new graph edges “pay rent”: it registers seam_scan detectors over the edge classes earlier sections built (SIBLING_DIVERGENCE, CO_CHANGED_WITH, TESTS/test-topology, field-use, artifact-fabric), migrates rule-metadata tiers, enriches the dossier tiers, and turns the fitness probe green. It is a pure TOOLING target — the terrain is Python under scripts/impl_hygiene_review_runtime/ + scripts/intel_package_runtime/, so the deep compiler matrix (dual-exec, AIMS, cross-executor parity) is N/A; the binding hygiene families are the universal SRP/SSOT + STRUCTURE:* / LEAK:* set.
The single decisive [JOIN] this package forces:
The new-edge facets the detectors consume are populated for
repo='ori'ONLY — they are EMPTY on theori-platformestate the detector code itself lives in. TESTS=8587 / CO_CHANGED_WITH=83749 / SIBLING_DIVERGENCE=3012 are allrepo='ori'; the same queries return ZERO rows forori-platform. The one exception is the artifact-fabricINCLUDESedge (298, allori-platform) — the@-include/dispatch fabric IS the platform estate’s own signal.
Decisions this forces before any detector is written:
- Default the new detectors to
repo="ori"— matching the existing graph-native detectors (naming_stutter_candidates(str = "ori", ...)). A new-edge detector run againstori-platformgets empty substrate and dry-fires. This is the whole point of the co-change/test-topology/sibling detectors: they target the COMPILER graph. - Route EVERY new detector through the two existing invariant gates or the build breaks:
gate.py:gate_candidate(INTEL-06 drop-unless-verified — a candidate with nois_verifiedverification is dropped) ANDseam_routing.py:validate_routing(bijection: everyDETECTORSkey routed, every routed key a real detector, every target a real batch — enforced atcmd_rails_startproduction entry). Adding a detector key without aDETECTOR_TO_BATCHrow hard-fails rails start. - The tier migration (w-99c6afc6) must keep
finding_categories_tier_driftgreen — the drift check assertsimpl-hygiene.mdrule-aliastier:annotations equalfinding-categories.mdDetection columns; both move in the SAME commit or the drift test fails. - The artifact-fabric
INCLUDESedge is the platform estate’s live substrate — the@-include/skill-fabric detectors (registration DRIFT, exit-reason parity, suppression audit) have real edges to consume ON the platform estate, unlike the compiler-only sibling/co-change/test edges.
["is_verified", "gate_candidate", "validate_routing", "finding_categories_tier_drift"]
DIG DEEPER
scripts/intel-query.sh status | python3 -m json.tool | grep -iE 'sibling|co_change|test_topology|platform|artifact_fabric'
scripts/intel-query.sh cypher "MATCH ()-[r:TESTS]->() RETURN r.repo, count(*) ORDER BY count(*) DESC" --human
(full dossier: detector-consumer-expansion—s-3e8a3135.intel.md)