# I1 shared authoritative read-model convergence

## Scope

This convergence closes the shared contract gap identified by Lane D without reopening C1.x provider contracts. It starts from `origin/main` after Lane B and Lane C landing and owns only provider-neutral transport/application read-model contracts plus focused tests.

Branch: `impl/i1-shared-readmodels`

## Implemented

- Added transport-safe I1 detail types in `@awp/contracts` so `apps/web` can consume authoritative projections without depending on `@awp/application` or `@awp/domain`.
- Added authoritative FactoryRun detail projection with:
  - durable FactoryRun identity/revision;
  - Task work projection and typed attention/wait/next-action fields;
  - logical AgentRun and immutable Attempt history;
  - explicit current Attempt identity rather than array/process inference;
  - provider/account/model provenance;
  - explicit failure class/cause/retry disposition and partial/unknown semantics;
  - WIP/checkpoint safety and cleanup eligibility;
  - live-executor presence separated from historical availability;
  - durable continuation/reattach identity.
- Added authoritative ChangeSet/Review/MergeGate projection with:
  - immutable candidate/base identity and structured manifest;
  - Review disposition and findings;
  - candidate-bound evidence freshness/source;
  - expected target identity;
  - fail-closed protected Merge availability derived from candidate state, Review, evidence, publication fidelity, policy, authority and target-head freshness;
  - mandatory resulting repository identity for terminal merged state.
- Added realtime projection envelope with durable entity identity, revision, sequence and observed timestamp.
- Added focused tests proving historical FactoryRun truth survives missing executor state, wrong current-Attempt identity fails closed, Merge is unavailable on stale target/unresolved blocking Review, merged ChangeSets require terminal result identity, and invalid realtime sequence metadata is rejected.

## Validation

Validation ran on authorized buildbox `debian1` with `mise x node@22` resolving Node `v22.23.2` and pnpm `9.7.0`. No tests ran on the workstation.

Final implementation gate before this progress update:

- `CI=true pnpm install --frozen-lockfile`: PASS; 17 workspace projects recognized.
- `pnpm check`: PASS.
- repository tests: 25 files / 99 tests PASS.
- focused new I1 detail tests: 5/5 PASS.
- architecture tests: 6/6 PASS.
- dependency-cruiser: 64 modules / 81 dependencies, 0 violations.
- typecheck, lint, build and Prettier: PASS.

## Convergence effect

Lane D no longer needs to invent shared FactoryRun/Attempt, ChangeSet/Review/MergeGate, realtime-envelope or typed work/attention contracts. Its remaining work is to rebase onto this convergence commit and replace its U2-U6 deterministic lifecycle fixtures/data-source summaries with these authoritative contract shapes while preserving the approved U1-U6 visual semantics.

## Remaining program work

This convergence is not I0/I1 completion. After landing it, the coordinator must finish Lane D authoritative wiring and UI/E2E gates, then execute C4 integrated I0 exit verification and C5 real Project → Merge dogfood. Lane C's environmental readiness rows remain pending until actually proven.
