@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/development-cli.md
CHANGED
|
@@ -1,20 +1,114 @@
|
|
|
1
1
|
# Development CLI
|
|
2
2
|
|
|
3
|
-
The
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
development entrypoint while the full extension lifecycle and production
|
|
7
|
-
provenance collection are being built.
|
|
3
|
+
The `sevro run` command connects a resolved JSON case or an explicit extension
|
|
4
|
+
to a host route. The installed CLI and source entrypoint use the same engine
|
|
5
|
+
grading, evidence, and extension lifecycle.
|
|
8
6
|
|
|
9
7
|
`sevro report` reads one or more retained JSON results through the
|
|
10
8
|
[versioned report contract](report-v1.md). It emits Markdown by default or
|
|
11
9
|
`sevro.report.v1` with `--json`.
|
|
12
10
|
|
|
11
|
+
`sevro prune` [removes older retained results](reading-results.md#prune-retained-results)
|
|
12
|
+
and maintains the latest report index. Bare pruning keeps the newest ten results;
|
|
13
|
+
`--keep`, `--older-than`, and `--latest` select explicit retention policies.
|
|
14
|
+
|
|
15
|
+
Examples assume [Sevro and Bun are on `PATH`](installing.md#make-the-command-available).
|
|
16
|
+
For a contributor checkout, use `bun src/cli.ts` in place of `sevro`.
|
|
17
|
+
|
|
18
|
+
Use `sevro --help`, `sevro run --help`, `sevro report --help`, or
|
|
19
|
+
`sevro prune --help` for examples,
|
|
20
|
+
required options, and defaults without preparing a run. `sevro --version` prints
|
|
21
|
+
the installed package version. Invocation and configuration diagnostics go to
|
|
22
|
+
stderr in both output modes; `--json` keeps one `sevro.cli-result.v1` document
|
|
23
|
+
on stdout. Invalid case diagnostics name the input file and offending field.
|
|
24
|
+
|
|
25
|
+
<a id="run-defaults-in-this-checkout"></a>
|
|
26
|
+
|
|
27
|
+
## Run defaults
|
|
28
|
+
|
|
29
|
+
`sevro demo` owns a deterministic case, fixture and adapter. It needs no model
|
|
30
|
+
credentials and immediately prints an assessed verdict plus an evidence path in
|
|
31
|
+
`.sevro/results` beneath the invoking directory. Its temporary project and
|
|
32
|
+
configuration are independent of the caller's files and runtime policy.
|
|
33
|
+
|
|
34
|
+
An ordinary run needs a case source and candidate route. For example:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
sevro run --case-file ./case.json --adapter-module ./host-adapter.ts
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
| Setting | Default |
|
|
41
|
+
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
|
42
|
+
| Condition | `passive` |
|
|
43
|
+
| Trial count | `1` |
|
|
44
|
+
| Pass threshold | `1`: all assessed trials must pass; any unassessed trial prevents a pass |
|
|
45
|
+
| Parallel trial limit (`--jobs`) | `3` |
|
|
46
|
+
| Project root | Invoking current directory |
|
|
47
|
+
| Results root | `<project-root>/.sevro/results` |
|
|
48
|
+
| Configuration root | Project root |
|
|
49
|
+
| Run-state root | Results root |
|
|
50
|
+
| Runtime policy | Discover `sevro.json` at project root; none when absent |
|
|
51
|
+
| Native binary | Resolve only the explicitly selected `codex` or `claude` from `PATH`; `--codex-bin` / `--claude-bin` override it |
|
|
52
|
+
| Native execution timeout | `600000` ms (10 minutes); Codex accepts `--codex-timeout-ms` |
|
|
53
|
+
| Codex entrypoint | `exec`; a native-goal runtime policy selects `app-server` |
|
|
54
|
+
| Codex agent concurrency | `agents.max_concurrent_threads_per_session` from `.codex/config.toml` at configuration root, otherwise the host default |
|
|
55
|
+
| Shell-check expected exit | `0` unless the check declares `expectedExitCode` |
|
|
56
|
+
| Shell-check timeout | `30000` ms unless the check declares `timeoutMs` (maximum `120000`) |
|
|
57
|
+
| Shell isolation, dry preparation, host diagnostic retention | Off |
|
|
58
|
+
|
|
59
|
+
Every run file/directory option accepts a relative path based on the invoking
|
|
60
|
+
current directory, including adapter modules, extension source files, native
|
|
61
|
+
binary overrides and protected roots. Sevro resolves them to canonical absolute
|
|
62
|
+
paths before constructing protection lists; missing output-directory suffixes
|
|
63
|
+
resolve through their nearest existing parent. A different `--project-root`
|
|
64
|
+
does not change that base. The default results directory is relative to the
|
|
65
|
+
selected project root. Paths inside runtime policy files retain their
|
|
66
|
+
[runtime-specific resolution rules](runtime-v1.md).
|
|
67
|
+
Extension command JSON still requires an absolute executable argv; arbitrary
|
|
68
|
+
argv entries are not treated as CLI path options.
|
|
69
|
+
|
|
70
|
+
Sevro prints a whitelist of effective run settings and routes on stderr before
|
|
71
|
+
candidate execution, including resolved storage paths, native executables,
|
|
72
|
+
timeouts and concurrency. JSON stdout remains one result document. The preview
|
|
73
|
+
does not print credential bytes, runtime environment values or native diagnostics.
|
|
74
|
+
The resolved executable is retained as `sevro.host.executable` in each used native
|
|
75
|
+
role's redacted host configuration; selecting a different path changes that
|
|
76
|
+
configuration's identity.
|
|
77
|
+
|
|
78
|
+
Use `sevro init` with `--template response`, `coding` or
|
|
79
|
+
`repository-skill` and `--directory <new-path>`. It refuses existing destinations
|
|
80
|
+
and writes runnable assertions, a manifest and template instructions. Follow the
|
|
81
|
+
[demo-to-iteration workflow](evaluation-workflow.md) for preparation, execution
|
|
82
|
+
and negative controls. Repository-skill requires explicit native model, effort
|
|
83
|
+
and authentication; dry preparation does not establish dispatch.
|
|
84
|
+
|
|
85
|
+
Actual preparation, candidate, grading and evidence-retention stage events use
|
|
86
|
+
stderr. Human completion includes each trial's separate states, failed-check
|
|
87
|
+
reasons, measured candidate time, known/unknown usage and retained paths. JSON
|
|
88
|
+
stdout remains one result. Each retained CLI run writes `result.json` beside run
|
|
89
|
+
evidence and `<results-root>/latest.json`. `sevro report --latest` reads the current
|
|
90
|
+
directory's default results root; add `--results-root <path>` for another root.
|
|
91
|
+
Dry and failed runs can be latest.
|
|
92
|
+
|
|
93
|
+
Project root identifies the evaluated project and extension discovery. It does
|
|
94
|
+
not populate the participant workspace: declare inline files, generated history
|
|
95
|
+
or a repository source in the case's fixture. See [case authoring](creating-cases.md).
|
|
96
|
+
Keep `.sevro/` out of Git. Results and run-state paths are excluded from project
|
|
97
|
+
snapshots and untracked Git identity; tracked source changes still count.
|
|
98
|
+
|
|
99
|
+
## Explicit run settings
|
|
100
|
+
|
|
101
|
+
To repeat these selections, use the versioned [saved run settings](run-settings-v1.md)
|
|
102
|
+
with `--run-manifest-file ./evaluation.json`. Built-in defaults are replaced by
|
|
103
|
+
saved settings, then by explicit CLI options. `sevro.json` keeps its separate
|
|
104
|
+
runtime scope. Saved file paths use the manifest's directory; explicit CLI
|
|
105
|
+
paths use the invoking directory.
|
|
106
|
+
|
|
13
107
|
An installed package records its name, version, and a digest of its packaged
|
|
14
108
|
runtime and public contract files without reading runner Git metadata. The CLI
|
|
15
109
|
derives the project digest from its revision and dirty patch, or from a bounded
|
|
16
110
|
content snapshot when the project has no Git revision. Result and run-state
|
|
17
|
-
directories are excluded from that snapshot. When running this source checkout
|
|
111
|
+
directories are excluded from that snapshot and untracked Git identity. When running this source checkout
|
|
18
112
|
for coordinated development, pass `--runner-checkout-root` with the absolute
|
|
19
113
|
path to this checkout. Sevro verifies that it is the code actually running and
|
|
20
114
|
records its revision and dirty-patch digest instead of package provenance.
|
|
@@ -22,7 +116,7 @@ records its revision and dirty-patch digest instead of package provenance.
|
|
|
22
116
|
temporary project without runner Git metadata.
|
|
23
117
|
|
|
24
118
|
```sh
|
|
25
|
-
|
|
119
|
+
sevro run --json \
|
|
26
120
|
--case-file /absolute/path/case.json \
|
|
27
121
|
--adapter-module /absolute/path/host-adapter.ts \
|
|
28
122
|
--project-root /absolute/path/project \
|
|
@@ -35,7 +129,7 @@ chosen by the operator. The runner does not load it from a case file or infer
|
|
|
35
129
|
it from an installed extension. A bundled Codex route is also available:
|
|
36
130
|
|
|
37
131
|
```sh
|
|
38
|
-
|
|
132
|
+
sevro run --json \
|
|
39
133
|
--case-file /absolute/path/case.json \
|
|
40
134
|
--host codex --codex-bin /absolute/path/codex \
|
|
41
135
|
--codex-auth-file /absolute/path/auth.json \
|
|
@@ -52,6 +146,61 @@ only passive conditions. `--host` and `--adapter-module` are exclusive. Use
|
|
|
52
146
|
`--protected-root` to add private roots for Codex, including when no shell
|
|
53
147
|
checks are selected.
|
|
54
148
|
|
|
149
|
+
Use `--codex-timeout-ms <milliseconds>` to set the native Codex execution
|
|
150
|
+
timeout. It accepts an integer from `1` through `1800000` (30 minutes) and
|
|
151
|
+
defaults to `600000` (10 minutes) when omitted. It applies to every selected
|
|
152
|
+
Codex route, including semantic and advisory roles, and to both `exec` and
|
|
153
|
+
`app-server` entrypoints. For a 20-minute app-server evaluation, add
|
|
154
|
+
`--codex-entrypoint app-server --codex-timeout-ms 1200000` to the Codex command
|
|
155
|
+
above. The option requires a Codex host route; invalid values fail before a run.
|
|
156
|
+
For `app-server`, this is the only deadline for the whole session, including
|
|
157
|
+
startup requests such as `thread/start`. If it expires while a request is
|
|
158
|
+
unanswered, the failure names that request, for example
|
|
159
|
+
`App-server evaluation time bound reached awaiting thread/start`.
|
|
160
|
+
|
|
161
|
+
### Retain native host diagnostics
|
|
162
|
+
|
|
163
|
+
Add `--retain-host-diagnostics` to a failing invocation to retain private
|
|
164
|
+
diagnostics from bundled Codex and Claude hosts. The switch defaults to off,
|
|
165
|
+
applies to every selected native role, and is independent of runtime
|
|
166
|
+
`nativeTranscripts`. It does not enable transcript access or change the
|
|
167
|
+
candidate's permissions.
|
|
168
|
+
|
|
169
|
+
For example, add the switch to the Codex command above:
|
|
170
|
+
|
|
171
|
+
```sh
|
|
172
|
+
sevro run --json \
|
|
173
|
+
--case-file /absolute/path/case.json \
|
|
174
|
+
--host codex --codex-bin /absolute/path/codex \
|
|
175
|
+
--codex-auth-file /absolute/path/auth.json \
|
|
176
|
+
--model <model> --effort medium \
|
|
177
|
+
--project-root /absolute/path/project \
|
|
178
|
+
--results-root /absolute/path/results \
|
|
179
|
+
--condition passive --trials 1 --threshold 1 \
|
|
180
|
+
--retain-host-diagnostics
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Failed preparation or execution retains `sevro.host.diagnostics`, including
|
|
184
|
+
when no native session or final response exists. Its private JSON records the
|
|
185
|
+
failing stage, original error/cause chain, and recent subprocess receipts.
|
|
186
|
+
Receipts contain actual exit code or signal, monotonic duration, bounded
|
|
187
|
+
stdout/stderr prefixes, and truncation markers. App-server protocol failure is
|
|
188
|
+
separate from its process exit code.
|
|
189
|
+
|
|
190
|
+
The CLI's failure diagnostic names the artifact's file URL when it fits the
|
|
191
|
+
diagnostic length limit. The result's `evidencePath` and each trial's
|
|
192
|
+
`artifactPath` always lead to retained artifact references; semantic and
|
|
193
|
+
advisory artifacts carry their existing role prefixes. Files have private
|
|
194
|
+
permissions and are persisted before native state cleanup. The
|
|
195
|
+
[results contract](results-v1.md#native-host-diagnostics) defines the format,
|
|
196
|
+
bounds, redaction, and failure semantics.
|
|
197
|
+
|
|
198
|
+
Enabled native roles record `sevro.host.retain-diagnostics: true` in redacted
|
|
199
|
+
host configuration. This changes configuration identity, so a diagnostic rerun
|
|
200
|
+
is not an exact-repeat comparison with an invocation that omitted the switch.
|
|
201
|
+
Injected adapters own their diagnostic behavior; the CLI switch configures the
|
|
202
|
+
bundled native routes.
|
|
203
|
+
|
|
55
204
|
### Trial concurrency
|
|
56
205
|
|
|
57
206
|
`--jobs <positive integer>` bounds simultaneous trials within one case and
|
|
@@ -106,10 +255,10 @@ The same worktree protection applies to other declared source and private roots;
|
|
|
106
255
|
a package without Git metadata remains usable. Result and active-run storage
|
|
107
256
|
stay independent through `--results-root` and `--run-state-root`.
|
|
108
257
|
|
|
109
|
-
A bundled Claude Code candidate route is available on macOS:
|
|
258
|
+
A bundled Claude Code candidate route is available on macOS and Linux:
|
|
110
259
|
|
|
111
260
|
```sh
|
|
112
|
-
|
|
261
|
+
sevro run --json \
|
|
113
262
|
--case-file /absolute/path/case.json \
|
|
114
263
|
--host claude --claude-bin /absolute/path/claude \
|
|
115
264
|
--model sonnet --effort medium \
|
|
@@ -132,11 +281,16 @@ values are excluded from retained evidence and configuration digests. Pass
|
|
|
132
281
|
`--claude-credential-file` with an absolute path to select a separate saved login.
|
|
133
282
|
It accepts declared Claude
|
|
134
283
|
plugin directories and explicit skill invocations from extension preparation.
|
|
135
|
-
It runs candidate tools under Claude Code's native
|
|
136
|
-
source, and result paths denied. The route disables hooks and does not expose
|
|
284
|
+
It runs candidate tools under Claude Code's native sandbox with private,
|
|
285
|
+
source, and result paths denied. The route disables hooks by default and does not expose
|
|
137
286
|
the Write tool. It currently supports passive candidate turns only. Use
|
|
138
287
|
`--protected-root` to exclude additional private paths from the candidate's
|
|
139
|
-
filesystem access.
|
|
288
|
+
filesystem access. Configure shared host tools, private or reusable caches, goals, and selected
|
|
289
|
+
plugin hooks with [`sevro.json` or `--runtime-config-file`](runtime-v1.md).
|
|
290
|
+
The same policy reaches isolated checks and native grading hosts.
|
|
291
|
+
|
|
292
|
+
The deprecated options remain available when no runtime file is selected.
|
|
293
|
+
For plugins that run locked UV backends, use
|
|
140
294
|
`--claude-uv-cache-dir /absolute/path/to/curated-cache` to copy a prepared UV
|
|
141
295
|
cache into the trial's Git-private runtime directory before the turn. Use
|
|
142
296
|
`--toolchain-bin-dir /absolute/path/to/bin` for a compatible Python and other
|
|
@@ -160,9 +314,10 @@ Without that option, the host does not advertise
|
|
|
160
314
|
`sevro.claude.repository-invocation` and refuses explicit repository dispatch
|
|
161
315
|
before launching Claude. This avoids recording an unknown command as a usable
|
|
162
316
|
repository-skill route.
|
|
163
|
-
The host
|
|
164
|
-
|
|
165
|
-
|
|
317
|
+
The host collects successful `Skill` calls through the existing structured
|
|
318
|
+
stream as [skill activation evidence](native-hosts.md#skill-activation-evidence).
|
|
319
|
+
It uses the same collector for parent and nested actors. Missing or unmatched
|
|
320
|
+
results remain partial; separate transcript-based skill detectors are retired.
|
|
166
321
|
|
|
167
322
|
A case's `followUpPrompt` starts a UUID-bound session and resumes that same
|
|
168
323
|
session after a complete successful initial result. Both results must name
|
|
@@ -181,7 +336,8 @@ For cases with `sevro.semantic` checks, also pass
|
|
|
181
336
|
explicit second `HostAdapter` for grading. Alternatively, select the bundled
|
|
182
337
|
Codex route with `--semantic-host codex --semantic-model <model>
|
|
183
338
|
--semantic-effort <effort>`. That route also requires `--codex-bin` and
|
|
184
|
-
`--codex-auth-file`, shared with a Codex candidate route when present. The
|
|
339
|
+
`--codex-auth-file`, shared with a Codex candidate route when present. The binary
|
|
340
|
+
defaults to the explicitly selected `codex` on `PATH`. The two
|
|
185
341
|
semantic route options are exclusive. The candidate and semantic routes are
|
|
186
342
|
recorded separately in evidence and evaluation identity. The semantic adapter
|
|
187
343
|
runs after a complete candidate response in its own empty workspace; missing
|
|
@@ -235,7 +391,7 @@ verdict and rejects unsolicited recommendations.
|
|
|
235
391
|
|
|
236
392
|
If the extension needs configuration, supply both
|
|
237
393
|
`--extension-configuration-file` and
|
|
238
|
-
`--extension-redacted-configuration-file` as
|
|
394
|
+
`--extension-redacted-configuration-file` as paths to JSON objects.
|
|
239
395
|
The latter replaces secret values for the retained configuration digest. Keep
|
|
240
396
|
secrets out of the command argv and the redacted file.
|
|
241
397
|
|
|
@@ -265,7 +421,13 @@ isolated shell checks receive `.git/fixture-bin` on `PATH`. Host adapters
|
|
|
265
421
|
receive `fixtureBinDir` and must add it to their native tool environment; the
|
|
266
422
|
bundled Codex adapter also preserves it across login shells. A negotiated
|
|
267
423
|
fixture setup command may then prepare the clone before the host runs.
|
|
268
|
-
Repository
|
|
424
|
+
Repository fixtures preserve committed `.gitmodules` files and submodule gitlink
|
|
425
|
+
revisions. Trial clones leave submodules uninitialized and do not fetch their
|
|
426
|
+
contents, even when the source has initialized submodules. A fixture that needs
|
|
427
|
+
those contents must initialize them during its negotiated setup. Modified or
|
|
428
|
+
untracked files and revision changes in initialized source submodules are
|
|
429
|
+
refused, including when Git's submodule ignore settings hide them. Preparation
|
|
430
|
+
artifacts targeting `.git/` are refused.
|
|
269
431
|
|
|
270
432
|
A direct case or extension can declare a generated Git fixture:
|
|
271
433
|
|
|
@@ -289,9 +451,9 @@ fixture digest.
|
|
|
289
451
|
|
|
290
452
|
The case file follows the `ResolvedCase`
|
|
291
453
|
interface in `src/engine.ts`; this slice accepts inline files, generated Git
|
|
292
|
-
history, or a declared repository, built-in output
|
|
293
|
-
isolated shell checks. Add `{{sevro.workspace}}` to a case prompt
|
|
294
|
-
needs the trial's absolute fixture path. Sevro resolves it after fixture
|
|
454
|
+
history, or a declared repository, built-in output, semantic, and Git HEAD
|
|
455
|
+
checks, and isolated shell checks. Add `{{sevro.workspace}}` to a case prompt
|
|
456
|
+
when the host needs the trial's absolute fixture path. Sevro resolves it after fixture
|
|
295
457
|
creation for each trial and retains the template in evaluation identity. For
|
|
296
458
|
cases with two participant turns, set `followUpPrompt` to a nonempty second
|
|
297
459
|
prompt. Sevro renders the workspace token in both prompts and requires a host
|
|
@@ -311,8 +473,8 @@ For shell checks, add
|
|
|
311
473
|
`--shell-isolation` and repeat `--protected-root /absolute/path` for every
|
|
312
474
|
additional source worktree or private root. The engine always protects the
|
|
313
475
|
selected project, results, runner source, user home, configured host homes,
|
|
314
|
-
and active peer fixtures. Shell checks require macOS `sandbox-exec`
|
|
315
|
-
|
|
476
|
+
and active peer fixtures. Shell checks require macOS `sandbox-exec` or Linux
|
|
477
|
+
`bubblewrap`.
|
|
316
478
|
Injected host adapters may return namespaced observations and bounded evidence
|
|
317
479
|
artifacts. A case can list their IDs in `requiredEvidence`; missing or partial
|
|
318
480
|
host evidence produces unavailable grading rather than a passing task. The
|
|
@@ -325,9 +487,10 @@ Its retained trials record `not_run` / `not_requested` / `not_assessed` and exit
|
|
|
325
487
|
successfully when preparation succeeds. Dry and executed runs have different
|
|
326
488
|
evaluation identities.
|
|
327
489
|
Run evidence and trial files live under `--results-root`. A packaged runner
|
|
328
|
-
needs no Git checkout.
|
|
329
|
-
|
|
330
|
-
|
|
490
|
+
needs no Git checkout. Source runs also use package provenance by default;
|
|
491
|
+
pass `--runner-checkout-root` with the absolute path to the running checkout
|
|
492
|
+
to record its Git revision and dirty content. `--runner-build-digest` and
|
|
493
|
+
`--project-digest` remain optional explicit overrides for test fixtures and coordinated
|
|
331
494
|
development; normal CLI runs derive both values.
|
|
332
495
|
Use `--run-state-root /absolute/path/state` to keep active records and trial
|
|
333
496
|
checkpoints separate from results; it defaults to `--results-root`. Shell
|
|
@@ -356,6 +519,3 @@ Claude also advertises `sevro.host.native-goal`. Its observer binds one persiste
|
|
|
356
519
|
transcript to the original successful native session and retains goal status
|
|
357
520
|
and objective length. Missing, ambiguous, malformed or oversized evidence is
|
|
358
521
|
unavailable; an unavailable observation cannot prove goal absence.
|
|
359
|
-
|
|
360
|
-
These additions require the `0.1.0-rc.2` candidate. The published `rc.1` lacks
|
|
361
|
-
the app-server selector and native goal observations.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Documentation quality
|
|
2
|
+
|
|
3
|
+
Every page should answer one reader need: tutorial, how-to, reference, or
|
|
4
|
+
explanation. Landing pages can route to multiple modes. Lead with the outcome,
|
|
5
|
+
use plain language, and keep commands, prerequisites, limits, and recovery steps.
|
|
6
|
+
|
|
7
|
+
## Local checks
|
|
8
|
+
|
|
9
|
+
Run `bun run check:docs`. The Markdown parser checks local targets/anchors,
|
|
10
|
+
image alternatives, asset references, fence languages, and exact guide mirrors.
|
|
11
|
+
It validates the guide inventory's source/static destinations and case coverage.
|
|
12
|
+
It ignores code contents as links and excludes inactive fixture snapshots.
|
|
13
|
+
Local checks need no network. Run `bun run test:docs-examples` for the exact
|
|
14
|
+
marked tutorial commands in fresh consumer/contributor directories, including
|
|
15
|
+
expected verdicts and saved evidence. Candidate and released-package runs are
|
|
16
|
+
reported separately. These commands create and clean temporary directories.
|
|
17
|
+
The [recipe verifier](../scripts/documentation-recipes.ts) runs the new packaged
|
|
18
|
+
projects separately from the current published version. It executes actual
|
|
19
|
+
isolated tool/check positive and negative controls and both native hosts' dry
|
|
20
|
+
preparation; authenticated model, plugin-hook and goal behavior remain
|
|
21
|
+
unexecuted by that check. Its [prerequisites](recipes.md#prepare-a-recipe-project)
|
|
22
|
+
are mandatory, including UV and mise's declared Node installation.
|
|
23
|
+
|
|
24
|
+
`package.json.version` is the authoritative current version. `bun run docs:sync`
|
|
25
|
+
updates only the marked [Current release](installing.md#current-release) section
|
|
26
|
+
with its exact installation command. Keep its markers and heading in place;
|
|
27
|
+
the command refuses missing, duplicate, or reversed markers and invalid versions.
|
|
28
|
+
The rest of the page stays ordinary Markdown. `check:docs` compares this section
|
|
29
|
+
without writing; release preparation and package-install validation also reject
|
|
30
|
+
stale output. Run synchronization after a version bump and include the resulting
|
|
31
|
+
documentation change. Link installation and update instructions to this section.
|
|
32
|
+
Keep historical versions, licensing transitions, and minimum supported versions
|
|
33
|
+
fixed and explain their purpose beside each reference.
|
|
34
|
+
Link to the current-release section instead of repeating the current Sevro
|
|
35
|
+
version elsewhere. Describe features for the latest version, using the installed
|
|
36
|
+
`sevro` command in user workflows. Keep source-checkout instructions in contributor
|
|
37
|
+
guidance and omit notes about feature unavailability in older releases.
|
|
38
|
+
|
|
39
|
+
## External links
|
|
40
|
+
|
|
41
|
+
Run `bun run check:docs:external` separately. Transient failures are retried
|
|
42
|
+
twice. The report names the referring page and URL. Fix permanent missing
|
|
43
|
+
destinations; triage authentication walls, rate limits, timeouts, and bot blocks
|
|
44
|
+
as network limits and retry later. Do not change a valid destination just to
|
|
45
|
+
make a network job green. External success does not establish a claim's truth.
|
|
46
|
+
|
|
47
|
+
## Human review
|
|
48
|
+
|
|
49
|
+
- Can a new user reach installation, first success, results, troubleshooting,
|
|
50
|
+
architecture, and contributing without the guide?
|
|
51
|
+
- Are supported environments, credentials, side effects, and prerequisites
|
|
52
|
+
explicit beside the relevant commands?
|
|
53
|
+
- Do descriptive links, meaningful headings, source order, readable tables,
|
|
54
|
+
image alternatives, and words rather than color support accessibility?
|
|
55
|
+
- Are current contracts, accepted choices, research, and past evidence distinct?
|
|
56
|
+
- Are unique knowledge and existing destinations preserved?
|
|
57
|
+
- Do source citations support material guide claims? Are unknowns/conflicts visible?
|
|
58
|
+
|
|
59
|
+
Guide changes need [native evals](guide-evaluation.md). A structural check is
|
|
60
|
+
not proof of selection or a substitute for human review. #1's
|
|
61
|
+
[TypeScript quality contract](https://github.com/BjRo/sevro/issues/1) owns code standards.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# From a demo to your next evaluation
|
|
2
|
+
|
|
3
|
+
Create an evaluation, prepare it, run its assertions, and inspect the latest
|
|
4
|
+
result with the installed `sevro` command.
|
|
5
|
+
|
|
6
|
+
## Try the demo and create a project
|
|
7
|
+
|
|
8
|
+
You need Bun 1.3.13. [Install Sevro](installing.md) and
|
|
9
|
+
[make its command available on `PATH`](installing.md#make-the-command-available),
|
|
10
|
+
then run:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
sevro demo
|
|
14
|
+
sevro init --template response --directory ./response-evaluation
|
|
15
|
+
cd response-evaluation
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The demo returns an assessed `passed` task and evidence under `.sevro/results`,
|
|
19
|
+
using its own temporary project without credentials. The initializer refuses
|
|
20
|
+
existing destinations, including directories and symbolic links. It writes
|
|
21
|
+
real assertions, a deterministic adapter, `run.json` and template instructions.
|
|
22
|
+
[Saved settings](run-settings-v1.md) use their manifest's directory for paths;
|
|
23
|
+
`sevro.json` retains its separate runtime scope. Keep private `.sevro/` out of Git.
|
|
24
|
+
|
|
25
|
+
## Prepare before execution
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
sevro run --run-manifest-file run.json --dry
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Stderr shows the whitelisted resolved settings before candidate execution:
|
|
32
|
+
case/source selection, routes/model/effort, trials, threshold, concurrency,
|
|
33
|
+
runtime selection and canonical storage paths. Invalid input names its option,
|
|
34
|
+
file or field; missing executables name installation or explicit override paths.
|
|
35
|
+
Correct the named prerequisite and repeat preparation.
|
|
36
|
+
|
|
37
|
+
Dry preparation follows normal fixture, extension and check preparation without
|
|
38
|
+
calling the candidate or graders. Expect
|
|
39
|
+
`execution=not_run grading=not_requested task=not_assessed`. It does not establish
|
|
40
|
+
authentication, provider model availability, native skill dispatch or model success.
|
|
41
|
+
See [native prerequisites](native-hosts.md) and [troubleshooting](troubleshooting.md).
|
|
42
|
+
|
|
43
|
+
## Run, read and change one thing
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
sevro run --run-manifest-file run.json
|
|
47
|
+
sevro report --latest
|
|
48
|
+
SEVRO_TEMPLATE_FAIL=1 sevro run --run-manifest-file run.json
|
|
49
|
+
sevro report --latest
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The first run's adapter returns exactly `ready`; its regex assertion must pass.
|
|
53
|
+
The negative control returns `wrong`: expect exit `1`, completed execution and
|
|
54
|
+
grading, task `failed`, and the named `ready` check's reason. Then edit `case.json`
|
|
55
|
+
and `adapter.ts`, prepare again and rerun. Explicit flags override saved settings;
|
|
56
|
+
`--trials 3` repeats the task without rewriting `run.json`.
|
|
57
|
+
|
|
58
|
+
Progress uses stderr at actual preparation, candidate, grading and evidence
|
|
59
|
+
retention boundaries. Trial numbers distinguish concurrent work, which may
|
|
60
|
+
interleave. Stage `completed` means the attempt finished; the result states whether
|
|
61
|
+
execution/grading succeeded. Dry runs explicitly skip candidate and grading;
|
|
62
|
+
failed candidates skip grading. Failed preparation never prints candidate start.
|
|
63
|
+
Evidence completion follows persistence. Optional synchronous engine observers
|
|
64
|
+
cannot change the result through a thrown exception.
|
|
65
|
+
|
|
66
|
+
Human completion shows per-trial states, failed/unavailable check reasons,
|
|
67
|
+
measured candidate time, known/unknown usage/cost and `result=`/`evidence=` paths.
|
|
68
|
+
Candidate time measures the host call, not total setup time. Absent metrics remain
|
|
69
|
+
`unknown`; dry duration is unknown. Prompt-only completion stays `not_assessed`.
|
|
70
|
+
Add `--json` to emit one `sevro.cli-result.v1` stdout document; progress remains on
|
|
71
|
+
stderr. See [reading results](reading-results.md).
|
|
72
|
+
|
|
73
|
+
Each retained CLI evaluation saves `result.json` beside its run evidence and
|
|
74
|
+
atomically publishes `<results-root>/latest.json`. Latest is the last retained CLI
|
|
75
|
+
result, including dry runs and failed assessments. Pre-run failures do not replace
|
|
76
|
+
it. Concurrent runs publish in completion order. Output files stay under excluded
|
|
77
|
+
results storage, preserving project identity. A latest-write failure cannot turn
|
|
78
|
+
an earlier failed assessment into success.
|
|
79
|
+
|
|
80
|
+
`report --latest` reads `<cwd>/.sevro/results/latest.json`. Use
|
|
81
|
+
`report --latest --results-root ./other-results` for another output root or working
|
|
82
|
+
directory. `--result-file ./path/to/result.json` selects older runs and accepts
|
|
83
|
+
relative paths. Reports validate referenced evidence; missing/moved evidence
|
|
84
|
+
produces a diagnostic. To reclaim native bundle space while keeping reportable
|
|
85
|
+
results and hashes, use [`sevro prune --native-transcripts`](reading-results.md#remove-native-transcript-bundles).
|
|
86
|
+
Reports label bundles intentionally removed by that command as pruned.
|
|
87
|
+
[Report v1](report-v1.md) defines fields and limits.
|
|
88
|
+
|
|
89
|
+
## Choose another starter
|
|
90
|
+
|
|
91
|
+
| Template | Real assertions | Prerequisites and interpretation |
|
|
92
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
|
|
93
|
+
| `response` | Exact `ready` response; negative control returns `wrong` | Bun; no model credentials |
|
|
94
|
+
| `coding` | Edit `add.sh`; isolated checks test positive, negative and zero addition | Bun plus `sandbox-exec` on macOS or `bubblewrap`/`socat` on Linux; negative control leaves subtraction bug |
|
|
95
|
+
| `repository-skill` | Actual `.agents/skills/startup-guide/SKILL.md` mount; explicit invocation evidence; correct start command and port | Bun, Git, Codex, native isolation, explicit model/effort and readable auth file; dry is unassessed |
|
|
96
|
+
|
|
97
|
+
From a new parent directory, use `sevro init --template coding --directory ./coding-eval`
|
|
98
|
+
or `sevro init --template repository-skill --directory ./skill-eval`. Read its generated
|
|
99
|
+
README for controls and dry/live commands. Repository-skill `command.json` records
|
|
100
|
+
absolute Bun/extension argv; regenerate it after moving the project.
|
|
101
|
+
|
|
102
|
+
For model evaluations, replace a saved adapter route with explicit `--host`,
|
|
103
|
+
`--model`, `--effort` and host authentication options. Candidate, semantic and
|
|
104
|
+
advisory model choices remain independent. Deterministic adapters measure wiring;
|
|
105
|
+
they do not measure model ability. Native runs may incur provider charges.
|
|
106
|
+
Automated package checks run response/coding pass/fail and native skill preparation;
|
|
107
|
+
authenticated native behavior and human usability remain unmeasured. The
|
|
108
|
+
[study protocol](usability-study.md) records deferred human measurements.
|
|
109
|
+
[Runnable recipes](recipes.md) cover Claude, plugins/hooks, goals, semantic grading
|
|
110
|
+
and host tools.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Code Mode control evidence for issue 71
|
|
2
|
+
|
|
3
|
+
On 2026-10-14, the implementation for [issue 71](https://github.com/BjRo/sevro/issues/71)
|
|
4
|
+
replayed the four retained complete Codex native transcript bundles named in
|
|
5
|
+
that ticket through the changed Sevro observers. This is artifact rechecking,
|
|
6
|
+
not a fresh authenticated model trial. The original task checks and activation
|
|
7
|
+
outcomes were preserved separately from the new control-absence assessment.
|
|
8
|
+
Private native bundles, commands and output remain outside Git.
|
|
9
|
+
|
|
10
|
+
| Case | Inspected exec submissions | Submitted tool calls | Rechecked control absence | Original task checks | Original activation |
|
|
11
|
+
| -------------------------------------- | -------------------------- | -------------------- | ------------------------- | ----------------------- | ------------------- |
|
|
12
|
+
| guide-mutation | 2 | 4 | passed | 7 passed, 1 unavailable | passed |
|
|
13
|
+
| guide-orchestration | 3 | 6 | passed | 8 passed, 1 unavailable | passed |
|
|
14
|
+
| code-review-empty-diff | 6 | 8 | passed | 6 passed, 1 unavailable | passed |
|
|
15
|
+
| code-review-reviewer-route-unavailable | 11 | 12 | passed | 6 passed, 1 unavailable | unavailable |
|
|
16
|
+
|
|
17
|
+
The recheck found no submitted agent launch or prohibited goal mutation in any
|
|
18
|
+
case. All submission receipts had complete inspection and matching native
|
|
19
|
+
ordinals. No accepted-agent count was substituted for invocation evidence.
|
|
20
|
+
The older Darrow consumer still requires zero submitted exec calls; it needs
|
|
21
|
+
to adopt the [receipt validation contract](../native-controls.md) to grade
|
|
22
|
+
these new observations. Its original unavailable outcomes were not rewritten.
|
|
23
|
+
|
|
24
|
+
The reviewer-route case's first read used a literal Git environment reset and
|
|
25
|
+
repository-root query before its final mounted skill read. Its retained output
|
|
26
|
+
ended with the exact 20,627-character skill body still present in the Darrow
|
|
27
|
+
validation checkout. Rehydrating that independently matching mount and rebasing
|
|
28
|
+
its expired private path let the changed skill-read observer establish a
|
|
29
|
+
complete `code-review` receipt. This rechecked skill-file receipt is separate
|
|
30
|
+
from the original unavailable activation outcome; no historical trial was
|
|
31
|
+
changed to passed.
|
|
32
|
+
|
|
33
|
+
Durable Bun regressions exercise the host's public observations for completed
|
|
34
|
+
and rejected submissions, opaque code, and the repository-prefixed skill read.
|
|
35
|
+
Additional real session/file regressions cover malformed/truncated completion,
|
|
36
|
+
missing and duplicate receipts, forged textual labels, ambiguous code, namespace
|
|
37
|
+
and size limits, and contradictory receipt counts/ordinals. Existing integration
|
|
38
|
+
tests remain in place.
|
|
39
|
+
|
|
40
|
+
## Observed test-first slices
|
|
41
|
+
|
|
42
|
+
Each command below was run with its new regression present and its corresponding
|
|
43
|
+
product behavior unchanged, then rerun after the product fix. Commands invoke
|
|
44
|
+
the existing Bun harness; the shell routed their output through lean-ctx.
|
|
45
|
+
|
|
46
|
+
1. Red — `bun test tests/codex-native-calls.test.ts -t "Code Mode exposes completed literal"`: missing submitted-call inventory.
|
|
47
|
+
Green — `bun test tests/codex-native-calls.test.ts -t "Code Mode exposes completed literal"`: 1 passed.
|
|
48
|
+
2. Red — `bun test tests/codex-native-calls.test.ts -t "Code Mode portable"`: rejected request receipt missing and opaque submission reported complete.
|
|
49
|
+
Green — `bun test tests/codex-native-calls.test.ts -t "Code Mode portable"`: 2 passed.
|
|
50
|
+
3. Red — `bun test tests/codex-native-calls.test.ts -t "Code Mode inspects the retained"`: both retained parallel-read shapes reported partial.
|
|
51
|
+
Green — `bun test tests/codex-native-calls.test.ts -t "Code Mode inspects the retained"`: 2 passed.
|
|
52
|
+
4. Red — `bun test tests/codex-native-calls.test.ts -t "Code Mode refuses malformed"`: malformed and truncated completion envelopes reported complete.
|
|
53
|
+
Green — `bun test tests/codex-native-calls.test.ts -t "Code Mode refuses malformed"`: 2 passed.
|
|
54
|
+
5. Red — `bun test tests/codex-native-calls.test.ts -t "Code Mode accepts native array"`: the native array envelope reported partial.
|
|
55
|
+
Green — `bun test tests/codex-native-calls.test.ts -t "Code Mode accepts native array"`: 1 passed.
|
|
56
|
+
6. Red — `bun test tests/codex-host.test.ts -t "reviewer-route repository-prefixed"`: complete mounted body did not establish a skill read.
|
|
57
|
+
Green — `bun test tests/codex-host.test.ts -t "reviewer-route repository-prefixed"`: 1 passed.
|
|
58
|
+
7. Red — `bun test tests/native-controls.test.ts -t "contradictory Code Mode"`: mismatched submission ordinal reported complete.
|
|
59
|
+
Green — `bun test tests/native-controls.test.ts -t "contradictory Code Mode"`: 1 passed.
|
|
60
|
+
8. Red — `bun test tests/codex-native-calls.test.ts -t "attributable control evidence"`: foreign namespace and oversized tool labels reported complete.
|
|
61
|
+
Green — `bun test tests/codex-native-calls.test.ts -t "attributable control evidence"`: 2 passed.
|
|
62
|
+
|
|
63
|
+
These focused slices do not substitute for the full GitHub CI acceptance gate
|
|
64
|
+
on the PR's exact published commit.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Template and batch inspection for issue 85
|
|
2
|
+
|
|
3
|
+
On 2026-10-15, the implementation for [issue #85](https://github.com/BjRo/sevro/issues/85)
|
|
4
|
+
replayed the two original Codex native transcript bundles through the changed
|
|
5
|
+
Sevro observers and Darrow's checkpoint `67f4fcdb` extension. Bundle and decoded
|
|
6
|
+
source SHA-256 values matched the issue before replay. Raw bundles and output
|
|
7
|
+
remain private and outside Git.
|
|
8
|
+
|
|
9
|
+
| Original case | Exec submissions | Complete receipts after replay | Regraded no-agent assertion |
|
|
10
|
+
| --------------------------------- | ---------------- | ------------------------------ | --------------------------- |
|
|
11
|
+
| goal-placement-direct-same-route | 11 | 11 | passed |
|
|
12
|
+
| goal-placement-coupled-sequential | 10 | 10 | passed |
|
|
13
|
+
|
|
14
|
+
The five exact [retained program fixtures](../../tests/fixtures/code-mode-85/README.md)
|
|
15
|
+
now preserve these native ordinals and ordered submission-local labels:
|
|
16
|
+
|
|
17
|
+
- Direct 45: three `exec_command` calls.
|
|
18
|
+
- Direct 69 and 77: `apply_patch`, then `exec_command`.
|
|
19
|
+
- Coupled 30: three `exec_command` calls.
|
|
20
|
+
- Coupled 68: two `exec_command` calls.
|
|
21
|
+
|
|
22
|
+
Regrading replaced only the native-call and portable native-control observations
|
|
23
|
+
with newly inspected observations and invoked the original case's extension
|
|
24
|
+
checks. Both `darrow.evals.transcript.1` results changed from unavailable to
|
|
25
|
+
passed. These are artifact rechecks, not new candidate runs or rewritten
|
|
26
|
+
historical task verdicts. Deterministic consumer coverage separately confirms
|
|
27
|
+
that a submitted `spawn_agent` fails the no-agent assertion even when the
|
|
28
|
+
accepted-agent count is zero, and partial receipts remain unavailable.
|
|
29
|
+
|
|
30
|
+
## Observed test-first slices
|
|
31
|
+
|
|
32
|
+
1. Red — `bun test tests/codex-native-calls.test.ts -t 'retained direct ordinal 45'`: the template-command receipt was partial.
|
|
33
|
+
Green — `bun test tests/codex-native-calls.test.ts -t 'retained direct ordinal 45'`: 1 passed, with three bound call labels.
|
|
34
|
+
2. Red — `bun test tests/codex-native-calls.test.ts -t 'retained coupled ordinal'`: both destructured batch receipts were partial.
|
|
35
|
+
Green — `bun test tests/codex-native-calls.test.ts -t 'retained coupled ordinal'`: 2 passed, with three and two bound call labels respectively.
|
|
36
|
+
|
|
37
|
+
Additional regressions preserve submitted spawns inside interpolated and
|
|
38
|
+
concatenated output, reject ambiguous bindings and composition, and keep
|
|
39
|
+
private source bytes out of observations. The focused native-call/control
|
|
40
|
+
suite passed 94 tests. These checks do not replace the full GitHub CI gate
|
|
41
|
+
on the PR's exact published commit.
|
|
42
|
+
|
|
43
|
+
## Fresh native trials
|
|
44
|
+
|
|
45
|
+
Fresh trials use Darrow checkpoint `67f4fcdb`, native Codex 0.162.1 app-server,
|
|
46
|
+
candidate and semantic grader `gpt-6-luna/medium`, passive ownership, N=1,
|
|
47
|
+
jobs=1, threshold=1, and a 1,200,000 ms timeout with retained diagnostics.
|
|
48
|
+
They explicitly select the changed Sevro source worktree through
|
|
49
|
+
`SEVRO_CHECKOUT`; they are development evidence, not published-package trials.
|
|
50
|
+
|
|
51
|
+
The direct trial, run `510f99df-882f-48fe-b893-d4b6fba8864d`, completed with
|
|
52
|
+
9/10 checks passing and the no-agent assertion unavailable. Its new submission
|
|
53
|
+
29 maps a callback that invokes tools over a command array; submission 74 uses
|
|
54
|
+
an output callback with a conditional expression. Both forms remain outside
|
|
55
|
+
the [bounded inspection contract](../native-controls.md) and correctly retain
|
|
56
|
+
partial receipts. The five original programs no longer cause that limitation.
|
|
57
|
+
|
|
58
|
+
The coupled trial, run `7f9f5d8a-641e-4744-a986-05298100541c`, completed with
|
|
59
|
+
10/11 checks passing and the no-agent assertion unavailable. Submissions 29,
|
|
60
|
+
45, and 68 each use a `for ... of` output loop with a conditional expression
|
|
61
|
+
and `String(...)` conversion. That output body is also outside the bounded
|
|
62
|
+
subset and remains partial. Neither fresh run is a passing placement trial;
|
|
63
|
+
their unavailable verdicts are preserved rather than treating zero accepted
|
|
64
|
+
agents as proof of absence.
|