Repository navigation
feat(publish): recover original signed manifests versions - #454
Conversation
Code Coverage OverviewLanguages: Go, C# Go / code-coverage/testThe overall line coverage in commit adcb97f in the C# / code-coverage/dotnetThe overall line coverage in commit adcb97f in the Go / code-coverage/goThe overall line coverage in commit adcb97f in the Updated |
@coderabbitai full review |
✅ Action performedFull review finished. |
|
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 (10)
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🧰 Additional context used📓 Path-based instructions (1)Source excerpt: Repo-specific watch-list for the daily engineer: **Agent-file freshness.**📄 CodeRabbit inference engine (AGENTS.md) Files:
🧠 Learnings (1)📓 Common learnings🪛 ast-grep (0.45.3).github/tests/test-unpublished-version-native.sh[warning] 32-32: A credential-bearing variable (e.g. PASSWORD, PASSWD, SECRET, TOKEN, API_KEY) is assigned a hardcoded string literal. Secrets committed to a script are exposed in source control, process listings, and shell history, and cannot be rotated without a code change. Read the value from a secrets manager or an injected environment variable at runtime instead (e.g. (hardcoded-password-assignment-bash) 🔇 Additional comments (10)
📝 WalkthroughWalkthroughThe Publish Manifests workflow adds default-off signed recovery inputs and requires signed promotion and caller pinning for recovery. The recovery helper verifies the original digest, signature identity, and publication claims before checking the version tag. It restores only a confirmed missing tag, accepts a matching tag without writing, and fails on conflicting or ambiguous registry results. Recovery leaves Estimated code review effort Priority: ➖ Normal Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to Recovery remains opt-in, verifies the original signed artifact, and avoids changing latest. No identified issue currently blocks merging after normal checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to Recovery is explicitly enabled, verifies the original signed artifact and publication claims, refuses conflicting versions, and leaves latest unchanged. No new authorization bypass was established. Residual risk concerns concurrent registry writers and production behavior not demonstrated by the local tests. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
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 8 functions across 6 files. (4 skipped: 4 unsupported.)
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 |
Readiness at CodeRabbit reviewed this exact head with no actionable findings; all review threads are absent. Fresh main remains the reviewed base. The fixture uses a synthetic local credential and local-key signature transport; it does not claim production OIDC proof or atomic registry writes. Existing real signed publication behavior is retained, and recovery remains explicit and default-off. |
Why
An interrupted publication can leave a signed manifests artifact without its release version, and normal publication must refuse an existing version.
What
Add an explicit, default-off recovery request that restores a missing version from the verified original artifact, accepts an already matching version, and preserves the latest release. Conflicting versions or incomplete evidence stop recovery.
Fixes #453