fix(config): track recovery backups without suppressing recovery - #4572
fix(config): track recovery backups without suppressing recovery#4572luvs01 wants to merge 1 commit into
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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 |
|
⏳ DRAFT
What to do
Review readiness checklist
2/4 boxes ticked. This pull request was already a draft. Its draft status will be preserved after every issue above is resolved. |
|
The current hygiene failure is unsponsored_surface for src/oauth/store.ts. The change there registers the recovery copy after it is created; registration exceptions emit a generic warning and leave the copy intact. It does not change credential selection, login/logout, or migration persistence. The independent code review and 54 focused tests cover actual owned cleanup, unowned recovery, registration failure, and pre-existing backup preservation. The import-connected local run reached its 900-second deadline. Exact-head cross-platform CI has now finished; the PR body records the passing jobs and the unrelated Windows fixture-failure exceptions. The author readiness checklist is complete, while maintainer security review and sponsorship remain pending. Please review this restricted-surface change and apply maintainer-sponsored if approved. |
리뷰 · 우선순위 52 / 80지금 테스트도 핵심을 잡았습니다. 등록 예외 시에도 백업이 살아 있는지, owned/unowned 홈에서 uninstall이 백업을 지울지 말지, 이미 있던 미등록 OAuth 백업은 소급 청구하지 않는지까지 있습니다. structure 문서에 백업 ownership 계약을 적어 둔 것도 후속 기여자에게 도움이 됩니다. 다만 지금 게이트 상태는 머지 준비가 아닙니다. PR이 draft이고, 라벨
메인테이너의 판단이 필요한 지점
너의 추천 이 댓글은 grok-bot이 작성했습니다 |
6ab2a39 to
2304ed4
Compare
Current author follow-up
Published head
2304ed4ef3a54dda8a3c99396fed4dbced5af2b3is based on the fixeddevsnapshot43f4450a538d729f353144c029aa97de1c4f2483. This supersedes older head/behind/CI status statements below; older verification remains historical evidence. Required conflicts were resolved without dropping upstream contracts. No repeated tip chasing was performed.bun run typecheck: passed.bun run structure:check: passed.bun run privacy:scan: passed.git diff --check: passed.bun test tests/config/config-ownership-uninstall.test.ts tests/oauth/oauth-store-multi.test.ts: passed (54 pass; 0 fail; 200 expect() calls).Exact-head hosted verification is not yet complete; no older-head matrix is substituted.
Maintainer sponsorship, where required, remains a separate hold. Existing resolved review findings were not reopened.
Summary
New recovery copies were missing from the uninstall manifest, so an owned installation could leave invalid-config backups and the OAuth downgrade backup behind after uninstall.
Register those copies after creation. Ownership registration stays best-effort: legacy/shared homes intentionally refuse ownership, and a metadata-write failure must not suppress or invalidate an already-created recovery copy. Existing OAuth downgrade backups remain unchanged and are not retroactively claimed.
Unregistered copies still produce the existing partial/refused cleanup outcome. Copying and manifest registration are not an atomic transaction, so a process interruption between them can still leave a residual file.
Verification
6ab2a394009449e4b3ad7ec0b113b48c96aa5417. Linux 4/4, macOS 2/2, all static gates, packaging/smoke/keyring jobs, and Windows 2/3/5/6 passed. Windows 1/6 and 4/6 failed; this is not a fully green matrix.EPERMremoving the quota-prime test directory in teardown, rather than a failed quota assertion. Config/OAuth production files and that quota fixture are byte-identical between the clean baseline worktree and the pre-PR base; the selected baseline quota test passes locally, so the hosted teardown locking condition remains unreproduced.maintainer-sponsoredremain required forsrc/oauth/store.ts; the existing sponsorship request is still pending.Checklist
Review readiness checklist