Repository navigation
fix: reject empty acquisition guards before release - #114
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (7)
Included review availability: This review used your included allowance. 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. (1)
🧰 Additional context used🪛 ast-grep (0.45.3)test/release-guards.py[error] 6-6: Command coming from incoming request (subprocess-from-request) [error] 20-20: Command coming from incoming request (subprocess-from-request) [error] 27-28: Avoid command injection (command-injection-python) [error] 27-28: Command coming from incoming request (subprocess-from-request) 🪛 Ruff (0.16.7)test/release-guards.py[error] 7-7: (S603) [error] 7-7: Starting a process with a partial executable path (S607) [warning] 20-20: Missing type annotation for (ANN002) [error] 21-21: (S603) [warning] 21-21: Add explicit (PLW1510) [error] 28-28: (S603) [error] 28-29: Starting a process with a partial executable path (S607) [warning] 55-55: Assertion should be broken down into multiple parts (PT018) [warning] 59-59: Assertion should be broken down into multiple parts (PT018) [warning] 63-63: Assertion should be broken down into multiple parts (PT018) [warning] 65-65: Assertion should be broken down into multiple parts (PT018) [warning] 81-81: Do not catch blind exception: (BLE001) 🔇 Additional comments (7)
📝 SummarySummary by CodeRabbit
WalkthroughExplicit ChangesRelease Guard Validation
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to No actionable merge-blocking issue is identified. Complete the required CI checks before merging. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change rejects malformed release guards before reservations can change and preserves matching, stale, and omitted-guard behavior. No new security weakness was identified in the inspected release paths. Broader security coverage and runtime validation remain incomplete. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 3 | ❌ 1 | ❓ 1❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
Full details: Linked Issues checkExplanation Issue Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 3 files. (4 skipped: 4 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
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 guard in line Comment |
Parent verificationRead the full 188-line review. Current HEAD and all seven file hashes match the manifest and report. APPROVE includes the required checklist; no demonstrated source defect remains. Corrections:
These corrections do not change the release fix or its approval. Hosted CI and CodeRabbit must still finish before merge. Opaque nonempty identifier grammar and schema metadata remain in issue74. Privileged bootstrap proof remains outside this PR. Full independent report (local evidence labels refer to retained execution receipts): Independent Adversarial Draft Review:
|
| Behavior | Source Implementation | Built Executable | Parallel Reference Path | Verified |
|---|---|---|---|---|
Path release --acquisition parsing |
lib/110-release.sh:21-27 |
bin/git-locks:1976-1982 |
lib/140-extend.sh:20-25 |
Yes |
| Path release guard check | lib/110-release.sh:56-62 |
bin/git-locks:2011-2017 |
lib/140-extend.sh:38-39 |
Yes |
| Multi-job atomic parsing refusal | lib/110-release.sh:5-34 |
bin/git-locks:1960-1989 |
N/A (unique to multi-job release) | Yes |
Semaphore release --acquisition parsing |
lib/170-semaphores.sh:289-294 |
bin/git-locks:3124-3129 |
lib/140-extend.sh:20-25 |
Yes |
| Semaphore release guard check | lib/170-semaphores.sh:216-221 |
bin/git-locks:3051-3056 |
lib/110-release.sh:56-62 |
Yes |
| Guard validator helper | lib/030-time-refs-records.sh:48 |
bin/git-locks:724 |
lib/055-record-validation.sh:68 |
Yes |
| Script assembly pipeline | scripts/build.sh:1-22 |
bin/git-locks:1-3555 |
Makefile build target |
Yes |
SHA256 Checksums (Working Tree vs Manifest)
| File | Working Tree SHA256 | Manifest .test-results/release-guard-evidence.json |
Match |
|---|---|---|---|
CHANGELOG.md |
0e7ea4dfee5375bce849ba6d06191374361cc554ad36f01e53ae190963d4f0c7 |
0e7ea4dfee5375bce849ba6d06191374361cc554ad36f01e53ae190963d4f0c7 |
Yes |
Makefile |
7029f13107bffcbf7410a221066da30a2bd2c579eaf6114b7a02832b369fbc17 |
7029f13107bffcbf7410a221066da30a2bd2c579eaf6114b7a02832b369fbc17 |
Yes |
bin/git-locks |
05f6ac6b7e105061b22ee7ba46b34b51a790c7567832f928cf15d94fe0f3f4ac |
05f6ac6b7e105061b22ee7ba46b34b51a790c7567832f928cf15d94fe0f3f4ac |
Yes |
docs/usage.md |
2c3497d663ffd13abeb76f57206c7120b04c5ccc0246802a109cac55b2939d64 |
2c3497d663ffd13abeb76f57206c7120b04c5ccc0246802a109cac55b2939d64 |
Yes |
lib/110-release.sh |
edf40492afb2ef3178249ed2e40148858244a7074fdc4c69ea4e261758cc0dd8 |
edf40492afb2ef3178249ed2e40148858244a7074fdc4c69ea4e261758cc0dd8 |
Yes |
lib/170-semaphores.sh |
b62e1b642f99f5a258e8cf9af900641e87ff3869f20894a68a3902bef3391894 |
b62e1b642f99f5a258e8cf9af900641e87ff3869f20894a68a3902bef3391894 |
Yes |
test/release-guards.py |
74b38a616c0d66fa08176d80591ef01a793dffe0c5c52de02cd80719a3905bdf |
74b38a616c0d66fa08176d80591ef01a793dffe0c5c52de02cd80719a3905bdf |
Yes |
Raw Evidence Coordinates
- Manifest:
.test-results/release-guard-evidence.json - RED Evidence:
.test-results/release-guard-red-result.json(exit_code: 1),.test-results/release-guard-red-latest.log(15 failed, 8 passed) - GREEN Evidence:
.test-results/release-guard-green-result.json(exit_code: 0),.test-results/release-guard-green-latest.log(23 passed, 0 failed; renewal 8 passed; shellcheck/shfmt/cmp passed) - FULL Evidence:
.test-results/release-guard-full-result.json(exit_code: 0),.test-results/release-guard-full-resources.json(stdout 88609 bytes),.test-results/release-guard-full-latest.log(complete test suite passed) - Execution Classification:
- Executed by Reviewer: Read-only static inspection, git log/diff inspection, working tree SHA256 checksums, and evidence file audits.
- Inspected Only: Docker container executions recorded in
.test-results/release-guard-*. - Skipped / Prohibited: Host-level execution (prohibited by review protocol).
- Explicit Coverage Limitations: Hardware power-loss / kernel panic CAS resilience is not verifiable via container test execution.
APPROVE
An explicitly empty
--acquisitionpreviously released the current path reservation or semaphore slot without checking ownership. A malformed guard on a later job could also allow earlier jobs to be released.Both release parsers now require a nonempty UTF-8 line, matching renewal. Invalid guards return structured usage exit 2 before publication. Matching, omitted and stale nonempty guards retain their existing behavior.
Closes #113. Related to #74; acquisition grammar and schema metadata work remain there.
Validation: Docker RED on parent 54c7b24 reproduced 15 failures. GREEN at 4596826 passes all 23 release cases, eight renewal cases, lint and generated-script equality. The full Docker lint/test suite also passed at the same head, including 1,099 shell checks, 760 capacity checks, 60 NUL-stream checks and the 18-case synthetic observation study with zero violations and a negative CAS calibration. Independent agy review and CodeRabbit approved exact head4596826; required hosted CI run37280050898 passed. Full independent feedback and parent corrections: #114 (comment). Synthetic observations do not prove every possible interleaving.