Skip to content

I3090 — The UI audit warms every surface and gives an unreachable page a second load

Before the first visit, the UI audit loads the first planned page of every top-level surface, not only the root. It records page.unreachable only after a second load fails, and never retries a refused connection, which still stops the run.

READY wave 0 · p1 · implementation profile · runs alone

Part of architecture-is-enforced — A violated invariant fails a gate, and green means every required check ran.

Ready. Every dependency is done, so majordomus plan start I3090 will be accepted.

Objective

Before the first visit, the UI audit loads the first planned page of every top-level surface, not only the root. It records page.unreachable only after a second load fails, and never retries a refused connection, which still stops the run.

Why

On 2026-10-19 and 20 the ui job on master (runs 39205883728 and 39233374923) and on the alpha.1 top (39357242274) failed on one finding: page.unreachable on /docs/ @320. The documentation surface is served from a tree of its own, and its first load, the first visit of the plan, exceeded the 20 s goto while every later visit of /docs/ loaded. A red that says something about a cold machine and nothing about the site.

Current state

The audit warms only the root, and a single timed-out goto is a finding.

Desired state

Every surface is warm before the first visit, and a page is unreachable only when it fails twice.

Scope

  • scripts/lib/ui-audit.mjs
  • scripts/lib/ui.test.mjs
  • .ai/repo/project/issues/I3090.yaml

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • The audit warms the first planned route of every top-level path segment before the workers start, deriving the segments from the plan and naming no mount
  • A visit whose goto times out is loaded once more before page.unreachable is recorded, and the finding names the number of attempts
  • A refused connection is never retried: the run still stops and says the server stopped answering
  • A full ui audit run on CI reports no page.unreachable on /docs/

Validation

  • majordomus plan validate
  • node scripts/lib/ui.test.mjs
  • scripts/ui audit --report

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/I3090.yaml. Read it back with majordomus plan show I3090.

Searches the titles and descriptions of every page this site publishes.