evidence · 3.1 KiB

README.md

Committed at docs/evidence/card-shell/render-cost/board/README.md. This is what grounds the requirements that cite it.

Open raw source

Board CPU profile: repaint dominates, budgets still fail

The physical board ran diagnostic source fcd9dc718bcba9a469e2417a7b0050af3558bebd, package /nix/store/5cxcjkfayy93zhyy2qybbrnad5rd3s6f-k230-card-shell, with the same 24-drag-per-count injected acceptance workload, 568x1232 panel and Pixman RGB565. All thirteen interaction checks were observed, including the throw and refusal recovery. The original shell restored; the independent control regression is in restoration.json. No image flash or reboot occurred.

The archive transferred over Wi-Fi with matching SHA256. The initial host transfer attempt did not satisfy its digest/completion guard and was not used; retrying the same board archive with a longer console-observation window did.

python3 docs/evidence/card-shell/render-cost/analyze.py \
  --input docs/evidence/card-shell/render-cost/board/telemetry.log \
  --output /tmp/card-cpu-profile.json
python3 tools/card-shell-benchmark.py --board \
  --input docs/evidence/card-shell/render-cost/board/telemetry.log \
  --manifest docs/evidence/card-shell/render-cost/board/manifest.json \
  --output /tmp/card-profile-budget.json

The diagnostic correlation exits 0: all 133/131 one/two-card frame rows match unique acceptance submission totals, with complete and non-overlapping CPU subdivisions. The unchanged budget parser exits 1 (FAIL). Tracking interval p95 remains 57.49 ms. The instrumentation is not a speedup experiment.

CPU measurement1 card2 cards
Total frame-update p9517.516 ms25.054 ms
Repaint handler p9514.432 ms20.125 ms
Input handler p953.167 ms6.200 ms
Other charged work p950.673 ms1.243 ms
Repaint fraction of total sampled CPU87.20%83.04%
Input fraction of total sampled CPU10.12%13.77%
Other fraction of total sampled CPU2.67%3.20%

Percentiles are independent distributions and must not be added. Fractions use summed CPU across sampled frames. Repaint includes scene preparation, wlroots, Pixman and output commit: this does not isolate pure pixel-scaling cost or kernel commit cost. A 111 ms one-card maximum remains in the full report; do not hide it behind the percentile. Extra profiling calls/logging add overhead.

Decision: prioritize repaint/scene work, while retaining input and cost gates. Source review found repeated raise-to-top operations for every parent/child mirror on each synchronization, even when final stacking order is unchanged. A candidate is to preserve already-correct sibling order while still applying real restacks. It needs native order/privacy/liveness regression checks and the same instrumented board comparison before any speedup claim. The existing bilinear filtering, live updates and interaction semantics must remain intact.

This repeat is injected board evidence, not physical-finger or optical proof. New captures have not been separately accepted as visual evidence; earlier reviewed captures remain authoritative for that gate. Tasks 4.2, 5.1 and 5.3 remain open. No completed proposal is inferred from a diagnostic result.