# E-004 — An approved round can still have a boundary outside scope

- Date: 2026-08-02
- Status: observed during dogfooding; sensitivity limitation confirmed, not a false negative of a declared rule.

## Hierarchy of objectives

- Parent objective: detect deterministic errors and objective drift early, with traceable evidence.
- Round objective: deliver typed sessions, deterministic planning, and explicit coverage at closure.
- Concrete contribution: separate `fast` and `final`, record the verdict's scope, and preserve a versioned replay.

## Observed trajectory

The round modified code, tests, the documentation contract, and the reproducible scenario `synthetic/scenarios/e009-fast-final-modes.json`. The current contract declares `src/**`, `test/**`, `docs/**`, and earlier synthetic scenarios, but not that new scenario.

`oguard align --json` reported a material surface of 15 files and one file outside scope. It also attributed seven path matches to the session, planner, and verdict KRs; because of that candidate evidence it did not emit `goal-substitution`. `oguard round-end` returned `PASS` with full verification.

## Expected and actual behavior

The expected behavior of the current version was exactly that: `goal-substitution` simultaneously requires material surface, zero candidate evidence for the target KRs, and declared deviation. The file outside scope remained visible as a fact, not as an alert.

The actual result confirms a strategic limit: `PASS` means the checks and the current policy did not find a blocking violation. It does not mean the entire trajectory stayed within the frozen plan, nor that path-based evidence is semantic.

## Evidence

- `oguard align --json` output: `outside_scope_files = ["synthetic/scenarios/e009-fast-final-modes.json"]`, `warnings = []`;
- `npm run round:end` output: `PASS`, 15 files, 131 churn, 1 file outside scope;
- `evidence/runs/dogfood.json`: reproducible event for the round;
- `test/portable-alpha.test.mjs` and `synthetic/scenarios/e009-fast-final-modes.json`: proof that the change does contribute to the declared modes capability.

## Classification and limits

It is not a false negative of `goal-substitution`: that rule does not promise to alert on every individual scope excursion when candidate evidence exists for a KR. It is an organic observation of low sensitivity in the composite policy and supports the caution raised in E-003: absence of a warning is not a certificate of strategic fidelity.

It also does not prove that real drift occurred. The out-of-scope scenario is a regression artifact consistent with the implementation. The valid conclusion is narrower: the guard exposed the discrepancy but did not elevate it to an actionable signal.

## Correction of direction

`expected_paths` is not expanded retroactively to accommodate work already done: doing so would erase the observation the round was meant to preserve. Future evolution must compare against a frozen baseline and distinguish:

1. an explicit, justified exception or contract change made before the work;
2. reproducible criterion evidence;
3. candidate path-based evidence;
4. a visible out-of-scope boundary even when other KRs have matches.

## Impact on the thesis and follow-up

The episode supports the negative thesis: a paths-and-checks guard can be useful without being a sufficient arbiter of direction. To claim strategic utility, it will need to accumulate labeled cases where an early signal changes a trajectory, and measure false positives when the interaction between scope and evidence is hardened.

As a regression, the passive report already preserves `mode`, `scope`, surface, criteria, and checks. What is still missing is an explicit, calibrated, out-of-sample-evaluated policy that decides when the combination of an out-of-scope boundary and insufficient evidence deserves a warning.
