Skip to content

ci(rhodibot): switch to the report-only canary (standards#759) - #120

Merged
hyperpolymath merged 1 commit into
mainfrom
refactor/rhodibot-canary
Sep 19, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
refactor/rhodibot-canary

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

The RSR workflow in this repository is the mutating variant of rhodibot: it runs on a
weekly cron with contents: write + pull-requests: write, deletes files by glob, and
bulk-rewrites SPDX headers — which the standing licence policy forbids. It also interpolates
${{ steps.fix.outputs.FIXES }} into a run: block (repo-derived filenames, so
attacker-influenceable) and hardcodes a personal e-mail address.

This replaces it with the report-only canary that the estate template already ships — the
already-approved design, not a new one. Same weekly schedule, same drift signal, no mutation:
it reports what an auto-fixer would have changed and fails the run when it finds drift,
rather than editing anything. Licence/SPDX drift is reported for manual, owner-only
correction; rhodibot must never edit a licence header.

Part of the standards#759 migration (canary propagation, option (a)). The workflow's uses:
pins are unchanged, so actions.lock is unaffected.

The RSR workflow here is the mutating variant: weekly cron, write permissions,
glob deletes, a bulk SPDX `sed` sweep the licence policy forbids, a
`${{ steps.fix.outputs.FIXES }}` injection sink, and a hardcoded personal
e-mail. Replaced with the canary the template ships: same schedule, same drift
signal, reports instead of mutating.

Refs hyperpolymath/standards#759 (option (a), canary propagation).
@coderabbitai

coderabbitai Bot commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 9dbfb5b5-db4a-41b5-9bc5-357b2930f83a

📥 Commits

Reviewing files that changed from the base of the PR and between 9f299dc and 6865b46.

📒 Files selected for processing (1)
  • .github/workflows/rhodibot.yml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (24)
  • GitHub Check: governance / Language / package anti-pattern policy
  • GitHub Check: governance / Licence consistency
  • GitHub Check: governance / Security policy checks
  • GitHub Check: governance / Workflow security linter
  • GitHub Check: governance / Check Workflow Staleness
  • GitHub Check: governance / Guix primary / Nix fallback policy
  • GitHub Check: governance / Trusted-base reduction policy
  • GitHub Check: governance / Well-Known (RFC 9116 + RSR)
  • GitHub Check: governance / Code quality + docs
  • GitHub Check: scan / shell-secrets
  • GitHub Check: scan / gitleaks
  • GitHub Check: rust-ci / Detect Cargo.toml
  • GitHub Check: scan / rust-secrets
  • GitHub Check: scan / Hypatia Neurosymbolic Analysis
  • GitHub Check: Validate eclexiaiser manifest
  • GitHub Check: Validate A2ML manifests
  • GitHub Check: Empty-linter (invisible characters)
  • GitHub Check: Validate K9 contracts
  • GitHub Check: panic-attack assail
  • GitHub Check: analyze (actions, none)
  • GitHub Check: Groove manifest check
  • GitHub Check: ABI ↔ FFI structural conformance
  • GitHub Check: Hypatia neurosymbolic scan
  • GitHub Check: Zig FFI builds + tests (Zig 0.14.0)
🔇 Additional comments (1)
.github/workflows/rhodibot.yml (1)

37-37: 🔒 Security & Privacy | 🛡️ Analyzed with Security Review

Restore the approved immutable action pin.

This line changes the previous full commit SHA to v7.0.1, which conflicts with the requirement that action pins remain unchanged. Use the full v7.0.1 commit SHA and update actions.lock if the lock file does not enforce the exact commit.


📝 Summary

Summary by CodeRabbit

  • Bug Fixes

    • Repository policy checks now report detected issues without automatically modifying files or opening pull requests.
    • Checks now fail when actionable policy drift is detected, making issues visible earlier.
  • Chores

    • Improved workflow safety with run cancellation and execution time limits.
    • Added manual workflow triggering and removed automatic pull-request creation permissions.

Walkthrough

The workflow is now a report-only RSR compliance canary. It no longer edits files, pushes branches, or creates pull requests. It reports detected drift, writes a step summary, and fails when would-mutate conditions are found.

Changes

RSR Compliance Canary

Layer / File(s) Summary
Workflow controls
.github/workflows/rhodibot.yml
The workflow uses cron and workflow_dispatch, cancels superseded runs, limits permissions, sets a 15-minute timeout, and uses the canary job.
Non-mutating drift detection
.github/workflows/rhodibot.yml
File, manifest, licence, and documentation checks now report warnings instead of modifying repository content. Verification-bypass checks report file counts as advisory notes.
Canary result reporting
.github/workflows/rhodibot.yml
The job writes a step summary and emits a GitHub error before exiting with status 1 when DRIFT is greater than zero. Branch creation, commits, and pull-request creation were removed.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant GitHub Actions
  participant actions/checkout
  participant Canary shell
  participant Step summary
  GitHub Actions->>actions/checkout: Check out repository
  actions/checkout-->>Canary shell: Provide repository contents
  Canary shell->>Canary shell: Detect drift and advisory patterns
  Canary shell->>Step summary: Write compliance results
  Canary shell->>GitHub Actions: Emit error and exit 1 when drift exists
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the purpose, scope, security concerns, and related migration. It does not follow the repository template because it omits the Changes, RSR Quality Checklist, Testing, and Scre… Add the missing template sections. List the key changes, mark applicable RSR checklist items, describe the test commands and results, and provide screenshots or terminal output when applicable.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the CI workflow change and states that rhodibot now uses a report-only canary.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the purpose, scope, security concerns, and related migration. It does not follow the repository template because it omits the Changes, RSR Quality Checklist, Testing, and Screenshots sections.

  • Fix all pre-merge checks with AI

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit watched the canary glow
No files were changed below
Warnings hopped into the air
Drift was counted with care
The summary marked the trail
And clean runs left no fail

Comment @coderabbitai help to get the list of available commands.

steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v4
uses: actions/checkout@v7.0.1
@hyperpolymath
hyperpolymath merged commit d8f2fa3 into main Sep 19, 2026
28 of 35 checks passed
@hyperpolymath
hyperpolymath deleted the refactor/rhodibot-canary branch September 19, 2026 18:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants