Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
215859d
Add session telemetry (#1246)
burtenshaw Oct 5, 2026
8823284
Validate runtime repeatability (#1247)
burtenshaw Oct 5, 2026
568fce2
Merge main into telemetry review, preserving shutdown lifecycle
burtenshaw Oct 26, 2026
497df99
fix(validation): mark failed session operations incomplete (#1320)
burtenshaw Oct 27, 2026
ffa9cfb
Merge telemetry parent into repeatability review, retaining network c…
burtenshaw Oct 27, 2026
07a867e
fix(validation): distinguish unsupported session telemetry (#1321)
burtenshaw Oct 27, 2026
b9a5e08
docs(validation): match merged Docker acceptance inventory
burtenshaw Oct 27, 2026
28ed697
Merge remote-tracking branch 'origin/main' into HEAD
burtenshaw Nov 9, 2026
116e743
Merge PR #1320 telemetry into qualified runtime validation
burtenshaw Nov 9, 2026
e97cd10
Merge PR #1321 repeatability into qualified telemetry validation
burtenshaw Nov 9, 2026
dd083f1
Merge artifact fidelity fix into PR #1320 integration
burtenshaw Nov 9, 2026
d3b8893
Merge updated PR #1320 integration and artifact fidelity into PR #1321
burtenshaw Nov 9, 2026
f4b50cc
fix(validation): preserve exact and deep telemetry during integration
burtenshaw Nov 9, 2026
e09c7f2
Merge exact telemetry into PR #1321 and account for full schema evidence
burtenshaw Nov 9, 2026
92ed6cf
fix(validation): preserve exact repeatability comparisons
burtenshaw Nov 9, 2026
1d21ab7
Merge exact repeatability grading fix into PR #1321 integration
burtenshaw Nov 9, 2026
34dfdf7
fix(validation): retain supported replay variance failures
burtenshaw Nov 9, 2026
794df1e
Merge reviewed repeatability edge fixes into PR #1321 integration
burtenshaw Nov 9, 2026
04aa012
Merge commit 'e52fcd59f1dbc6dbe22c49d5f4d4f3bc45d13d14' into HEAD
burtenshaw Nov 9, 2026
ae58e80
Merge commit '04aa01202ef09b055fb277de8b0f570020b20512' into HEAD
burtenshaw Nov 9, 2026
8efd5cd
Merge commit 'c94dae2031ebcedcbcd7829f233253b726bd958b' into HEAD
burtenshaw Nov 9, 2026
5ff8e7f
Merge commit '8efd5cd1b5337058dcadd21218e4e63ae7068348' into HEAD
burtenshaw Nov 9, 2026
aa494a6
Merge commit '92b600d25ad3180da7174c480f535b8b3ae824d0' into HEAD
burtenshaw Nov 9, 2026
362fb9e
Merge commit 'aa494a663e17f6b01990c945aaf35aa88bcdd672' into HEAD
burtenshaw Nov 9, 2026
3ff252d
Merge commit '85b2accfd7db702a761f5f8af8123f8c2f05cc42' into HEAD
burtenshaw Nov 9, 2026
85b2acc
Merge commit 'fccc09ce5b62ad9b6c018008d537b0f09d08bb3e' into HEAD
burtenshaw Nov 9, 2026
be2d9bc
fix(validation): scrub credentials from all runtime evidence
cursoragent Nov 9, 2026
5c251cc
Merge token scrubbing into repeatability validation
burtenshaw Nov 9, 2026
bf50009
Preserve replay budget across independent validation probes
burtenshaw Nov 9, 2026
0517f2a
fix(validation): scrub control tokens in every collection
burtenshaw Nov 9, 2026
cf10fc1
Merge reviewed token scrubbing and retain external regression coverage
burtenshaw Nov 9, 2026
ff9ca54
Merge commit 'cf10fc10d4235c3f5e5373cf78a333b79383d34c' into HEAD
burtenshaw Nov 9, 2026
304a735
test(validation): include restored replays in token privacy fixture
burtenshaw Nov 9, 2026
18f3859
fix(validation): retain unsupported replay prefixes
burtenshaw Nov 9, 2026
339ea73
test(validation): explain expected replay fixture disconnect
burtenshaw Nov 9, 2026
226b4ae
Merge landed telemetry snapshot without changing reviewed repeatabili…
burtenshaw Nov 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 22 additions & 10 deletions docs/source/reference/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,16 @@ openenv validate ./my_env --level runtime --local --output report.json
Runtime validation requires Docker and a `validation.execution` declaration in
`openenv.yaml`. The declaration points to a bounded JSON replay plan containing
one reset and a sequence of actions. The validator builds an immutable image,
opens one WebSocket session, measures reward values, observation schemas and
state continuity, and removes the container even if a check fails.

The runtime level implements startup, reward, observation, state, network
policy, host containment, resource bounds, episode isolation and oracle
containment checks. Other applicable Level 2 checks appear explicitly as `SKIP`; they make
collects the original episode, repeats the plan in a fresh WebSocket session and
with a different seed, then replays it in a fresh container when the provider
supports that capability. Docker validation uses two containers concurrently
during the fresh-container replay. Both use the same immutable image and are
removed even if a check fails.

The runtime level implements startup, reward, observation, state, network policy,
host containment, resource bounds, episode isolation, oracle containment, seed
forwarding, determinism and emitted trajectory record checks. Other applicable
Level 2 checks appear explicitly as `SKIP`; they make
the result `WARN`, which exits zero and does not mean Level 2 is complete.
`FAIL` exits 1, unsupported package formats exit 2, and internal or policy errors
exit 3. `--level semantic`
Expand Down Expand Up @@ -139,11 +143,19 @@ these measured responses. It does not test arbitrary MCP tool reads, partial or
transformed disclosures, or writes to reward artifacts; it does not certify the
full agent boundary.
`--local` explicitly selects this default package mode and rejects a remote URL.
The declared `episode_timeout_s` bounds collection; a reset or judged step may use
its remaining budget. Collection failures appear once under `runtime.startup`,
with dependent contract checks skipped and the completed trace retained.
Explicitly unsupported session telemetry yields a `SKIP` naming `session_telemetry`;
authorization refusals and malformed telemetry remain failures. Seed control
reports observed forwarding to reset, separately from empirical determinism.
The declared `episode_timeout_s` bounds each episode; a reset or judged step may use
its remaining budget. Original and replay collection share a 300-second deadline
and a 32 MiB evidence budget. `llm_judged` requests 20 identical-input episodes,
including the original, plus the different-seed episode. Validation repeats the
actions and any external service calls they make, so budget for the additional
runtime and cost. Missing replay samples cannot pass determinism. Primary episode
collection failures appear under `runtime.startup`, with dependent contract checks
skipped and the completed trace retained.
Validator JSON numeric-range and depth limits report named capability `SKIP`s,
preserving the received evidence.
preserving the received evidence when it can be retained without validation credentials.

Credential delivery is deferred for this release. Set
`validation.execution.requires_credentials: true` when the environment needs an
Expand Down
19 changes: 16 additions & 3 deletions rfcs/008-environment-auto-validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ limitations. Alternate DNS, unmatched addresses and unsupported address families
must fail closed. This requires a separate reviewed enforcement implementation;
parsing these declarations does not claim they are enforced.

### Later runtime evidence contracts
### Runtime replay evidence (PR5)

Seed acceptance and empirical determinism are separate findings. A reset that
silently drops its seed does not establish seed control, while a deterministic
Expand All @@ -616,11 +616,24 @@ policy-owned volatile metadata can be excluded. Authors cannot exclude fields.
For `llm_judged`, the bounded variance path uses 20 completed identical-input fresh
replays and population reward variance in reward-squared units, compared to the
declared bound. The total run budget bounds all samples; fewer than 20 is incomplete.
An unscored non-terminal step contributes no reward variance. Its null position must
agree across replays; a null/numeric mismatch is a divergence. Variance is measured
separately at each numeric step position, and an entirely unscored episode is
incomplete rather than passing. Terminal null rewards remain invalid.
This procedure is a runtime check, not a statistical confidence claim.

The initial implementation compares the baseline against a new session and an
independently inspected new container, and separately requests a different seed.
The judged sample count includes the completed baseline. Container identity must
change while image identity remains fixed. There are no volatile-field exclusions
in this version. Collection shares a 300-second deadline and retains at most
32 MiB across baseline and replay evidence. Missing samples, missing provider
capabilities and failed cleanup cannot produce a passing determinism finding.
`replays.json` preserves completed traces, telemetry, identity and cleanup outcomes.

Session telemetry for seed handling, named rubric/configuration, child attribution
and subject-emitted record references is orchestrator-only. A future protocol
slice must authorize access with an opt-in, random per-run/per-session capability
and subject-emitted record references is orchestrator-only. The protocol
authorizes access with an opt-in, random per-run/per-session capability
attached to the **same** replay connection, reject unauthorized/cross-session
reads and never expose telemetry as agent MCP tools. A second WebSocket creates
another environment and cannot supply evidence for the measured instance.
Expand Down
Loading
Loading