Repository navigation
Android review sheet: size guard + name every excluded stream (#570 parity) - #624
Merged
Merged
Conversation
…arity) Port the two defense-in-depth pieces of the iOS #570 hang fix that Android's ReportReviewGate was missing: 1. A ~1 MiB per-entry size guard. Android excluded the large streams by NAME only (raw-capture + the screenshot), so a pathologically large report.txt — or any future attached stream — would still be inlined into one Compose Text, the same class of layout choke #570 hardened iOS against. Now ANY entry over MAX_INLINE_BYTES is excluded regardless of name. 2. Name EVERY excluded stream in the "attached (not shown above)" note. Android previously listed only binaries, so raw-capture was excluded from the inline preview but never named — the review was slightly less honest than iOS. Now raw-capture + any oversized entry are named, so the user sees the whole bundle. Mirrors Strand/System/ReportReviewGate.swift (notShownInline + maxInlineBytes). Android-only; no iOS change. Three tests: raw-capture excluded-but-named, an oversized entry caught by the guard and named, and normal small files still shown in full with no note. compileFullDebugKotlin + ReportReviewGateTest (6/6) + i18n audit pass locally.
DX23876
pushed a commit
to DX23876/noop
that referenced
this pull request
Jul 22, 2026
…#570 parity) (ryanbr#624) Port the two defense-in-depth pieces of the iOS ryanbr#570 hang fix that Android's ReportReviewGate was missing: 1. A ~1 MiB per-entry size guard. Android excluded the large streams by NAME only (raw-capture + the screenshot), so a pathologically large report.txt — or any future attached stream — would still be inlined into one Compose Text, the same class of layout choke ryanbr#570 hardened iOS against. Now ANY entry over MAX_INLINE_BYTES is excluded regardless of name. 2. Name EVERY excluded stream in the "attached (not shown above)" note. Android previously listed only binaries, so raw-capture was excluded from the inline preview but never named — the review was slightly less honest than iOS. Now raw-capture + any oversized entry are named, so the user sees the whole bundle. Mirrors Strand/System/ReportReviewGate.swift (notShownInline + maxInlineBytes). Android-only; no iOS change. Three tests: raw-capture excluded-but-named, an oversized entry caught by the guard and named, and normal small files still shown in full with no note. compileFullDebugKotlin + ReportReviewGateTest (6/6) + i18n audit pass locally.
simoncad7
pushed a commit
to simoncad7/noop
that referenced
this pull request
Aug 17, 2026
…#570 parity) (ryanbr#624) Port the two defense-in-depth pieces of the iOS ryanbr#570 hang fix that Android's ReportReviewGate was missing: 1. A ~1 MiB per-entry size guard. Android excluded the large streams by NAME only (raw-capture + the screenshot), so a pathologically large report.txt — or any future attached stream — would still be inlined into one Compose Text, the same class of layout choke ryanbr#570 hardened iOS against. Now ANY entry over MAX_INLINE_BYTES is excluded regardless of name. 2. Name EVERY excluded stream in the "attached (not shown above)" note. Android previously listed only binaries, so raw-capture was excluded from the inline preview but never named — the review was slightly less honest than iOS. Now raw-capture + any oversized entry are named, so the user sees the whole bundle. Mirrors Strand/System/ReportReviewGate.swift (notShownInline + maxInlineBytes). Android-only; no iOS change. Three tests: raw-capture excluded-but-named, an oversized entry caught by the guard and named, and normal small files still shown in full with no note. compileFullDebugKotlin + ReportReviewGateTest (6/6) + i18n audit pass locally.
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.
Ports to Android the two defense-in-depth pieces of the iOS #570 review-sheet hang fix that the Kotlin
ReportReviewGatewas missing. Android already excludedraw-capturefrom the inline preview (it mirrored the core fix), but it lacked:report.txt— or any future attached stream — would still be inlined into one ComposeText, the same class of layout choke Test Centre: attach Oura ring diagnostics to the report bundle, and guard the review sheet against large streams #570 hardened iOS against. Now ANY entry overMAX_INLINE_BYTESis excluded regardless of name.raw-capturewas excluded from the preview but never named — the review was slightly less honest than iOS. Nowraw-capture+ any oversized entry are named, so the user sees the whole bundle.Mirrors
Strand/System/ReportReviewGate.swift(notShownInline+maxInlineBytes).Not applicable to Android (context from the #570/#621 discussion): the Oura sidecar attach and the field-aware
deviceIdredaction (#621) — Android doesn't attach the Oura sidecars, and its device ids are BLE MACs (already masked), not UUIDs. This PR is only the review-sheet robustness half.Testing
Android-only, no iOS change, no dependency on the GitHub Actions incident — fully validated locally:
compileFullDebugKotlin✓,ReportReviewGateTest6/6 ✓ (raw-capture excluded-but-named; an oversized entry caught by the guard and named; normal small files still shown in full with no note), i18n audit ✓.