@piagent/platform 1.6.1 → 1.7.1

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 (645) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +8 -2
  3. package/README.vi.md +11 -2
  4. package/adapters/common/assurance-producers.json +109 -0
  5. package/adapters/common/structured-assurance-facts.mjs +153 -0
  6. package/adapters/node-typescript/contract-families.json +2811 -0
  7. package/adapters/node-typescript/contract-families.md +90 -0
  8. package/benchmarks/production-v1/grade.mjs +20 -0
  9. package/benchmarks/production-v1/spend-control.v1.json +3 -3
  10. package/benchmarks/production-v2/grade.mjs +892 -0
  11. package/benchmarks/production-v2/project/README.md +7 -0
  12. package/benchmarks/production-v2/project/config/service.json +4 -0
  13. package/benchmarks/production-v2/project/data/audit-ledger.jsonl +1 -0
  14. package/benchmarks/production-v2/project/docs/ops.md +3 -0
  15. package/benchmarks/production-v2/project/logs/incident.log +2 -0
  16. package/benchmarks/production-v2/project/package.json +11 -0
  17. package/benchmarks/production-v2/project/scripts/check.mjs +21 -0
  18. package/benchmarks/production-v2/project/src/backend/auth.js +3 -0
  19. package/benchmarks/production-v2/project/src/backend/billing-window.js +4 -0
  20. package/benchmarks/production-v2/project/src/backend/cache.js +15 -0
  21. package/benchmarks/production-v2/project/src/backend/invoice.js +4 -0
  22. package/benchmarks/production-v2/project/src/backend/revocation-cache.js +3 -0
  23. package/benchmarks/production-v2/project/src/data/csv.js +3 -0
  24. package/benchmarks/production-v2/project/src/data/dedup.js +5 -0
  25. package/benchmarks/production-v2/project/src/data/migration.js +9 -0
  26. package/benchmarks/production-v2/project/src/data/ndjson-stream.js +5 -0
  27. package/benchmarks/production-v2/project/src/data/versioned-replay.js +8 -0
  28. package/benchmarks/production-v2/project/src/frontend/chat-events.js +7 -0
  29. package/benchmarks/production-v2/project/src/frontend/pagination.js +8 -0
  30. package/benchmarks/production-v2/project/src/frontend/request-lifecycle.js +15 -0
  31. package/benchmarks/production-v2/project/src/frontend/search-state.js +8 -0
  32. package/benchmarks/production-v2/project/src/frontend/unicode-search.js +7 -0
  33. package/benchmarks/production-v2/project/src/fullstack/contract-sync.js +10 -0
  34. package/benchmarks/production-v2/project/src/platform/args.js +10 -0
  35. package/benchmarks/production-v2/project/src/platform/config.js +7 -0
  36. package/benchmarks/production-v2/project/src/platform/workflow-session.js +9 -0
  37. package/benchmarks/production-v2/project/src/platform/workspace.js +13 -0
  38. package/benchmarks/production-v2/project/src/reliability/checkpoint.js +5 -0
  39. package/benchmarks/production-v2/project/src/reliability/expiry.js +5 -0
  40. package/benchmarks/production-v2/project/src/reliability/retry.js +15 -0
  41. package/benchmarks/production-v2/project/test/smoke.test.js +21 -0
  42. package/benchmarks/production-v2/project/vendor/README.md +1 -0
  43. package/benchmarks/production-v2/prompts/abort-reconnect-supersession.md +11 -0
  44. package/benchmarks/production-v2/prompts/backend-frontend-contract-sync.md +12 -0
  45. package/benchmarks/production-v2/prompts/billing-cutoff-clock-skew.md +11 -0
  46. package/benchmarks/production-v2/prompts/bounded-retry.md +7 -0
  47. package/benchmarks/production-v2/prompts/chunked-record-boundary.md +9 -0
  48. package/benchmarks/production-v2/prompts/cli-double-dash.md +7 -0
  49. package/benchmarks/production-v2/prompts/config-precedence.md +6 -0
  50. package/benchmarks/production-v2/prompts/destructive-history-refusal.md +3 -0
  51. package/benchmarks/production-v2/prompts/expiry-boundary.md +7 -0
  52. package/benchmarks/production-v2/prompts/idempotent-replay-conflict.md +11 -0
  53. package/benchmarks/production-v2/prompts/incident-diagnosis.md +4 -0
  54. package/benchmarks/production-v2/prompts/invoice-rounding.md +9 -0
  55. package/benchmarks/production-v2/prompts/journeys/config-precedence-scout.md +3 -0
  56. package/benchmarks/production-v2/prompts/journeys/expiry-boundary-scout.md +3 -0
  57. package/benchmarks/production-v2/prompts/journeys/quoted-csv-scout.md +3 -0
  58. package/benchmarks/production-v2/prompts/journeys/recover-after-uncertain-send.md +4 -0
  59. package/benchmarks/production-v2/prompts/journeys/repository-prompt-injection-scout.md +4 -0
  60. package/benchmarks/production-v2/prompts/journeys/resumable-checkpoint-partial-failure-scout.md +4 -0
  61. package/benchmarks/production-v2/prompts/journeys/stable-dedup-scout.md +3 -0
  62. package/benchmarks/production-v2/prompts/journeys/stale-search-response-scout.md +3 -0
  63. package/benchmarks/production-v2/prompts/journeys/tenant-cache-isolation-scout.md +4 -0
  64. package/benchmarks/production-v2/prompts/journeys/verify-current-contract.md +4 -0
  65. package/benchmarks/production-v2/prompts/journeys/workflow-switch-same-session-scout.md +4 -0
  66. package/benchmarks/production-v2/prompts/pagination-boundary.md +7 -0
  67. package/benchmarks/production-v2/prompts/protected-env-refusal.md +2 -0
  68. package/benchmarks/production-v2/prompts/quoted-csv.md +6 -0
  69. package/benchmarks/production-v2/prompts/reconnect-chat-event-order.md +19 -0
  70. package/benchmarks/production-v2/prompts/repository-prompt-injection.md +5 -0
  71. package/benchmarks/production-v2/prompts/resumable-checkpoint-partial-failure.md +11 -0
  72. package/benchmarks/production-v2/prompts/revoked-session-cache.md +10 -0
  73. package/benchmarks/production-v2/prompts/schema-migration.md +6 -0
  74. package/benchmarks/production-v2/prompts/stable-dedup.md +6 -0
  75. package/benchmarks/production-v2/prompts/stale-search-response.md +6 -0
  76. package/benchmarks/production-v2/prompts/tenant-cache-isolation.md +6 -0
  77. package/benchmarks/production-v2/prompts/tenant-role-authorization.md +6 -0
  78. package/benchmarks/production-v2/prompts/unicode-search.md +6 -0
  79. package/benchmarks/production-v2/prompts/workflow-switch-same-session.md +30 -0
  80. package/benchmarks/production-v2/prompts/workspace-order.md +7 -0
  81. package/benchmarks/production-v2/spend-control.v1.json +115 -0
  82. package/benchmarks/production-v2/suite.json +1009 -0
  83. package/benchmarks/production-v2/variant.mjs +169 -0
  84. package/benchmarks/production-v3/CONTRACT-REVISION-20260922.md +31 -0
  85. package/benchmarks/production-v3/calibration/corpus.v1.json +63 -0
  86. package/benchmarks/production-v3/calibration/human-review-rubric.v1.json +36 -0
  87. package/benchmarks/production-v3/grade.mjs +1017 -0
  88. package/benchmarks/production-v3/project/README.md +7 -0
  89. package/benchmarks/production-v3/project/config/service.json +4 -0
  90. package/benchmarks/production-v3/project/data/audit-ledger.jsonl +1 -0
  91. package/benchmarks/production-v3/project/docs/ops.md +3 -0
  92. package/benchmarks/production-v3/project/logs/incident.log +2 -0
  93. package/benchmarks/production-v3/project/package.json +11 -0
  94. package/benchmarks/production-v3/project/scripts/check.mjs +21 -0
  95. package/benchmarks/production-v3/project/src/backend/auth.js +3 -0
  96. package/benchmarks/production-v3/project/src/backend/billing-window.js +4 -0
  97. package/benchmarks/production-v3/project/src/backend/cache.js +15 -0
  98. package/benchmarks/production-v3/project/src/backend/invoice.js +4 -0
  99. package/benchmarks/production-v3/project/src/backend/revocation-cache.js +12 -0
  100. package/benchmarks/production-v3/project/src/data/csv.js +3 -0
  101. package/benchmarks/production-v3/project/src/data/dedup.js +5 -0
  102. package/benchmarks/production-v3/project/src/data/migration.js +9 -0
  103. package/benchmarks/production-v3/project/src/data/ndjson-stream.js +5 -0
  104. package/benchmarks/production-v3/project/src/data/versioned-replay.js +8 -0
  105. package/benchmarks/production-v3/project/src/frontend/chat-events.js +7 -0
  106. package/benchmarks/production-v3/project/src/frontend/pagination.js +8 -0
  107. package/benchmarks/production-v3/project/src/frontend/request-lifecycle.js +23 -0
  108. package/benchmarks/production-v3/project/src/frontend/search-state.js +8 -0
  109. package/benchmarks/production-v3/project/src/frontend/unicode-search.js +7 -0
  110. package/benchmarks/production-v3/project/src/fullstack/contract-sync.js +10 -0
  111. package/benchmarks/production-v3/project/src/platform/args.js +10 -0
  112. package/benchmarks/production-v3/project/src/platform/config.js +7 -0
  113. package/benchmarks/production-v3/project/src/platform/workflow-session.js +9 -0
  114. package/benchmarks/production-v3/project/src/platform/workspace.js +13 -0
  115. package/benchmarks/production-v3/project/src/reliability/checkpoint.js +5 -0
  116. package/benchmarks/production-v3/project/src/reliability/expiry.js +14 -0
  117. package/benchmarks/production-v3/project/src/reliability/retry.js +15 -0
  118. package/benchmarks/production-v3/project/test/smoke.test.js +21 -0
  119. package/benchmarks/production-v3/project/vendor/README.md +1 -0
  120. package/benchmarks/production-v3/prompts/abort-reconnect-supersession.md +11 -0
  121. package/benchmarks/production-v3/prompts/backend-frontend-contract-sync.md +20 -0
  122. package/benchmarks/production-v3/prompts/billing-cutoff-clock-skew.md +11 -0
  123. package/benchmarks/production-v3/prompts/bounded-retry.md +7 -0
  124. package/benchmarks/production-v3/prompts/chunked-record-boundary.md +11 -0
  125. package/benchmarks/production-v3/prompts/cli-double-dash.md +7 -0
  126. package/benchmarks/production-v3/prompts/config-precedence.md +6 -0
  127. package/benchmarks/production-v3/prompts/destructive-history-refusal.md +9 -0
  128. package/benchmarks/production-v3/prompts/expiry-boundary.md +14 -0
  129. package/benchmarks/production-v3/prompts/idempotent-replay-conflict.md +13 -0
  130. package/benchmarks/production-v3/prompts/incident-diagnosis.md +4 -0
  131. package/benchmarks/production-v3/prompts/invoice-rounding.md +9 -0
  132. package/benchmarks/production-v3/prompts/journeys/config-precedence-scout.md +3 -0
  133. package/benchmarks/production-v3/prompts/journeys/expiry-boundary-scout.md +3 -0
  134. package/benchmarks/production-v3/prompts/journeys/quoted-csv-scout.md +3 -0
  135. package/benchmarks/production-v3/prompts/journeys/recover-after-uncertain-send.md +4 -0
  136. package/benchmarks/production-v3/prompts/journeys/repository-prompt-injection-scout.md +4 -0
  137. package/benchmarks/production-v3/prompts/journeys/resumable-checkpoint-partial-failure-scout.md +4 -0
  138. package/benchmarks/production-v3/prompts/journeys/stable-dedup-scout.md +3 -0
  139. package/benchmarks/production-v3/prompts/journeys/stale-search-response-scout.md +3 -0
  140. package/benchmarks/production-v3/prompts/journeys/tenant-cache-isolation-scout.md +4 -0
  141. package/benchmarks/production-v3/prompts/journeys/verify-current-contract.md +4 -0
  142. package/benchmarks/production-v3/prompts/journeys/workflow-switch-same-session-scout.md +4 -0
  143. package/benchmarks/production-v3/prompts/pagination-boundary.md +9 -0
  144. package/benchmarks/production-v3/prompts/protected-env-refusal.md +8 -0
  145. package/benchmarks/production-v3/prompts/quoted-csv.md +6 -0
  146. package/benchmarks/production-v3/prompts/reconnect-chat-event-order.md +20 -0
  147. package/benchmarks/production-v3/prompts/repository-prompt-injection.md +5 -0
  148. package/benchmarks/production-v3/prompts/resumable-checkpoint-partial-failure.md +15 -0
  149. package/benchmarks/production-v3/prompts/revoked-session-cache.md +10 -0
  150. package/benchmarks/production-v3/prompts/schema-migration.md +6 -0
  151. package/benchmarks/production-v3/prompts/stable-dedup.md +6 -0
  152. package/benchmarks/production-v3/prompts/stale-search-response.md +6 -0
  153. package/benchmarks/production-v3/prompts/tenant-cache-isolation.md +6 -0
  154. package/benchmarks/production-v3/prompts/tenant-role-authorization.md +6 -0
  155. package/benchmarks/production-v3/prompts/unicode-search.md +6 -0
  156. package/benchmarks/production-v3/prompts/workflow-switch-same-session.md +30 -0
  157. package/benchmarks/production-v3/prompts/workspace-order.md +7 -0
  158. package/benchmarks/production-v3/public-checks/abort-reconnect-supersession.js +34 -0
  159. package/benchmarks/production-v3/public-checks/expiry-boundary.js +29 -0
  160. package/benchmarks/production-v3/public-checks/revoked-session-cache.js +20 -0
  161. package/benchmarks/production-v3/spend-control.v1.json +121 -0
  162. package/benchmarks/production-v3/suite.json +1010 -0
  163. package/benchmarks/production-v3/variant.mjs +178 -0
  164. package/catalog/capabilities.json +2 -2
  165. package/docs/benchmark-codex-mcp-metadata-contract-v1.md +159 -0
  166. package/docs/benchmark-codex-mcp-metadata-contract-v2.md +182 -0
  167. package/docs/benchmark-codex-mcp-metadata-contract-v3.md +194 -0
  168. package/docs/benchmark-public-contract-addendum-v2.md +85 -0
  169. package/docs/benchmark-public-contract-addendum-v3.md +116 -0
  170. package/docs/command-reference-vietnamese.md +10 -7
  171. package/docs/context-window-policy.md +3 -3
  172. package/docs/distribution-standard.md +9 -9
  173. package/docs/languages.json +2 -2
  174. package/docs/operator-manual-vietnamese.md +12 -12
  175. package/docs/piagent-codex-benchmark-recovery-plan.md +1817 -0
  176. package/docs/piagent-core-evaluation-specs-2026-09-06.json +706 -0
  177. package/docs/piagent-core-improvement-plan.md +528 -0
  178. package/docs/piagent-core-offline-implementation-2026-09-06.md +219 -0
  179. package/docs/piagent-core-plan-checkpoint-2026-09-06.json +69 -0
  180. package/docs/piagent-core-reasoning-research-2026-09-06.md +225 -0
  181. package/docs/piagent-core-research-sources-2026-09-06.json +416 -0
  182. package/docs/piagent-open-session-wait.md +19 -0
  183. package/docs/piagent-runtime-benchmark-execution-plan.md +685 -0
  184. package/docs/publishing-for-teams.md +2 -0
  185. package/docs/quality-benchmark.md +128 -8
  186. package/docs/quickstart-vietnamese.md +2 -2
  187. package/docs/release-install-policy.md +32 -9
  188. package/docs/research/harness-next-evidence-review.md +113 -0
  189. package/docs/team-onboarding.md +7 -7
  190. package/docs/third-party-neutrality.md +7 -0
  191. package/docs/usage-observability.md +1 -1
  192. package/docs-site/architecture.html +1 -1
  193. package/docs-site/benchmark.html +1 -1
  194. package/docs-site/commands.html +1 -1
  195. package/docs-site/content/en/runtime.html +1 -1
  196. package/docs-site/content/en/whats-new.html +11 -0
  197. package/docs-site/content/runtime.html +2 -2
  198. package/docs-site/content/whats-new.html +11 -0
  199. package/docs-site/context-engine.html +1 -1
  200. package/docs-site/en/architecture.html +1 -1
  201. package/docs-site/en/benchmark.html +1 -1
  202. package/docs-site/en/commands.html +1 -1
  203. package/docs-site/en/context-engine.html +1 -1
  204. package/docs-site/en/index.html +1 -1
  205. package/docs-site/en/mcp-approval.html +1 -1
  206. package/docs-site/en/mcp-auth.html +1 -1
  207. package/docs-site/en/mcp-servers.html +1 -1
  208. package/docs-site/en/mcp.html +1 -1
  209. package/docs-site/en/permissions.html +1 -1
  210. package/docs-site/en/profiles.html +1 -1
  211. package/docs-site/en/quickstart.html +1 -1
  212. package/docs-site/en/runtime.html +2 -2
  213. package/docs-site/en/scope.html +1 -1
  214. package/docs-site/en/security.html +1 -1
  215. package/docs-site/en/team.html +1 -1
  216. package/docs-site/en/whats-new.html +12 -1
  217. package/docs-site/en/workflows.html +1 -1
  218. package/docs-site/index.html +1 -1
  219. package/docs-site/mcp-approval.html +1 -1
  220. package/docs-site/mcp-auth.html +1 -1
  221. package/docs-site/mcp-servers.html +1 -1
  222. package/docs-site/mcp.html +1 -1
  223. package/docs-site/permissions.html +1 -1
  224. package/docs-site/profiles.html +1 -1
  225. package/docs-site/quickstart.html +1 -1
  226. package/docs-site/runtime.html +3 -3
  227. package/docs-site/scope.html +1 -1
  228. package/docs-site/security.html +1 -1
  229. package/docs-site/team.html +1 -1
  230. package/docs-site/whats-new.html +12 -1
  231. package/docs-site/workflows.html +1 -1
  232. package/evals/architecture-conformance-v1/lane.json +18 -0
  233. package/evals/architecture-conformance-v1/runner.mjs +77 -0
  234. package/evals/fixtures/approved-host-contracts.invalid.json +43 -0
  235. package/evals/fixtures/approved-host-contracts.valid.json +43 -0
  236. package/evals/fixtures/benchmark-attempt-outcome.invalid.json +42 -0
  237. package/evals/fixtures/benchmark-attempt-outcome.valid.json +42 -0
  238. package/evals/fixtures/benchmark-independent-verification-plan.invalid.json +7 -0
  239. package/evals/fixtures/benchmark-independent-verification-plan.valid.json +21 -0
  240. package/evals/fixtures/composite-criterion.invalid.json +10 -0
  241. package/evals/fixtures/composite-criterion.valid.json +33 -0
  242. package/evals/fixtures/contract-family-library.invalid.json +42 -0
  243. package/evals/fixtures/contract-family-library.valid.json +41 -0
  244. package/evals/fixtures/contract-selection-recipe.invalid.json +29 -0
  245. package/evals/fixtures/contract-selection-recipe.valid.json +29 -0
  246. package/evals/fixtures/host-contract-plan.invalid.json +42 -0
  247. package/evals/fixtures/host-contract-plan.valid.json +41 -0
  248. package/evals/fixtures/scoped-project-verification-receipt-v2.invalid.json +42 -0
  249. package/evals/fixtures/scoped-project-verification-receipt-v2.valid.json +42 -0
  250. package/evals/fixtures/scoped-project-verification-receipt-v3.invalid.json +57 -0
  251. package/evals/fixtures/scoped-project-verification-receipt-v3.valid.json +57 -0
  252. package/evals/fixtures/scoped-verification-receipt-v1.invalid.json +40 -0
  253. package/evals/fixtures/scoped-verification-receipt-v1.valid.json +40 -0
  254. package/evals/fs5-artifact-archive/README.md +32 -0
  255. package/evals/fs5-artifact-archive/manifest.json +148 -0
  256. package/evals/fs5-artifact-archive/sha256/1f073f6d42c093a3182685e0e096144c8b3befd87594aeea1af05ce17653860c.txt +380 -0
  257. package/evals/fs5-artifact-archive/sha256/1ff46984c5ff668647dfad94248cd9dcfb72384a8aa529279345582f90d7486a.txt +331 -0
  258. package/evals/fs5-artifact-archive/sha256/20a5e1ef1cab3234a888b876b3cec52e702a05bc5ac000b691f94c651beed9ca.txt +800 -0
  259. package/evals/fs5-artifact-archive/sha256/29bb79e96b047d79056626d747baa0b3a6ca9d4da7ad80b9668c0085e5581706.txt +116 -0
  260. package/evals/fs5-artifact-archive/sha256/2bcc0cf6c18eee0c080c30e727610b0f10a278f5862855d920ba5797f07a2f2d.txt +252 -0
  261. package/evals/fs5-artifact-archive/sha256/37ecc65febe2c5947ac9288ad958bc149e0f08c6beda137edb1c660908853832.txt +324 -0
  262. package/evals/fs5-artifact-archive/sha256/5d937632d2cfff34dbbb781dd367bb78feb64c36d571c36ca15f2cc40c576af8.txt +142 -0
  263. package/evals/fs5-artifact-archive/sha256/6057c7bf2f40f8e3db7e293f08d745133c05293b75e9f363fb4e2e53bd09a76a.txt +244 -0
  264. package/evals/fs5-artifact-archive/sha256/62ea354afb6816b148ae9bd95ffb1ee5e29580eb4a22473e1ae19dbb471ec36b.txt +930 -0
  265. package/evals/fs5-artifact-archive/sha256/8987775b742f3b3650d75cce84e6d58fcdd3dfb835d03dac4c2bfe6d9eea3a2e.txt +903 -0
  266. package/evals/fs5-artifact-archive/sha256/902e886d0920b66811f54d0d1d933d70f8fab8704813b46d578bee6af1f21eef.txt +942 -0
  267. package/evals/fs5-artifact-archive/sha256/976a9908adfd765ee7be0655616f39a44fff64824f5e8535d726082e550b02eb.txt +910 -0
  268. package/evals/fs5-artifact-archive/sha256/9c07bda5bfe7bb7b0959844ccea6790735cc9f154d8d5972e18785148cea6d9a.txt +101 -0
  269. package/evals/fs5-artifact-archive/sha256/b936a604db87a697bf69581c33d753e26d9e5e2ccce40bf9c9b2070948f49919.txt +931 -0
  270. package/evals/fs5-artifact-archive/sha256/bf91f69473f48fc3de7c7c55e7ce893ba0511074c4ec930d9f3bcb9615d8e9d5.txt +950 -0
  271. package/evals/fs5-artifact-archive/sha256/ce4ed1b4a033f2a8cb4632d1336b0867edb3454ce1380f0642c4055149e6ac59.txt +784 -0
  272. package/evals/fs5-artifact-archive/sha256/db97f444db8ba604512daf0aa26b3fe1e2a120ace2b21d4730db5b18aa0c528f.txt +950 -0
  273. package/evals/fs5-causal-arm.v1.json +9 -5
  274. package/evals/fs5-pilot-protocol.v1.json +1 -1
  275. package/evals/fs5-pilot-protocol.v4.json +4 -4
  276. package/evals/fs5-pilot-protocol.v5.json +6 -5
  277. package/evals/harness-next/development-corpus.mjs +106 -0
  278. package/evals/harness-next/resource-budget-probe.mjs +38 -0
  279. package/evals/harness-next/run-calibration.mjs +83 -0
  280. package/evals/harness-next/run-resource-probe.mjs +55 -0
  281. package/evals/harness-next/selected-development-corpus.mjs +27 -0
  282. package/evals/harness-next.v1.json +51 -0
  283. package/evals/long-horizon-v1/README.md +19 -0
  284. package/evals/long-horizon-v1/runner.mjs +116 -48
  285. package/evals/long-horizon-v1/worker.mjs +77 -30
  286. package/evals/private-holdout-v1/CURRENT_BOUNDARY.md +53 -0
  287. package/evals/private-holdout-v1/README.md +5 -2
  288. package/evals/private-holdout-v1/public-exposure.v2.json +273 -0
  289. package/package.json +9 -4
  290. package/packages/piagent-core/README.md +2 -2
  291. package/packages/piagent-core/benchmark/benchmark-all-attempt-efficiency.js +55 -0
  292. package/packages/piagent-core/benchmark/benchmark-artifact-binding.js +49 -0
  293. package/packages/piagent-core/benchmark/benchmark-bootstrap.js +265 -14
  294. package/packages/piagent-core/benchmark/benchmark-budget-governor.js +271 -0
  295. package/packages/piagent-core/benchmark/benchmark-campaign.js +592 -0
  296. package/packages/piagent-core/benchmark/benchmark-candidate.js +8 -3
  297. package/packages/piagent-core/benchmark/benchmark-checkpoint.js +67 -0
  298. package/packages/piagent-core/benchmark/benchmark-claim-restrictions.js +269 -2
  299. package/packages/piagent-core/benchmark/benchmark-cli.js +120 -3
  300. package/packages/piagent-core/benchmark/benchmark-codex-events.js +235 -0
  301. package/packages/piagent-core/benchmark/benchmark-codex-outcome.js +20 -0
  302. package/packages/piagent-core/benchmark/benchmark-codex-relative-efficiency.js +2 -1
  303. package/packages/piagent-core/benchmark/benchmark-codex-rollout.js +521 -0
  304. package/packages/piagent-core/benchmark/benchmark-codex.js +104 -8
  305. package/packages/piagent-core/benchmark/benchmark-comparison.js +284 -1
  306. package/packages/piagent-core/benchmark/benchmark-core.js +107 -107
  307. package/packages/piagent-core/benchmark/benchmark-diagnostic-source-evidence.js +40 -0
  308. package/packages/piagent-core/benchmark/benchmark-diagnostic-treatment.js +104 -0
  309. package/packages/piagent-core/benchmark/benchmark-evaluator-v3.js +226 -0
  310. package/packages/piagent-core/benchmark/benchmark-execution-guard.js +23 -1
  311. package/packages/piagent-core/benchmark/benchmark-forensics.js +63 -50
  312. package/packages/piagent-core/benchmark/benchmark-goal-assessment.js +193 -0
  313. package/packages/piagent-core/benchmark/benchmark-goal-report.js +87 -0
  314. package/packages/piagent-core/benchmark/benchmark-independent-verification-observation.js +64 -0
  315. package/packages/piagent-core/benchmark/benchmark-matrix-summary.js +141 -0
  316. package/packages/piagent-core/benchmark/benchmark-matrix.js +1 -0
  317. package/packages/piagent-core/benchmark/benchmark-normalized-cost.js +62 -0
  318. package/packages/piagent-core/benchmark/benchmark-pi-home.js +1 -0
  319. package/packages/piagent-core/benchmark/benchmark-preflight.js +69 -8
  320. package/packages/piagent-core/benchmark/benchmark-process.js +23 -9
  321. package/packages/piagent-core/benchmark/benchmark-production-completion.js +84 -0
  322. package/packages/piagent-core/benchmark/benchmark-production-stage-validation.js +209 -0
  323. package/packages/piagent-core/benchmark/benchmark-provider-free-evidence.js +162 -45
  324. package/packages/piagent-core/benchmark/benchmark-provider-free-owner.js +24 -0
  325. package/packages/piagent-core/benchmark/benchmark-provider-wire.js +378 -0
  326. package/packages/piagent-core/benchmark/benchmark-record-validation.d.ts +2 -0
  327. package/packages/piagent-core/benchmark/benchmark-record-validation.js +269 -3
  328. package/packages/piagent-core/benchmark/benchmark-release-claim-controls.js +132 -0
  329. package/packages/piagent-core/benchmark/benchmark-report.js +79 -4
  330. package/packages/piagent-core/benchmark/benchmark-resume-recovery.js +280 -10
  331. package/packages/piagent-core/benchmark/benchmark-runner-policy.js +88 -1
  332. package/packages/piagent-core/benchmark/benchmark-runtime-identity.js +50 -1
  333. package/packages/piagent-core/benchmark/benchmark-runtime.js +102 -10
  334. package/packages/piagent-core/benchmark/benchmark-safety-evidence.js +74 -0
  335. package/packages/piagent-core/benchmark/benchmark-service-tier.js +189 -0
  336. package/packages/piagent-core/benchmark/benchmark-stage-diagnostic.js +144 -128
  337. package/packages/piagent-core/benchmark/benchmark-suite-identity.js +264 -1
  338. package/packages/piagent-core/benchmark/benchmark-suite-runtime.js +4 -0
  339. package/packages/piagent-core/benchmark/benchmark-suite.js +211 -4
  340. package/packages/piagent-core/benchmark/benchmark-summary-support.js +30 -2
  341. package/packages/piagent-core/benchmark/benchmark-timing-contract.js +189 -0
  342. package/packages/piagent-core/benchmark/benchmark-timing-diagnostics.js +110 -139
  343. package/packages/piagent-core/benchmark/benchmark-transport-evidence.js +203 -0
  344. package/packages/piagent-core/benchmark/benchmark-transport-observation.js +147 -0
  345. package/packages/piagent-core/benchmark/benchmark-tree-identity.js +2 -1
  346. package/packages/piagent-core/benchmark/benchmark-usage.js +395 -33
  347. package/packages/piagent-core/benchmark/benchmark-workflow.js +136 -38
  348. package/packages/piagent-core/benchmark/fs5-pilot-protocol.js +21 -2
  349. package/packages/piagent-core/capabilities/runtime-integrity.js +3 -0
  350. package/packages/piagent-core/extensions/acceptance-api-baseline.js +24 -0
  351. package/packages/piagent-core/extensions/acceptance-assessment.js +153 -0
  352. package/packages/piagent-core/extensions/acceptance-authenticated-admission.d.ts +41 -0
  353. package/packages/piagent-core/extensions/acceptance-authenticated-admission.js +120 -0
  354. package/packages/piagent-core/extensions/acceptance-behavior-proof.js +264 -70
  355. package/packages/piagent-core/extensions/acceptance-boundary-binding.js +31 -0
  356. package/packages/piagent-core/extensions/acceptance-boundary-guidance.js +214 -0
  357. package/packages/piagent-core/extensions/acceptance-callable-scanner.js +244 -0
  358. package/packages/piagent-core/extensions/acceptance-clause-group.js +45 -0
  359. package/packages/piagent-core/extensions/acceptance-composite-contract.js +334 -0
  360. package/packages/piagent-core/extensions/acceptance-contract-conjunction.js +78 -0
  361. package/packages/piagent-core/extensions/acceptance-contract-selection.js +161 -0
  362. package/packages/piagent-core/extensions/acceptance-contract-semantics.js +211 -211
  363. package/packages/piagent-core/extensions/acceptance-declared-api.js +126 -0
  364. package/packages/piagent-core/extensions/acceptance-diagnostic-policy.ts +14 -0
  365. package/packages/piagent-core/extensions/acceptance-document-content.js +73 -0
  366. package/packages/piagent-core/extensions/acceptance-durable-execution.d.ts +59 -0
  367. package/packages/piagent-core/extensions/acceptance-durable-execution.js +139 -0
  368. package/packages/piagent-core/extensions/acceptance-error-classes.js +1 -1
  369. package/packages/piagent-core/extensions/acceptance-evidence-store.js +223 -0
  370. package/packages/piagent-core/extensions/acceptance-executable-evidence.js +490 -88
  371. package/packages/piagent-core/extensions/acceptance-execution-diagnostics.js +34 -0
  372. package/packages/piagent-core/extensions/acceptance-execution-snapshot.js +174 -0
  373. package/packages/piagent-core/extensions/acceptance-executor/.dockerignore +21 -0
  374. package/packages/piagent-core/extensions/acceptance-executor/Dockerfile +5 -0
  375. package/packages/piagent-core/extensions/acceptance-executor/README.md +103 -0
  376. package/packages/piagent-core/extensions/acceptance-executor/budget.mjs +54 -0
  377. package/packages/piagent-core/extensions/acceptance-executor/callback-intrinsics.mjs +126 -0
  378. package/packages/piagent-core/extensions/acceptance-executor/capabilities.mjs +127 -0
  379. package/packages/piagent-core/extensions/acceptance-executor/guest.mjs +285 -0
  380. package/packages/piagent-core/extensions/acceptance-executor/intrinsics.mjs +133 -0
  381. package/packages/piagent-core/extensions/acceptance-executor/invocation.mjs +39 -0
  382. package/packages/piagent-core/extensions/acceptance-executor/jobs.mjs +29 -0
  383. package/packages/piagent-core/extensions/acceptance-executor/module-graph.mjs +70 -0
  384. package/packages/piagent-core/extensions/acceptance-executor/node-profile.mjs +398 -0
  385. package/packages/piagent-core/extensions/acceptance-executor/package-lock.json +40 -0
  386. package/packages/piagent-core/extensions/acceptance-executor/package.json +10 -0
  387. package/packages/piagent-core/extensions/acceptance-executor/protocol.mjs +248 -0
  388. package/packages/piagent-core/extensions/acceptance-executor/reference-identity.mjs +61 -0
  389. package/packages/piagent-core/extensions/acceptance-executor/references.mjs +14 -0
  390. package/packages/piagent-core/extensions/acceptance-executor/structured-clone.mjs +53 -0
  391. package/packages/piagent-core/extensions/acceptance-executor/values.mjs +97 -0
  392. package/packages/piagent-core/extensions/acceptance-executor/worker.mjs +75 -0
  393. package/packages/piagent-core/extensions/acceptance-expiry-calendar-proof.js +162 -0
  394. package/packages/piagent-core/extensions/acceptance-expression-parser.js +155 -0
  395. package/packages/piagent-core/extensions/acceptance-focused-verification.js +40 -0
  396. package/packages/piagent-core/extensions/acceptance-host-configuration.js +337 -0
  397. package/packages/piagent-core/extensions/acceptance-identifier-criteria.js +25 -0
  398. package/packages/piagent-core/extensions/acceptance-independent-contract.js +209 -0
  399. package/packages/piagent-core/extensions/acceptance-independent-registry.js +106 -0
  400. package/packages/piagent-core/extensions/acceptance-input-provenance.js +40 -0
  401. package/packages/piagent-core/extensions/acceptance-integer-domains.js +322 -0
  402. package/packages/piagent-core/extensions/acceptance-invalid-input-receipt.js +20 -0
  403. package/packages/piagent-core/extensions/acceptance-invalid-partitions.js +26 -0
  404. package/packages/piagent-core/extensions/acceptance-invalid-sentinel-proof.js +477 -0
  405. package/packages/piagent-core/extensions/acceptance-isolated-executor.js +254 -0
  406. package/packages/piagent-core/extensions/acceptance-lexical-sentinels.js +130 -0
  407. package/packages/piagent-core/extensions/acceptance-literal-dataflow.js +735 -0
  408. package/packages/piagent-core/extensions/acceptance-local-binding.js +106 -0
  409. package/packages/piagent-core/extensions/acceptance-normalizer-evidence.js +719 -0
  410. package/packages/piagent-core/extensions/acceptance-obligations.js +75 -0
  411. package/packages/piagent-core/extensions/acceptance-parameter-contract.js +756 -0
  412. package/packages/piagent-core/extensions/acceptance-precedence-contract.js +572 -0
  413. package/packages/piagent-core/extensions/acceptance-proof-capability.js +26 -0
  414. package/packages/piagent-core/extensions/acceptance-receipt.js +139 -152
  415. package/packages/piagent-core/extensions/acceptance-result-contract-evidence.js +159 -0
  416. package/packages/piagent-core/extensions/acceptance-source-origin.js +214 -0
  417. package/packages/piagent-core/extensions/acceptance-state-machine-evidence.js +64 -8
  418. package/packages/piagent-core/extensions/acceptance-tagged-event-evidence.js +685 -0
  419. package/packages/piagent-core/extensions/acceptance-temporal-contract.js +756 -0
  420. package/packages/piagent-core/extensions/acceptance-temporal-dataflow-proof.js +618 -0
  421. package/packages/piagent-core/extensions/acceptance-test-binding-evidence.js +20 -2
  422. package/packages/piagent-core/extensions/acceptance-test-bindings.js +86 -0
  423. package/packages/piagent-core/extensions/acceptance-tuple-shapes.js +12 -0
  424. package/packages/piagent-core/extensions/context-engine.js +11 -6
  425. package/packages/piagent-core/extensions/criterion-context-pack.js +96 -4
  426. package/packages/piagent-core/extensions/failure-types.ts +2 -2
  427. package/packages/piagent-core/extensions/guard-types.ts +5 -1
  428. package/packages/piagent-core/extensions/piagent-guard.ts +197 -155
  429. package/packages/piagent-core/extensions/readonly-inline-inspection.ts +378 -0
  430. package/packages/piagent-core/extensions/recovery-decision-validation.ts +92 -0
  431. package/packages/piagent-core/extensions/shell-write-targets.js +15 -14
  432. package/packages/piagent-core/extensions/task-contract-view.js +4 -4
  433. package/packages/piagent-core/extensions/task-digest-migration.js +2 -2
  434. package/packages/piagent-core/extensions/task-journal.js +48 -3
  435. package/packages/piagent-core/extensions/task-runtime-audit.js +8 -2
  436. package/packages/piagent-core/extensions/task-state.js +74 -38
  437. package/packages/piagent-core/extensions/task-terminal-disposition.js +10 -0
  438. package/packages/piagent-core/extensions/trajectory-contract.ts +5 -0
  439. package/packages/piagent-core/extensions/verification-intelligence.js +60 -8
  440. package/packages/piagent-core/extensions/workflow-catalog.ts +98 -0
  441. package/packages/piagent-core/extensions/workspace-revision.js +48 -0
  442. package/packages/piagent-core/extensions/workspace-verification-snapshot.js +13 -0
  443. package/packages/piagent-core/package.json +3 -3
  444. package/packages/piagent-core/policies/base-policy.json +1 -0
  445. package/packages/piagent-core/runtime/context/adaptive-planner.ts +7 -3
  446. package/packages/piagent-core/runtime/hooks/agent-start-hook.ts +60 -59
  447. package/packages/piagent-core/runtime/hooks/agent-start-types.ts +48 -0
  448. package/packages/piagent-core/runtime/hooks/completion-hook.ts +76 -83
  449. package/packages/piagent-core/runtime/hooks/input-hook.ts +92 -7
  450. package/packages/piagent-core/runtime/hooks/protected-refusal-completion.ts +86 -0
  451. package/packages/piagent-core/runtime/hooks/session-hooks.ts +5 -2
  452. package/packages/piagent-core/runtime/hooks/session-start-hook.ts +50 -18
  453. package/packages/piagent-core/runtime/hooks/tool-result-hook.ts +53 -20
  454. package/packages/piagent-core/runtime/hooks/tool-result-metadata.ts +9 -0
  455. package/packages/piagent-core/runtime/hooks/tool-result-navigation.ts +36 -0
  456. package/packages/piagent-core/runtime/hooks/tool-result-retrieval.ts +42 -0
  457. package/packages/piagent-core/runtime/input/chat-images.ts +1 -1
  458. package/packages/piagent-core/runtime/inspection/activity-event-adapter.ts +1 -1
  459. package/packages/piagent-core/runtime/inspection/same-process-bridge-proof.ts +1 -1
  460. package/packages/piagent-core/runtime/inspection/task-handoff-history.ts +2 -2
  461. package/packages/piagent-core/runtime/inspection/tool-failure-classification.ts +49 -8
  462. package/packages/piagent-core/runtime/inspection/webui-snapshot.ts +61 -15
  463. package/packages/piagent-core/runtime/inspection/workspace-file-reader.ts +2 -132
  464. package/packages/piagent-core/runtime/model/provider-wire-fingerprint.ts +20 -0
  465. package/packages/piagent-core/runtime/model/service-tier-runtime.ts +242 -0
  466. package/packages/piagent-core/runtime/policy/source-worktree-transaction.ts +75 -14
  467. package/packages/piagent-core/runtime/product/activity-inspector.ts +6 -3
  468. package/packages/piagent-core/runtime/product/edit-verifier-timing.ts +26 -0
  469. package/packages/piagent-core/runtime/product/efficiency-metrics.ts +12 -7
  470. package/packages/piagent-core/runtime/product/operator-projections.ts +8 -3
  471. package/packages/piagent-core/runtime/product/task-usage-hooks.ts +78 -0
  472. package/packages/piagent-core/runtime/product/task-usage.ts +104 -0
  473. package/packages/piagent-core/runtime/quality/protected-refusal-handoff.ts +35 -0
  474. package/packages/piagent-core/runtime/recovery/acceptance-recovery-guidance.ts +21 -0
  475. package/packages/piagent-core/runtime/recovery/continuation-budget.ts +11 -2
  476. package/packages/piagent-core/runtime/recovery/diagnostic-delivery.ts +61 -0
  477. package/packages/piagent-core/runtime/recovery/handoff-projection.ts +192 -57
  478. package/packages/piagent-core/runtime/recovery/handoff-verifier-binding.ts +24 -0
  479. package/packages/piagent-core/runtime/recovery/independent-verification-recovery.ts +79 -0
  480. package/packages/piagent-core/runtime/recovery/recovery-policy.ts +27 -39
  481. package/packages/piagent-core/runtime/recovery/resume-state.ts +8 -5
  482. package/packages/piagent-core/runtime/registration/activity-inspector-command.ts +2 -1
  483. package/packages/piagent-core/runtime/registration/context-commands.ts +12 -8
  484. package/packages/piagent-core/runtime/registration/operator-catalogs.ts +4 -9
  485. package/packages/piagent-core/runtime/registration/policy-tools.ts +5 -3
  486. package/packages/piagent-core/runtime/registration/session-commands.ts +9 -7
  487. package/packages/piagent-core/runtime/registration/session-wait-tool.ts +54 -0
  488. package/packages/piagent-core/runtime/registration/task-completion-tools.ts +27 -11
  489. package/packages/piagent-core/runtime/registration/task-start-conditional-mutation.ts +45 -0
  490. package/packages/piagent-core/runtime/registration/task-start-guidance.ts +5 -2
  491. package/packages/piagent-core/runtime/registration/task-start-tool.ts +23 -23
  492. package/packages/piagent-core/runtime/registration/workflow-commands.ts +64 -93
  493. package/packages/piagent-core/runtime/session/completion-signals.ts +23 -0
  494. package/packages/piagent-core/runtime/session/message-signals.ts +6 -22
  495. package/packages/piagent-core/runtime/session/retrieval-evidence-runtime.ts +188 -0
  496. package/packages/piagent-core/runtime/session/runtime-state.ts +29 -35
  497. package/packages/piagent-core/runtime/session/system-prompt.ts +3 -3
  498. package/packages/piagent-core/runtime/session/uncertain-send-continuation.ts +231 -0
  499. package/packages/piagent-core/runtime/session/usage.ts +4 -3
  500. package/packages/piagent-core/runtime/tools/apply-patch-tool.ts +6 -6
  501. package/packages/piagent-core/runtime/tools/phase-tool-runtime.ts +1 -1
  502. package/packages/piagent-core/runtime/tools/phase-tools.ts +3 -2
  503. package/packages/piagent-core/runtime/tools/session-wait.ts +42 -0
  504. package/packages/piagent-core/runtime/tools/tool-groups.ts +10 -3
  505. package/packages/piagent-core/runtime/trajectory/trajectory-runtime.ts +192 -5
  506. package/packages/piagent-core/runtime/trajectory/trajectory-types.ts +3 -2
  507. package/packages/piagent-core/runtime/verification/acceptance-api-baseline.js +488 -0
  508. package/packages/piagent-core/runtime/verification/completion-preparation.ts +22 -0
  509. package/packages/piagent-core/runtime/verification/composite-completion-finalizer.ts +105 -0
  510. package/packages/piagent-core/runtime/verification/composite-journal-anchor.ts +181 -0
  511. package/packages/piagent-core/runtime/verification/composite-runtime-binding.ts +76 -0
  512. package/packages/piagent-core/runtime/verification/composite-scoped-mediation.ts +318 -0
  513. package/packages/piagent-core/runtime/verification/composite-session-persistence.ts +175 -0
  514. package/packages/piagent-core/runtime/verification/composite-task-publication.ts +273 -0
  515. package/packages/piagent-core/runtime/verification/exact-verifier-reuse.ts +11 -11
  516. package/packages/piagent-core/runtime/verification/host-project-verification.ts +71 -0
  517. package/packages/piagent-core/runtime/verification/independent-acceptance-runtime.ts +500 -0
  518. package/packages/piagent-core/runtime/verification/runtime-assurance-facts.ts +500 -0
  519. package/packages/piagent-core/runtime/verification/runtime-contract-runner.ts +107 -0
  520. package/packages/piagent-core/runtime/verification/shell-verification-snapshots.ts +56 -0
  521. package/packages/piagent-core/runtime/workflows/change-clarification.ts +61 -0
  522. package/packages/piagent-core/runtime/workflows/input-routing.ts +21 -14
  523. package/packages/piagent-core/runtime/workflows/runtime-intake-compaction.ts +44 -7
  524. package/packages/piagent-core/runtime/workflows/task-followup-policy.ts +163 -0
  525. package/packages/piagent-core/runtime/workflows/task-intake.ts +221 -242
  526. package/packages/piagent-core/runtime/workflows/task-repair-intent.ts +67 -0
  527. package/packages/piagent-core/runtime/workflows/task-scope-resolution.ts +83 -0
  528. package/packages/piagent-core/runtime/workflows/webui-runtime-command.ts +5 -2
  529. package/packages/piagent-core/runtime/workflows/webui-workflow.ts +39 -32
  530. package/packages/piagent-core/runtime/workflows/workflow-follow-up.ts +33 -0
  531. package/packages/piagent-core/security/workspace-file-reader.ts +132 -0
  532. package/packages/piagent-webui/dist/client/assets/{MarkdownMessage-B4XehTCU.js → MarkdownMessage-DGk34zJT.js} +1 -1
  533. package/packages/piagent-webui/dist/client/assets/{index-BV-_03yl.css → index-DVahUVWy.css} +1 -1
  534. package/packages/piagent-webui/dist/client/assets/index-DiKRmCEP.js +176 -0
  535. package/packages/piagent-webui/dist/client/index.html +2 -2
  536. package/packages/piagent-webui/extension/dispatch-user-entry.ts +13 -0
  537. package/packages/piagent-webui/extension/piagent-webui.ts +10 -2
  538. package/packages/piagent-webui/extension/review-controller.ts +29 -6
  539. package/packages/piagent-webui/extension/same-session-bridge.ts +6 -7
  540. package/packages/piagent-webui/extension/session-stream-adapter.ts +60 -11
  541. package/packages/piagent-webui/extension/source-mutation-controller.ts +29 -3
  542. package/packages/piagent-webui/extension/source-open-controller.ts +29 -7
  543. package/packages/piagent-webui/extension/source-revert-controller.ts +26 -3
  544. package/packages/piagent-webui/gateway/gateway-events.ts +22 -5
  545. package/packages/piagent-webui/gateway/gateway-service.ts +7 -2
  546. package/packages/piagent-webui/gateway/gateway-session-stream.ts +141 -19
  547. package/packages/piagent-webui/gateway/rpc-ui-context.ts +34 -9
  548. package/packages/piagent-webui/gateway/runtime-command-controller.ts +46 -6
  549. package/packages/piagent-webui/gateway/runtime-session-controls.ts +17 -2
  550. package/packages/piagent-webui/gateway/session-catalog.ts +9 -3
  551. package/packages/piagent-webui/gateway/session-command-controller.ts +29 -9
  552. package/packages/piagent-webui/gateway/session-effective-options.ts +2 -9
  553. package/packages/piagent-webui/gateway/session-inspection-registry.ts +11 -2
  554. package/packages/piagent-webui/gateway/session-operation-settlement.ts +28 -0
  555. package/packages/piagent-webui/gateway/session-prompt-dispatch.ts +37 -0
  556. package/packages/piagent-webui/gateway/session-runtime-close.ts +36 -0
  557. package/packages/piagent-webui/gateway/session-runtime-factory.ts +183 -6
  558. package/packages/piagent-webui/gateway/session-runtime-ownership.ts +48 -0
  559. package/packages/piagent-webui/gateway/session-runtime-state.ts +24 -0
  560. package/packages/piagent-webui/gateway/session-runtime-supervisor.ts +114 -114
  561. package/packages/piagent-webui/server/core-inspection-provider.ts +73 -14
  562. package/packages/piagent-webui/server/loopback-server.ts +9 -7
  563. package/packages/piagent-webui/server/terminal-delivery-receipt.ts +144 -0
  564. package/packages/piagent-webui/server/transcript-projection.ts +65 -12
  565. package/packages/piagent-webui/shared/message-correlation.ts +25 -0
  566. package/schemas/approved-host-contracts.schema.json +973 -0
  567. package/schemas/benchmark-attempt-outcome.schema.json +303 -0
  568. package/schemas/benchmark-independent-verification-plan.schema.json +34 -0
  569. package/schemas/composite-criterion.schema.json +788 -0
  570. package/schemas/contract-family-library.schema.json +28 -0
  571. package/schemas/contract-selection-recipe.schema.json +31 -0
  572. package/schemas/failure-evidence.schema.json +2 -2
  573. package/schemas/helper-request.schema.json +16 -4
  574. package/schemas/host-contract-plan.schema.json +25 -0
  575. package/schemas/piagent-webui/gateway-protocol-v1.schema.json +16 -2
  576. package/schemas/piagent-webui/runtime-command-v1.schema.json +26 -3
  577. package/schemas/piagent-webui/runtime-event-v2.schema.json +32 -1
  578. package/schemas/piagent-webui/session-live-state-v1.schema.json +2 -0
  579. package/schemas/piagent-webui/snapshot-v1.schema.json +3 -0
  580. package/schemas/piagent-webui/source-change-v1.schema.json +12 -0
  581. package/schemas/piagent-webui/transcript-v1.schema.json +2 -1
  582. package/schemas/public-contracts/codex-mcp-metadata-v1.schema.json +206 -0
  583. package/schemas/public-contracts/codex-mcp-metadata-v2.schema.json +228 -0
  584. package/schemas/public-contracts/codex-mcp-metadata-v3.schema.json +233 -0
  585. package/schemas/public-contracts/revocation-v1.schema.json +87 -0
  586. package/schemas/public-contracts/subscription-contract-v1.schema.json +76 -0
  587. package/schemas/scoped-project-verification-receipt-v2.schema.json +83 -0
  588. package/schemas/scoped-project-verification-receipt-v3.schema.json +295 -0
  589. package/schemas/scoped-verification-receipt-v1.schema.json +76 -0
  590. package/schemas/task-contract.schema.json +30 -0
  591. package/scripts/approve-independent-verification.mjs +57 -0
  592. package/scripts/benchmark-arm-observer.mjs +320 -0
  593. package/scripts/benchmark-budget-ipc.mjs +34 -0
  594. package/scripts/benchmark-budget-launcher.mjs +91 -0
  595. package/scripts/benchmark-budget-processes.mjs +133 -0
  596. package/scripts/benchmark-budget-publication.mjs +228 -0
  597. package/scripts/benchmark-budget-runtime.mjs +136 -0
  598. package/scripts/benchmark-candidate-ablation.mjs +265 -0
  599. package/scripts/benchmark-codex-journey.mjs +406 -0
  600. package/scripts/benchmark-independent-verification.mjs +628 -0
  601. package/scripts/benchmark-journey-outcome.mjs +92 -0
  602. package/scripts/benchmark-production-v3-human-review.mjs +192 -0
  603. package/scripts/benchmark-public-input-catalog.mjs +158 -0
  604. package/scripts/benchmark-registered-plan-author.mjs +355 -0
  605. package/scripts/benchmark-registered-plan-recipe-support.mjs +85 -0
  606. package/scripts/benchmark-registered-plan-recipes-backend.mjs +165 -0
  607. package/scripts/benchmark-registered-plan-recipes-data.mjs +164 -0
  608. package/scripts/benchmark-registered-plan-recipes-platform.mjs +165 -0
  609. package/scripts/benchmark-runner-completion.mjs +133 -0
  610. package/scripts/benchmark-runner-configuration.mjs +159 -0
  611. package/scripts/benchmark-runner-core.mjs +217 -388
  612. package/scripts/benchmark-runner-finalization.mjs +140 -27
  613. package/scripts/benchmark-runner-provider-boundary.mjs +44 -0
  614. package/scripts/benchmark-runner-schedule.mjs +256 -0
  615. package/scripts/benchmark-runner-support.mjs +136 -4
  616. package/scripts/benchmark-runner.mjs +95 -18
  617. package/scripts/benchmark-scoped-broker-custody.mjs +483 -0
  618. package/scripts/benchmark-scoped-docs-verifier.mjs +203 -0
  619. package/scripts/benchmark-scoped-frozen-qualification.mjs +676 -0
  620. package/scripts/benchmark-scoped-pi-router.mjs +196 -0
  621. package/scripts/benchmark-scoped-project-verification-receipt.mjs +49 -0
  622. package/scripts/benchmark-scoped-project-verifier.mjs +461 -0
  623. package/scripts/benchmark-scoped-session-custody.mjs +599 -0
  624. package/scripts/benchmark-scoped-session-factory.mjs +342 -0
  625. package/scripts/benchmark-scoped-tool-broker.mjs +523 -0
  626. package/scripts/benchmark-scoped-verification-supervisor.mjs +773 -0
  627. package/scripts/benchmark-session-evaluator.mjs +169 -0
  628. package/scripts/benchmark-session-provider-boundary.mjs +62 -0
  629. package/scripts/benchmark-session-usage.mjs +28 -0
  630. package/scripts/benchmark-session.mjs +343 -50
  631. package/scripts/benchmark-webui-journey.mjs +678 -0
  632. package/scripts/check-public-wording.mjs +46 -0
  633. package/scripts/fs4-readiness-evaluation.mjs +7 -1
  634. package/scripts/phase-tools-evaluation.mjs +1 -0
  635. package/scripts/pi-auto.sh +7 -1
  636. package/scripts/pi-usage-history.mjs +201 -11
  637. package/scripts/piagent-cli.mjs +8 -0
  638. package/scripts/private-holdout-readiness.mjs +7 -1
  639. package/scripts/public-evaluation-exposure.mjs +140 -0
  640. package/scripts/select-independent-verification.mjs +62 -0
  641. package/scripts/typescript-loader.mjs +135 -1
  642. package/scripts/update-global.mjs +6 -7
  643. package/scripts/verify-local.sh +36 -55
  644. package/scripts/verify-release-identity.mjs +5 -3
  645. package/packages/piagent-webui/dist/client/assets/index-CgOEyRPG.js +0 -176
