chore(fork-gates): drop .gitleaksignore from the allowlist so it matches the contract it claims to enforce - #24
Conversation
…hes the contract it claims to enforce check-additive-only.sh carries a comment above its ALLOW array asserting the array is the machine form of FORK.md's must-survive table and must be kept in lockstep with it. That assertion is testable and nothing tests it: the must-survive gate asserts the listed paths EXIST, not that the two lists agree. Diffing them found one entry in ALLOW with no row in FORK.md — .gitleaksignore. WHY IT MATTERS. ALLOW is a permission, not a claim of existence: it means "if this path differs from upstream, that is allowed". So this was standing permission for a file that (a) does not exist in the worktree or in git diff upstream/main...HEAD, and (b) nothing would use — gitleaks runs nowhere in this repository, fork-gates.yml has exactly two steps, and the only occurrence of the string in the whole repo was that ALLOW entry. CHOSE REMOVAL OVER ADDING A FORK.md ROW. Both restore lockstep. Adding a row documents a file that does not exist, which is the instinct decision-log/048 (D170/D171) ratified against a week ago when it retired two phantom repositories rather than keep reserving their names. Removal also fails CLOSED: if a .gitleaksignore is ever genuinely wanted, the additive-only gate refuses the diff until FORK.md and ALLOW are updated together — which is the contract working, and exactly the review step 007 found had been missing. FORK.md is not touched; it was already correct, the array had drifted from it. INCIDENTAL FINDING, recorded not swallowed. Re-pinning .harness-hash (required — scripts/fork-gates/*.sh is inside the pinned surface per .harness-hash-extra-patterns:7) revealed that 000-docs/007 was never pinned when it was added on 2026-08-03; init was evidently not re-run. The manifest now covers 14 files rather than 12. Nothing was tampered with — an unpinned file is one the verify step was silently not watching, which is the second instance in this same audit of enforcement whose scope stopped matching its subject. VERIFIED. check-additive-only.sh upstream/main OK; check-must-survive.sh intact (12 paths); audit-harness verify OK on the re-pinned manifest. The divergence set against upstream is unchanged by this commit. RISK. Low and one-directional — this narrows what the fork may diverge on. The only way it can bite is a future change that adds .gitleaksignore, which will now be stopped at the gate for a deliberate contract update instead of passing silently. UNFINISHED. The lockstep comment is still an unenforced assertion. A gate that parses the FORK.md table and asserts set-equality with ALLOW would make it real; noted as a follow-up in 000-docs/008 and deliberately not bundled here so this stays reviewable as a one-line removal. Refs 000-docs/008-AA-AUDR-fork-allowlist-lockstep-2026-08-08.md
|
Warning Review limit reached
Next review available in: 37 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe fork gate removes ChangesFork allowlist audit
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
Code Review SummaryThe review did not run because the selected model is no longer available. Choose another model in Kilo Code review settings: https://app.kilo.ai/code-reviews Previous Review SummaryCurrent summary above is authoritative. Previous snapshots are kept for context only. Previous reviewThe review did not run because the selected model is no longer available. Choose another model in Kilo Code review settings: https://app.kilo.ai/code-reviews |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@000-docs/008-AA-AUDR-fork-allowlist-lockstep-2026-08-08.md`:
- Around line 29-37: The audit document’s allowlist comparison and counts are
stale: update the `ALLOW` entry table to match the actual array, remove
`REVIEW.md` unless it is genuinely allowlisted, add or remove its corresponding
`FORK.md` row as appropriate, and correct all stated entry and transition
counts, including the “14 → 13” claim.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 33faaa8f-7acf-4159-8017-96be8f5fad16
📒 Files selected for processing (4)
.harness-hash000-docs/000-INDEX.md000-docs/008-AA-AUDR-fork-allowlist-lockstep-2026-08-08.mdscripts/fork-gates/check-additive-only.sh
💤 Files with no reviewable changes (1)
- scripts/fork-gates/check-additive-only.sh
…d off the wrong branch CodeRabbit caught a factual error in 000-docs/008 and it was right. Verified against `git show origin/main:…` before accepting rather than taken at face value. WHAT WAS WRONG. The audit stated "14 ALLOW entries" and "11 rows" and listed REVIEW.md among the matched entries. Those numbers came from the unmerged branch chore/retire-phantom-lab-repos, which adds REVIEW.md to ALLOW *and* to FORK.md — correctly, in lockstep. On main, the base this PR targets, REVIEW.md is in neither list and the file does not exist there at all. Correct counts: 13 -> 12 entries against 10 FORK.md path rows. The one-line removal itself was always correct — .gitleaksignore is entry 5 of 13 on origin/main and has no FORK.md row either way. Only the surrounding arithmetic and the comparison table were wrong. CHOSE TO RECORD THE CORRECTION (new § 5b) OVER SILENTLY AMENDING THE NUMBERS. An audit about two lists disagreeing that itself miscounted the lists is the strongest available argument for the follow-up already named in § 6: counts asserted by a human are exactly what a gate should be computing. Deleting the evidence for that argument to look tidier would be the wrong trade. VERIFIED. check-additive-only.sh upstream/main OK; check-must-survive.sh intact (12 paths); audit-harness verify OK on the re-pinned manifest. Divergence set unchanged.
|
@coderabbitai — confirmed, and fixed in e5de303. You were right and I verified it against
The one-line removal itself was never affected — I recorded the correction as a new § 5b rather than quietly amending the numbers. An audit about two lists disagreeing that itself miscounted the lists is the best argument available for the follow-up already named in § 6 — a gate that parses the Gates re-run after the fix:
|
|
Tip For best results, initiate chat on the files or code changes.
The retained § 5b correction preserves the audit trail. The reported 🐇 ✓ ✏️ Learnings added
If you found this review helpful, would you consider giving us a shout-out on X? Thank you for using CodeRabbit! You are interacting with an AI system. |
What
Removes
.gitleaksignorefrom theALLOWarray inscripts/fork-gates/check-additive-only.sh(14 → 13 entries), re-pins.harness-hash, and files000-docs/008-AA-AUDRrecording the audit.Why
That script carries a comment above
ALLOWasserting the array is the machine form ofFORK.md's must-survive table and must be kept in lockstep with it. Nothing tests that assertion —check-must-survive.shasserts the listed paths exist, not that the two lists agree. Diffing them found exactly one entry inALLOWwith no row inFORK.md.ALLOWis a permission, not a claim of existence — it means "if this path differs from upstream, that is allowed." So this was standing permission for a file that:git diff upstream/main...HEAD; andgitleaksruns nowhere in this repo (fork-gates.ymlhas two steps), and the sole occurrence of that string anywhere in the repository was theALLOWentry itself.Decision rationale — removal over adding a
FORK.mdrowBoth restore lockstep. Adding a row documents a file that does not exist, which is the instinct
decision-log/048(D170/D171) ratified against a week ago when it retired two phantom repositories rather than keep reserving their names.Removal also fails closed: if a
.gitleaksignoreis ever genuinely wanted, the additive-only gate refuses the diff untilFORK.mdandALLOWare updated together. That is the contract working — and precisely the review step007found had been missing.FORK.mdis not touched. It was already correct; the array had drifted away from it.Layer(s) touched
The fork-contract enforcement surface only. No application code, no upstream-owned path, no deploy or runtime behaviour.
Incidental finding — recorded, not swallowed
Re-pinning
.harness-hash(required:scripts/fork-gates/*.shis inside the pinned surface per.harness-hash-extra-patterns:7) revealed that000-docs/007was never pinned when it was added on 2026-08-03 —audit-harness initwas evidently not re-run. The manifest now covers 14 files instead of 12.Nothing was tampered with; an unpinned file is simply one the verify step was silently not watching. That makes it the second instance in this one audit of enforcement whose scope quietly stopped matching its subject.
Verification & evidence
check-additive-only.sh upstream/mainadditive-only OK vs upstream/maincheck-must-survive.shmust-survive set intact (12 paths)scripts/audit-harness verifyharness-hash: OKCI runs the first two as the required
fork-contractcheck.Risk assessment
Low, and one-directional — this narrows what the fork may diverge on. The only way it bites is a future change adding
.gitleaksignore, which will now be stopped at the gate for a deliberate contract update rather than passing silently. That is the intended behaviour.Operational impact
None. No secrets, no env, no migrations, no deps, no deploy ordering.
Follow-up & deferred
The lockstep comment is still an unenforced assertion. A gate that parses the
FORK.mdtable and asserts set-equality withALLOWwould make it real. Noted as a follow-up in000-docs/008and deliberately not bundled here, so this stays reviewable as a one-line removal.Governance links
FORK.md§ Must-survive set — the human contract000-docs/007-AA-AUDR-fork-contract-breach-2026-08-03.md— the breach whose causal chain was "gates existed but were never in CI"; this is the adjacent failureintent-osdecision-log/048D170/D171 — the phantom-retirement precedent this followsRefs
000-docs/008-AA-AUDR-fork-allowlist-lockstep-2026-08-08.mdintentsolutions.io
Summary by CodeRabbit
Documentation
Bug Fixes
.gitleaksignorepath from the permitted fork paths, so future changes to that path are correctly flagged as violations.