@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.
Files changed (243) hide show
  1. package/CONTRIBUTING.md +170 -0
  2. package/LICENSE +63 -136
  3. package/README.md +83 -66
  4. package/docs/README.md +44 -0
  5. package/docs/acknowledgements.md +14 -0
  6. package/docs/architecture.md +146 -0
  7. package/docs/assets/README.md +27 -0
  8. package/docs/assets/sevro-logo.png +0 -0
  9. package/docs/assets/sevro-symbol.svg +1 -0
  10. package/docs/assets/sevro-wordmark.svg +1 -0
  11. package/docs/builtin-graders-v1.md +41 -13
  12. package/docs/codex-host.md +184 -52
  13. package/docs/contracts.md +19 -0
  14. package/docs/creating-cases.md +139 -0
  15. package/docs/development-cli.md +190 -30
  16. package/docs/documentation-quality.md +61 -0
  17. package/docs/evaluation-workflow.md +110 -0
  18. package/docs/evidence/code-mode-controls-71.md +64 -0
  19. package/docs/evidence/code-mode-programs-85.md +64 -0
  20. package/docs/evidence/codex-state-73/README.md +204 -0
  21. package/docs/evidence/codex-state-73/darrow-migration.patch +182 -0
  22. package/docs/evidence/codex-state-73/results.json +661 -0
  23. package/docs/evidence/local-http-74.md +104 -0
  24. package/docs/evidence/runtime-startup-30/README.md +185 -0
  25. package/docs/evidence/runtime-startup-30/after.json +319 -0
  26. package/docs/evidence/runtime-startup-30/baseline-timeout.jsonl +2 -0
  27. package/docs/evidence/runtime-startup-30/before.json +403 -0
  28. package/docs/evidence/runtime-startup-30/consumer-smoke.json +63 -0
  29. package/docs/evidence/runtime-startup-30/full-policy-diagnostic.jsonl +3 -0
  30. package/docs/evidence/runtime-startup-30/minimal-policy-diagnostic.jsonl +3 -0
  31. package/docs/evidence/runtime-startup-30/plugin-template-assessment.json +20 -0
  32. package/docs/evidence/runtime-startup-30/seedless-timeout.jsonl +2 -0
  33. package/docs/evidence/skill-reads-70/results.json +823 -0
  34. package/docs/evidence.md +21 -0
  35. package/docs/extension-protocol-v1.md +50 -16
  36. package/docs/fixture-cleanup-validation.md +3 -0
  37. package/docs/getting-started.md +102 -0
  38. package/docs/guide-evaluation.md +89 -0
  39. package/docs/guide-verification.json +239 -0
  40. package/docs/identity-v1.md +35 -1
  41. package/docs/installing.md +88 -0
  42. package/docs/licenses/BUSL-1.1-0.1.0-rc.2.txt +159 -0
  43. package/docs/licensing.md +42 -0
  44. package/docs/native-controls.md +76 -5
  45. package/docs/native-hosts.md +228 -0
  46. package/docs/reading-results.md +141 -0
  47. package/docs/recipes.md +489 -0
  48. package/docs/releases.md +81 -40
  49. package/docs/report-v1.md +29 -1
  50. package/docs/results-v1.md +180 -0
  51. package/docs/run-settings-v1.md +147 -0
  52. package/docs/running-evaluations.md +31 -0
  53. package/docs/runtime-v1.md +614 -0
  54. package/docs/specs/repository-guide.md +58 -0
  55. package/docs/troubleshooting.md +30 -0
  56. package/docs/typescript-quality.md +234 -0
  57. package/docs/usability-study.md +114 -0
  58. package/examples/basic/host.ts +2 -2
  59. package/examples/recipes/candidate.ts +26 -0
  60. package/examples/recipes/cases/coding-change.json +21 -0
  61. package/examples/recipes/cases/host-tools.json +21 -0
  62. package/examples/recipes/cases/mise.json +21 -0
  63. package/examples/recipes/cases/node.json +21 -0
  64. package/examples/recipes/cases/python-uv.json +21 -0
  65. package/examples/recipes/cases/semantic.json +17 -0
  66. package/examples/recipes/coding-change/check.ts +23 -0
  67. package/examples/recipes/extension-artifacts.ts +65 -0
  68. package/examples/recipes/extension-methods.ts +174 -0
  69. package/examples/recipes/extension.ts +37 -0
  70. package/examples/recipes/repository-skill/.agents/skills/startup-guide/SKILL.md +7 -0
  71. package/examples/recipes/repository-skill/.claude/skills/startup-guide/SKILL.md +7 -0
  72. package/examples/recipes/repository-skill/README.md +3 -0
  73. package/examples/recipes/run-inputs.ts +188 -0
  74. package/examples/recipes/run-options.ts +131 -0
  75. package/examples/recipes/run.ts +63 -0
  76. package/examples/recipes/runtime/empty.json +1 -0
  77. package/examples/recipes/runtime/goals.json +1 -0
  78. package/examples/recipes/runtime/mise.json +6 -0
  79. package/examples/recipes/runtime/path.json +1 -0
  80. package/examples/recipes/runtime/plugins.json +4 -0
  81. package/examples/recipes/runtime/python-uv.json +10 -0
  82. package/examples/recipes/semantic-judge.ts +29 -0
  83. package/examples/templates/coding/adapter.ts +17 -0
  84. package/examples/templates/coding/case.json +15 -0
  85. package/examples/templates/repository-skill/.agents/skills/startup-guide/SKILL.md +6 -0
  86. package/examples/templates/repository-skill/extension-data.ts +64 -0
  87. package/examples/templates/repository-skill/extension.ts +31 -0
  88. package/examples/templates/response/adapter.ts +12 -0
  89. package/examples/templates/response/case.json +13 -0
  90. package/package.json +39 -6
  91. package/schemas/report-v1.schema.json +9 -0
  92. package/schemas/run-evidence-v1.schema.json +2 -1
  93. package/schemas/runtime-v1.schema.json +193 -0
  94. package/src/advisory.ts +10 -5
  95. package/src/candidate-artifacts.ts +208 -0
  96. package/src/candidate-codex-state.ts +185 -0
  97. package/src/case-validation.ts +105 -0
  98. package/src/cli/cancellation.ts +20 -0
  99. package/src/cli/command.ts +81 -0
  100. package/src/cli/completion.ts +15 -0
  101. package/src/cli/demo.ts +59 -0
  102. package/src/cli/evaluation.ts +55 -0
  103. package/src/cli/extension.ts +79 -0
  104. package/src/cli/help.ts +222 -0
  105. package/src/cli/hosts.ts +59 -0
  106. package/src/cli/init-settings.ts +30 -0
  107. package/src/cli/init.ts +111 -0
  108. package/src/cli/invocation.ts +627 -0
  109. package/src/cli/loading.ts +151 -0
  110. package/src/cli/preparation.ts +163 -0
  111. package/src/cli/presentation.ts +91 -0
  112. package/src/cli/progress.ts +6 -0
  113. package/src/cli/run-manifest.ts +133 -0
  114. package/src/cli/run-options.ts +101 -0
  115. package/src/cli/run-overrides.ts +83 -0
  116. package/src/cli/settings.ts +160 -0
  117. package/src/cli/summary.ts +43 -0
  118. package/src/cli.ts +13 -843
  119. package/src/contract-types.ts +94 -0
  120. package/src/engine.ts +19 -2373
  121. package/src/evaluation/advisory.ts +150 -0
  122. package/src/evaluation/check-plan.ts +510 -0
  123. package/src/evaluation/collection.ts +88 -0
  124. package/src/evaluation/context.ts +10 -0
  125. package/src/evaluation/grading-host.ts +39 -0
  126. package/src/evaluation/grading.ts +258 -0
  127. package/src/evaluation/invocation-plan.ts +548 -0
  128. package/src/evaluation/plan.ts +736 -0
  129. package/src/evaluation/progress.ts +19 -0
  130. package/src/evaluation/resources.ts +241 -0
  131. package/src/evaluation/run.ts +206 -0
  132. package/src/{trial-scheduler.ts → evaluation/scheduler.ts} +3 -1
  133. package/src/evaluation/semantic.ts +312 -0
  134. package/src/evaluation/trial.ts +866 -0
  135. package/src/evaluation/types.ts +207 -0
  136. package/src/evidence/host-results.ts +92 -0
  137. package/src/evidence/retained-artifacts.ts +18 -0
  138. package/src/evidence/trial-writer.ts +203 -0
  139. package/src/evidence/usage.ts +17 -0
  140. package/src/extension-client.ts +228 -148
  141. package/src/extension-session.ts +326 -195
  142. package/src/fixtures/advisory.ts +338 -0
  143. package/src/fixtures/bin.ts +57 -0
  144. package/src/{fixture-cleanup.ts → fixtures/cleanup.ts} +13 -7
  145. package/src/fixtures/create.ts +187 -0
  146. package/src/fixtures/generated.ts +300 -0
  147. package/src/fixtures/git-hooks.ts +24 -0
  148. package/src/fixtures/preparation.ts +270 -0
  149. package/src/{repository-fixture.ts → fixtures/repository.ts} +207 -85
  150. package/src/fixtures/setup.ts +224 -0
  151. package/src/fixtures/tools.ts +88 -0
  152. package/src/fixtures/workspace-state.ts +212 -0
  153. package/src/generated/cli-result.cjs +2 -0
  154. package/src/generated/cli-result.d.cts +3 -0
  155. package/src/generated/extension.cjs +2 -0
  156. package/src/generated/extension.d.cts +3 -0
  157. package/src/generated/report.cjs +2 -0
  158. package/src/generated/report.d.cts +3 -0
  159. package/src/generated/run-evidence.cjs +2 -0
  160. package/src/generated/run-evidence.d.cts +3 -0
  161. package/src/generated/runtime.cjs +2 -0
  162. package/src/generated/runtime.d.cts +3 -0
  163. package/src/graders/artifact.ts +56 -23
  164. package/src/graders/git-head.ts +79 -75
  165. package/src/graders/output.ts +222 -140
  166. package/src/graders/semantic.ts +102 -43
  167. package/src/graders/shell.ts +379 -207
  168. package/src/host-diagnostic-redaction.ts +52 -0
  169. package/src/host-diagnostics.ts +319 -0
  170. package/src/hosts/claude-continuation.ts +63 -18
  171. package/src/hosts/claude-credential.ts +43 -62
  172. package/src/hosts/claude-events.ts +86 -51
  173. package/src/hosts/claude-keychain.ts +59 -0
  174. package/src/hosts/claude-native-goal.ts +57 -33
  175. package/src/hosts/claude-process.ts +111 -0
  176. package/src/hosts/claude-repository-invocation.ts +208 -117
  177. package/src/hosts/claude-settings.ts +240 -21
  178. package/src/hosts/claude-skill-activations.ts +166 -0
  179. package/src/hosts/claude-state.ts +403 -0
  180. package/src/hosts/claude-tool-calls.ts +171 -106
  181. package/src/hosts/claude.ts +561 -451
  182. package/src/hosts/codex-app-server.ts +326 -178
  183. package/src/hosts/codex-configuration.ts +44 -18
  184. package/src/hosts/codex-events.ts +97 -60
  185. package/src/hosts/codex-exec-controls.ts +516 -0
  186. package/src/hosts/codex-invocation.ts +70 -0
  187. package/src/hosts/codex-marketplace.ts +283 -0
  188. package/src/hosts/codex-native-calls.ts +546 -500
  189. package/src/hosts/codex-process.ts +202 -0
  190. package/src/hosts/codex-profile.ts +257 -28
  191. package/src/hosts/codex-session-files.ts +106 -0
  192. package/src/hosts/codex-state.ts +492 -0
  193. package/src/hosts/codex.ts +783 -832
  194. package/src/hosts/isolation-common.ts +94 -0
  195. package/src/hosts/isolation-roots.ts +54 -27
  196. package/src/hosts/isolation.ts +10 -0
  197. package/src/hosts/linux-sandbox.ts +159 -0
  198. package/src/hosts/mac-sandbox.ts +187 -61
  199. package/src/hosts/native-controls.ts +152 -62
  200. package/src/hosts/process-lifecycle.ts +37 -0
  201. package/src/hosts/protected-worktrees.ts +51 -19
  202. package/src/hosts/skill-hook-catalog.ts +131 -0
  203. package/src/hosts/skill-hook-handler.ts +374 -0
  204. package/src/hosts/skill-hooks.ts +580 -0
  205. package/src/hosts/workspace-fingerprint.ts +55 -35
  206. package/src/identity.ts +102 -48
  207. package/src/instrumentation.ts +109 -48
  208. package/src/native-transcript-state.ts +131 -0
  209. package/src/native-transcript-view.ts +90 -0
  210. package/src/native-transcripts.ts +286 -0
  211. package/src/process-lifecycle.ts +150 -0
  212. package/src/provenance.ts +161 -81
  213. package/src/prune.ts +215 -0
  214. package/src/report.ts +172 -140
  215. package/src/resolved-case.ts +33 -0
  216. package/src/results-lock.ts +29 -0
  217. package/src/results.ts +133 -86
  218. package/src/run-owner.ts +154 -63
  219. package/src/runtime/config.ts +456 -0
  220. package/src/runtime/discovery-apple.ts +90 -0
  221. package/src/runtime/discovery-providers.ts +63 -0
  222. package/src/runtime/discovery.ts +70 -0
  223. package/src/runtime/hook-processes.ts +97 -0
  224. package/src/runtime/hooks.ts +476 -0
  225. package/src/runtime/paths.ts +313 -0
  226. package/src/runtime/query.ts +85 -0
  227. package/src/runtime/seeds.ts +134 -0
  228. package/src/runtime/shared-cache.ts +143 -0
  229. package/src/runtime/state.ts +143 -0
  230. package/src/schema-types.ts +198 -0
  231. package/src/schema.ts +15 -19
  232. package/src/transcript-retention.ts +146 -0
  233. package/src/value-guards.ts +20 -0
  234. package/src/advisory-fixture.ts +0 -282
  235. package/src/fixture-bin.ts +0 -87
  236. package/src/fixture-setup.ts +0 -163
  237. package/src/generated-fixture.ts +0 -220
  238. package/src/git-hooks.ts +0 -63
  239. package/src/hosts/claude-nested-skills.ts +0 -218
  240. package/src/hosts/codex-command-output.ts +0 -399
  241. package/src/hosts/codex-executor-command.ts +0 -195
  242. package/src/hosts/codex-skill-reads.ts +0 -391
  243. package/src/preparation.ts +0 -211
@@ -0,0 +1,823 @@
1
+ {
2
+ "format": "sevro.issue-70-validation.v1",
3
+ "date": "2026-10-14",
4
+ "issue": "https://github.com/BjRo/sevro/issues/70",
5
+ "candidate": {
6
+ "description": "Private npm-pack candidate; no registry publication or version change",
7
+ "packageVersion": "0.1.0-rc.11",
8
+ "tarballSha256": "91b9000b1a6d20e71313cf22b70e9202993b88f1c18a881af8f7db5189364fc0",
9
+ "sourceFiles": {
10
+ "src/hosts/codex-skill-reads.ts": "8f6e44e4d404c53df152fcc23c067a5cc1e490202f1552e4772879eb881d7e0b",
11
+ "src/hosts/codex.ts": "4906fd33095e8597ed83079b39c45426124cfa7b08ffec30451512523515b9e3"
12
+ }
13
+ },
14
+ "settings": {
15
+ "candidateModel": "gpt-6.1-sol",
16
+ "candidateEffort": "medium",
17
+ "semanticModel": "gpt-6-luna",
18
+ "semanticEffort": "medium",
19
+ "ownerEvaluation": "passive",
20
+ "trials": 1,
21
+ "jobs": 1,
22
+ "threshold": 1,
23
+ "codexTimeoutMs": 1200000,
24
+ "retainHostDiagnostics": true,
25
+ "runtimeOverride": "runtime-repository-skills.json for guide only",
26
+ "runnerRoute": "SEVRO_PACKAGE_BIN selects the private candidate; SEVRO_CHECKOUT is unset"
27
+ },
28
+ "privateEvidenceRoot": "/tmp/sevro-70-native",
29
+ "limitations": [
30
+ "One model-driven trial per representative case; this is not a complete rerun of the 13-case inventory.",
31
+ "Task checks, activation, and read completeness are independent outcomes.",
32
+ "Raw transcripts and model responses remain outside Git."
33
+ ],
34
+ "cases": [
35
+ {
36
+ "caseId": "guide-visual-absent",
37
+ "entrypoint": "exec",
38
+ "selectionFile": "guide-verified-selection.json",
39
+ "selectionSha256": "9463afeebb33f973b862f9b42a1a3ef0a6df355c087ef63f3af18884905cca4f",
40
+ "runId": "96cf207b-69f8-4f20-9c86-b0483ba96da9",
41
+ "execution": "completed",
42
+ "grading": "completed",
43
+ "task": "passed",
44
+ "checks": [
45
+ {
46
+ "id": "darrow.shell.1",
47
+ "status": "passed",
48
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.1"]
49
+ },
50
+ {
51
+ "id": "darrow.shell.2",
52
+ "status": "passed",
53
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.2"]
54
+ },
55
+ {
56
+ "id": "darrow.shell.3",
57
+ "status": "passed",
58
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.3"]
59
+ },
60
+ {
61
+ "id": "darrow.shell.4",
62
+ "status": "passed",
63
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.4"]
64
+ },
65
+ {
66
+ "id": "darrow.evals.disclosure.5",
67
+ "status": "passed",
68
+ "evidenceRefs": ["sevro.observation.final-message"]
69
+ },
70
+ {
71
+ "id": "darrow.output.1",
72
+ "status": "passed",
73
+ "evidenceRefs": ["sevro.observation.final-message"]
74
+ },
75
+ {
76
+ "id": "darrow.semantic.1",
77
+ "status": "passed",
78
+ "evidenceRefs": [
79
+ "sevro.observation.semantic.3ca2097d4f7ac4d95361ebb6f7c431251b752a81ed98ad07c477e8011aec4ade"
80
+ ]
81
+ },
82
+ {
83
+ "id": "darrow.semantic.2",
84
+ "status": "passed",
85
+ "evidenceRefs": [
86
+ "sevro.observation.semantic.12335bf9a89e2f87b653fe4d247475880cb27f29b839bf8b93ea9e85da0ac8c1"
87
+ ]
88
+ },
89
+ {
90
+ "id": "darrow.semantic.3",
91
+ "status": "passed",
92
+ "evidenceRefs": [
93
+ "sevro.observation.semantic.9feac9b022d2d95b10a590a31c45ab8f859249137ae9fc0fe86e28778a46d5d9"
94
+ ]
95
+ }
96
+ ],
97
+ "failedChecks": [],
98
+ "activation": {
99
+ "status": "passed",
100
+ "class": "positive",
101
+ "targetSkill": "darrow-guide",
102
+ "trials": 1,
103
+ "measured": 1,
104
+ "passed": 1,
105
+ "failed": 0,
106
+ "unavailable": 0,
107
+ "passRate": 1,
108
+ "threshold": 1,
109
+ "trueSelections": 1,
110
+ "falseSelections": 0
111
+ },
112
+ "skillEvidence": [
113
+ {
114
+ "id": "sevro.codex.skill-reads",
115
+ "completeness": "complete",
116
+ "primarySkill": "darrow-guide",
117
+ "observedSkills": ["darrow-guide"]
118
+ },
119
+ {
120
+ "id": "sevro.codex.explicit-invocation",
121
+ "completeness": "complete",
122
+ "primarySkill": "darrow-guide",
123
+ "observedSkills": ["darrow-guide"]
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "caseId": "verification-followup-no-progress",
129
+ "entrypoint": "app-server",
130
+ "selectionFile": "verification-verified-selection.json",
131
+ "selectionSha256": "2e6f0a472bd3ca00e433e3f930fb8ebbb36c9ab4958ce2fbe5fa5116ac2a8f23",
132
+ "runId": "c912d5eb-b23c-4b10-b3f2-5e9ee4654450",
133
+ "execution": "completed",
134
+ "grading": "completed",
135
+ "task": "failed",
136
+ "checks": [
137
+ {
138
+ "id": "darrow.shell.1",
139
+ "status": "passed",
140
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.1"]
141
+ },
142
+ {
143
+ "id": "darrow.shell.2",
144
+ "status": "passed",
145
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.2"]
146
+ },
147
+ {
148
+ "id": "darrow.shell.3",
149
+ "status": "passed",
150
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.3"]
151
+ },
152
+ {
153
+ "id": "darrow.shell.4",
154
+ "status": "passed",
155
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.4"]
156
+ },
157
+ {
158
+ "id": "darrow.shell.5",
159
+ "status": "passed",
160
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.5"]
161
+ },
162
+ {
163
+ "id": "darrow.semantic.1",
164
+ "status": "failed",
165
+ "evidenceRefs": [
166
+ "sevro.observation.semantic.3ca2097d4f7ac4d95361ebb6f7c431251b752a81ed98ad07c477e8011aec4ade"
167
+ ]
168
+ },
169
+ {
170
+ "id": "darrow.evals.transcript.1",
171
+ "status": "passed",
172
+ "evidenceRefs": ["sevro.codex.native-calls"]
173
+ },
174
+ {
175
+ "id": "darrow.evals.transcript.2",
176
+ "status": "passed",
177
+ "evidenceRefs": ["sevro.codex.native-calls"]
178
+ },
179
+ {
180
+ "id": "darrow.evals.transcript.3",
181
+ "status": "passed",
182
+ "evidenceRefs": ["sevro.codex.native-calls"]
183
+ }
184
+ ],
185
+ "failedChecks": [
186
+ {
187
+ "id": "darrow.semantic.1",
188
+ "detail": "It reports no progress, keeps F1 blocking and A1 nonblocking, records unchanged timeoutMs=1000 and the passing bash check.sh. But it does not return the required stop evidence, and it says the assessment makes no overall-completion decision rather than clearly returning the unchanged C1 acceptance failure."
189
+ }
190
+ ],
191
+ "activation": {
192
+ "status": "passed",
193
+ "class": "positive",
194
+ "targetSkill": "verify-change",
195
+ "trials": 1,
196
+ "measured": 1,
197
+ "passed": 1,
198
+ "failed": 0,
199
+ "unavailable": 0,
200
+ "passRate": 1,
201
+ "threshold": 1,
202
+ "trueSelections": 1,
203
+ "falseSelections": 0
204
+ },
205
+ "skillEvidence": [
206
+ {
207
+ "id": "sevro.codex.skill-reads",
208
+ "completeness": "complete",
209
+ "primarySkill": "inspect-candidate",
210
+ "observedSkills": ["inspect-candidate"]
211
+ },
212
+ {
213
+ "id": "sevro.codex.explicit-invocation",
214
+ "completeness": "complete",
215
+ "primarySkill": "verify-change",
216
+ "observedSkills": ["verify-change", "inspect-candidate"]
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "caseId": "goal-readiness-prior-assessed-omitted",
222
+ "entrypoint": "app-server",
223
+ "selectionFile": "goal-verified-selection.json",
224
+ "selectionSha256": "45abf6834800745cdc30742a35f77b945984c5999f92df0fa7e409ebf052ba97",
225
+ "runId": "fb5495d9-7ed3-436c-ae4e-c2b1bfbc0092",
226
+ "execution": "completed",
227
+ "grading": "completed",
228
+ "task": "passed",
229
+ "checks": [
230
+ {
231
+ "id": "darrow.shell.1",
232
+ "status": "passed",
233
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.1"]
234
+ },
235
+ {
236
+ "id": "darrow.shell.2",
237
+ "status": "passed",
238
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.2"]
239
+ },
240
+ {
241
+ "id": "darrow.semantic.1",
242
+ "status": "passed",
243
+ "evidenceRefs": [
244
+ "sevro.observation.semantic.3ca2097d4f7ac4d95361ebb6f7c431251b752a81ed98ad07c477e8011aec4ade"
245
+ ]
246
+ },
247
+ {
248
+ "id": "darrow.evals.native-goal",
249
+ "status": "passed",
250
+ "evidenceRefs": ["sevro.host.native-goal"]
251
+ },
252
+ {
253
+ "id": "darrow.evals.native-goal.internal-record",
254
+ "status": "passed",
255
+ "evidenceRefs": ["sevro.observation.final-message"]
256
+ },
257
+ {
258
+ "id": "darrow.evals.native-goal.canonical-report",
259
+ "status": "passed",
260
+ "evidenceRefs": ["sevro.observation.final-message"]
261
+ },
262
+ {
263
+ "id": "darrow.evals.transcript.3",
264
+ "status": "passed",
265
+ "evidenceRefs": ["sevro.codex.events"]
266
+ },
267
+ {
268
+ "id": "darrow.evals.transcript.1",
269
+ "status": "passed",
270
+ "evidenceRefs": ["sevro.codex.initial-skill-reads"]
271
+ },
272
+ {
273
+ "id": "darrow.evals.transcript.2",
274
+ "status": "passed",
275
+ "evidenceRefs": ["sevro.codex.follow-up-skill-reads"]
276
+ }
277
+ ],
278
+ "failedChecks": [],
279
+ "activation": {
280
+ "status": "not_requested"
281
+ },
282
+ "skillEvidence": [
283
+ {
284
+ "id": "sevro.codex.skill-reads",
285
+ "completeness": "complete",
286
+ "primarySkill": "assess-implementation-readiness",
287
+ "observedSkills": ["assess-implementation-readiness"]
288
+ },
289
+ {
290
+ "id": "sevro.codex.initial-skill-reads",
291
+ "completeness": "complete",
292
+ "primarySkill": "assess-implementation-readiness",
293
+ "observedSkills": ["assess-implementation-readiness"]
294
+ },
295
+ {
296
+ "id": "sevro.codex.follow-up-skill-reads",
297
+ "completeness": "complete",
298
+ "primarySkill": null,
299
+ "observedSkills": []
300
+ },
301
+ {
302
+ "id": "sevro.codex.explicit-invocation",
303
+ "completeness": "complete",
304
+ "primarySkill": "adaptive-goal",
305
+ "observedSkills": ["adaptive-goal", "assess-implementation-readiness"]
306
+ }
307
+ ]
308
+ }
309
+ ],
310
+ "testFirstSlices": [
311
+ {
312
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"composed skill and documentation\"'",
313
+ "red": {
314
+ "exitCode": 1,
315
+ "reason": "Complete composed read was reported partial with no skill",
316
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"composed skill and documentation\"': Complete composed read was reported partial with no skill"
317
+ },
318
+ "green": {
319
+ "exitCode": 0,
320
+ "testsPassed": 1,
321
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"composed skill and documentation\"': 1 tests passed"
322
+ }
323
+ },
324
+ {
325
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"composed multiple skills\"'",
326
+ "red": {
327
+ "exitCode": 1,
328
+ "reason": "Both ordered mounted skills were reported partial with no skills",
329
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"composed multiple skills\"': Both ordered mounted skills were reported partial with no skills"
330
+ },
331
+ "green": {
332
+ "exitCode": 0,
333
+ "testsPassed": 2,
334
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"composed multiple skills\"': 2 tests passed"
335
+ }
336
+ },
337
+ {
338
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"prefixed literal skill\"'",
339
+ "red": {
340
+ "exitCode": 1,
341
+ "reason": "Complete prefixed reads were reported partial with no skill",
342
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"prefixed literal skill\"': Complete prefixed reads were reported partial with no skill"
343
+ },
344
+ "green": {
345
+ "exitCode": 0,
346
+ "testsPassed": 3,
347
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"prefixed literal skill\"': 3 tests passed"
348
+ }
349
+ },
350
+ {
351
+ "command": "lean-ctx -c 'bun test tests/codex-host.test.ts -t \"verified owner dispatch\"'",
352
+ "red": {
353
+ "exitCode": 1,
354
+ "reason": "Verified owner dispatch inherited partial supporting-read completeness",
355
+ "line": "Red — lean-ctx -c 'bun test tests/codex-host.test.ts -t \"verified owner dispatch\"': Verified owner dispatch inherited partial supporting-read completeness"
356
+ },
357
+ "green": {
358
+ "exitCode": 0,
359
+ "testsPassed": 1,
360
+ "line": "Green — lean-ctx -c 'bun test tests/codex-host.test.ts -t \"verified owner dispatch\"': 1 tests passed"
361
+ }
362
+ },
363
+ {
364
+ "command": "lean-ctx -c 'bun test tests/codex-host.test.ts -t \"app-server continuation retains\"'",
365
+ "red": {
366
+ "exitCode": 1,
367
+ "reason": "Completed app-server continuation omitted phase receipts",
368
+ "line": "Red — lean-ctx -c 'bun test tests/codex-host.test.ts -t \"app-server continuation retains\"': Completed app-server continuation omitted phase receipts"
369
+ },
370
+ "green": {
371
+ "exitCode": 0,
372
+ "testsPassed": 1,
373
+ "line": "Green — lean-ctx -c 'bun test tests/codex-host.test.ts -t \"app-server continuation retains\"': 1 tests passed"
374
+ }
375
+ },
376
+ {
377
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"fixed repository discovery\"'",
378
+ "red": {
379
+ "exitCode": 1,
380
+ "reason": "Fixed repository-discovery read was reported partial",
381
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"fixed repository discovery\"': Fixed repository-discovery read was reported partial"
382
+ },
383
+ "green": {
384
+ "exitCode": 0,
385
+ "testsPassed": 1,
386
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"fixed repository discovery\"': 1 tests passed"
387
+ }
388
+ },
389
+ {
390
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"unsupported tails after prefixed\"'",
391
+ "red": {
392
+ "exitCode": 1,
393
+ "reason": "Unsupported prefixed read with empty output was reported complete",
394
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"unsupported tails after prefixed\"': Unsupported prefixed read with empty output was reported complete"
395
+ },
396
+ "green": {
397
+ "exitCode": 0,
398
+ "testsPassed": 1,
399
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"unsupported tails after prefixed\"': 1 tests passed"
400
+ }
401
+ },
402
+ {
403
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"paged reads cannot borrow\"'",
404
+ "red": {
405
+ "exitCode": 1,
406
+ "reason": "Altered paged read borrowed a complete body from later search output",
407
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"paged reads cannot borrow\"': Altered paged read borrowed a complete body from later search output"
408
+ },
409
+ "green": {
410
+ "exitCode": 0,
411
+ "testsPassed": 1,
412
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"paged reads cannot borrow\"': 1 tests passed"
413
+ }
414
+ },
415
+ {
416
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"environment output on both sides\"'",
417
+ "red": {
418
+ "exitCode": 1,
419
+ "reason": "Environment output surrounding missing read bytes received false complete credit",
420
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"environment output on both sides\"': Environment output surrounding missing read bytes received false complete credit"
421
+ },
422
+ "green": {
423
+ "exitCode": 0,
424
+ "testsPassed": 1,
425
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"environment output on both sides\"': 1 tests passed"
426
+ }
427
+ },
428
+ {
429
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"repository-prefix normalization\"'",
430
+ "red": {
431
+ "exitCode": 1,
432
+ "reason": "Prefix normalization rewrote a quoted documentation operand and credited missing skill bytes",
433
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"repository-prefix normalization\"': Prefix normalization rewrote a quoted documentation operand and credited missing skill bytes"
434
+ },
435
+ "green": {
436
+ "exitCode": 0,
437
+ "testsPassed": 1,
438
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"repository-prefix normalization\"': 1 tests passed"
439
+ }
440
+ },
441
+ {
442
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"fallback reads cannot attribute\"'",
443
+ "red": {
444
+ "exitCode": 1,
445
+ "reason": "A multi-file fallback attributed a documentation copy to a missing mounted body",
446
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"fallback reads cannot attribute\"': A multi-file fallback attributed a documentation copy to a missing mounted body"
447
+ },
448
+ "green": {
449
+ "exitCode": 0,
450
+ "testsPassed": 1,
451
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"fallback reads cannot attribute\"': 1 tests passed"
452
+ }
453
+ },
454
+ {
455
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"double-quoted literal sed\"'",
456
+ "red": {
457
+ "exitCode": 1,
458
+ "reason": "A complete quoted literal sed read was incorrectly reported partial",
459
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"double-quoted literal sed\"': A complete quoted literal sed read was incorrectly reported partial"
460
+ },
461
+ "green": {
462
+ "exitCode": 0,
463
+ "testsPassed": 1,
464
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"double-quoted literal sed\"': 1 tests passed"
465
+ }
466
+ },
467
+ {
468
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"dynamic sed paths cannot\"'",
469
+ "red": {
470
+ "exitCode": 1,
471
+ "reason": "After quote recognition was repaired, an expanded path borrowed mounted identity from a literal alias",
472
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"dynamic sed paths cannot\"': After quote recognition was repaired, an expanded path borrowed mounted identity from a literal alias"
473
+ },
474
+ "green": {
475
+ "exitCode": 0,
476
+ "testsPassed": 1,
477
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"dynamic sed paths cannot\"': 1 tests passed"
478
+ }
479
+ },
480
+ {
481
+ "command": "lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"multiple bounded literal discovery\"'",
482
+ "red": {
483
+ "exitCode": 1,
484
+ "reason": "Complete mounted bytes followed by two literal searches were incorrectly reported partial",
485
+ "line": "Red — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"multiple bounded literal discovery\"': Complete mounted bytes followed by two literal searches were incorrectly reported partial"
486
+ },
487
+ "green": {
488
+ "exitCode": 0,
489
+ "testsPassed": 1,
490
+ "line": "Green — lean-ctx -c 'bun test tests/codex-skill-reads.test.ts -t \"multiple bounded literal discovery\"': 1 tests passed"
491
+ }
492
+ }
493
+ ],
494
+ "localChecks": [
495
+ {
496
+ "command": "bun run check:typescript --fast",
497
+ "exitCode": 0
498
+ },
499
+ {
500
+ "command": "bun test --timeout 90000 tests/codex-host.test.ts tests/host-quality.test.ts tests/codex-skill-reads.test.ts tests/codex-native-calls.test.ts",
501
+ "exitCode": 0,
502
+ "testsPassed": 460
503
+ },
504
+ {
505
+ "command": "bun run check:docs:external",
506
+ "exitCode": 0
507
+ }
508
+ ],
509
+ "previousCandidateRuns": {
510
+ "description": "Previous candidate outcomes remain separate; no failed task is converted to a passing activation outcome.",
511
+ "sourceFiles": {
512
+ "src/hosts/codex-skill-reads.ts": "8fd3e8fda806882017b1df1fe666f8ce47d5f5934fe605907458192e217dec87",
513
+ "src/hosts/codex.ts": "4906fd33095e8597ed83079b39c45426124cfa7b08ffec30451512523515b9e3"
514
+ },
515
+ "cases": [
516
+ {
517
+ "caseId": "guide-visual-absent",
518
+ "entrypoint": "exec",
519
+ "selectionFile": "guide-delivery-selection.json",
520
+ "selectionSha256": "219b5691561e64a70c2a5f7e3709fdf8bcbc84a412d02acc757c32e5aed6be6e",
521
+ "runId": "44420aac-09b3-4858-9604-7d03e5ad623b",
522
+ "execution": "completed",
523
+ "grading": "completed",
524
+ "task": "passed",
525
+ "checks": [
526
+ {
527
+ "id": "darrow.shell.1",
528
+ "status": "passed",
529
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.1"]
530
+ },
531
+ {
532
+ "id": "darrow.shell.2",
533
+ "status": "passed",
534
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.2"]
535
+ },
536
+ {
537
+ "id": "darrow.shell.3",
538
+ "status": "passed",
539
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.3"]
540
+ },
541
+ {
542
+ "id": "darrow.shell.4",
543
+ "status": "passed",
544
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.4"]
545
+ },
546
+ {
547
+ "id": "darrow.evals.disclosure.5",
548
+ "status": "passed",
549
+ "evidenceRefs": ["sevro.observation.final-message"]
550
+ },
551
+ {
552
+ "id": "darrow.output.1",
553
+ "status": "passed",
554
+ "evidenceRefs": ["sevro.observation.final-message"]
555
+ },
556
+ {
557
+ "id": "darrow.semantic.1",
558
+ "status": "passed",
559
+ "evidenceRefs": [
560
+ "sevro.observation.semantic.3ca2097d4f7ac4d95361ebb6f7c431251b752a81ed98ad07c477e8011aec4ade"
561
+ ]
562
+ },
563
+ {
564
+ "id": "darrow.semantic.2",
565
+ "status": "passed",
566
+ "evidenceRefs": [
567
+ "sevro.observation.semantic.12335bf9a89e2f87b653fe4d247475880cb27f29b839bf8b93ea9e85da0ac8c1"
568
+ ]
569
+ },
570
+ {
571
+ "id": "darrow.semantic.3",
572
+ "status": "passed",
573
+ "evidenceRefs": [
574
+ "sevro.observation.semantic.9feac9b022d2d95b10a590a31c45ab8f859249137ae9fc0fe86e28778a46d5d9"
575
+ ]
576
+ }
577
+ ],
578
+ "failedChecks": [],
579
+ "activation": {
580
+ "status": "passed",
581
+ "class": "positive",
582
+ "targetSkill": "darrow-guide",
583
+ "trials": 1,
584
+ "measured": 1,
585
+ "passed": 1,
586
+ "failed": 0,
587
+ "unavailable": 0,
588
+ "passRate": 1,
589
+ "threshold": 1,
590
+ "trueSelections": 1,
591
+ "falseSelections": 0
592
+ },
593
+ "skillEvidence": [
594
+ {
595
+ "id": "sevro.codex.skill-reads",
596
+ "completeness": "partial",
597
+ "primarySkill": null,
598
+ "observedSkills": []
599
+ },
600
+ {
601
+ "id": "sevro.codex.explicit-invocation",
602
+ "completeness": "complete",
603
+ "primarySkill": "darrow-guide",
604
+ "observedSkills": ["darrow-guide"]
605
+ }
606
+ ]
607
+ },
608
+ {
609
+ "caseId": "verification-followup-no-progress",
610
+ "entrypoint": "app-server",
611
+ "selectionFile": "verification-delivery-selection.json",
612
+ "selectionSha256": "de32d9c4b74641d867162d5a1bf35541f67dcffdcbcb07faca01c0dc6a43df34",
613
+ "runId": "6cd7f9df-2097-48b8-ae13-83d4243ac66f",
614
+ "execution": "completed",
615
+ "grading": "completed",
616
+ "task": "failed",
617
+ "checks": [
618
+ {
619
+ "id": "darrow.shell.1",
620
+ "status": "passed",
621
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.1"]
622
+ },
623
+ {
624
+ "id": "darrow.shell.2",
625
+ "status": "passed",
626
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.2"]
627
+ },
628
+ {
629
+ "id": "darrow.shell.3",
630
+ "status": "passed",
631
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.3"]
632
+ },
633
+ {
634
+ "id": "darrow.shell.4",
635
+ "status": "passed",
636
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.4"]
637
+ },
638
+ {
639
+ "id": "darrow.shell.5",
640
+ "status": "passed",
641
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.5"]
642
+ },
643
+ {
644
+ "id": "darrow.semantic.1",
645
+ "status": "failed",
646
+ "evidenceRefs": [
647
+ "sevro.observation.semantic.3ca2097d4f7ac4d95361ebb6f7c431251b752a81ed98ad07c477e8011aec4ade"
648
+ ]
649
+ },
650
+ {
651
+ "id": "darrow.evals.transcript.1",
652
+ "status": "passed",
653
+ "evidenceRefs": ["sevro.codex.native-calls"]
654
+ },
655
+ {
656
+ "id": "darrow.evals.transcript.2",
657
+ "status": "passed",
658
+ "evidenceRefs": ["sevro.codex.native-calls"]
659
+ },
660
+ {
661
+ "id": "darrow.evals.transcript.3",
662
+ "status": "passed",
663
+ "evidenceRefs": ["sevro.codex.native-calls"]
664
+ }
665
+ ],
666
+ "failedChecks": [
667
+ {
668
+ "id": "darrow.semantic.1",
669
+ "detail": "Reports no progress, preserves F1 as a blocker and A1 as a nonblocking advisory, and records the unchanged timeoutMs=1000 failure and passing required bash check. But it says continuation and completion remain the repair owner's decisions, which does not clearly return the requested stop evidence as the outcome."
670
+ }
671
+ ],
672
+ "activation": {
673
+ "status": "passed",
674
+ "class": "positive",
675
+ "targetSkill": "verify-change",
676
+ "trials": 1,
677
+ "measured": 1,
678
+ "passed": 1,
679
+ "failed": 0,
680
+ "unavailable": 0,
681
+ "passRate": 1,
682
+ "threshold": 1,
683
+ "trueSelections": 1,
684
+ "falseSelections": 0
685
+ },
686
+ "skillEvidence": [
687
+ {
688
+ "id": "sevro.codex.skill-reads",
689
+ "completeness": "complete",
690
+ "primarySkill": "inspect-candidate",
691
+ "observedSkills": ["inspect-candidate"]
692
+ },
693
+ {
694
+ "id": "sevro.codex.explicit-invocation",
695
+ "completeness": "complete",
696
+ "primarySkill": "verify-change",
697
+ "observedSkills": ["verify-change", "inspect-candidate"]
698
+ }
699
+ ]
700
+ },
701
+ {
702
+ "caseId": "goal-readiness-prior-assessed-omitted",
703
+ "entrypoint": "app-server",
704
+ "selectionFile": "goal-delivery-selection.json",
705
+ "selectionSha256": "c13532190a164e9c43629a4621bdf352800832fd5e6a151dcff27b8c6643cf52",
706
+ "runId": "edf64720-2b19-4393-a111-06c52b96b4fa",
707
+ "execution": "completed",
708
+ "grading": "completed",
709
+ "task": "passed",
710
+ "checks": [
711
+ {
712
+ "id": "darrow.shell.1",
713
+ "status": "passed",
714
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.1"]
715
+ },
716
+ {
717
+ "id": "darrow.shell.2",
718
+ "status": "passed",
719
+ "evidenceRefs": ["sevro.observation.shell.darrow.shell.2"]
720
+ },
721
+ {
722
+ "id": "darrow.semantic.1",
723
+ "status": "passed",
724
+ "evidenceRefs": [
725
+ "sevro.observation.semantic.3ca2097d4f7ac4d95361ebb6f7c431251b752a81ed98ad07c477e8011aec4ade"
726
+ ]
727
+ },
728
+ {
729
+ "id": "darrow.evals.native-goal",
730
+ "status": "passed",
731
+ "evidenceRefs": ["sevro.host.native-goal"]
732
+ },
733
+ {
734
+ "id": "darrow.evals.native-goal.internal-record",
735
+ "status": "passed",
736
+ "evidenceRefs": ["sevro.observation.final-message"]
737
+ },
738
+ {
739
+ "id": "darrow.evals.native-goal.canonical-report",
740
+ "status": "passed",
741
+ "evidenceRefs": ["sevro.observation.final-message"]
742
+ },
743
+ {
744
+ "id": "darrow.evals.transcript.3",
745
+ "status": "passed",
746
+ "evidenceRefs": ["sevro.codex.events"]
747
+ },
748
+ {
749
+ "id": "darrow.evals.transcript.1",
750
+ "status": "passed",
751
+ "evidenceRefs": ["sevro.codex.initial-skill-reads"]
752
+ },
753
+ {
754
+ "id": "darrow.evals.transcript.2",
755
+ "status": "passed",
756
+ "evidenceRefs": ["sevro.codex.follow-up-skill-reads"]
757
+ }
758
+ ],
759
+ "failedChecks": [],
760
+ "activation": {
761
+ "status": "not_requested"
762
+ },
763
+ "skillEvidence": [
764
+ {
765
+ "id": "sevro.codex.skill-reads",
766
+ "completeness": "complete",
767
+ "primarySkill": "assess-implementation-readiness",
768
+ "observedSkills": ["assess-implementation-readiness"]
769
+ },
770
+ {
771
+ "id": "sevro.codex.initial-skill-reads",
772
+ "completeness": "complete",
773
+ "primarySkill": "assess-implementation-readiness",
774
+ "observedSkills": ["assess-implementation-readiness"]
775
+ },
776
+ {
777
+ "id": "sevro.codex.follow-up-skill-reads",
778
+ "completeness": "complete",
779
+ "primarySkill": null,
780
+ "observedSkills": []
781
+ },
782
+ {
783
+ "id": "sevro.codex.explicit-invocation",
784
+ "completeness": "complete",
785
+ "primarySkill": "adaptive-goal",
786
+ "observedSkills": [
787
+ "adaptive-goal",
788
+ "assess-implementation-readiness"
789
+ ]
790
+ }
791
+ ]
792
+ }
793
+ ]
794
+ },
795
+ "localLimitations": [
796
+ {
797
+ "command": "bun run check:typescript",
798
+ "codexVersion": "0.162.1",
799
+ "platform": "macOS arm64",
800
+ "exitCode": 1,
801
+ "testsPassed": 1809,
802
+ "testsSkipped": 9,
803
+ "failedTests": [
804
+ "Codex managed plugin hooks keep projections read-only and peers private: app-server",
805
+ "Codex isolates hooks declared in its native plugin manifest",
806
+ "Codex app-server dispatches selected plugin hooks"
807
+ ],
808
+ "scope": "Earlier candidate; failures occurred before a native turn started."
809
+ },
810
+ {
811
+ "codexVersion": "0.160.1",
812
+ "platform": "macOS arm64",
813
+ "baselineRevision": "7487efbfa0681a534a38bb0ccf3733a7864f4931",
814
+ "baselinePassed": 2,
815
+ "baselineFailed": 2,
816
+ "baselineFailedTests": [
817
+ "Codex managed plugin hooks keep projections read-only and peers private: exec",
818
+ "Codex managed plugin hooks keep projections read-only and peers private: app-server"
819
+ ],
820
+ "scope": "The targeted managed-hook startup failures also reproduced on unchanged main; tests remain intact."
821
+ }
822
+ ]
823
+ }