@hassangameryt/freeflow 0.5.0 → 0.7.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 (301) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codex-plugin/plugin.json +4 -5
  4. package/README.md +141 -163
  5. package/capabilities/cognitive-routing/SKILL.md +387 -0
  6. package/capabilities/context-virtualization/SKILL.md +103 -0
  7. package/capabilities/conversation-history/SKILL.md +53 -0
  8. package/command-surface.json +6 -37
  9. package/hooks/freeflow-runtime-context.mjs +50 -541
  10. package/hooks/hooks.json +1 -26
  11. package/hooks/tests/check-runtime-context-hook.sh +114 -308
  12. package/package.json +27 -17
  13. package/pi-extension/dist/cognitive-routing/commands.js +96 -0
  14. package/pi-extension/dist/cognitive-routing/config.js +232 -0
  15. package/pi-extension/dist/cognitive-routing/controller.js +1292 -0
  16. package/pi-extension/dist/cognitive-routing/history.js +451 -0
  17. package/pi-extension/dist/cognitive-routing/host.js +188 -0
  18. package/pi-extension/dist/cognitive-routing/pi-routing-session.js +414 -0
  19. package/pi-extension/dist/cognitive-routing/pi-session-control.js +320 -0
  20. package/pi-extension/dist/cognitive-routing/runtime.js +43 -0
  21. package/pi-extension/dist/cognitive-routing/tool.js +212 -0
  22. package/pi-extension/dist/cognitive-routing/types.js +6 -0
  23. package/pi-extension/dist/context-virtualization/commands.js +89 -0
  24. package/pi-extension/dist/context-virtualization/projector.js +42 -0
  25. package/pi-extension/dist/context-virtualization/runtime.js +356 -0
  26. package/pi-extension/dist/context-virtualization/state.js +57 -0
  27. package/pi-extension/dist/context-virtualization/types.js +10 -0
  28. package/pi-extension/dist/conversation-history/passages.js +66 -0
  29. package/pi-extension/dist/conversation-history/ranking.js +105 -0
  30. package/pi-extension/dist/conversation-history/runtime.js +226 -0
  31. package/pi-extension/dist/conversation-history/search.js +56 -0
  32. package/pi-extension/dist/conversation-history/types.js +1 -0
  33. package/pi-extension/dist/freeflow-context/resolver.js +120 -0
  34. package/pi-extension/dist/freeflow-context/runtime.js +80 -0
  35. package/pi-extension/dist/freeflow-context/source-projector.js +95 -0
  36. package/pi-extension/dist/freeflow-context/tool.js +308 -0
  37. package/pi-extension/dist/freeflow-context/types.js +12 -0
  38. package/pi-extension/dist/freeflow-context/visibility.js +28 -0
  39. package/pi-extension/dist/index.js +564 -129
  40. package/pi-extension/dist/runtime/runtime-context.js +357 -470
  41. package/pi-extension/dist/runtime/runtime-identity.js +5 -0
  42. package/pi-extension/dist/settings/settings-tui.js +78 -0
  43. package/pi-extension/dist/settings/settings-ui.js +572 -826
  44. package/pi-extension/dist/ui/text-component.js +57 -0
  45. package/pi-extension/src/cognitive-routing/commands.ts +129 -0
  46. package/pi-extension/src/cognitive-routing/config.ts +303 -0
  47. package/pi-extension/src/cognitive-routing/controller.ts +1628 -0
  48. package/pi-extension/src/cognitive-routing/history.ts +650 -0
  49. package/pi-extension/src/cognitive-routing/host.ts +266 -0
  50. package/pi-extension/src/cognitive-routing/pi-routing-session.ts +538 -0
  51. package/pi-extension/src/cognitive-routing/pi-session-control.ts +444 -0
  52. package/pi-extension/src/cognitive-routing/runtime.ts +57 -0
  53. package/pi-extension/src/cognitive-routing/tool.ts +273 -0
  54. package/pi-extension/src/cognitive-routing/types.ts +89 -0
  55. package/pi-extension/src/context-virtualization/commands.ts +111 -0
  56. package/pi-extension/src/context-virtualization/projector.ts +62 -0
  57. package/pi-extension/src/context-virtualization/runtime.ts +406 -0
  58. package/pi-extension/src/context-virtualization/state.ts +79 -0
  59. package/pi-extension/src/context-virtualization/types.ts +92 -0
  60. package/pi-extension/src/conversation-history/passages.ts +81 -0
  61. package/pi-extension/src/conversation-history/ranking.ts +155 -0
  62. package/pi-extension/src/conversation-history/runtime.ts +250 -0
  63. package/pi-extension/src/conversation-history/search.ts +79 -0
  64. package/pi-extension/src/conversation-history/types.ts +31 -0
  65. package/pi-extension/src/freeflow-context/resolver.ts +139 -0
  66. package/pi-extension/src/freeflow-context/runtime.ts +100 -0
  67. package/pi-extension/src/freeflow-context/source-projector.ts +106 -0
  68. package/pi-extension/src/freeflow-context/tool.ts +360 -0
  69. package/pi-extension/src/freeflow-context/types.ts +70 -0
  70. package/pi-extension/src/freeflow-context/visibility.ts +53 -0
  71. package/pi-extension/src/index.ts +597 -135
  72. package/pi-extension/src/runtime/runtime-context.ts +373 -491
  73. package/pi-extension/src/runtime/runtime-identity.ts +8 -0
  74. package/pi-extension/src/settings/settings-tui.ts +93 -0
  75. package/pi-extension/src/settings/settings-ui.ts +679 -910
  76. package/pi-extension/src/ui/text-component.ts +66 -0
  77. package/pi-extension/tests/cognitive-routing/commands.test.js +134 -0
  78. package/pi-extension/tests/cognitive-routing/controller.test.js +1128 -0
  79. package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +1142 -0
  80. package/pi-extension/tests/cognitive-routing/history.test.js +274 -0
  81. package/pi-extension/tests/cognitive-routing/host-fixture.js +4 -0
  82. package/pi-extension/tests/cognitive-routing/host-identity.test.js +63 -0
  83. package/pi-extension/tests/cognitive-routing/pi-normal-lifecycle.test.js +434 -0
  84. package/pi-extension/tests/cognitive-routing/pi-session-control.test.js +174 -0
  85. package/pi-extension/tests/cognitive-routing/pi-session-history.test.js +91 -0
  86. package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +279 -0
  87. package/pi-extension/tests/cognitive-routing/tool.test.js +230 -0
  88. package/pi-extension/tests/context-virtualization/extension.test.js +749 -0
  89. package/pi-extension/tests/context-virtualization/projector.test.js +110 -0
  90. package/pi-extension/tests/context-virtualization/runtime.test.js +216 -0
  91. package/pi-extension/tests/conversation-history/runtime.test.js +98 -0
  92. package/pi-extension/tests/conversation-history/search.test.js +97 -0
  93. package/pi-extension/tests/integration/mode-free-core.test.js +218 -0
  94. package/pi-extension/tests/integration/pi-extension.test.js +532 -3701
  95. package/pi-extension/tests/integration/prompt-architecture.test.js +350 -0
  96. package/pi-extension/tests/integration/unaffected-regressions.test.js +411 -0
  97. package/runtime/prompts/cognitive-routing.md +10 -0
  98. package/runtime/prompts/context-virtualization.md +3 -0
  99. package/runtime/prompts/conversation-history.md +3 -0
  100. package/runtime/prompts/core.md +84 -0
  101. package/runtime/prompts/interaction-contract.md +11 -0
  102. package/skills/action-selection/SKILL.md +140 -0
  103. package/skills/action-selection/references/trajectory-stalls.md +71 -0
  104. package/skills/bypass/SKILL.md +109 -38
  105. package/skills/commit-work/SKILL.md +94 -55
  106. package/skills/commit-work/references/git-state-edges.md +94 -0
  107. package/skills/commit-work/references/simple-push.md +92 -0
  108. package/skills/commit-work/references/staging-decisions.md +79 -46
  109. package/skills/decision-gate/SKILL.md +80 -22
  110. package/skills/design-for-depth/SKILL.md +206 -60
  111. package/skills/design-for-depth/references/design-pressure-signals.md +108 -240
  112. package/skills/design-for-depth/references/interface-design-loop.md +77 -97
  113. package/skills/design-for-depth/references/module-and-dependency-design.md +147 -0
  114. package/skills/design-for-depth/references/software-design-philosophy.md +128 -174
  115. package/skills/design-for-depth/references/state-and-failure-boundaries.md +136 -0
  116. package/skills/diagnose-failure/SKILL.md +200 -48
  117. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +18 -6
  118. package/skills/diagnose-failure/references/{flaky-and-performance.md → flaky-and-performance-diagnosis.md} +13 -5
  119. package/skills/discuss/SKILL.md +119 -65
  120. package/skills/discuss/references/discussion-continuity.md +123 -0
  121. package/skills/evaluate-skill/SKILL.md +166 -52
  122. package/skills/evaluate-skill/references/{definition-schema.md → evaluation-definition-schema.md} +43 -3
  123. package/skills/evaluate-skill/references/evaluation-design.md +56 -30
  124. package/skills/evaluate-skill/references/execution-and-evidence.md +8 -3
  125. package/skills/evaluate-skill/references/review-and-revision.md +62 -21
  126. package/skills/evaluate-skill/scripts/lib/definitions.mjs +114 -3
  127. package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +156 -1
  128. package/skills/evaluate-skill/scripts/lib/grade.mjs +9 -1
  129. package/skills/evaluate-skill/scripts/lib/pi.mjs +147 -32
  130. package/skills/evaluate-skill/scripts/lib/rpc.mjs +4 -4
  131. package/skills/evaluate-skill/scripts/lib/runner.mjs +36 -14
  132. package/skills/evaluate-skill/scripts/lib/sandbox.mjs +92 -0
  133. package/skills/evaluate-skill/scripts/pi-guard.mjs +1 -1
  134. package/skills/evaluate-skill/scripts/pi-observer.mjs +66 -0
  135. package/skills/evaluate-skill/scripts/skill-eval.mjs +6 -5
  136. package/skills/execute-work/SKILL.md +99 -57
  137. package/skills/execute-work/references/code-practices.md +4 -4
  138. package/skills/execute-work/references/execute-work-edges.md +62 -0
  139. package/skills/finish-branch/SKILL.md +2 -2
  140. package/skills/finish-branch/references/integration-options.md +1 -1
  141. package/skills/handoff/SKILL.md +3 -3
  142. package/skills/launch-work/SKILL.md +1 -1
  143. package/skills/launch-work/references/launch-readiness.md +2 -2
  144. package/skills/migration-work/SKILL.md +2 -2
  145. package/skills/migration-work/references/migration-lifecycle.md +1 -1
  146. package/skills/release-work/SKILL.md +1 -1
  147. package/skills/release-work/references/release-evidence.md +1 -1
  148. package/skills/review-artifact/SKILL.md +129 -66
  149. package/skills/review-artifact/references/adjudicate-artifact-review.md +101 -0
  150. package/skills/review-artifact/references/independent-artifact-reviewer-contract.md +159 -0
  151. package/skills/review-work/SKILL.md +113 -68
  152. package/skills/review-work/references/adjudicate-work-review.md +97 -0
  153. package/skills/review-work/references/independent-work-reviewer-contract.md +139 -0
  154. package/skills/review-work/references/security-risk-lens.md +18 -16
  155. package/skills/setup-freeflow/SKILL.md +16 -17
  156. package/skills/setup-freeflow/references/activation-contract.md +24 -30
  157. package/skills/setup-freeflow/references/host-setup.md +6 -7
  158. package/skills/simplify-code/SKILL.md +97 -39
  159. package/skills/simplify-code/references/simplification-patterns.md +1 -1
  160. package/skills/tdd/SKILL.md +100 -53
  161. package/skills/tdd/references/test-design.md +3 -3
  162. package/skills/track-work/SKILL.md +195 -58
  163. package/skills/track-work/references/working-record-format.md +515 -0
  164. package/skills/track-work/scripts/lib/document.mjs +713 -0
  165. package/skills/track-work/scripts/lib/format.mjs +166 -0
  166. package/skills/track-work/scripts/lib/store.mjs +233 -0
  167. package/skills/track-work/scripts/lib/transitions.mjs +790 -0
  168. package/skills/track-work/scripts/lib/views.mjs +40 -0
  169. package/skills/track-work/scripts/working-record.mjs +316 -0
  170. package/skills/verify-work/SKILL.md +57 -19
  171. package/skills/verify-work/references/browser-runtime-evidence.md +2 -2
  172. package/skills/verify-work/references/integration-evidence.md +1 -7
  173. package/skills/verify-work/references/performance-evidence.md +2 -2
  174. package/skills/workflow/SKILL.md +137 -55
  175. package/skills/workflow/references/domain-skill-composition.md +26 -40
  176. package/skills/write-plan/SKILL.md +1 -1
  177. package/skills/write-skill/SKILL.md +218 -61
  178. package/skills/write-skill/references/activation-boundaries.md +63 -21
  179. package/skills/write-skill/references/agent-first-instructions.md +61 -27
  180. package/skills/write-skill/references/progressive-disclosure.md +97 -33
  181. package/skills/write-skill/references/skill-dependency-graphs.md +190 -0
  182. package/capabilities/output-router/SKILL.md +0 -206
  183. package/capabilities/output-router/references/safety-policy.md +0 -40
  184. package/capabilities/output-router/references/setup.md +0 -110
  185. package/pi-extension/dist/output-router/host-producer-identification.js +0 -232
  186. package/pi-extension/dist/output-router/native-safety-net.js +0 -216
  187. package/pi-extension/dist/output-router/observed-tool-routing.js +0 -122
  188. package/pi-extension/dist/output-router/renderers.js +0 -1023
  189. package/pi-extension/dist/output-router/router-tools.js +0 -554
  190. package/pi-extension/dist/output-router/schemas.js +0 -383
  191. package/pi-extension/dist/output-router/status.js +0 -744
  192. package/pi-extension/dist/output-router/utils.js +0 -502
  193. package/pi-extension/src/output-router/host-producer-identification.ts +0 -256
  194. package/pi-extension/src/output-router/native-safety-net.ts +0 -248
  195. package/pi-extension/src/output-router/observed-tool-routing.ts +0 -134
  196. package/pi-extension/src/output-router/renderers.ts +0 -1108
  197. package/pi-extension/src/output-router/router-tools.ts +0 -579
  198. package/pi-extension/src/output-router/schemas.ts +0 -387
  199. package/pi-extension/src/output-router/status.ts +0 -791
  200. package/pi-extension/src/output-router/utils.ts +0 -554
  201. package/pi-extension/tests/output-router/observed-producers.test.js +0 -132
  202. package/pi-extension/tests/output-router/search.test.js +0 -722
  203. package/router/dist/benchmarks/benchmark-harness.d.ts +0 -35
  204. package/router/dist/benchmarks/benchmark-harness.js +0 -92
  205. package/router/dist/benchmarks/benchmarks.d.ts +0 -109
  206. package/router/dist/benchmarks/benchmarks.js +0 -979
  207. package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +0 -95
  208. package/router/dist/benchmarks/codex-qa-benchmarks.js +0 -500
  209. package/router/dist/benchmarks/command-benchmarks.d.ts +0 -143
  210. package/router/dist/benchmarks/command-benchmarks.js +0 -698
  211. package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +0 -82
  212. package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +0 -773
  213. package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +0 -132
  214. package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +0 -1380
  215. package/router/dist/benchmarks/context-saving-baseline.d.ts +0 -60
  216. package/router/dist/benchmarks/context-saving-baseline.js +0 -470
  217. package/router/dist/benchmarks/index-benchmarks.d.ts +0 -103
  218. package/router/dist/benchmarks/index-benchmarks.js +0 -862
  219. package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +0 -101
  220. package/router/dist/benchmarks/storage-policy-benchmarks.js +0 -618
  221. package/router/dist/benchmarks/vault-index-benchmarks.d.ts +0 -56
  222. package/router/dist/benchmarks/vault-index-benchmarks.js +0 -322
  223. package/router/dist/config/config.d.ts +0 -103
  224. package/router/dist/config/config.js +0 -632
  225. package/router/dist/config/router-contract.d.ts +0 -10
  226. package/router/dist/config/router-contract.js +0 -54
  227. package/router/dist/config/schema.d.ts +0 -27
  228. package/router/dist/config/schema.js +0 -648
  229. package/router/dist/config/types.d.ts +0 -573
  230. package/router/dist/config/types.js +0 -41
  231. package/router/dist/evidence/bounded-evidence.d.ts +0 -40
  232. package/router/dist/evidence/bounded-evidence.js +0 -323
  233. package/router/dist/evidence/evidence-range-selector.d.ts +0 -24
  234. package/router/dist/evidence/evidence-range-selector.js +0 -232
  235. package/router/dist/evidence/evidence-search.d.ts +0 -27
  236. package/router/dist/evidence/evidence-search.js +0 -490
  237. package/router/dist/evidence/evidence.d.ts +0 -38
  238. package/router/dist/evidence/evidence.js +0 -200
  239. package/router/dist/evidence/failure-contracts.d.ts +0 -37
  240. package/router/dist/evidence/failure-contracts.js +0 -166
  241. package/router/dist/evidence/line-ranges.d.ts +0 -24
  242. package/router/dist/evidence/line-ranges.js +0 -22
  243. package/router/dist/experiments/local-index.d.ts +0 -64
  244. package/router/dist/experiments/local-index.js +0 -581
  245. package/router/dist/index.d.ts +0 -30
  246. package/router/dist/index.js +0 -32
  247. package/router/dist/local/local-traversal.d.ts +0 -18
  248. package/router/dist/local/local-traversal.js +0 -334
  249. package/router/dist/processing/engine.d.ts +0 -132
  250. package/router/dist/processing/engine.js +0 -533
  251. package/router/dist/processing/reducers.d.ts +0 -280
  252. package/router/dist/processing/reducers.js +0 -1673
  253. package/router/dist/processing/renderers.d.ts +0 -31
  254. package/router/dist/processing/renderers.js +0 -195
  255. package/router/dist/processing/scripts.d.ts +0 -91
  256. package/router/dist/processing/scripts.js +0 -386
  257. package/router/dist/repo/repo-traversal.d.ts +0 -18
  258. package/router/dist/repo/repo-traversal.js +0 -245
  259. package/router/dist/routing/observed-reducers.d.ts +0 -41
  260. package/router/dist/routing/observed-reducers.js +0 -661
  261. package/router/dist/routing/observed-routing.d.ts +0 -26
  262. package/router/dist/routing/observed-routing.js +0 -378
  263. package/router/dist/routing/parsers.d.ts +0 -16
  264. package/router/dist/routing/parsers.js +0 -521
  265. package/router/dist/routing/run-filters.d.ts +0 -60
  266. package/router/dist/routing/run-filters.js +0 -238
  267. package/router/dist/routing/run-reducers.d.ts +0 -49
  268. package/router/dist/routing/run-reducers.js +0 -122
  269. package/router/dist/sandbox/adapter-roots.d.ts +0 -46
  270. package/router/dist/sandbox/adapter-roots.js +0 -66
  271. package/router/dist/sandbox/eryx-python-adapter.d.ts +0 -13
  272. package/router/dist/sandbox/eryx-python-adapter.js +0 -868
  273. package/router/dist/sandbox/jq-wasm-adapter.d.ts +0 -9
  274. package/router/dist/sandbox/jq-wasm-adapter.js +0 -429
  275. package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +0 -13
  276. package/router/dist/sandbox/quickjs-wasi-adapter.js +0 -384
  277. package/router/dist/sandbox/script-sandbox.d.ts +0 -134
  278. package/router/dist/sandbox/script-sandbox.js +0 -337
  279. package/router/dist/setup/script-transform-adapters.d.ts +0 -32
  280. package/router/dist/setup/script-transform-adapters.js +0 -278
  281. package/router/dist/tools/batch.d.ts +0 -33
  282. package/router/dist/tools/batch.js +0 -586
  283. package/router/dist/tools/run.d.ts +0 -62
  284. package/router/dist/tools/run.js +0 -1304
  285. package/router/dist/tools/search.d.ts +0 -66
  286. package/router/dist/tools/search.js +0 -1364
  287. package/router/dist/transform/engine.d.ts +0 -168
  288. package/router/dist/transform/engine.js +0 -2072
  289. package/router/dist/vault/vault-index.d.ts +0 -125
  290. package/router/dist/vault/vault-index.js +0 -416
  291. package/router/dist/vault/vault.d.ts +0 -138
  292. package/router/dist/vault/vault.js +0 -630
  293. package/runtime/interaction-contract.md +0 -16
  294. package/skills/discuss/references/checkpoints.md +0 -66
  295. package/skills/execute-work/references/execution-loop.md +0 -77
  296. package/skills/mode-contract/SKILL.md +0 -104
  297. package/skills/review-artifact/references/reviewer-prompt.md +0 -148
  298. package/skills/review-work/references/reviewer-prompt.md +0 -134
  299. package/skills/track-work/references/working-record-schema.md +0 -378
  300. package/skills/workflow/references/workflow-loop.md +0 -92
  301. /package/skills/handoff/references/{templates.md → handoff-templates.md} +0 -0
@@ -5,71 +5,126 @@ description: Use when evaluating or comparing agent-skill behavior.
5
5
 
6
6
  # Evaluate Skill
7
7
 
8
- Evaluate whether an exact skill changes agent behavior as intended under declared pressure. Evidence outranks confident prose.
8
+ Determine whether an exact skill package changes agent behavior as intended under declared pressure. Evidence outranks confident prose.
9
9
 
10
10
  A **group** asks one behavioral question through exactly two variants:
11
11
 
12
- - `baseline`: no target skill or a previous snapshot;
13
- - `candidate`: a new or updated snapshot.
12
+ - `baseline`: no target skill for a new skill, or one exact immutable previous package for a revision;
13
+ - `candidate`: one exact new or updated package.
14
14
 
15
- The **subject** performs the declared task under one variant. A **suite** is an ordered batch of groups. The evaluator runs subjects, preserves canonical evidence, appends deterministic grades, and renders views. It does not decide whether a skill is good, ready, promotable, or suitable for production.
15
+ The **subject** performs the declared task under one variant. The **evaluator** isolates subjects and preserves canonical evidence. The **deterministic grader** derives fixed mechanical facts after run persistence. A **suite** runs an ordered set of independent groups.
16
16
 
17
- Inline examples teach the subject. They are candidate content, not evaluation evidence. Keep criteria and expected outcomes outside natural prompts.
17
+ Evaluate Skill does not author or revise skills, decide semantic quality, claim readiness, or choose publication. [Write Skill](../write-skill/SKILL.md) owns package preservation and revision. The active agent or user judges unresolved meaning. The user decides whether to revise, use, publish, or reject the skill.
18
18
 
