Skip to content
Merged
26 changes: 22 additions & 4 deletions docs/adr/0001-episode-semantics-boundaries.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,25 @@ and window_seconds are integers, and the terminal-failure flag is a Boolean.
Coercible strings and numeric Boolean equivalents fail closed. Unsupported rules
or semantically stale baselines are rejected before candidate selection.

A separate oracle slice must bind this core to the committed baseline, validate
all candidate-to-episode evidence references, and record the measured fixture
outcome before the hypothesis is accepted. The runtime and `loglens.report.v3`
remain unchanged.
The oracle slice consumes that baseline contract and requires candidate,
episode, and event-decision references to agree before materializing output.

On `continuous_background_two_peaks`, the v0.6 baseline emits one episode. The
candidate emits two: `line:1` through `line:5` and `line:11` through `line:15`.
It covers ten dense-peak events exactly once, excludes the five bridge events,
and materializes these deterministic IDs:

- `finding:brute_force:584fd14b544a7959`
- `finding:brute_force:a885dcb623777120`

Reversing the fixture input produces the same ordered oracle. Boundary tests
also retain one episode at an exact 600-second cooldown gap and permit two at
601 seconds.

This accepts the hypothesis for the bounded fixture only. Isolated bursts,
maximal-window ties, shared evidence, background calibration, and a production
complexity design still require independent evidence. `Detector::analyze()` and
`loglens.report.v3` remain unchanged.

## Alternatives considered

Expand Down Expand Up @@ -161,3 +176,6 @@ remain unchanged.
- [`Candidate core tests`](../../tests/test_episode_candidate_core.py)
- [`Baseline contract`](../../scripts/episode_baseline_contract.py)
- [`Baseline contract tests`](../../tests/test_episode_candidate_baseline_contract.py)
- [`Candidate evaluator`](../../scripts/evaluate_episode_candidate.py)
- [`Candidate regression tests`](../../tests/test_episode_candidate.py)
- [`Candidate oracle`](../../tests/fixtures/episode_semantics_v0.7/continuous_background_two_peaks/candidate.window-separated-v1.expected.json)
Loading
Loading