fix: surface bounded scan and navigation failures - #202
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📝 WalkthroughWalkthrough페이지는 루트 조회, 스캔, 폴더 탐색 및 경로 이동의 실패를 화면 내 한국어 오류 메시지로 표시합니다. 스캔 결과는 노드와 상위 파일을 병렬로 조회합니다. 관련 오류 표시와 API 호출 계약 테스트를 추가했습니다. Changes페이지 오류 피드백
Estimated code review effort: 3 (Moderate) | ~20 minutes Mergeability Score: 🟡 Moderate · up to A new scan can still be overwritten by an older navigation request, causing users to see stale folder results or breadcrumbs from the previous location. This localized correctness issue should be fixed or explicitly accepted before merge. Sequence Diagram(s)sequenceDiagram
participant Browser as 브라우저
participant Page as +page.svelte
participant API as 조회·스캔 API
Browser->>Page: 스캔 또는 탐색 요청
Page->>API: 루트·스캔·노드·상위 파일 조회
API-->>Page: 결과 또는 오류
Page->>Page: operationError 갱신
Page-->>Browser: 오류 메시지 또는 결과 표시
🚥 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 |
|
@coderabbitai review |
|
|
@coderabbitai review Please re-review the unchanged current exact head |
|
|
OpenCode Review Overview
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (3 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (3 files)"]
R1 --> V1["required checks"]
|
|
@opencode-agent review Re-review exact current head |
Dismissing: this REQUEST_CHANGES (removed failure diagnostics) was addressed by commit 669f71c 'fix: retain bounded scan diagnostics', pushed after this review, which adds console.error(...) bounded diagnostics to every catch path (scan(), onScanDone inner catch, open(), jump(), and the onMount catches) while keeping the bounded user-facing operationError text. Verified: current head's catch blocks contain console.error calls and coverage-evidence passes. Both prior review threads are resolved. Re-request review to re-validate.
|
The bounded scan/navigation failure-feedback slice is ready for review at exact head |
Purpose
Prevent arbitrary backend exception text from crossing the primary disk-scan desktop boundary and make scan-result/navigation failures visible to users instead of console-only, without changing scan, cancellation, node traversal, top-file, filesystem-read, or cleanup authority.
Exact current state — 2026-08-24 KST
1d005586b270ca1fcad445970cf44bf5e7268425onfix/scan-navigation-error-feedback-v1.main:5f7c7ae38adafd1f3b3640016a8333767c89d78a.main -> headcomparison isahead, 9 commits ahead / 0 behind, with merge base equal to live main.src/routes/+page.svelte,src/routes/pageErrorFeedbackContract.test.ts, andsrc/routes/postScanGenerationContract.test.ts.Current UI / operability contract
src/routes/+page.svelteprojects root-discovery, scan-event, scan-start, post-scan-load, and navigation failures through bounded path-freeoperationErrormessages rendered in onerole="alert"region.disk root load failed,post-scan result load failed,scan event registration failed,scan start failed,folder navigation failed) without restoring arbitrary exception text to UI or console.scan()incrementsnavSeqbefore state reset so in-flight navigation responses cannot repopulate stale node/crumb state after a new scan begins.onScanDonecaptures the current generation before its async result load and rejects publication after a newer scan/navigation generation appears.scan(),open(), andjump()clear stale feedback before issuing their requests; navigation keeps sequence-based stale-response rejection.pageErrorFeedbackContract.test.tsscopes assertions toonMount,scan,open, andjump, binds the bounded diagnostics/messages to the correct handler, and requires stale feedback clearing before each new request.Review disposition
The predecessor CodeRabbit navigation-race finding and predecessor OpenCode diagnostic-loss finding are implemented and their source threads are resolved. Two exact-head Devin comments from 2026-08-22 were informational rather than defects and are now resolved after re-reading the exact blob:
onScanDonescanning = false/operationError = ""reset executes synchronously before the callback reaches its firstawait, so a newly started scan cannot interleave before those writes and then be overwritten by them later; all post-awaitresult publication is generation-guarded; andThere are now zero unresolved inline review threads. Formal reviews remain advisory/comment-only or predecessor-head evidence; no qualifying independent human approval is claimed.
Exact-head workflow evidence
On unchanged exact head
1d005586b270ca1fcad445970cf44bf5e7268425:32585786241— terminal-success;32585786232— terminal-success;32585786243— terminal-success;32585786222— terminal-success.Conditional PR-inapplicable publication/attestation jobs are not represented as passing evidence. Repository-native success is also not a substitute for then-live central coverage/review/security requirements.
Governance / shared-owner boundary
Fresh live
mainstill reportsprotected: truewhile its effective branch-protection payload isenabled: false, required-status-check enforcement isoff, and required contexts/checks are empty. Governance restoration remains tracked by #248; this PR must not infer merge authority from the protection badge or mechanical mergeability.Repository-wide exact 100% owned-production region/statement-equivalent, branch, function, and line coverage remains owned by Draft #156 and is not satisfied by this feature-local evidence. This lane owns only primary scan/navigation feedback;
Cleanup.svelte, TopFiles accessibility #203, Treemap accessibility #196, canonical documentation #149, and cleanup/cloud/provider authority remain outside scope.Required before merge
Do not merge unless one unchanged latest head remains based on then-current
main, effective branch/ruleset enforcement is actually live, every applicable CI/security/coverage/package/review gate is terminal-success, every valid current finding/thread is resolved, and any qualifying independent latest-push approval required by policy is present. Pending, queued, skipped-required, neutral-required, failed, stale, predecessor, synthetic, diagnostic-only, status-only, model-only, author-only, rate-limited, no-source-scanner, or infrastructure-only evidence is non-passing.