19
- ## Route First
19
+ Inline examples teach the subject and are part of the candidate intervention. They are not independent evaluation evidence. Keep deterministic criteria and review questions outside natural subject prompts.
20
20
 
21
- - Inspect adequate saved evidence before proposing a rerun or wording change.
22
- - Reuse an existing group unchanged when it preserves the question, pressure, and fixed criteria.
23
- - For a draft-only request, use [Write Skill](../write-skill/SKILL.md); do not fake a run.
24
- - Preserve partial infrastructure evidence without treating unavailable behavior as pass or fail.
25
- - Do not mutate canonical evidence or erase an unfavorable result.
21
+ ## Route From Existing Evidence First
26
22
 
27
- Before a substantial rewrite, snapshot the complete current skill package and record an exact identity before editing; use that immutable state as the baseline. A small local wording correction needs no extra snapshot when its exact prior state is already recoverable and the change remains local.
23
+ Before proposing a run or revision:
28
24
 
29
- ## Name One Question
25
+ - inspect adequate saved evidence;
26
+ - reuse an existing group unchanged when it still preserves the question, pressure, variants, and fixed criteria;
27
+ - use saved views and raw artifact reads when a complete result already answers the question;
28
+ - preserve partial infrastructure evidence without converting unavailable behavior into pass or fail;
29
+ - do not mutate canonical evidence or erase an unfavorable result.
30
30
 
