@bjoernrochel/sevro 0.1.0-rc.2 → 0.1.0-rc.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +170 -0
- package/LICENSE +63 -136
- package/README.md +83 -66
- package/docs/README.md +44 -0
- package/docs/acknowledgements.md +14 -0
- package/docs/architecture.md +146 -0
- package/docs/assets/README.md +27 -0
- package/docs/assets/sevro-logo.png +0 -0
- package/docs/assets/sevro-symbol.svg +1 -0
- package/docs/assets/sevro-wordmark.svg +1 -0
- package/docs/builtin-graders-v1.md +41 -13
- package/docs/codex-host.md +184 -52
- package/docs/contracts.md +19 -0
- package/docs/creating-cases.md +139 -0
- package/docs/development-cli.md +190 -30
- package/docs/documentation-quality.md +61 -0
- package/docs/evaluation-workflow.md +110 -0
- package/docs/evidence/code-mode-controls-71.md +64 -0
- package/docs/evidence/code-mode-programs-85.md +64 -0
- package/docs/evidence/codex-state-73/README.md +204 -0
- package/docs/evidence/codex-state-73/darrow-migration.patch +182 -0
- package/docs/evidence/codex-state-73/results.json +661 -0
- package/docs/evidence/local-http-74.md +104 -0
- package/docs/evidence/runtime-startup-30/README.md +185 -0
- package/docs/evidence/runtime-startup-30/after.json +319 -0
- package/docs/evidence/runtime-startup-30/baseline-timeout.jsonl +2 -0
- package/docs/evidence/runtime-startup-30/before.json +403 -0
- package/docs/evidence/runtime-startup-30/consumer-smoke.json +63 -0
- package/docs/evidence/runtime-startup-30/full-policy-diagnostic.jsonl +3 -0
- package/docs/evidence/runtime-startup-30/minimal-policy-diagnostic.jsonl +3 -0
- package/docs/evidence/runtime-startup-30/plugin-template-assessment.json +20 -0
- package/docs/evidence/runtime-startup-30/seedless-timeout.jsonl +2 -0
- package/docs/evidence/skill-reads-70/results.json +823 -0
- package/docs/evidence.md +21 -0
- package/docs/extension-protocol-v1.md +50 -16
- package/docs/fixture-cleanup-validation.md +3 -0
- package/docs/getting-started.md +102 -0
- package/docs/guide-evaluation.md +89 -0
- package/docs/guide-verification.json +239 -0
- package/docs/identity-v1.md +35 -1
- package/docs/installing.md +88 -0
- package/docs/licenses/BUSL-1.1-0.1.0-rc.2.txt +159 -0
- package/docs/licensing.md +42 -0
- package/docs/native-controls.md +76 -5
- package/docs/native-hosts.md +228 -0
- package/docs/reading-results.md +141 -0
- package/docs/recipes.md +489 -0
- package/docs/releases.md +81 -40
- package/docs/report-v1.md +29 -1
- package/docs/results-v1.md +180 -0
- package/docs/run-settings-v1.md +147 -0
- package/docs/running-evaluations.md +31 -0
- package/docs/runtime-v1.md +614 -0
- package/docs/specs/repository-guide.md +58 -0
- package/docs/troubleshooting.md +30 -0
- package/docs/typescript-quality.md +234 -0
- package/docs/usability-study.md +114 -0
- package/examples/basic/host.ts +2 -2
- package/examples/recipes/candidate.ts +26 -0
- package/examples/recipes/cases/coding-change.json +21 -0
- package/examples/recipes/cases/host-tools.json +21 -0
- package/examples/recipes/cases/mise.json +21 -0
- package/examples/recipes/cases/node.json +21 -0
- package/examples/recipes/cases/python-uv.json +21 -0
- package/examples/recipes/cases/semantic.json +17 -0
- package/examples/recipes/coding-change/check.ts +23 -0
- package/examples/recipes/extension-artifacts.ts +65 -0
- package/examples/recipes/extension-methods.ts +174 -0
- package/examples/recipes/extension.ts +37 -0
- package/examples/recipes/repository-skill/.agents/skills/startup-guide/SKILL.md +7 -0
- package/examples/recipes/repository-skill/.claude/skills/startup-guide/SKILL.md +7 -0
- package/examples/recipes/repository-skill/README.md +3 -0
- package/examples/recipes/run-inputs.ts +188 -0
- package/examples/recipes/run-options.ts +131 -0
- package/examples/recipes/run.ts +63 -0
- package/examples/recipes/runtime/empty.json +1 -0
- package/examples/recipes/runtime/goals.json +1 -0
- package/examples/recipes/runtime/mise.json +6 -0
- package/examples/recipes/runtime/path.json +1 -0
- package/examples/recipes/runtime/plugins.json +4 -0
- package/examples/recipes/runtime/python-uv.json +10 -0
- package/examples/recipes/semantic-judge.ts +29 -0
- package/examples/templates/coding/adapter.ts +17 -0
- package/examples/templates/coding/case.json +15 -0
- package/examples/templates/repository-skill/.agents/skills/startup-guide/SKILL.md +6 -0
- package/examples/templates/repository-skill/extension-data.ts +64 -0
- package/examples/templates/repository-skill/extension.ts +31 -0
- package/examples/templates/response/adapter.ts +12 -0
- package/examples/templates/response/case.json +13 -0
- package/package.json +39 -6
- package/schemas/report-v1.schema.json +9 -0
- package/schemas/run-evidence-v1.schema.json +2 -1
- package/schemas/runtime-v1.schema.json +193 -0
- package/src/advisory.ts +10 -5
- package/src/candidate-artifacts.ts +208 -0
- package/src/candidate-codex-state.ts +185 -0
- package/src/case-validation.ts +105 -0
- package/src/cli/cancellation.ts +20 -0
- package/src/cli/command.ts +81 -0
- package/src/cli/completion.ts +15 -0
- package/src/cli/demo.ts +59 -0
- package/src/cli/evaluation.ts +55 -0
- package/src/cli/extension.ts +79 -0
- package/src/cli/help.ts +222 -0
- package/src/cli/hosts.ts +59 -0
- package/src/cli/init-settings.ts +30 -0
- package/src/cli/init.ts +111 -0
- package/src/cli/invocation.ts +627 -0
- package/src/cli/loading.ts +151 -0
- package/src/cli/preparation.ts +163 -0
- package/src/cli/presentation.ts +91 -0
- package/src/cli/progress.ts +6 -0
- package/src/cli/run-manifest.ts +133 -0
- package/src/cli/run-options.ts +101 -0
- package/src/cli/run-overrides.ts +83 -0
- package/src/cli/settings.ts +160 -0
- package/src/cli/summary.ts +43 -0
- package/src/cli.ts +13 -843
- package/src/contract-types.ts +94 -0
- package/src/engine.ts +19 -2373
- package/src/evaluation/advisory.ts +150 -0
- package/src/evaluation/check-plan.ts +510 -0
- package/src/evaluation/collection.ts +88 -0
- package/src/evaluation/context.ts +10 -0
- package/src/evaluation/grading-host.ts +39 -0
- package/src/evaluation/grading.ts +258 -0
- package/src/evaluation/invocation-plan.ts +548 -0
- package/src/evaluation/plan.ts +736 -0
- package/src/evaluation/progress.ts +19 -0
- package/src/evaluation/resources.ts +241 -0
- package/src/evaluation/run.ts +206 -0
- package/src/{trial-scheduler.ts → evaluation/scheduler.ts} +3 -1
- package/src/evaluation/semantic.ts +312 -0
- package/src/evaluation/trial.ts +866 -0
- package/src/evaluation/types.ts +207 -0
- package/src/evidence/host-results.ts +92 -0
- package/src/evidence/retained-artifacts.ts +18 -0
- package/src/evidence/trial-writer.ts +203 -0
- package/src/evidence/usage.ts +17 -0
- package/src/extension-client.ts +228 -148
- package/src/extension-session.ts +326 -195
- package/src/fixtures/advisory.ts +338 -0
- package/src/fixtures/bin.ts +57 -0
- package/src/{fixture-cleanup.ts → fixtures/cleanup.ts} +13 -7
- package/src/fixtures/create.ts +187 -0
- package/src/fixtures/generated.ts +300 -0
- package/src/fixtures/git-hooks.ts +24 -0
- package/src/fixtures/preparation.ts +270 -0
- package/src/{repository-fixture.ts → fixtures/repository.ts} +207 -85
- package/src/fixtures/setup.ts +224 -0
- package/src/fixtures/tools.ts +88 -0
- package/src/fixtures/workspace-state.ts +212 -0
- package/src/generated/cli-result.cjs +2 -0
- package/src/generated/cli-result.d.cts +3 -0
- package/src/generated/extension.cjs +2 -0
- package/src/generated/extension.d.cts +3 -0
- package/src/generated/report.cjs +2 -0
- package/src/generated/report.d.cts +3 -0
- package/src/generated/run-evidence.cjs +2 -0
- package/src/generated/run-evidence.d.cts +3 -0
- package/src/generated/runtime.cjs +2 -0
- package/src/generated/runtime.d.cts +3 -0
- package/src/graders/artifact.ts +56 -23
- package/src/graders/git-head.ts +79 -75
- package/src/graders/output.ts +222 -140
- package/src/graders/semantic.ts +102 -43
- package/src/graders/shell.ts +379 -207
- package/src/host-diagnostic-redaction.ts +52 -0
- package/src/host-diagnostics.ts +319 -0
- package/src/hosts/claude-continuation.ts +63 -18
- package/src/hosts/claude-credential.ts +43 -62
- package/src/hosts/claude-events.ts +86 -51
- package/src/hosts/claude-keychain.ts +59 -0
- package/src/hosts/claude-native-goal.ts +57 -33
- package/src/hosts/claude-process.ts +111 -0
- package/src/hosts/claude-repository-invocation.ts +208 -117
- package/src/hosts/claude-settings.ts +240 -21
- package/src/hosts/claude-skill-activations.ts +166 -0
- package/src/hosts/claude-state.ts +403 -0
- package/src/hosts/claude-tool-calls.ts +171 -106
- package/src/hosts/claude.ts +561 -451
- package/src/hosts/codex-app-server.ts +326 -178
- package/src/hosts/codex-configuration.ts +44 -18
- package/src/hosts/codex-events.ts +97 -60
- package/src/hosts/codex-exec-controls.ts +516 -0
- package/src/hosts/codex-invocation.ts +70 -0
- package/src/hosts/codex-marketplace.ts +283 -0
- package/src/hosts/codex-native-calls.ts +546 -500
- package/src/hosts/codex-process.ts +202 -0
- package/src/hosts/codex-profile.ts +257 -28
- package/src/hosts/codex-session-files.ts +106 -0
- package/src/hosts/codex-state.ts +492 -0
- package/src/hosts/codex.ts +783 -832
- package/src/hosts/isolation-common.ts +94 -0
- package/src/hosts/isolation-roots.ts +54 -27
- package/src/hosts/isolation.ts +10 -0
- package/src/hosts/linux-sandbox.ts +159 -0
- package/src/hosts/mac-sandbox.ts +187 -61
- package/src/hosts/native-controls.ts +152 -62
- package/src/hosts/process-lifecycle.ts +37 -0
- package/src/hosts/protected-worktrees.ts +51 -19
- package/src/hosts/skill-hook-catalog.ts +131 -0
- package/src/hosts/skill-hook-handler.ts +374 -0
- package/src/hosts/skill-hooks.ts +580 -0
- package/src/hosts/workspace-fingerprint.ts +55 -35
- package/src/identity.ts +102 -48
- package/src/instrumentation.ts +109 -48
- package/src/native-transcript-state.ts +131 -0
- package/src/native-transcript-view.ts +90 -0
- package/src/native-transcripts.ts +286 -0
- package/src/process-lifecycle.ts +150 -0
- package/src/provenance.ts +161 -81
- package/src/prune.ts +215 -0
- package/src/report.ts +172 -140
- package/src/resolved-case.ts +33 -0
- package/src/results-lock.ts +29 -0
- package/src/results.ts +133 -86
- package/src/run-owner.ts +154 -63
- package/src/runtime/config.ts +456 -0
- package/src/runtime/discovery-apple.ts +90 -0
- package/src/runtime/discovery-providers.ts +63 -0
- package/src/runtime/discovery.ts +70 -0
- package/src/runtime/hook-processes.ts +97 -0
- package/src/runtime/hooks.ts +476 -0
- package/src/runtime/paths.ts +313 -0
- package/src/runtime/query.ts +85 -0
- package/src/runtime/seeds.ts +134 -0
- package/src/runtime/shared-cache.ts +143 -0
- package/src/runtime/state.ts +143 -0
- package/src/schema-types.ts +198 -0
- package/src/schema.ts +15 -19
- package/src/transcript-retention.ts +146 -0
- package/src/value-guards.ts +20 -0
- package/src/advisory-fixture.ts +0 -282
- package/src/fixture-bin.ts +0 -87
- package/src/fixture-setup.ts +0 -163
- package/src/generated-fixture.ts +0 -220
- package/src/git-hooks.ts +0 -63
- package/src/hosts/claude-nested-skills.ts +0 -218
- package/src/hosts/codex-command-output.ts +0 -399
- package/src/hosts/codex-executor-command.ts +0 -195
- package/src/hosts/codex-skill-reads.ts +0 -391
- package/src/preparation.ts +0 -211
package/docs/releases.md
CHANGED
|
@@ -7,12 +7,19 @@ exact semantic version; development versions containing `-dev` are not release
|
|
|
7
7
|
candidates. Darrow pins the published version in development dependencies and
|
|
8
8
|
its lockfile. Marketplace plugins do not depend on Sevro.
|
|
9
9
|
|
|
10
|
+
The [current release](installing.md#current-release) uses the current [licensing terms](licensing.md).
|
|
11
|
+
Published `rc.1` and `rc.2` retain their original BSL grants. Always select a new
|
|
12
|
+
version for publication; a local development tarball does not replace an
|
|
13
|
+
already published artifact.
|
|
14
|
+
|
|
10
15
|
## Candidate contract
|
|
11
16
|
|
|
12
17
|
Prepare one candidate from the intended release tag and package metadata. The
|
|
13
18
|
tag must equal `v<package version>`. Package metadata must identify the public
|
|
14
19
|
repository, registry, distribution tag, and an owner-selected license with its
|
|
15
|
-
nonempty `LICENSE` file.
|
|
20
|
+
nonempty `LICENSE` file. `latest` identifies the recommended default release,
|
|
21
|
+
including a release candidate. Use `next` for a preview that should require an
|
|
22
|
+
explicit opt-in. Preparation accepts either tag for prerelease and stable versions.
|
|
16
23
|
|
|
17
24
|
Preparation creates a new absolute output directory and never replaces an
|
|
18
25
|
existing directory. It packs with lifecycle scripts disabled, retains the npm
|
|
@@ -21,8 +28,9 @@ The record identifies the package, version, release tag, distribution tag,
|
|
|
21
28
|
tarball SHA-256 and npm SHA-512 integrity, and the preparation runtimes.
|
|
22
29
|
Preparation does not publish a package or create a Git tag.
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
For development or explicitly requested diagnostics, the package installation
|
|
32
|
+
check accepts `--tarball <absolute file>` to verify an exact candidate without
|
|
33
|
+
repacking. It is not a release step. The supplied tarball remains intact.
|
|
26
34
|
Its installed name and version must match the source metadata. Installation,
|
|
27
35
|
CLI execution, generic grading, prompt-only execution, release provenance,
|
|
28
36
|
reporting, and supported deterministic native fixtures run without source Git
|
|
@@ -30,59 +38,92 @@ metadata in the installed package.
|
|
|
30
38
|
|
|
31
39
|
## Maintainer workflow
|
|
32
40
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
Release already verified code. Do not rerun tests locally or in CI as part of a
|
|
42
|
+
release: reuse the successful source CI run. Code, dependencies, schemas, tests,
|
|
43
|
+
examples, license changes, and other quality inputs belong in ordinary changes
|
|
44
|
+
with their own CI before starting the release.
|
|
45
|
+
|
|
46
|
+
1. Start a release branch from verified `main`. Update `package.json.version`
|
|
47
|
+
to a new release version, keep the selected license, and run `bun run docs:sync`.
|
|
48
|
+
Set `publishConfig.tag` to `latest` for the recommended default or `next`
|
|
49
|
+
for an opt-in preview. Commit and open a pull request; every release commit
|
|
50
|
+
must reach `main` through a PR. Never attempt a direct release push to `main`.
|
|
51
|
+
2. Merge the release PR after its static checks and reused CI evidence pass.
|
|
52
|
+
Release CI compares the candidate against a successful ancestor run on
|
|
53
|
+
`main`, permitting only version/distribution-tag changes and the exact
|
|
54
|
+
release documentation and workflow files inventoried in
|
|
55
|
+
[the CI selector](../.github/scripts/release-ci.py). All other tracked inputs
|
|
56
|
+
must match. The original run must have completed all four quality phases
|
|
57
|
+
and their gate steps, or the historical complete quality gate;
|
|
58
|
+
another release's reused status is insufficient. CI retains the source SHA
|
|
59
|
+
and run URL in `release-ci.json`. Missing evidence fails the release check;
|
|
60
|
+
it does not trigger another test run. Ordinary code changes and explicit
|
|
61
|
+
workflow dispatches continue to run the full gate.
|
|
62
|
+
3. From the clean, merged release commit, use macOS, Bun 1.3.13, Node 24,
|
|
63
|
+
and npm to prepare one exact candidate:
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
bun install --frozen-lockfile
|
|
67
|
+
bun run release:prepare --tag "v${SEVRO_RELEASE_VERSION:?set the selected new release version}" --output /absolute/new/release-directory
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
4. Inspect the version, repository, license, distribution tag, file inventory,
|
|
71
|
+
and retained checksums. Publish that tarball with lifecycle scripts disabled
|
|
72
|
+
using the commands below. Do not run `check:typescript`, `test:package-install`,
|
|
73
|
+
Darrow's archive/installed gates, or native trials during release. Diagnostic
|
|
74
|
+
tests require a separate explicit request.
|
|
75
|
+
5. Once npm serves the version, compare `dist.integrity` with `release.json`
|
|
76
|
+
and verify the intended distribution tag:
|
|
39
77
|
|
|
40
78
|
```sh
|
|
41
|
-
|
|
42
|
-
|
|
79
|
+
npm view "@bjoernrochel/sevro@${SEVRO_RELEASE_VERSION}" version dist.integrity --json
|
|
80
|
+
npm view @bjoernrochel/sevro dist-tags --json
|
|
43
81
|
```
|
|
44
82
|
|
|
45
|
-
|
|
83
|
+
npm may take a few minutes to process the accepted upload. Wait for the
|
|
84
|
+
registry record rather than republishing. Retain the reviewed tarball,
|
|
85
|
+
checksums, and original CI evidence.
|
|
86
|
+
|
|
87
|
+
6. Create the matching Git tag at the merged release commit and push only the tag:
|
|
46
88
|
|
|
47
89
|
```sh
|
|
48
|
-
|
|
90
|
+
git tag -a "v${SEVRO_RELEASE_VERSION}" -m "Release ${SEVRO_RELEASE_VERSION}"
|
|
91
|
+
git push origin "refs/tags/v${SEVRO_RELEASE_VERSION}"
|
|
49
92
|
```
|
|
50
93
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
94
|
+
Darrow dependency/lockfile updates and compatibility gates are a separate
|
|
95
|
+
Darrow PR, not prerequisites for npm publication. A prerelease does not establish
|
|
96
|
+
full Darrow migration completion. Preserve prior-version evidence for updates
|
|
97
|
+
and rollback; never relabel failed-version evidence.
|
|
98
|
+
|
|
99
|
+
## Local macOS publication
|
|
100
|
+
|
|
101
|
+
There is no GitHub release job. The maintainer prepares, inspects, and publishes
|
|
102
|
+
the reviewed tarball from macOS with an authenticated npm account. Check its
|
|
103
|
+
retained checksum immediately before publication:
|
|
58
104
|
|
|
59
|
-
|
|
105
|
+
```sh
|
|
106
|
+
cd /absolute/reviewed
|
|
107
|
+
shasum -a 256 -c SHA256SUMS
|
|
108
|
+
npm publish ./bjoernrochel-sevro-0.1.0-rc.1.tgz --ignore-scripts --access public --tag latest
|
|
109
|
+
```
|
|
60
110
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
No push or pull-request event publishes a package.
|
|
111
|
+
Replace the example version and distribution tag with the reviewed candidate's
|
|
112
|
+
values. The package repository URL must match this public repository. Preparing
|
|
113
|
+
a tarball or opening a pull request does not authorize publication.
|
|
65
114
|
|
|
66
|
-
|
|
67
|
-
publishing authorization. The initial reviewed tarball can be published
|
|
68
|
-
manually with an authenticated npm account:
|
|
115
|
+
An existing published candidate can become the default without republishing:
|
|
69
116
|
|
|
70
117
|
```sh
|
|
71
|
-
npm
|
|
118
|
+
npm dist-tag add @bjoernrochel/sevro@0.1.0-rc.2 latest
|
|
119
|
+
npm view @bjoernrochel/sevro dist-tags --json
|
|
72
120
|
```
|
|
73
121
|
|
|
74
|
-
|
|
75
|
-
`BjRo`, repository `sevro`, and workflow filename `release.yml`. The workflow
|
|
76
|
-
uses a GitHub-hosted runner, Node 24, npm 11.20.0, and job-scoped `id-token: write`.
|
|
77
|
-
The package repository URL must match this public repository. See npm's
|
|
78
|
-
[trusted publishing documentation](https://docs.npmjs.com/trusted-publishers/).
|
|
79
|
-
The workflow checks the downloaded artifact's SHA-256 before publishing and
|
|
80
|
-
retains its release record. Configuring an owner or workflow does not itself
|
|
81
|
-
authorize this coding session to publish or push.
|
|
122
|
+
Promotion changes the registry tag; it does not update the published tarball.
|
|
82
123
|
|
|
83
|
-
The first
|
|
124
|
+
The first published candidate was `0.1.0-rc.1`, using the owner-selected
|
|
84
125
|
`BUSL-1.1` license. Its `LICENSE` preserves Darrow's terms and parameters,
|
|
85
|
-
changing only the Licensed Work name and description to Sevro.
|
|
86
|
-
|
|
126
|
+
changing only the Licensed Work name and description to Sevro. Local checks do
|
|
127
|
+
not claim a remote CI run or publication. Darrow's exact
|
|
87
128
|
registry pin, default caller switch, remaining workflow migrations, focused live validation, and
|
|
88
129
|
generic runner removal remain separate extraction gates.
|
package/docs/report-v1.md
CHANGED
|
@@ -3,10 +3,14 @@
|
|
|
3
3
|
`sevro report` reads one or more retained `sevro.cli-result.v1` files and their
|
|
4
4
|
referenced `sevro.run-evidence.v1` files. It validates both public schemas and
|
|
5
5
|
checks run identity, exit category, case count, and trial references before
|
|
6
|
-
reporting.
|
|
6
|
+
reporting. Programmatic `createReport` paths must be absolute and distinct.
|
|
7
|
+
CLI `--result-file` paths may be relative to the invoking directory; they are
|
|
8
|
+
canonicalized before duplicate detection and loading.
|
|
7
9
|
|
|
8
10
|
```sh
|
|
9
11
|
sevro report --result-file /absolute/path/to/result.json
|
|
12
|
+
sevro report --latest
|
|
13
|
+
sevro report --latest --results-root ./other-results
|
|
10
14
|
sevro report --json --result-file /absolute/path/to/first.json \
|
|
11
15
|
--result-file /absolute/path/to/second.json
|
|
12
16
|
```
|
|
@@ -17,6 +21,30 @@ inputs return exit 64 with a diagnostic on stderr. Reporting does not change
|
|
|
17
21
|
the exit category of any input run; each row retains its original code.
|
|
18
22
|
Pre-run failures with no case rows remain visible in the input-run section.
|
|
19
23
|
|
|
24
|
+
`--latest` selects
|
|
25
|
+
`<cwd>/.sevro/results/latest.json`; `--results-root` changes that root and requires
|
|
26
|
+
`--latest`. It is exclusive with `--result-file`. Each retained CLI evaluation
|
|
27
|
+
saves a `result.json` beside its run evidence and atomically updates latest,
|
|
28
|
+
including dry and failed runs. Pre-run failures do not replace latest. Missing
|
|
29
|
+
latest or referenced evidence is an error. See
|
|
30
|
+
[the evaluation workflow](evaluation-workflow.md).
|
|
31
|
+
|
|
32
|
+
[`sevro prune`](reading-results.md#prune-retained-results) maintains this index
|
|
33
|
+
when removing retained evidence. After pruning, latest selects the newest
|
|
34
|
+
remaining completed result; if none remain, the index is removed and `--latest`
|
|
35
|
+
reports a missing-input diagnostic. Explicit reports still require their selected
|
|
36
|
+
results and evidence to exist.
|
|
37
|
+
|
|
38
|
+
After [`sevro prune --native-transcripts`](reading-results.md#remove-native-transcript-bundles),
|
|
39
|
+
reports accept absent native bundles only with the matching
|
|
40
|
+
[pruning receipt](results-v1.md#native-transcript-bundles). Present bundles must
|
|
41
|
+
still match their recorded hashes; unexplained missing bytes remain an error.
|
|
42
|
+
New report rows include optional `nativeTranscripts` with nonnegative integer
|
|
43
|
+
`retained` and `pruned` bundle counts across the case's trials and host roles.
|
|
44
|
+
Markdown shows the same counts beside retained evidence. Older report documents
|
|
45
|
+
without this field remain valid. Pruning does not change verdicts, routes,
|
|
46
|
+
identity, usage, or duration.
|
|
47
|
+
|
|
20
48
|
Each case row keeps task verdict, execution, and grading separate. Task pass
|
|
21
49
|
rate is measured only when every trial completed execution and grading with an
|
|
22
50
|
assessed task verdict. Candidate duration sums the measured host call time
|
package/docs/results-v1.md
CHANGED
|
@@ -9,6 +9,17 @@ Each domain outcome also gets one human-readable line with its case, trial,
|
|
|
9
9
|
outcome ID, and status. Domain outcomes remain independent of the task verdict
|
|
10
10
|
and exit code.
|
|
11
11
|
|
|
12
|
+
The CLI also shows trial states, bounded failed/unavailable
|
|
13
|
+
check details, measured candidate duration and known/unknown usage in human
|
|
14
|
+
completion. Actual preparation/candidate/grading/evidence stage messages use
|
|
15
|
+
stderr in both modes; they do not assert task success. Dry execution/grading are
|
|
16
|
+
explicitly skipped. JSON stdout stays unchanged. The CLI saves `result.json`
|
|
17
|
+
beside retained run evidence and atomically publishes `<results-root>/latest.json`
|
|
18
|
+
for [report access](report-v1.md). These output files stay inside excluded storage
|
|
19
|
+
and do not change evaluation identity. A failure to retain CLI/latest output is
|
|
20
|
+
reported as an internal error after an otherwise successful run; an earlier
|
|
21
|
+
nonzero run outcome keeps its precedence and its evidence reference.
|
|
22
|
+
|
|
12
23
|
## Separate states
|
|
13
24
|
|
|
14
25
|
Each trial and aggregate result carries:
|
|
@@ -98,6 +109,17 @@ persistence error.
|
|
|
98
109
|
[`identity-v1.md`](identity-v1.md) defines the canonical digest and each
|
|
99
110
|
comparison dimension.
|
|
100
111
|
|
|
112
|
+
Current CLI runs additionally retain the redacted effective-settings preview as
|
|
113
|
+
optional `configuration.resolved` (`sevro.resolved-run-settings.v1`), including
|
|
114
|
+
saved-setting selections and resolved operational paths. This snapshot excludes
|
|
115
|
+
credentials, credential-option paths, private source-closure/mapping paths,
|
|
116
|
+
private extension configuration and runtime
|
|
117
|
+
environment values; it is outside `configuration.digest`. Assessment settings
|
|
118
|
+
remain bound by the existing identity inputs and `configuration.redacted`.
|
|
119
|
+
Historical evidence without this optional field remains valid; missing settings
|
|
120
|
+
stay unknown. See [saved run settings](run-settings-v1.md) for precedence and
|
|
121
|
+
privacy limits.
|
|
122
|
+
|
|
101
123
|
The versioned machine-readable contracts are
|
|
102
124
|
[`cli-result-v1.schema.json`](../schemas/cli-result-v1.schema.json) and
|
|
103
125
|
[`run-evidence-v1.schema.json`](../schemas/run-evidence-v1.schema.json). A
|
|
@@ -110,9 +132,167 @@ An interrupted or failed run keeps completed trials plus an explicit partial
|
|
|
110
132
|
attempt or diagnostic record. Failed persistence is an internal error and
|
|
111
133
|
cannot be presented as a successful assessment.
|
|
112
134
|
|
|
135
|
+
Successful temporary workspaces are removed after their evidence is saved.
|
|
136
|
+
Failed and cancelled workspaces, including trials with unavailable required
|
|
137
|
+
grading evidence, are kept for 24 hours after becoming inactive. Evaluation
|
|
138
|
+
startup removes expired workspaces with verified inactive ownership. Active or
|
|
139
|
+
unverifiable workspaces and unregistered legacy folders are preserved; saved
|
|
140
|
+
results and evidence remain intact. Failed cleanup is retried on later evaluations.
|
|
141
|
+
|
|
142
|
+
`sevro.observation.workspaces` records candidate and retained auxiliary workspace
|
|
143
|
+
paths for inspection. These paths are temporary and do not affect evaluation identity.
|
|
144
|
+
|
|
145
|
+
Retained results have no automatic expiration. The explicit
|
|
146
|
+
[`sevro prune` command](reading-results.md#prune-retained-results) applies an
|
|
147
|
+
operator-selected age or count policy, defaulting to the newest ten results.
|
|
148
|
+
It deletes complete retained result directories and maintains `latest.json`
|
|
149
|
+
for the remaining results. Active or unrecognized attempts remain protected;
|
|
150
|
+
fixture cleanup and run-state coordination metadata have separate lifecycles.
|
|
151
|
+
|
|
152
|
+
Opted-in [candidate artifact runtimes](runtime-v1.md#candidate-artifact-access)
|
|
153
|
+
remain available through grading and are removed afterward, including failed
|
|
154
|
+
and cancelled trials. Failed-fixture retention does not preserve them.
|
|
155
|
+
Read access does not automatically retain artifact bytes in run evidence.
|
|
156
|
+
|
|
157
|
+
Checker private home, temporary storage, and copied dependency slots are removed
|
|
158
|
+
after grading on success, failure, and cancellation. Retained failed fixtures and
|
|
159
|
+
saved evidence do not retain checker runtime copies. Explicitly declared shared
|
|
160
|
+
caches survive this cleanup and remain under operator control.
|
|
161
|
+
|
|
113
162
|
A host adapter can return `executionFailed: true` with bounded artifacts from
|
|
114
163
|
a failed process. The engine retains those artifacts, skips all grading, and
|
|
115
164
|
reports `failed` / `not_requested` / `not_assessed` with exit code `2`. A final
|
|
116
165
|
message that happens to match a check cannot turn that failure into a pass.
|
|
117
166
|
Claude retains its bounded event stream and, when present, up to 64 KiB of
|
|
118
167
|
stderr as private host artifacts. Failure bodies do not appear in CLI diagnostics.
|
|
168
|
+
Codex preflight failures retain `codex.process` (stage, reason, exit code, signal,
|
|
169
|
+
duration, and stderr truncation) and `codex.stderr` (the first 64 KiB), with role
|
|
170
|
+
prefixes for semantic/advisory hosts. Diagnostics distinguish failure, timeout,
|
|
171
|
+
and cancellation without exposing raw stderr.
|
|
172
|
+
|
|
173
|
+
## Native host diagnostics
|
|
174
|
+
|
|
175
|
+
The CLI's opt-in
|
|
176
|
+
[`--retain-host-diagnostics`](development-cli.md#retain-native-host-diagnostics)
|
|
177
|
+
retains candidate artifact `sevro.host.diagnostics` with format
|
|
178
|
+
`sevro.host-diagnostics.v1`. Semantic and advisory requests use the existing
|
|
179
|
+
`sevro.semantic[.<source digest>].` and `sevro.advisory.` artifact ID prefixes.
|
|
180
|
+
The flag is independent of native transcript retention.
|
|
181
|
+
|
|
182
|
+
The private JSON contains `host`, `role`, `stage`, `error`, `processes`,
|
|
183
|
+
and `processesDropped`. Error evidence preserves the original name, message,
|
|
184
|
+
stack and available error code, with up to eight error entries in the cause chain. Repeated
|
|
185
|
+
or deeper causes end in an explicit `truncated` entry. Messages and stacks
|
|
186
|
+
are bounded to 8,192 characters per entry. A host-returned failure without a
|
|
187
|
+
thrown exception receives a runner failure summary; subprocess receipts and
|
|
188
|
+
bounded output supply its native evidence.
|
|
189
|
+
|
|
190
|
+
Each process receipt records stage, actual `code`, `signal`, `durationMs`,
|
|
191
|
+
reason, stdout/stderr prefixes, and separate truncation markers. Unknown native
|
|
192
|
+
exit information remains `null`; app-server's synthesized protocol result is
|
|
193
|
+
not substituted for a process exit code. Each stream retains at most 64 KiB,
|
|
194
|
+
and hosts continue consuming output after filling the diagnostic prefix.
|
|
195
|
+
Stream parsing and decoding failures also retain available prefixes.
|
|
196
|
+
Text uses replacement decoding for diagnostic inspection; it is not an exact
|
|
197
|
+
native-byte archive.
|
|
198
|
+
|
|
199
|
+
The journal keeps at most 32 recent process receipts and at most 2 MiB of
|
|
200
|
+
encoded receipt data. It drops oldest receipts first and reports their count.
|
|
201
|
+
The failing stage and bounded error remain independent of those dropped
|
|
202
|
+
receipts. Known credentials from selected authentication files, forwarded
|
|
203
|
+
Claude authentication variables, and common credential patterns are redacted
|
|
204
|
+
from the diagnostic JSON. Sevro does not explicitly dump environment values,
|
|
205
|
+
full argv, or settings into diagnostics. Treat retained diagnostics as private evidence and keep
|
|
206
|
+
them out of Git; redaction is not authorization to publish subprocess output.
|
|
207
|
+
|
|
208
|
+
The engine supplies an optional `retainHostDiagnostics(bytes)` callback to
|
|
209
|
+
host adapters. Bundled opted-in hosts invoke it before removing native state.
|
|
210
|
+
The callback saves the artifact with private permissions and registers its
|
|
211
|
+
file URL and SHA-256 in trial evidence. Direct adapter calls without that
|
|
212
|
+
callback return diagnostic bytes in ordinary host artifacts.
|
|
213
|
+
|
|
214
|
+
Failure diagnostics name the retained file URL when it fits the CLI message
|
|
215
|
+
limit; `evidencePath` and trial `artifactPath` resolve artifact references
|
|
216
|
+
even when a message cannot contain the URL. Native failures retain the existing
|
|
217
|
+
execution, grading, task and exit semantics. Failed diagnostic persistence is
|
|
218
|
+
an internal runner error, not a successful assessment or an ordinary host
|
|
219
|
+
failure. Cleanup errors do not replace an earlier host or diagnostic-persistence
|
|
220
|
+
failure; cleanup warnings contain no raw error/output bodies.
|
|
221
|
+
|
|
222
|
+
## Native transcript bundles
|
|
223
|
+
|
|
224
|
+
With [runtime transcript opt-in](runtime-v1.md#native-transcript-access), each
|
|
225
|
+
bundled host captures full native files before removing its private state.
|
|
226
|
+
Candidate artifact `sevro.native-transcripts.bundle` has format
|
|
227
|
+
`sevro.native-transcripts.v2`. It contains `host` (`codex` or `claude`), `role`,
|
|
228
|
+
native `rootSessionId` (or `null`), `completeness`, `issues`, and `files`.
|
|
229
|
+
Each file records its native relative `path`, SHA-256 `sha256` of the original
|
|
230
|
+
bytes, and `gzipBase64`: the exact file bytes compressed with gzip, then encoded
|
|
231
|
+
as base64. Decode base64, decompress gzip, and verify the original-byte hash
|
|
232
|
+
before using a file. Bound decompression to 5 MiB across all files in the bundle.
|
|
233
|
+
Decode bytes without rewriting native records. Native
|
|
234
|
+
session paths, root/child records and sidecar metadata preserve associations;
|
|
235
|
+
the bundle does not normalize model, effort, timing, token, or cost statistics.
|
|
236
|
+
Existing unknown metrics remain unknown.
|
|
237
|
+
|
|
238
|
+
Sevro reads both v2 bundles and existing `sevro.native-transcripts.v1` bundles.
|
|
239
|
+
V1 files use uncompressed `bytesBase64`; decode that field directly without
|
|
240
|
+
gzip decompression and verify the same original-byte hash. Readers must select
|
|
241
|
+
the payload field and decoding by `format` and reject unsupported formats,
|
|
242
|
+
corrupt compressed payloads, hash mismatches, or a decoded total above 5 MiB.
|
|
243
|
+
New captures emit v2; reading retained v1 evidence does not rewrite it.
|
|
244
|
+
The retained view exposes the same exact native files for either format, with
|
|
245
|
+
the original bundle in `index.json`.
|
|
246
|
+
|
|
247
|
+
`sevro.host.native-transcripts` records the same capture state and file hashes
|
|
248
|
+
without raw bytes. Semantic and advisory bundles retain their role in the
|
|
249
|
+
bundle and use the existing `sevro.semantic[.<source digest>].` and
|
|
250
|
+
`sevro.advisory.` artifact ID prefixes. Run/trial artifact references supply
|
|
251
|
+
stable private file URLs and whole-bundle hashes after native home cleanup.
|
|
252
|
+
Extensions receive these references through the existing `evaluate` protocol;
|
|
253
|
+
benchmarks can use the same references and decode the native files.
|
|
254
|
+
|
|
255
|
+
Capture includes native transcript-tree sidecars and refuses descendant links,
|
|
256
|
+
special files and escaping paths. It is bounded to 4,096 directory entries,
|
|
257
|
+
5 MiB of native file bytes before compression and 7 MiB of encoded file
|
|
258
|
+
metadata/gzip content. The
|
|
259
|
+
bundle remains inside the existing 8 MiB item and 32 MiB host artifact budgets;
|
|
260
|
+
it groups sessions instead of spending an artifact per child. Limits produce
|
|
261
|
+
`byte_limit`, `entry_limit`, or `bundle_limit` issues. Unreadable, unsafe or
|
|
262
|
+
changing entries, malformed/empty native records, malformed JSON sidecars,
|
|
263
|
+
an unknown/missing original session, or incomplete host
|
|
264
|
+
execution produce explicit partial/unavailable capture. `complete` means the
|
|
265
|
+
identified root's tree was captured within those bounds after completed host
|
|
266
|
+
execution and generic syntax/basic record validation. JSONL must contain
|
|
267
|
+
nonempty JSON object records with a nonempty string `type`; JSON sidecars must
|
|
268
|
+
parse as JSON. UTF-8 decoding is strict. One trailing newline and CRLF are
|
|
269
|
+
accepted; blank interior records, invalid encoding and truncated JSON are
|
|
270
|
+
malformed. Unknown native fields and record types remain valid. Issues
|
|
271
|
+
`empty_transcript`, `malformed_transcript` and `malformed_sidecar` downgrade
|
|
272
|
+
capture without rewriting or discarding retained bytes. This validates basic
|
|
273
|
+
structure, not native semantic correctness.
|
|
274
|
+
An empty/missing native JSONL tree is `unavailable`. Failure, cancellation and
|
|
275
|
+
timeout retain available native bytes with incomplete capture state. Raw
|
|
276
|
+
bundles and views are private evidence and must stay out of Git.
|
|
277
|
+
|
|
278
|
+
The explicit [`sevro prune --native-transcripts` mode](reading-results.md#remove-native-transcript-bundles)
|
|
279
|
+
can remove these bundles without rewriting CLI results, run/trial evidence,
|
|
280
|
+
capture observations, native file hashes, or whole-bundle hashes. It retains
|
|
281
|
+
other artifacts and does not change evaluation identity or assessment states.
|
|
282
|
+
Reports validate present native bundles against their recorded SHA-256 and
|
|
283
|
+
require an exact pruning receipt for absent bundles.
|
|
284
|
+
|
|
285
|
+
Before deletion, Sevro atomically writes private
|
|
286
|
+
`native-transcripts-pruned.json` beside `run.json`, with format
|
|
287
|
+
`sevro.pruned-native-transcripts.v1`, the original `runId`, and `artifacts`.
|
|
288
|
+
Each entry contains the original artifact reference (`id`, `path`, `sha256`,
|
|
289
|
+
and any optional reference flags), plus its `caseId` and `trial`. Entries follow
|
|
290
|
+
run trial/reference order and cover every candidate, semantic (including
|
|
291
|
+
source-specific), and advisory native bundle in that run. A receipt must match
|
|
292
|
+
these original references exactly; malformed, inconsistent, or linked receipts
|
|
293
|
+
are errors. Bundle references must name regular files directly inside their
|
|
294
|
+
result directory. Missing bytes without a receipt, changed hashes, and escaping
|
|
295
|
+
references remain errors. An interrupted deletion may leave some marked bundles
|
|
296
|
+
present; reports count actual availability, and a repeated prune completes removal.
|
|
297
|
+
Transcript references that alias result/trial metadata, raw responses, or other
|
|
298
|
+
retained artifacts are refused before pruning.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Saved run settings v1
|
|
2
|
+
|
|
3
|
+
Save recurring evaluation selections in a JSON run manifest, then use
|
|
4
|
+
`sevro run --run-manifest-file ./evaluation.json`. The examples use the
|
|
5
|
+
[installed command](installing.md#make-the-command-available).
|
|
6
|
+
|
|
7
|
+
## Repeat an evaluation
|
|
8
|
+
|
|
9
|
+
Start with an existing [resolved case and adapter](getting-started.md), and save
|
|
10
|
+
this `evaluation.json` beside `case.json` and `host-adapter.ts`:
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"format": "sevro.run.v1",
|
|
15
|
+
"settings": {
|
|
16
|
+
"case-file": "./case.json",
|
|
17
|
+
"adapter-module": "./host-adapter.ts",
|
|
18
|
+
"project-root": ".",
|
|
19
|
+
"condition": "passive",
|
|
20
|
+
"trials": 3,
|
|
21
|
+
"jobs": 1,
|
|
22
|
+
"threshold": 1
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Run it twice with the same saved selections, or explicitly override one setting:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
sevro run --run-manifest-file ./evaluation.json
|
|
31
|
+
sevro run --run-manifest-file ./evaluation.json
|
|
32
|
+
sevro run --run-manifest-file ./evaluation.json --trials 1 --json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Every run prints effective settings on stderr before candidate execution, then
|
|
36
|
+
prints the result and evidence location. The example requires all assessed
|
|
37
|
+
trials to pass. A missing assessment remains `not_assessed`. Use `--dry` to
|
|
38
|
+
check preparation without calling the candidate or graders; dry preparation
|
|
39
|
+
does not prove native authentication or task success.
|
|
40
|
+
|
|
41
|
+
## Select candidate and grading routes once
|
|
42
|
+
|
|
43
|
+
For native execution, replace the adapter selection with an explicit host,
|
|
44
|
+
model and effort. Each grading role has its own selection. For example, a case
|
|
45
|
+
with semantic checks can use this manifest:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"format": "sevro.run.v1",
|
|
50
|
+
"settings": {
|
|
51
|
+
"case-file": "./semantic-case.json",
|
|
52
|
+
"project-root": ".",
|
|
53
|
+
"host": "codex",
|
|
54
|
+
"model": "<candidate-model>",
|
|
55
|
+
"effort": "medium",
|
|
56
|
+
"codex-auth-file": "../private/auth.json",
|
|
57
|
+
"semantic-host": "codex",
|
|
58
|
+
"semantic-model": "<grading-model>",
|
|
59
|
+
"semantic-effort": "high",
|
|
60
|
+
"trials": 3,
|
|
61
|
+
"threshold": 1
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Replace model placeholders with installed-host-supported model names and supply
|
|
67
|
+
the [native prerequisites and authentication](native-hosts.md). Models and
|
|
68
|
+
efforts are never inferred or copied between roles. Candidate Claude uses
|
|
69
|
+
`host: "claude"` and its own explicit `model`/`effort`. An optional advisory
|
|
70
|
+
route uses `advisory-host`, `advisory-model` and `advisory-effort`; advisory
|
|
71
|
+
review requires a Git fixture and remains separate from the task verdict.
|
|
72
|
+
Injected adapters continue to declare their own model and effort.
|
|
73
|
+
|
|
74
|
+
## Format, precedence and paths
|
|
75
|
+
|
|
76
|
+
The root has exactly `format: "sevro.run.v1"` and an object `settings`. Settings
|
|
77
|
+
use the [CLI option names](development-cli.md) without the leading `--`.
|
|
78
|
+
All run options can be saved except `json` and `run-manifest-file`. Keep output
|
|
79
|
+
presentation explicit on the command line, including `--json` when collecting
|
|
80
|
+
a versioned success or failure document. Manifests do not include other
|
|
81
|
+
manifests and are read only when explicitly selected; there is no discovery.
|
|
82
|
+
|
|
83
|
+
| Option kind | JSON value |
|
|
84
|
+
| --------------------------------------------------------------------------------------- | ----------------------------------------------------- |
|
|
85
|
+
| `trials`, `jobs`, `threshold`, `codex-timeout-ms` | Number, with the CLI's existing ranges |
|
|
86
|
+
| `dry`, `shell-isolation`, `retain-host-diagnostics`, `claude-project-settings` | Boolean |
|
|
87
|
+
| `extension-source-file`, `protected-root`, `replace-builtin-grader`, `advisory-exclude` | Array of nonempty strings; `[]` selects an empty list |
|
|
88
|
+
| Other run options | Nonempty string |
|
|
89
|
+
|
|
90
|
+
Precedence is **built-in defaults → saved settings → explicit CLI options**.
|
|
91
|
+
Omitted settings retain the [documented defaults](development-cli.md#run-defaults).
|
|
92
|
+
An explicit repeatable flag replaces its saved array in full; repeated CLI
|
|
93
|
+
occurrences build the replacement array. `--no-dry`, `--no-shell-isolation`,
|
|
94
|
+
`--no-retain-host-diagnostics` and `--no-claude-project-settings` override saved
|
|
95
|
+
`true` values with `false`.
|
|
96
|
+
|
|
97
|
+
Selecting an alternative route on the CLI removes its saved alternative and
|
|
98
|
+
route-only settings. For example, `--adapter-module ./host-adapter.ts` replaces
|
|
99
|
+
a saved native candidate and its model/effort. Selecting `--host claude` over
|
|
100
|
+
a saved Codex candidate requires fresh explicit `--model` and `--effort`;
|
|
101
|
+
grading roles keep their separate selections. Shared Codex settings remain
|
|
102
|
+
while any Codex route is selected. CLI `--case-file` replaces a saved extension
|
|
103
|
+
source and its extension-only options. CLI `--extension-command-file` replaces
|
|
104
|
+
a saved case file; supply the extension's required ID and source closure.
|
|
105
|
+
Supplying two exclusive alternatives explicitly remains an error.
|
|
106
|
+
|
|
107
|
+
Paths saved in a manifest resolve from the **canonical directory containing
|
|
108
|
+
that manifest**, including `project-root`, output roots, adapters, protected
|
|
109
|
+
roots and extension source files. CLI paths always resolve from the invoking
|
|
110
|
+
current directory. `advisory-exclude` contains fixture-relative names, not host
|
|
111
|
+
paths. Paths inside case files, extension command argv, source maps and runtime
|
|
112
|
+
files retain their existing contracts. A manifest must be a regular,
|
|
113
|
+
non-symlink JSON file of at most 64 KiB. Unsupported versions, unknown fields,
|
|
114
|
+
invalid types and unreadable files fail before execution with an actionable
|
|
115
|
+
file/field diagnostic and exit `64`.
|
|
116
|
+
|
|
117
|
+
## Runtime, evidence and identity
|
|
118
|
+
|
|
119
|
+
The existing [`sevro.json` runtime contract](runtime-v1.md) is unchanged.
|
|
120
|
+
A run manifest selects recurring evaluation settings; `runtime-config-file`
|
|
121
|
+
can select a separate runtime file. Otherwise Sevro still discovers exactly
|
|
122
|
+
`<project-root>/sevro.json`. Runtime declarations do not become run options.
|
|
123
|
+
|
|
124
|
+
Current CLI runs retain the effective preview as optional
|
|
125
|
+
`configuration.resolved` in `sevro.run-evidence.v1`, with format
|
|
126
|
+
`sevro.resolved-run-settings.v1`. It records selected case and extension command
|
|
127
|
+
paths, source-closure count, mapping selection, adapters, routes, model/effort,
|
|
128
|
+
trial settings, runtime file selection and operational output locations. It
|
|
129
|
+
omits credentials and credential-option paths, private source-closure and mapping
|
|
130
|
+
paths, private extension configuration, runtime environment values and native
|
|
131
|
+
diagnostic contents. Explicit protected roots, paths and model labels are still operator metadata;
|
|
132
|
+
inspect retained evidence before sharing it. The runtime policy's existing
|
|
133
|
+
redacted evidence still retains explicitly declared non-secret environment
|
|
134
|
+
values. Older evidence without `configuration.resolved` remains valid and
|
|
135
|
+
does not acquire inferred settings.
|
|
136
|
+
|
|
137
|
+
Assessment settings enter the [evaluation identity](identity-v1.md) through
|
|
138
|
+
resolved cases, fixtures, checks, routes and `configuration.redacted`. The
|
|
139
|
+
additional `configuration.redacted.runSettings` binds shell isolation, explicit
|
|
140
|
+
protected roots, deprecated runtime selections, selected native timeouts and
|
|
141
|
+
Claude project-settings authority. Equivalent saved and
|
|
142
|
+
explicit selections have the same identity. Semantic changes such as model,
|
|
143
|
+
effort, trial count, job limit or threshold change identity. The manifest's
|
|
144
|
+
location, CLI output mode, and output/run-state paths are excluded from the
|
|
145
|
+
semantic configuration digest; `configuration.resolved` is an operational
|
|
146
|
+
snapshot outside that digest. Project content, including a tracked manifest,
|
|
147
|
+
still follows the existing project identity rules.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Run an evaluation
|
|
2
|
+
|
|
3
|
+
Begin with the [deterministic example](getting-started.md). For your own case,
|
|
4
|
+
make [the installed command available](installing.md#make-the-command-available),
|
|
5
|
+
then select a trusted adapter and absolute paths:
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
sevro run --json \
|
|
9
|
+
--case-file /absolute/path/case.json \
|
|
10
|
+
--adapter-module /absolute/path/host.ts \
|
|
11
|
+
--project-root /absolute/path/project \
|
|
12
|
+
--results-root /absolute/path/results \
|
|
13
|
+
--condition passive --trials 1 --threshold 1
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
For a contributor checkout, use `bun src/cli.ts` in place of `sevro`.
|
|
17
|
+
An adapter is trusted executable code; injection does not automatically provide
|
|
18
|
+
native isolation. `--project-root` identifies the evaluated project, not
|
|
19
|
+
necessarily the runner checkout. `--results-root` receives evidence.
|
|
20
|
+
Trials control repetition, and the threshold controls the required pass rate.
|
|
21
|
+
|
|
22
|
+
A passive condition cannot request execution-changing instrumentation.
|
|
23
|
+
`--dry` prepares without execution/grading: successful preparation is still
|
|
24
|
+
`not_assessed`. For model routes follow [native hosts](native-hosts.md).
|
|
25
|
+
An [extension command](creating-cases.md) and a direct case file are exclusive.
|
|
26
|
+
Read [results](reading-results.md) to interpret failures and missing data.
|
|
27
|
+
|
|
28
|
+
The [detailed CLI reference](development-cli.md) owns configuration roots,
|
|
29
|
+
concurrency, cancellation, semantic/advisory routes, fixtures, and extra options.
|
|
30
|
+
Preserve its limitations when composing commands. Cancellation stops admission
|
|
31
|
+
and retains completed evidence before cleanup.
|