Skip to content

calibration: capture writers + corpus mappings for the slop and quality gate scores #8223

Description

@JSONbored

Problem

Epic #8211 track D. The knob registry can only govern knobs whose decisions leave labeled evidence. slopGateMinScore and qualityGateMinScore gate real verdicts today but record no signal.rule_fired events, so no corpus can ever form for them.

Requirements

⚠️ Required pattern. Mirror #8101/#8104's capture wiring exactly: fired events through createSignalStore at the env-bearing gate path with the SAME filter the pure evaluation applies, confidence-equivalent metadata (the actual slop/quality score, normalized to [0,1] — document the normalization beside the writer), best-effort writes that can never affect the verdict, and reversal labeling via the EXISTING override recorders (extend CONFIGURED_GATE_BLOCKER_SIGNAL_CODES only if the audit in #8130's header says these codes qualify — justify either way in the PR).

Deliverables

  • Both writers + reversal-path inclusion, 100% branch on touched src
  • Corpus visible in the trend (rule rows appear once events flow)

Test Coverage Requirements

Both firing arms (fired/skipped-by-mode), metadata normalization bounds, override pairing end-to-end via the existing reversal tests' pattern.

Links & Resources

#8211 (epic), src/rules/advisory.ts recordConfiguredGateBlockerSignals (#8104's writer), src/review/signal-tracking-wire.ts

Boundaries

Capture only — no registry entries, no knob movement (the maintainer follow-on owns those).

Metadata

Metadata

Assignees

No one assigned

    Labels

    gittensor:featureGittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.help wantedExtra attention is needed

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions