Files
Open_Ultra_SAST/benchmarks/measurements/2026-09-08-module-audit.json
T
Marius CiepluchandClaude Opus 5 3224884d8f feat(pre-push-safety-net): record admission vetoes and meet M1a on NodeGoat
Add group 9 to the approved task plan as the bounded owner amendment release
milestone M1a requires, implement the task-local recorded-veto evaluation flag,
and run the three pinned NodeGoat revisions under it.

The flag re-runs the production comparison and admission over a lifted copy of
the same evidence and records each veto instead of applying it. Recognized
completeness vetoes are lifted and logged; failures never are, because silence
from a failure is not a quiet fixed twin. It is off by default, accepted only on
explicit base/head replay, refused in Git stdin mode, labels every payload it
produces, and admits no defect even when a lifted candidate otherwise would.

M1a outcome, inside its one-week box and with expectations frozen on disk first:
the three entailed <lambda>2 witnesses are present at contributions.js 32-34; the
fixed twin was genuinely analyzed and quiet, answering its target question with
zero rows and no deadline reason while the same findings appear as base-only; the
unchanged revision was analyzed and recorded unchanged. The kill criterion did
not trigger.

Five vetoes fired and were recorded. M1a also corrected the diagnosis: with all
five lifted the detection still stops at operation_correspondence_unresolved,
because a newly introduced operation sits on a changed line and has no base
anchor. The unchanged revision resolves its base location on the same lines and
classifies as unchanged, which isolates correspondence as the mechanism. That
fifth veto was not in the earlier four-veto diagnosis and is now M1b's central
repair.

Diagnosis only. No defect admitted, no capability enabled, no gate changed, no
latency claim; the 900-second development budget cannot measure the hook gate.
Rollout and task 8.3 remain NO-GO.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01EmM1j46qgKMh3zqD1QMwEo
2026-09-16 15:31:34 +02:00

1304 lines
34 KiB
JSON

{
"modules": 116,
"counts": {
"load_bearing": 107,
"standalone_capability": 9
},
"orphaned": [],
"standalone": {
"fusion": "two-panel adjudication engine; reached from the scan's report stage and used standalone",
"harness_ext": "HarnessX extension surface; loaded by name when the optional harness is present",
"hunter_harness": "harness wiring for the tool hunter; used by the hunter path and by mcp",
"mcp": "narrow MCP server over stdio; its own `ousast mcp` entry point and OpenCode integration",
"push_inputs": "pre-push-safety-net task 1.2: offline input provenance validator; python -m openultrasast.push_inputs",
"push_scoring": "pre-push-safety-net task 1.3: frozen-profile diagnostic outcome scorer; python -m openultrasast.push_scoring",
"skills": "skill router; consumed by mcp and by the OpenCode integration, not by the scan path",
"slot_contract": "the slot/contract protocol stage_processors implements",
"stage_processors": "HarnessX slot-contracted scan stages; pinned by the zero-dependency guard in test_gate"
},
"rows": [
{
"module": "benchmark",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"gate",
"improve.evolve",
"map_gate",
"mcp",
"pairs"
]
},
{
"module": "calibration",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli"
]
},
{
"module": "cli",
"classification": "load_bearing",
"reason": "entry point",
"importers": [
"mcp"
]
},
{
"module": "complexity",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"complexity.hints",
"complexity.ledger",
"complexity.map",
"map_gate",
"regress.candidate",
"semantic.prove_filter",
"tool_hunter"
]
},
{
"module": "complexity.hints",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"complexity",
"complexity.map"
]
},
{
"module": "complexity.ledger",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"complexity",
"complexity.map",
"regress.candidate"
]
},
{
"module": "complexity.map",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"complexity",
"complexity.hints",
"complexity.ledger",
"map_gate",
"regress.candidate",
"semantic.prove_filter",
"tool_hunter"
]
},
{
"module": "complexity.signals",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"complexity",
"complexity.hints",
"complexity.map"
]
},
{
"module": "config",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"harness",
"hunter_tools",
"model.endpoint",
"pairs",
"push.assistance",
"push.policy",
"push.runner",
"regress.candidate",
"regress.recipes",
"run"
]
},
{
"module": "contracts",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 7.3: strict shared manifest serialization, independent of push",
"importers": [
"config",
"cpg.artifact",
"model.contracts",
"push.cache",
"push.contracts",
"push.policy",
"push.vetoes"
]
},
{
"module": "cpg",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 4: the CPG seam package",
"importers": [
"cli",
"cpg.artifact",
"cpg.backend",
"model.config_value",
"model.dominance",
"model.judge",
"model.partitions",
"model.pipeline",
"model.scan",
"model.taint",
"push.cache",
"push.eligibility",
"push.policy",
"push.reuse",
"push.runner"
]
},
{
"module": "cpg.artifact",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 4.3/7.3: backend graph identity and live lease contract; validation integration pending",
"importers": [
"cpg.backend",
"push.cache",
"push.eligibility",
"push.policy",
"push.reuse",
"push.runner"
]
},
{
"module": "cpg.backend",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 4.1/4.5: the single Joern subprocess boundary",
"importers": [
"cli",
"cpg.artifact",
"model.config_value",
"model.dominance",
"model.judge",
"model.partitions",
"model.pipeline",
"model.scan",
"model.taint",
"push.cache",
"push.policy",
"push.reuse",
"push.runner"
]
},
{
"module": "cpg.capability",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 4.2/4.3: the engine probe that degrades to suspicion",
"importers": [
"cpg.backend"
]
},
{
"module": "findings",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"benchmark",
"calibration",
"cli",
"complexity.ledger",
"complexity.map",
"complexity.signals",
"fusion",
"gate",
"hunter",
"hunter_harness",
"hunter_tools",
"improve.evolve",
"map_gate",
"model.ladder",
"model.report",
"pairs",
"rank",
"regress.candidate",
"reports",
"scoring.project_score",
"semantic.obligations.check",
"semantic.overlay",
"semantic.prove_filter",
"stage_processors",
"tool_hunter",
"verification",
"verify_judge"
]
},
{
"module": "fusion",
"classification": "standalone_capability",
"reason": "two-panel adjudication engine; reached from the scan's report stage and used standalone",
"importers": [
"cli"
]
},
{
"module": "gate",
"classification": "load_bearing",
"reason": "entry point",
"importers": [
"cli"
]
},
{
"module": "harness",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"slot_contract"
]
},
{
"module": "harness_ext",
"classification": "standalone_capability",
"reason": "HarnessX extension surface; loaded by name when the optional harness is present",
"importers": [
"cli",
"fusion",
"hunter_harness",
"stage_processors",
"verify_judge"
]
},
{
"module": "hunter",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"hunter_harness"
]
},
{
"module": "hunter_harness",
"classification": "standalone_capability",
"reason": "harness wiring for the tool hunter; used by the hunter path and by mcp",
"importers": [
"cli"
]
},
{
"module": "hunter_tools",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"tool_hunter"
]
},
{
"module": "improve",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"improve.evolve"
]
},
{
"module": "improve.evolve",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"improve"
]
},
{
"module": "improve.journal",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"improve",
"improve.evolve"
]
},
{
"module": "improve.validator",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"improve",
"improve.evolve"
]
},
{
"module": "index",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"skills"
]
},
{
"module": "map_gate",
"classification": "load_bearing",
"reason": "entry point",
"importers": []
},
{
"module": "mapping",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"gate",
"hunter_tools",
"improve.evolve",
"map_gate",
"model.scan",
"pairs",
"preprocess",
"push.runner",
"stage_processors"
]
},
{
"module": "mcp",
"classification": "standalone_capability",
"reason": "narrow MCP server over stdio; its own `ousast mcp` entry point and OpenCode integration",
"importers": [
"cli"
]
},
{
"module": "model",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"cpg.backend",
"model.candidates",
"model.config_value",
"model.dominance",
"model.execution",
"model.judge",
"model.layout",
"model.partitions",
"model.pipeline",
"model.regions",
"model.report",
"model.scan",
"model.specs",
"model.taint",
"preprocess",
"push.assistance",
"push.cache",
"push.contracts",
"push.policy",
"push.report",
"push.reuse",
"push.runner",
"push.snapshot",
"push.vetoes"
]
},
{
"module": "model.audit",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 3: this classifier; run by the maintainer, not by the scan",
"importers": []
},
{
"module": "model.calibrate",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 9: the corpus as the model's calibration set",
"importers": []
},
{
"module": "model.candidates",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"model.scan"
]
},
{
"module": "model.config_value",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 6.3: constant abstraction for the configuration families",
"importers": [
"model.pipeline",
"model.scan"
]
},
{
"module": "model.contracts",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 4.1/7.3: generic deadline, change and exact scope contracts; integration pending",
"importers": [
"cli",
"cpg.backend",
"model.partitions",
"model.regions",
"model.scan",
"push.assistance",
"push.cache",
"push.contracts",
"push.policy",
"push.report",
"push.reuse",
"push.runner",
"push.snapshot",
"push.vetoes"
]
},
{
"module": "model.dominance",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 6.2: guard dominance, the arbiter for bugs that never crash",
"importers": [
"model.pipeline",
"model.scan"
]
},
{
"module": "model.endpoint",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 8: the judge client, wired by model/judge.py in group 3",
"importers": [
"cli",
"push.assistance"
]
},
{
"module": "model.evidence",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.scan"
]
},
{
"module": "model.execution",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 10: the deferred execution tier seam, adopted not built",
"importers": []
},
{
"module": "model.judge",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 8: one bounded question, checked against the model",
"importers": []
},
{
"module": "model.ladder",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 5: the evidence ladder every finding carries",
"importers": [
"model.config_value",
"model.dominance",
"model.execution",
"model.judge",
"model.pipeline",
"model.scan",
"model.taint",
"push.policy"
]
},
{
"module": "model.layout",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.partitions",
"model.scan",
"preprocess",
"push.runner"
]
},
{
"module": "model.partitions",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.scan"
]
},
{
"module": "model.pipeline",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 8: the enumerator proposes, the LLM answers, the model disposes",
"importers": [
"model.scan",
"push.policy"
]
},
{
"module": "model.regions",
"classification": "load_bearing",
"reason": "contributor-scan Req 2: regions from entry points, with the families each admits",
"importers": [
"cli",
"model.layout",
"model.scan",
"push.policy",
"push.reuse",
"push.runner"
]
},
{
"module": "model.report",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 9.3/11.1: per-slice reporting with the overfitting gap",
"importers": [
"cli"
]
},
{
"module": "model.scan",
"classification": "load_bearing",
"reason": "contributor-scan Req 3: the repository driver -- one CPG, one budget, ranked spend",
"importers": [
"cli",
"push.policy",
"push.report",
"push.runner",
"push.vetoes"
]
},
{
"module": "model.shipped",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"push.runner"
]
},
{
"module": "model.specs",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 7.2-7.4: the security vocabularies the CPG queries are parameterised by",
"importers": [
"model.config_value",
"model.dominance",
"model.judge",
"model.pipeline",
"model.regions",
"model.report",
"model.scan",
"model.taint",
"push.policy"
]
},
{
"module": "model.taint",
"classification": "load_bearing",
"reason": "model-grounded-detection Req 6.1: taint reachability over the CPG, the flow-family arbiter",
"importers": [
"model.judge",
"model.pipeline",
"model.scan"
]
},
{
"module": "model.taxonomy",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"model.candidates",
"model.report",
"model.scan",
"model.specs"
]
},
{
"module": "pair_gate",
"classification": "load_bearing",
"reason": "entry point",
"importers": [
"cli"
]
},
{
"module": "pairs",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"improve",
"improve.evolve",
"model.candidates",
"pair_gate"
]
},
{
"module": "policy",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"findings",
"hunter",
"hunter_harness",
"improve.evolve",
"improve.validator",
"scoring.project_score",
"semantic.overlay",
"stage_processors"
]
},
{
"module": "policy.verycode",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"policy"
]
},
{
"module": "preprocess",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"complexity.hints",
"complexity.map",
"complexity.signals",
"findings",
"gate",
"hunter",
"hunter_harness",
"hunter_tools",
"improve.evolve",
"index",
"map_gate",
"mapping",
"model.candidates",
"model.partitions",
"model.scan",
"pairs",
"push.runner",
"rank",
"regress.candidate",
"semantic.overlay",
"skills",
"stage_processors"
]
},
{
"module": "provenance",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli"
]
},
{
"module": "provider",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.endpoint",
"tool_hunter"
]
},
{
"module": "provider.openrouter",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.endpoint",
"tool_hunter"
]
},
{
"module": "push",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 5.5/7.3: experimental push contract package; no hook installed",
"importers": [
"cli",
"push.assistance",
"push.eligibility",
"push.policy",
"push.report",
"push.reuse",
"push.runner",
"push.snapshot",
"push.vetoes"
]
},
{
"module": "push.assistance",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"push.runner"
]
},
{
"module": "push.cache",
"classification": "load_bearing",
"reason": "pre-push-safety-net task 6.2: bounded artifact publication and leased eviction; runner integration in 6.4",
"importers": [
"push.policy",
"push.reuse",
"push.runner"
]
},
{
"module": "push.contracts",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 5.5/7.3: immutable comparisons and independent result statuses; runner pending",
"importers": [
"push.policy",
"push.report",
"push.reuse",
"push.runner",
"push.snapshot",
"push.vetoes"
]
},
{
"module": "push.eligibility",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"push.runner"
]
},
{
"module": "push.policy",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 2.4/3.1/3.4/4.1: targeted same-semantics base comparison; replay integration pending",
"importers": [
"push.eligibility",
"push.report",
"push.runner",
"push.vetoes"
]
},
{
"module": "push.report",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 5.1/5.2/5.5/7.3: compact output and complete artifacts; runner integration pending",
"importers": [
"push.assistance",
"push.runner"
]
},
{
"module": "push.reuse",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"push.runner"
]
},
{
"module": "push.runner",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"push.assistance"
]
},
{
"module": "push.snapshot",
"classification": "load_bearing",
"reason": "pre-push-safety-net Req 1.1/1.3/1.4/7.1: local immutable ref resolution; runner integration pending",
"importers": [
"push.runner"
]
},
{
"module": "push.vetoes",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"push.runner"
]
},
{
"module": "push_inputs",
"classification": "standalone_capability",
"reason": "pre-push-safety-net task 1.2: offline input provenance validator; python -m openultrasast.push_inputs",
"importers": []
},
{
"module": "push_scoring",
"classification": "standalone_capability",
"reason": "pre-push-safety-net task 1.3: frozen-profile diagnostic outcome scorer; python -m openultrasast.push_scoring",
"importers": [
"push.eligibility"
]
},
{
"module": "rank",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"calibration",
"cli",
"findings",
"gate",
"hunter",
"hunter_harness",
"hunter_tools",
"improve.evolve",
"map_gate",
"pairs",
"stage_processors"
]
},
{
"module": "redaction",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"harness",
"model.judge",
"model.pipeline",
"push.assistance",
"push.report",
"reports",
"semantic.obligations.intent"
]
},
{
"module": "regress",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"regress.candidate"
]
},
{
"module": "regress.candidate",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"regress"
]
},
{
"module": "regress.recipes",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"regress",
"regress.candidate"
]
},
{
"module": "regress.safety",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"regress",
"regress.candidate"
]
},
{
"module": "regress.verdict",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"regress",
"regress.candidate"
]
},
{
"module": "reports",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli"
]
},
{
"module": "repos",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"push_inputs"
]
},
{
"module": "ruleset",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"findings",
"hunter",
"hunter_harness",
"improve.evolve",
"improve.validator",
"pairs",
"stage_processors"
]
},
{
"module": "ruleset.store",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"improve.validator",
"ruleset"
]
},
{
"module": "run",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"reports"
]
},
{
"module": "sandbox",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"regress.candidate",
"regress.recipes",
"regress.safety",
"regress.verdict"
]
},
{
"module": "sandbox.probe",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"sandbox"
]
},
{
"module": "sandbox.runner",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"regress.candidate",
"regress.recipes",
"regress.safety",
"sandbox"
]
},
{
"module": "scoring",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"improve.evolve",
"stage_processors"
]
},
{
"module": "scoring.project_score",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"scoring"
]
},
{
"module": "semantic",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"cpg.capability",
"hunter_tools",
"mapping",
"model.candidates",
"model.layout",
"model.specs",
"pairs",
"semantic.cst",
"semantic.engines",
"semantic.functions",
"semantic.ir",
"semantic.obligations.check",
"semantic.obligations.operations",
"semantic.obligations.shapes",
"semantic.overlay",
"semantic.prove_filter",
"semantic.taint"
]
},
{
"module": "semantic.cst",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic.ir"
]
},
{
"module": "semantic.engines",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cpg.capability",
"semantic",
"semantic.overlay"
]
},
{
"module": "semantic.extra",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic",
"semantic.cst",
"semantic.engines"
]
},
{
"module": "semantic.facts",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"hunter_tools",
"mapping",
"model.candidates",
"model.layout",
"model.specs",
"pairs",
"semantic",
"semantic.obligations.check",
"semantic.obligations.operations",
"semantic.obligations.shapes",
"semantic.overlay",
"semantic.taint"
]
},
{
"module": "semantic.functions",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"hunter_tools",
"pairs",
"semantic.obligations.shapes",
"semantic.overlay"
]
},
{
"module": "semantic.ir",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"hunter_tools",
"model.candidates",
"pairs",
"semantic.cst",
"semantic.functions",
"semantic.obligations.check",
"semantic.obligations.operations",
"semantic.obligations.shapes",
"semantic.overlay",
"semantic.taint"
]
},
{
"module": "semantic.obligations",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"hunter_tools",
"model.candidates",
"model.specs",
"pairs",
"semantic.obligations.check",
"semantic.obligations.dominance",
"semantic.obligations.intent",
"semantic.obligations.operations",
"semantic.obligations.policy",
"semantic.obligations.shapes",
"semantic.obligations.siblings"
]
},
{
"module": "semantic.obligations.check",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"semantic.obligations",
"semantic.obligations.intent"
]
},
{
"module": "semantic.obligations.dominance",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"hunter_tools",
"pairs",
"semantic.obligations.check"
]
},
{
"module": "semantic.obligations.facts",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.specs",
"pairs",
"semantic.obligations",
"semantic.obligations.check",
"semantic.obligations.operations",
"semantic.obligations.policy",
"semantic.obligations.shapes",
"semantic.obligations.siblings"
]
},
{
"module": "semantic.obligations.intent",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli"
]
},
{
"module": "semantic.obligations.operations",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.candidates",
"semantic.obligations.check",
"semantic.obligations.dominance",
"semantic.obligations.siblings"
]
},
{
"module": "semantic.obligations.policy",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli",
"semantic.obligations.check"
]
},
{
"module": "semantic.obligations.shapes",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic.obligations",
"semantic.obligations.operations"
]
},
{
"module": "semantic.obligations.siblings",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic.obligations.check"
]
},
{
"module": "semantic.overlay",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic",
"semantic.prove_filter"
]
},
{
"module": "semantic.prove_filter",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic"
]
},
{
"module": "semantic.taint",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"semantic.overlay"
]
},
{
"module": "skills",
"classification": "standalone_capability",
"reason": "skill router; consumed by mcp and by the OpenCode integration, not by the scan path",
"importers": [
"hunter",
"hunter_harness"
]
},
{
"module": "slot_contract",
"classification": "standalone_capability",
"reason": "the slot/contract protocol stage_processors implements",
"importers": [
"stage_processors"
]
},
{
"module": "stage_processors",
"classification": "standalone_capability",
"reason": "HarnessX slot-contracted scan stages; pinned by the zero-dependency guard in test_gate",
"importers": []
},
{
"module": "stages",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli"
]
},
{
"module": "tool_hunter",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"model.endpoint"
]
},
{
"module": "verification",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"calibration",
"cli",
"fusion",
"reports",
"verify_judge"
]
},
{
"module": "verify_judge",
"classification": "load_bearing",
"reason": "reachable from gate, map_gate, pair_gate or the CLI",
"importers": [
"cli"
]
}
],
"note": "Group 8: runner reaches recomputed versioned eligibility and its frozen scorer."
}