31
- Separate the behavior being examined:
31
+ For a draft-only request, use Write Skill. Do not fabricate behavioral evidence.
32
32
 
33
- - **Description activation:** did a natural prompt cause an exact target read, and when?
34
- - **First-read body behavior:** did explicit body delivery guide the subject with only guaranteed context?
33
+ A revision comparison requires an exact immutable baseline identity. If none exists, return to Write Skill to preserve the complete current package before revision. Evaluate Skill consumes baseline and candidate identities; it does not create a baseline by editing the package it is evaluating.
34
+
35
+ ## Name One Behavioral Question
36
+
37
+ Name the exact claim and observing mechanism before choosing the group shape.
38
+
39
+ Evidence classes include:
40
+
41
+ - **Description activation:** did a natural prompt cause the exact target to be read, and when?
42
+ - **First-read body behavior:** did explicit body delivery guide the subject using only guaranteed context?
35
43
  - **Nearby behavior:** did a close case avoid activation or load without hijacking the task?
36
44
  - **Dependency composition:** did exact ordered skills, resources, and context work together?
37
- - **Retained use:** did guidance remain useful on later declared turns?
38
- - **Artifact outcome:** did files, state, events, and responses match the fixed criterion?
39
- - **Cross-host behavior:** did the same question hold on every named host?
45
+ - **Retained use:** did guidance remain useful on later declared turns without redelivery?
46
+ - **Artifact outcome:** did files, structured state, events, and responses match fixed criteria?
47
+ - **Cross-host behavior:** did the same behavioral question hold on every named host?
48
+
49
+ One evidence class does not prove another.
50
+
51
+ ```text
52
+ successful read
53
+ ≠ behavioral compliance
54
+
55
+ explicit body delivery
56
+ ≠ natural activation
57
+
58
+ one turn
59
+ ≠ retained use
60
+
61
+ ambient installation
62
+ ≠ declared composition
63
+
64
+ correct behavior
65
+ ≠ proof that the target caused it
66
+ ```
67
+
68
+ Read [Evaluation Design](references/evaluation-design.md) before choosing or materially changing the question, evidence class, group shape, pressure, or baseline/candidate boundary.
69
+
70
+ ## Design The Smallest Valid Comparison
71
+
72
+ Before subject output exists:
73
+
74
+ 1. fix one behavioral question;
75
+ 2. fix deterministic expectations and review questions;
76
+ 3. preserve the earliest natural prompt or strongest pressure capable of distinguishing behavior;
77
+ 4. declare exact baseline and candidate identities;
78
+ 5. keep prompt or turns, fixture, tools, model, thinking, other skills, context, runtime, and criteria fixed except for the target difference;
79
+ 6. run one group or an ordered suite serially;
80
+ 7. inspect canonical evidence and deterministic facts before judging meaning;
81
+ 8. classify the failed boundary before proposing revision;
82
+ 9. return one measured revision target to Write Skill;
83
+ 10. rerun the complete fixed group with both variants after a behavioral change.
84
+
85
+ For a new skill:
86
+
87
+ ```text
88
+ baseline: no target skill
89
+ candidate: exact candidate package
90
+ ```
40
91
 
