chore(governance): stop declaring repository identity in settings.yml - #329
Conversation
probot/settings applies this file on every push to the default branch, so `name`,
`description`, `homepage` and `private` here are instructions, not documentation. The estate has
already paid for that: the template carried `name: "{{REPO}}"`, GitHub collapsed the illegal braces
to dashes, the repo renamed itself to `-REPO-` on every push and its old URL 404'd.
This file now matches the template's own header and rule, with the four identity keys removed and
everything else left as it was. Repository identity and visibility are set out of band, once, by
the owner. Enforced by scripts/check-no-placeholders.sh.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
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. (34)
🔇 Additional comments (1)
📝 SummarySummary by CodeRabbit
WalkthroughThe repository settings no longer declare repository identity, visibility, or downloads fields. Comments document out-of-band configuration and the placeholder check. ChangesRepository settings
Priority: ➖ Normal Estimated code review effort: 1 (Trivial) | ~5 minutes Change: Other · Severity of issue fixed: Medium 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Description checkExplanation The description explains the problem, the changes, the preserved settings, and the verification performed. However, it omits the required template sections and the RSR Quality Checklist, including explicit test, formatting, lint, licensing, and security confirmations.
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. A rabbit checks the settings file Comment |
🔍 Hypatia Security ScanFindings: 108 issues detected
View findings[
{
"reason": "Job `sonarqube` in build.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": "build.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sonarqube"
},
{
"reason": "Job `triage` in label-triage.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": "label-triage.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "triage"
},
{
"reason": "Job `sync` in labels.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": "labels.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "sync"
},
{
"reason": "Job `deploy` in pages-deploy.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
"type": "missing_timeout_minutes",
"file": "pages-deploy.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"recipe_id": "recipe-add-workflow-timeout-minutes",
"job": "deploy"
},
{
"reason": "Step uses `peter-evans/repository-dispatch` with `token: ${{ secrets.FARM_DISPATCH_TOKEN }}` but has no `if: secrets.FARM_DISPATCH_TOKEN != ''` gate. On repos where the secret hasn't been propagated the action fails on every push, red-maining the repo. Add the step-level gate (or env+if pattern) so the missing-secret path is a clean skip instead of a red.",
"type": "secret_action_without_presence_gate",
"file": "instant-sync.yml",
"action": "peter-evans/repository-dispatch",
"rule_module": "workflow_audit",
"severity": "high",
"fix_recipe": "add_secret_presence_gate"
},
{
"reason": "codeql.yml does not list `language: actions` in its matrix, but the repo has workflow files. CodeQL's `actions` language scans workflow YAML for injection and other CI/CD-specific weaknesses — every repo with workflows benefits. Add an entry to `matrix.include` with `language: actions` + `build-mode: none`.",
"type": "codeql_missing_actions_language",
"file": "codeql.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium",
"fix_recipe": "add_codeql_actions_language"
},
{
"line": 31,
"reason": "job in .github/workflows/build.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/build.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "warn"
},
{
"line": 45,
"reason": "job in .github/workflows/push-email-notify.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/push-email-notify.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "warn"
},
{
"line": 157,
"reason": "job in .github/workflows/release.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/release.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "warn"
},
{
"line": 48,
"reason": "job in .github/workflows/publish.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
"type": "RE001",
"file": ".github/workflows/publish.yml",
"action": "report",
"rule_module": "research_extensions",
"severity": "warn"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
probot/settingsapplies this file on every push to the default branch, so the four identitykeys it declared are instructions, not documentation. The estate has already paid for exactly this:
.github/settings.ymlonce readname: "{{REPO}}", GitHub collapsed the illegal braces to dashes,the repository renamed itself to
-REPO-on every push, its old URL 404'd, and it was read as adeleted repository.
This repo still declared
name,description,homepageandprivate.The repair is convergence on the source of truth, not new content:
("THIS FILE MUST NEVER DECLARE REPOSITORY IDENTITY");
same 18 labels;
Verified with the estate's own gate,
scripts/check-no-placeholders.sh, whose settings.yml guardruns in template repos too (that exemption is how the original incident went unseen). On this
branch the guard reports clean.