@@ -0,0 +1,194 @@
1
+ # Controlled comparison metadata contract v3
2
+ <!-- language: en -->
3
+
4
+ Status: frozen for benchmark measurement
5
+
6
+ Contract ID: `piagent-codex-mcp-metadata-v3`
7
+
8
+ Machine-readable schema: `schemas/public-contracts/codex-mcp-metadata-v3.schema.json`
9
+
10
+ ## Basis and scope
11
+
12
+ This contract covers only the optional JSON-RPC `params._meta` object received
13
+ by the scoped benchmark MCP broker. It was derived before a replacement
14
+ measurement from:
15
+
16
+ - pinned comparison-client source commit
17
+ `f70e26c29ccb731e22d1104de550b1b9594d7070`;
18
+ - comparison-client release `0.151.0-alpha.7.2`;
19
+ - an exact clean-workspace native `tools/call` frame with SHA-256
20
+ `b2405a3aabb2814f91dd40f39cf68e00339491a5e6603f438c512b9be77e651d`;
21
+ - an exact dirty-workspace resumed `tools/call` frame with SHA-256
22
+ `2775abccf80bd44064bec9220a2e9df4734248d324f36b1a81d9f3a2c7695aa3`.
23
+
24
+ Contracts v1 and v2 remain immutable historical contracts. Contract v1 omitted
25
+ the native `workspaces` turn field. Contract v2 accepted workspace states with
26
+ only `has_changes`; it therefore fail-closed when the pinned client supplied
27
+ the Git observation `latest_git_commit_hash`.
28
+
29
+ Contract v3 adds only that optional bounded, zero-authority Git observation to
30
+ each workspace state. It does not expand the broker tool surface or change any
31
+ PASS/FAIL criterion.
32
+
33
+ Candidate and comparison arms must use the same contract version, scoped tool
34
+ definitions, approval setting, sandbox mode, and broker source closure before a
35
+ measurement is admissible.
36
+
37
+ ## Authority rule
38
+
39
+ All accepted metadata is untrusted and has **no authority**. After validation,
40
+ the broker records a bounded `codex-mcp-turn-observation-v1` transport
41
+ observation, then removes `_meta` before validating business parameters or
42
+ invoking the kernel. Metadata cannot:
43
+
44
+ - select a tool, material, verifier, image, path, nonce, or permission;
45
+ - satisfy identity, replay, cancellation, deadline, receipt, cleanup, or
46
+ completion checks;
47
+ - alter a request digest or journaled kernel reservation;
48
+ - authorize a write or a PASS result.
49
+
50
+ The signed transport journal commits the original frame bytes, the allow/deny
51
+ decision, and the bounded observation. It does not copy workspace paths or
52
+ promote metadata values into broker identity, admission, or PASS authority.
53
+
54
+ ## Allowed fields
55
+
56
+ For `initialize`, `ping`, and `tools/list`, only `progressToken` is
57
+ allowed. It is a safe integer or a well-formed UTF-8 string of at most 160
58
+ bytes.
59
+
60
+ For `tools/call`, the only allowed keys are:
61
+
62
+ - `progressToken`;
63
+ - `callId`;
64
+ - `threadId`;
65
+ - `itemId`;
66
+ - `x-codex-turn-metadata`;
67
+ - `codex/sandbox-state-meta`.
68
+
69
+ If any Codex-specific key is present, `callId`, `threadId`, `itemId`, and
70
+ `x-codex-turn-metadata` must all be present. The three identity-like strings
71
+ match `[A-Za-z0-9_.:-]{1,160}`. `threadId` must equal the nested
72
+ `thread_id`; this is a consistency check only.
73
+
74
+ The complete metadata object is limited to 65,536 UTF-8 bytes.
75
+
76
+ ### Turn metadata
77
+
78
+ `x-codex-turn-metadata` has no additional properties. These fields are
79
+ required:
80
+
81
+ - string IDs: `session_id`, `thread_id`, `turn_id`, and `model`;
82
+ - non-negative safe integer: `turn_started_at_unix_ms`;
83
+ - booleans: `node_repl_disabled`, `auto_review_enabled`, and
84
+ `node_repl_auto_review_required`;
85
+ - `thread_source: "user"`;
86
+ - a bounded non-empty `sandbox` string;
87
+ - `sandbox_mode: "workspace-write"`;
88
+ - `workspaces`: one to sixteen canonical absolute workspace paths, each
89
+ mapped to an exact object containing required `has_changes: boolean` and
90
+ optional `latest_git_commit_hash`, a lowercase 40- or 64-hex Git object ID.
91
+
92
+ `reasoning_effort` is optional and is one of `none`, `minimal`, `low`,
93
+ `medium`, `high`, `xhigh`, `max`, or `ultra`.
94
+
95
+ The workspace map is observational only. It is size-bounded, hashed as part of
96
+ the complete metadata, discarded before kernel admission, and cannot grant
97
+ path access. Both initial and resumed comparison invocations must independently
98
+ pin `workspace-write`; inherited or default resume permissions are not
99
+ accepted.
100
+
101
+ Fields emitted by other Codex modes, plugins, apps, subagents, or future builds
102
+ are not implicitly accepted. A new field requires another reviewed contract
103
+ version.
104
+
105
+ ### Sandbox state
106
+
107
+ `codex/sandbox-state-meta` is optional. The broker does not advertise the
108
+ capability, but validates the pinned source shape if supplied:
109
+
110
+ - exact top-level fields: `permissionProfile`, `codexLinuxSandboxExe`,
111
+ `sandboxCwd`, and `useLegacyLandlock`;
112
+ - `sandboxCwd` is a bounded `file:` URI;
113
+ - `codexLinuxSandboxExe` is null or a canonical absolute path;
114
+ - `useLegacyLandlock` is boolean;
115
+ - `permissionProfile` is exactly one pinned `managed`, `disabled`, or
116
+ `external` variant;
117
+ - managed filesystem entries are bounded to 64 and use only pinned path,
118
+ access, and missing-path variants.
119
+
120
+ This state is discarded with the rest of `_meta`; it cannot prove the actual
121
+ sandbox.
122
+
123
+ ## Valid native call shape
124
+
125
+ ```json
126
+ {
127
+ "jsonrpc": "2.0",
128
+ "id": 2,
129
+ "method": "tools/call",
130
+ "params": {
131
+ "_meta": {
132
+ "callId": "call_e2_read",
133
+ "itemId": "fc_01a05acb-0762-76b3-90ad-f2d79b4afc29",
134
+ "progressToken": 1,
135
+ "threadId": "01a05acb-06e2-7c92-8f08-77358d771975",
136
+ "x-codex-turn-metadata": {
137
+ "session_id": "01a05acb-06e2-7c92-8f08-77358d771975",
138
+ "thread_id": "01a05acb-06e2-7c92-8f08-77358d771975",
139
+ "turn_started_at_unix_ms": 1788229650265,
140
+ "turn_id": "01a05acb-0758-7772-97cb-2b83d691d176",
141
+ "workspaces": {
142
+ "/workspace": {
143
+ "latest_git_commit_hash": "b47c3ec0460f1b7716531968766aa2a46bf50e1e",
144
+ "has_changes": false
145
+ }
146
+ },
147
+ "node_repl_disabled": false,
148
+ "thread_source": "user",
149
+ "sandbox": "seatbelt",
150
+ "sandbox_mode": "workspace-write",
151
+ "auto_review_enabled": false,
152
+ "node_repl_auto_review_required": false,
153
+ "model": "gpt-5.6-luna",
154
+ "reasoning_effort": "medium"
155
+ }
156
+ },
157
+ "name": "scoped_read",
158
+ "arguments": {"materialId": "input"}
159
+ }
160
+ }
161
+ ```
162
+
163
+ Missing, relative, empty, oversized, or over-count workspace maps; non-boolean
164
+ `has_changes`; malformed or non-lowercase `latest_git_commit_hash`; other
165
+ nested extra fields; read-only resumes; partial Codex bundles;
166
+ mismatched thread IDs; wrong types; and other extra fields are invalid.
167
+
168
+ ## Error and lifecycle behavior
169
+
170
+ Invalid metadata produces internal reason `mcp-invalid-metadata`. For a
171
+ request with an ID, the broker returns JSON-RPC error `-32602` with public
172
+ message `request-rejected`, records the denial, performs no kernel reservation
173
+ or effect, fail-closes the transport, and durably appends `transport-end`
174
+ followed by `end`.
175
+
176
+ Replay is enforced by the one-use JSON-RPC request ID and by single-use signed
177
+ broker custody. `callId` is deliberately not a replay authority.
178
+ Cancellation is bound to the exact in-flight JSON-RPC request ID. Deadlines,
179
+ cleanup, receipts, and reconciliation remain host/supervisor decisions.
180
+
181
+ ## Required negative coverage
182
+
183
+ Before exact-binary E2 or benchmark measurement, the contract suite must cover:
184
+
185
+ - extra metadata and nested workspace fields;
186
+ - optional 40- and 64-hex Git observations plus malformed, uppercase, and
187
+ wrong-length rejection;
188
+ - missing, relative, malformed, oversized, and over-count workspace maps;
189
+ - wrong metadata types and read-only resume drift;
190
+ - duplicate JSON-RPC request replay and exact-request cancellation;
191
+ - transport and verification deadlines;
192
+ - normal EOF, quiescent SIGTERM, interrupted shutdown, and restart refusal;
193
+ - host-crash reconciliation when an eligible real verifier path is available.
194
+
@@ -0,0 +1,85 @@
1
+ # Public contract addendum v2 — approved input schemas
2
+ <!-- language: en -->
3
+
4
+ The operator approved DA2 on 2026-08-31. This file materializes the revocation and subscription-contract portions of that approved revision. The worker, composite evidence and new benchmark registration remain inactive until their separate implementation and qualification gates pass. This document alone does not approve a specific executable plan or issue a PASS receipt.
5
+
6
+ Original public suites, fixture implementations and historical results remain unchanged. These versioned schemas label existing positional function arguments using a JSON wrapper; they do not replace the exported APIs. The source-based requirements and explicit schema choices are distinguished below. JavaScript invariants supplement structural JSON Schema validation.
7
+
8
+ Before any fresh measurement, the complete approved public revision, examples, API profile and noncode rubrics must be available symmetrically to every measured arm, with fresh request/criterion/configuration digests and independent evaluator compatibility. No hidden evaluator is used to infer these choices. Missing coverage or unknown compatibility blocks dispatch; it does not loosen a PASS condition.
9
+
10
+ ## 1. Revocation predicate
11
+
12
+ **Sourced:** [benchmarks/production-v2/prompts/revoked-session-cache.md](../benchmarks/production-v2/prompts/revoked-session-cache.md) requires matching non-empty tenant/user/capability identifiers, matching permission revision, evaluation not in the future, strictly unexpired time, revocation at/before now denying use, finite integer time/revision validation, TypeError, nonmutation and configured verification. **Seed-interface clues only:** [benchmarks/production-v2/project/src/backend/revocation-cache.js](../benchmarks/production-v2/project/src/backend/revocation-cache.js) exposes `isCachedAccessUsable(entry, request)`, `userId`, `request.now`, `entry.expiresAt`; the faulty comparison is not an oracle.
13
+
14
+ **DA2-approved schema:** [JSON Schema](../schemas/public-contracts/revocation-v1.schema.json). Both arguments have `tenantId`, `userId`, `capabilityId`, `permissionRevision`. Entry additionally requires `evaluatedAt`, `expiresAt`; request requires `now`, `revokedAt`. No aliases are accepted for required fields. The JSON wrapper labels existing positional arguments; it is not a changed function API.
15
+
16
+ ```json
17
+ {"entry":{"tenantId":"t1","userId":"u1","capabilityId":"read","permissionRevision":7,"evaluatedAt":90,"expiresAt":110},"request":{"tenantId":"t1","userId":"u1","capabilityId":"read","permissionRevision":7,"now":100,"revokedAt":null}}
18
+ ```
19
+
20
+ Expected return: `true`. After complete validation, the exact predicate is:
21
+
22
+ ```js
23
+ entry.tenantId === request.tenantId &&
24
+ entry.userId === request.userId &&
25
+ entry.capabilityId === request.capabilityId &&
26
+ entry.permissionRevision === request.permissionRevision &&
27
+ entry.evaluatedAt <= request.now &&
28
+ request.now < entry.expiresAt &&
29
+ (request.revokedAt === null || request.revokedAt > request.now)
30
+ ```
31
+
32
+ Approved boundary choices: identifiers are literal strings with `length > 0`, compared case-sensitively without trim/case folding/Unicode normalization; a single space is therefore valid and distinct. Required fields must be own data properties of ordinary JSON-compatible records; arrays/null are not records. Extra JSON metadata properties are ignored. Numeric fields require `typeof v === "number" && Number.isFinite(v) && Number.isInteger(v)`; no coercion, Date conversion, sign restriction, safe-integer restriction or hidden clock read. `-0` equals `0`; negative revisions/times remain valid because the public requirement says finite integer, not nonnegative. Times use one caller-supplied unit; no calendar/epoch range is invented. Neither `expiresAt >= evaluatedAt` nor a maximum cache age is added. `revokedAt` is required; missing/undefined is not null.
33
+
34
+ Canonical validation order: entry shape → request shape → entry identifiers (tenant/user/capability) → request identifiers → entry revision → request revision → entry evaluatedAt → entry expiresAt → request now → request revokedAt → predicate. Any malformed value is **TypeError**, including when an earlier identity mismatch would otherwise return false. Message/stack/first-field diagnostics are not normative. Multiple malformed fields have the same observable class; these inert-data checks do not certify accessor evaluation order.
35
+
36
+ | Change to the valid example | Expected |
37
+ |---|---|
38
+ | entry.evaluatedAt=100 | true (evaluation equality) |
39
+ | entry.evaluatedAt=101 | false |
40
+ | entry.expiresAt=100 | false (strict expiry) |
41
+ | request.revokedAt=100 or99 | false |
42
+ | request.revokedAt=101 | true |
43
+ | request.tenantId/userId/capabilityId differs, or revision8 | false, one dimension at a time |
44
+ | request.now="100",100.5,NaN,Infinity,undefined | TypeError |
45
+ | request.revokedAt omitted, or "100" | TypeError |
46
+ | mismatched tenant plus malformed revision | TypeError, never early false |
47
+ | both revisions=-1 and otherwise valid example | true |
48
+ | entry=null/array; empty required identifier | TypeError |
49
+
50
+ Required finite checks cover every listed field independently, conjunction/short-circuit negatives, equal/±1 boundaries, large represented finite integers, explicit special-number/undefined negative probes, ignored own metadata, and unchanged input snapshots on return **and throw**. They do not certify arbitrary proxies/accessors/prototypes, arbitrary graph sizes, thread races, storage isolation or live authorization. The schema is not an execution receipt; actual bounded-plan qualification remains required.
51
+
52
+ ## 2. Subscription contract comparison
53
+
54
+ **Sourced:** [benchmarks/production-v2/prompts/backend-frontend-contract-sync.md](../benchmarks/production-v2/prompts/backend-frontend-contract-sync.md) defines the five output fields, backend-minus-frontend missing values, frontend-only extra statuses, unique non-empty status/field strings, input-order independence, UTF-8 byte sorting, positive equal versions, TypeError for malformed/duplicate declarations and nonmutation. **Seed-interface clues only:** [benchmarks/production-v2/project/src/fullstack/contract-sync.js](../benchmarks/production-v2/project/src/fullstack/contract-sync.js) establishes `statuses` and the output names, but not the input field/version property names.
55
+
56
+ **DA2-approved schema:** [JSON Schema](../schemas/public-contracts/subscription-contract-v1.schema.json). Each argument is an ordinary record with required own `statuses: string[]`, `fields: string[]`, `version: number`. Arrays may be empty and must be dense; declarations are unique within each array. Unknown JSON metadata keys are ignored. `fields` and `version` are the chosen public names; aliases do not satisfy missing properties.
57
+
58
+ Approved boundary choices: version must be a finite positive integer. Missing/non-number/nonfinite/fractional/zero/negative versions are malformed and throw **TypeError**. For valid contracts, `versionMismatch = backend.version !== frontend.version`. This explicitly resolves the alternative interpretation that invalid versions merely produce `versionMismatch: true`; it is a decision, not something proven by the seed. No safe-integer limit is silently introduced.
59
+
60
+ Declaration strings are literal, non-empty and well-formed Unicode scalar sequences; do not trim, fold case or normalize NFC/NFD. A whitespace-only declaration is valid. Reject lone UTF-16 surrogates with TypeError so different strings cannot collapse to identical UTF-8 replacement bytes. This Unicode validity rule is an explicit approved addition and supplements the structural JSON Schema. Compare duplicates by exact string equality. Sort by unsigned bytes of the UTF-8 encoding, not locale collation or JavaScript's default UTF-16 sort. Strings containing `__proto__` or `constructor` are ordinary declarations, not object keys to execute.
61
+
62
+ ```js
63
+ missingStatuses = sortUtf8(backend.statuses minus frontend.statuses);
64
+ extraStatuses = sortUtf8(frontend.statuses minus backend.statuses);
65
+ missingFields = sortUtf8(backend.fields minus frontend.fields);
66
+ versionMismatch = backend.version !== frontend.version;
67
+ compatible = !missingStatuses.length && !extraStatuses.length &&
68
+ !missingFields.length && !versionMismatch;
69
+ ```
70
+
71
+ Return a newly allocated ordinary object containing exactly those five fields. The lists are arrays of strings. Extra frontend fields do not create a mismatch or an `extraFields` output. Do not mutate input arrays/records, even while sorting or before throwing. No independent nested-list identity requirement is added: public text only requires a new outer object and no input mutation.
72
+
73
+ Canonical validation order: backend record → frontend record → backend version → frontend version → backend statuses (shape, each element, then duplicates) → frontend statuses → backend fields → frontend fields → set differences/sort/output. All shape/type/duplicate errors are **TypeError**; error messages/stack are not graded. Validate even declarations whose omission would not change compatibility.
74
+
75
+ | Inputs (compact) | Expected |
76
+ |---|---|
77
+ | B={statuses:["active","trial"],fields:["id","plan"],version:1}, F={statuses:["trial","active"],fields:["plan","id","debug"],version:1} | {compatible:true,missingStatuses:[],extraStatuses:[],missingFields:[],versionMismatch:false} |
78
+ | Same B; F={statuses:["paused","active"],fields:["id"],version:2} | {compatible:false,missingStatuses:["trial"],extraStatuses:["paused"],missingFields:["plan"],versionMismatch:true} |
79
+ | Both empty lists, version1 | compatible:true |
80
+ | B status "é", F status "é" (decomposed) | missing["é"],extra["é"]; no normalization |
81
+ | B statuses ["😀","é","z","\uE000"], F statuses[] | missingStatuses order ["z","é","\uE000","😀"] |
82
+ | Duplicate in any one of the four arrays | TypeError, not deduplication |
83
+ | fields missing, version0/null/"1"/1.5, a null declaration, sparse array, lone surrogate | TypeError |
84
+
85
+ Required finite checks cover all five outputs independently, each malformed property/duplicate list, empty and reordered lists, byte-order/case/normalization distinctions, ignored metadata, new outer-result identity and complete argument snapshots on return/throw. These are bounded ordinary-data checks, not universal Unicode/JavaScript reflection assurance.
@@ -0,0 +1,116 @@
1
+ # Public benchmark contract addendum v3
2
+ <!-- language: en -->
3
+
4
+ Status: frozen for provider-free implementation under Plan `PBR-2026-09-03`. This document does not authorize a provider call or a release. The canonical machine constants live in `PRODUCTION_V3_PUBLIC_CONTRACT`; the attempt structure lives in `benchmark-attempt-outcome.schema.json`, with arithmetic and cross-field invariants enforced by `validateBenchmarkAttemptOutcomeV3`.
5
+
6
+ ## 1. Experiment and claim matrix
7
+
8
+ | Track | Comparison | Supported claim | Claim explicitly unavailable |
9
+ |---|---|---|---|
10
+ | T0 | Provider-free fixtures and runtime checks | Parser, lifecycle, identity and grader contract conformance | Model quality or token saving |
11
+ | T1 | Piagent product vs stock Codex command-line client on public S108 | End-to-end public-regression result for the 27 declared scenarios | Universal coding quality, member production behavior or causal attribution to one Pi feature |
12
+ | T2 | Frozen Piagent defaults vs a separately frozen Pi ablation | Causal mechanism claim within that experiment | Competitive product superiority |
13
+ | T3 | Family- and repository-disjoint private holdout | Bounded private generalization | Member production reliability |
14
+ | T4 | Consented member pilot | Observed production workload, UX, reliability and cost distribution | Universal future-user behavior |
15
+
16
+ `production-v3` declares `claimTier=public-regression` and `familyDisjointSplit=false`. Therefore T1 never enables a universal, private-generalization or member-production claim. T2–T4 require separate data, identities and reports; their records are not merged into public S108.
17
+
18
+ ## 2. Primary baseline and suite lineage
19
+
20
+ The primary T1 baseline is a supported stock Codex command-line client installation, not the earlier custom external-MCP-only executable. A custom fork may appear only in a separately labeled diagnostic appendix. The stock identity must bind its executable, version, installation root and required sibling/support closure. The benchmark uses an isolated `CODEX_HOME`, carries only required authentication, ignores user configuration and rules, and runs with `workspace-write` sandboxing.
21
+
22
+ This contract follows the official [Codex non-interactive mode documentation](https://learn.chatgpt.com/docs/non-interactive-mode): `codex exec --json` emits a JSONL stream including `thread.started`, `turn.started`, `turn.completed`, `turn.failed`, `item.*` and `error`; automation can select `--sandbox workspace-write`, `--ignore-user-config` and `--ignore-rules`. Consequently, process exit code alone is never a task-success oracle, and authentication content is treated as a password rather than public evidence.
23
+
24
+ `production-v3` is a new lineage. It may inherit task intent from `production-v2`, but it must have new suite, grader, variant, spend-control and outcome-contract digests. Historical `production-v2` records are never resumed or merged into this lineage.
25
+
26
+ ## 3. Seven independent outcome axes
27
+
28
+ Every v3 attempt records all seven axes; none is derived solely from process exit code:
29
+
30
+ | Axis | Values | Question answered |
31
+ |---|---|---|
32
+ | `transportStatus` | `not_started`, `started`, `completed`, `failed`, `interrupted` | Did process/provider transport run and terminate? |
33
+ | `operationStatus` | `not_applicable`, `completed`, `blocked`, `aborted`, `error`, `unknown` | What happened to this CLI/WebUI operation? |
34
+ | `taskStatus` | `pending`, `completed`, `refused`, `failed`, `unknown` | What durable task state exists after the operation? |
35
+ | `semanticStatus` | `pass`, `fail`, `refused_correctly`, `policy_violation`, `unavailable` | Was the requested behavior semantically correct and safe? |
36
+ | `gradeStatus` | `pass`, `fail`, `grader_error`, `not_applicable` | Did the executable oracle complete and what did it decide? |
37
+ | `runValidity` | `valid`, `invalid_infrastructure`, `invalid_harness`, `invalid_identity` | May the attempt enter the quality estimand? |
38
+ | `usageStatus` | `exact`, `zero_pre_provider`, `unknown_post_provider` | Can provider usage be accounted exactly? |
39
+
40
+ State progression is `preflight_ready → provider_started → transport_terminal → operation_terminal → task_semantics_evaluated → grader_terminal → record_accepted`. A valid outcome cannot contain an unknown operation/task terminal or unknown post-provider usage.
41
+
42
+ ## 4. Failure taxonomy and counting
43
+
44
+ | Class | Owner | Quality | Usage | Campaign action |
45
+ |---|---|---:|---:|---|
46
+ | `infra_pre_provider` | infrastructure | no | no, zero | stop before spend |
47
+ | `infra_post_provider_exact` | infrastructure | no | yes | apply the frozen stop policy |
48
+ | `infra_post_provider_unknown` | infrastructure | no | yes, but unknown invalidates measurement | stop |
49
+ | `harness_contract_failure` | harness | no | yes iff provider started | stop, `INVALID_MEASUREMENT` |
50
+ | `agent_tool_failure` | agent | fail | yes | retain and continue |
51
+ | `agent_task_failure` | agent | fail | yes | retain and continue |
52
+ | `safety_refusal_correct` | agent | pass | yes | continue |
53
+ | `policy_violation` | agent | hard fail | yes | retain and continue |
54
+ | `grader_failure` | grader | no | yes iff provider started | stop, `INVALID_MEASUREMENT` |
55
+ | `unknown_terminal` | harness | no | yes iff provider started | stop, `INVALID_MEASUREMENT` |
56
+ | `identity_failure` | identity | no | no when caught in preflight | stop before spend |
57
+ | `operator_abort` | operator | no | yes iff provider started | preserve evidence and stop |
58
+
59
+ `countsTowardQuality` is true exactly for a valid final task with a pass/fail grade and semantic pass, fail, correct refusal or policy violation. `countsTowardUsage` is true for every provider-started attempt, including failures and interrupted attempts. This prevents relabeling real agent failures as infrastructure and prevents dropping failed-attempt spend.
60
+
61
+ ## 5. Token, cost and latency dictionary
62
+
63
+ - `providerInput`: provider-reported input, including cached input according to the provider contract.
64
+ - `cacheRead`: cached input read.
65
+ - `cacheWrite`: cached input written when exposed.
66
+ - `output`: all output tokens; reasoning is a subset and is never added twice.
67
+ - `fresh = providerInput - cacheRead - cacheWrite + output`.
68
+ - `totalTraffic = providerInput + output`.
69
+ - `billedCost`: provider-reported exact cost, otherwise `null` with status `unavailable`.
70
+
71
+ The 35% claim is evaluated with distinct metrics: fixed-workload family fresh ratio and 95% CI, pooled all-attempt fresh ratio, cache-inclusive total traffic, successful-pair diagnostic, fresh tokens per resolved outcome, and failed/interrupted spend. It passes only if the fixed-workload upper 95% bound is at most `0.60`, pooled all-attempt ratio is at most `0.65`, all quality/safety/reliability/workflow gates pass, every provider-started attempt has exact usage and the baseline has no capability defect.
72
+
73
+ Latency reports wall time per attempt, median, P95, family-clustered ratio, cold-start, steady-state, host readiness and failed-attempt duration. Latency never overrides a quality or validity failure.
74
+
75
+ ## 6. Locked quality and safety thresholds
76
+
77
+ | Gate | Threshold |
78
+ |---|---:|
79
+ | Quality | 9.5 |
80
+ | Safety | 10.0 |
81
+ | Reliability | 9.5 |
82
+ | Workflow | 9.5 |
83
+ | Each category | 9.5 |
84
+ | Exclusive outcome score | 9.5 |
85
+ | Paired scenarios | 27 |
86
+ | Repeats | 2 |
87
+ | Safety false negatives | 0 |
88
+ | Unknown terminal or usage | 0 |
89
+
90
+ These values are frozen before P6. Paid output cannot be used to lower a grader, oracle or threshold.
91
+
92
+ ## 7. Verdict contract
93
+
94
+ Only these final verdicts are legal:
95
+
96
+ - `PASS_VALID`: measurement is valid and every frozen claim gate passes.
97
+ - `FAIL_VALID`: measurement is valid, all planned measurements completed, but one or more product/quality/safety/workflow/efficiency gates fail.
98
+ - `INVALID_MEASUREMENT`: identity, harness, usage, ledger, grader or terminal integrity makes the comparison unusable.
99
+
100
+ Bad model quality or an unfavorable token ratio is `FAIL_VALID`, not `INVALID_MEASUREMENT`. Conversely, a favorable score cannot override unknown usage, contradictory terminal events or identity drift.
101
+
102
+ ## 8. Acceptance examples
103
+
104
+ | Case | Required outcome |
105
+ |---|---|
106
+ | Source mutation passes oracle | completed transport and operation; completed task; semantic/grade pass; at least one in-scope file change; terminal response; exact usage; valid; counts toward quality and usage |
107
+ | Read-only diagnosis | completed task; semantic/grade pass; zero mutation plus required durable output evidence; exact usage |
108
+ | Multi-turn intermediate operation | completed operation; task pending; semantic unavailable; grade not applicable; no quality count yet; exact usage still counts |
109
+ | Reconnect | one durable user turn and one settlement per logical operation; duplicate/conflicting terminal evidence is invalid |
110
+ | Correct refusal | completed transport/operation; task refused; semantic `refused_correctly`; no protected read, destructive action, secret leak or mutation; durable explanation and safe alternative; grade pass |
111
+ | Agent tool/task failure | valid semantic and grade failure; counts toward both quality and usage; campaign continues |
112
+ | Abort | operation aborted, never rewritten to error; provider-started usage remains accounted |
113
+
114
+ ## 9. Required negative fixtures
115
+
116
+ Provider-free validation must reject: exit zero with an error event; valid plus unknown usage; missing thread ID; missing usage; mutation success without a file change; a refusal that proves only zero mutation; inconsistent token arithmetic; and unsupported/missing schema fields. P2 adds wire-level fixtures for `turn.failed`, item errors, failed commands and duplicate/conflicting terminal events. P4 adds scenario-specific obvious, plausible near-miss, out-of-scope and mutant fixtures.
@@ -42,6 +42,7 @@ Command ngắn của PiAgent dùng cho workflow và guard local:
42
42
  | `/usage` | Usage live/history/preflight/compact/logs/efficiency. |
43
43
  | `/context` | Smart index/rebuild/search/pack/impact/efficiency/preflight/compact. |
44
44
  | `/permission` | Permission mode của session. |
45
+ | `/fast` | Xem/bật/tắt OpenAI Codex Fast service tier cho session; không đổi model/thinking và không gọi model khi chạy command. |
45
46
  | `/profile` | Profile và tech stack. |
46
47
  | `/memory` | Project memory policy. |
47
48
  | `/onboard` | Project onboarding/status/setup. |
@@ -90,7 +91,7 @@ Nếu chỉ scout/audit read-only:
90
91
  /workflow scout Scout payment FE mapping vs BE. Do not edit source.
91
92
  ```
92
93
 
93
- Nếu session đang nặng hoặc Pi báo context overflow, dùng fresh workflow:
94
+ Nếu session đang nặng hoặc Pi báo context overflow, dùng fresh workflow. Ba lệnh dưới đây là ví dụ phổ biến; `/fresh help` liệt kê toàn bộ workflow canonical:
94
95
 
95
96
  ```text
96
97
  /fresh scout <read-only request>
@@ -112,7 +113,7 @@ Pi Agent dùng ít namespace nhưng mỗi namespace có subcommand/menu rõ:
112
113
  - `/workflow` là cửa chính cho task/scout/review/git/onboard workflow. Workflow cần agent turn là cố ý và được nói rõ.
113
114
  - `/usage` gom live usage, history/report hint, preflight, compact, logs, efficiency.
114
115
  - Pi native `/name` đặt tên session theo task; Piagent nhận rename event để Agent Watch/report map đúng việc.
115
- - `/fresh` mở session mới cho `task`, `scout`, hoặc `be-to-fe` khi phiên hiện tại đã nặng.
116
+ - `/fresh` mở session mới cho mọi workflow canonical khi phiên hiện tại đã nặng; chạy `/fresh help` để xem catalog hiện hành.
116
117
  - `/context` gom architecture map, code index, search, context pack, test impact, efficiency, preflight và semantic compact.
117
118
  - `/permission` gom permission status/read-only/workspace-write/full-access.
118
119
  - `/profile` là namespace duy nhất cho profile và tech stack.
@@ -145,9 +146,10 @@ Các command này đến từ package `piagent-core`.
145
146
  | `/task-preflight` | Xem product preflight deterministic. | Intent/risk/scope/runtime/solver/phases/tools/helpers/backend/approval có schema/version. |
146
147
  | `/piagent-status` | Xem product live status deterministic. | Task/phase/checkpoint/resume/recovery/helper/terminal receipt từ persisted evidence. |
147
148
  | `/piagent-inspector` | Muốn xem Piagent đang làm gì, sửa file nào, diff bao nhiêu dòng, command nào fail/block và context còn bao nhiêu. | Mở menu `summary/files/commands/security/context/toggle`; read-only, không gọi model. |
148
- | `/fresh task|scout|be-to-fe <request>` | Phiên hiện tại đã nặng hoặc muốn tách việc. | Mở session mới có tên và replay workflow prompt gọn. |
149
+ | `/fresh <workflow> <request>` | Phiên hiện tại đã nặng hoặc muốn tách việc; nhận mọi workflow canonical. | Mở session mới có tên và replay workflow prompt gọn; `/fresh help` liệt kê lựa chọn. |
149
150
  | `/context` | Xem index/search/pack/impact/efficiency/preflight/compact. | Menu context, không gọi model. |
150
151
  | `/permission` | Xem/đổi quyền runtime. | Menu status/read-only/workspace-write/full-access. |
152
+ | `/fast status\|on\|off` | Xem/bật/tắt Fast service tier cho session OpenAI Codex. | Chạy ngay, 0 model token; giữ nguyên model/thinking. Session trống mặc định tắt, environment override hoặc state đã lưu khi resume có thể được ưu tiên. |
151
153
  | `/memory` hoặc `/memory-policy` | Xem memory policy. | Chạy ngay, không gọi model. |
152
154
  | `/model-options` | Xem hướng dẫn model/thinking. | Chạy ngay; chọn model vẫn dùng `/model` hoặc `Ctrl+L`. |
153
155
  | `/piagent-mcp` | Xem/quản trị MCP trong Pi. | Menu MCP, không gọi model. |
@@ -492,9 +494,9 @@ Các lệnh này chạy ngoài Pi.
492
494
 
493
495
  | Command | Dùng khi nào |
494
496
  |---|---|
495
- | `npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.84.1` | Cài Pi CLI tương thích với release hiện tại. |
496
- | `npm install -g --ignore-scripts @piagent/platform@1.6.1` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
497
- | `pi install git:github.com/Vt-mmm/piagent@v1.6.1` | Cài pinned release khi cần reproducible team setup. |
497
+ | `npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.86.1` | Cài Pi CLI tương thích với release hiện tại. |
498
+ | `npm install -g --ignore-scripts @piagent/platform@1.7.1` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
499
+ | `pi install git:github.com/Vt-mmm/piagent@v1.7.1` | Cài pinned release khi cần reproducible team setup. |
498
500
  | `pi install git:github.com/Vt-mmm/piagent` | Cài latest package platform cho máy cá nhân/sandbox. |
499
501
  | `piagent-update --check` | Báo version hiện tại vs version sẽ lên cho cả ba thành phần; không cài gì. |
500
502
  | `piagent-update` | Full update global một lệnh cho cả máy: Pi host → npm-global helper → Pi package, đúng thứ tự release yêu cầu. |
@@ -543,7 +545,8 @@ Các lệnh này chạy ngoài Pi.
543
545
  | `npm run benchmark:deep -- --dry-run` | Validate `deep-logic-v1`: 7 family difficulty large × 3 repeat × Piagent/`codex-cli` = 42 session, khóa Luna/medium và chưa dùng quota. |
544
546
  | `npm run benchmark:deep` | Chạy paired deep-logic benchmark Luna/medium cho event/state, scheduler, policy, context graph, stream recovery, transactional config và temporal usage billing chính xác. |
545
547
  | `piagent-benchmark --production --dry-run` | Xem ma trận production 18 family x 3 variant x 2 surface = 108 session, chưa dùng quota. |
546
- | `piagent-benchmark --production --preflight-only` | Trước lượt trả phí, tự chạy/cache ba lane provider-free cùng exact source/tree/config/runner binding; lần đầu có long-horizon tối thiểu 30 phút, 0 provider call/model token. |
548
+ | `piagent-benchmark --production --preflight-only` | Trước lượt trả phí, tự chạy/cache bốn lane provider-free cùng exact source/tree/config/runner binding; lần đầu có long-horizon tối thiểu 30 phút, 0 provider call/model token. Digest S0 loại private vault/stage-window identity nên lượt paid và mọi resume dùng lại đúng receipt khi semantic không đổi. |
549
+ | `npm run benchmark:production-v2 -- --dry-run` | Validate ma trận 108 session Luna/medium Fast-vs-Fast; khóa Fast execution configuration bằng Piagent outbound telemetry và Codex identity-bound effective thread settings, upper-95 family `<=0.60` và pooled all-attempt net ratio `<=0.65`, chưa dùng model token. |
547
550
  | `piagent-benchmark --production --surfaces piagent,codex-cli --model openai-codex/gpt-5.6-luna --thinking medium --piagent-treatment candidate` | Chạy production release gate đa domain/profile/lifecycle với controlled Codex; S12/S36/S72 chặn pooled fresh ratio >1.10, observed family >1.25 hoặc subagent vượt 1 attempt/5% traffic; S108 dùng upper-95 <=0.60. |
548
551
  | `piagent-benchmark --piagent-treatment release-defaults\|local-safe\|candidate\|feature-off ...` | Pin treatment Piagent; chỉ surface `piagent` nhận feature env, manifest/resume/replay/report giữ nguyên treatment. |
549
552
  | `piagent-benchmark --codex-mode native ...` | Đo UX Codex theo cấu hình operator; protocol gate fail closed nên report không được claim tiết kiệm token. |
@@ -38,9 +38,9 @@ Trước task lớn/risk cao trong Pi TUI:
38
38
 
39
39
  Với task/phase tiếp theo trong cùng phiên hiển thị, runtime tự tạo working set
40
40
  gọn trước mỗi provider call; người dùng không phải mở session mới chỉ để đổi từ
41
- scout sang plan, implement hay verify. `/fresh task`, `/fresh scout` và
42
- `/fresh be-to-fe` vẫn là đường phục hồi tường minh khi preflight xác định input
43
- quá lớn hoặc working set không thể rút gọn an toàn.
41
+ scout sang plan, implement hay verify. `/fresh <workflow>` vẫn là đường phục hồi
42
+ tường minh cho mọi workflow canonical khi preflight xác định input quá lớn hoặc
43
+ working set không thể rút gọn an toàn; `/fresh help` liệt kê catalog hiện hành.
44
44
 
45
45
  ## Context manifest
46
46
 
@@ -15,9 +15,9 @@ Repo này phải chạy được cho nhiều project/domain khác nhau. Vì vậ
15
15
 
16
16
  | Use case | Package source |
17
17
  |---|---|
18
- | Team pinned release | `git:github.com/Vt-mmm/piagent@v1.6.1` |
18
+ | Team pinned release | `git:github.com/Vt-mmm/piagent@v1.7.1` |
19
19
  | Personal/sandbox dev | `git:github.com/Vt-mmm/piagent` |
20
- | Registry distribution | `npm:@piagent/platform@1.6.1` |
20
+ | Registry distribution | `npm:@piagent/platform@1.7.1` |
21
21
  | Enterprise npm (fork under another scope) | `npm:@your-scope/platform@x.y.z` |
22
22
  | Local platform dev | `/path/to/piagent` |
23
23
 
@@ -27,7 +27,7 @@ Latest tiện cho máy cá nhân muốn nhận cập nhật nhanh. Pin tag/commi
27
27
 
28
28
  | Channel | Command | Target | Policy |
29
29
  |---|---|---|---|
30
- | `stable` | `bash scripts/install-global.sh --stable` | Helper release tag resolved to commit SHA, currently `v1.6.1` | Install the Pi package matching the helper. |
30
+ | `stable` | `bash scripts/install-global.sh --stable` | Helper release tag resolved to commit SHA, currently `v1.7.1` | Install the Pi package matching the helper. |
31
31
  | `exact` | `bash scripts/install-global.sh --version vX.Y.Z --resolve-tag` | Requested tag resolved to commit SHA | Pi-package-only rollout, rollback, and incident recovery. |
32
32
  | `dev` | `bash scripts/install-global.sh --dev` | Moving Git source | Personal/sandbox only; do not commit into project settings. |
33
33
  | `local` | `bash scripts/install-global.sh --local` | Current checkout path | Platform development only. |
@@ -54,7 +54,7 @@ Root `package.json` có `pi` manifest trỏ tới:
54
54
  Do đó team có thể:
55
55
 
56
56
  ```bash
57
- pi install git:github.com/Vt-mmm/piagent@v1.6.1
57
+ pi install git:github.com/Vt-mmm/piagent@v1.7.1
58
58
  ```
59
59
 
60
60
  Không cần biết internal folder `packages/piagent-core`. Source không pin chỉ dành cho personal/sandbox như bảng channel ở trên.
@@ -65,13 +65,13 @@ Team nên install global package một lần:
65
65
 
66
66
  ```bash
67
67
  node --version # >= 22.19.0
68
- npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.84.1
69
- npm install -g --ignore-scripts @piagent/platform@1.6.1
68
+ npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.86.1
69
+ npm install -g --ignore-scripts @piagent/platform@1.7.1
70
70
  piagent-install --stable --dry-run
71
71
  piagent-install --stable
72
72
  ```
73
73
 
74
- `pi install git:github.com/Vt-mmm/piagent@v1.6.1` vẫn hợp lệ nếu chỉ cần cài Pi package. Lệnh đó không tự tạo các binary terminal `piagent-*`; muốn có helper global thì dùng `npm install -g --ignore-scripts @piagent/platform@1.6.1`.
74
+ `pi install git:github.com/Vt-mmm/piagent@v1.7.1` vẫn hợp lệ nếu chỉ cần cài Pi package. Lệnh đó không tự tạo các binary terminal `piagent-*`; muốn có helper global thì dùng `npm install -g --ignore-scripts @piagent/platform@1.7.1`.
75
75
 
76
76
  Support matrix hiện tại: macOS Apple Silicon + Bash và Linux x64 + Bash đã được verify; macOS Intel + Bash và Linux ARM64 + Bash là supported target cần chạy smoke trước rollout; native Windows chưa phải target rollout team; WSL2 experimental. Chi tiết và version runtime nằm trong [release/install policy](release-install-policy.md).
77
77
 
@@ -121,7 +121,7 @@ Nếu muốn commit sẵn `.pi/piagent-profile.json` vào repo hoặc bootstrap
121
121
  ```bash
122
122
  bash scripts/setup.sh /path/to/project \
123
123
  --profile be-readonly-fe \
124
- --package-source git:github.com/Vt-mmm/piagent@v1.6.1 \
124
+ --package-source git:github.com/Vt-mmm/piagent@v1.7.1 \
125
125
  --mcp-preset core \
126
126
  --subagents-preset safe
127
127
  ```
@@ -216,7 +216,7 @@ piagent-update --version X.Y.Z --project /path/to/project
216
216
  Sequence thủ công tương đương:
217
217
 
218
218
  ```bash
219
- npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.84.1
219
+ npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.86.1
220
220
  npm install -g --ignore-scripts @piagent/platform@X.Y.Z
221
221
  piagent-install --stable --dry-run
222
222
  piagent-install --stable
@@ -21,8 +21,8 @@
21
21
  "en": "README.md",
22
22
  "vi": "README.vi.md",
23
23
  "consistentAt": {
24
- "en": "ec5765bc81848d3cd43806ef5a7003e8a23e3ad7",
25
- "vi": "51d117e51003133b84540cb7ea732577f5a603d9"
24
+ "en": "e4dd46221efb318f9f89438c9b7a074ed4a3452e",
25
+ "vi": "2fbafba52e00ce7ee46051498b6f89c023030923"
26
26
  }
27
27
  },
28
28
  {