@bjoernrochel/sevro 0.1.0-rc.11 → 0.1.0-rc.13
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 +13 -2
- package/README.md +5 -0
- package/docs/README.md +17 -13
- package/docs/architecture.md +138 -17
- package/docs/builtin-graders-v1.md +4 -2
- package/docs/codex-host.md +57 -14
- package/docs/contracts.md +1 -0
- package/docs/creating-cases.md +9 -2
- package/docs/development-cli.md +100 -9
- package/docs/documentation-quality.md +12 -2
- package/docs/evaluation-workflow.md +107 -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/skill-reads-70/results.json +823 -0
- package/docs/evidence.md +4 -0
- package/docs/getting-started.md +23 -2
- package/docs/identity-v1.md +15 -1
- package/docs/installing.md +11 -11
- package/docs/native-controls.md +40 -4
- package/docs/native-hosts.md +17 -0
- package/docs/reading-results.md +13 -0
- package/docs/recipes.md +485 -0
- package/docs/releases.md +2 -1
- package/docs/report-v1.md +13 -1
- package/docs/results-v1.md +22 -0
- package/docs/run-settings-v1.md +147 -0
- package/docs/runtime-v1.md +139 -5
- package/docs/troubleshooting.md +12 -12
- package/docs/typescript-quality.md +39 -17
- package/docs/usability-study.md +114 -0
- 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 +1 -1
- package/schemas/run-evidence-v1.schema.json +2 -1
- package/schemas/runtime-v1.schema.json +10 -0
- package/src/advisory.ts +2 -2
- package/src/candidate-artifacts.ts +30 -7
- package/src/candidate-codex-state.ts +185 -0
- package/src/case-validation.ts +73 -50
- package/src/cli/cancellation.ts +20 -0
- package/src/cli/command.ts +81 -0
- package/src/cli/completion.ts +12 -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 +187 -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 → cli/invocation.ts} +100 -77
- 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 +10 -591
- package/src/contract-types.ts +94 -0
- package/src/engine.ts +9 -5
- package/src/evaluation/advisory.ts +150 -0
- package/src/{evaluation-check-plan.ts → evaluation/check-plan.ts} +12 -12
- package/src/evaluation/collection.ts +88 -0
- package/src/evaluation/context.ts +10 -0
- package/src/{evaluation-grading-host.ts → evaluation/grading-host.ts} +5 -5
- package/src/evaluation/grading.ts +258 -0
- package/src/{evaluation-invocation-plan.ts → evaluation/invocation-plan.ts} +4 -4
- package/src/{evaluation-plan.ts → evaluation/plan.ts} +213 -73
- package/src/evaluation/progress.ts +19 -0
- package/src/evaluation/resources.ts +238 -0
- package/src/evaluation/run.ts +206 -0
- package/src/{evaluation-semantic.ts → evaluation/semantic.ts} +63 -78
- package/src/evaluation/trial.ts +839 -0
- package/src/{evaluation-types.ts → evaluation/types.ts} +77 -29
- 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 +34 -96
- package/src/extension-session.ts +24 -48
- package/src/{advisory-fixture.ts → fixtures/advisory.ts} +1 -1
- package/src/{fixture-bin.ts → fixtures/bin.ts} +1 -1
- package/src/{evaluation-fixture.ts → fixtures/create.ts} +7 -131
- package/src/{generated-fixture.ts → fixtures/generated.ts} +2 -2
- package/src/{git-hooks.ts → fixtures/git-hooks.ts} +1 -1
- package/src/{preparation.ts → fixtures/preparation.ts} +2 -2
- package/src/{repository-fixture.ts → fixtures/repository.ts} +16 -7
- package/src/{fixture-setup.ts → fixtures/setup.ts} +21 -49
- package/src/{fixture-tools.ts → fixtures/tools.ts} +1 -1
- package/src/{workspace-state.ts → fixtures/workspace-state.ts} +5 -5
- package/src/generated/run-evidence.cjs +1 -1
- package/src/generated/runtime.cjs +1 -1
- package/src/graders/git-head.ts +27 -72
- package/src/graders/shell.ts +36 -64
- package/src/host-diagnostics.ts +2 -2
- package/src/hosts/claude-process.ts +21 -15
- package/src/hosts/claude-settings.ts +4 -4
- package/src/hosts/claude-state.ts +5 -5
- package/src/hosts/claude.ts +4 -4
- package/src/hosts/codex-command-output.ts +15 -2
- package/src/hosts/codex-exec-controls.ts +376 -0
- package/src/hosts/codex-marketplace.ts +1 -1
- package/src/hosts/codex-native-calls.ts +50 -13
- package/src/hosts/codex-process.ts +24 -55
- package/src/hosts/codex-profile.ts +33 -6
- package/src/hosts/codex-session-files.ts +1 -1
- package/src/hosts/codex-skill-reads.ts +535 -100
- package/src/hosts/codex-state.ts +84 -8
- package/src/hosts/codex.ts +60 -12
- package/src/hosts/isolation-common.ts +3 -2
- package/src/hosts/isolation-roots.ts +2 -2
- package/src/hosts/linux-sandbox.ts +1 -1
- package/src/hosts/mac-sandbox.ts +15 -2
- package/src/hosts/native-controls.ts +34 -2
- package/src/hosts/process-lifecycle.ts +8 -41
- package/src/hosts/protected-worktrees.ts +1 -1
- package/src/native-transcript-view.ts +1 -1
- package/src/native-transcripts.ts +4 -5
- package/src/process-lifecycle.ts +150 -0
- package/src/provenance.ts +24 -4
- package/src/report.ts +44 -34
- package/src/resolved-case.ts +1 -1
- package/src/results.ts +14 -18
- package/src/{runtime-config.ts → runtime/config.ts} +30 -9
- package/src/{runtime-discovery-apple.ts → runtime/discovery-apple.ts} +3 -3
- package/src/{runtime-discovery-providers.ts → runtime/discovery-providers.ts} +2 -2
- package/src/{runtime-discovery.ts → runtime/discovery.ts} +4 -4
- package/src/{runtime-hook-processes.ts → runtime/hook-processes.ts} +1 -1
- package/src/{runtime-hooks.ts → runtime/hooks.ts} +10 -10
- package/src/{runtime-paths.ts → runtime/paths.ts} +2 -2
- package/src/{runtime-query.ts → runtime/query.ts} +5 -5
- package/src/{runtime-seeds.ts → runtime/seeds.ts} +3 -3
- package/src/{runtime-state.ts → runtime/state.ts} +5 -5
- package/src/schema-types.ts +72 -161
- package/src/evaluation-context.ts +0 -259
- package/src/evaluation-run.ts +0 -200
- package/src/evaluation-trial.ts +0 -1051
- /package/src/{trial-scheduler.ts → evaluation/scheduler.ts} +0 -0
- /package/src/{fixture-cleanup.ts → fixtures/cleanup.ts} +0 -0
package/CONTRIBUTING.md
CHANGED
|
@@ -38,6 +38,13 @@ bun run test:docs-examples
|
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
The second command checks the tutorial in fresh consumer/contributor directories.
|
|
41
|
+
Its complete recipe checks also require UV, Python 3, mise, and an existing
|
|
42
|
+
`mise install node@24.13.0` installation; see [recipe prerequisites](docs/recipes.md).
|
|
43
|
+
CI explicitly provisions these tools. Missing prerequisites fail with a named
|
|
44
|
+
setup instruction rather than skipping a recipe.
|
|
45
|
+
To run recipe commands from this source checkout, set
|
|
46
|
+
`export SEVRO_RECIPES="$PWD/examples/recipes"` from the repository root, then
|
|
47
|
+
follow the [recipe commands](docs/recipes.md#prepare-a-recipe-project).
|
|
41
48
|
Native model trials need their own [credentials and prerequisites](docs/native-hosts.md).
|
|
42
49
|
|
|
43
50
|
## Quality contract and checks
|
|
@@ -68,6 +75,10 @@ Before committing, use `bun run check:typescript --fast` after installing the
|
|
|
68
75
|
locked dependencies. This runs inventory, schema, formatting, lint, typing and
|
|
69
76
|
documentation checks; it does not replace full acceptance. CI retains machine-readable coverage
|
|
70
77
|
reports under `.quality/` and exposes the stable `TypeScript quality` status.
|
|
78
|
+
The complete command's `static`, `docs`, `tests` and `package` phases run as
|
|
79
|
+
concurrent CI jobs. After frozen installation, use
|
|
80
|
+
`bun run check:typescript --phase <name>` to run one phase locally; it does not
|
|
81
|
+
replace acceptance across all four. See the [phase inventory](docs/typescript-quality.md).
|
|
71
82
|
|
|
72
83
|
Run `bun run check:docs:external` separately and [triage network failures](docs/documentation-quality.md#external-links).
|
|
73
84
|
Guide changes also need [native evals](docs/guide-evaluation.md).
|
|
@@ -84,8 +95,8 @@ repairing in-scope failures; it does not authorize merging or unrelated changes.
|
|
|
84
95
|
non-root user, and isolation prerequisites. Reproducing that environment locally
|
|
85
96
|
with Docker is optional for diagnosis and is not a publication prerequisite.
|
|
86
97
|
- After the local pre-commit checks, publish the authorized candidate to its PR
|
|
87
|
-
and require
|
|
88
|
-
delivery as complete. A local run, fast check, targeted suite, or historical
|
|
98
|
+
and require all four canonical `check:typescript` phases to succeed in GitHub CI
|
|
99
|
+
before reporting delivery as complete. A local run, fast check, targeted suite, or historical
|
|
89
100
|
result does not establish that the current Ubuntu gate passes.
|
|
90
101
|
- Keep the quality bar intact. Repair behavior or add meaningful coverage for
|
|
91
102
|
accepted behavior; do not lower thresholds, exempt authored sources, skip tests,
|
package/README.md
CHANGED
|
@@ -40,6 +40,11 @@ Continue with [your first evaluation](docs/getting-started.md): the exact comman
|
|
|
40
40
|
expected `passed` result, and retained evidence. Read [installation](docs/installing.md)
|
|
41
41
|
for updates, removal, and source checkouts.
|
|
42
42
|
|
|
43
|
+
The development checkout and freshly built packages provide a
|
|
44
|
+
[demo-to-iteration workflow](docs/evaluation-workflow.md): initialize real
|
|
45
|
+
assertions, prepare, execute, read progress and inspect the latest result.
|
|
46
|
+
The published `rc.11` package uses the installed tutorial above.
|
|
47
|
+
|
|
43
48
|
## Find your next task
|
|
44
49
|
|
|
45
50
|
The [documentation hub](docs/README.md) routes to running evaluations, authoring
|
package/docs/README.md
CHANGED
|
@@ -4,19 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
Start with the task you want to complete. These pages work without an agent.
|
|
6
6
|
|
|
7
|
-
| I want to…
|
|
8
|
-
|
|
|
9
|
-
| Get a result without a model account
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
7
|
+
| I want to… | Read |
|
|
8
|
+
| ---------------------------------------------- | -------------------------------------------------------- |
|
|
9
|
+
| Get a result without a model account | [Your first evaluation](getting-started.md) |
|
|
10
|
+
| Initialize, prepare, run and iterate | [Evaluation workflow](evaluation-workflow.md) |
|
|
11
|
+
| Install, update, remove, or use a checkout | [Installation](installing.md) |
|
|
12
|
+
| Run evaluations and select a host | [Running evaluations](running-evaluations.md) |
|
|
13
|
+
| Create cases and reusable policy | [Cases and extensions](creating-cases.md) |
|
|
14
|
+
| Copy a complete coding, skill or runtime setup | [Runnable recipes](recipes.md) |
|
|
15
|
+
| Interpret verdicts, evidence, and comparisons | [Reading results](reading-results.md) |
|
|
16
|
+
| Run Codex or Claude with isolation | [Native hosts](native-hosts.md) |
|
|
17
|
+
| Reuse host tools or enable goals and hooks | [Runtime configuration](runtime-v1.md) |
|
|
18
|
+
| Save recurring evaluation selections | [Run settings](run-settings-v1.md) |
|
|
19
|
+
| Resolve a symptom | [Troubleshooting](troubleshooting.md) |
|
|
20
|
+
| Trace runner lifecycle, ownership, and changes | [Architecture](architecture.md) |
|
|
21
|
+
| Change Sevro or its documentation | [Contributing](../CONTRIBUTING.md) |
|
|
22
|
+
| Understand licensing and branding | [Licensing](licensing.md) and [assets](assets/README.md) |
|
|
20
23
|
|
|
21
24
|
## Ask the guide
|
|
22
25
|
|
|
@@ -35,6 +38,7 @@ There is no accepted Rust migration decision here;
|
|
|
35
38
|
[issue #2](https://github.com/BjRo/sevro/issues/2) tracks research.
|
|
36
39
|
|
|
37
40
|
Read [documentation quality](documentation-quality.md),
|
|
41
|
+
[the usability study protocol](usability-study.md),
|
|
38
42
|
[guide evaluation](guide-evaluation.md), [releases](releases.md), and
|
|
39
43
|
[acknowledgements](acknowledgements.md) for maintenance.
|
|
40
44
|
Return to the [Sevro introduction](../README.md).
|
package/docs/architecture.md
CHANGED
|
@@ -4,22 +4,143 @@ Sevro owns generic execution/evidence contracts. Projects own cases and policy.
|
|
|
4
4
|
This lets Darrow and other integrations use the same runner without importing
|
|
5
5
|
their benchmark policy into it.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
This page explains this checkout's implementation and points to acceptance
|
|
8
|
+
tests for changes. [Current contracts](contracts.md) define public behavior;
|
|
9
|
+
[historical validation](evidence.md) records bounded past observations. The
|
|
10
|
+
[engine slice](engine-slice.md) retains its earlier scope and detailed lifecycle
|
|
11
|
+
explanation. Implementation paths and test scenarios here are navigation, not
|
|
12
|
+
evidence that a particular candidate passed validation.
|
|
13
|
+
|
|
14
|
+
[`engine.ts`](../src/engine.ts) remains the programmatic facade, and
|
|
15
|
+
[`cli.ts`](../src/cli.ts) remains the installed command entrypoint. The CLI
|
|
16
|
+
loads and assembles evaluation options; evaluation modules coordinate the run
|
|
17
|
+
and its trials.
|
|
18
|
+
|
|
19
|
+
## Evaluation lifecycle
|
|
20
|
+
|
|
21
|
+
[`runEvaluation`](../src/evaluation/run.ts) prepares inputs before allocating
|
|
22
|
+
run resources, retains preparation artifacts, and reserves candidate and
|
|
23
|
+
semantic workspace roots as needed before calling the trial scheduler. The map
|
|
24
|
+
follows the path of a retained trial; individual stages can be skipped or fail.
|
|
25
|
+
|
|
26
|
+
```mermaid
|
|
27
|
+
flowchart TD
|
|
28
|
+
P["Validate and prepare evaluation inputs"] --> R["Allocate run storage and owner; reserve workspace roots"]
|
|
29
|
+
R --> W["Admit trial and materialize its reserved fixture"]
|
|
30
|
+
subgraph Trial["Each admitted trial"]
|
|
31
|
+
W --> C["Initialize grading bases; execute candidate"]
|
|
32
|
+
C --> E["Retain candidate artifacts; observe output; prepare grading views"]
|
|
33
|
+
E --> G["Output, shell, Git, semantic, and extension grading"]
|
|
34
|
+
G --> A["Assess execution, grading, and task separately"]
|
|
35
|
+
A --> V["Optional independent advisory review"]
|
|
36
|
+
V --> T["Retain raw candidate response; atomically write trial evidence"]
|
|
37
|
+
T --> K["Collect completed trial and checkpoint its reference"]
|
|
38
|
+
K --> D["Release temporary views; clear or retain fixture contents"]
|
|
39
|
+
end
|
|
40
|
+
D --> J["All admitted trials drain"]
|
|
41
|
+
J --> F["Write final run evidence; finalize owner checkpoint"]
|
|
42
|
+
F --> X["Finalize retained workspaces; release other reservations"]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
[`scheduleTrials`](../src/evaluation/scheduler.ts) bounds active work by the
|
|
46
|
+
prepared job limit. It admits a trial before
|
|
47
|
+
[`prepareTrialWorkspace`](../src/evaluation/resources.ts) materializes that
|
|
48
|
+
trial's fixture. Each [`EvaluationTrial`](../src/evaluation/trial.ts) owns its
|
|
49
|
+
mutable state and writer. Its `run()` method keeps candidate execution,
|
|
50
|
+
artifact retention, grading, assessment, advisory review, persistence, and
|
|
51
|
+
cleanup in one visible order. Grading helpers return checks, observations,
|
|
52
|
+
and failures; the coordinator incorporates those results and stops new
|
|
53
|
+
admission when an execution or required grading error is detected, before
|
|
54
|
+
advisory work, persistence, or cleanup. The scheduler also stops admission on
|
|
55
|
+
cancellation and waits for active workers. A failed task check alone does not
|
|
56
|
+
close admission. Already admitted peers drain and retain their evidence, including
|
|
57
|
+
when they finish out of order.
|
|
58
|
+
|
|
59
|
+
[`runAdvisoryReview`](../src/evaluation/advisory.ts) handles its own host call,
|
|
60
|
+
assessment, retained response, and auxiliary workspace cleanup. It depends on
|
|
61
|
+
candidate completion, independently of the task assessment. The
|
|
20
62
|
[advisory fixture](advisory-fixture.md) gives review a separate Git view with
|
|
21
|
-
evaluator inputs withheld.
|
|
63
|
+
evaluator inputs withheld. Its recommendation or host failure does not change
|
|
64
|
+
task grading; a failure to retain its evidence remains a persistence error.
|
|
65
|
+
|
|
66
|
+
Successful [semantic response parsing](../src/evaluation/semantic.ts) clears
|
|
67
|
+
auxiliary fixture contents; successful advisory response parsing removes its
|
|
68
|
+
auxiliary fixture. Both retain response evidence first, including valid failed
|
|
69
|
+
check verdicts or advisory recommendations.
|
|
70
|
+
|
|
71
|
+
The [trial writer](../src/evidence/trial-writer.ts) writes the trial artifact
|
|
72
|
+
before the coordinator marks it persisted and hands it to the
|
|
73
|
+
[result collector](../src/evaluation/collection.ts). The collector registers
|
|
74
|
+
the completed record, orders records by trial number, and checkpoints retained
|
|
75
|
+
artifact paths. After active work drains, the run coordinator validates and
|
|
76
|
+
writes `run.json` before finalizing the owner as complete or interrupted.
|
|
77
|
+
Persistence failures cannot produce a successful result; the run's failure
|
|
78
|
+
path attempts a diagnostic checkpoint while preserving the original failure.
|
|
79
|
+
|
|
80
|
+
Trial cleanup releases candidate artifact runtimes and transcript views even
|
|
81
|
+
when the trial fails. Persisted successful fixture contents are cleared while
|
|
82
|
+
their empty reserved roots remain until active work drains. Failed, cancelled,
|
|
83
|
+
grading-error, unavailable-evidence, and failed-task fixtures are retained;
|
|
84
|
+
[workspace ownership](../src/fixtures/workspace-state.ts) tracks their inactive
|
|
85
|
+
retention and startup expiry after 24 hours. Saved evidence stays outside that
|
|
86
|
+
cleanup. See the [results retention contract](results-v1.md#identity-and-provenance)
|
|
87
|
+
for the public boundary, including ownership that cannot be verified.
|
|
88
|
+
|
|
89
|
+
Dry preparation still validates and materializes fixtures, including declared
|
|
90
|
+
fixture setup, and retains trial records. It skips candidate execution and
|
|
91
|
+
grading, recording `not_run` / `not_requested` / `not_assessed`, as exercised by
|
|
92
|
+
the [engine acceptance suite](../tests/engine.test.ts). Missing observations
|
|
93
|
+
remain unavailable; missing required evidence cannot become a pass. Optional
|
|
94
|
+
unknown measurements remain unknown rather than becoming zero. Extensions
|
|
95
|
+
cannot silently replace isolation, persistence,
|
|
96
|
+
or built-in policy. The [results](results-v1.md) and
|
|
97
|
+
[extension protocol](extension-protocol-v1.md) contracts define those semantics.
|
|
98
|
+
|
|
99
|
+
## State ownership
|
|
100
|
+
|
|
101
|
+
[`EvaluationContext`](../src/evaluation/context.ts) carries four explicit
|
|
102
|
+
collaborators: prepared inputs, run resources, the result collector, and retained
|
|
103
|
+
preparation-artifact references. It does not combine mutable trial fields with
|
|
104
|
+
the preparation plan.
|
|
105
|
+
|
|
106
|
+
| Data or state | Owner | Boundary |
|
|
107
|
+
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
108
|
+
| Prepared inputs | [`PreparedEvaluation` in `plan.ts`](../src/evaluation/plan.ts) | Named fixture, check, and invocation groups plus routes, provenance, redacted configuration, and comparison identity. Preparation completes before run allocation. |
|
|
109
|
+
| Run resources and reservations | [`RunResources` and `RunWorkspaceReservations` in `resources.ts`](../src/evaluation/resources.ts) | Run ID, evidence/state locations, process owner, and candidate/semantic reservations. Reservations outlive completed fixture contents; retained workspaces are tracked separately from completed roots. |
|
|
110
|
+
| Mutable trial state | [`TrialRuntimeState` and `EvaluationTrial` in `trial.ts`](../src/evaluation/trial.ts) | Candidate result, observations, checks, assessment, temporary views, advisory result, and persisted milestone belong to one admitted trial. Grading receives narrow inputs and explicit effects rather than this state object. |
|
|
111
|
+
| Collected run results | [`ResultCollector` in `collection.ts`](../src/evaluation/collection.ts) | Private completed summaries, evidence, and diagnostics; trial-number ordering, snapshots for aggregation, and checkpoint requests. [`run-owner.ts`](../src/run-owner.ts) verifies process ownership and writes owner/checkpoint state. |
|
|
112
|
+
| Evidence writes | [`TrialEvidenceWriter`](../src/evidence/trial-writer.ts), [preparation retention](../src/evaluation/resources.ts), [run finalization](../src/evaluation/run.ts) | The trial writer owns filenames, private writes, hashes, artifact references, and typed trial-persistence failures. Resource helpers retain preparation bytes; run finalization writes aggregate evidence. [`storage.ts`](../src/storage.ts) supplies atomic private JSON writes. |
|
|
113
|
+
|
|
114
|
+
Fixture modules own materialization and workspace preparation. Runtime modules
|
|
115
|
+
own declared host runtime policy and private state. Evidence modules validate
|
|
116
|
+
host observations and artifacts, verify retained bytes, and normalize optional
|
|
117
|
+
usage without constructing fixtures. Native host implementations and graders
|
|
118
|
+
remain in their own families.
|
|
119
|
+
|
|
120
|
+
## Where to change behavior
|
|
121
|
+
|
|
122
|
+
Start with the responsibility, then inspect its observable acceptance scenarios.
|
|
123
|
+
These are useful starting suites, not an exhaustive validation list. The
|
|
124
|
+
[contribution checks](../CONTRIBUTING.md#quality-contract-and-checks) still govern
|
|
125
|
+
candidate acceptance.
|
|
126
|
+
|
|
127
|
+
| Responsibility | Implementation and reference | Relevant acceptance tests |
|
|
128
|
+
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
129
|
+
| Parse commands/select explicit routes | [CLI entrypoint](../src/cli.ts), [invocation parsing](../src/cli/invocation.ts), [CLI reference](development-cli.md) | [Invalid invocations](../tests/cli/invocation-validation.test.ts) |
|
|
130
|
+
| Load and prepare a CLI evaluation | [Input loading](../src/cli/loading.ts), [preparation](../src/cli/preparation.ts), [host construction](../src/cli/hosts.ts), [extension resolution](../src/cli/extension.ts), [evaluation assembly](../src/cli/evaluation.ts) | [Case/configuration validation](../tests/cli/case-validation.test.ts) |
|
|
131
|
+
| Present CLI results and own cancellation | [Presentation](../src/cli/presentation.ts), [cancellation](../src/cli/cancellation.ts), [command lifecycle](../src/cli/command.ts) | [CLI states and exits](../tests/cli/results.test.ts), [signal retention](../tests/cli/trial-retention.test.ts) |
|
|
132
|
+
| Prepare evaluation inputs and grade trials | [Engine facade](../src/engine.ts), [plan](../src/evaluation/plan.ts), [grading](../src/evaluation/grading.ts), [semantic grading](../src/evaluation/semantic.ts), [evaluation modules](../src/evaluation/), [engine slice](engine-slice.md) | [Preparation refusals](../tests/evaluation/preparation-validation.test.ts), [semantic grading failures](../tests/evaluation/semantic-grading-failures.test.ts), [engine lifecycle](../tests/engine.test.ts) |
|
|
133
|
+
| Schedule trials, retain evidence, and finalize ownership | [Scheduler](../src/evaluation/scheduler.ts), [trial coordinator](../src/evaluation/trial.ts), [reservations](../src/evaluation/resources.ts), [collection](../src/evaluation/collection.ts), [run owner](../src/run-owner.ts) | [Concurrent admission and ordering](../tests/cli-concurrency.test.ts), [trial failures and retention](../tests/evaluation/trial-retention.test.ts), [checkpoint refusals](../tests/run-owner-checkpoints.test.ts) |
|
|
134
|
+
| Prepare, construct, and clean up fixtures | [Fixture modules](../src/fixtures/), [construction](../src/fixtures/create.ts), [preparation artifacts](../src/fixtures/preparation.ts), [content cleanup](../src/fixtures/cleanup.ts), [workspace ownership](../src/fixtures/workspace-state.ts) | [Artifact preparation](../tests/fixtures/artifact-preparation.test.ts), [workspace lifecycle](../tests/fixtures/workspace-lifecycle.test.ts) |
|
|
135
|
+
| Resolve runtime policy, discovery, and private state | [Runtime modules](../src/runtime/), [configuration](../src/runtime/config.ts) | [Runtime environment](../tests/runtime/environment.test.ts), [candidate artifact lifetime](../tests/runtime/candidate-artifacts.test.ts) |
|
|
136
|
+
| Validate host results and retain bounded evidence | [Host results](../src/evidence/host-results.ts), [trial writer](../src/evidence/trial-writer.ts), [retained artifacts](../src/evidence/retained-artifacts.ts), [usage](../src/evidence/usage.ts) | [Host evidence refusals](../tests/evaluation/host-evidence.test.ts), [failed-host evidence retention](../tests/evaluation/trial-retention.test.ts) |
|
|
137
|
+
| Negotiate trusted extension calls | [Client](../src/extension-client.ts), [session](../src/extension-session.ts), [extension grading](../src/evaluation/grading.ts), [protocol](extension-protocol-v1.md) | [Negotiated engine behavior](../tests/extension-engine.test.ts), [extension grading outcomes](../tests/evaluation/extension-grading.test.ts) |
|
|
138
|
+
| Run independent advisory review | [Advisory execution](../src/evaluation/advisory.ts), [blind fixture](../src/fixtures/advisory.ts), [advisory fixture explanation](advisory-fixture.md) | [Advisory failures](../tests/evaluation/advisory-failures.test.ts), [blind change view](../tests/advisory-fixture.test.ts) |
|
|
139
|
+
| Run native hosts and retain bounded observations | [Codex](codex-host.md), [native controls](native-controls.md), [host sources](../src/hosts/), [shared process mechanics](../src/process-lifecycle.ts), [native waiting](../src/hosts/process-lifecycle.ts) | [Native process admission and byte bounds](../tests/hosts/native-process-boundaries.test.ts) |
|
|
140
|
+
| Reduce execution/grading/task states and maintain contract shapes | [Result reduction](../src/results.ts), [shared semantic types](../src/contract-types.ts), [wire types](../src/schema-types.ts), [runtime schema boundary](../src/schema.ts), [results contract](results-v1.md) | [State and exit precedence](../tests/results.test.ts), [evidence schema boundaries](../tests/schema/evidence-boundaries.test.ts) |
|
|
141
|
+
| Bind comparison identities and release provenance | [Preparation identity inputs](../src/evaluation/plan.ts), [identity hashing](../src/identity.ts), [provenance](../src/provenance.ts), [identity contract](identity-v1.md), [releases](releases.md) | [CLI identity](../tests/cli/identity.test.ts), [package release provenance](../tests/release.test.ts) |
|
|
142
|
+
| Summarize retained results | [Report implementation](../src/report.ts), [report contract](report-v1.md) | [Report states and CLI](../tests/report.test.ts) |
|
|
22
143
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
144
|
+
[Rust research](https://github.com/BjRo/sevro/issues/2) does not establish a
|
|
145
|
+
migration; public interfaces remain useful independently. Return to the
|
|
146
|
+
[documentation hub](README.md).
|
|
@@ -38,8 +38,10 @@ The shell-check process runner accepts a bounded evaluator-owned `run` string,
|
|
|
38
38
|
optional `expectedExitCode` and `timeoutMs`, plus `expectExact`, `expectRegex`,
|
|
39
39
|
`notRegex`, and regex `flags` for stdout. Exact matching removes one final
|
|
40
40
|
newline; regex matching always uses multiline mode. The runner executes with
|
|
41
|
-
`sh -e`. On macOS and Linux it runs through the outer sandbox with network access denied
|
|
42
|
-
a credential-free environment, and caller-declared protected roots.
|
|
41
|
+
`sh -e`. On macOS and Linux it runs through the outer sandbox with network access denied
|
|
42
|
+
by default, a credential-free environment, and caller-declared protected roots.
|
|
43
|
+
The runtime [local HTTP option](runtime-v1.md#local-http-test-servers) permits
|
|
44
|
+
socket-using upstream tests while retaining outbound isolation. Without a
|
|
43
45
|
stdout assertion, process output is discarded. With one, the runner captures
|
|
44
46
|
at most 1 MiB in memory and retains only its digest and byte length. Oversized
|
|
45
47
|
or invalid UTF-8 output is a grading error.
|
package/docs/codex-host.md
CHANGED
|
@@ -31,8 +31,8 @@ because its parent directory belongs to a mounted skill; an existing mounted
|
|
|
31
31
|
target that fails or produces incomplete bytes remains partial. A completed direct
|
|
32
32
|
`cat` of one mounted `SKILL.md`, alone or alongside literal documentation
|
|
33
33
|
paths, counts only when the command output contains that file's exact body.
|
|
34
|
-
Batched reads naming
|
|
35
|
-
|
|
34
|
+
Batched reads naming more than 64 paths remain partial, as do failed,
|
|
35
|
+
malformed, or incomplete recognized reads. Direct
|
|
36
36
|
`sed -n` pages count after their verified line ranges cover the whole body. An
|
|
37
37
|
exact `cat` wrapped by `lean-ctx -c` is accepted only when its reported output
|
|
38
38
|
still contains the full body; a compressed summary cannot prove the read.
|
|
@@ -47,18 +47,36 @@ cat .agents/skills/darrow-guide/SKILL.md; cat docs/specs/repository-guide.md; rg
|
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
This sequence uses the shared stream and native read check. Quoted separators
|
|
50
|
-
remain part of their literal operand. The
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
remain part of their literal operand. The ordered file bodies must match the
|
|
51
|
+
retained output, so documentation or search output cannot replace an altered
|
|
52
|
+
or incomplete skill read. Literal `cat` commands may read multiple mounted
|
|
53
|
+
skills and documentation, before or after skills, with or without a terminal
|
|
54
|
+
search. Multiple literal terminal `rg` commands are accepted within the command
|
|
55
|
+
bound. Each verified skill receives its own ordered receipt. Documentation
|
|
56
|
+
must resolve within the workspace or a receipt-bound installed plugin root;
|
|
57
|
+
each file is bounded to 1 MiB. Aliases of mounted skills without a literal
|
|
58
|
+
`SKILL.md` operand remain unsupported.
|
|
54
59
|
The 64-operand bound applies across all reads in the sequence. Shell expansions,
|
|
55
60
|
including unquoted glob and tilde operands, are unsupported in this form.
|
|
56
61
|
|
|
62
|
+
The bounded composed-read grammar also accepts `unset` with literal variable
|
|
63
|
+
names, `pwd` or `pwd -P`, `git rev-parse --show-toplevel` (optionally with
|
|
64
|
+
`-C "$PWD"`), `printenv` with literal variable names, and `rg --files` with
|
|
65
|
+
literal arguments before the reads. Prefix `printenv` requires the reads to
|
|
66
|
+
end the command, so environment output cannot replace missing read bytes.
|
|
67
|
+
Literal `printenv` commands may follow reads without prefix `printenv`.
|
|
68
|
+
The fixed pair `repo=$(git -C "$PWD" rev-parse --show-toplevel)` and
|
|
69
|
+
`cd "$repo" && pwd -P` is supported only with absolute read operands. Other
|
|
70
|
+
assignments, substitutions, directory changes, or control flow remain
|
|
71
|
+
unsupported. Prefix and environment output cannot supply skill frontmatter;
|
|
72
|
+
ambiguous repeated output cannot establish an attributable read.
|
|
73
|
+
|
|
57
74
|
The check also accepts a chain of literal
|
|
58
75
|
`cat` fallbacks with `2>/dev/null` and `||`, ending in `true` followed by a newline
|
|
59
76
|
and one literal `rg` discovery command. A fallback chain must resolve to one
|
|
60
77
|
canonical file across all its read operands; absent alternate targets do not
|
|
61
|
-
invalidate the read.
|
|
78
|
+
invalidate the read. Each fallback `cat` names one literal file. Multiple
|
|
79
|
+
existing targets, including unmounted copies,
|
|
62
80
|
cannot establish an attributable read. The total read operands remain bounded
|
|
63
81
|
at 64. The complete command must succeed and expose the mounted file's entire
|
|
64
82
|
exact body. `cat` accepts literal file operands and the optional `--` delimiter;
|
|
@@ -99,6 +117,10 @@ The host also retains separate `sevro.codex.initial-skill-reads` and
|
|
|
99
117
|
`sevro.codex.follow-up-skill-reads` observations. Each applies the same exact
|
|
100
118
|
mounted-skill read check to one completed turn, so an extension can grade read
|
|
101
119
|
order or a missing repeat read without inferring it from the combined list.
|
|
120
|
+
For `app-server`, the verified same-thread feedback boundary separates the
|
|
121
|
+
initial phase from the follow-up phase, including subsequent native goal turns.
|
|
122
|
+
Absent, duplicated, foreign-thread, or failed boundaries do not yield phase
|
|
123
|
+
receipts.
|
|
102
124
|
|
|
103
125
|
It also checks native parent command records for exact mounted skill bodies,
|
|
104
126
|
including sessions with no spawn request. The bounded diagnostic distinguishes
|
|
@@ -137,12 +159,20 @@ discarded. Extensions interpret task names and decide whether a nested reader
|
|
|
137
159
|
satisfies their policy.
|
|
138
160
|
The record proves an invocation attempt, not its success. A missing, ambiguous,
|
|
139
161
|
unreadable, oversized, or malformed session is unavailable or partial, so its
|
|
140
|
-
absence cannot prove that a control was unused.
|
|
141
|
-
|
|
162
|
+
absence cannot prove that a control was unused. Code Mode submissions now have
|
|
163
|
+
separate bounded `execCalls` inspection receipts, described in the
|
|
164
|
+
[native control contract](native-controls.md). Direct native call ordinals and
|
|
165
|
+
acceptance receipts keep their original meaning; submitted requests do not
|
|
166
|
+
acquire direct native acceptance receipts.
|
|
142
167
|
For an explicitly declared `$plugin:skill`, the host verifies that the installed
|
|
143
168
|
skill exists and that the exact token occurs once in the delivered prompt. A
|
|
144
|
-
completed turn yields `sevro.codex.explicit-invocation` with the owner
|
|
145
|
-
verified supporting reads after it.
|
|
169
|
+
completed turn yields a complete `sevro.codex.explicit-invocation` with the owner
|
|
170
|
+
first and verified supporting reads after it. This receipt proves verified
|
|
171
|
+
owner dispatch independently of file reads; it does not prove that all
|
|
172
|
+
supporting skills were read. Consumers requiring complete supporting-read
|
|
173
|
+
evidence must also require `sevro.codex.skill-reads` (or the applicable phase
|
|
174
|
+
receipt) to be complete. Failed execution cannot yield a complete dispatch
|
|
175
|
+
receipt.
|
|
146
176
|
The `sevro.codex.repository-invocation` capability supports an explicitly
|
|
147
177
|
declared `$skill` from `.agents/skills/<skill>/SKILL.md`. The host checks that
|
|
148
178
|
the repository mount is a bounded regular file with no symlink components and
|
|
@@ -158,7 +188,11 @@ symlinks, and installs it with `codex plugin marketplace add` followed by
|
|
|
158
188
|
`codex plugin add`. It checks each installation receipt against the private
|
|
159
189
|
plugin cache. Candidate commands can read that cache, while the rest of the
|
|
160
190
|
private Codex home, including authentication and configuration, remains denied.
|
|
161
|
-
|
|
191
|
+
With the [Codex state opt-in](runtime-v1.md#candidate-codex-configuration-and-user-skills),
|
|
192
|
+
commands may read generated configuration and write actual non-system user skills;
|
|
193
|
+
graders retain read-only access to that request's original paths. Fixture-local
|
|
194
|
+
configuration is accepted as inert represented input on this route. Otherwise,
|
|
195
|
+
the host refuses fixture-local `.codex` configuration. It also refuses unsupported enforced
|
|
162
196
|
conditions, unreadable or oversized auth files, malformed event streams, and
|
|
163
197
|
incomplete turns. The host bounds output and runtime, kills its process group
|
|
164
198
|
on timeout or cancellation, and removes private state after the turn. It is
|
|
@@ -180,14 +214,18 @@ explicit workspace rule, denies all other filesystem roots except minimal
|
|
|
180
214
|
runtime files and the selected executable's install directories, and
|
|
181
215
|
specifically denies protected roots and the private Codex home. An executable
|
|
182
216
|
inside a protected root is rejected. The profile also disables command
|
|
183
|
-
network access and clears inherited command environment variables.
|
|
217
|
+
network access by default and clears inherited command environment variables.
|
|
218
|
+
The runtime [local HTTP option](runtime-v1.md#local-http-test-servers) enables
|
|
219
|
+
Codex's managed network proxy and local binding for socket-using tests.
|
|
220
|
+
The Codex
|
|
184
221
|
parent can read authentication before it starts sandboxed commands. Tests
|
|
185
222
|
invoke the installed `codex sandbox` CLI to prove fixture access, denied
|
|
186
223
|
source/auth reads, and executable access. The process adapter verifies these
|
|
187
224
|
properties in one sandbox invocation before each fresh host request, with a
|
|
188
225
|
60-second bounded startup deadline. The combined probe still requires readable
|
|
189
226
|
private command storage, denied project listing, denied authentication and
|
|
190
|
-
configuration reads
|
|
227
|
+
configuration reads (unless configuration access was explicitly enabled), and a
|
|
228
|
+
successful native executable `--version`. Continuation
|
|
191
229
|
turns reuse the same isolated state. The longer deadline accommodates observed
|
|
192
230
|
native policy startup; it is not counted as a performance saving.
|
|
193
231
|
|
|
@@ -207,3 +245,8 @@ yielded chunk count, and separate `completedCall` and `literalCommandCall`
|
|
|
207
245
|
flags. These facts distinguish recovery sources without retaining commands,
|
|
208
246
|
submitted code, or skill bodies. The diagnostic's completeness and truncation
|
|
209
247
|
fields still determine whether its read evidence can support grading.
|
|
248
|
+
|
|
249
|
+
[Issue #70 representative retests](evidence/skill-reads-70/results.json) retain
|
|
250
|
+
separate task, activation, and phase-read outcomes from the private candidate,
|
|
251
|
+
plus its source fingerprints and test-first regression results. Private native
|
|
252
|
+
transcripts remain outside the repository.
|
package/docs/contracts.md
CHANGED
|
@@ -7,6 +7,7 @@ Read these human contracts and their schemas together:
|
|
|
7
7
|
- [Report v1](report-v1.md): summaries and comparison limitations.
|
|
8
8
|
- [Identity v1](identity-v1.md): versioned comparison dimensions and hashing.
|
|
9
9
|
- [Runtime configuration v1](runtime-v1.md): environment, tools, private state, goals, and hooks.
|
|
10
|
+
- [Run settings v1](run-settings-v1.md): recurring evaluation selections and CLI overrides.
|
|
10
11
|
- [Built-in graders v1](builtin-graders-v1.md): output, shell, Git HEAD, and semantic checks.
|
|
11
12
|
- [Schemas](../schemas/): machine-readable public forms.
|
|
12
13
|
|
package/docs/creating-cases.md
CHANGED
|
@@ -4,18 +4,25 @@ Start with a direct case for a prompt, fixture, and built-in success criteria.
|
|
|
4
4
|
Copy [the basic graded case](../examples/basic/graded.json), give it a stable
|
|
5
5
|
ID, and replace the prompt/check. Read [built-in graders](builtin-graders-v1.md)
|
|
6
6
|
for regex, JSON, and bounded schema assertions. No criteria means `not_assessed`.
|
|
7
|
+
For complete coding, repository-skill, runtime, semantic and extension projects,
|
|
8
|
+
follow the [runnable recipes](recipes.md), including their deliberate failures.
|
|
7
9
|
|
|
8
10
|
Run it with the [CLI](running-evaluations.md). Direct cases follow `ResolvedCase`
|
|
9
11
|
in [the engine](../src/engine.ts). Fixtures can provide inline files, generated
|
|
10
12
|
Git history, or a declared clean repository. The [CLI reference](development-cli.md)
|
|
11
13
|
owns required source roots/maps; an arbitrary returned path does not grant access.
|
|
12
14
|
|
|
15
|
+
Selecting `--project-root` identifies the project; it does not copy its contents
|
|
16
|
+
into a participant fixture. Declare the files or repository source the participant
|
|
17
|
+
should receive. The [run defaults reference](development-cli.md#run-defaults)
|
|
18
|
+
explains how project identity, fixtures and CLI path resolution interact.
|
|
19
|
+
|
|
13
20
|
## Evaluate your repository skills
|
|
14
21
|
|
|
15
22
|
Start with one representative task, your actual skill, and observable success
|
|
16
23
|
criteria. This example evaluates a documentation guide's answer with Codex.
|
|
17
24
|
Use [Sevro from `PATH`](installing.md#make-the-command-available).
|
|
18
|
-
Live runs require the [native host prerequisites](native-hosts.md),
|
|
25
|
+
Live runs require the [native host prerequisites](native-hosts.md), supported
|
|
19
26
|
isolation, an authenticated Codex installation, and your chosen model.
|
|
20
27
|
They consume that account's model quota.
|
|
21
28
|
|
|
@@ -109,7 +116,7 @@ prepares skill mounts and interprets complete native host evidence. The
|
|
|
109
116
|
[extension protocol](extension-protocol-v1.md) defines repository and plugin
|
|
110
117
|
invocations; the checkout's [guide evals](guide-evaluation.md) demonstrate the
|
|
111
118
|
approach. Check those capabilities against your exact installed release:
|
|
112
|
-
this checkout
|
|
119
|
+
this checkout can contain [changes beyond its published version](installing.md#published-package-and-checkout).
|
|
113
120
|
|
|
114
121
|
## Reusable project policy
|
|
115
122
|
|
package/docs/development-cli.md
CHANGED
|
@@ -11,11 +11,99 @@ grading, evidence, and extension lifecycle.
|
|
|
11
11
|
Examples assume [Sevro and Bun are on `PATH`](installing.md#make-the-command-available).
|
|
12
12
|
For a contributor checkout, use `bun src/cli.ts` in place of `sevro`.
|
|
13
13
|
|
|
14
|
+
Use `sevro --help`, `sevro run --help`, or `sevro report --help` for examples,
|
|
15
|
+
required options, and defaults without preparing a run. `sevro --version` prints
|
|
16
|
+
the installed package version. Invocation and configuration diagnostics go to
|
|
17
|
+
stderr in both output modes; `--json` keeps one `sevro.cli-result.v1` document
|
|
18
|
+
on stdout. Invalid case diagnostics name the input file and offending field.
|
|
19
|
+
|
|
20
|
+
<a id="run-defaults-in-this-checkout"></a>
|
|
21
|
+
|
|
22
|
+
## Run defaults
|
|
23
|
+
|
|
24
|
+
`sevro demo` owns a deterministic case, fixture and adapter. It needs no model
|
|
25
|
+
credentials and immediately prints an assessed verdict plus an evidence path in
|
|
26
|
+
`.sevro/results` beneath the invoking directory. Its temporary project and
|
|
27
|
+
configuration are independent of the caller's files and runtime policy.
|
|
28
|
+
|
|
29
|
+
An ordinary run needs a case source and candidate route. For example:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
sevro run --case-file ./case.json --adapter-module ./host-adapter.ts
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| Setting | Default |
|
|
36
|
+
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
37
|
+
| Condition | `passive` |
|
|
38
|
+
| Trial count | `1` |
|
|
39
|
+
| Pass threshold | `1`: all assessed trials must pass; any unassessed trial prevents a pass |
|
|
40
|
+
| Parallel trial limit (`--jobs`) | `3` |
|
|
41
|
+
| Project root | Invoking current directory |
|
|
42
|
+
| Results root | `<project-root>/.sevro/results` |
|
|
43
|
+
| Configuration root | Project root |
|
|
44
|
+
| Run-state root | Results root |
|
|
45
|
+
| Runtime policy | Discover `sevro.json` at project root; none when absent |
|
|
46
|
+
| Native binary | Resolve only the explicitly selected `codex` or `claude` from `PATH`; `--codex-bin` / `--claude-bin` override it |
|
|
47
|
+
| Native execution timeout | `600000` ms (10 minutes); Codex accepts `--codex-timeout-ms` |
|
|
48
|
+
| Codex entrypoint | `exec`; a native-goal runtime policy selects `app-server` |
|
|
49
|
+
| Codex agent concurrency | `agents.max_concurrent_threads_per_session` from `.codex/config.toml` at configuration root, otherwise the host default |
|
|
50
|
+
| Shell-check expected exit | `0` unless the check declares `expectedExitCode` |
|
|
51
|
+
| Shell-check timeout | `30000` ms unless the check declares `timeoutMs` (maximum `120000`) |
|
|
52
|
+
| Shell isolation, dry preparation, host diagnostic retention | Off |
|
|
53
|
+
|
|
54
|
+
Every run file/directory option accepts a relative path based on the invoking
|
|
55
|
+
current directory, including adapter modules, extension source files, native
|
|
56
|
+
binary overrides and protected roots. Sevro resolves them to canonical absolute
|
|
57
|
+
paths before constructing protection lists; missing output-directory suffixes
|
|
58
|
+
resolve through their nearest existing parent. A different `--project-root`
|
|
59
|
+
does not change that base. The default results directory is relative to the
|
|
60
|
+
selected project root. Paths inside runtime policy files retain their
|
|
61
|
+
[runtime-specific resolution rules](runtime-v1.md).
|
|
62
|
+
Extension command JSON still requires an absolute executable argv; arbitrary
|
|
63
|
+
argv entries are not treated as CLI path options.
|
|
64
|
+
|
|
65
|
+
Sevro prints a whitelist of effective run settings and routes on stderr before
|
|
66
|
+
candidate execution, including resolved storage paths, native executables,
|
|
67
|
+
timeouts and concurrency. JSON stdout remains one result document. The preview
|
|
68
|
+
does not print credential bytes, runtime environment values or native diagnostics.
|
|
69
|
+
The resolved executable is retained as `sevro.host.executable` in each used native
|
|
70
|
+
role's redacted host configuration; selecting a different path changes that
|
|
71
|
+
configuration's identity.
|
|
72
|
+
|
|
73
|
+
Use `sevro init` with `--template response`, `coding` or
|
|
74
|
+
`repository-skill` and `--directory <new-path>`. It refuses existing destinations
|
|
75
|
+
and writes runnable assertions, a manifest and template instructions. Follow the
|
|
76
|
+
[demo-to-iteration workflow](evaluation-workflow.md) for preparation, execution
|
|
77
|
+
and negative controls. Repository-skill requires explicit native model, effort
|
|
78
|
+
and authentication; dry preparation does not establish dispatch.
|
|
79
|
+
|
|
80
|
+
Actual preparation, candidate, grading and evidence-retention stage events use
|
|
81
|
+
stderr. Human completion includes each trial's separate states, failed-check
|
|
82
|
+
reasons, measured candidate time, known/unknown usage and retained paths. JSON
|
|
83
|
+
stdout remains one result. Each retained CLI run writes `result.json` beside run
|
|
84
|
+
evidence and `<results-root>/latest.json`. `sevro report --latest` reads the current
|
|
85
|
+
directory's default results root; add `--results-root <path>` for another root.
|
|
86
|
+
Dry and failed runs can be latest.
|
|
87
|
+
|
|
88
|
+
Project root identifies the evaluated project and extension discovery. It does
|
|
89
|
+
not populate the participant workspace: declare inline files, generated history
|
|
90
|
+
or a repository source in the case's fixture. See [case authoring](creating-cases.md).
|
|
91
|
+
Keep `.sevro/` out of Git. Results and run-state paths are excluded from project
|
|
92
|
+
snapshots and untracked Git identity; tracked source changes still count.
|
|
93
|
+
|
|
94
|
+
## Explicit run settings
|
|
95
|
+
|
|
96
|
+
To repeat these selections, use the versioned [saved run settings](run-settings-v1.md)
|
|
97
|
+
with `--run-manifest-file ./evaluation.json`. Built-in defaults are replaced by
|
|
98
|
+
saved settings, then by explicit CLI options. `sevro.json` keeps its separate
|
|
99
|
+
runtime scope. Saved file paths use the manifest's directory; explicit CLI
|
|
100
|
+
paths use the invoking directory.
|
|
101
|
+
|
|
14
102
|
An installed package records its name, version, and a digest of its packaged
|
|
15
103
|
runtime and public contract files without reading runner Git metadata. The CLI
|
|
16
104
|
derives the project digest from its revision and dirty patch, or from a bounded
|
|
17
105
|
content snapshot when the project has no Git revision. Result and run-state
|
|
18
|
-
directories are excluded from that snapshot. When running this source checkout
|
|
106
|
+
directories are excluded from that snapshot and untracked Git identity. When running this source checkout
|
|
19
107
|
for coordinated development, pass `--runner-checkout-root` with the absolute
|
|
20
108
|
path to this checkout. Sevro verifies that it is the code actually running and
|
|
21
109
|
records its revision and dirty-patch digest instead of package provenance.
|
|
@@ -67,8 +155,7 @@ Add `--retain-host-diagnostics` to a failing invocation to retain private
|
|
|
67
155
|
diagnostics from bundled Codex and Claude hosts. The switch defaults to off,
|
|
68
156
|
applies to every selected native role, and is independent of runtime
|
|
69
157
|
`nativeTranscripts`. It does not enable transcript access or change the
|
|
70
|
-
candidate's permissions.
|
|
71
|
-
the published `0.1.0-rc.8` does not accept it.
|
|
158
|
+
candidate's permissions.
|
|
72
159
|
|
|
73
160
|
For example, add the switch to the Codex command above:
|
|
74
161
|
|
|
@@ -239,7 +326,8 @@ For cases with `sevro.semantic` checks, also pass
|
|
|
239
326
|
explicit second `HostAdapter` for grading. Alternatively, select the bundled
|
|
240
327
|
Codex route with `--semantic-host codex --semantic-model <model>
|
|
241
328
|
--semantic-effort <effort>`. That route also requires `--codex-bin` and
|
|
242
|
-
`--codex-auth-file`, shared with a Codex candidate route when present. The
|
|
329
|
+
`--codex-auth-file`, shared with a Codex candidate route when present. The binary
|
|
330
|
+
defaults to the explicitly selected `codex` on `PATH`. The two
|
|
243
331
|
semantic route options are exclusive. The candidate and semantic routes are
|
|
244
332
|
recorded separately in evidence and evaluation identity. The semantic adapter
|
|
245
333
|
runs after a complete candidate response in its own empty workspace; missing
|
|
@@ -293,7 +381,7 @@ verdict and rejects unsolicited recommendations.
|
|
|
293
381
|
|
|
294
382
|
If the extension needs configuration, supply both
|
|
295
383
|
`--extension-configuration-file` and
|
|
296
|
-
`--extension-redacted-configuration-file` as
|
|
384
|
+
`--extension-redacted-configuration-file` as paths to JSON objects.
|
|
297
385
|
The latter replaces secret values for the retained configuration digest. Keep
|
|
298
386
|
secrets out of the command argv and the redacted file.
|
|
299
387
|
|
|
@@ -323,7 +411,13 @@ isolated shell checks receive `.git/fixture-bin` on `PATH`. Host adapters
|
|
|
323
411
|
receive `fixtureBinDir` and must add it to their native tool environment; the
|
|
324
412
|
bundled Codex adapter also preserves it across login shells. A negotiated
|
|
325
413
|
fixture setup command may then prepare the clone before the host runs.
|
|
326
|
-
Repository
|
|
414
|
+
Repository fixtures preserve committed `.gitmodules` files and submodule gitlink
|
|
415
|
+
revisions. Trial clones leave submodules uninitialized and do not fetch their
|
|
416
|
+
contents, even when the source has initialized submodules. A fixture that needs
|
|
417
|
+
those contents must initialize them during its negotiated setup. Modified or
|
|
418
|
+
untracked files and revision changes in initialized source submodules are
|
|
419
|
+
refused, including when Git's submodule ignore settings hide them. Preparation
|
|
420
|
+
artifacts targeting `.git/` are refused.
|
|
327
421
|
|
|
328
422
|
A direct case or extension can declare a generated Git fixture:
|
|
329
423
|
|
|
@@ -415,6 +509,3 @@ Claude also advertises `sevro.host.native-goal`. Its observer binds one persiste
|
|
|
415
509
|
transcript to the original successful native session and retains goal status
|
|
416
510
|
and objective length. Missing, ambiguous, malformed or oversized evidence is
|
|
417
511
|
unavailable; an unavailable observation cannot prove goal absence.
|
|
418
|
-
|
|
419
|
-
These additions require the `0.1.0-rc.2` candidate. The published `rc.1` lacks
|
|
420
|
-
the app-server selector and native goal observations.
|