feat(review): one-shot AI review cadence, configurable globally + per repo - #4657
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | a6b84b9 | Commit Preview URL Branch Preview URL |
Jul 10 2026, 10:23 AM |
|
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 #4657 +/- ##
=======================================
Coverage 94.12% 94.12%
=======================================
Files 434 434
Lines 38496 38525 +29
Branches 14038 14048 +10
=======================================
+ Hits 36233 36262 +29
Misses 1604 1604
Partials 659 659
🚀 New features to boost your workflow:
|
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 Gittensory review result - fixes requiredReview updated: 2026-07-10 10:15:10 UTC
🛑 Suggested Action - Manual Review
Review summary Nits — 7 non-blocking
CI checks failing
Linked issue satisfactionPartially addressed Review context
Contributor next steps
Signal definitions
Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 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.
|
… repo AI-generated review content (main review, slop advisory, linked-issue satisfaction) now freezes after its first pass by default -- no further automatic push/CI-completion/sweep trigger spends a fresh AI call, only an explicit maintainer retrigger does. Configurable via the new GITTENSORY_REVIEW_CONTINUOUS fleet-wide env default and the per-repo review.auto_review.cadence .gittensory.yml override (either direction), so self-hosters who want the traditional re-review-on-push behavior can opt back in. The deterministic gate is unaffected and always re-evaluates. Fixes #4636
… headSha branches Add the missing positive-case test for the linked-issue-satisfaction one-shot skip actually firing (previously only the negative/never-skip case was covered), and mark the advisory.headSha ?? null fallback on the three new one-shot-cadence audit events as v8-ignored, mirroring the identical, already-established treatment of the same fallback shape elsewhere in maybePublishPrPublicSurface.
… flagged codecov/patch flagged 6 lines at 81.82% patch coverage: the .catch() fallback bodies for the three new existence-check lookups and their paired audit-event writes never fired in the initial test suite (the happy path never rejects). Adds one combined read-failure + audit-write-failure regression per feature (slop, linked-issue satisfaction, main-review reuse), mirroring the exact two-part pattern already used for the pre-existing frozen-reuse fail-safe test.
3720298 to
a6b84b9
Compare
|
Superagent didn't find any vulnerabilities or security issues in this PR. |






Summary
synchronize/CI-completion/sweep trigger spends a fresh AI call for that content, only an explicit maintainer retrigger (the PR-panel checkbox or@gittensory reviewas a maintainer) does. Root-caused a real production leak where a draft PR and a couple of long-lived non-draft PRs burned $6-$76 in repeat AI spend from automatic re-triggers that never should have re-run.GITTENSORY_REVIEW_CONTINUOUSfleet-wide env default) and per repo (review.auto_review.cadencein.gittensory.yml, wins in either direction over the fleet default), so self-hosters who prefer the traditional re-review-on-every-push behavior can opt back in per repo or fleet-wide.cadencefield sits directly in the existingAutoReviewConfig/review.auto_reviewmanifest block, alongsideskipDrafts— the exact same shape, same nullable-inherits-fleet-default semantics.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.Fixes #4636
Validation
git diff --checknpm run actionlintnpm run typechecknpm 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=moderateAlso ran the complete
npm run test:cichain (all jobs) twice from a freshly rebasedorigin/main, fully green: 13,479 tests passed, 0 failed. Manually cross-referencedcoverage/lcov.infoagainst the exact diff hunks for every changed line insrc/queue/processors.tsandsrc/db/repositories.ts— the two new DB existence-check functions are 100% line+branch covered; the handful of remaining zero-hit lines inprocessors.tsare.catch(() => fallback)fail-safe arrow-function bodies that never reject in tests, the identical pre-existing pattern already used (and accepted) by the unmodifiedfrozen-reuse/paused-reuseaudit events immediately above my new code in the same function — verified this directly by comparing hit counts on both.Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots — see note below.UI Evidence note: the only UI-adjacent changes are two new
<li>bullet entries on the existingdocs.tuning.tsx/docs.privacy-security.tsxdocumentation pages, describing the new env var and manifest field — plain text using the exact same pre-existing<li><code>…</code> — description</li>/ plain-code-block patterns already used by 15+ sibling entries on the same pages (no new component, layout, or styling). Verified the rendered output via an accessibility-tree snapshot of the live dev server (correct structure, correct text) and a cleanui:build/ui:typecheck/ui:lint; the screenshot capture tool hit a resource-contention issue in this session (this branch also ran the fulltest:cisuite twice back to back) and I didn't want to block the PR chasing that further for a pure-text change with no visual risk.Notes
AutoReviewConfig(thereview.auto_reviewmanifest block housing the existingskipDrafts,ignoreAuthors,autoPauseAfterReviewedCommits, etc.) is already a manifest-only, no-DB-backing structure —cadenceis a direct sibling field in that same block, reusing its existing parse/overlay/round-trip machinery end-to-end rather than inventing new DB schema, OpenAPI schema, or a dashboard route for a single enum toggle.