Demo Post-release Verification Closeout Plan
Status
Active but hardware-deferred. The coordinated Maven and ViewCompose Preview 1.1.0 release, the
preempting focus visibility hard cut, the broad visual matrix, popup golden, and dead-infrastructure
cleanup are complete. The release-bearing Demo rearchitecture and its renderer/overlay repairs are
archived in docs/archive/demo-benchmark-verification-harness-rearchitecture.md. Only the
unaccepted Phase 1 scroll baseline keeps this plan active, and no currently available device
qualifies to recapture it.
Phase 1 is partially complete. The rooted Xiaomi run accepted the revision-3 eight-cycle mutation
absolute baseline at run-P50 CV 0.025. Scroll remains unaccepted after two complete v4 batches at
CV 0.191 and 0.196; Perfetto attributes the two plateaus to system RenderThread/BufferQueue
wait while application work and controlled clocks remain materially equal. No fixture or measured
action was changed in response.
A same-device root audit found no remaining exposed control that can be added without changing the rendering path: the panel has one fixed 60 Hz mode, its framebuffer idle/dynamic-update controls are already disabled, and SurfaceFlinger already uses the available backpressure/latch controls. Scroll recapture on this device is therefore deferred rather than tuned into a passing batch.
A 2026-08-25 source/history recheck also rejected a proposed revision-4 pacing hard cut:
revision 3 already waits 500 ms after every gesture, so adding the same wait would not create a
new workload. Pixel 4 XL / API 33 cannot replace the Xiaomi: its user build exposes the
fixed-performance shell command but rejects it because the required Power HAL AIDL mode is absent.
No benchmark ran, and peak/minimum refresh plus rotation settings were restored exactly. Emulator
execution remains diagnostic only because it substitutes the host GPU and display pipeline for the
physical path whose stability this gate must prove.
As of 2026-08-25, the available Xiaomi, Pixel, and emulator therefore provide no suitable test device for this baseline. Phase 1 is explicitly paused at the hardware prerequisite: do not rerun the rejected Xiaomi path, weaken the gate for the Pixel, or substitute emulator timing. Resume only when another physical device can prove stable CPU, GPU, and display-pipeline control.
Last verified: 2026-08-25.
The configuration matrix exposed an unstable framework-level focus-visibility design. That slice was completed by the higher-priority archived focus visibility and scroll ownership hard-cut plan plan and was not closed by adding more tests to the rejected Boolean policy. This plan retains the popup, navigation, theme, segmented, rounded-grid, and nested-scroll slices.
Phases 2 and 3 completed on 2026-08-22. The Xiaomi MI 6 / API 28 pairwise run passed all three
instrumentation methods in 71.693 s and produced 32 accepted screenshots plus 32 metadata files.
Automated assertions and manual review accepted every frame. The rejected pre-hardening capture
had 26 frames; four pressed-state frames and separate Grid first/last-row evidence increased
focused coverage by +6 (+23.1%). The popup retained native dismissal coverage and passed its
four-edge pixel assertion. The monolithic 371-constant DemoTestTags registry was removed with no
alias; 370 still-live fine-grained tags moved into 14 fixture-owned registries, while the redundant
Collections label tag was deleted after its test adopted the scenario-owned resource ID. Two
zero-caller chapter helpers were also deleted. Call-site and structural searches report no old
tag-registry, chapter-wrapper, module-key, or page-index caller. The rebuilt APKs then passed the
complete Demo instrumentation suite, 137/137 tests in 742.903 s.
The independent Paging release closeout gate on 2026-08-25 exposed two app-only harness defects without reopening the archived framework focus design: generic scenario launch now waits for Root/Ready without scrolling lazy owners, and lazy focus fixtures scroll to and mount their target before requesting focus. Reset first restores fixture state, while automation observes actual IME visibility before dismissing it. A portrait-locked Pixel 4 XL/API 33 then passed the complete App suite: 152 tests, 150 passes and the two documented CameraX/Google Maps prerequisite skips; Counter and Tutorials added three passes. Conclusion: improved deterministic launch, lazy-focus, IME, and reset confidence with no published-artifact impact. Limitation: this gate does not replace the remaining fixed-clock collection-scroll baseline, so the plan stays active.
Next action: wait for a qualifying physical reference device, then recapture revision-3 scroll with
proven stable CPU, GPU, and display-pipeline control. Android 9/API 28 is not required, and root is
optional only when equivalent control and observation are available. Until then, perform no more
formal collection-scroll runs on the currently available devices. Do not remove production harness
infrastructure or close Phase 1 until scroll passes the unchanged 0.15 gate.
Maven release changesets
- None.
Release intent rationale
The remaining scope is confined to the Demo application, its instrumentation, the internal
Macrobenchmark harness, and validation assets. It owns no current published-artifact production
change. If later work changes production source, publication inputs, or compiled API samples for a
published artifact, this section must be replaced in the same pull request with the immutable
Changeset that owns that impact; the work cannot remain hidden under - None..
Objective
Close the verification breadth intentionally left after the release-bearing rearchitecture without reopening its architecture or delaying the coordinated framework and Preview-plugin release. The finished state has:
- one accepted fixed-clock
collection.stress@3baseline with an interpreted stability result; - a repeatable bilingual, theme, layout-direction, font-scale, and representative-density visual matrix for the repaired pressure slices;
- automated popup-shadow pixel coverage that complements, rather than replaces, real-device interaction;
- no obsolete monolithic tag or routing compatibility infrastructure; and
- durable conclusions in current tooling/capability documents before this plan is archived.
Scope boundary
In scope
collection.stress@3scroll and mutation under the existing five-iteration, per-method cooling, ready/action/state/reset, physical fixed-clock, andrun-from-apkprotocol;- the focused menu-shadow, theme-swatch, NavigationBar quick-tap, One UI navigation, segmented shape, nested-scroll, and rounded-grid pressure slices;
- English and Simplified Chinese, light and dark themes, LTR and RTL where supported, font scales
1.0and1.3, and at least one non-default representative density; - popup visual-outset pixel assertions at representative anchor positions plus real-device dismissal, alignment, and clipping checks; and
- deletion of the remaining obsolete tag registry, module-route compatibility, or other harness infrastructure only after caller and selector guards prove it is unused.
Out of scope
- new framework APIs, new design-system components, public diagnostics redesign, or benchmark workloads unrelated to the remaining Demo closure;
- focus visibility and scroll ownership, now owned by the separate highest-priority hard-cut plan;
- changing a fixture merely to produce a more favorable performance number;
- weakening locale-independent selector, deterministic reset, direct-scenario routing, or workload-revision contracts; and
- treating screenshots or goldens as substitutes for touch, IME, lifecycle, overlay dismissal, or accessibility behavior.
Work packages
Phase 0: contract freeze — complete
- Preserve the existing scenario IDs, workload revisions, resource-ID selectors, five-run stability ceiling, and physical fixed-clock protocol; the accepted Xiaomi mutation result keeps its exact device context.
- Carry forward the exact remaining scope from the archived rearchitecture record rather than silently redefining its completion criteria.
- Keep the first post-release pull request publication-neutral unless implementation actually reaches a published artifact.
Phase 1: collection-stress revision 3 baseline
Progress on 2026-08-21: mutation is accepted as a stable absolute baseline; scroll and therefore
the phase remain incomplete. The complete interpretation, APK hashes, rejected batches,
BufferQueue attribution, limitations, and next action live in
docs/tooling/performance.md.
The 2026-08-25 recheck confirms that revision 3 already owns the required per-gesture settle and that neither the same Xiaomi display pipeline, the non-fixed Pixel, nor an emulator can produce the missing acceptance evidence. This is a hardware prerequisite, not authorization to revise the workload or lower its stability ceiling. No qualifying physical device is currently available, so the following execution steps remain paused.
- Build one release-like target and benchmark APK from a reviewed source revision.
- Run scroll and mutation separately on a physical reference device whose CPU/GPU and required renderer-interconnect policy are controlled and observed, with thermal start, compilation identity, frame count, heap, and APK hashes recorded.
- Accept only five-run batches whose run-P50 CV is at most
0.15; unstable results are rerun, not averaged into acceptance. - Record P50/P95/P99, frame count, peak heap, absolute values, normalized direction, conclusion,
limitations, and next action in
docs/tooling/performance.mdand its Simplified Chinese mirror. - Do not compare revision 3 against retired revision 2 as if the fixture were unchanged.
Phase 2: visual and configuration matrix — complete
Accepted on 2026-08-22 on Xiaomi MI 6 / API 28. The executable pairwise matrix combines English,
light, LTR, font 1.0, and density 1.0 with Simplified Chinese, dark, RTL, font 1.3, and density
1.25. All three instrumentation methods passed in 71.693 s; 32/32 automated evidence frames
also passed manual review. The accepted set covers exact Grid state and both rounded ends, theme
swatch geometry, segmented geometry, standard and One UI pressed/released feedback, popup
anchoring/shadow/dismissal, and bidirectional nested handoff. The separately completed focus hard
cut's five owner types also passed as regression coverage without returning focus ownership to this
plan. The durable execution contract and limitations are interpreted in
docs/project/capability-verification.md.
- Produce a deterministic checklist keyed by scenario ID, configuration, action, and expected invariant rather than by translated copy.
- Execute the repaired pressure slices in both supported locales and themes, with RTL applied to
directional scenarios, font scale
1.3, and one representative density override. - Capture intermediate pressed/released states for both standard and One UI navigation quick taps; selection alone does not prove ripple survival.
- Verify nested same-axis scrolling in both directions before and after edge handoff, complete IME editor reveal, popup semantic anchoring and shadow outset, equal theme-swatch width, segmented inset geometry, rounded clipping, and reset/relaunch determinism.
- Record actual failures as framework, fixture, or harness defects before changing code.
Phase 3: popup golden and harness cleanup — complete
The popup bitmap assertion samples transparent visual outset and non-background shadow pixels on
all four rounded edges while the real-device path proves selection, semantic anchoring,
outside-touch dismissal, and reopen behavior. Harness cleanup found no surviving old module-key or
page-index route. The initial call-site audit found all 371 constants in the monolithic tag registry
referenced, so the hard cut moved them into 14 fixture-owned registries and deleted the central
object instead of retaining forwarding aliases. The final device suite then exposed one
misclassified Collections scenario-role tag: its consumer now uses the owned Android resource ID,
and the constant plus both producer modifiers were deleted. The remaining 370 fixture tags all have
a production or test caller. Two zero-caller chapter helpers were also deleted. rg and Kotlin AST
searches return no old object, helper call, module-key, or page-index reference. The first complete
device run passed 135/137 tests and exposed the coordinate/IME and role-selector defects; after the
hard cuts, the same rebuilt APKs passed 137/137 in 742.903 s.
- Add an automated popup image assertion that samples transparent outset and non-background shadow pixels around every rounded edge at representative density and edge placement.
- Keep real-device popup interaction in the gate because a bitmap cannot prove outside-touch dismissal, anchor updates, or window lifecycle.
- Use call-site and structural searches plus selector guards to prove obsolete routing/tag helpers have zero callers before hard deletion.
- Remove compatibility infrastructure rather than preserving aliases once all callers are gone.
- Run the complete Demo unit, instrumentation, benchmark-compilation, documentation, and release quality gates affected by the cleanup.
Phase 4: documentation and archive — partially complete
The accepted visual result, normalized coverage change, conclusion, limitations, and next action
are recorded in the current capability-verification document and reviewed Chinese mirror. Release
intent remains publication-neutral because this batch changes only the Demo application, its
instrumentation, and contributor documentation. Compilation, selector, documentation, release
intent, qaQuick, and the complete 137-test device gate pass. Final archive remains
hardware-deferred solely by the Phase 1 scroll baseline and its required performance-document
interpretation; no qualifying physical device is currently available.
- Interpret every accepted benchmark or visual result in the owning current document with context, absolute observations, normalized direction where applicable, conclusion, limitations, and next action.
- Update the capability-verification workflow if the executable matrix changes its durable contract.
- Reassess publication impact and Changesets before merge.
- Archive this plan only when every completion criterion below is met.
Hard-cut rules
- Do not restore visible-copy selectors, module-key routing, chapter wrappers, or a monolithic Activity for test convenience.
- Do not lower workload duration, remove assertions, or alter the fixture after seeing a poor result without advancing its revision and explaining the semantic change.
- Do not replace manual interaction with screenshots where timing, gesture ownership, IME, lifecycle, or dismissal is the behavior under test.
- Do not retain dead compatibility APIs or helper registries after the zero-caller proof.
- Do not add a Maven Changeset for app-only work, and do not omit one if published production source becomes involved.
Validation matrix
| Area | Required evidence |
|---|---|
| Collection performance | fixed-clock revision-3 scroll/mutation, five stable iterations, P50/P95/P99, frame count, peak heap, hashes, and interpreted conclusion |
| Locale/theme | English and Simplified Chinese in light/dark modes with no selector dependence on copy |
| Direction/font/density | RTL-sensitive paths, font scale 1.3, and representative density without clipping or ambiguous fixtures |
| Interaction | real-touch quick-tap feedback, nested edge handoff, IME reveal, popup dismissal/anchor behavior, reset and relaunch |
| Visual | focused screenshots plus popup pixel golden; expected invariants and limitations recorded |
| Cleanup | zero callers before hard deletion and selector/routing guards remain green afterward |
| Repository | affected JVM/device suites, benchmark compilation, qaQuick, documentation/translation gates, and release-intent verification |
Completion criteria
This plan completes only when collection-stress revision 3 has an accepted fixed-clock baseline; the full frozen configuration matrix passes or every accepted limitation is assigned to a separate active owner; popup shadow has both real-device and pixel-level evidence; obsolete harness infrastructure is removed with zero-caller proof; current English and Simplified Chinese documents interpret the evidence; publication impact is correctly classified; and all affected repository gates pass.