Skip to content

Restore the Android demo permission after stabilized screenshots #4427

Open

Description

@thymikee

Parent: #4368
Audit entries: ANDR-17
Source-check baseline: 3924da9474eded3d40c4abbaccc79fecae894366. Source inspection is not runtime reproduction.

Required behavior

A stabilized screenshot preserves the previous presence/value of global sysui_demo_allowed after success, capture failure and cancellation. An absent key is deleted again; an existing value is restored exactly. Do not guess the previous value when its read fails or claim success while silently leaking owned setting changes.

Prevention design and owner

Keep the temporary setting acquisition and cleanup together at the screenshot lifecycle owner. Use ephemeral per-operation restoration data, not a global saved-value cache. Preserve the primary capture failure while reporting restoration failure through the existing error/diagnostic contract. Respect existing per-device serialization and verify concurrent/nested behavior before adding any lock.

Owning source: packages/platform-android/src/screenshot.ts.

Completion evidence

Extend the existing real shell/capture scenario for prior absent/0/1, success, rejected capture, cancellation, failed prior-state read and restoration failure. The old implementation must leave the changed setting. Collect live settings-before/capture/settings-after evidence on an owned Android target, with a named API version. Do not claim arbitrary prior demo UI state can be reconstructed.

Record base/head or mutation detection, independent review, full repository formatting and exact-head affected validation. Keep failures, skipped CI/manual lanes and device evidence attributed to their tested SHAs. Preserve #4050 full-unit fallback; no blanket test deletion, gate relaxation, new compatibility fallback, merge, release or tags.

Dependencies and coordination

No competing open owner found for platform-android screenshot.ts. This is separate from screenshot burst/native-density and the API36 Back/diff blocker.

Activity

  1. added and removed on Nov 11, 2026
  2. apex-sentinel-staging commented on Nov 11, 2026

    @apex-sentinel-staging

    Apex Sentinel · Issue review

    Suggested label: bug

    The issue describes concrete current behavior where temporary Android sysui_demo_allowed changes may leak/not be restored and specifies the owning source file plus test/evidence expectations. It does not request a label or contain obvious instruction-steering.

    Required sections

    • Steps to reproduce (missing)
    • Expected and actual behavior (missing)
    • Version or environment (missing)
  3. thymikee commented on Nov 11, 2026

    @thymikee
    MemberAuthor

    Decision: implementation ownership:

    The accepted resumed ten now assigns Android screenshot demo-permission restoration to an isolated Terra source/test worker from current main c2677fdd4ce37010d8d8b6664df3d4f98674ec85. No overlapping open PR was found in the current owning-file scan. This phase writes the focused correction and meaningful tests; focused execution is deferred while #4375 runs its isolated regression experiment. The coordinator owns sequencing, independent review, proof, exact validation, live evidence and publication. No new policy/fallback, blanket test deletion, merge, release or tags.

  4. thymikee commented on Nov 12, 2026

    @thymikee
    MemberAuthor

    Decision: fourth-wave continuation: Resuming this existing implementation under #4368 (comment) from current main 799e9c027625b21def67ee544a866b4d5753133b. A Terra worker owns the bounded source/focused phase in an isolated checkout and will reuse the preserved commit. No duplicate implementation, device run, broad gate or publication is started in that phase. Independent review, current-base regression proof, serialized exact-head validation, applicable live evidence and CI remain coordinator obligations. Completion events drive follow-up; no running-worker polling.

  5. thymikee commented on Nov 12, 2026

    @thymikee
    MemberAuthor

    Current state: The first exact check atf3fc failed lint on a throw in finally and an oversized1427-line snapshot test file. Corrected commit 2cc9183c10a17acca0654387af7c0f8e99b2d45b uses one restoration helper, preserves the original capture error on cleanup failure, and surfaces restoration failure after capture success. Snapshot output tests moved into a smaller colocated file with shared local fixtures. All48 pre-move test statements have identical SHA256 hashes; the focused suite still passes67 tests across3 files. Full format/build/typecheck/lint/Fallow passed. Independent source review found no findings; its external coordinator evidence was unavailable, so it did not independently verify hashes/runtime results.

    The new exact receipt remains failed: exactCommit=true, checkoutChanged=false, clean initial/final checkout, failOpen=false. Format, lint, typecheck, layering, Fallow, build and343 related tests passed. The full-unit fallback reported19206 passed/1 failed/3 skipped: reports signal-terminated publish as unknown with its signal in scripts/__tests__/release-publish.test.ts:119 timed out at5000ms. Provider integration did not run afterward. Coverage is GitHub-owned; Android replay is parked/manual.

    Cause is unproven. The coordinator owns an unchanged-base comparison of that full-unit failure after the current #4470 validation releases the sole test slot. No unchanged head retry, budget/pool/worker relaxation, deletion or speculative release-fixture fix. Native Android permission before/capture/after evidence and publication remain pending.

  6. thymikee commented on Nov 12, 2026

    @thymikee
    MemberAuthor

    Current state — #4427 published for review

    Published draft PR #4477 at e8b7909. It has no merge conflict at publication. The pinned exact gate passed: 67 focused, 359 related and 19,497 unit tests passed, three unit tests skipped. At e8b7909, GitHub has 12 successful checks, five skipped checks and one neutral result; no failed or pending checks. The draft skips native smoke lanes. The review decision is empty. The branch is MERGEABLE with CLEAN merge state; this does not establish native-restoration readiness.

    The private candidate daemon produced a 1080×2400 normalized Settings screenshot through its matching Android helper. Native absent/0/1 setting values before/during/after capture remain unobserved. That live checkout used pnpm11.25 rather than11.17; its evidence has that explicit setup limitation. The emulator/session shut down, the owned daemon exited, and private config was removed. The draft does not claim merge readiness.

    #4423 current source review found no concrete bug in its inspected scope. Its regression/exact worker continues; no polling or repeat was launched. #4426 exact validation passed and native boot evidence remains. #4434's Fetch/Node/direct-daemon/CLI/doc source is authored; an accepted review P2 about malformed upstream ticket IDs/routes was corrected at96d0aac8. Execution, complete independent review and the full actualTLS/upload matrix remain before publication.

    Seven of the eight completion scopes remain unpublished; #4427 is published but unsettled. Existing 19 owned PRs remain merged. Queue canonical issue records and active worker records now reflect these results. No merge, release, tags or unrelated PR changes.

    Follow-up: #4441 now has an adopted finite budget Decision and a committed remote aggregate/cancellation slice at d159cd9799. Its bounded independent source review reports no concrete P1/P2 trigger. Tests are authored but unrun; phase watchdogs, source-install and ingress/ticket work remain. The #4434 matrix and #4423 native workers continue under their recorded ownership; no polling or duplicate implementation was started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions