feat(calibration): config-drift section in the maintainer recap (#8214)#8256
Conversation
|
Tip ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-23 15:28:47 UTC
Review summary Nits — 5 non-blocking
Decision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
|
Hi, @JSONbored |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8256 +/- ##
==========================================
- Coverage 92.14% 89.61% -2.53%
==========================================
Files 784 99 -685
Lines 78694 22789 -55905
Branches 23752 3893 -19859
==========================================
- Hits 72510 20422 -52088
+ Misses 5062 2187 -2875
+ Partials 1122 180 -942
Flags with carried forward coverage won't be shown. Click here to find out more.
|
Summary
Adds the calibration config-drift section to the maintainer recap (epic #8211 track A): drift alerts are point-in-time, but the weekly recap is where a STANDING drift should be impossible to miss.
src/services/maintainer-recap-drift.ts— a pure section builder mirroringbuildCalibrationRecapSectionexactly (a plain source struct in, a titled{ title, counts, note, lines }section out, the same public-safe boundary): each drifting knob renders its direction, live vs dominating value, visible/held-out corpus sizes, and how long the episode has stood (whole days from the sentinel's fingerprint timestamp against the recap's owngeneratedAt— no wall-clock read, clock-skew/garbled timestamps clamp to 0). A mixed window lists longest-standing episodes first and appends the clean-knob summary; an all-clean window is one summary line; the sentinel-flag-off arm renders the explicitdrift sentinel disabledline so absence of data is never mistaken for absence of drift.formatMaintainerRecapgains an optionalconfigDriftsection hook behind the existing recap plumbing (no new scheduling): when the caller supplies a sentinel projection the digest appends a## Config driftbullet section through the sameredactRecapLine/recapSectionLinesguards as every other section; when absent, every existing digest stays byte-identical.KnobDriftReportshapeevaluateKnobDrift(loosening-knobs.ts) already computes, via a minimal projection the sentinel wires in the moment it persists episodes.Public-safe boundary
Aggregate numbers + knob/rule ids only — never corpus content. The
KnobDriftReport's comparison objects never surface in any emitted line, knob ids run through the shared local-path scrub, and the formatter re-guards every appended line with the digest's existing redaction (pinned by an invariant test).Validation
npm run typecheckgreen; the full changed-graph suite (npm run test:changed, Node 22) green.test/unit/maintainer-recap-drift.test.tsdrives 100% line + branch coverage on the builder: drifting / clean / disabled / mixed arms, longest-standing-first ordering, standing-days clamping for future or unparseable timestamps, and the no-corpus-content + path-scrub invariant.test/unit/maintainer-recap-format.test.tsextended for both wiring arms: the drift section renders as bullets when supplied, and the empty-window digest provably does NOT contain## Config drift(byte-identical pre-drift shape). All existing recap suites pass unchanged (61 tests across the five recap files).Closes #8214