docs: add the optimal repository settings guide - #760
Conversation
Documents how to apply and measure config/settings/repo.json without restating it. Records the four exclusion rules that make a naive audit report false findings: forks excluded entirely; private-on-Free is N/A and never "disabled"; security_and_analysis is absent from LIST endpoints so compliance costs one call per repo; and secret_scanning must be PATCHed before secret_scanning_push_protection. Also carries forward open owner decision O8, noting that the repo setting and rulesets/base.json allowed_merge_methods must move together. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QMTyDv9CoJo5PfeNzyp519
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
📝 SummarySummary by CodeRabbit
WalkthroughThe pull request adds an AsciiDoc document that defines how to apply and measure the repository settings canon, including exclusions, compliance buckets, and the open merge-method decision O8. ChangesRepository settings documentation
Estimated code review effort: 1 (Trivial) | ~2 minutes 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 each setting in line Comment |



Adds
docs/REPO-SETTINGS.adoc— how to apply and measureconfig/settings/repo.json, without restating a single value it already carries.Why this and not a settings file
The canon already exists and is complete. What was missing is the operational knowledge around it, which until now lived only in session memory: the cases where "not compliant" is the wrong verdict.
The four exclusion rules recorded
Forks are excluded entirely — from application and from the compliance denominator. Leaving them in produces a permanent false deficit.
Private repos on a Free account are N/A, never
disabled—secret_scanningand push protection are unavailable there. Recording them asdisabledinvents a finding that no PATCH can ever clear, and every subsequent audit re-opens it.security_and_analysisis absent from LIST endpoints — it appears only on the single-repoGET. A census built fromGET /orgs/{org}/repossees the key missing and, if missing is treated as false, reports the whole estate non-compliant. There is no bulk shortcut.secret_scanningmust be PATCHed beforesecret_scanning_push_protection— push protection is a dependent. A single combined PATCH returning HTTP 200 is not evidence both landed; read back before recording compliance.The document also insists on three result buckets — compliant, remediable, N/A — because collapsing N/A into non-compliant is what produces an audit number that cannot be driven to zero.
Open owner decision carried forward
open_owner_decisions.O8is restated with the coupling made explicit: flippingallow_merge_commitwithout addingmergetoallowed_merge_methodsinrulesets/base.jsonleaves the ruleset refusing the method the setting now permits, which presents to a contributor as an unexplained blocked merge.Verification
Docs-only, one added file. The three relative links (
../config/settings/repo.json,../config/rulesets/base.json,../config/rulesets/gates.json) were checked against the tree. SPDXCC-BY-SA-4.0on line 1 per the estate docs licence.🤖 Generated with Claude Code
https://claude.ai/code/session_01QMTyDv9CoJo5PfeNzyp519