feat(agent-actions): add a review-request nagging cooldown (#2463)#2530
Merged
Conversation
Throttles a PR/issue author who repeatedly pings @gittensory for review on the
same thread: under the configured threshold, pings are just tracked; crossing
it applies the repo's policy ("hold" posts a deterministic cooldown reply,
"close" additionally closes the PR through the same planner/executor gate
stack as blacklist/contributor-cap). Issue threads degrade to "hold" pending a
dedicated closeIssue primitive. Off by default, per-repo configurable via
.gittensory.yml and a new shared autoCloseExemptLogins list, and scoped to the
thread's own author so a third party's pings never affect someone else's PR.
Also fixes a pre-existing migration-number collision on main (two 0090 files
from separately merged PRs) by renumbering the newer one to 0092.
|
Important 🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪🟪 🔍 Gittensory is reviewing…AI analysis is in progress. This comment will update when the review is complete. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed · 🟪 Reviewing |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | eba6b84 | Commit Preview URL Branch Preview URL |
Jul 02 2026, 08:34 AM |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2530 +/- ##
==========================================
+ Coverage 95.95% 95.98% +0.03%
==========================================
Files 226 229 +3
Lines 25391 25807 +416
Branches 9234 9388 +154
==========================================
+ Hits 24363 24770 +407
- Misses 417 425 +8
- Partials 611 612 +1
🚀 New features to boost your workflow:
|
Closed
12 tasks
This was referenced Jul 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@gittensoryon the same thread, the (N+1)th ping within a rolling window triggers the repo's configured policy —hold(deterministic cooldown reply, no further action) orclose(labels + closes the PR through the same planner/executor gate stack — autonomy/dry-run/kill-switch/write-permission — as blacklist and the newly-landed contributor-cap short-circuit). Issue threads degrade toholdpending a dedicatedcloseIssueprimitive (tracked separately).RepositorySettings+ DB round-trip (getRepositorySettings/upsertRepositorySettings) +.gittensory.ymlparsing/precedence + OpenAPI schema +.gittensory.yml.exampledocs, all in this PR.autoCloseExemptLoginsrepo setting (a GitHub-login exemption list layered the same way, on top of the standing owner/admin/automation-bot exemption) intended for reuse by the per-contributor open-item cap too.reviewNagPolicy: "off") — byte-identical behavior for any repo that doesn't opt in.issue.user.login === commenter) — a third party pinging on someone else's PR/issue is never tracked or throttled.main(two0090_*.sqlfiles landed by separately merged PRs) by renumbering the newer one to0092; this repo's own migration takes0091.Scope
type(scope): short summaryConventional Commit format.db:migrations:checkpass at all) and does not mix unrelated backend, UI, MCP, docs, dependency, or deploy changes.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run actionlint(vianpm run test:ci)npm run typechecknpm run test:coveragelocally — all new/changed lines and branches insrc/**covered (verified via manualcoverage/lcov.infoBRDA inspection); a handful of genuinely-unreachable defensive fallbacks (the resolver always resolves a concrete default) arev8 ignored, matching existing precedent elsewhere in this file.npm run test:workers(vianpm run test:ci)npm run build:mcp(vianpm run test:ci)npm run test:mcp-pack(vianpm run test:ci)npm run ui:openapi:check(vianpm run test:ci)npm run ui:lint(vianpm run test:ci)npm run ui:typecheck(vianpm run test:ci)npm run ui:build(vianpm run test:ci)npm audit --audit-level=moderatetest/unit/agent-actions.test.ts), DB round-trip incl. invalid-value fallback (test/unit/data-spine.test.ts), the new count-in-window audit helper (test/unit/db-parsers.test.ts),.gittensory.ymlparsing/precedence (test/unit/focus-manifest.test.ts), the new exemption-list module (test/unit/auto-close-exempt.test.ts), and full webhook-level integration tests covering off/under-threshold/hold/close/issue-degrade/exempt/third-party/owner/admin/dry-run/PR-already-closed/empty-autonomy-plan/no-installation scenarios (test/unit/queue.test.ts).Safety
src/openapi/schemas.ts+ regeneratedapps/gittensory-ui/public/openapi.json)..gittensory.yml.example); no changelog edit.Notes
mainwhile this branch was in progress; resolved the rebase conflicts to keep bothcontributor_capandreview_nagas siblingcloseKindshort-circuits, and bothcontributorCapLabel/contributorCapMatchand the new review-nag/autoCloseExemptLoginsfields side by side across every config-as-code touchpoint.