41
- One evidence class does not prove another. A successful read does not prove compliance. Direct body delivery cannot prove natural activation. One turn cannot prove retained use. Ambient installation cannot prove declared composition.
92
+ For a revision:
42
93
 
43
- Read [evaluation design](references/evaluation-design.md) when choosing the question, evidence class, group shape, or variant boundary.
94
+ ```text
95
+ baseline: exact previous package
96
+ candidate: exact revised package
97
+ ```
44
98
 
45
- Keep description and body questions separate by default. `end-to-end` is reserved for an integrated activation-plus-behavior question, but the current runner rejects it before subject execution.
99
+ For a description-only revision, keep body, references, scripts, and other resources byte-identical.
46
100
 
47
- Two common boundary examples:
101
+ If both variants pass, the pressure may be weak or the baseline already sufficient. If both fail, distinguish skill, fixture, dependency, environment, host, isolation, and criterion failures before revising instructions.
48
102
 
49
- - If a complete saved result already answers the question, use `view` and raw artifact reads; do not rerun merely to demonstrate process.
50
- - If explicit body delivery succeeds but a natural prompt never reads the skill, body behavior is supported while description activation still fails.
103
+ ## Declare The Complete Environment
51
104
 
52
- ## Use The Smallest Valid Loop
105
+ Use the exact [Evaluation Definition Schema](references/evaluation-definition-schema.md) when authoring or checking group and suite JSON.
53
106
 
54
- 1. Fix the group question, deterministic criteria, and review questions before subject output exists.
55
- 2. Preserve the earliest natural prompt or strongest pressure that should distinguish behavior.
56
- 3. For a new skill, use no target versus candidate. For a revision, use exact previous versus updated snapshots. For a description-only revision, keep body and resources byte-identical.
57
- 4. Keep prompts or turns, fixture, tools, model, thinking, other skills, context, and criteria fixed except for the target difference.
58
- 5. Run one group or an ordered suite serially.
59
- 6. Inspect deterministic facts and canonical evidence before judging meaning.
60
- 7. Let the active agent or user review unresolved behavior; never launch an automatic semantic grader.
61
- 8. Classify the failed boundary before editing and revise one measured pressure point.
62
- 9. Rerun the complete fixed group with both variants after a measured change.
107
+ Declare:
63
108
 
64
- If both variants pass, the pressure may be weak or the baseline sufficient. If both fail, distinguish the skill, fixture, environment, host, dependency, or criterion before editing.
109
+ - prompt or ordered turns;
110
+ - fixture;
111
+ - exact ordered skill packages and target index;
112
+ - working-tree or Git source identity;
113
+ - context resources;
114
+ - tools;
115
+ - model and thinking;
116
+ - runtime host and extension bundles when needed;
117
+ - literal and inherited environment sources;
118
+ - deterministic expectations and comparison IDs;
119
+ - review questions.
65
120
 
66
- ## Declare The Definition
121
+ Snapshot every declared subject resource. Ambient installation is not declared composition.
67
122
 
68
- Use the exact [definition schema](references/definition-schema.md) for group, environment, expectation, suite, and selector shapes.
123
+ Criteria and review questions remain outside the subject prompt.
69
124
 
70
- Declare the prompt or turns, fixture, exact ordered skills and target, working-tree or Git source, UTF-8 context, tools, model and thinking, deterministic expectations, comparison IDs, and review questions. Snapshot every declared subject resource. Ambient installation is not declared composition.
125
+ ## Run And Preserve Canonical Evidence
71
126
 
72
- ## Run And View
127
+ Before operating the evaluator, resolving paths, interpreting states, or reasoning about host execution, read [Execution and Evidence](references/execution-and-evidence.md).
73
128
 
74
129
  Use the canonical [skill evaluator](scripts/skill-eval.mjs):
75
130
 
@@ -78,28 +133,87 @@ node <evaluate-skill-directory>/scripts/skill-eval.mjs run <suite-or-group-path>
78
133
  node <evaluate-skill-directory>/scripts/skill-eval.mjs view <result-id-or-directory> [--group <id-or-position>] [--variant baseline|candidate]
