RUST.md, DECISIONS.md: P0, the phone benchmark gate Iris asked for before P1
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
5b7dc0e4e2
commit
bfe93c4188
2 files changed
+48
No files matched your search
@@ -7,6 +7,21 @@ marked **DEFERRED** are ones the agent chose not to decide alone.
|
|||||||
|
|
||||||
## 2026-09-05
|
## 2026-09-05
|
||||||
|
|
||||||
|
- **P0, a phone benchmark gate before any porting, asked for by Iris
|
||||||
|
2026-09-05**: "before P1 I'd like to see benchmarks & also maybe stress
|
||||||
|
test on my own phone ... If it doesn't match compose reasonably well then
|
||||||
|
I don't think I'd wanna continue." Design (RUST.md's P0 box has the
|
||||||
|
detail): the same embedded synthetic fixture in both apps with no server
|
||||||
|
needed; the same scripted scroll loop then a streaming phase, run
|
||||||
|
programmatically since the phone has no usable system tracing and no
|
||||||
|
agent can drive it; the same report from both (frames, janky %, p50/p90/
|
||||||
|
p99, process CPU time, peak RSS, battery current where readable) with a
|
||||||
|
copy button; the iris app under its own id and the Compose one as a new
|
||||||
|
`bench` build type with an id suffix, so neither replaces her production
|
||||||
|
install; two arm64 APKs plus instructions delivered under `~/host/bench/`.
|
||||||
|
The gate is hers: iris within a reasonable margin of Compose release on
|
||||||
|
p50, p99 and CPU time, no crashes, no visible stutter. If it fails, the
|
||||||
|
port stops.
|
||||||
- **The rest of the port is one UI crate, `iris/app-ui`, grown out of
|
- **The rest of the port is one UI crate, `iris/app-ui`, grown out of
|
||||||
`iris/transcript-ui` rather than started beside it.** It holds a
|
`iris/transcript-ui` rather than started beside it.** It holds a
|
||||||
`Screen` enum plus a back stack — the Rust equivalent of `AppRoot.kt`'s
|
`Screen` enum plus a back stack — the Rust equivalent of `AppRoot.kt`'s
|
||||||
|
|||||||
@@ -3238,6 +3238,39 @@ AVD, `ui-trace` by accessibility name, GrapheneOS phone quirks, the
|
|||||||
running any pass condition below that touches an emulator or a real
|
running any pass condition below that touches an emulator or a real
|
||||||
device.
|
device.
|
||||||
|
|
||||||
|
- [ ] **P0 — the phone benchmark gate (asked for 2026-09-05; must pass
|
||||||
|
before P1 starts).** Iris runs both apps on her own phone and pastes
|
||||||
|
the reports back; the emulator's numbers are not a substitute.
|
||||||
|
Two halves, buildable independently:
|
||||||
|
- **Compose half** (`app/`): a `bench` build type (release
|
||||||
|
optimisations, `applicationIdSuffix ".bench"`, own label "AI
|
||||||
|
Sessions bench") whose session screen can open an embedded fixture
|
||||||
|
transcript from assets with no server, and a "Run benchmark"
|
||||||
|
control in the existing render-report place that programmatically
|
||||||
|
performs the fixed scroll loop (same distances and timings as
|
||||||
|
`transcript-bench.sh`, driven through the `LazyListState`), then a
|
||||||
|
streaming phase (append fixture events at 20/s for 20 s into the
|
||||||
|
same fold path a live SSE reply uses), then shows the report with
|
||||||
|
the existing copy button. The report adds process CPU time over
|
||||||
|
the run (`Process.getElapsedCpuTime`), peak RSS, and
|
||||||
|
`BatteryManager.BATTERY_PROPERTY_CURRENT_NOW` samples.
|
||||||
|
- **iris half** (`iris/android-app`, `transcript-screen` feature): the
|
||||||
|
same fixture embedded, the same scripted loop and streaming phase
|
||||||
|
driven through `List::scroll` and the fold, the same report fields
|
||||||
|
added to `FrameReport`'s line, shown on screen with a copy-to-
|
||||||
|
clipboard control (through the shell's Java side), arm64 release.
|
||||||
|
- **The fixture**: one synthetic transcript generated from
|
||||||
|
`app/ui-sandbox.sh`'s invented sessions (never a real one), at
|
||||||
|
least 3,000 events, with headings, code fences, links, tool calls
|
||||||
|
with kilobyte outputs, and a few images; committed once under
|
||||||
|
`app/bench-fixture/` and read by both apps.
|
||||||
|
- **Delivery**: `~/host/bench/` gets `iris-bench-arm64.apk`,
|
||||||
|
`compose-bench-arm64.apk`, and `README.md` saying how to run each
|
||||||
|
and what to paste back.
|
||||||
|
**Pass**: Iris's call from the two reports — iris within a reasonable
|
||||||
|
margin of Compose on p50, p99 and CPU time, no crash, no stutter she
|
||||||
|
can see. Fail stops the port.
|
||||||
|
|
||||||
- [ ] **P1 — session screen parity.** History paging backward (with the
|
- [ ] **P1 — session screen parity.** History paging backward (with the
|
||||||
page-boundary healing `client-core` does not have yet, below),
|
page-boundary healing `client-core` does not have yet, below),
|
||||||
`TranscriptSource`-backed cache/server stitching, jump-to-latest,
|
`TranscriptSource`-backed cache/server stitching, jump-to-latest,
|
||||||
|
|||||||
Reference in new issue
Block a user