Skip to content

fix: bound duplicate workflow failure feedback - #197

Draft
seonghobae wants to merge 7 commits into
mainfrom
fix/duplicates-error-privacy-v1
Draft

fix: bound duplicate workflow failure feedback#197
seonghobae wants to merge 7 commits into
mainfrom
fix/duplicates-error-privacy-v1

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Purpose

Prevent arbitrary thrown backend exception text, per-file backend failure detail, and stale prior duplicate evidence from crossing the Duplicates desktop boundary. Every blocked or failed action now tells the customer what to check next while deliberately selected duplicate paths, cleanup authority, and per-result success/failure semantics remain intact.

Exact current state

  • Exact source head: d16610533b850bf95b8860d4e2b27aeefbd1c94a.
  • Live protected main: be418bac9bfbdc8aa41b1a698713833e3dbccfdc.
  • The PR is open, Ready for review, mergeable, and based directly on protected main.
  • Current semantic delta is exactly src/lib/Duplicates.svelte plus src/lib/duplicatesErrorPrivacyContract.test.ts.
  • The sole formal review is a CodeRabbit COMMENTED review on predecessor head 67031499bf665fbded9586ae867aa6c5e473d3d0; its valid raw-r.error finding is addressed and its thread is resolved/outdated. It is not approval and predecessor review evidence does not transfer.

Test-first privacy, freshness, and recovery repair

  • RED head b1e19b6cb437ed6ed7b31cd65b80eaa6b625b78c first required thrown backend errors to stop crossing the interface and required an accessible dynamic failure region.
  • Initial implementations replaced String(e) projections with bounded messages and removed raw partial-failure r.error rendering while preserving the selected path needed to identify a failed item.
  • Review then found three buyer-visible gaps: bounded messages still lacked recovery guidance, a replacement duplicate scan left the previous groups/selections/verdicts visible until completion or after failure, and the invalid “whole group selected” guard used a modal alert() instead of the existing accessible failure region.
  • Test-only commit c686f0825c7471fa11603a0d3b7ac72d03e41428 requires action-oriented scan/delete/partial-failure copy, rejects unused catch (e) and alert(), requires stale groups/selections/verdicts/results to be cleared before findDuplicateFiles, preserves selected paths, and verifies the existing discovery/cleanup authority calls.
  • Current implementation d16610533b850bf95b8860d4e2b27aeefbd1c94a changes only Duplicates.svelte: replacement discovery clears prior duplicate evidence before the backend call; scan and cleanup failures direct the customer to verify the scan root, open-file state, and trash permissions before restarting at the correct stage; the all-selected safety guard reports through role="alert"; successful cleanup tells the customer how to restore from Trash; and partial failures keep the selected path but expose no backend detail.

Duplicate discovery, grouping, default selection, exact group-preservation guard, confirmation, cleanup calls, model-verdict advisory behavior, per-result ok semantics, visible customer-selected paths, and filesystem mutation authority remain unchanged.

Exact-head validation

For exact head d16610533b850bf95b8860d4e2b27aeefbd1c94a:

  • Release 31885292141 — in progress;
  • Test 31885292122 — queued;
  • Security Scan 31885292168 — queued;
  • SAST Semgrep 31885292124 — queued.

Queued or in-progress evidence is not passing, and predecessor-head success does not transfer. PR-event publication or attestation helpers that are conditionally skipped are not represented as passing release-publication or provenance evidence.

Scope / non-duplication

This line owns only the Duplicates desktop failure/freshness boundary and its focused contract. It does not change backend cleanup authority or import generic-cleanup #174, repository-wide exact coverage #156, canonical documentation #149, or another active product line.

Remaining integration blockers

  • The live organization ruleset requires one independent approving review, approval after the last push, and review-thread resolution; the current head has no qualifying approval.
  • Repository-wide exact 100% owned-production region/statement-equivalent, branch, function, and line coverage remains materially unsatisfied on canonical owner ci: require exact-head production coverage evidence #156.
  • Ready-for-review status is not merge authorization.

Required before merge

Do not merge unless the unchanged exact head satisfies every applicable live required workflow and current finding, every review thread is resolved, a qualifying independent approval covers the last push/current head, fresh protected-main ancestry remains current, the live review ruleset is satisfied, and repository-wide exact coverage is satisfied without exclusions or threshold weakening. Pending, queued, skipped-required, neutral-required, failed, stale, predecessor, synthetic, diagnostic-only, status-only, model-only, rate-limited, no-source scanner, or infrastructure-only evidence is not passing.


Open in Devin Review

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c7e50167-8ea6-4161-a16c-e2a1ea8fe8de

📥 Commits

Reviewing files that changed from the base of the PR and between 6703149 and d1fa8db.

📒 Files selected for processing (1)
  • src/lib/Duplicates.svelte
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/Duplicates.svelte

📝 Walkthrough

Walkthrough

중복 파일 검색 및 삭제 실패 시 원시 예외 문자열 대신 고정된 한국어 메시지를 표시합니다. 오류 메시지에 role="alert"을 추가하고, 이 동작을 검증하는 Vitest 계약 테스트를 추가했습니다.

Changes

중복 파일 오류 처리

Layer / File(s) Summary
고정 오류 메시지와 알림 표시
src/lib/Duplicates.svelte, src/lib/duplicatesErrorPrivacyContract.test.ts
검색 및 삭제 실패 처리에서 원시 예외 문자열을 제거하고 고정된 한국어 오류 메시지를 사용합니다. 개별 파일 삭제 실패 항목에도 고정된 메시지를 표시합니다. 오류 메시지에 role="alert"을 추가합니다. 테스트는 예외 원문과 오류 필드의 직접 렌더링 금지, 지정된 실패 메시지, role="alert" 사용을 검증합니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to d1fa8

This localized change bounds duplicate-operation failure messages and adds alert semantics without supplied evidence of a current correctness, security, or availability issue; no actionable merge-blocking risk remains beyond normal required checks.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 중복 파일 작업의 실패 피드백을 제한하는 주요 변경 사항을 간결하게 설명합니다.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/duplicates-error-privacy-v1

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae marked this pull request as ready for review August 15, 2026 09:03
coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@seonghobae have exceeded the limit for the number of chat messages per hour. Please wait 22 minutes and 3 seconds before sending another message.

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: d16610533b850bf95b8860d4e2b27aeefbd1c94a
  • Workflow run: 32210262674
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (exit 0)

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Changed file (2 files)"]
  S1 --> I1["repository behavior"]
  I1 --> R1["Review risk: Changed file (2 files)"]
  R1 --> V1["required checks"]
Loading

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread src/lib/Duplicates.svelte
@opencode-agent opencode-agent Bot added area: ci-cd CI, GitHub Actions, checks, release, or supply chain priority: medium Normal-priority or P2 work status: blocked Blocked by conflict, dependency, or required prerequisite type: bug Defect or incorrect behavior labels Aug 22, 2026
@seonghobae
seonghobae enabled auto-merge (squash) August 24, 2026 01:03
@seonghobae
seonghobae marked this pull request as draft August 24, 2026 06:10
auto-merge was automatically disabled August 24, 2026 06:10

Pull request was converted to draft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci-cd CI, GitHub Actions, checks, release, or supply chain priority: medium Normal-priority or P2 work status: blocked Blocked by conflict, dependency, or required prerequisite type: bug Defect or incorrect behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant