@bjoernrochel/sevro 0.1.0-rc.8 → 1.1.0

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.
Files changed (582) hide show
  1. package/CONTRIBUTING.md +52 -6
  2. package/README.md +12 -7
  3. package/dist/examples/basic/graded.json +13 -0
  4. package/dist/examples/basic/host.js +9 -0
  5. package/dist/examples/basic/host.js.map +1 -0
  6. package/dist/examples/basic/prompt-only.json +7 -0
  7. package/dist/examples/recipes/candidate.js +23 -0
  8. package/dist/examples/recipes/candidate.js.map +1 -0
  9. package/dist/examples/recipes/cases/coding-change.json +21 -0
  10. package/dist/examples/recipes/cases/host-tools.json +21 -0
  11. package/dist/examples/recipes/cases/mise.json +21 -0
  12. package/dist/examples/recipes/cases/node.json +21 -0
  13. package/dist/examples/recipes/cases/python-uv.json +21 -0
  14. package/dist/examples/recipes/cases/semantic.json +17 -0
  15. package/dist/examples/recipes/coding-change/check.js +16 -0
  16. package/dist/examples/recipes/coding-change/check.js.map +1 -0
  17. package/dist/examples/recipes/executable.js +20 -0
  18. package/dist/examples/recipes/executable.js.map +1 -0
  19. package/dist/examples/recipes/extension-artifacts.js +56 -0
  20. package/dist/examples/recipes/extension-artifacts.js.map +1 -0
  21. package/dist/examples/recipes/extension-methods.js +167 -0
  22. package/dist/examples/recipes/extension-methods.js.map +1 -0
  23. package/dist/examples/recipes/extension.js +28 -0
  24. package/dist/examples/recipes/extension.js.map +1 -0
  25. package/dist/examples/recipes/modules.js +9 -0
  26. package/dist/examples/recipes/modules.js.map +1 -0
  27. package/dist/examples/recipes/repository-skill/.agents/skills/startup-guide/SKILL.md +7 -0
  28. package/dist/examples/recipes/repository-skill/.claude/skills/startup-guide/SKILL.md +7 -0
  29. package/dist/examples/recipes/repository-skill/README.md +3 -0
  30. package/dist/examples/recipes/run-inputs.js +144 -0
  31. package/dist/examples/recipes/run-inputs.js.map +1 -0
  32. package/dist/examples/recipes/run-options.js +103 -0
  33. package/dist/examples/recipes/run-options.js.map +1 -0
  34. package/dist/examples/recipes/run.js +62 -0
  35. package/dist/examples/recipes/run.js.map +1 -0
  36. package/dist/examples/recipes/runtime/empty.json +1 -0
  37. package/dist/examples/recipes/runtime/goals.json +1 -0
  38. package/dist/examples/recipes/runtime/mise.json +6 -0
  39. package/dist/examples/recipes/runtime/path.json +1 -0
  40. package/dist/examples/recipes/runtime/plugins.json +4 -0
  41. package/dist/examples/recipes/runtime/python-uv.json +10 -0
  42. package/dist/examples/recipes/semantic-judge.js +27 -0
  43. package/dist/examples/recipes/semantic-judge.js.map +1 -0
  44. package/dist/examples/templates/coding/adapter.js +14 -0
  45. package/dist/examples/templates/coding/adapter.js.map +1 -0
  46. package/dist/examples/templates/coding/case.json +15 -0
  47. package/dist/examples/templates/repository-skill/.agents/skills/startup-guide/SKILL.md +6 -0
  48. package/dist/examples/templates/repository-skill/extension-data.js +61 -0
  49. package/dist/examples/templates/repository-skill/extension-data.js.map +1 -0
  50. package/dist/examples/templates/repository-skill/extension.js +29 -0
  51. package/dist/examples/templates/repository-skill/extension.js.map +1 -0
  52. package/dist/examples/templates/response/adapter.js +13 -0
  53. package/dist/examples/templates/response/adapter.js.map +1 -0
  54. package/dist/examples/templates/response/case.json +13 -0
  55. package/dist/src/advisory.js +86 -0
  56. package/dist/src/advisory.js.map +1 -0
  57. package/dist/src/candidate-artifacts.js +139 -0
  58. package/dist/src/candidate-artifacts.js.map +1 -0
  59. package/dist/src/candidate-codex-state.js +110 -0
  60. package/dist/src/candidate-codex-state.js.map +1 -0
  61. package/dist/src/case-validation.js +92 -0
  62. package/dist/src/case-validation.js.map +1 -0
  63. package/dist/src/cli/cancellation.js +21 -0
  64. package/dist/src/cli/cancellation.js.map +1 -0
  65. package/dist/src/cli/command.js +60 -0
  66. package/dist/src/cli/command.js.map +1 -0
  67. package/dist/src/cli/completion.js +14 -0
  68. package/dist/src/cli/completion.js.map +1 -0
  69. package/dist/src/cli/demo.js +45 -0
  70. package/dist/src/cli/demo.js.map +1 -0
  71. package/dist/src/cli/evaluation.js +40 -0
  72. package/dist/src/cli/evaluation.js.map +1 -0
  73. package/dist/src/cli/extension.js +54 -0
  74. package/dist/src/cli/extension.js.map +1 -0
  75. package/dist/src/cli/help.js +190 -0
  76. package/dist/src/cli/help.js.map +1 -0
  77. package/dist/src/cli/hosts.js +33 -0
  78. package/dist/src/cli/hosts.js.map +1 -0
  79. package/dist/src/cli/init-settings.js +29 -0
  80. package/dist/src/cli/init-settings.js.map +1 -0
  81. package/dist/src/cli/init.js +82 -0
  82. package/dist/src/cli/init.js.map +1 -0
  83. package/dist/src/cli/invocation.js +431 -0
  84. package/dist/src/cli/invocation.js.map +1 -0
  85. package/dist/src/cli/loading.js +110 -0
  86. package/dist/src/cli/loading.js.map +1 -0
  87. package/dist/src/cli/preparation.js +88 -0
  88. package/dist/src/cli/preparation.js.map +1 -0
  89. package/dist/src/cli/presentation.js +61 -0
  90. package/dist/src/cli/presentation.js.map +1 -0
  91. package/dist/src/cli/progress.js +5 -0
  92. package/dist/src/cli/progress.js.map +1 -0
  93. package/dist/src/cli/run-manifest.js +108 -0
  94. package/dist/src/cli/run-manifest.js.map +1 -0
  95. package/dist/src/cli/run-options.js +367 -0
  96. package/dist/src/cli/run-options.js.map +1 -0
  97. package/dist/src/cli/run-overrides.js +51 -0
  98. package/dist/src/cli/run-overrides.js.map +1 -0
  99. package/dist/src/cli/settings.js +127 -0
  100. package/dist/src/cli/settings.js.map +1 -0
  101. package/dist/src/cli/summary.js +28 -0
  102. package/dist/src/cli/summary.js.map +1 -0
  103. package/dist/src/cli.js +20 -0
  104. package/dist/src/cli.js.map +1 -0
  105. package/dist/src/contract-types.js +2 -0
  106. package/dist/src/contract-types.js.map +1 -0
  107. package/dist/src/engine.js +4 -0
  108. package/dist/src/engine.js.map +1 -0
  109. package/dist/src/evaluation/advisory.js +85 -0
  110. package/dist/src/evaluation/advisory.js.map +1 -0
  111. package/dist/src/evaluation/check-plan.js +292 -0
  112. package/dist/src/evaluation/check-plan.js.map +1 -0
  113. package/dist/src/evaluation/collection.js +61 -0
  114. package/dist/src/evaluation/collection.js.map +1 -0
  115. package/dist/src/evaluation/context.js +2 -0
  116. package/dist/src/evaluation/context.js.map +1 -0
  117. package/dist/src/evaluation/grading-host.js +28 -0
  118. package/dist/src/evaluation/grading-host.js.map +1 -0
  119. package/dist/src/evaluation/grading.js +154 -0
  120. package/dist/src/evaluation/grading.js.map +1 -0
  121. package/dist/src/evaluation/invocation-plan.js +312 -0
  122. package/dist/src/evaluation/invocation-plan.js.map +1 -0
  123. package/dist/src/evaluation/plan.js +376 -0
  124. package/dist/src/evaluation/plan.js.map +1 -0
  125. package/dist/src/evaluation/progress.js +14 -0
  126. package/dist/src/evaluation/progress.js.map +1 -0
  127. package/dist/src/evaluation/resources.js +159 -0
  128. package/dist/src/evaluation/resources.js.map +1 -0
  129. package/dist/src/evaluation/run.js +148 -0
  130. package/dist/src/evaluation/run.js.map +1 -0
  131. package/dist/src/evaluation/scheduler.js +27 -0
  132. package/dist/src/evaluation/scheduler.js.map +1 -0
  133. package/dist/src/evaluation/semantic.js +183 -0
  134. package/dist/src/evaluation/semantic.js.map +1 -0
  135. package/dist/src/evaluation/trial.js +593 -0
  136. package/dist/src/evaluation/trial.js.map +1 -0
  137. package/dist/src/evaluation/types.js +20 -0
  138. package/dist/src/evaluation/types.js.map +1 -0
  139. package/dist/src/evidence/host-results.js +67 -0
  140. package/dist/src/evidence/host-results.js.map +1 -0
  141. package/dist/src/evidence/retained-artifacts.js +17 -0
  142. package/dist/src/evidence/retained-artifacts.js.map +1 -0
  143. package/dist/src/evidence/trial-writer.js +131 -0
  144. package/dist/src/evidence/trial-writer.js.map +1 -0
  145. package/dist/src/evidence/usage.js +14 -0
  146. package/dist/src/evidence/usage.js.map +1 -0
  147. package/dist/src/executable.js +20 -0
  148. package/dist/src/executable.js.map +1 -0
  149. package/dist/src/extension-client.js +212 -0
  150. package/dist/src/extension-client.js.map +1 -0
  151. package/dist/src/extension-session.js +236 -0
  152. package/dist/src/extension-session.js.map +1 -0
  153. package/dist/src/fixtures/advisory.js +206 -0
  154. package/dist/src/fixtures/advisory.js.map +1 -0
  155. package/dist/src/fixtures/bin.js +41 -0
  156. package/dist/src/fixtures/bin.js.map +1 -0
  157. package/dist/src/fixtures/cleanup.js +43 -0
  158. package/dist/src/fixtures/cleanup.js.map +1 -0
  159. package/dist/src/fixtures/create.js +94 -0
  160. package/dist/src/fixtures/create.js.map +1 -0
  161. package/dist/src/fixtures/generated.js +181 -0
  162. package/dist/src/fixtures/generated.js.map +1 -0
  163. package/dist/src/fixtures/git-hooks.js +16 -0
  164. package/dist/src/fixtures/git-hooks.js.map +1 -0
  165. package/dist/src/fixtures/preparation.js +201 -0
  166. package/dist/src/fixtures/preparation.js.map +1 -0
  167. package/dist/src/fixtures/repository.js +255 -0
  168. package/dist/src/fixtures/repository.js.map +1 -0
  169. package/dist/src/fixtures/setup.js +175 -0
  170. package/dist/src/fixtures/setup.js.map +1 -0
  171. package/dist/src/fixtures/tools.js +57 -0
  172. package/dist/src/fixtures/tools.js.map +1 -0
  173. package/dist/src/fixtures/workspace-state.js +155 -0
  174. package/dist/src/fixtures/workspace-state.js.map +1 -0
  175. package/dist/src/generated/cli-result.cjs +2 -0
  176. package/dist/src/generated/extension.cjs +2 -0
  177. package/dist/src/generated/report.cjs +2 -0
  178. package/dist/src/generated/run-evidence.cjs +2 -0
  179. package/dist/src/generated/runtime.cjs +2 -0
  180. package/dist/src/git.js +72 -0
  181. package/dist/src/git.js.map +1 -0
  182. package/dist/src/graders/artifact.js +68 -0
  183. package/dist/src/graders/artifact.js.map +1 -0
  184. package/dist/src/graders/git-head.js +112 -0
  185. package/dist/src/graders/git-head.js.map +1 -0
  186. package/dist/src/graders/output.js +345 -0
  187. package/dist/src/graders/output.js.map +1 -0
  188. package/dist/src/graders/semantic.js +132 -0
  189. package/dist/src/graders/semantic.js.map +1 -0
  190. package/dist/src/graders/shell.js +321 -0
  191. package/dist/src/graders/shell.js.map +1 -0
  192. package/dist/src/host-diagnostic-redaction.js +52 -0
  193. package/dist/src/host-diagnostic-redaction.js.map +1 -0
  194. package/dist/src/host-diagnostics.js +248 -0
  195. package/dist/src/host-diagnostics.js.map +1 -0
  196. package/dist/src/hosts/claude-continuation.js +89 -0
  197. package/dist/src/hosts/claude-continuation.js.map +1 -0
  198. package/dist/src/hosts/claude-credential.js +121 -0
  199. package/dist/src/hosts/claude-credential.js.map +1 -0
  200. package/dist/src/hosts/claude-events.js +136 -0
  201. package/dist/src/hosts/claude-events.js.map +1 -0
  202. package/dist/src/hosts/claude-keychain.js +100 -0
  203. package/dist/src/hosts/claude-keychain.js.map +1 -0
  204. package/dist/src/hosts/claude-login-recovery.js +67 -0
  205. package/dist/src/hosts/claude-login-recovery.js.map +1 -0
  206. package/dist/src/hosts/claude-login-refresh.js +146 -0
  207. package/dist/src/hosts/claude-login-refresh.js.map +1 -0
  208. package/dist/src/hosts/claude-login-store.js +124 -0
  209. package/dist/src/hosts/claude-login-store.js.map +1 -0
  210. package/dist/src/hosts/claude-login.js +74 -0
  211. package/dist/src/hosts/claude-login.js.map +1 -0
  212. package/dist/src/hosts/claude-native-goal.js +138 -0
  213. package/dist/src/hosts/claude-native-goal.js.map +1 -0
  214. package/dist/src/hosts/claude-process.js +10 -0
  215. package/dist/src/hosts/claude-process.js.map +1 -0
  216. package/dist/src/hosts/claude-refresh-lock.js +76 -0
  217. package/dist/src/hosts/claude-refresh-lock.js.map +1 -0
  218. package/dist/src/hosts/claude-repository-invocation.js +229 -0
  219. package/dist/src/hosts/claude-repository-invocation.js.map +1 -0
  220. package/dist/src/hosts/claude-settings.js +156 -0
  221. package/dist/src/hosts/claude-settings.js.map +1 -0
  222. package/dist/src/hosts/claude-skill-activations.js +131 -0
  223. package/dist/src/hosts/claude-skill-activations.js.map +1 -0
  224. package/dist/src/hosts/claude-state.js +237 -0
  225. package/dist/src/hosts/claude-state.js.map +1 -0
  226. package/dist/src/hosts/claude-tool-calls.js +150 -0
  227. package/dist/src/hosts/claude-tool-calls.js.map +1 -0
  228. package/dist/src/hosts/claude.js +373 -0
  229. package/dist/src/hosts/claude.js.map +1 -0
  230. package/dist/src/hosts/codex-app-server.js +764 -0
  231. package/dist/src/hosts/codex-app-server.js.map +1 -0
  232. package/dist/src/hosts/codex-configuration.js +91 -0
  233. package/dist/src/hosts/codex-configuration.js.map +1 -0
  234. package/dist/src/hosts/codex-events.js +104 -0
  235. package/dist/src/hosts/codex-events.js.map +1 -0
  236. package/dist/src/hosts/codex-exec-controls.js +434 -0
  237. package/dist/src/hosts/codex-exec-controls.js.map +1 -0
  238. package/dist/src/hosts/codex-invocation.js +54 -0
  239. package/dist/src/hosts/codex-invocation.js.map +1 -0
  240. package/dist/src/hosts/codex-marketplace.js +185 -0
  241. package/dist/src/hosts/codex-marketplace.js.map +1 -0
  242. package/dist/src/hosts/codex-native-calls.js +516 -0
  243. package/dist/src/hosts/codex-native-calls.js.map +1 -0
  244. package/dist/src/hosts/codex-process.js +10 -0
  245. package/dist/src/hosts/codex-process.js.map +1 -0
  246. package/dist/src/hosts/codex-profile.js +206 -0
  247. package/dist/src/hosts/codex-profile.js.map +1 -0
  248. package/dist/src/hosts/codex-session-files.js +89 -0
  249. package/dist/src/hosts/codex-session-files.js.map +1 -0
  250. package/dist/src/hosts/codex-state.js +310 -0
  251. package/dist/src/hosts/codex-state.js.map +1 -0
  252. package/dist/src/hosts/codex.js +527 -0
  253. package/dist/src/hosts/codex.js.map +1 -0
  254. package/dist/src/hosts/isolation-common.js +43 -0
  255. package/dist/src/hosts/isolation-common.js.map +1 -0
  256. package/dist/src/hosts/isolation-roots.js +64 -0
  257. package/dist/src/hosts/isolation-roots.js.map +1 -0
  258. package/dist/src/hosts/isolation.js +12 -0
  259. package/dist/src/hosts/isolation.js.map +1 -0
  260. package/dist/src/hosts/linux-sandbox.js +127 -0
  261. package/dist/src/hosts/linux-sandbox.js.map +1 -0
  262. package/dist/src/hosts/mac-sandbox.js +137 -0
  263. package/dist/src/hosts/mac-sandbox.js.map +1 -0
  264. package/dist/src/hosts/native-controls.js +151 -0
  265. package/dist/src/hosts/native-controls.js.map +1 -0
  266. package/dist/src/hosts/native-request.js +33 -0
  267. package/dist/src/hosts/native-request.js.map +1 -0
  268. package/dist/src/hosts/process-lifecycle.js +167 -0
  269. package/dist/src/hosts/process-lifecycle.js.map +1 -0
  270. package/dist/src/hosts/protected-worktrees.js +81 -0
  271. package/dist/src/hosts/protected-worktrees.js.map +1 -0
  272. package/dist/src/hosts/skill-hook-catalog.js +100 -0
  273. package/dist/src/hosts/skill-hook-catalog.js.map +1 -0
  274. package/dist/src/hosts/skill-hook-handler.js +228 -0
  275. package/dist/src/hosts/skill-hook-handler.js.map +1 -0
  276. package/dist/src/hosts/skill-hooks.js +423 -0
  277. package/dist/src/hosts/skill-hooks.js.map +1 -0
  278. package/dist/src/hosts/workspace-fingerprint.js +72 -0
  279. package/dist/src/hosts/workspace-fingerprint.js.map +1 -0
  280. package/dist/src/identity.js +167 -0
  281. package/dist/src/identity.js.map +1 -0
  282. package/dist/src/instrumentation.js +83 -0
  283. package/dist/src/instrumentation.js.map +1 -0
  284. package/dist/src/native-transcript-state.js +85 -0
  285. package/dist/src/native-transcript-state.js.map +1 -0
  286. package/dist/src/native-transcript-view.js +65 -0
  287. package/dist/src/native-transcript-view.js.map +1 -0
  288. package/dist/src/native-transcripts.js +208 -0
  289. package/dist/src/native-transcripts.js.map +1 -0
  290. package/dist/src/paths.js +13 -0
  291. package/dist/src/paths.js.map +1 -0
  292. package/dist/src/process-lifecycle.js +101 -0
  293. package/dist/src/process-lifecycle.js.map +1 -0
  294. package/dist/src/provenance.js +263 -0
  295. package/dist/src/provenance.js.map +1 -0
  296. package/dist/src/prune.js +228 -0
  297. package/dist/src/prune.js.map +1 -0
  298. package/dist/src/report.js +276 -0
  299. package/dist/src/report.js.map +1 -0
  300. package/dist/src/resolved-case.js +29 -0
  301. package/dist/src/resolved-case.js.map +1 -0
  302. package/dist/src/results-lock.js +40 -0
  303. package/dist/src/results-lock.js.map +1 -0
  304. package/dist/src/results.js +127 -0
  305. package/dist/src/results.js.map +1 -0
  306. package/dist/src/run-owner.js +283 -0
  307. package/dist/src/run-owner.js.map +1 -0
  308. package/dist/src/runner-paths.js +11 -0
  309. package/dist/src/runner-paths.js.map +1 -0
  310. package/dist/src/runtime/config.js +323 -0
  311. package/dist/src/runtime/config.js.map +1 -0
  312. package/dist/src/runtime/discovery-apple.js +65 -0
  313. package/dist/src/runtime/discovery-apple.js.map +1 -0
  314. package/dist/src/runtime/discovery-providers.js +37 -0
  315. package/dist/src/runtime/discovery-providers.js.map +1 -0
  316. package/dist/src/runtime/discovery.js +40 -0
  317. package/dist/src/runtime/discovery.js.map +1 -0
  318. package/dist/src/runtime/hook-processes.js +81 -0
  319. package/dist/src/runtime/hook-processes.js.map +1 -0
  320. package/dist/src/runtime/hooks.js +304 -0
  321. package/dist/src/runtime/hooks.js.map +1 -0
  322. package/dist/src/runtime/paths.js +244 -0
  323. package/dist/src/runtime/paths.js.map +1 -0
  324. package/dist/src/runtime/query.js +76 -0
  325. package/dist/src/runtime/query.js.map +1 -0
  326. package/dist/src/runtime/seeds.js +98 -0
  327. package/dist/src/runtime/seeds.js.map +1 -0
  328. package/dist/src/runtime/shared-cache.js +81 -0
  329. package/dist/src/runtime/shared-cache.js.map +1 -0
  330. package/dist/src/runtime/state.js +106 -0
  331. package/dist/src/runtime/state.js.map +1 -0
  332. package/dist/src/runtime-process.js +148 -0
  333. package/dist/src/runtime-process.js.map +1 -0
  334. package/dist/src/schema-types.js +2 -0
  335. package/dist/src/schema-types.js.map +1 -0
  336. package/dist/src/schema.js +16 -0
  337. package/dist/src/schema.js.map +1 -0
  338. package/dist/src/shell.js +5 -0
  339. package/dist/src/shell.js.map +1 -0
  340. package/dist/src/sqlite-lock.js +18 -0
  341. package/dist/src/sqlite-lock.js.map +1 -0
  342. package/dist/src/storage.js +21 -0
  343. package/dist/src/storage.js.map +1 -0
  344. package/dist/src/transcript-retention.js +109 -0
  345. package/dist/src/transcript-retention.js.map +1 -0
  346. package/dist/src/value-guards.js +26 -0
  347. package/dist/src/value-guards.js.map +1 -0
  348. package/docs/README.md +19 -15
  349. package/docs/architecture.md +141 -17
  350. package/docs/assets/README.md +5 -4
  351. package/docs/builtin-graders-v1.md +9 -2
  352. package/docs/codex-host.md +155 -57
  353. package/docs/contracts.md +2 -1
  354. package/docs/creating-cases.md +10 -4
  355. package/docs/development-cli.md +197 -24
  356. package/docs/documentation-quality.md +16 -5
  357. package/docs/evaluation-workflow.md +110 -0
  358. package/docs/extension-protocol-v1.md +26 -3
  359. package/docs/getting-started.md +29 -7
  360. package/docs/guide-evaluation.md +34 -2
  361. package/docs/identity-v1.md +29 -3
  362. package/docs/installing.md +35 -17
  363. package/docs/licensing.md +2 -2
  364. package/docs/native-controls.md +76 -5
  365. package/docs/native-hosts.md +197 -8
  366. package/docs/reading-results.md +102 -0
  367. package/docs/recipes.md +490 -0
  368. package/docs/releases.md +48 -13
  369. package/docs/report-v1.md +29 -1
  370. package/docs/results-v1.md +122 -4
  371. package/docs/run-settings-v1.md +147 -0
  372. package/docs/runtime-v1.md +255 -22
  373. package/docs/specs/repository-guide.md +1 -1
  374. package/docs/troubleshooting.md +12 -12
  375. package/docs/typescript-quality.md +106 -26
  376. package/examples/recipes/candidate.ts +26 -0
  377. package/examples/recipes/cases/coding-change.json +21 -0
  378. package/examples/recipes/cases/host-tools.json +21 -0
  379. package/examples/recipes/cases/mise.json +21 -0
  380. package/examples/recipes/cases/node.json +21 -0
  381. package/examples/recipes/cases/python-uv.json +21 -0
  382. package/examples/recipes/cases/semantic.json +17 -0
  383. package/examples/recipes/coding-change/check.ts +23 -0
  384. package/examples/recipes/executable.ts +19 -0
  385. package/examples/recipes/extension-artifacts.ts +65 -0
  386. package/examples/recipes/extension-methods.ts +174 -0
  387. package/examples/recipes/extension.ts +38 -0
  388. package/examples/recipes/modules.ts +9 -0
  389. package/examples/recipes/repository-skill/.agents/skills/startup-guide/SKILL.md +7 -0
  390. package/examples/recipes/repository-skill/.claude/skills/startup-guide/SKILL.md +7 -0
  391. package/examples/recipes/repository-skill/README.md +3 -0
  392. package/examples/recipes/run-inputs.ts +183 -0
  393. package/examples/recipes/run-options.ts +132 -0
  394. package/examples/recipes/run.ts +77 -0
  395. package/examples/recipes/runtime/empty.json +1 -0
  396. package/examples/recipes/runtime/goals.json +1 -0
  397. package/examples/recipes/runtime/mise.json +6 -0
  398. package/examples/recipes/runtime/path.json +1 -0
  399. package/examples/recipes/runtime/plugins.json +4 -0
  400. package/examples/recipes/runtime/python-uv.json +10 -0
  401. package/examples/recipes/semantic-judge.ts +29 -0
  402. package/examples/templates/coding/adapter.ts +17 -0
  403. package/examples/templates/coding/case.json +15 -0
  404. package/examples/templates/repository-skill/.agents/skills/startup-guide/SKILL.md +6 -0
  405. package/examples/templates/repository-skill/extension-data.ts +64 -0
  406. package/examples/templates/repository-skill/extension.ts +32 -0
  407. package/examples/templates/response/adapter.ts +12 -0
  408. package/examples/templates/response/case.json +13 -0
  409. package/package.json +23 -9
  410. package/schemas/report-v1.schema.json +9 -0
  411. package/schemas/run-evidence-v1.schema.json +2 -1
  412. package/schemas/runtime-v1.schema.json +43 -7
  413. package/src/advisory.ts +2 -2
  414. package/src/candidate-artifacts.ts +42 -11
  415. package/src/candidate-codex-state.ts +185 -0
  416. package/src/case-validation.ts +73 -50
  417. package/src/cli/cancellation.ts +20 -0
  418. package/src/cli/command.ts +87 -0
  419. package/src/cli/completion.ts +15 -0
  420. package/src/cli/demo.ts +61 -0
  421. package/src/cli/evaluation.ts +55 -0
  422. package/src/cli/extension.ts +79 -0
  423. package/src/cli/help.ts +199 -0
  424. package/src/cli/hosts.ts +55 -0
  425. package/src/cli/init-settings.ts +31 -0
  426. package/src/cli/init.ts +112 -0
  427. package/src/{cli-invocation.ts → cli/invocation.ts} +215 -218
  428. package/src/cli/loading.ts +151 -0
  429. package/src/cli/preparation.ts +154 -0
  430. package/src/cli/presentation.ts +93 -0
  431. package/src/cli/progress.ts +6 -0
  432. package/src/cli/run-manifest.ts +128 -0
  433. package/src/cli/run-options.ts +403 -0
  434. package/src/cli/run-overrides.ts +69 -0
  435. package/src/cli/settings.ts +154 -0
  436. package/src/cli/summary.ts +43 -0
  437. package/src/cli.ts +14 -592
  438. package/src/contract-types.ts +94 -0
  439. package/src/engine.ts +9 -5
  440. package/src/evaluation/advisory.ts +150 -0
  441. package/src/{evaluation-check-plan.ts → evaluation/check-plan.ts} +103 -67
  442. package/src/evaluation/collection.ts +88 -0
  443. package/src/evaluation/context.ts +10 -0
  444. package/src/{evaluation-grading-host.ts → evaluation/grading-host.ts} +5 -5
  445. package/src/evaluation/grading.ts +235 -0
  446. package/src/{evaluation-invocation-plan.ts → evaluation/invocation-plan.ts} +147 -58
  447. package/src/{evaluation-plan.ts → evaluation/plan.ts} +208 -141
  448. package/src/evaluation/progress.ts +19 -0
  449. package/src/evaluation/resources.ts +241 -0
  450. package/src/evaluation/run.ts +206 -0
  451. package/src/{evaluation-semantic.ts → evaluation/semantic.ts} +77 -87
  452. package/src/evaluation/trial.ts +800 -0
  453. package/src/{evaluation-types.ts → evaluation/types.ts} +79 -29
  454. package/src/evidence/host-results.ts +85 -0
  455. package/src/evidence/retained-artifacts.ts +18 -0
  456. package/src/evidence/trial-writer.ts +203 -0
  457. package/src/evidence/usage.ts +17 -0
  458. package/src/executable.ts +19 -0
  459. package/src/extension-client.ts +40 -108
  460. package/src/extension-session.ts +24 -48
  461. package/src/{advisory-fixture.ts → fixtures/advisory.ts} +12 -72
  462. package/src/{fixture-bin.ts → fixtures/bin.ts} +1 -1
  463. package/src/{fixture-cleanup.ts → fixtures/cleanup.ts} +13 -7
  464. package/src/fixtures/create.ts +183 -0
  465. package/src/{generated-fixture.ts → fixtures/generated.ts} +10 -53
  466. package/src/{git-hooks.ts → fixtures/git-hooks.ts} +1 -1
  467. package/src/{preparation.ts → fixtures/preparation.ts} +6 -16
  468. package/src/{repository-fixture.ts → fixtures/repository.ts} +30 -64
  469. package/src/{fixture-setup.ts → fixtures/setup.ts} +36 -53
  470. package/src/{fixture-tools.ts → fixtures/tools.ts} +1 -1
  471. package/src/{workspace-state.ts → fixtures/workspace-state.ts} +5 -5
  472. package/src/generated/cli-result.d.cts +2 -1
  473. package/src/generated/extension.d.cts +2 -1
  474. package/src/generated/report.cjs +1 -1
  475. package/src/generated/report.d.cts +2 -1
  476. package/src/generated/run-evidence.cjs +1 -1
  477. package/src/generated/run-evidence.d.cts +2 -1
  478. package/src/generated/runtime.cjs +1 -1
  479. package/src/generated/runtime.d.cts +2 -1
  480. package/src/git.ts +94 -0
  481. package/src/graders/git-head.ts +31 -85
  482. package/src/graders/shell.ts +54 -71
  483. package/src/host-diagnostic-redaction.ts +52 -0
  484. package/src/host-diagnostics.ts +331 -0
  485. package/src/hosts/claude-continuation.ts +57 -40
  486. package/src/hosts/claude-credential.ts +160 -63
  487. package/src/hosts/claude-events.ts +34 -18
  488. package/src/hosts/claude-keychain.ts +79 -21
  489. package/src/hosts/claude-login-recovery.ts +85 -0
  490. package/src/hosts/claude-login-refresh.ts +179 -0
  491. package/src/hosts/claude-login-store.ts +162 -0
  492. package/src/hosts/claude-login.ts +107 -0
  493. package/src/hosts/claude-native-goal.ts +15 -12
  494. package/src/hosts/claude-process.ts +10 -50
  495. package/src/hosts/claude-refresh-lock.ts +82 -0
  496. package/src/hosts/claude-repository-invocation.ts +9 -34
  497. package/src/hosts/claude-settings.ts +46 -9
  498. package/src/hosts/claude-skill-activations.ts +169 -0
  499. package/src/hosts/claude-state.ts +28 -15
  500. package/src/hosts/claude-tool-calls.ts +13 -10
  501. package/src/hosts/claude.ts +121 -81
  502. package/src/hosts/codex-app-server.ts +78 -52
  503. package/src/hosts/codex-configuration.ts +5 -10
  504. package/src/hosts/codex-exec-controls.ts +516 -0
  505. package/src/hosts/codex-marketplace.ts +12 -10
  506. package/src/hosts/codex-native-calls.ts +15 -122
  507. package/src/hosts/codex-process.ts +10 -183
  508. package/src/hosts/codex-profile.ts +36 -21
  509. package/src/hosts/codex-session-files.ts +1 -9
  510. package/src/hosts/codex-state.ts +134 -18
  511. package/src/hosts/codex.ts +210 -183
  512. package/src/hosts/isolation-common.ts +8 -11
  513. package/src/hosts/isolation-roots.ts +5 -4
  514. package/src/hosts/linux-sandbox.ts +15 -2
  515. package/src/hosts/mac-sandbox.ts +87 -18
  516. package/src/hosts/native-controls.ts +72 -22
  517. package/src/hosts/native-request.ts +55 -0
  518. package/src/hosts/process-lifecycle.ts +215 -49
  519. package/src/hosts/protected-worktrees.ts +3 -2
  520. package/src/hosts/skill-hook-catalog.ts +131 -0
  521. package/src/hosts/skill-hook-handler.ts +374 -0
  522. package/src/hosts/skill-hooks.ts +585 -0
  523. package/src/instrumentation.ts +7 -8
  524. package/src/native-transcript-state.ts +22 -3
  525. package/src/native-transcript-view.ts +52 -13
  526. package/src/native-transcripts.ts +26 -11
  527. package/src/paths.ts +22 -0
  528. package/src/process-lifecycle.ts +150 -0
  529. package/src/provenance.ts +34 -13
  530. package/src/prune.ts +300 -0
  531. package/src/report.ts +63 -36
  532. package/src/resolved-case.ts +1 -1
  533. package/src/results-lock.ts +42 -0
  534. package/src/results.ts +14 -18
  535. package/src/run-owner.ts +15 -9
  536. package/src/runner-paths.ts +21 -0
  537. package/src/{runtime-config.ts → runtime/config.ts} +160 -46
  538. package/src/{runtime-discovery-apple.ts → runtime/discovery-apple.ts} +3 -3
  539. package/src/{runtime-discovery-providers.ts → runtime/discovery-providers.ts} +3 -9
  540. package/src/{runtime-discovery.ts → runtime/discovery.ts} +4 -4
  541. package/src/{runtime-hook-processes.ts → runtime/hook-processes.ts} +3 -2
  542. package/src/{runtime-hooks.ts → runtime/hooks.ts} +40 -28
  543. package/src/{runtime-paths.ts → runtime/paths.ts} +5 -19
  544. package/src/{runtime-query.ts → runtime/query.ts} +5 -5
  545. package/src/{runtime-seeds.ts → runtime/seeds.ts} +3 -3
  546. package/src/runtime/shared-cache.ts +130 -0
  547. package/src/{runtime-state.ts → runtime/state.ts} +28 -11
  548. package/src/runtime-process.ts +194 -0
  549. package/src/schema-types.ts +73 -161
  550. package/src/shell.ts +4 -0
  551. package/src/sqlite-lock.ts +25 -0
  552. package/src/transcript-retention.ts +146 -0
  553. package/src/value-guards.ts +22 -0
  554. package/docs/assets/sevro-logo.png +0 -0
  555. package/docs/assets/sevro-symbol.svg +0 -1
  556. package/docs/assets/sevro-wordmark.svg +0 -1
  557. package/docs/cache-ownership-validation.md +0 -49
  558. package/docs/claude-continuation-validation.md +0 -47
  559. package/docs/concurrency-validation.md +0 -86
  560. package/docs/configuration-root-validation.md +0 -70
  561. package/docs/engine-slice.md +0 -114
  562. package/docs/evidence/runtime-startup-30/README.md +0 -185
  563. package/docs/evidence/runtime-startup-30/after.json +0 -319
  564. package/docs/evidence/runtime-startup-30/baseline-timeout.jsonl +0 -2
  565. package/docs/evidence/runtime-startup-30/before.json +0 -403
  566. package/docs/evidence/runtime-startup-30/consumer-smoke.json +0 -63
  567. package/docs/evidence/runtime-startup-30/full-policy-diagnostic.jsonl +0 -3
  568. package/docs/evidence/runtime-startup-30/minimal-policy-diagnostic.jsonl +0 -3
  569. package/docs/evidence/runtime-startup-30/plugin-template-assessment.json +0 -20
  570. package/docs/evidence/runtime-startup-30/seedless-timeout.jsonl +0 -2
  571. package/docs/evidence.md +0 -17
  572. package/docs/fixture-cleanup-validation.md +0 -73
  573. package/docs/guide-verification.json +0 -239
  574. package/src/evaluation-context.ts +0 -259
  575. package/src/evaluation-fixture.ts +0 -302
  576. package/src/evaluation-run.ts +0 -200
  577. package/src/evaluation-trial.ts +0 -1016
  578. package/src/hosts/claude-nested-skills.ts +0 -272
  579. package/src/hosts/codex-command-output.ts +0 -510
  580. package/src/hosts/codex-executor-command.ts +0 -291
  581. package/src/hosts/codex-skill-reads.ts +0 -783
  582. /package/src/{trial-scheduler.ts → evaluation/scheduler.ts} +0 -0
@@ -9,6 +9,17 @@ Each domain outcome also gets one human-readable line with its case, trial,
9
9
  outcome ID, and status. Domain outcomes remain independent of the task verdict
10
10
  and exit code.
11
11
 
12
+ The CLI also shows trial states, bounded failed/unavailable
13
+ check details, measured candidate duration and known/unknown usage in human
14
+ completion. Actual preparation/candidate/grading/evidence stage messages use
15
+ stderr in both modes; they do not assert task success. Dry execution/grading are
16
+ explicitly skipped. JSON stdout stays unchanged. The CLI saves `result.json`
17
+ beside retained run evidence and atomically publishes `<results-root>/latest.json`
18
+ for [report access](report-v1.md). These output files stay inside excluded storage
19
+ and do not change evaluation identity. A failure to retain CLI/latest output is
20
+ reported as an internal error after an otherwise successful run; an earlier
21
+ nonzero run outcome keeps its precedence and its evidence reference.
22
+
12
23
  ## Separate states
13
24
 
14
25
  Each trial and aggregate result carries:
@@ -98,6 +109,17 @@ persistence error.
98
109
  [`identity-v1.md`](identity-v1.md) defines the canonical digest and each
99
110
  comparison dimension.
100
111
 
112
+ Current CLI runs additionally retain the redacted effective-settings preview as
113
+ optional `configuration.resolved` (`sevro.resolved-run-settings.v1`), including
114
+ saved-setting selections and resolved operational paths. This snapshot excludes
115
+ credentials, credential-option paths, private source-closure/mapping paths,
116
+ private extension configuration and runtime
117
+ environment values; it is outside `configuration.digest`. Assessment settings
118
+ remain bound by the existing identity inputs and `configuration.redacted`.
119
+ Historical evidence without this optional field remains valid; missing settings
120
+ stay unknown. See [saved run settings](run-settings-v1.md) for precedence and
121
+ privacy limits.
122
+
101
123
  The versioned machine-readable contracts are
102
124
  [`cli-result-v1.schema.json`](../schemas/cli-result-v1.schema.json) and
103
125
  [`run-evidence-v1.schema.json`](../schemas/run-evidence-v1.schema.json). A
@@ -120,11 +142,23 @@ results and evidence remain intact. Failed cleanup is retried on later evaluatio
120
142
  `sevro.observation.workspaces` records candidate and retained auxiliary workspace
121
143
  paths for inspection. These paths are temporary and do not affect evaluation identity.
122
144
 
145
+ Retained results have no automatic expiration. The explicit
146
+ [`sevro prune` command](reading-results.md#prune-retained-results) applies an
147
+ operator-selected age or count policy, defaulting to the newest ten results.
148
+ It deletes complete retained result directories and maintains `latest.json`
149
+ for the remaining results. Active or unrecognized attempts remain protected;
150
+ fixture cleanup and run-state coordination metadata have separate lifecycles.
151
+
123
152
  Opted-in [candidate artifact runtimes](runtime-v1.md#candidate-artifact-access)
124
153
  remain available through grading and are removed afterward, including failed
125
154
  and cancelled trials. Failed-fixture retention does not preserve them.
126
155
  Read access does not automatically retain artifact bytes in run evidence.
127
156
 
157
+ Checker private home, temporary storage, and copied dependency slots are removed
158
+ after grading on success, failure, and cancellation. Retained failed fixtures and
159
+ saved evidence do not retain checker runtime copies. Explicitly declared shared
160
+ caches survive this cleanup and remain under operator control.
161
+
128
162
  A host adapter can return `executionFailed: true` with bounded artifacts from
129
163
  a failed process. The engine retains those artifacts, skips all grading, and
130
164
  reports `failed` / `not_requested` / `not_assessed` with exit code `2`. A final
@@ -136,19 +170,80 @@ duration, and stderr truncation) and `codex.stderr` (the first 64 KiB), with rol
136
170
  prefixes for semantic/advisory hosts. Diagnostics distinguish failure, timeout,
137
171
  and cancellation without exposing raw stderr.
138
172
 
173
+ ## Native host diagnostics
174
+
175
+ The CLI's opt-in
176
+ [`--retain-host-diagnostics`](development-cli.md#retain-native-host-diagnostics)
177
+ retains candidate artifact `sevro.host.diagnostics` with format
178
+ `sevro.host-diagnostics.v1`. Semantic and advisory requests use the existing
179
+ `sevro.semantic[.<source digest>].` and `sevro.advisory.` artifact ID prefixes.
180
+ The flag is independent of native transcript retention.
181
+
182
+ The private JSON contains `host`, `role`, `stage`, `error`, `processes`,
183
+ and `processesDropped`. Error evidence preserves the original name, message,
184
+ stack and available error code, with up to eight error entries in the cause chain. Repeated
185
+ or deeper causes end in an explicit `truncated` entry. Messages and stacks
186
+ are bounded to 8,192 characters per entry. A host-returned failure without a
187
+ thrown exception receives a runner failure summary; subprocess receipts and
188
+ bounded output supply its native evidence.
189
+
190
+ Each process receipt records stage, actual `code`, `signal`, `durationMs`,
191
+ reason, stdout/stderr prefixes, and separate truncation markers. Unknown native
192
+ exit information remains `null`; app-server's synthesized protocol result is
193
+ not substituted for a process exit code. Each stream retains at most 64 KiB,
194
+ and hosts continue consuming output after filling the diagnostic prefix.
195
+ Stream parsing and decoding failures also retain available prefixes.
196
+ Text uses replacement decoding for diagnostic inspection; it is not an exact
197
+ native-byte archive.
198
+
199
+ The journal keeps at most 32 recent process receipts and at most 2 MiB of
200
+ encoded receipt data. It drops oldest receipts first and reports their count.
201
+ The failing stage and bounded error remain independent of those dropped
202
+ receipts. Known credentials from selected authentication files, forwarded
203
+ Claude authentication variables, and common credential patterns are redacted
204
+ from the diagnostic JSON. Sevro does not explicitly dump environment values,
205
+ full argv, or settings into diagnostics. Treat retained diagnostics as private evidence and keep
206
+ them out of Git; redaction is not authorization to publish subprocess output.
207
+
208
+ The engine supplies an optional `retainHostDiagnostics(bytes)` callback to
209
+ host adapters. Bundled opted-in hosts invoke it before removing native state.
210
+ The callback saves the artifact with private permissions and registers its
211
+ file URL and SHA-256 in trial evidence. Direct adapter calls without that
212
+ callback return diagnostic bytes in ordinary host artifacts.
213
+
214
+ Failure diagnostics name the retained file URL when it fits the CLI message
215
+ limit; `evidencePath` and trial `artifactPath` resolve artifact references
216
+ even when a message cannot contain the URL. Native failures retain the existing
217
+ execution, grading, task and exit semantics. Failed diagnostic persistence is
218
+ an internal runner error, not a successful assessment or an ordinary host
219
+ failure. Cleanup errors do not replace an earlier host or diagnostic-persistence
220
+ failure; cleanup warnings contain no raw error/output bodies.
221
+
139
222
  ## Native transcript bundles
140
223
 
141
224
  With [runtime transcript opt-in](runtime-v1.md#native-transcript-access), each
142
225
  bundled host captures full native files before removing its private state.
143
226
  Candidate artifact `sevro.native-transcripts.bundle` has format
144
- `sevro.native-transcripts.v1`. It contains `host` (`codex` or `claude`), `role`,
227
+ `sevro.native-transcripts.v2`. It contains `host` (`codex` or `claude`), `role`,
145
228
  native `rootSessionId` (or `null`), `completeness`, `issues`, and `files`.
146
- Each file records its native relative `path`, SHA-256 `sha256`, and exact bytes
147
- as `bytesBase64`. Decode the bytes without rewriting native records. Native
229
+ Each file records its native relative `path`, SHA-256 `sha256` of the original
230
+ bytes, and `gzipBase64`: the exact file bytes compressed with gzip, then encoded
231
+ as base64. Decode base64, decompress gzip, and verify the original-byte hash
232
+ before using a file. Bound decompression to 5 MiB across all files in the bundle.
233
+ Decode bytes without rewriting native records. Native
148
234
  session paths, root/child records and sidecar metadata preserve associations;
149
235
  the bundle does not normalize model, effort, timing, token, or cost statistics.
150
236
  Existing unknown metrics remain unknown.
151
237
 
238
+ Sevro reads both v2 bundles and existing `sevro.native-transcripts.v1` bundles.
239
+ V1 files use uncompressed `bytesBase64`; decode that field directly without
240
+ gzip decompression and verify the same original-byte hash. Readers must select
241
+ the payload field and decoding by `format` and reject unsupported formats,
242
+ corrupt compressed payloads, hash mismatches, or a decoded total above 5 MiB.
243
+ New captures emit v2; reading retained v1 evidence does not rewrite it.
244
+ The retained view exposes the same exact native files for either format, with
245
+ the original bundle in `index.json`.
246
+
152
247
  `sevro.host.native-transcripts` records the same capture state and file hashes
153
248
  without raw bytes. Semantic and advisory bundles retain their role in the
154
249
  bundle and use the existing `sevro.semantic[.<source digest>].` and
@@ -159,7 +254,8 @@ benchmarks can use the same references and decode the native files.
159
254
 
160
255
  Capture includes native transcript-tree sidecars and refuses descendant links,
161
256
  special files and escaping paths. It is bounded to 4,096 directory entries,
162
- 5 MiB of native file bytes and 7 MiB of encoded file metadata/content. The
257
+ 5 MiB of native file bytes before compression and 7 MiB of encoded file
258
+ metadata/gzip content. The
163
259
  bundle remains inside the existing 8 MiB item and 32 MiB host artifact budgets;
164
260
  it groups sessions instead of spending an artifact per child. Limits produce
165
261
  `byte_limit`, `entry_limit`, or `bundle_limit` issues. Unreadable, unsafe or
@@ -178,3 +274,25 @@ structure, not native semantic correctness.
178
274
  An empty/missing native JSONL tree is `unavailable`. Failure, cancellation and
179
275
  timeout retain available native bytes with incomplete capture state. Raw
180
276
  bundles and views are private evidence and must stay out of Git.
277
+
278
+ The explicit [`sevro prune --native-transcripts` mode](reading-results.md#remove-native-transcript-bundles)
279
+ can remove these bundles without rewriting CLI results, run/trial evidence,
280
+ capture observations, native file hashes, or whole-bundle hashes. It retains
281
+ other artifacts and does not change evaluation identity or assessment states.
282
+ Reports validate present native bundles against their recorded SHA-256 and
283
+ require an exact pruning receipt for absent bundles.
284
+
285
+ Before deletion, Sevro atomically writes private
286
+ `native-transcripts-pruned.json` beside `run.json`, with format
287
+ `sevro.pruned-native-transcripts.v1`, the original `runId`, and `artifacts`.
288
+ Each entry contains the original artifact reference (`id`, `path`, `sha256`,
289
+ and any optional reference flags), plus its `caseId` and `trial`. Entries follow
290
+ run trial/reference order and cover every candidate, semantic (including
291
+ source-specific), and advisory native bundle in that run. A receipt must match
292
+ these original references exactly; malformed, inconsistent, or linked receipts
293
+ are errors. Bundle references must name regular files directly inside their
294
+ result directory. Missing bytes without a receipt, changed hashes, and escaping
295
+ references remain errors. An interrupted deletion may leave some marked bundles
296
+ present; reports count actual availability, and a repeated prune completes removal.
297
+ Transcript references that alias result/trial metadata, raw responses, or other
298
+ retained artifacts are refused before pruning.
@@ -0,0 +1,147 @@
1
+ # Saved run settings v1
2
+
3
+ Save recurring evaluation selections in a JSON run manifest, then use
4
+ `sevro run --run-manifest-file ./evaluation.json`. The examples use the
5
+ [installed command](installing.md#make-the-command-available).
6
+
7
+ ## Repeat an evaluation
8
+
9
+ Start with an existing [resolved case and adapter](getting-started.md), and save
10
+ this `evaluation.json` beside `case.json` and `host-adapter.js`:
11
+
12
+ ```json
13
+ {
14
+ "format": "sevro.run.v1",
15
+ "settings": {
16
+ "case-file": "./case.json",
17
+ "adapter-module": "./host-adapter.js",
18
+ "project-root": ".",
19
+ "condition": "passive",
20
+ "trials": 3,
21
+ "jobs": 1,
22
+ "threshold": 1
23
+ }
24
+ }
25
+ ```
26
+
27
+ Run it twice with the same saved selections, or explicitly override one setting:
28
+
29
+ ```sh
30
+ sevro run --run-manifest-file ./evaluation.json
31
+ sevro run --run-manifest-file ./evaluation.json
32
+ sevro run --run-manifest-file ./evaluation.json --trials 1 --json
33
+ ```
34
+
35
+ Every run prints effective settings on stderr before candidate execution, then
36
+ prints the result and evidence location. The example requires all assessed
37
+ trials to pass. A missing assessment remains `not_assessed`. Use `--dry` to
38
+ check preparation without calling the candidate or graders; dry preparation
39
+ does not prove native authentication or task success.
40
+
41
+ ## Select candidate and grading routes once
42
+
43
+ For native execution, replace the adapter selection with an explicit host,
44
+ model and effort. Each grading role has its own selection. For example, a case
45
+ with semantic checks can use this manifest:
46
+
47
+ ```json
48
+ {
49
+ "format": "sevro.run.v1",
50
+ "settings": {
51
+ "case-file": "./semantic-case.json",
52
+ "project-root": ".",
53
+ "host": "codex",
54
+ "model": "<candidate-model>",
55
+ "effort": "medium",
56
+ "codex-auth-file": "../private/auth.json",
57
+ "semantic-host": "codex",
58
+ "semantic-model": "<grading-model>",
59
+ "semantic-effort": "high",
60
+ "trials": 3,
61
+ "threshold": 1
62
+ }
63
+ }
64
+ ```
65
+
66
+ Replace model placeholders with installed-host-supported model names and supply
67
+ the [native prerequisites and authentication](native-hosts.md). Models and
68
+ efforts are never inferred or copied between roles. Candidate Claude uses
69
+ `host: "claude"` and its own explicit `model`/`effort`. An optional advisory
70
+ route uses `advisory-host`, `advisory-model` and `advisory-effort`; advisory
71
+ review requires a Git fixture and remains separate from the task verdict.
72
+ Injected adapters continue to declare their own model and effort.
73
+
74
+ ## Format, precedence and paths
75
+
76
+ The root has exactly `format: "sevro.run.v1"` and an object `settings`. Settings
77
+ use the [CLI option names](development-cli.md) without the leading `--`.
78
+ All run options can be saved except `json` and `run-manifest-file`. Keep output
79
+ presentation explicit on the command line, including `--json` when collecting
80
+ a versioned success or failure document. Manifests do not include other
81
+ manifests and are read only when explicitly selected; there is no discovery.
82
+
83
+ | Option kind | JSON value |
84
+ | --------------------------------------------------------------------------------------- | ----------------------------------------------------- |
85
+ | `trials`, `jobs`, `threshold`, `codex-timeout-ms` | Number, with the CLI's existing ranges |
86
+ | `dry`, `shell-isolation`, `retain-host-diagnostics`, `claude-project-settings` | Boolean |
87
+ | `extension-source-file`, `protected-root`, `replace-builtin-grader`, `advisory-exclude` | Array of nonempty strings; `[]` selects an empty list |
88
+ | Other run options | Nonempty string |
89
+
90
+ Precedence is **built-in defaults → saved settings → explicit CLI options**.
91
+ Omitted settings retain the [documented defaults](development-cli.md#run-defaults).
92
+ An explicit repeatable flag replaces its saved array in full; repeated CLI
93
+ occurrences build the replacement array. `--no-dry`, `--no-shell-isolation`,
94
+ `--no-retain-host-diagnostics` and `--no-claude-project-settings` override saved
95
+ `true` values with `false`.
96
+
97
+ Selecting an alternative route on the CLI removes its saved alternative and
98
+ route-only settings. For example, `--adapter-module ./host-adapter.js` replaces
99
+ a saved native candidate and its model/effort. Selecting `--host claude` over
100
+ a saved Codex candidate requires fresh explicit `--model` and `--effort`;
101
+ grading roles keep their separate selections. Shared Codex settings remain
102
+ while any Codex route is selected. CLI `--case-file` replaces a saved extension
103
+ source and its extension-only options. CLI `--extension-command-file` replaces
104
+ a saved case file; supply the extension's required ID and source closure.
105
+ Supplying two exclusive alternatives explicitly remains an error.
106
+
107
+ Paths saved in a manifest resolve from the **canonical directory containing
108
+ that manifest**, including `project-root`, output roots, adapters, protected
109
+ roots and extension source files. CLI paths always resolve from the invoking
110
+ current directory. `advisory-exclude` contains fixture-relative names, not host
111
+ paths. Paths inside case files, extension command argv, source maps and runtime
112
+ files retain their existing contracts. A manifest must be a regular,
113
+ non-symlink JSON file of at most 64 KiB. Unsupported versions, unknown fields,
114
+ invalid types and unreadable files fail before execution with an actionable
115
+ file/field diagnostic and exit `64`.
116
+
117
+ ## Runtime, evidence and identity
118
+
119
+ The existing [`sevro.json` runtime contract](runtime-v1.md) is unchanged.
120
+ A run manifest selects recurring evaluation settings; `runtime-config-file`
121
+ can select a separate runtime file. Otherwise Sevro still discovers exactly
122
+ `<project-root>/sevro.json`. Runtime declarations do not become run options.
123
+
124
+ Current CLI runs retain the effective preview as optional
125
+ `configuration.resolved` in `sevro.run-evidence.v1`, with format
126
+ `sevro.resolved-run-settings.v1`. It records selected case and extension command
127
+ paths, source-closure count, mapping selection, adapters, routes, model/effort,
128
+ trial settings, runtime file selection and operational output locations. It
129
+ omits credentials and credential-option paths, private source-closure and mapping
130
+ paths, private extension configuration, runtime environment values and native
131
+ diagnostic contents. Explicit protected roots, paths and model labels are still operator metadata;
132
+ inspect retained evidence before sharing it. The runtime policy's existing
133
+ redacted evidence still retains explicitly declared non-secret environment
134
+ values. Older evidence without `configuration.resolved` remains valid and
135
+ does not acquire inferred settings.
136
+
137
+ Assessment settings enter the [evaluation identity](identity-v1.md) through
138
+ resolved cases, fixtures, checks, routes and `configuration.redacted`. The
139
+ additional `configuration.redacted.runSettings` binds shell isolation, explicit
140
+ protected roots, deprecated runtime selections, selected native timeouts and
141
+ Claude project-settings authority. Equivalent saved and
142
+ explicit selections have the same identity. Semantic changes such as model,
143
+ effort, trial count, job limit or threshold change identity. The manifest's
144
+ location, CLI output mode, and output/run-state paths are excluded from the
145
+ semantic configuration digest; `configuration.resolved` is an operational
146
+ snapshot outside that digest. Project content, including a tracked manifest,
147
+ still follows the existing project identity rules.