test(notifications): maintainer recap end-to-end orchestration - #4457
Conversation
…SONbored#2252) Co-authored-by: Cursor <cursoragent@cursor.com>
|
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 #4457 +/- ##
=======================================
Coverage 94.01% 94.01%
=======================================
Files 418 418
Lines 37417 37440 +23
Branches 13677 13685 +8
=======================================
+ Hits 35178 35201 +23
Misses 1583 1583
Partials 656 656
🚀 New features to boost your workflow:
|
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-09 20:03:21 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 6 non-blocking
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🟩 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 Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
…ip shape Resolves the merge conflict with the #4457 e2e-test refactor (which introduced the dual-channel runMaintainerRecap/RunMaintainerRecapResult shape): ranRecap now accepts the union of that result type and the job-level MaintainerRecapJobSkipped ("already_sent_this_period") case.
Summary
runMaintainerRecap— build (or accept an injected report) →formatMaintainerRecap→ fan out to Discord + Slack independently, with a flag-OFF short-circuit whenenabled === false.deliverRecapToSlack(env, report, formattedBody)for the maintainerRecapReport(feat(notifications): Slack delivery for the maintainer recap digest (reuse notify-discord Slack path) #2246) and thread the formatted/redacted body through both channel deliverers.runMaintainerRecapJobto delegate torunMaintainerRecapafter loading aggregator inputs.test/unit/maintainer-recap.test.ts: both channels called, single-channel outage isolation, redaction across both payloads, and the disabled flag arm.Closes #2252
Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Closes #123) — a linked open issue is required for every contributor PR.Validation
git diff --checknpm run actionlintnpm run typecheck(changed files only — pre-existingaws4fetchmodule resolution on this machine affects unrelateds3-blob-store.ts)npm run test:coveragelocally;codecov/patchrequires ≥99% coverage of the lines AND branches you changed (aim for 100% on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateIf any required check was skipped, explain why:
npm run test:cinot re-run end-to-end locally — scoped to the recap orchestration surface. Locally:git diff --checkclean; focused coverage on changedsrc/**files is 100% statements/branches/functions/lines (204/204 stmts, 121/121 branches);npx vitest run test/unit/maintainer-recap.test.ts test/unit/maintainer-recap-wire.test.ts test/unit/notify-discord.test.ts— 61 tests green;npm audit --audit-level=moderate— 0 vulnerabilities. CI covers the remaining path-filtered jobs.Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails. SVG screenshots are not used as review evidence. Review-only screenshots or recordings are not committed to the repository.UI Evidence
N/A — backend orchestration + unit tests only; no visible UI surface.
Notes
review-recap.ts’s per-repodeliverRecapToSlack(ReviewRecap)is unchanged; the newnotify-discord.tsdeliverRecapToSlack(RecapReport, formattedBody)is the maintainer-digest sibling ofdeliverRecapToDiscord.