## Summary
This PR is the blocking repair in [AERIE-2653 — Complete all remaining production observe cohorts and close the rollout](https://linear.app/builder-team/issue/AERIE-2653/complete-all-remaining-production-observe-cohorts-and-close-the).
It makes the Commit Proposal boundary receipt-owned: the Agent returns only its five decision/evidence fields, while Aerie restores contractVersion, targetRef, and the complete input fence from the persisted receipt before applying the existing authoritative validation. It also explicitly sets the Commit Proposal Agent's optional model Quality Bar to null while retaining Sindri Output Format validation. This work is tracked by [AERIE-2837 — Make Commit Proposal receipt-owned and remove its model Quality Bar](https://linear.app/builder-team/issue/AERIE-2837/make-commit-proposal-receipt-owned-and-remove-its-model-quality-bar).
Production effect: controlled rollout or migration. Merging changes the accepted Commit Proposal wire contract, but it does not publish Sindri assets, start reconciliation, enable writes, clear the ANDON, or resume the rollout. Deployment and asset publication are separate, coordinated actions.
---
## Why
The Boston observe run failed because an Agent-carried copy of otherwise-valid receipt metadata omitted one type: "string". The Carrollton proposal passed Aerie's deterministic validator but was subsequently vetoed by a malformed optional model Quality Bar verdict. This repair removes both non-authoritative failure modes without weakening receipt fencing, citation validation, stale-work checks, canonical hashing, replay idempotency, or observe-mode no-write behaviour.
---
## Business Value
- Prevents model copying errors from corrupting Site identity, allowed-field schemas, or source fences already held by Aerie.
- Prevents an optional model judge from overriding Aerie's deterministic proposal validator.
- Keeps stored proposals fully auditable because their canonical representation still contains the complete receipt-bound context.
- Preserves observe-mode safety and existing commit-mode approval and kill-switch controls.
---
## How does it work
1. @bran/contracts defines an exact Agent-owned proposal containing only sourceAssessments, operations, dispositions, citations, and decision.
2. bindReconciliationAgentProposalV1 rejects legacy envelope fields and unexpected keys, then combines the Agent decision with Aerie's authoritative receipt envelope.
3. Draft validation and final settlement both use the same receipt-bound validation seam before existing citation, policy, freshness, lease, and canonical-hash checks run.
4. Aerie continues storing the complete canonical proposal and hash; existing stored full proposals remain readable and require no migration.
5. The Commit Proposal Agent and Workflow assets request the five-field shape, retain required Output Format validation, and explicitly set successCriteria: null.
6. Asset publication, production registration changes, deployment, and rollout resumption remain deliberately inactive.
---
## Scope
### Included in this phase
- Exact five-field Commit Proposal Agent input contract.
- Authoritative receipt-envelope binding shared by draft and final validation.
- Strict rejection of legacy, mixed, nested-stringified, and unknown Agent proposal shapes.
- Preservation of complete canonical proposal storage and terminal replay behaviour.
- Explicit removal of only the Commit Proposal model Quality Bar.
- Updated Commit Proposal Agent, Skill, and Workflow assets.
- Regression and local write-disabled Boston/Carrollton coverage.
- Exact final diff paths:
chat/convex/reconciliation/finalOutputSettlement.test.tschat/convex/reconciliation/finalOutputSettlement.ts
chat/convex/reconciliation/readiness.ts
chat/convex/reconciliation/validator.test.ts
chat/convex/reconciliation/validator.ts
chat/convex/reconciliation/validatorHttp.test.ts
chat/convex/reconciliation/validatorHttp.ts
chat/sindri-assets/document-field-reconciliation/agents/commit-proposal.json
chat/sindri-assets/document-field-reconciliation/assets.test.ts
chat/sindri-assets/document-field-reconciliation/skills/aerie-reconciliation-commit-proposal/SKILL.md
chat/sindri-assets/document-field-reconciliation/workflow.json
packages/contracts/src/reconciliation.test.ts
packages/contracts/src/reconciliation.ts
### Deliberately excluded for later phases
- Publishing or mutating any Sindri Agent or Workflow version.
- Updating the production Workflow registration or retrying a historical run.
- Deployment, production starts, write enablement, ANDON clearance, or rollout continuation.
- Changes to the Evidence Analyst or Site Reconciler contracts.
- Sindri runner changes, schemas, migrations, backfills, new endpoints, or new MCP tools.
- Reviving AERIE-2668 through AERIE-2671 or the retired source-relevance classifier design.
- Reimplementing the two citation-organisation suggestions that existed only in the model judge.
---
## Test plan
### Automated validation
- Contracts reconciliation tests — 15/15 passed (cd packages/contracts && pnpm exec vitest run src/reconciliation.test.ts --reporter=verbose).
- Commit Proposal asset tests — 7/7 passed (cd chat && node --test sindri-assets/document-field-reconciliation/assets.test.ts).
- Focused validator, validator HTTP, and settlement tests — 35/35 passed (cd chat && pnpm exec vitest run convex/reconciliation/validator.test.ts convex/reconciliation/validatorHttp.test.ts convex/reconciliation/finalOutputSettlement.test.ts).
- Full Chat reconciliation edge project — 131/131 passed during final independent review.
- Local isolated E2E — 61/61 intended checks passed across saved-case replay, explicit-null runner behaviour, observe settlement, exact replay, focused tests, and assets.
- Contracts typecheck — passed (pnpm --dir packages/contracts typecheck).
- Chat and Convex typecheck — passed (pnpm --dir chat typecheck).
- Rhodes worker typecheck — passed (pnpm --dir chat/rhodes-worker typecheck).
- Architecture boundaries, Convex paths, read bounds, and test architecture — passed.
- git diff --check — passed.
- Independent review — PASS for exact commit 8f0db85ba2dee36d7516abf4d12cb2a7adaafc39.
A mistakenly broad local contracts invocation also ran unrelated tests. The target reconciliation file passed, while an unrelated large-bundle stress test timed out at its existing 5-second limit. It was not changed or rerun; the corrected target-only command passed 15/15. Hosted CI remains the final full-suite gate.
### Time for Implementation
Approximately 4–6 engineering days without AI assistance, including failure analysis, contract design, implementation, regression coverage, independent review, saved-case replay, and rollout-safety validation.
### Manual QC
A local, isolated, write-disabled E2E replay used the supplied private Boston and Carrollton saved inspections without production credentials, networks, or model calls.
- Boston: the saved receipt retained both string schemas while the Site Reconciler handoff omitted one. The old full-proposal path rejected the corruption; candidate receipt binding restored type: "string" from Aerie's receipt. The exact historical Commit Proposal validator request was not retained, so this is explicitly not represented as an exact replay of that missing payload.
- Carrollton: both captured proposals were reduced to the five Agent-owned fields, rebound to the authoritative envelope, and reproduced canonical hash d5fee920068a6a4ce80884f98a392cf1096ec35d2d4e3a5e9eeff1eb2cf2117b.
- Explicit successCriteria: null: Output Format still accepted valid output and rejected malformed output; generic judge calls were zero.
- Observe settlement and exact replay: five terminal invocations completed with no_write; Site changes, field-history rows, provenance rows, scheduled functions, outbound calls, and duplicate proposal/citation rows were all zero.
The redacted E2E report SHA-256 is 7e1486dcf55bda8cdd107be65d2c71bec06215d8c9eadef2a4271a7057cdd2dc. Private production-derived fixtures were not committed.
---
## Limits and unanswered questions
- The exact historical Boston Commit Proposal validator request was not retained. Saved evidence directly proves the valid-receipt/corrupt-handoff mismatch; the candidate repair used a minimal five-field decision over that saved envelope.
- The new five-field Agent contract and Aerie deployment require a coordinated cutover because candidate Aerie intentionally rejects the old eight-field Agent output.
- Sindri asset publication, production registration updates, and rollout resumption require separate authorization after merge and deployment.
- This exact validated head is based on 2f18213cea317c2f2010ee927ae7aa819e7e1dec; main has advanced. Before merge, the branch must be updated and the exact-head merge gates rerun. Do not treat the current local E2E as evidence for a different rebased or merged SHA.