Keep written audio drafts bound to their original question - #2882
Merged
Conversation
Owner
Author
|
Independent bounded Luna review is CLEAN: written drafts retain source identity/evidence, stale receipts do not rebind them, and server question validation precedes staging or idempotent return. Full local proof and residual limits are in the PR body. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Sep 10, 2026
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.
Unfinished written audio drafts now retain their recording identity and original question evidence. If a question edit removes or replaces the matching receipt, or another client confirms it, the draft stays visible for copying and explicit discard instead of becoming hidden or binding to another recording. Failed reloads disable Save/Confirm. The server also resolves the current question and checks its hash before any written-version staging or identical-text retry.
Continues #2808 and addresses tracked hosted comments3974815071,3974815077 and3974815082 from #2866; stacked on that integration. Original bytes and historical written representations remain readable, and confirmation stays explicit.
Verification: full backend 9,186 passed/34 existing skips; full frontend 6,381 passed/3 existing skips across 412 files; thirteen focused component and nine real API tests; typecheck/production build, scoped ESLint, documentation links/governance/diff pass. Two Chromium journeys pass in 38.7 seconds: actual shared-question edit with a private written draft, copyable retention/discard, original-library discovery/playback, lost-upload receipt recovery, confirmation, four experiences and mobile checks. One bounded independent Luna review is CLEAN.
Temporary services are stopped; only synthetic databases were used. Unuploaded drafts still require the browser page to remain open. Automatic transcription, provider/physical-device acceptance, production release and existing OUTSTANDING_TASKS.md human decisions remain separate. Preserve the integration base branch and qualify against main after it lands.