Skip to content

Compliance: ruleset-drift-pr-quality-dismiss_stale_reviews_on_push #555

Closed

Description

@don-petry

Compliance Finding

Category: rulesets
Severity: error
Check: ruleset-drift-pr-quality-dismiss_stale_reviews_on_push

Detail

Ruleset pr-quality parameter dismiss_stale_reviews_on_push has drifted from the codified standard: expected true, actual false. The codified JSON (standards/rulesets/pr-quality.json) is the source of truth (#575/#580); run scripts/apply-rulesets.sh --repo petry-projects/google-app-scripts to converge.

Standard Reference

standards/github-settings.md#pr-quality--standard-ruleset-all-repositories

Remediation

Please review the linked standard and bring this repository into compliance.

See the full standards documentation for implementation guidance.


This issue was automatically created by the weekly compliance audit.

Activity

  1. don-petry commented on Aug 28, 2026

    @don-petry
    CollaboratorAuthor

    Weekly Compliance Audit (2026-08-28)

    This finding is still open.

    Detail: Ruleset pr-quality parameter dismiss_stale_reviews_on_push has drifted from the codified standard: expected true, actual false. The codified JSON (standards/rulesets/pr-quality.json) is the source of truth (#575/#580); run scripts/apply-rulesets.sh --repo petry-projects/google-app-scripts to converge.

    Standard: standards/github-settings.md#pr-quality--standard-ruleset-all-repositories

  2. added
    dev-leadFor dev-lead agent pickup
    and removed
    dev-leadFor dev-lead agent pickup
    on Aug 28, 2026
  3. don-petry commented on Aug 31, 2026

    @don-petry
    CollaboratorAuthor

    Weekly Compliance Audit (2026-08-31)

    This finding is still open.

    Detail: Ruleset pr-quality parameter dismiss_stale_reviews_on_push has drifted from the codified standard: expected true, actual false. The codified JSON (standards/rulesets/pr-quality.json) is the source of truth (#575/#580); run scripts/apply-rulesets.sh --repo petry-projects/google-app-scripts to converge.

    Standard: standards/github-settings.md#pr-quality--standard-ruleset-all-repositories

  4. added
    dev-leadFor dev-lead agent pickup
    and removed
    dev-leadFor dev-lead agent pickup
    on Aug 31, 2026
  5. don-petry commented on Aug 31, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Analysis — no code change required (already compliant)

    Provisional note; nothing pushed. This documents the investigation into
    compliance finding ruleset-drift-pr-quality-dismiss_stale_reviews_on_push.

    Finding

    The codified source of truth for the pr-quality ruleset in this repo is the
    JSON heredoc in scripts/setup-pr-quality-ruleset.sh. It already codifies the
    expected value:

    "dismiss_stale_reviews_on_push": true,   # scripts/setup-pr-quality-ruleset.sh:66
    

    The script is idempotent and reconverges drift on an existing ruleset via
    gh api ... --method PUT (line 82). Guarding tests in
    scripts/tests/setup-pr-quality-ruleset.test.js already assert this parameter is
    true (and pin the full pull_request parameter set); all 6 tests pass locally.

    There is no standards/rulesets/pr-quality.json or other ruleset definition
    file in this repo — the heredoc is the sole codified source, and it is already
    correct.

    Conclusion

    The repository code is already compliant with the codified standard, so no
    source change brings it into compliance. The audit flagged actual: false
    because it reads the live GitHub ruleset via the API — the drift is in the
    live repo configuration, not in any tracked file.

    Remediation (operational, not a code PR)

    Reconverge the live ruleset by running the already-correct script with repo-admin
    gh auth (the in-repo equivalent of apply-rulesets.sh):

    bash scripts/setup-pr-quality-ruleset.sh petry-projects/google-app-scripts
    

    This requires admin credentials and mutates a protected-branch ruleset on
    GitHub, so it is outside the scope of this code-PR flow and cannot be delivered
    as a diff. Once run, a re-audit should clear this finding.

  6. don-petry commented on Sep 4, 2026

    @don-petry
    CollaboratorAuthor

    Weekly Compliance Audit (2026-09-04)

    This finding is still open.

    Detail: Ruleset pr-quality parameter dismiss_stale_reviews_on_push has drifted from the codified standard: expected true, actual false. The codified JSON (standards/rulesets/pr-quality.json) is the source of truth (#575/#580); run scripts/apply-rulesets.sh --repo petry-projects/google-app-scripts to converge.

    Standard: standards/github-settings.md#pr-quality--standard-ruleset-all-repositories

  7. added
    dev-leadFor dev-lead agent pickup
    and removed
    dev-leadFor dev-lead agent pickup
    on Sep 4, 2026
  8. don-petry commented on Sep 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: issue #555 implementation failed — will retry

    All engines were rate-limited. This was attempt 1 of 3; dev-lead will retry automatically. You can also re-apply the dev-lead label to retry now.

    Last 40 lines of engine output (redacted)
        at throwErrorIfNotOK (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:267315:24)
        at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:267078:7
        at async Models.generateContentStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:268174:16)
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:310543:19
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:287352:23
        at async retryWithBackoff (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:307380:23)
        at async GeminiChat.makeApiCallAndProcessStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331230:28)
        at async GeminiChat.streamWithRetries (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:330983:29)
        at async Turn.run (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331905:24) {
      status: 429
    }
    Attempt 10 failed: Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. . Max attempts reached
    Error when talking to Gemini API Full report available at: /tmp/gemini-client-error-Turn.run-sendMessageStream-2026-09-07T16-30-46-198Z.json RetryableQuotaError: Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. 
        at classifyGoogleError (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:306667:14)
        at retryWithBackoff (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:307403:29)
        at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
        at async GeminiChat.makeApiCallAndProcessStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331230:28)
        at async GeminiChat.streamWithRetries (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:330983:29)
        at async Turn.run (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331905:24)
        at async GeminiClient.processTurn (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:345450:22)
        at async GeminiClient.sendMessageStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:345547:14)
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/gemini-CKAAKWBN.js:11773:26
        at async main (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/gemini-CKAAKWBN.js:17200:5) {
      cause: {
        code: 429,
        message: 'Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. ',
        details: []
      },
      retryDelayMs: undefined,
      status: 429
    }
    {
      "session_id": "0b037393-dac6-4a0a-94bc-5ddc76d600db",
      "error": {
        "type": "Error",
        "message": "Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. ",
        "code": 429
      }
    }
    
    
  9. don-petry commented on Sep 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: issue #555 implementation failed — will retry

    All engines were rate-limited. This was attempt 2 of 3; dev-lead will retry automatically. You can also re-apply the dev-lead label to retry now.

    Last 40 lines of engine output (redacted)
        at throwErrorIfNotOK (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:267315:24)
        at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:267078:7
        at async Models.generateContentStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:268174:16)
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:310543:19
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:287352:23
        at async retryWithBackoff (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:307380:23)
        at async GeminiChat.makeApiCallAndProcessStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331230:28)
        at async GeminiChat.streamWithRetries (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:330983:29)
        at async Turn.run (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331905:24) {
      status: 429
    }
    Attempt 10 failed: Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. . Max attempts reached
    Error when talking to Gemini API Full report available at: /tmp/gemini-client-error-Turn.run-sendMessageStream-2026-09-07T18-50-18-270Z.json RetryableQuotaError: Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. 
        at classifyGoogleError (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:306667:14)
        at retryWithBackoff (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:307403:29)
        at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
        at async GeminiChat.makeApiCallAndProcessStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331230:28)
        at async GeminiChat.streamWithRetries (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:330983:29)
        at async Turn.run (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:331905:24)
        at async GeminiClient.processTurn (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:345450:22)
        at async GeminiClient.sendMessageStream (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/chunk-MFLFXOVQ.js:345547:14)
        at async file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/gemini-CKAAKWBN.js:11773:26
        at async main (file:///home/runner/.npm-global/lib/node_modules/@google/gemini-cli/bundle/gemini-CKAAKWBN.js:17200:5) {
      cause: {
        code: 429,
        message: 'Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. ',
        details: []
      },
      retryDelayMs: undefined,
      status: 429
    }
    {
      "session_id": "1f93b89d-1467-4a02-be91-648d1b606d1f",
      "error": {
        "type": "Error",
        "message": "Your prepayment credits are depleted. Please go to AI Studio at https://ai.studio/projects to manage your project and billing. Learn more at https://ai.google.dev/gemini-api/docs/billing#prepay. ",
        "code": 429
      }
    }
    
    
  10. added
    dev-leadFor dev-lead agent pickup
    and removed
    dev-leadFor dev-lead agent pickup
    on Sep 7, 2026
  11. don-petry commented on Sep 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead Implementation Plan

    Issue: #555 — Compliance: ruleset-drift-pr-quality-dismiss_stale_reviews_on_push

    Scope

    Ensure the repo's codified source of truth for the pr-quality ruleset pins dismiss_stale_reviews_on_push: true and is durably guarded against future drift.

    Findings from investigation

    Implementation Checklist

    Tests to Write / Verify

    • Confirm existing regression assertions still pin dismiss_stale_reviews_on_push: true (dedicated + toEqual) — behavior-preserving; no new failing behavior to add (Phase 2 doc exception).
    • Full suite + coverage remain green.

    Test Command

    npm test (and npx jest scripts/tests/setup-pr-quality-ruleset.test.js for the focused guard)

  12. don-petry commented on Sep 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Progress (in progress — not yet durable)

    Provisional. Nothing is pushed yet; the automation posts the authoritative
    completion record (with PR number + head SHA) after the push. Treat the notes
    below as intent, not delivered results.

    Investigation outcome

    The codified source of truth (scripts/setup-pr-quality-ruleset.sh) already
    pins dismiss_stale_reviews_on_push: true, and the existing regression test
    already fails if it regresses (dedicated assertion + full-parameter toEqual
    guard). That value was codified in #539/#547. So no functional change to the
    parameter value is required to satisfy this finding at the code level.

    The live-GitHub ruleset drift (actual false) is converged by running the
    pr-quality convergence script against the repo — a repo-admin/CI action,
    outside the code in this branch.

    Files touched (this workspace, not yet pushed)

    Notes

    • Phase 2 TDD exception: behavior-preserving documentation change — the value
      was already codified and already covered by passing regression assertions.
    • No unrelated files modified. Lint (dev-lead shellcheck + npm run check) and
      the test suite were run locally and were green in this workspace (provisional —
      not the pushed run).
  13. don-petry commented on Sep 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Implementation Complete — PR #576

    The implementation for issue #555 is durable: commits are pushed and a pull request is open. This record is backed by verifiable artifacts you can confirm in one click.

    Review happens on the PR. Acceptance criteria and test results are evidenced by the PR's diff and CI checks — not asserted here. If a later stage fails, this claim is retracted in place.

  14. added
    compliance-findingMachine-owned: created and auto-closed by the compliance audit. Do not hand-apply.
    on Sep 11, 2026
  15. don-petry commented on Sep 11, 2026

    @don-petry
    CollaboratorAuthor

    Weekly Compliance Audit (2026-09-11)

    This finding is still open.

    Detail: Ruleset pr-quality parameter dismiss_stale_reviews_on_push has drifted from the codified standard: expected true, actual false. The codified JSON (standards/rulesets/pr-quality.json) is the source of truth (#575/#580); run scripts/apply-rulesets.sh --repo petry-projects/google-app-scripts to converge.

    Standard: standards/github-settings.md#pr-quality--standard-ruleset-all-repositories

  16. added
    dev-lead:hands-offExclude from dev-lead agent automation
    and removed
    dev-leadFor dev-lead agent pickup
    on Sep 11, 2026
  17. don-petry commented on Sep 18, 2026

    @don-petry
    CollaboratorAuthor

    Weekly Compliance Audit (2026-09-18)

    This finding is still open.

    Detail: Ruleset pr-quality parameter dismiss_stale_reviews_on_push has drifted from the codified standard: expected true, actual false. The codified JSON (standards/rulesets/pr-quality.json) is the source of truth (#575/#580); run scripts/apply-rulesets.sh --repo petry-projects/google-app-scripts to converge.

    Standard: standards/github-settings.md#pr-quality--standard-ruleset-all-repositories

  18. added a commit that references this issue on Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    compliance-auditAutomated compliance audit findingcompliance-findingMachine-owned: created and auto-closed by the compliance audit. Do not hand-apply.dev-lead:hands-offExclude from dev-lead agent automation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions