# E-003 — A mutable contract can accommodate drift

- Status: preventive signal implemented and synthetic/E2E replay passed; strategic sensitivity not yet calibrated.

## Observation

The round contract can change within the same diff as the work. Current evidence per KR is path matching, and scope can be expanded. Therefore, a round without a warning only proves conformity with the current contract, not fidelity to the initial objective or plan.

## Risk

An agent can modify objective, scope, or evidence so that work already done appears aligned. A prolonged absence of signals may indicate low sensitivity, not exceptional execution.

## Fix required

1. Freeze the objective and initial plan with a hash/baseline.
2. Record contract changes as explicit events, with a reason.
3. Distinguish reproducible criterion evidence from candidate paths.
4. Alert when a contract change reduces the deviation of surface that already exists.

## Evidence of the fix

- `oguard start` freezes the objective, round, scope, and hash of the initial contract in `.oguard/session-baseline.json` without overwriting it.
- If the later contract changes objective, round, or scope without `contract_change.reason`, `round-end` emits `contract-accommodation` and preserves an append-only event with the hashes and the missing reason.
- `synthetic/scenarios/e003-contract-accommodation.json` reproduces a scope expansion that turns an already-touched file into in-scope; `test/contract-drift.test.mjs` evaluates it.
- `test/portable-alpha.test.mjs` repeats the full trajectory in a temporary Git repository: it starts a session, writes outside the initial scope, expands the contract, and gets the warning.

## Limit

The first version is deliberately conservative: every material change without a reason triggers an alert because it does not yet compute, counterfactually, how much the deviation was reduced. Therefore the alert means "may accommodate work already done," not proof of intent or strategic drift. The false positive rate, the utility to the agent, and the real sensitivity must be measured with labeled episodes before hardening the policy.
