I3140 — The mesh page's latency is measured against a recorded baseline before any target is claimed
Record, under rule project.performance-evidence and through a measuring command under scripts/ui and scripts/lib, warm status on a named route, cold and warm first paint, local event to screen, and subscription recovery for the mesh page, with hardware and percentiles; only then declare targets, as budgets of benchmark policy.
BLOCKED wave 2 · p3 · verification profile · parallel safe
Blocked. This issue cannot start until I3138 is done. The status is derived from that, not declared.
Objective
Record, under rule project.performance-evidence and through a measuring command under scripts/ui and scripts/lib, warm status on a named route, cold and warm first paint, local event to screen, and subscription recovery for the mesh page, with hardware and percentiles; only then declare targets, as budgets of benchmark policy.
Why
The 2026-10-18 plan proposed latency targets for status, event to screen and recovery; the repository refuses 'fast' without a baseline, and ADR 0196 makes such targets budgets of benchmark policy. Critique of 2026-10-18 (latency-baseline-has-no-instrument): no instrument measures a /ui page's paint, event-to-screen or recovery. A baseline must come from its measuring command, and targets are benchmark-policy budgets. Proposed in ADR 0209 (Prismatic Lumen names the owner's mesh-wide view, and it owns no scheduler, event bus, store or API) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c296#12.
Current state
.ai/repo/benchmarks holds economics, observatory, pages and rust baselines; nothing for the mesh page.
Desired state
A baseline regenerated by its measuring command, and targets declared from it as budgets in .ai/repo/benchmarks/rust/policy.yaml.
Scope
- docs/PERFORMANCE.md
- scripts/ui
- .ai/repo/project/intents
- .ai/repo/benchmarks/rust/policy.yaml
- .ai/repo/benchmarks/rust/README.md
- .ai/repo/benchmarks/README.md
- .ai/repo/benchmarks/rust
- scripts/lib/ui-observatory.mjs
- scripts/lib/ui-routes.mjs
- scripts/lib/browser.mjs
- scripts/lib/ui.test.mjs
- scripts/lib
Out of scope
- Optimisation work
- A service worker or client cache
Dependencies
Acceptance criteria
- A baseline with hardware, percentiles and routes is committed
- No target appears in prose before it
- The baseline is regenerated by a measuring command under scripts/ui and scripts/lib, beside scripts/lib/ui-observatory.mjs, with a declared route list; it is never edited by hand
- Warm status names the route it times; first paint is measured as a cold and a warm load, and no client cache is assumed
- I3140's why no longer quotes the proposed targets; they appear only as budgets in .ai/repo/benchmarks/rust/policy.yaml beside the UI budgets (ADR 0196, I2489), each citing the baseline it came from
- The criterion latency-is-measured-before-it-is-claimed is rebound in .ai/repo/project/intents/the-owner-oversees-the-mesh-from-one-page.yaml to evidence: test with the case that runs the measuring command
Validation
- majordomus plan validate
Evidence required
- mesh_page_baseline
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3140.yaml. Read it back with majordomus plan show I3140.