79
134
  ```
80
135
 
81
- Run from the definition root. Definition targets resolve from the current working directory; suite group references resolve from the suite file. Results are stored under `<cwd>/.skill-eval/runs/<result-id>`. `view` accepts a stored result ID or explicit result directory.
136
+ Run from the definition root.
137
+
138
+ With no selectors, run or view every suite group and both variants. Selectors narrow execution or viewing scope; they do not modify definitions.
139
+
140
+ Canonical results live under:
141
+
142
+ ```text
143
+ <definition-root>/.skill-eval/runs/<result-id>
144
+ ```
145
+
146
+ A view is a projection of saved evidence, not its canonical source. Use ordinary file tools when exact run, event, transcript, response, stderr, workspace, definition, grade, context-observation, or group artifacts matter.
147
+
148
+ Do not invoke archived evaluators.
149
+
150
+ ## Derive Facts Without Inventing Meaning
82
151
 
83
- With no selectors, every suite group and both variants are selected. `--group` is invalid for a direct group. Run `--help` before relying on an operation.
152
+ Append deterministic grades only after canonical run evidence exists.
84
153
 
85
- Pi is the direct subject process. One-shot descriptions use fresh JSON-mode subjects. Ordered description turns and body groups use one isolated RPC process per variant. Body groups explicitly deliver one target on turn one. `bash`, definition-supplied command execution, and end-to-end execution are unsupported.
154
+ Deterministic checks may establish exact facts such as:
86
155
 
87
- Read [execution and evidence](references/execution-and-evidence.md) when operating commands, resolving paths, interpreting states, or reasoning about Pi isolation, persistence, views, cancellation, cleanup, and safeguards.
156
+ - skill or resource reads;
157
+ - file and path state;
158
+ - changed paths;
159
+ - file or response text;
160
+ - JSON validity or values;
161
+ - tool-call outcomes and argument predicates;
162
+ - context text at a selected surface, request, and turn;
163
+ - factual baseline-to-candidate transitions.
88
164
 
89
- ## Grade And Inspect Facts
165
+ A failed check remains ordinary behavioral evidence. It does not turn a valid subject run into infrastructure failure.
90
166
 
91
- Append deterministic grades only after canonical run evidence exists. A grade is derived evidence and never mutates or invalidates a run.
167
+ Missing evidence remains unavailable.
92
168
 
93
- Supported checks cover exact skill/resource reads, typed paths, changed paths, file/response text, explicit JSON states, valid turn scope, and factual baseline-to-candidate transitions. A failed check remains ordinary behavioral evidence. Missing evidence stays unavailable. Malformed checks or grading failures produce separate `grade-error` evidence. Transitions carry no quality or readiness meaning.
169
+ Malformed expectations or grading failures produce separate `grade-error` evidence and do not rewrite canonical run evidence.
94
170
 
95
- Prefer generated grade-first views for routine inspection. Use ordinary file tools for raw run, event, transcript, response, stderr, workspace, definition, grade, and group artifacts. A view may remove repeated transport structure; it must not hide evidence required by the question.
171
+ A transition such as `fail-to-pass` is a factual comparison. It does not mean bad-to-good, not-ready-to-ready, or rejected-to-promotable.
96
172
 
97
- Read [review and revision](references/review-and-revision.md) after evidence exists, when surfaces conflict, meaning still needs judgment, or a revision/rerun boundary must be chosen.
173
+ ## Review Meaning After Evidence Exists
174
+
175
+ After canonical evidence and deterministic grades exist, read [Review and Revision](references/review-and-revision.md) when:
176
+
177
+ - evidence conflicts;
178
+ - semantic meaning remains unresolved;
179
+ - the failed boundary must be classified;
180
+ - a revision target must be selected;
181
+ - rerun scope is uncertain.
182
+
183
+ The evaluator does not launch an automatic semantic grader.
184
+
185
+ The active agent or user may judge reasoning quality, authority preservation, architectural fitness, recommendation quality, or semantic completeness. Keep that judgment, cited evidence, uncertainty, and limits outside canonical run and grade state.
186
+
187
+ ## Return Revision To The Author
188
+
189
+ When evidence supports a candidate change:
190
+
191
+ 1. identify the exact failed boundary;
192
+ 2. preserve the canonical result path and relevant evidence;
193
+ 3. state one measured revision target;
194
+ 4. keep unrelated instructions and criteria stable;
195
+ 5. return revision to Write Skill;
196
+ 6. rerun the complete fixed group with both variants after the change.
197
+
198
+ Do not edit the skill from Evaluate Skill.
199
+
200
+ If the evaluation definition or criterion is wrong, preserve the old result and state that it no longer answers the revised question. Do not reinterpret it as evidence for the new question.
98
201
 
99
202
  ## Report And Stop
100
203
 
101
- Report what ran, exact variant identities, deterministic results, infrastructure failures, unavailable evidence, viewed scope, and canonical result paths. State what the evidence proves and does not prove.
204
+ Report:
205
+
206
+ - what ran;
207
+ - exact baseline and candidate identities;
208
+ - selected groups and variants;
209
+ - deterministic results;
210
+ - infrastructure failures, cancellation, or unavailable evidence;
211
+ - viewed scope;
212
+ - canonical result paths;
213
+ - what the evidence proves;
214
+ - what it does not prove;
215
+ - any supported failed boundary or revision target.
102
216
 
103
- Stop rather than overclaim when required activation, first-read, composition, isolation, multi-turn, artifact, or host evidence is unavailable. The active agent or user judges unresolved behavior. The user decides whether to revise, use, publish, or reject a skill.
217
+ Stop rather than overclaim when required activation, first-read, composition, retained-use, isolation, artifact, or host evidence is unavailable.
104
218
 
105
- Never invoke archived evaluators.
219
+ The active agent or user judges unresolved behavior. The user decides whether to revise, use, publish, or reject the skill.
@@ -58,7 +58,7 @@ Rules:
58
58
  - `schema_version` is `1`.
59
59
  - `kind` is `group`.
60
60
  - `id` starts with a lowercase letter, contains lowercase letters, numbers, or single hyphens, and is at most 64 characters.
61
- - `type` is `description`, `body`, or reserved `end-to-end`. The current runner rejects `end-to-end` before subject execution.
61
+ - `type` is `description` or `body`.
62
62
  - `input` contains exactly one of:
63
63
  - `prompt`: one non-empty string;
64
64
  - `turns`: a non-empty ordered array of non-empty strings. Repeated natural turns are allowed.
@@ -68,6 +68,7 @@ Rules:
68
68
  - `expectations` is an ordered array with unique expectation IDs.
69
69
  - `review_questions` is an ordered string array. Questions are rendered for the reviewer and never sent to the subject.
70
70
  - `model` is optional. `model.model` names the provider/model; optional `model.thinking` selects its thinking level. The CLI has no model override.
71
+ - `runtime` is optional. When omitted, the group runs under a plain `pi` host with no declared extensions. When present, it declares the host, ordered extension bundles, and string environment overrides.
71
72
 
72
73
  ## Description Group Example
73
74
 
@@ -203,10 +204,45 @@ A body group explicitly delivers each target on turn one and observes first-read
203
204
  }
204
205
  ```
205
206
 
206
- Body groups allow no tools or path-guarded `read`, `write`, and `edit`. A no-target baseline uses `skills: []` and `target: null`; the candidate must always identify a target.
207
+ Description groups allow no tools or only built-in `read`. Body groups allow built-in `read`, `write`, and `edit`, plus custom tools declared by a runtime extension bundle. Native `bash`, `powershell`, `grep`, `find`, and `ls` tools are unsupported. A no-target baseline or runtime-only group may use `skills: []` and `target: null`; a candidate that declares skills must identify its target.
207
208
 
208
209
  The examples are complete definition shapes. Replace fixture, resource, model, and Git-ref values with paths and identities that exist under your definition root.
209
210
 
211
+ ## Runtime Profile
212
+
213
+ A runtime profile is shared by both baseline and candidate variants. It changes the host environment, not the skill target:
214
+
215
+ ```json
216
+ {
217
+ "runtime": {
218
+ "host": "pi",
219
+ "session": false,
220
+ "extensions": [
221
+ {
222
+ "entry": "extensions/probe.mjs",
223
+ "resources": ["extensions"]
224
+ }
225
+ ],
226
+ "environment": {
227
+ "literal": {
228
+ "PROBE_MODE": "injection-test"
229
+ },
230
+ "inherit": []
231
+ }
232
+ }
233
+ }
234
+ ```
235
+
236
+ `host` is `pi` or `piflow`; the evaluator maps it to the corresponding installed host command and records the selected host. `session` controls whether the variant receives an isolated persistent session directory; it defaults to `false` in omitted runtime profiles. A runtime may declare zero or more bundles. Each bundle has an entry file and one or more directory resources copied under their original relative paths, so sibling imports and multi-tree extensions remain intact. Bundle bytes are snapshotted once and copied identically to both variants.
237
+
238
+ `environment.literal` contains non-secret string configuration and is recorded in run evidence. `environment.inherit` names parent-process variables whose values are passed to the child but never persisted; other parent variables are not passed. Missing inherited variables invalidate the variant. The evaluator supplies only a small host-runtime baseline such as `PATH` and `HOME`. Launch-control and loader keys are rejected from inherited values, literal and inherited names must not overlap, and secret-like literal keys are rejected.
239
+
240
+ Extensions are trusted executable inputs, not OS-sandboxed code. The evaluator proves declared identity and post-run immutability, but extension code retains its host permissions.
241
+
242
+ When a group declares `context-text` expectations, the evaluator loads its base isolation guard first, then declared bundles, then a non-mutating final observer. The observer records two per-turn surfaces: the chained `before_agent_start` system prompt and each provider-neutral `context` message projection. `context-text` expectations select `surface: "system-prompt"` or `surface: "provider-context"` and may select `request: "first"`, `"last"`, or a positive request number. Groups without context assertions do not create context-observation artifacts.
243
+
244
+ A custom tool name is allowed in `group.tools` only when the runtime declares an extension bundle. The evaluator remains extension-neutral: it does not interpret feature names or configuration schemas. Put feature configuration in the ordinary group fixture or runtime environment, and test combinations as separate suite groups.
245
+
210
246
  ## Variant Environment
