Repository navigation
Stabilize startup and Block Detail loading - #65
Merged
Merged
Conversation
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 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.
App launch could switch between native opening progress, provisional account screens, and a Timeline placeholder before the first feed completed. Startup now keeps one loading surface, shows its progress only after 100 ms, and admits the Timeline when the current graph and initial feed are ready (including an empty feed). Required sign-in, graph selection, unlock and explicit Retry remain immediately available. The public startup owner fences stale account/timer completions and foreground transitions; native SwiftUI owns the shared first-visible-frame clock and presentation. Attachment work does not delay initial body publication.
Opening Block Detail could publish the root and direct children before materialized descendants arrived, causing text and siblings to move during the initial read. This stages the bounded initial non-asset body before publication, delays its body-only progress indicator by 100 ms, and keeps native navigation and Capture available. Local attachment opening now says Loading; only typed remote transfer availability says Downloading.
The initial owner retains the draft and uses the existing visible-demand limits: at most 10 levels, 128 items per page, the conservative 384-item materialization budget and 128 attempts. Continuations remain explicit Load more/Retry. Initial descendant failures have explicit Retry; session, route and graph guards fence late completions. Shared refreshes are charged cumulatively to the hidden initial owner, including the root; a pending page whose reservation is consumed is fenced and remains an explicit continuation. Known root/descendant deletions apply during staging; Undo preserves spent budgets and detached draft identity while admitting fresh read generations. Asset acquisition stays independent of body publication, preserves known image slots and displayed leases, and retains separate queued/offline/upload/unlock labels. No full-graph pre-read, additional download, refresh or automatic retry is introduced.
Validation:
dune build @all app/native_embed.exe.opasses. Full forceddune runtestwith the reused external build directory has one existingtest_asset_cachefailure (repository root not found). Its sealed public-interface check passes separately from the real Git worktree using a temporary ignored cache link removed infinally; this is disclosed rather than counted as an all-green full run.7ccbfcd: 5/5 passed, zero failure/skip (fast/slow, Retry, 3/10 levels, 128-page continuation). These are existing synthetic smoke cases; refresh/deletion interleavings are verified by public-owner regressions, without duplicate formal UI coverage. Previous-head0313b98fast/nested smoke: 2/2 passed, zero failure/skip. New final-head584cb36fast-body smoke: 1/1 passed, zero failure/skip, tracked separately; the changed exhausted-budget Undo path is verified through public-owner regressions and the original independent controls. Historical evidence: prior bounded-body run 9/9, attachment-phase run 3/3, zero failures/skips. Checks cover fast/slow initial reads, failure/Retry, Back and rapid target changes, 3/10-level initial bodies, 128-item paging/continuations, assets and stable slots. The phase run observes local Loading, Downloading → Loading → File, and missing → explicit Retry → Loading → File, with body, navigation and Capture retained.Evidence retained outside Git in ChatGPT Library:
libfile_04aa684bc4d881918a5d93d77d8d051b(9/9 native run).libfile_b9828558d028819188598050c7b2e128(3/3 native run; source hashes and complete screenshot map).libfile_00ee66d770a48191b991a5397367e6d8.libfile_848bed181ae88191b518b7e5fcbc1d97.libfile_69dab9569d3c819191861ab40ed4ab99.The PR includes
0724522,0d22b4f,0023dc9, and review-fix commits7ccbfcd/0313b98/584cb36; production changes are limited to Detail/application route ownership and attachment presentation. No Swift, protectedspec/, Dune or Timeline/Favorites production change is included.Independent review identified two P2 staging interleavings at
0023dc9; the original report/probe/RED logs are preserved outside Git. The fix adds only staging budget/deletion ownership and public-owner regressions (four files), retaining all prior commits. Source/build/CMI SHA256 identity for re-review is retained instaging-undo-settle/public-source-identity.json(including immutable public artifact snapshots).Incremental independent review at
0313b98found exhausted-budget root Undo left Ready data in Loading.584cb36immediately runs the existing initial settlement after restoring the owner, retaining spent counters, late-event fencing and detached draft; it changes only that production branch plus public regressions. The reviewer's original controls source passes all eleven groups when linked to the new immutable app.cmxa/app.a and public CMI snapshots.Final frozen head
584cb363fc1d9d408a1d568c84ec08c32fcd1665: exact-head Journal CI run 38185801279 completed successfully on its first attempt. Build all/native embed, full regression suite and evidence upload passed; WIP also passed. Final-head synthetic fast-body smoke is 1/1, separate from historical 0313 2/2 and 7cc 5/5. Public-owner regressions and the unmodified independent controls verify the exhausted-budget Undo fix.Startup validation:
Native blocker controls: old production584cb 21/21; current18/21; restored Fill17/21 (reverted); forced-root diagnostic21/21 (not adopted); product-factory replay19/21; simple-factory replay19/21; standalone LUI-only19/21. Exact native source38551254511c59d9141a8f9b276c78783cbac044. The standalone input SHA256 is ac2483237ef5ef1197cdcebb7f68793de1a825ebee451a8d8915585cdf12fd6b.