# Modular Runtime Phase 3 — Live Cooperative UI Canary 03

Date: 2026-08-01

Status: accepted cooperative UI slice; Phase 3 accepted overall

## Accepted outcome

One real two-node Helios UI slice moved through the graph lane without operator input:

1. A read-only `visual-contract:helios@v1` artifact admitted one cooperative `ui_foundation` node against the repository's exact integration head.
2. Sol/high produced one schema-valid, bounded foundation packet. Luna/xhigh changed only `public/foundation.css`, ran its offline checks, and returned unstaged work.
3. Deterministic host code sealed that exact change, reran worker-safe and trusted-host checks, started the real product, and captured a 402×874 Chrome viewport only after the application readiness marker, fonts, console, overflow, and required visible regions passed.
4. A fresh read-only Sol/high context accepted the immutable foundation capture. The serialized queue integrated the candidate and advanced the durable graph `integrationHead` to its exact commit.
5. The dependent cooperative `ui_change` then planned from that new head. Luna/xhigh changed exactly `public/index.html`, `public/home.css`, `public/home-state.js`, and `public/app.js`.
6. The trusted host captured both the initial caregiver home and the state reached by clicking the real completion control. Each capture retained the stable shell, Robert identity, primary navigation, and next-action region inside the viewport.
7. A fresh read-only Sol/high context accepted both immutable home captures. The queue integrated the second exact-lineage candidate, advanced `integrationHead` again, and left the disposable authoritative repository clean with exactly two commits above its pinned base.

The accepted run completed in 747.042 seconds. It used two real Sol/high planning calls, two Luna/xhigh implementation calls—one per node—and two independent Sol/high visual judgments. No Luna repair attempt or human checkpoint was used.

This accepts the cooperative UI half of the Phase 3 product gate. The competitive half is now accepted separately in [`MODULAR_RUNTIME_PHASE3_COMPETITIVE_CANARY_01.md`](./MODULAR_RUNTIME_PHASE3_COMPETITIVE_CANARY_01.md).

## Running-product contract

The fixture starts with deliberately failing foundation and caregiver-home behavior. The accepted integrated product must:

- render at exactly 402×874 on a true-white canvas with near-black sans typography, quiet outlines, and a restrained warm sun-yellow accent;
- show Robert, identified as Dad, with a calm status and one morning-medication action;
- expose one primary 56px action and 44px minimum touch targets without horizontal overflow;
- mount `data-app-ready=true` only after state and click behavior are connected;
- complete the action without a page reload;
- update only `data-next-region` while keeping `data-home-shell`, Robert, and `[aria-label='Primary']` mounted and visible;
- avoid beige, dirty off-white, pastel soup, decorative serif type, gradients, glass, fake activity, surveillance theater, emergency theater, and live-pulse controls.

Luna remained offline. Localhost HTTP and Chrome execution belonged only to the trusted host after candidate sealing.

## Evidence lineage

Accepted evidence is stored only in [`evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03/):

| Stage | Immutable evidence | SHA-256 |
|---|---|---|
| Foundation | [`helios-foundation-foundation-402.png`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03/helios-foundation-foundation-402.png) and [`helios-foundation-review.json`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03/helios-foundation-review.json) | `21347ebc55569c76ff4a42e143e956ee490f06cfa80faa2ea3fbdb38bd6bc070` |
| Home, initial | [`caregiver-home-caregiver-home-402.png`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03/caregiver-home-caregiver-home-402.png) and [`caregiver-home-review.json`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03/caregiver-home-review.json) | `c90ea3c639e5711eeca74f1a253fc3344f2fe708a7ec297110f2f874a6924c62` |
| Home, completed | [`caregiver-home-caregiver-completed-402.png`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03/caregiver-home-caregiver-completed-402.png) | `f95e86c3a7d6fea3ebf154ce76bb16a9af3e5eafa8e767ff9f7f41064eedf719` |

Each review records its exact project, work item, attempt, foundation version, reviewer route, capture order, viewport, pixel hash, font state, console-error count, overflow result, and deterministically asserted visible selectors. Evidence is persisted only after both nodes are accepted and integrated.

## Rejected history that improved the gate

| Run | Outcome | What changed |
|---|---|---|
| Canary 01, 676.067 seconds | Runtime verdict revoked after opening the exact persisted pixels: the completed state had removed the header, Robert identity, and primary navigation even though the Sol review claimed navigation remained | Added deterministic required-visible-selector assertions per capture; the directory is marked [`REJECTED.md`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_01/REJECTED.md) and must never be used as acceptance proof |
| Canary 02, 1,041.060 seconds | Both bounded home attempts were correctly rejected because `[aria-label='Primary']` was not visible in the completed viewport; no home candidate integrated | Added exact `missing`, `hidden`, `zero_size`, and `outside_viewport` diagnostics with geometry; pinned a stable shell and limited completion rendering to `data-next-region` in [`MODULAR_RUNTIME_PHASE3_UI_CANARY_02_REJECTED.md`](./evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_02_REJECTED.md) |
| Canary 03, 747.042 seconds | Accepted without repair after deterministic structure and behavior checks plus independent visual judgment agreed | This is the only accepted Phase 3 UI evidence set |

The visual-review transport also exposed one provider-schema incompatibility: `uniqueItems` is unsupported by the strict response schema. Runtime parsing still enforces uniqueness. If independent review transport remains unavailable after two identical-evidence retries, the controller now returns `recovery_pending` with the sealed candidate rather than launching another Luna implementation.

## Verification evidence

Commands:

```text
pnpm --filter @orchestrator/modular-builder-core build
pnpm --filter @orchestrator/modular-builder-core test
pnpm --filter @orchestrator/modular-builder-core check:source
RUN_LIVE_BROWSER=1 pnpm --filter @orchestrator/modular-builder-core exec vitest run test/live-chrome-running-product-capture.test.ts --reporter=basic
NO_COLOR=1 RUN_LIVE_CODEX=1 PHASE3_UI_EVIDENCE_DIR=docs/audits/evidence/MODULAR_RUNTIME_PHASE3_UI_CANARY_03 pnpm --filter @orchestrator/modular-builder-core exec vitest run test/live-ui-vertical-canary.test.ts --reporter=basic
NO_COLOR=1 RUN_LIVE_CODEX=1 pnpm --filter @orchestrator/modular-builder-core exec vitest run test/live-backend-feature-canary.test.ts --reporter=basic
```

Current-revision results:

- 179 deterministic tests passed across 33 active suites;
- ten explicitly gated live tests were skipped by the deterministic suite;
- the real Chrome capture regression passed;
- the accepted cooperative Phase 3 UI evidence run passed 1/1 in 747.042 seconds and a non-overwriting current-revision rerun passed 1/1 in 801.675 seconds;
- the Phase 3 backend canary reran successfully on the same current revision in 168.426 seconds;
- TypeScript completed with no diagnostics;
- 50 source files average 170 logical lines, with p50 136, p90 370, and a 492-line maximum;
- no source file crosses the 500-line review threshold.

## Phase 3 consequence

The runtime now proves read-only contract input, cooperative foundation and feature work, a changing durable integration head, real interaction, deterministic viewport structure, immutable pixel evidence, independent visual acceptance, and exact ordered integration. The bounded competitive run also proves same-base isolated candidates, serialized use of the one Chrome resource, fresh autonomous Sol selection, promotion of exactly one winner, and loser non-integration. Phase 3 is accepted in [`MODULAR_RUNTIME_PHASE3_GATE.md`](./MODULAR_RUNTIME_PHASE3_GATE.md).