211
247
 
212
248
  Each environment has exactly:
@@ -216,7 +252,7 @@ Each environment has exactly:
216
252
  "source": { "kind": "git", "ref": "v1.2.3" },
217
253
  "skills": ["skills/target", "skills/support"],
218
254
  "target": 0,
219
- "context": ["runtime/interaction-contract.md"]
255
+ "context": ["context/base-guidance.md"]
220
256
  }
221
257
  ```
222
258
 
@@ -255,6 +291,10 @@ Without `turn`, response checks use the final response and workspace checks use
255
291
  | `file-text` | workspace `path`, string `value`, optional body `turn` | `contains`, `not-contains`, `equals` |
256
292
  | `json` | workspace `path`, optional body `turn`, conditional `pointer` and `value` | `available`, `missing`, `valid`, `malformed`, `field-present`, `field-absent`, `field-equals` |
257
293
  | `response-text` | string `value`, optional body `turn` | `contains`, `not-contains`, `equals` |
294
+ | `tool-call` | string `tool`, optional body `turn`, optional `argumentContains`/`argumentNotContains` arrays | `called`, `succeeded`, `failed`, `not-called` |
295
+ | `context-text` | string `value`, optional `surface` (`system-prompt` or `provider-context`), optional `request`, optional body `turn` | `contains`, `not-contains`, `equals` |
296
+
297
+ For `tool-call` with `expect: "not-called"`, omitted argument filters require zero calls to the named tool. Supplied filters scope the absence check to calls matching those argument predicates.
258
298
 
259
299
  ### Resource paths
260
300
 
@@ -1,6 +1,6 @@
1
1
  # Evaluation Design
2
2
 
3
- Read this when choosing the behavioral question, evidence class, group shape, or baseline/candidate boundary.
3
+ Read this before choosing or materially changing the behavioral question, evidence class, group shape, pressure, or baseline/candidate boundary.
4
4
 
5
5
  ## Keep Roles Distinct
6
6
 
@@ -8,10 +8,10 @@ Read this when choosing the behavioral question, evidence class, group shape, or
8
8
  - **Evaluator:** isolates subjects and preserves canonical evidence.
9
9
  - **Deterministic grader:** derives fixed mechanical facts after run persistence.
10
10
  - **Reviewer:** the active agent or user judges unresolved meaning.
11
- - **Author:** revises one measured pressure point.
11
+ - **Author:** uses Write Skill to revise one measured pressure point.
12
12
  - **User:** decides whether to revise, use, publish, or reject the skill.
13
13
 
14
- The evaluator does not launch an automatic semantic grader or own readiness, promotion, or production status.
14
+ The evaluator does not revise the skill, launch an automatic semantic grader, or own readiness, promotion, or production status.
15
15
 
16
16
  ## Map Claims To Evidence
17
17
 
@@ -23,64 +23,90 @@ The evaluator does not launch an automatic semantic grader or own readiness, pro
23
23
  | Declared dependencies compose | Exact ordered composition |
24
24
  | Guidance remains useful later | Multi-turn evidence |
25
25
  | Files or structured state match | Artifact outcome |
26
- | Behavior holds on several hosts | The same group semantics on every named host |
26
+ | Behavior holds across named hosts | The same group semantics on every named host |
27
27
 
28
- Record declaration, materialization, delivery, observed reads, behavior, artifacts, and derived grades separately. A read does not prove compliance, and correct behavior does not prove which skill caused it.
28
+ Record separately:
29
+
30
+ - declaration;
31
+ - resource materialization;
32
+ - delivery;
33
+ - observed reads;
34
+ - behavior;
35
+ - artifacts;
36
+ - derived grades;
37
+ - later semantic judgment.
38
+
39
+ A read does not prove compliance. Correct behavior does not prove which skill caused it.
29
40
 
30
41
  ## Choose The Smallest Group Shape
31
42
 
32
43
  - **Description prompt:** natural activation and exact read timing.
33
- - **Explicit body task:** first-read instructions and behavior without activation ambiguity.
44
+ - **Explicit body task:** first-read body behavior without activation ambiguity.
34
45
  - **Fixture task:** files or repository state matter.
35
- - **Stateful turns:** ordered conversation and later behavior matter.
36
- - **Saved-result review:** stored runs already answer the question; inspect them instead of rerunning.
37
- - **Suite:** independent questions need one ordered serial invocation.
46
+ - **Stateful turns:** ordered conversation and retained use matter.
47
+ - **Saved-result review:** canonical evidence already answers the question.
48
+ - **Suite:** several independent questions require one ordered serial invocation.
49
+
50
+ Keep activation and body behavior separate unless their integrated interaction is the exact question and the current runner supports that observing boundary.
51
+
52
+ ## Fix Exact Variants
53
+
54
+ Every group contains exactly:
38
55
 
39
- Keep description and body questions separate unless the integrated path is itself the question.
56
+ - `baseline`;
57
+ - `candidate`.
40
58
 
41
- ## Fix The Variants
59
+ For a new skill, baseline has no target.
42
60
 
43
- Every group has exactly:
61
+ For a revision, baseline names an exact immutable previous package. If no exact baseline exists, return to Write Skill before revision.
44
62
 
45
- - `baseline`: no target for a new skill, or the exact previous snapshot for a revision;
46
- - `candidate`: the new or updated snapshot.
63
+ For a description-only revision, body and resources remain byte-identical.
47
64
 
48
- For a description-only revision, keep body and resources byte-identical. Freeze prompts or turns, fixture, tools, model, thinking, other skills, context, and criteria across variants.
65
+ Freeze prompts or turns, fixture, tools, model, thinking, other skills, context, runtime, and criteria across variants.
49
66
 
50
67
  ## Design Common Questions
51
68
 
52
- ### Description routing
69
+ ### Description activation
53
70
 
54
- Use the earliest natural prompt where the skill should become useful. For a nearby prompt, predeclare whether success means non-trigger or safe behavior after activation.
71
+ Use the earliest natural prompt where the target should become useful.
72
+
73
+ For a nearby prompt, predeclare whether success means:
74
+
75
+ - non-trigger; or
76
+ - safe behavior after activation.
55
77
 
56
78
  ### First-read body
57
79
 
58
- Explicitly deliver the exact body with only guaranteed context. Ambient package context cannot repair a missing dependency.
80
+ Explicitly deliver the exact target body with only guaranteed context. Ambient package context cannot repair a hidden dependency.
59
81
 
60
- ### Composition
82
+ ### Dependency composition
61
83
 
62
- Materialize exact ordered skills and context. Vary only the target snapshot. Standalone behavior should not receive a hidden base stack.
84
+ Materialize exact ordered skills and context. Vary only the target snapshot. Do not provide a hidden base stack.
63
85
 
64
86
  ### Retained use
65
87
 
66
- Use declared turns in one persistent subject process. Repeated explicit delivery does not prove retained use.
88
+ Use ordered turns in one persistent subject process. Repeated body delivery does not prove retained use.
67
89
 
68
90
  ### Artifact outcome
69
91
 
70
- Grade filesystem state, changed paths, file content, or JSON before relying on the final response. Preserve turn-scoped workspace evidence when later turns may change earlier state.
92
+ Grade files, changed paths, structured state, and events before relying on the final response. Preserve turn-scoped workspace evidence when later turns may change earlier state.
71
93
 
72
- ## Boundary Examples
94
+ ## Apply Real Pressure
73
95
 
74
- Saved complete evidence already contains the required run, grade, and artifacts:
96
+ A useful group:
75
97
 
76
- > Use `view` and ordinary file reads. Do not rerun merely to demonstrate the process.
98
+ - creates a natural temptation to violate the intended behavior;
99
+ - keeps criteria and review questions outside the prompt;
100
+ - exposes deterministic evidence where possible;
101
+ - distinguishes baseline from candidate behavior;
102
+ - remains realistic enough that passing behavior is useful.
77
103
 
78
- An explicitly delivered body produces the right answer, but the natural prompt never reads the target:
104
+ If both variants pass, the pressure may be weak or the baseline sufficient.
79
105
 
80
- > The body group supports first-read behavior. The description group still fails activation; body success cannot repair it.
106
+ If both fail, classify skill, fixture, dependency, environment, host, isolation, or criterion before editing.
81
107
 
82
- ## Apply Real Pressure
108
+ ## Reuse Existing Evidence
83
109
 
84
- A useful group creates a real temptation to violate the rule, keeps criteria outside the prompt, exposes deterministic evidence where possible, and distinguishes baseline behavior from the candidate.
110
+ When saved canonical evidence already answers the fixed question, inspect it through views and raw artifacts. Do not rerun merely to demonstrate process.
85
111
 
86
- If both variants pass, the pressure may be weak or the baseline sufficient. If both fail, classify the skill, fixture, host, dependency, or criterion before editing.
112
+ An explicitly delivered body may support first-read behavior while a natural prompt still fails activation. Preserve both conclusions; one does not repair the other.
@@ -33,7 +33,9 @@ With no selectors, `run` or `view` selects every suite group and both variants.
33
33
 
34
34
  ## Current Execution Boundary
35
35
 
36
- `run` executes description and body groups. `end-to-end` is a reserved definition type and is rejected before subject execution. Description groups allow no tools or `read`; body groups allow no tools or path-guarded `read`, `write`, and `edit`. `bash` and definition-supplied commands are unsupported.
36
+ `run` executes description and body groups. Unsupported group types are rejected before subject execution. Description groups allow no tools or `read`; body groups allow no tools or path-guarded `read`, `write`, and `edit`, plus non-native custom tools supplied by a declared runtime extension bundle. Native `bash`, `powershell`, `grep`, `find`, and `ls` tools and definition-supplied commands are unsupported.
37
+
38
+ A runtime profile selects the installed `pi` or `piflow` host, whether the variant uses an isolated persistent session directory, zero or more ordered extension bundles, and declarative environment sources. Literal values are non-secret configuration; only explicitly inherited parent variables are passed to the child without being persisted, alongside a small host-runtime baseline. Missing inherited variables invalidate the variant. Launch-control and loader keys are rejected from inherited values, and literal and inherited names must not overlap. For body runs, delivery remains `unavailable` until target setup succeeds; `natural-prompt` or `explicit-skill-command` records a prompt attempt. When a group declares context assertions, the evaluator launches the base guard first, declared extensions second, and a final non-mutating observer last. The observer records both the effective `before_agent_start` system prompt and each provider-neutral `context` message projection; it does not replace or sanitize extension injections after the base guard has established evaluator-owned isolation.
37
39
 
38
40
  Use fresh JSON-mode execution for one-shot descriptions. Use one persistent RPC process per selected variant for ordered description turns and all body groups. RPC correlates responses, waits for `agent_settled`, disables automatic retry and compaction, preserves directly observed partial-turn evidence, and cleans the process tree.
39
41
 
@@ -43,9 +45,12 @@ A body target is matched to the exact snapshotted `SKILL.md` and explicitly deli
43
45
 
44
46
  For each selected variant:
45
47
 
46
- - snapshot exact declared skills and context;
48
+ - snapshot exact declared skills, context, and the shared runtime bundle resources;
49
+ - copy the shared runtime bundles identically into the variant and verify their fingerprints before and after execution;
47
50
  - snapshot the group fixture once from the definition-root working tree—never from a variant Git source—then create an independent writable copy;
48
51
  - preserve skill order and target index;
52
+ - preserve runtime host, session mode, and extension order;
53
+ - preserve runtime bundle and provider-context observation evidence when requested;
49
54
  - replace ambient instructions with evaluator-owned declared context;
50
55
  - keep criteria and review questions outside the subject prompt;
51
56
  - allow reads only from workspace and declared immutable resources;
@@ -76,7 +81,7 @@ Views can render a complete result, all baseline or candidate variants, one grou
76
81
 
77
82
  Path cells escape literal backslashes before tab, carriage return, and newline. Variant views exclude expectation-owned errors from the other variant while retaining comparison, group, and system errors.
78
83
 
79
- Use ordinary file tools for raw `run.json`, events, transcript, final response, stderr, workspace, definition, grade, and group artifacts. Views remove transport noise; they do not replace canonical evidence.
84
+ Use ordinary file tools for raw `run.json`, events, transcript, final response, stderr, workspace, definition, grade, context observations, and group artifacts. Views remove transport noise; they do not replace canonical evidence. Tool-call grades distinguish attempted, succeeded, failed, and not-called outcomes.
80
85
 
81
86
  ## Safeguards And Limits
82
87