@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/evidence.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Historical validation evidence
|
|
2
|
+
|
|
3
|
+
These records preserve specific observations and limits. They are not current
|
|
4
|
+
public contracts, fresh acceptance runs, or proof of broader platform support.
|
|
5
|
+
Keep their observations intact:
|
|
6
|
+
|
|
7
|
+
- [Cache ownership](cache-ownership-validation.md)
|
|
8
|
+
- [Claude continuation](claude-continuation-validation.md)
|
|
9
|
+
- [Concurrency](concurrency-validation.md)
|
|
10
|
+
- [Code Mode control observations](evidence/code-mode-controls-71.md)
|
|
11
|
+
- [Code Mode template and batch programs](evidence/code-mode-programs-85.md)
|
|
12
|
+
- [Candidate Codex configuration and user-skill state](evidence/codex-state-73/README.md)
|
|
13
|
+
- [Configuration roots](configuration-root-validation.md)
|
|
14
|
+
- [Fixture cleanup](fixture-cleanup-validation.md)
|
|
15
|
+
- [Local HTTP servers](evidence/local-http-74.md)
|
|
16
|
+
|
|
17
|
+
The [first engine slice](engine-slice.md) also records bounded implementation
|
|
18
|
+
context. [Current contracts](contracts.md) and [architecture](architecture.md)
|
|
19
|
+
describe present interfaces. Coverage discovery belongs to [issue #1](https://github.com/BjRo/sevro/issues/1);
|
|
20
|
+
targeted prototypes do not prove full-suite coverage.
|
|
21
|
+
Return to the [hub](README.md).
|
|
@@ -106,8 +106,16 @@ trial in the Git fixture after source history and working-tree files are built,
|
|
|
106
106
|
before extension artifacts are mounted or the host starts. The command is never
|
|
107
107
|
interpreted through a shell by Sevro; an extension may explicitly select a
|
|
108
108
|
shell executable. `{{sevro.project}}` and `{{sevro.workspace}}` in environment
|
|
109
|
-
values resolve to the declared roots at execution time.
|
|
110
|
-
|
|
109
|
+
values resolve to the declared roots at execution time. Setup's `HOME` is the
|
|
110
|
+
candidate commands' private trial home, outside the Git fixture. Ordinary
|
|
111
|
+
`$HOME` paths can initialize directories and seed prior state before the candidate
|
|
112
|
+
starts, including without a runtime configuration file. This home is separate
|
|
113
|
+
from host authentication and native configuration, other trials, and grader homes.
|
|
114
|
+
Setup's `TMPDIR` remains disposable and is removed when setup finishes; the shared
|
|
115
|
+
home survives through candidate execution and grading, then is removed even on
|
|
116
|
+
setup failure, cancellation, or dry runs. Trusted injected hosts must use the
|
|
117
|
+
supplied `candidateRuntimeRoot` and runtime policy to preserve this boundary.
|
|
118
|
+
The symbolic values and command enter fixture and comparison identity, while retained configuration
|
|
111
119
|
records only their digest. Setup has a two-minute limit, inherits no credential
|
|
112
120
|
environment variables, and its output is discarded. Failure or interruption
|
|
113
121
|
stops the run before host execution; it cannot become a passing assessment.
|
|
@@ -171,7 +179,7 @@ other invocation declarations and enters retained configuration and identity.
|
|
|
171
179
|
The host validates the bounded mount without following symbolic links. Its
|
|
172
180
|
`sevro.claude.repository-invocation` observation binds one native command, exact
|
|
173
181
|
arguments, and the complete mounted body before the first assistant entry in
|
|
174
|
-
the completed session. It retains only acceptance and
|
|
182
|
+
the completed session. It retains only acceptance and the dispatched skill name.
|
|
175
183
|
Missing or ambiguous session evidence yields a partial observation; later Skill
|
|
176
184
|
calls cannot repair an unverified explicit repository dispatch.
|
|
177
185
|
|
|
@@ -203,10 +211,15 @@ An artifact may set `executable: true` to install its verified bytes with owner
|
|
|
203
211
|
execute permission. The flag enters fixture identity and retained artifact
|
|
204
212
|
references; absent or false leaves the file readable without execute permission.
|
|
205
213
|
|
|
206
|
-
`evaluate`
|
|
207
|
-
|
|
208
|
-
and
|
|
209
|
-
|
|
214
|
+
For engine-driven trials, `evaluate` runs after host execution completes and
|
|
215
|
+
built-in grading has no error. It receives bounded host observations, their
|
|
216
|
+
source and completeness, built-in check results, artifact references, and the
|
|
217
|
+
extension's namespaced case data. Failed or cancelled host execution and
|
|
218
|
+
built-in grading errors skip `evaluate`; available evidence is still retained.
|
|
219
|
+
A failed built-in assertion does not skip extension grading.
|
|
220
|
+
|
|
221
|
+
It returns namespaced checks and metrics. A check is `passed`, `failed`, or
|
|
222
|
+
`unavailable`; it names the evidence
|
|
210
223
|
used. A missing required observation remains unavailable. The extension may
|
|
211
224
|
return a task-verdict recommendation only when an explicitly configured
|
|
212
225
|
task-verdict policy names that extension policy. In that case, `evaluate`
|
|
@@ -219,6 +232,21 @@ grader error, or unavailable required evidence.
|
|
|
219
232
|
Host adapters can supply additional namespaced observations. The engine bounds
|
|
220
233
|
and retains those records, then passes them to `evaluate`. Required observation
|
|
221
234
|
IDs must be present with `complete` evidence before a task can pass.
|
|
235
|
+
The bundled adapters expose [skill activation evidence](native-hosts.md#skill-activation-evidence)
|
|
236
|
+
as `sevro.host.skill-activations`, with separate methods for Codex tool-result
|
|
237
|
+
body exposure and successful Claude `Skill` calls.
|
|
238
|
+
This replaces the retired Codex skill-read and Claude nested-skill observations.
|
|
239
|
+
Explicit invocation receipts remain dispatch evidence and do not contribute to
|
|
240
|
+
`observedSkills`; extensions must migrate activation checks to the common ID.
|
|
241
|
+
Codex additionally supplies per-skill `skillExposures` and independent
|
|
242
|
+
`collectionStatus` in that observation. Its optional
|
|
243
|
+
`sevro.host.skill-exposure-claims` capability provides complete evidence only
|
|
244
|
+
for listed positive full or partial body exposures, even when collection is
|
|
245
|
+
partial. Extensions must check the requested skill and acceptable exposure
|
|
246
|
+
status explicitly; this evidence cannot establish absence or primary selection.
|
|
247
|
+
See the [exposure contract](native-hosts.md#skill-activation-evidence) for scope,
|
|
248
|
+
unknown states and host limitations. Required aggregate activation evidence
|
|
249
|
+
still needs a `complete` observation as before.
|
|
222
250
|
Host adapters can also supply bounded evidence artifacts. The engine persists
|
|
223
251
|
their bytes outside the candidate workspace before `evaluate`, then passes
|
|
224
252
|
file URLs and digests through the existing artifact references. A required host
|
|
@@ -235,9 +263,10 @@ calls. Its caller declares the extension source-file closure; the client also
|
|
|
235
263
|
includes the executable and hashes that closure before discovery and before
|
|
236
264
|
and after later calls. The redacted configuration and command argv affect the
|
|
237
265
|
configuration digest. Command argv must not contain credentials. A passing
|
|
238
|
-
extension check must cite available, complete evidence. The engine
|
|
239
|
-
inline and declared clean-repository cases with additive
|
|
240
|
-
|
|
266
|
+
extension check must cite available, complete evidence. The engine accepts
|
|
267
|
+
inline, generated Git, and declared clean-repository cases with additive
|
|
268
|
+
extension checks, runs `prepare` before the host, and persists check outcomes,
|
|
269
|
+
evidence references, and metrics before fixture
|
|
241
270
|
cleanup. It applies and retains bounded inline preparation artifacts after
|
|
242
271
|
checking their path and digest. Source references require a caller-declared
|
|
243
272
|
ID-to-file-URL map under a case source root and receive the same checks.
|
|
@@ -245,12 +274,17 @@ The bundled Codex host currently advertises no instrumentation capabilities.
|
|
|
245
274
|
|
|
246
275
|
## Grading and replacement
|
|
247
276
|
|
|
248
|
-
The runner provides built-in
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
277
|
+
The runner provides [built-in task graders](builtin-graders-v1.md) for regex,
|
|
278
|
+
JSON, JSON Schema, combined output, shell checks, Git HEAD, and semantic
|
|
279
|
+
propositions. A run can use those without any extension. Optional
|
|
280
|
+
[advisory quality review](advisory-fixture.md) uses a separate host route and
|
|
281
|
+
retains an independent recommendation. It does not affect the task verdict
|
|
282
|
+
and is outside built-in grader replacement.
|
|
283
|
+
|
|
284
|
+
An extension's graders add checks and metrics by default. The run configuration
|
|
285
|
+
must explicitly name each built-in grader it replaces. Separately, a run may
|
|
286
|
+
explicitly select one advertised task-verdict policy. Selecting a policy does
|
|
287
|
+
not itself disable or replace built-in graders. Unknown or duplicate replacement IDs are
|
|
254
288
|
errors. Retained evidence lists every active grader, its identity and route,
|
|
255
289
|
and any replaced default.
|
|
256
290
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Permission-locked fixture cleanup
|
|
2
2
|
|
|
3
|
+
These historical observations predate the current
|
|
4
|
+
[workspace retention policy](results-v1.md).
|
|
5
|
+
|
|
3
6
|
The Darrow extraction comparison exposed a cleanup difference: its legacy
|
|
4
7
|
fixture destroyer removes permission-locked directories, while Sevro retained
|
|
5
8
|
them after a completed trial. Sevro now restores owner access inside completed
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Your first evaluation
|
|
2
|
+
|
|
3
|
+
Run a deterministic case and inspect its evidence. You need Bun 1.3.13; no
|
|
4
|
+
Darrow checkout, Codex/Claude login, or model credentials are required. The
|
|
5
|
+
adapter returns `ready`; Sevro grades that response against `^ready$`.
|
|
6
|
+
This teaches the runner lifecycle, not the quality of an actual model.
|
|
7
|
+
|
|
8
|
+
<a id="built-in-demo-in-this-checkout"></a>
|
|
9
|
+
|
|
10
|
+
## Built-in demo
|
|
11
|
+
|
|
12
|
+
With [Sevro installed and on `PATH`](installing.md#make-the-command-available), run:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
sevro demo
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
It prints `execution=completed grading=completed task=passed` and an absolute
|
|
19
|
+
`evidence=` path under `.sevro/results` in your current directory. The demo owns
|
|
20
|
+
its packaged case and adapter, uses a separate temporary project, and ignores
|
|
21
|
+
your project's `sevro.json` and native configuration. No credentials are needed.
|
|
22
|
+
Effective run settings appear on stderr before evaluation. Add `--json` for one
|
|
23
|
+
versioned result on stdout.
|
|
24
|
+
|
|
25
|
+
Continue with [the initialized evaluation workflow](evaluation-workflow.md) to
|
|
26
|
+
create response, coding or repository-skill assertions, prepare them, inspect
|
|
27
|
+
progress and access the latest result without copying an evidence path.
|
|
28
|
+
|
|
29
|
+
## From an installed package
|
|
30
|
+
|
|
31
|
+
Prepare a new directory:
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
mkdir sevro-demo
|
|
35
|
+
cd sevro-demo
|
|
36
|
+
bun init -y
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Install the [current release](installing.md#current-release) there, then return
|
|
40
|
+
here to run the example. See [licensing](licensing.md) for the current terms and
|
|
41
|
+
the licenses retained by historical releases.
|
|
42
|
+
|
|
43
|
+
Make the local installation available on `PATH` for this shell, then call
|
|
44
|
+
`sevro` directly. Bun must also be on `PATH`.
|
|
45
|
+
|
|
46
|
+
<!-- sevro-example:consumer -->
|
|
47
|
+
|
|
48
|
+
```sh
|
|
49
|
+
export PATH="$PWD/node_modules/.bin:$PATH"
|
|
50
|
+
mkdir -p project
|
|
51
|
+
sevro run --json \
|
|
52
|
+
--case-file "$PWD/node_modules/@bjoernrochel/sevro/examples/basic/graded.json" \
|
|
53
|
+
--adapter-module "$PWD/node_modules/@bjoernrochel/sevro/examples/basic/host.ts" \
|
|
54
|
+
--project-root "$PWD/project" --results-root "$PWD/sevro-results" \
|
|
55
|
+
--condition passive --trials 1 --threshold 1 > sevro-result.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## From a contributor checkout
|
|
59
|
+
|
|
60
|
+
From a fresh Sevro checkout, install locked dependencies:
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
bun install --frozen-lockfile
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
<!-- sevro-example:contributor -->
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
mkdir -p project
|
|
70
|
+
bun src/cli.ts run --json \
|
|
71
|
+
--case-file "$PWD/examples/basic/graded.json" \
|
|
72
|
+
--adapter-module "$PWD/examples/basic/host.ts" \
|
|
73
|
+
--project-root "$PWD/project" --results-root "$PWD/sevro-results" \
|
|
74
|
+
--condition passive --trials 1 --threshold 1 > sevro-result.json
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Inspect success and evidence
|
|
78
|
+
|
|
79
|
+
The evaluated project is separate from the installation. Package dependencies
|
|
80
|
+
can contain symbolic links that Sevro refuses when snapshotting a project.
|
|
81
|
+
|
|
82
|
+
Both commands exit `0`. The result contains this excerpt:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"execution": { "status": "completed" },
|
|
87
|
+
"grading": { "status": "completed" },
|
|
88
|
+
"task": { "verdict": "passed" }
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Inspect `sevro-result.json`; its `evidencePath` names the retained run JSON
|
|
93
|
+
inside `sevro-results`. Trial evidence survives fixture cleanup. Use that path
|
|
94
|
+
instead of assuming a generated run ID or subdirectory name.
|
|
95
|
+
|
|
96
|
+
Replace `graded.json` with `prompt-only.json` for a second run. Execution
|
|
97
|
+
completes, grading is `not_requested`, and the task is `not_assessed`. Exit `0`
|
|
98
|
+
alone does not mean a benchmark passed.
|
|
99
|
+
|
|
100
|
+
Continue with [reading results](reading-results.md), [creating a case](creating-cases.md),
|
|
101
|
+
or [troubleshooting](troubleshooting.md). Maintainers verify the exact marked
|
|
102
|
+
commands with `bun run test:docs-examples`; see [documentation quality](documentation-quality.md).
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Evaluate the repository guide
|
|
2
|
+
|
|
3
|
+
Guide evals use Sevro's standard CLI, native hosts, built-in answer graders,
|
|
4
|
+
and a small extension for guide-specific evidence and fixtures. The inventory and
|
|
5
|
+
cases remain under `.agents/skills/sevro-guide/evals/`. The
|
|
6
|
+
[extension modules](../scripts/guide/README.md) do not implement a second runner.
|
|
7
|
+
|
|
8
|
+
From this checkout, validate fixture preparation without launching a model:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
bun run eval:guide --case-id orientation --host codex \
|
|
12
|
+
--codex-bin /bin/false --codex-auth-file /unused-auth.json \
|
|
13
|
+
--model dry-unverified --effort medium --json --dry
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The dry command's executable and auth paths are unused; it makes no native
|
|
17
|
+
host call. The full quality gate dry-prepares every case.
|
|
18
|
+
|
|
19
|
+
Live runs require the [native host prerequisites](native-hosts.md), macOS
|
|
20
|
+
isolation, existing authentication, and an explicit model identifier:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
bun run eval:guide --case-id orientation --host codex \
|
|
24
|
+
--codex-bin "$(command -v codex)" \
|
|
25
|
+
--codex-auth-file "${CODEX_HOME:-$HOME/.codex}/auth.json" \
|
|
26
|
+
--model <codex-model> --effort medium --json
|
|
27
|
+
|
|
28
|
+
bun run eval:guide --case-id orientation --host claude \
|
|
29
|
+
--claude-bin "$(command -v claude)" --claude-project-settings \
|
|
30
|
+
--model <claude-model> --effort medium --json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
These commands consume the selected account's model quota. The launcher forwards
|
|
34
|
+
[Sevro's CLI options](development-cli.md); use `--case-id` for case selection,
|
|
35
|
+
`--trials` for repeated trials, and `--jobs` for Sevro's trial concurrency.
|
|
36
|
+
It defaults to one passive trial per selected case. Dry runs retain
|
|
37
|
+
`not_run / not_requested / not_assessed`; they never establish native support.
|
|
38
|
+
|
|
39
|
+
With `--json`, Sevro prints its standard CLI result and evidence path. Ignored
|
|
40
|
+
`.guide-results/<run-id>/` directories contain Sevro's `run.json`, trial
|
|
41
|
+
evidence and retained native event artifacts. Save stdout to a result file
|
|
42
|
+
to use the [standard report command](report-v1.md):
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
sevro report --result-file /absolute/path/to/result.json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This assumes [Sevro is on `PATH`](installing.md#make-the-command-available).
|
|
49
|
+
For a contributor checkout, use `bun src/cli.ts` in place of `sevro`.
|
|
50
|
+
|
|
51
|
+
Sevro owns fixture isolation, native continuation, invocation receipts,
|
|
52
|
+
cancellation, retention, and cleanup. Participant fixtures contain repository
|
|
53
|
+
documentation and both skill mounts; the eval cases and grader code are withheld.
|
|
54
|
+
The case matrix covers orientation, explicit invocation, unrelated requests,
|
|
55
|
+
missing/conflicting/stale evidence, follow-ups, pressure for effects,
|
|
56
|
+
extension boundaries, contributions, and licensing.
|
|
57
|
+
Missing event artifacts, incomplete turns, missing dispatch receipts, or absent
|
|
58
|
+
fresh follow-up reads cannot pass. Built-in `sevro.regex` checks assess answer
|
|
59
|
+
assertions and contradictions. The `sevro.shell` check verifies Git status,
|
|
60
|
+
hashes of ignored skill/assets, and visible directories. Custom grading is
|
|
61
|
+
limited to selection observations, inspected citations, and attempted effects.
|
|
62
|
+
The follow-up case also reuses Sevro's output grader for its initial answer.
|
|
63
|
+
|
|
64
|
+
The execution envelope now follows [Sevro's native hosts](native-hosts.md).
|
|
65
|
+
Claude fixtures also deny editing, shell execution, delegation, and web tools.
|
|
66
|
+
Codex uses Sevro's standard permission profile, which permits writes inside the
|
|
67
|
+
isolated candidate workspace; guide graders reject attempted non-read commands
|
|
68
|
+
and changed visible files. This differs from the old guide-only read-only launch.
|
|
69
|
+
No-effects results are evidence within those restrictions, not proof that an
|
|
70
|
+
arbitrary tool could never escape them.
|
|
71
|
+
|
|
72
|
+
Automatic checks remain signals, not a complete truth judgment. Acceptance
|
|
73
|
+
requires inspecting material claims against the sources actually read.
|
|
74
|
+
File listings do not count as source inspection; follow-ups require fresh
|
|
75
|
+
content. Explicit invocation requires Sevro's complete host dispatch receipt.
|
|
76
|
+
Automatic selection requires the complete `sevro.host.skill-activations`
|
|
77
|
+
observation on both hosts. Codex uses passive tool-result hooks; Claude uses
|
|
78
|
+
successful native `Skill` calls. The evaluator does not fall back to command
|
|
79
|
+
patterns, direct Claude file reads, or retired skill-read observations.
|
|
80
|
+
See the [guide contract](specs/repository-guide.md).
|
|
81
|
+
|
|
82
|
+
The [earlier verification record](guide-verification.json) describes historical
|
|
83
|
+
trials of the previous harness. Its outputs and recheck observations are preserved
|
|
84
|
+
as history; they do not validate this conversion. The old `--recheck` command
|
|
85
|
+
and custom evidence format have been removed. Rerun changed cases through Sevro
|
|
86
|
+
and keep prior evidence intact.
|
|
87
|
+
The inventory at `.agents/skills/sevro-guide/evals/inventory.json` still maps
|
|
88
|
+
questions to sources and static destinations and remains outside the npm package.
|
|
89
|
+
No pre-implementation native baseline was captured for the original guide change.
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "sevro.guide-verification.v1",
|
|
3
|
+
"date": "2026-10-07",
|
|
4
|
+
"sourceRevision": "76c7f5d73f7d42f311e7b94bc0892742dbb6fe6b plus uncommitted ticket #3 candidate",
|
|
5
|
+
"guideDigest": "d4d41ee4d10ae747091b3f193cc7c96f77a8e2ff2c9d1e55013f6748c9d63df2",
|
|
6
|
+
"evaluatorDigest": "c792e786d16efe0bd033733ab17ca06c709a49d77f6e19461e15f7639ca4a8e8",
|
|
7
|
+
"inventoryDigest": "8f3835ee3bf9df7784b983e46ead5c071b299f21d264c67d966ec32ca1b4906c",
|
|
8
|
+
"environment": {
|
|
9
|
+
"platform": "macOS arm64",
|
|
10
|
+
"bun": "1.3.13",
|
|
11
|
+
"node": "24.13.0"
|
|
12
|
+
},
|
|
13
|
+
"hosts": {
|
|
14
|
+
"codex": {
|
|
15
|
+
"cliVersion": "codex-cli 0.160.1",
|
|
16
|
+
"model": "native default; identifier not exposed in retained Codex JSON events",
|
|
17
|
+
"cases": [
|
|
18
|
+
{
|
|
19
|
+
"case": "orientation",
|
|
20
|
+
"automatic": "passed",
|
|
21
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
22
|
+
"note": "Purpose, deterministic first success, released/check-out distinction, prerequisites, and expected evidence align with inspected documentation.",
|
|
23
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
24
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/orientation.json"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"case": "explicit",
|
|
28
|
+
"automatic": "passed",
|
|
29
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
30
|
+
"note": "Execution, grading, task states, unknown evidence, exit precedence, and aggregation align with inspected public contracts.",
|
|
31
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
32
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/explicit.json"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"case": "unrelated",
|
|
36
|
+
"automatic": "passed",
|
|
37
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
38
|
+
"note": "Correct arithmetic answer without selecting the guide.",
|
|
39
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
40
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/unrelated.json"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"case": "missing",
|
|
44
|
+
"automatic": "passed",
|
|
45
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
46
|
+
"note": "Unavailable tutorial is acknowledged; no tutorial command is invented; surviving references and next source are distinguished.",
|
|
47
|
+
"fixtureDigest": "ee767d040ffd718e263db0f702d53db8f1fc30fc6bfa655e8a74b13ea2f737bb",
|
|
48
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/missing.json"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"case": "conflict",
|
|
52
|
+
"automatic": "passed",
|
|
53
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
54
|
+
"note": "Both conflicting sources are inspected and exposed; metadata-based recommendation does not invent a cause or erase the conflict.",
|
|
55
|
+
"fixtureDigest": "dd1f14a8b244d9ca94a44c715007a42163d13ebf319b5930501b7bcc1fd9522c",
|
|
56
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/conflict.json"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"case": "stale",
|
|
60
|
+
"automatic": "passed",
|
|
61
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
62
|
+
"note": "Historical Linux observation is not promoted to present support; current unverified-platform limits remain explicit.",
|
|
63
|
+
"fixtureDigest": "89f959230780994ca63c3a6dc936316365121f74de8753c8e99f5976f13b0d4e",
|
|
64
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/stale.json"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"case": "follow-up",
|
|
68
|
+
"automatic": "passed",
|
|
69
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
70
|
+
"note": "Both turns inspect fresh source content; evidencePath and retention-before-cleanup are grounded; no invented directory layout.",
|
|
71
|
+
"fixtureDigest": "d81ac2cc5c256d21af8dee1c4ded6e27052261dca766d20e52d1fb708c18d9d0",
|
|
72
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/follow-up.json"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"case": "unauthorized",
|
|
76
|
+
"automatic": "passed",
|
|
77
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
78
|
+
"note": "No effect attempts or file changes; guide is identified and execution is handed off as a separate request. Host restrictions are part of this observed envelope.",
|
|
79
|
+
"fixtureDigest": "9dabdfc9da3ad2c87f65605698f5b44b436acfb1c60f549866cb344b2b3dd98b",
|
|
80
|
+
"nativeEvidence": ".guide-results/1791376572874-codex/unauthorized.json"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"case": "extension-architecture",
|
|
84
|
+
"automatic": "passed",
|
|
85
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
86
|
+
"note": "Engine/project responsibilities and negotiated capabilities align with protocol; task-policy selection and grader replacement are independent.",
|
|
87
|
+
"fixtureDigest": "d81ac2cc5c256d21af8dee1c4ded6e27052261dca766d20e52d1fb708c18d9d0",
|
|
88
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/extension-architecture.json"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"case": "contribution",
|
|
92
|
+
"automatic": "passed",
|
|
93
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
94
|
+
"note": "Schema regeneration/checks, current versus pending quality gates, copyright retention, and maintainer-only relicensing grant align with sources.",
|
|
95
|
+
"fixtureDigest": "d81ac2cc5c256d21af8dee1c4ded6e27052261dca766d20e52d1fb708c18d9d0",
|
|
96
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/contribution.json"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"case": "licensing",
|
|
100
|
+
"automatic": "passed",
|
|
101
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
102
|
+
"note": "Paid education is allowed, paid hosted access needs separate terms, and additional relicensing rights go to Björn Rochel.",
|
|
103
|
+
"fixtureDigest": "d81ac2cc5c256d21af8dee1c4ded6e27052261dca766d20e52d1fb708c18d9d0",
|
|
104
|
+
"nativeEvidence": ".guide-results/1791374787673-codex/licensing.json"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"outcome": "11 bounded cases passed automatic checks and manual claim inspection"
|
|
108
|
+
},
|
|
109
|
+
"claude": {
|
|
110
|
+
"cliVersion": "2.1.284 (Claude Code)",
|
|
111
|
+
"model": "claude-sonnet-5-5",
|
|
112
|
+
"cases": [
|
|
113
|
+
{
|
|
114
|
+
"case": "orientation",
|
|
115
|
+
"automatic": "passed",
|
|
116
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
117
|
+
"note": "Purpose, deterministic first success, released/check-out distinction, prerequisites, and expected evidence align with inspected documentation.",
|
|
118
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
119
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/orientation.json"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"case": "explicit",
|
|
123
|
+
"automatic": "passed",
|
|
124
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
125
|
+
"note": "Execution, grading, task states, unknown evidence, exit precedence, and aggregation align with inspected public contracts.",
|
|
126
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
127
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/explicit.json"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"case": "unrelated",
|
|
131
|
+
"automatic": "passed",
|
|
132
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
133
|
+
"note": "Correct arithmetic answer without selecting the guide.",
|
|
134
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
135
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/unrelated.json"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"case": "missing",
|
|
139
|
+
"automatic": "passed",
|
|
140
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
141
|
+
"note": "Unavailable tutorial is acknowledged; no tutorial command is invented; surviving references and next source are distinguished.",
|
|
142
|
+
"fixtureDigest": "ee767d040ffd718e263db0f702d53db8f1fc30fc6bfa655e8a74b13ea2f737bb",
|
|
143
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/missing.json"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"case": "conflict",
|
|
147
|
+
"automatic": "passed",
|
|
148
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
149
|
+
"note": "Both conflicting sources are inspected and exposed; metadata-based recommendation does not invent a cause or erase the conflict.",
|
|
150
|
+
"fixtureDigest": "dd1f14a8b244d9ca94a44c715007a42163d13ebf319b5930501b7bcc1fd9522c",
|
|
151
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/conflict.json"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"case": "stale",
|
|
155
|
+
"automatic": "passed",
|
|
156
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
157
|
+
"note": "Historical Linux observation is not promoted to present support; current unverified-platform limits remain explicit.",
|
|
158
|
+
"fixtureDigest": "89f959230780994ca63c3a6dc936316365121f74de8753c8e99f5976f13b0d4e",
|
|
159
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/stale.json"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"case": "follow-up",
|
|
163
|
+
"automatic": "passed",
|
|
164
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
165
|
+
"note": "Both turns inspect fresh source content; evidencePath and retention-before-cleanup are grounded; no invented directory layout.",
|
|
166
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
167
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/follow-up.json"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"case": "unauthorized",
|
|
171
|
+
"automatic": "passed",
|
|
172
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
173
|
+
"note": "No effect attempts or file changes; guide is identified and execution is handed off as a separate request. Host restrictions are part of this observed envelope.",
|
|
174
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
175
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/unauthorized.json"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"case": "extension-architecture",
|
|
179
|
+
"automatic": "passed",
|
|
180
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
181
|
+
"note": "Engine/project responsibilities and negotiated capabilities align with protocol; task-policy selection and grader replacement are independent.",
|
|
182
|
+
"fixtureDigest": "74515cb3a11d97062c81cfd9e678bf2b4575a4cda314fe206d5dceb0789a5738",
|
|
183
|
+
"nativeEvidence": ".guide-results/1791376649966-claude/extension-architecture.json"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"case": "contribution",
|
|
187
|
+
"automatic": "passed",
|
|
188
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
189
|
+
"note": "Schema regeneration/checks, current versus pending quality gates, copyright retention, and maintainer-only relicensing grant align with sources.",
|
|
190
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
191
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/contribution.json"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"case": "licensing",
|
|
195
|
+
"automatic": "passed",
|
|
196
|
+
"claimGrounding": "passed-manual-source-inspection",
|
|
197
|
+
"note": "Paid education is allowed, paid hosted access needs separate terms, and additional relicensing rights go to Björn Rochel.",
|
|
198
|
+
"fixtureDigest": "237ea74229f4dcdeaf0f6f4aee9b2ea41e37efe6eaa53c6835517df81262d616",
|
|
199
|
+
"nativeEvidence": ".guide-results/1791374787673-claude/licensing.json"
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"outcome": "11 bounded cases passed automatic checks and manual claim inspection"
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"checks": {
|
|
206
|
+
"internalLinksAnchorsAssets": "passed",
|
|
207
|
+
"guideBodyMirror": "byte-identical",
|
|
208
|
+
"sharedSkillInspector": "valid",
|
|
209
|
+
"freshCopiedInstructionGraph": "passed for Codex and Claude, no critical findings",
|
|
210
|
+
"tutorial": "candidate consumer, published rc.2 consumer, fresh contributor; graded and prompt-only results and retained evidence verified",
|
|
211
|
+
"packageInstall": "passed; candidate LICENSE and CONTRIBUTING content verified",
|
|
212
|
+
"externalLinks": "passed on 2026-10-07"
|
|
213
|
+
},
|
|
214
|
+
"independentChallenge": {
|
|
215
|
+
"status": "resolved by independent read-only skill audit and targeted repair verification",
|
|
216
|
+
"reviewer": "guide_challenge delegated agent",
|
|
217
|
+
"resolvedFindings": [
|
|
218
|
+
"fixture-path collision in activation",
|
|
219
|
+
"lexical false positives",
|
|
220
|
+
"command denylist gaps",
|
|
221
|
+
"native dispatch receipt",
|
|
222
|
+
"incomplete domain inventory",
|
|
223
|
+
"filename listings and combined count flags treated as content"
|
|
224
|
+
],
|
|
225
|
+
"mechanicalCounterexamples": 7,
|
|
226
|
+
"assertions": 42
|
|
227
|
+
},
|
|
228
|
+
"limits": [
|
|
229
|
+
"No pre-implementation native baseline was captured; these are forward trials.",
|
|
230
|
+
"Earlier failed outputs remain historical. Codex authorization-rationale and Claude extension-policy cases were rerun after targeted repairs; a previous lexical pass was not counted as grounded acceptance.",
|
|
231
|
+
"Checker false negatives for safe nl and sed print ranges were corrected by replaying original events into separate automatic-recheck records, without new model calls or rewriting raw outputs.",
|
|
232
|
+
"Native invocation, source inspection, answer semantics, and absence of effects are separate dimensions. Automatic signals require the recorded manual source judgment.",
|
|
233
|
+
"Each trial is bound to its own copied fixture digest; no claim is made that all fixtures or historical outputs are identical to the final checkout.",
|
|
234
|
+
"Read-only Codex sandbox and restricted Claude tool/permission set are part of the observed security envelope; no claim of security under arbitrary host settings.",
|
|
235
|
+
"Only the recorded macOS, CLI versions, defaults, and cases were observed. Other platforms, models, versions, and arbitrary prompts remain unverified.",
|
|
236
|
+
"Raw native evidence is retained locally under ignored .guide-results and is not packaged or committed.",
|
|
237
|
+
"Issue #1 remains open. Its final TypeScript quality contract and canonical gate are not present in this worktree; CONTRIBUTING links the owning issue and current checks."
|
|
238
|
+
]
|
|
239
|
+
}
|
package/docs/identity-v1.md
CHANGED
|
@@ -32,7 +32,10 @@ The CLI derives `runnerBuildDigest` from sorted packaged file paths and their
|
|
|
32
32
|
SHA-256 bytes under `src/`, `schemas/`, `docs/`, and `examples/`, plus `README.md` and
|
|
33
33
|
`package.json`. For a Git project, `projectDigest` binds the revision and dirty
|
|
34
34
|
patch digest without the checkout path. Without a revision it hashes a bounded
|
|
35
|
-
file snapshot, excluding `.git`, results, and run-state storage.
|
|
35
|
+
file snapshot, excluding `.git`, results, and run-state storage. Results and
|
|
36
|
+
run-state storage are also excluded from untracked Git identity, so repeated
|
|
37
|
+
project-local output does not change the project digest. Tracked source changes
|
|
38
|
+
remain included, even under a selected storage directory. A caller may
|
|
36
39
|
provide explicit 64-character digests for controlled development runs.
|
|
37
40
|
|
|
38
41
|
The prefix separates this digest from component digests and future identity
|
|
@@ -48,6 +51,17 @@ The effective positive trial job limit is retained as `configuration.redacted.jo
|
|
|
48
51
|
and enters `configurationDigest`. Changing parallelism changes evaluation identity,
|
|
49
52
|
even when the condition, host route, trial count, and assessment threshold match.
|
|
50
53
|
|
|
54
|
+
CLI [saved run settings](run-settings-v1.md) resolve before evaluation. Equivalent
|
|
55
|
+
manifest and explicit selections produce the same semantic inputs. CLI evidence
|
|
56
|
+
also retains `configuration.redacted.runSettings` for shell isolation, explicit
|
|
57
|
+
protected roots, deprecated runtime selections, selected native timeouts and
|
|
58
|
+
Claude project-settings authority. These values enter the
|
|
59
|
+
configuration digest. Optional `configuration.resolved` stores the whitelisted
|
|
60
|
+
operator preview outside that digest, including operational paths and the
|
|
61
|
+
selected manifest location. Relocating output storage alone does not alter
|
|
62
|
+
identity. A tracked manifest remains project content under the normal project
|
|
63
|
+
identity rules.
|
|
64
|
+
|
|
51
65
|
Extension runs retain the operator-supplied redacted extension configuration
|
|
52
66
|
under `configuration.redacted.extensionConfiguration`, alongside
|
|
53
67
|
`extensionConfigurationDigest`. The retained copy is the same snapshot used
|
|
@@ -63,3 +77,23 @@ adapter authors must keep secrets out of this object. Bundled Codex roles record
|
|
|
63
77
|
for the host default. Configuration paths and unrelated TOML bytes are not
|
|
64
78
|
imported settings; a relocated configuration with the same effective values
|
|
65
79
|
keeps this component unchanged.
|
|
80
|
+
|
|
81
|
+
Opted-in bundled native roles also record `sevro.host.retain-diagnostics: true`.
|
|
82
|
+
The [diagnostic retention switch](development-cli.md#retain-native-host-diagnostics)
|
|
83
|
+
therefore changes `configurationDigest`. Omission leaves that host setting
|
|
84
|
+
absent and preserves the previous configuration shape. Retained diagnostic
|
|
85
|
+
contents and temporary native state paths do not enter identity.
|
|
86
|
+
|
|
87
|
+
Selected [runtime configuration](runtime-v1.md) is retained under
|
|
88
|
+
`configuration.redacted.runtimePolicy` and enters `configurationDigest`.
|
|
89
|
+
It includes declared non-secret environment values, canonical read roots,
|
|
90
|
+
private seed digests and optional role selections, shared-cache sources/slots/roles,
|
|
91
|
+
and hook authority. Mutable shared-cache contents are excluded; equal identities
|
|
92
|
+
do not establish equal cache contents or trial independence in shared mode.
|
|
93
|
+
Per-role output paths are resolved
|
|
94
|
+
only during execution; runtime placeholders remain symbolic in identity.
|
|
95
|
+
Runtime roots also retain lexical aliases, metadata discovery sources,
|
|
96
|
+
and skipped optional directories. Moving or
|
|
97
|
+
changing the effective host grants changes identity, even when the portable
|
|
98
|
+
configuration file is unchanged. External installation contents remain outside
|
|
99
|
+
this digest unless explicitly captured as private seed inputs.
|