# Objective Guard Episodes and Findings

This directory keeps real episodes that change the understanding of the product. It complements `evidence/`: the dataset records structured observations; the episodes explain decisions, reasoning failures, and corrections of direction that do not yet fit into an automatic metric.

## When to record

- substitution of the main objective by a sub-objective;
- first organic finding of a rule;
- missed signal or one emitted too late;
- confirmed false positive or false negative;
- human intervention that corrects the agent;
- result that refutes or weakens a hypothesis;
- material architecture or protocol change motivated by evidence.

## Minimum contract

Each episode includes:

1. date and context;
2. main objective, phase objective, and round objective;
3. observed trajectory;
4. expected behavior and actual guard behavior;
5. available evidence;
6. classification and limits of that classification;
7. correction adopted;
8. impact on the thesis;
9. verifiable follow-up action.

Episodes are append-only in an epistemological sense: they can receive a later correction section, but must not erase the historical interpretation that motivated a decision.

## Index

| ID | Episode | Classification | Main decision |
| --- | --- | --- | --- |
| E-001 | [Local progress that substituted the statistical objective](E-001-objective-substituted-by-calibration.md) | Missed organic signal; absent capability | Freeze universal detectors and prioritize hierarchical objectives, surface, and evidence. |
| E-002 | [A reported block that never reached the exit code](E-002-blocking-exit-code-not-propagated.md) | Deterministic signal not propagated | Require consistency between status, JSON, and exit code in the portable fixture. |
| E-003 | [A mutable contract can accommodate drift](E-003-mutable-contract-can-hide-drift.md) | Low-sensitivity hypothesis | Freeze the initial plan and audit contract changes. |
| E-004 | [An approved round can still have a boundary outside scope](E-004-absent-signal-does-not-prove-alignment.md) | Confirmed sensitivity limitation | Treat an absent warning as low sensitivity, not as a certificate of strategic fidelity. |
| E-005 | [A new phase without a declared round triggers `goal-substitution`](E-005-new-phase-without-declared-round.md) | Correct contract signal | Declare a successor round before new work instead of rewriting the contract retroactively. |
| E-013 | [A path `pass` does not certify strategic direction](E-013-pass-without-strategic-alignment.md) | Potential strategic false negative | Separate the frozen plan, justified changes, and semantic evidence. |
| E-014 | [A nested Git repository hid the project's contract](E-014-nested-hook-hidden-by-git.md) | Integration false negative | Resolve the contract upward from the file, before resolving Git. |
| E-015 | [Two equivalent physical paths hid a hook signal](E-015-hook-path-canonicalization.md) | Integration false negative | Canonicalize root and file before comparing them. |
| E-016 | [A typed round can lack a verifiable closing criterion](E-016-closing-criterion-not-declared.md) | Protocol limitation | Declare criteria and their checks before editing. |
| E-017 | [Measuring a transition does not yet prove the guard's effect](E-017-transition-is-not-causality.md) | Causal limit of telemetry | Accumulate labeled cases and trial control/placebo/guard. |
| E-018 | [The global inventory hid real events due to non-canonical paths](E-018-global-inventory-non-canonical-paths.md) | Observability false negative | Canonicalize the root when discovering projects, before hashing it. |
| E-019 | [Incremental discovery overwrote the global inventory](E-019-incremental-discovery-overwrote-inventory.md) | Observability false negative | Merge previous and new records; forgetting requires an explicit operation. |
| E-020 | [A pin fix exposed a shim change outside the declared round](E-020-schema-forge-scope-drift-shim.md) | Organic scope signal | Separate logical changes without retroactively expanding the contract. |
| E-021 | [Two equivalent npm forms made a valid close incomplete](E-021-equivalent-commands-incomplete-verification.md) | Planning limitation | Canonicalize safe check aliases or recommend them before closing. |
| E-022 | [A documented investigation could not close without explicit obligations](E-022-research-without-declared-obligations.md) | Protocol signal | Declare evidence and conclusion for investigation rounds. |
| E-023 | [The Phase 1 gate refuted the local latency budget](E-023-phase-1-gate-latency-not-met.md) | Null calibration result | Maintain the corpus and thresholds; separate spawn cost from detector cost before optimizing. |
| E-024 | [An accepted performance debt blocked starting the next round](E-024-transition-blocked-by-accepted-debt.md) | Transition blocked by accepted debt | Accept the baseline only with an actor, reason, clean tree, and preserved historical result. |
| E-025 | [A pre-edit gate installed on `PostToolUse` would have arrived too late](E-025-pretooluse-gate-installed-late.md) | Prevented integration false negative | Validate the lifecycle event and denial capability, not just valid JSON. |
| E-026 | [The required KPI policy fell outside the round's scope](E-026-kpi-policy-out-of-scope.md) | Organic scope signal | Do not accommodate the contract; declare versioned policies before editing. |
| E-027 | [An ignored plan enabled self-referential evidence](E-027-plan-ignored-and-self-referential-evidence.md) | Observability false `pass` | Validate observable scope, exclude bookkeeping, and require an optional ledger. |
| E-028 | [The local contract blocked the rotation it needed](E-028-local-contract-blocked-rotation.md) | Lifecycle defect | Allow only the untracked contract created by init/start. |
| E-029 | [Operational feedback revealed ambiguous remedies before and after editing](E-029-operational-feedback-ambiguous-remedies.md) | Organic protocol signal | Explain command, root, and baseline; warn about criteria that cannot be proven before editing. |
| E-030 | [An early contract can freeze a hypothesis not yet inspected](E-030-provisional-intent-before-contract.md) | Protocol-friction fix | Separate the revisable draft, the structural scan, and the frozen contract. |
| E-031 | [The initial contract could block its own configuration](E-031-circular-contract-bootstrap.md) | Lifecycle defect | Declare checks and obligations via the CLI; allow an audited bootstrap of configuration only. |
| E-032 | [Generated mirrors drifted in two days because no check enforced the rule](E-032-generated-mirrors-drifted-without-a-guard.md) | Missed signal from an undeclared check | Move the language-pairing invariant from prose into the docs guard. |
| E-033 | [The test suite could not survive its own round rotation](E-033-test-suite-could-not-survive-round-rotation.md) | Test coupling defect | Decouple assertions from the live contract under a round that declares `test/**`. |
| E-034 | [The preflight remedy named an unavailable runtime](E-034-preflight-remedy-named-an-unavailable-runtime.md) | Missed usability signal | Fall back to `node` and make preflight recovery explicit. |
| E-035 | [A long multi-agent round exposed traceability gaps](E-035-long-multi-agent-round-exposed-traceability-gaps.md) | Organic protocol and traceability signal | Separate durable governance from inherited subround state and accumulate evidence by criterion; defer Orca to an adapter. |
| E-036 | [The coverage KPI counted workflow events as edits](E-036-kpi-coverage-counted-workflow-events.md) | Observability-statistics false negative | Derive edit observations from `PostToolUse` and exclude workflow events from the coverage denominator. |
| E-037 | [Broad evidence paths credited an unrelated PRD](E-037-broad-evidence-paths-credited-unrelated-prd.md) | Attribution false `pass` | Make terminal closure and successor intent explicit; path evidence remains candidate evidence only. |
| E-038 | [Awareness integration and an inert installed CLI](E-038-awareness-integration-and-inert-cli.md) | Integration failure and protocol correction | Read optional worktree context once and verify the installed executable, not just its source. |
| E-039 | [Close counts overstated analysis readiness](E-039-passive-sample-readiness.md) | Data-readiness correction and integration limitation | Group repeated closes, preserve label provenance and compare baselines only after adjudication. |
| E-040 | [Installed AWC used development paths and divergent global hooks](E-040-installed-awc-paths-and-hooks.md) | Packaging and integration defect | Test packed lifecycle with PATH engines and reconcile owned global hooks. |
