Skip to content

fix(review): wire skipAutomationBotAuthors into .loopover.yml config - #5986

Merged
JSONbored merged 1 commit into
mainfrom
fix/config-skip-automation-bot-authors
Jul 15, 2026
Merged

fix(review): wire skipAutomationBotAuthors into .loopover.yml config#5986
JSONbored merged 1 commit into
mainfrom
fix/config-skip-automation-bot-authors

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • skipAutomationBotAuthors ("inherit" | "off" | "enabled", mirrors moderationGateMode's exact shape) controls whether AI review, gate evaluation, and public-surface publish get skipped entirely for a PR/event genuinely triggered by a known automation bot (release-please, Renovate, Dependabot). It had a DB column and a dashboard/API write path, but was never wired into the .loopover.yml parser -- scripts/check-docs-drift.mjs even carried an explicit comment recording this as "an intentional scope choice", modeled directly on agentGlobalFreezeOverride's DB-only shape. That's the same DB-as-second-source-of-truth pattern already removed from agentGlobalFreezeOverride itself -- this closes the identical gap here.
  • Adds skipAutomationBotAuthors to FocusManifestSettings's Pick list + parseSettingsOverride in packages/loopover-engine/src/focus-manifest.ts (and its engine-parity twin type in packages/loopover-engine/src/types/manifest-deps-types.ts), so a global or per-repo .loopover.yml can set it directly -- no DB write required.
  • Removes it from NOT_YML_CONFIGURABLE_SETTINGS_FIELDS in scripts/check-docs-drift.mjs and documents it in both .loopover.yml.example and config/examples/loopover.full.yml, so the existing "every RepositorySettings field needs SOME yml mention" drift check now covers it like every other setting.

Test plan

  • npm run test:ci (full local gate) green
  • npm audit --audit-level=moderate -- 0 vulnerabilities
  • New parseFocusManifest/resolveEffectiveSettings test covering valid override, DB-value-survives-when-omitted, and invalid-enum-warns (mirrors the existing moderationGateMode test)
  • Updated check-docs-drift-script.test.ts: the old "excluded even with zero yml mention" case no longer includes this field; added a new case proving a zero-yml-mention regression now fails the drift check
  • Verified via lcov: both new lines / both branches fully hit

skipAutomationBotAuthors ("inherit" | "off" | "enabled", mirrors
moderationGateMode's shape) had a DB column and a dashboard/API write
path, but was never added to the FocusManifestSettings parser --
docs-drift's own exclusion comment recorded this as "an intentional
scope choice", explicitly modeled on agentGlobalFreezeOverride's
DB-only shape. That's the same pattern already removed elsewhere for
making the DB a second, independently-mutable source of truth
alongside config -- this closes the same gap here: a global or
per-repo .loopover.yml can now override it directly, config-as-code
like every sibling *GateMode field, with no DB write required.
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 15, 2026
@loopover-orb

loopover-orb Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Warning

🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨

⏸️ LoopOver review result - manual review recommended

Review updated: 2026-07-15 06:15:52 UTC

7 files · 1 AI reviewer · 2 blockers · readiness 91/100 · CI green · clean

⏸️ Suggested Action - Manual Review

Review summary
This PR wires `skipAutomationBotAuthors` into the `.loopover.yml` parsing path by adding it to `FocusManifestSettings`'s Pick list, `parseSettingsOverride` (via `normalizeOptionalEnum` with the same `inherit`/`off`/`enabled` shape as `moderationGateMode`), the engine-parity type, and both yml example files. The drift-check exclusion set is correctly shrunk with a clear explanatory comment, and the test updates flip the old 'excluded' case to a new 'must fail if undocumented' case plus add a matching parse/resolve test with valid-override, DB-survives-when-omitted, and invalid-enum-warns coverage — mirroring the existing `moderationGateMode` test exactly. The mechanical pattern-following here is solid and internally consistent; I can't see `resolveEffectiveSettings`'s overlay implementation or the actual consumer (gate/review skip logic) in this diff, so I can't independently verify the DB row is truly overridden end-to-end beyond what the new test already asserts.

Nits — 5 non-blocking
  • The new comment block in scripts/check-docs-drift.mjs:90-106 is fairly verbose for a config note — consider trimming the historical (feat(review): skip AI review, gate evaluation, and publish for known automation-bot PRs #4659, agentGlobalFreezeOverride) narrative into a shorter pointer comment now that the field is no longer an exception.
  • Verify the actual gate/skip-evaluation call site (not shown in this diff) reads from `resolveEffectiveSettings` output rather than the raw DB `RepositorySettings` row, since that's the code path this PR is meant to unblock.
  • packages/loopover-engine/src/types/manifest-deps-types.ts:340 — confirm the JSDoc default (`inherit`) matches the actual DB column default so the docs don't drift from schema.
  • Consider adding a short note in the PR description or code comment pointing to the exact consumer file/line that reads `skipAutomationBotAuthors` post-resolve, to make the end-to-end wiring easy to verify in future review.
  • Since this mirrors `moderationGateMode` closely, a quick DRY pass extracting the shared 'inherit/off/enabled per-repo override of a global env default' parsing helper could reduce duplication across the growing family of these fields (nit-level, not blocking).

Concerns raised — review before merging

  • No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.
  • Maintainer requires a linked issue — Link the relevant issue (for example Closes #123) before opening the PR.
📋 Copy for AI agents — paste into your coding agent
Fix the following blocker(s) from this PR review:

1. No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.

2. Maintainer requires a linked issue — Link the relevant issue (for example `Closes #123`) before opening the PR.
Signal Result Evidence
Code review ❌ 2 blockers 1 reviewer
Linked issue ⚠️ Missing No linked issue or no-issue rationale found.
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (no linked issue context).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 43 registered-repo PR(s), 35 merged, 367 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 43 PR(s), 367 issue(s).
Gate result ❌ Blocking Repo-configured hard blocker found.
Improvement ✅ Minor risk: clean · value: minor
Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: not available
  • Official Gittensor activity: 43 PR(s), 367 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
  • Then work through the remaining 2 steps in the Signals table above.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask 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.

  • @loopover ask <question> answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat <question> answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://gittensory.aethereal.dev/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.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label Jul 15, 2026
@JSONbored
JSONbored merged commit f5eebc4 into main Jul 15, 2026
16 checks passed
@JSONbored
JSONbored deleted the fix/config-skip-automation-bot-authors branch July 15, 2026 06:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant