fix(notifications): render the dormant maintainer-recap section builders in the digest#8507
fix(notifications): render the dormant maintainer-recap section builders in the digest#8507xfodev wants to merge 1 commit into
Conversation
…ers in the digest (JSONbored#8372) formatMaintainerRecap hand-rolled an inline per-repo block and never called the four dedicated section builders (JSONbored#2241-JSONbored#2243, JSONbored#8214), so a live maintainer recap never showed the Calibration, Gate-outcomes, properly-capped Per-repo, or config-drift sections despite all being built and unit-tested. Wire them in: render ## Per-repo via buildPerRepoRecapSection (capped/sorted, with the "(+N more)" remainder the inline version lacked), and add unconditional ## Calibration and ## Gate outcomes sections via their builders — all through the same recapSectionLines/redactRecapLine path. Thread an optional configDrift option through runMaintainerRecap to formatMaintainerRecap so a caller that has a DriftRecapSection actually renders it (the cron caller supplies none yet; noted in a comment). Section order: Summary, Totals, Per-repo, Calibration, Gate outcomes, Config drift. RecapReport shape unchanged; top-contributors section left untouched. Closes JSONbored#8372
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8507 +/- ##
===========================================
+ Coverage 79.32% 89.60% +10.28%
===========================================
Files 791 98 -693
Lines 79329 22781 -56548
Branches 23963 3893 -20070
===========================================
- Hits 62929 20414 -42515
+ Misses 13499 2187 -11312
+ Partials 2901 180 -2721
Flags with carried forward coverage won't be shown. Click here to find out more.
|
|
Caution 🛑 LoopOver review result - reject/close recommendedReview updated: 2026-07-24 16:52:45 UTC
Review summary Nits — 4 non-blocking
Why this is blocked
📋 Copy for AI agents — paste into your coding agentDecision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionNot yet addressed 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.
|
|
LoopOver is closing this pull request on the maintainer's behalf (Linked issue does not appear to be satisfied). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
Summary
The maintainer recap digest has four dedicated "content slice" section builders (
buildCalibrationRecapSection#2243,buildGateOutcomesRecapSection#2242,buildPerRepoRecapSection#2241,buildDriftRecapSection#8214) — all fully built and unit-tested — butformatMaintainerRecapnever called any of them, instead hand-rolling an inline, uncapped, unsorted per-repo block. So a maintainer running the live recap never saw the Calibration, Gate-outcomes, properly-capped Per-repo, or config-drift sections. (Same bug shape as closed #6636.)perRepoLinesblock withbuildPerRepoRecapSection({ windowDays, repos })— now capped/sorted with the(+N more)remainder the inline version lacked — rendered under the same## Per-repoheader viarecapSectionLines/redactRecapLine.## Calibration(new, unconditional): viabuildCalibrationRecapSection({ windowDays, totals }).## Gate outcomes(new, unconditional): viabuildGateOutcomesRecapSection({ windowDays, totals }).configDriftthroughrunMaintainerRecaptoformatMaintainerRecap, so a caller holding aDriftRecapSectionactually renders it. No live drift is sourced here (a comment notesmaintainer-recap-wire.ts, the cron caller, supplies none yet, so its live digests stay unchanged).RecapReportshape unchanged;buildTopContributorsRecapSectionuntouched (needs acontributorslist not onRecapReport).Tests
test/unit/maintainer-recap-format.test.ts+test/unit/maintainer-recap.test.ts(all maintainer-recap suites green, 109): assert the rendered digest now contains## Calibration+## Gate outcomeswith the builders' content, that## Per-reporenders via the capped builder (a 10-repo case shows top-8 +(+2 more)), the empty-window fallbacks, and both sides of therunMaintainerRecapconfigDriftforward (present →## Config driftappears; absent → it does not).Validation
tsc --noEmitclean (changed files); all maintainer-recap test files green.main; no base conflict.RecapReportshape change; every rendered line still goes throughredactRecapLine; no secret/wallet/hotkey/trust/reward terms.Closes #8372