Repository navigation
Conversation
Enable the release branch test trigger and repair the inert recovery provenance fixture exposed by that run. No production app code changes.
(cherry picked from commit f225c19)
This was referenced Oct 22, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An upgraded account can retain automatic-backup consent without a protected namespace, while Keeper's local Version History can remain stale after a store update. This separate follow-up adds guarded backup retry/readable results and the owner-requested Version History correction.
Refs #7066 — keep it open. State: NEEDS_LOCAL. The owner calls this the 5.1 patch; that is a scope label, not an assigned app release version. The original phone's exact failure causes and corrected behavior remain unconfirmed.
Baseline and patch-only review
77b72da29ac5f2cdf3f51c9a0e9f3fd1c2af7238from R5: safe key deletion and startup fixes on submitted 2.6.4 source (draft) #7058. It remains an open draft/NEEDS_LOCAL checkpoint; public 2.6.5 release is not established.1d8a86a7462d935cbd0e28b857934b5718c152fc. Package/native inputs remain 2.6.4 / Android627 / iOS620.sprintper AGENTS.md; ordinary PR diff includes inherited R4/R5 history.Changes and demonstrated defects
Owner device evidence
The owner confirms the iPhone is running 2.6.4 after the App Store update, while Keeper's in-app Version History still shows 2.6.3. Accept that installed version as owner-confirmed evidence; no further phone version check is requested. The stale history correction is included in this 5.1 follow-up.
The original backup request-stage cause and confirmation of corrected backup behavior remain separate acceptance questions. No reset, reinstall, restore-over, backup deletion, private recovery export or raw-log collection is requested on the working phone.
Actual Cloud checks
Node22.23.3 / Yarn1.22.22; frozen dependencies and six patches. Final package/lock/Pod/native inputs unchanged; version consistency PASS.
Retained evidence from first patch
3c5f8d8ace5c211ed78264b1a460c4e06e060ceb, not rerun after history addition: actual current-Relay disposable Mongo protocol/legacy 45 PASS, readiness 7 PASS; gate/protected-runner contracts 14 PASS; Android tooling 31 PASS; release Node28/Python7 PASS. Ruby-dependent guards FAIL30pass/11missing-Ruby failures; combined release stops at missing Ruby (exit127). Those prerequisites remain unavailable. Backend-only passes do not establish the upgraded app/phone.Current Relay production receipt selects
29597b27eeeb299205bf7d0555db0a90c38cc4bewith 14 hosted checks on 21 October, using a fresh namespace. No production account/backend operation occurred in this task. The supplemental opt-in witness pins current Relay without changing historical proof pins.Hosted checks for this exact head:
src/services/wallets/operations/index.ts:110–111, previously reported as high severity. The module is byte-identical to R5 and this patch. Security review remains required; no dismissal, waiver or exploitability conclusion.keeper/local-validationis FAIL/NEEDS_LOCAL, awaiting exact-head native evidence.The automatic Android diagnostic signing run is CANCELLED: APK/AAB build/sign SKIPPED, artifacts 0. No other workstream/workflow was changed. No merge, signing, distribution, deployment or publication occurred.
Cloud versus native acceptance — clarification
The
NEEDS_LOCALlabel comes from AGENTS.md and the current repository gate. It records missing IOS/ANDROID/HARDWARE acceptance; it is not a claim that the code fix, ordinary tests, Realm or Ruby require a personal Mac.The exact-head hosted Tests job has now passed 553 Jest + 502 recovery, including real encrypted Realm, and the Ruby/release checks. Those results supersede the earlier worker-specific prerequisite gaps above. The separate legacy fixture matrix still fails; the current private-backend v3 upgrade witness remains unrun and belongs in Cloud.
iOS native acceptance needs a macOS/Xcode runtime, which can be hosted. Android app/emulator acceptance can run on Linux Cloud. An existing historical hosted-native workflow demonstrated both platforms, but it is absent from this patch/default branch, is PR-only, and tested a different SHA with fresh-startup smoke only; no result transfers. Its iOS simulator build disables signing; its Android path uses public debug-key signing, so the owner's no-signing boundary must be preserved before running that path. No signing, distribution, infrastructure integration or workflow dispatch was performed for this clarification.
The current backend is private and the app repo is public. A current-v3 Cloud lane must use authorized private checkout access without copying private source into this public repository or weakening protocol checks. Only the final non-destructive confirmation on the owner's existing iPhone inherently needs that phone.
Codex local handoff
State: NEEDS_LOCAL
PR: #7067
Base: sprint
Head branch: codex/7066-protected-backup-correction
Head commit: c1c4b80
Goal and acceptance criteria: complete disposable existing-account protected-backup/recovery/deletion acceptance and the owner-added stale Version History correction, then obtain non-destructive confirmation on the original phone. Keep #7066 open.
Changes made: guarded backup retry, truthful absence guidance, bounded session diagnostics, local backup UI corrections; account-specific upgrade/history reconciliation, preservation of recovery history and separate native installed-version label. No release version assigned.
Cloud checks: exact-head hosted Tests PASS553Jest/502recovery with genuine Realm and Ruby/release checks; history Node27/Jest9/UI2 PASS; backup targeted70/UI12 PASS; lint4450/882 and TypeScript943 inherited FAIL, zero added; version/input/diff PASS. Genuine upgrade proof BLOCKED; native checks NOT RUN. Prior backend45+7/tooling/contracts/release results retain their recorded prior-source scope. Hosted public-backend PASS; legacy genuine matrix FAIL2pass/293fail; exact-head CodeQL security FAIL on the inherited finding, review required.
Required local checks: IOS, ANDROID, HARDWARE
Local checks requested: remaining native app acceptance only, on this exact SHA. Prefer hosted macOS/Xcode and disposable Android cloud emulators where available; the state label does not require the owner's personal Mac. Ordinary Realm/Ruby checks are already complete in hosted Cloud; the pinned-current-v3 upgrade witness remains Cloud integration work, not a Mac prerequisite. Native execution must preserve the no-signing/distribution boundary. On disposable accounts execute docs/7066-protected-backup-correction.md: saved consent/legacy copies, never-enrolled and interrupted enrollment, read-only recheck, explicit repair/full authenticated readback, cold launch, metadata update, complete recovery into another disposable installation, disable retention, protected-only Delete/fresh tombstone/recreation, uncertainty and A→B→A binding. For history, upgrade an older account after another account advanced the shared version; test empty/stale/same-build and build-only history, failed migration, preserved Recovered Wallet row/date and repeated launches without duplicates. Check installed native version/build independently of historical rows. Validate small width/larger text and affected backup/history UI on both platforms. HARDWARE includes the original iPhone only after an approved corrected build: normal navigation/reopen/unlock and Back Up Now/Check Again and reopen/recheck; never reset/uninstall/restore over/delete backups/export private data on that phone.
Risks / known gaps: Owner confirms installed iPhone2.6.4 with stale Version History2.6.3; no further version check is requested. The original backup request cause and corrected behavior remain unconfirmed. Real upgraded-account integration, IOS/ANDROID/HARDWARE remain unrun; The Bitcoin Keeper worker's Realm/Ruby restrictions were environment-specific; hosted Cloud has passed those checks. Existing lint/type findings and the inherited high CodeQL alert remain for review. Implementation verification, native acceptance and original-phone confirmation are separate. No release/sign/distribution/deploy approval.