feat: surface privacy-safe Podman reclaim evidence - #150
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughPodman reclaim 계획을 개인정보 보호형 증거 계약으로 투영합니다. 읽기 전용 Tauri 명령과 프런트엔드 검증을 추가합니다. 후보별 검토 경계를 강화하고, Cleanup 화면에 증거 조회와 승인된 dangling 이미지 정리를 통합합니다. ChangesPodman 증거 조회
Estimated code review effort: 4 (Complex) | ~60 minutes Merge Risk: 🟡 Moderate · up to The PR adds a privacy-safe, read-only Podman evidence view, but the older desktop route can still expose sensitive machine and filesystem details, so the new privacy boundary is not exclusive. The image-cleanup confirmation also presents the approval phrase only as placeholder text, and parallel Podman views may drift. These bounded security and UX-safety risks require owner follow-up or explicit acceptance before merge. Sequence Diagram(s)sequenceDiagram
participant Cleanup
participant PodmanEvidence
participant Tauri
participant Podman
Cleanup->>PodmanEvidence: load evidence
PodmanEvidence->>Tauri: invoke inspect_podman_desktop_evidence
Tauri->>Podman: run read-only probe
Podman-->>Tauri: reclaim plan
Tauri-->>PodmanEvidence: privacy-safe evidence
PodmanEvidence-->>Cleanup: validated status and review labels
Cleanup->>Tauri: execute approved dangling-image cleanup
Tauri-->>Cleanup: cleanup result
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 96.72% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 61 functions across 18 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 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 |
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head53b7d53481f3375bd58013bc181ceb9b6971c07d. -
Head SHA:
53b7d53481f3375bd58013bc181ceb9b6971c07d -
Workflow run: 31357301155
-
Workflow attempt: 1
Coverage evidence
Coverage Decision
- Result: FAIL
- Test evidence: not proven passing
- Docstring evidence: not proven passing when configured
- Failure count: 3
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (18 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (18 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs: podman-desktop-evidence.md"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: podman-desktop-evidence.md"]
R2 --> V2["docs review"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage Decision
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (18 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (18 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs: podman-desktop-evidence.md"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: podman-desktop-evidence.md"]
R2 --> V2["docs review"]
|
| if (assessment_status === "unverified" && physically_reclaimable_bytes !== null) { | ||
| throw new Error("unverified-physical-reclaim-claim"); | ||
| } |
There was a problem hiding this comment.
📝 Info: Dead always-true assessment-status guard
assessmentStatus throws unless the value equals unverified, so the subsequent assessment_status === "unverified" test in parsePodmanDesktopEvidence is always true and its false branch is unreachable. No runtime effect.
Was this helpful? React with 👍 or 👎 to provide feedback.
|
Supersession audit at exact heads:
#150 is not fully superseded, so I am leaving it open. The current stack covers runtime-agnostic orphan audit/prune (#267) and Podman native storage repair/trim receipts (#282), but it does not contain #150's distinct read-only desktop contract:
CodeGraph confirms #150's consumer path is Exact integration gap before #150 could be closed: port the projection + dedicated IPC schema + customer consumer/contracts into the lowest active runtime-orphan stack (#267), then carry it normally into #282 and prove API/consumer parity. No Podman/container/volume mutation was performed during this audit. |
|
Superseded by the lower active container-reclaim stack in #267 at exact head Parity evidence:
The only #150-only frontend helper mapped internal recommended-action kinds for the old detailed plan surface; it has no independent consumer after that internal surface was removed, so it is intentionally not carried forward. PR #282 still points to the predecessor #267 base and must normally merge the latest #267 head to inherit this contract. |
Purpose
Surface privacy-safe Podman reclaim evidence in the desktop without turning logical reclaim candidates into mutation authority or verified host-physical-reclaim claims. This remains the canonical Podman desktop evidence owner.
Exact current state
0ceca3eb4d4299c689539290de1373cc45f233dfmain@79067c1160ddedf7fc962cbf8067ce7e83c4564amain -> head: ahead-only, 86 commits ahead / 0 behind, merge base exactly current main33142199026— SUCCESS33142199003— SUCCESS33142198991— SUCCESS33142199001— FAILURE in the shared release-artifact verifier dependencyCurrent repair
The destructive dangling-image confirmation field no longer exposes
dangling_prune_approval_phraseas its input placeholder. The required phrase is shown outside the input and the input itself carries only generic guidance, preserving deliberate re-entry while retaining the existing exact phrase/rationale gate.Podman prune failure feedback also remains privacy-safe but actionable: only exact production-owned stable codes receive bounded recovery guidance; unknown, path-bearing, socket-bearing, or otherwise dynamic text falls back to a non-reflecting generic message.
Product/security/accessibility boundary
physically_reclaimable_bytesremains unknown unless a future versioned before/after proof establishes itDependency boundary
Release
33142199001is not a Podman desktop source failure. The shared release artifact verifier remains canonically owned by #264. Do not add a Podman-local verifier workaround or duplicate verifier implementation.Repository-wide exact owned-production coverage remains independently owned by Draft #156 and is materially below the required exact 100%. Feature-local Test/Security/SAST success does not substitute for that global gate.
Required before merge
Ready-for-review is not merge authorization. Merge only after one unchanged exact integration head satisfies the shared Release verifier, repository-wide exact non-vacuous 100% owned-production coverage, every applicable central required workflow, zero valid unresolved findings, fresh ancestry/mergeability, package/SBOM/provenance requirements, and the active ruleset's qualifying approval requirements. Pending, failed, stale, predecessor, synthetic, configuration-only, author-only, no-source, or dependency-bypassed evidence is non-passing.