@piagent/platform 1.5.5 → 1.6.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 (323) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/README.md +25 -21
  3. package/README.vi.md +34 -5
  4. package/adapters/web-frontend/profile.json +2 -4
  5. package/architecture/layers.json +18 -3
  6. package/benchmarks/deep-logic-v1/SPECIALIST_PROTOCOL.vi.md +122 -0
  7. package/benchmarks/deep-logic-v1/grade.mjs +272 -10
  8. package/benchmarks/deep-logic-v1/project/apps/admin/src/billing-summary.js +3 -0
  9. package/benchmarks/deep-logic-v1/project/benchmark-contract/public-smoke.test.js +166 -0
  10. package/benchmarks/deep-logic-v1/project/package.json +1 -1
  11. package/benchmarks/deep-logic-v1/project/packages/billing/src/close-period.js +3 -0
  12. package/benchmarks/deep-logic-v1/project/packages/billing/src/plan-timeline.js +3 -0
  13. package/benchmarks/deep-logic-v1/project/test/smoke.test.js +7 -1
  14. package/benchmarks/deep-logic-v1/prompts/budgeted-context-graph.md +2 -0
  15. package/benchmarks/deep-logic-v1/prompts/fair-dependency-scheduler.md +2 -0
  16. package/benchmarks/deep-logic-v1/prompts/layered-policy-resolution.md +2 -0
  17. package/benchmarks/deep-logic-v1/prompts/resumable-stream-assembly.md +3 -1
  18. package/benchmarks/deep-logic-v1/prompts/revision-event-reconciliation.md +2 -0
  19. package/benchmarks/deep-logic-v1/prompts/temporal-usage-billing-close.md +123 -0
  20. package/benchmarks/deep-logic-v1/prompts/transactional-config-merge.md +2 -0
  21. package/benchmarks/deep-logic-v1/suite.json +51 -3
  22. package/benchmarks/deep-logic-v1/variant.mjs +22 -1
  23. package/benchmarks/production-v1/spend-control.v1.json +92 -0
  24. package/benchmarks/production-v1/suite.json +46 -3
  25. package/catalog/capabilities.json +18 -18
  26. package/docs/authority-manifest.md +1 -1
  27. package/docs/auto-delegation-policy.md +38 -73
  28. package/docs/command-reference-vietnamese.md +27 -35
  29. package/docs/context-engine.md +12 -4
  30. package/docs/context-window-policy.md +37 -1
  31. package/docs/distribution-standard.md +7 -7
  32. package/docs/en/architecture.md +27 -13
  33. package/docs/languages.json +4 -4
  34. package/docs/model-options.md +8 -5
  35. package/docs/operator-manual-vietnamese.md +27 -45
  36. package/docs/project-adapters.md +2 -2
  37. package/docs/publishing-for-teams.md +10 -0
  38. package/docs/quality-benchmark.md +427 -62
  39. package/docs/release-install-policy.md +10 -9
  40. package/docs/runtime-harness-standard.md +3 -3
  41. package/docs/runtime-policy-design.md +4 -4
  42. package/docs/runtime-quality-baseline.md +13 -6
  43. package/docs/security-threat-model.md +2 -2
  44. package/docs/subagent-orchestration-capabilities.md +19 -51
  45. package/docs/subagents-and-multiagent.md +21 -47
  46. package/docs/task-implementation-contract.md +3 -3
  47. package/docs/task-lifecycle-vietnamese.md +3 -3
  48. package/docs/team-onboarding.md +2 -2
  49. package/docs/usage-observability.md +7 -2
  50. package/docs/vi/architecture.md +27 -13
  51. package/docs-site/architecture.html +1 -1
  52. package/docs-site/benchmark.html +89 -95
  53. package/docs-site/commands.html +1 -1
  54. package/docs-site/content/benchmark.html +88 -94
  55. package/docs-site/content/en/benchmark.html +134 -90
  56. package/docs-site/content/en/index.html +19 -19
  57. package/docs-site/content/en/runtime.html +4 -4
  58. package/docs-site/content/en/whats-new.html +12 -1
  59. package/docs-site/content/en/workflows.html +2 -2
  60. package/docs-site/content/index.html +19 -19
  61. package/docs-site/content/runtime.html +4 -4
  62. package/docs-site/content/whats-new.html +12 -1
  63. package/docs-site/content/workflows.html +2 -2
  64. package/docs-site/context-engine.html +1 -1
  65. package/docs-site/en/architecture.html +1 -1
  66. package/docs-site/en/benchmark.html +135 -91
  67. package/docs-site/en/commands.html +1 -1
  68. package/docs-site/en/context-engine.html +1 -1
  69. package/docs-site/en/index.html +20 -20
  70. package/docs-site/en/mcp-approval.html +1 -1
  71. package/docs-site/en/mcp-auth.html +1 -1
  72. package/docs-site/en/mcp-servers.html +1 -1
  73. package/docs-site/en/mcp.html +1 -1
  74. package/docs-site/en/permissions.html +1 -1
  75. package/docs-site/en/profiles.html +1 -1
  76. package/docs-site/en/quickstart.html +1 -1
  77. package/docs-site/en/runtime.html +5 -5
  78. package/docs-site/en/scope.html +1 -1
  79. package/docs-site/en/security.html +1 -1
  80. package/docs-site/en/team.html +1 -1
  81. package/docs-site/en/whats-new.html +13 -2
  82. package/docs-site/en/workflows.html +3 -3
  83. package/docs-site/index.html +20 -20
  84. package/docs-site/mcp-approval.html +1 -1
  85. package/docs-site/mcp-auth.html +1 -1
  86. package/docs-site/mcp-servers.html +1 -1
  87. package/docs-site/mcp.html +1 -1
  88. package/docs-site/permissions.html +1 -1
  89. package/docs-site/profiles.html +1 -1
  90. package/docs-site/quickstart.html +1 -1
  91. package/docs-site/runtime.html +5 -5
  92. package/docs-site/scope.html +1 -1
  93. package/docs-site/security.html +1 -1
  94. package/docs-site/team.html +1 -1
  95. package/docs-site/whats-new.html +13 -2
  96. package/docs-site/workflows.html +3 -3
  97. package/evals/fixtures/benchmark-assurance-evidence.invalid.json +1 -1
  98. package/evals/fixtures/benchmark-assurance-evidence.valid.json +1 -1
  99. package/evals/fixtures/codex-relative-efficiency-v1.invalid.json +4 -0
  100. package/evals/fixtures/codex-relative-efficiency-v1.valid.json +94 -0
  101. package/evals/fixtures/helper-request.invalid.json +1 -1
  102. package/evals/fixtures/helper-request.valid.json +1 -1
  103. package/evals/fixtures/piagent-webui/session-live-state-v1.invalid.json +18 -0
  104. package/evals/fixtures/piagent-webui/session-live-state-v1.valid.json +27 -0
  105. package/evals/fixtures/piagent-webui/subagent-tree-v1.valid.json +7 -0
  106. package/evals/fixtures/task-authority-snapshot.valid.json +4 -4
  107. package/evals/fs4-readiness-matrix.v1.json +2 -2
  108. package/evals/fs5-causal-arm.v1.json +3 -3
  109. package/evals/fs5-pilot-protocol.v1.json +3 -3
  110. package/evals/fs5-pilot-protocol.v2.json +8 -8
  111. package/evals/fs5-pilot-protocol.v3.json +8 -8
  112. package/evals/fs5-pilot-protocol.v4.json +7 -6
  113. package/evals/fs5-pilot-protocol.v5.json +9 -7
  114. package/evals/private-holdout-v1/public-exposure.v1.json +1 -1
  115. package/evals/runtime-conformance-v1/README.md +43 -0
  116. package/evals/runtime-conformance-v1/evaluate-paid-canary.mjs +198 -0
  117. package/evals/runtime-conformance-v1/lane.json +57 -0
  118. package/evals/runtime-conformance-v1/paid-canary.json +31 -0
  119. package/evals/runtime-conformance-v1/runner.mjs +456 -0
  120. package/package.json +3 -1
  121. package/packages/piagent-core/README.md +13 -4
  122. package/packages/piagent-core/benchmark/benchmark-assurance.js +4 -1
  123. package/packages/piagent-core/benchmark/benchmark-bootstrap.js +91 -9
  124. package/packages/piagent-core/benchmark/benchmark-claim-restrictions.js +38 -7
  125. package/packages/piagent-core/benchmark/benchmark-cli.js +7 -7
  126. package/packages/piagent-core/benchmark/benchmark-codex-relative-efficiency.js +698 -0
  127. package/packages/piagent-core/benchmark/benchmark-codex.js +3 -1
  128. package/packages/piagent-core/benchmark/benchmark-comparison.js +271 -2
  129. package/packages/piagent-core/benchmark/benchmark-core.js +736 -664
  130. package/packages/piagent-core/benchmark/benchmark-execution-guard.js +7 -5
  131. package/packages/piagent-core/benchmark/benchmark-forensics.js +441 -4
  132. package/packages/piagent-core/benchmark/benchmark-host-readiness.js +639 -0
  133. package/packages/piagent-core/benchmark/benchmark-matrix.js +22 -4
  134. package/packages/piagent-core/benchmark/benchmark-normalized-cost.js +317 -0
  135. package/packages/piagent-core/benchmark/benchmark-preflight.js +5 -1
  136. package/packages/piagent-core/benchmark/benchmark-process.js +6 -5
  137. package/packages/piagent-core/benchmark/benchmark-provider-free-evidence.js +345 -0
  138. package/packages/piagent-core/benchmark/benchmark-provider-wire.js +126 -0
  139. package/packages/piagent-core/benchmark/benchmark-record-validation.js +252 -0
  140. package/packages/piagent-core/benchmark/benchmark-report.js +130 -12
  141. package/packages/piagent-core/benchmark/benchmark-resume-recovery.js +14 -0
  142. package/packages/piagent-core/benchmark/benchmark-runner-policy.js +26 -0
  143. package/packages/piagent-core/benchmark/benchmark-runtime-causal.js +244 -0
  144. package/packages/piagent-core/benchmark/benchmark-stage-diagnostic.js +979 -0
  145. package/packages/piagent-core/benchmark/benchmark-statistics.js +64 -0
  146. package/packages/piagent-core/benchmark/benchmark-stop-policy.js +8 -5
  147. package/packages/piagent-core/benchmark/benchmark-suite-identity.js +31 -0
  148. package/packages/piagent-core/benchmark/benchmark-suite-runtime.js +13 -9
  149. package/packages/piagent-core/benchmark/benchmark-suite.js +149 -2
  150. package/packages/piagent-core/benchmark/benchmark-summary-support.js +380 -0
  151. package/packages/piagent-core/benchmark/benchmark-timing-diagnostics.js +971 -0
  152. package/packages/piagent-core/benchmark/benchmark-usage.js +322 -0
  153. package/packages/piagent-core/benchmark/benchmark-workflow.js +166 -0
  154. package/packages/piagent-core/capabilities/runtime-integrity.js +3 -0
  155. package/packages/piagent-core/docs/context-efficiency-improvement-plan.md +1080 -0
  156. package/packages/piagent-core/extensions/acceptance-behavior-proof.js +806 -0
  157. package/packages/piagent-core/extensions/acceptance-contract-semantics.js +83 -69
  158. package/packages/piagent-core/extensions/acceptance-error-classes.js +160 -0
  159. package/packages/piagent-core/extensions/acceptance-executable-evidence.js +12 -9
  160. package/packages/piagent-core/extensions/acceptance-receipt.js +123 -59
  161. package/packages/piagent-core/extensions/acceptance-state-machine-evidence.js +518 -0
  162. package/packages/piagent-core/extensions/acceptance-test-binding-evidence.js +60 -0
  163. package/packages/piagent-core/extensions/context-efficiency-metrics.js +302 -0
  164. package/packages/piagent-core/extensions/context-efficiency-report.js +167 -0
  165. package/packages/piagent-core/extensions/context-engine.js +149 -156
  166. package/packages/piagent-core/extensions/context-evidence.js +48 -0
  167. package/packages/piagent-core/extensions/context-import-links.js +296 -0
  168. package/packages/piagent-core/extensions/context-index-policy.js +4 -0
  169. package/packages/piagent-core/extensions/context-query-paths.js +57 -0
  170. package/packages/piagent-core/extensions/context-telemetry-integrity.js +65 -0
  171. package/packages/piagent-core/extensions/criterion-context-pack.js +435 -7
  172. package/packages/piagent-core/extensions/criterion-graph.js +82 -9
  173. package/packages/piagent-core/extensions/fallback-base-policy.ts +101 -0
  174. package/packages/piagent-core/extensions/guard-types.ts +6 -0
  175. package/packages/piagent-core/extensions/javascript-regex-evidence.js +32 -0
  176. package/packages/piagent-core/extensions/piagent-guard.ts +420 -260
  177. package/packages/piagent-core/extensions/task-contract-view.js +17 -3
  178. package/packages/piagent-core/extensions/task-lifecycle.js +39 -2
  179. package/packages/piagent-core/extensions/task-state.js +109 -142
  180. package/packages/piagent-core/extensions/verification-intelligence.js +52 -13
  181. package/packages/piagent-core/extensions/workspace-evidence-roots.js +193 -0
  182. package/packages/piagent-core/package.json +1 -1
  183. package/packages/piagent-core/policies/base-policy.json +44 -2
  184. package/packages/piagent-core/policy/authority-manifest.v1.json +3 -3
  185. package/packages/piagent-core/prompts/be-to-fe.md +2 -8
  186. package/packages/piagent-core/prompts/plan.md +1 -1
  187. package/packages/piagent-core/prompts/platform-improve.md +2 -6
  188. package/packages/piagent-core/prompts/review.md +2 -7
  189. package/packages/piagent-core/prompts/scout.md +1 -1
  190. package/packages/piagent-core/prompts/task.md +4 -3
  191. package/packages/piagent-core/runtime/context/context-delivery.ts +103 -0
  192. package/packages/piagent-core/runtime/context/context-delta-shadow.ts +53 -0
  193. package/packages/piagent-core/runtime/context/context-efficiency-format.ts +47 -0
  194. package/packages/piagent-core/runtime/context/context-evidence-qualification.ts +32 -0
  195. package/packages/piagent-core/runtime/context/prefix-telemetry.ts +47 -0
  196. package/packages/piagent-core/runtime/context/repository-memory-hints.ts +27 -0
  197. package/packages/piagent-core/runtime/hooks/agent-prompt-telemetry.ts +56 -0
  198. package/packages/piagent-core/runtime/hooks/agent-start-hook.ts +162 -102
  199. package/packages/piagent-core/runtime/hooks/completion-hook.ts +12 -12
  200. package/packages/piagent-core/runtime/hooks/input-hook.ts +17 -1
  201. package/packages/piagent-core/runtime/hooks/session-hooks.ts +22 -2
  202. package/packages/piagent-core/runtime/hooks/session-start-hook.ts +107 -3
  203. package/packages/piagent-core/runtime/hooks/tool-result-content-guards.ts +95 -0
  204. package/packages/piagent-core/runtime/hooks/tool-result-hook.ts +134 -166
  205. package/packages/piagent-core/runtime/hooks/tool-result-value-helpers.ts +66 -0
  206. package/packages/piagent-core/runtime/inspection/activity-event-adapter.ts +4 -2
  207. package/packages/piagent-core/runtime/inspection/activity-recovery.ts +104 -0
  208. package/packages/piagent-core/runtime/inspection/bounded-emission-guard.ts +286 -0
  209. package/packages/piagent-core/runtime/inspection/runtime-event-store.ts +37 -7
  210. package/packages/piagent-core/runtime/inspection/task-compaction-history.ts +1 -1
  211. package/packages/piagent-core/runtime/inspection/task-handoff-history.ts +1 -1
  212. package/packages/piagent-core/runtime/inspection/task-subagent-tree.ts +27 -4
  213. package/packages/piagent-core/runtime/inspection/tool-failure-classification.ts +70 -0
  214. package/packages/piagent-core/runtime/inspection/webui-snapshot.ts +73 -9
  215. package/packages/piagent-core/runtime/model/authenticated-catalog.ts +17 -9
  216. package/packages/piagent-core/runtime/model/openai-codex-reasoning.ts +83 -0
  217. package/packages/piagent-core/runtime/model/provider-wire-fingerprint.ts +238 -0
  218. package/packages/piagent-core/runtime/orchestration/helper-lifecycle.ts +16 -12
  219. package/packages/piagent-core/runtime/orchestration/minimal-delegation-policy.ts +71 -0
  220. package/packages/piagent-core/runtime/orchestration/owned-work-budget.ts +28 -20
  221. package/packages/piagent-core/runtime/orchestration/role-policy.ts +27 -9
  222. package/packages/piagent-core/runtime/orchestration/subagent-tool-policy.ts +329 -0
  223. package/packages/piagent-core/runtime/policy/block-remedy.ts +0 -4
  224. package/packages/piagent-core/runtime/product/activity-inspector.ts +7 -2
  225. package/packages/piagent-core/runtime/product/efficiency-metrics.ts +7 -2
  226. package/packages/piagent-core/runtime/quality/edit-freshness-guard.ts +102 -0
  227. package/packages/piagent-core/runtime/quality/exact-output-contract.ts +22 -11
  228. package/packages/piagent-core/runtime/quality/performance-assurance-signals.ts +23 -0
  229. package/packages/piagent-core/runtime/quality/performance-assurance.ts +9 -5
  230. package/packages/piagent-core/runtime/recovery/continuation-budget.ts +1 -1
  231. package/packages/piagent-core/runtime/recovery/edit-recovery-context.ts +113 -0
  232. package/packages/piagent-core/runtime/recovery/edit-recovery-delivery.ts +42 -0
  233. package/packages/piagent-core/runtime/recovery/handoff-projection.ts +4 -1
  234. package/packages/piagent-core/runtime/recovery/pristine-task-policy-refresh.ts +91 -0
  235. package/packages/piagent-core/runtime/recovery/recovery-policy.ts +7 -4
  236. package/packages/piagent-core/runtime/recovery/resume-state.ts +112 -14
  237. package/packages/piagent-core/runtime/recovery/semantic-repair-handshake.ts +60 -13
  238. package/packages/piagent-core/runtime/recovery/semantic-repair-runtime.ts +55 -2
  239. package/packages/piagent-core/runtime/recovery/task-evidence-coverage-refresh.ts +217 -0
  240. package/packages/piagent-core/runtime/registration/context-commands.ts +82 -7
  241. package/packages/piagent-core/runtime/registration/knowledge-tools.ts +9 -5
  242. package/packages/piagent-core/runtime/registration/operator-request-intake.ts +49 -0
  243. package/packages/piagent-core/runtime/registration/policy-tools.ts +50 -15
  244. package/packages/piagent-core/runtime/registration/session-commands.ts +1 -1
  245. package/packages/piagent-core/runtime/registration/task-completion-tools.ts +61 -25
  246. package/packages/piagent-core/runtime/registration/task-evidence-tools.ts +21 -12
  247. package/packages/piagent-core/runtime/registration/task-start-guidance.ts +169 -0
  248. package/packages/piagent-core/runtime/registration/task-start-manifest.ts +54 -0
  249. package/packages/piagent-core/runtime/registration/task-start-retry-helpers.ts +37 -0
  250. package/packages/piagent-core/runtime/registration/task-start-tool.ts +108 -103
  251. package/packages/piagent-core/runtime/runtime-limits.ts +16 -2
  252. package/packages/piagent-core/runtime/session/adaptive-context-analysis.ts +461 -0
  253. package/packages/piagent-core/runtime/session/adaptive-context-governor.ts +464 -0
  254. package/packages/piagent-core/runtime/session/adaptive-context-ledger.ts +265 -0
  255. package/packages/piagent-core/runtime/session/message-signals.ts +7 -3
  256. package/packages/piagent-core/runtime/session/operator-request-carry.ts +44 -0
  257. package/packages/piagent-core/runtime/session/runtime-state.ts +161 -5
  258. package/packages/piagent-core/runtime/session/source-checkout-read-grants.ts +35 -0
  259. package/packages/piagent-core/runtime/session/system-prompt.ts +76 -14
  260. package/packages/piagent-core/runtime/session/task-contract-presentation.ts +39 -0
  261. package/packages/piagent-core/runtime/tools/apply-patch-tool.ts +500 -0
  262. package/packages/piagent-core/runtime/tools/phase-tools.ts +8 -8
  263. package/packages/piagent-core/runtime/tools/tool-groups.ts +12 -2
  264. package/packages/piagent-core/runtime/trajectory/trajectory-runtime.ts +2 -1
  265. package/packages/piagent-core/runtime/verification/exact-verifier-reuse.ts +101 -0
  266. package/packages/piagent-core/runtime/workflows/runtime-intake-compaction.ts +164 -0
  267. package/packages/piagent-core/runtime/workflows/task-intake.ts +207 -38
  268. package/packages/piagent-core/security/sensitive-data.js +13 -218
  269. package/packages/piagent-core/security/sensitive-project-file.js +42 -0
  270. package/packages/piagent-core/security/sensitive-source-expression.js +330 -0
  271. package/packages/piagent-core/security/sensitive-source-formats.js +394 -0
  272. package/packages/piagent-core/security/sensitive-text.js +234 -0
  273. package/packages/piagent-core/subagents/piagent-oracle.md +5 -3
  274. package/packages/piagent-core/subagents/piagent-planner.md +6 -4
  275. package/packages/piagent-core/subagents/piagent-reviewer.md +5 -3
  276. package/packages/piagent-core/subagents/piagent-scout.md +4 -2
  277. package/packages/piagent-core/subagents/piagent-worker.md +7 -5
  278. package/packages/piagent-webui/dist/client/assets/{MarkdownMessage-rD9WJKxs.js → MarkdownMessage-B4XehTCU.js} +1 -1
  279. package/packages/piagent-webui/dist/client/assets/index-CgOEyRPG.js +176 -0
  280. package/packages/piagent-webui/dist/client/index.html +1 -1
  281. package/packages/piagent-webui/extension/piagent-webui.ts +3 -1
  282. package/packages/piagent-webui/extension/same-session-bridge.ts +1 -1
  283. package/packages/piagent-webui/extension/session-stream-adapter.ts +33 -10
  284. package/packages/piagent-webui/gateway/gateway-events.ts +109 -5
  285. package/packages/piagent-webui/gateway/gateway-service.ts +3 -0
  286. package/packages/piagent-webui/gateway/gateway-session-stream.ts +122 -20
  287. package/packages/piagent-webui/gateway/session-command-controller.ts +18 -3
  288. package/packages/piagent-webui/gateway/session-effective-options.ts +47 -0
  289. package/packages/piagent-webui/gateway/session-live-state.ts +21 -0
  290. package/packages/piagent-webui/gateway/session-operation-lifecycle.ts +237 -0
  291. package/packages/piagent-webui/gateway/session-operation-retry-control.ts +38 -0
  292. package/packages/piagent-webui/gateway/session-operation-start.ts +5 -1
  293. package/packages/piagent-webui/gateway/session-operation-watchdog.ts +165 -0
  294. package/packages/piagent-webui/gateway/session-runtime-factory.ts +45 -0
  295. package/packages/piagent-webui/gateway/session-runtime-supervisor.ts +141 -125
  296. package/packages/piagent-webui/ownership/session-lease-store.ts +5 -2
  297. package/packages/piagent-webui/server/core-inspection-provider.ts +2 -1
  298. package/packages/piagent-webui/server/loopback-server.ts +8 -0
  299. package/packages/piagent-webui/server/transcript-projection.ts +113 -9
  300. package/packages/piagent-webui/shared/text-visibility.ts +10 -0
  301. package/schemas/codex-relative-efficiency-v1.schema.json +155 -0
  302. package/schemas/piagent-webui/catalog-v1.json +9 -0
  303. package/schemas/piagent-webui/gateway-protocol-v1.schema.json +53 -3
  304. package/schemas/piagent-webui/runtime-event-v2.schema.json +15 -5
  305. package/schemas/piagent-webui/session-live-state-v1.schema.json +76 -0
  306. package/schemas/piagent-webui/subagent-tree-v1.schema.json +11 -1
  307. package/schemas/project-profile.schema.json +1 -1
  308. package/schemas/task-contract.schema.json +27 -1
  309. package/scripts/benchmark-runner-core.mjs +367 -363
  310. package/scripts/benchmark-runner-finalization.mjs +313 -0
  311. package/scripts/benchmark-runner-host-readiness.mjs +94 -0
  312. package/scripts/benchmark-runner-support.mjs +200 -0
  313. package/scripts/benchmark-session.mjs +95 -41
  314. package/scripts/configure-model-scope.sh +4 -3
  315. package/scripts/configure-subagents.sh +42 -34
  316. package/scripts/helper-evaluation.mjs +2 -2
  317. package/scripts/install-global.sh +2 -2
  318. package/scripts/pi-usage-history.mjs +37 -10
  319. package/scripts/setup.sh +2 -2
  320. package/scripts/team-doctor.sh +1 -1
  321. package/scripts/verify-local.sh +10 -1
  322. package/templates/global/settings.json +2 -1
  323. package/packages/piagent-webui/dist/client/assets/index-BZRFw1u6.js +0 -174
@@ -0,0 +1,123 @@
1
+ Implement the temporal usage-billing close across:
2
+
3
+ - `packages/billing/src/plan-timeline.js`
4
+ - `packages/billing/src/close-period.js`
5
+ - `apps/admin/src/billing-summary.js`
6
+
7
+ The implementation must use only Node's standard library and must never mutate
8
+ caller input. All accepted values are plain JSON values: reject sparse arrays,
9
+ non-finite/unsafe numbers, non-plain object prototypes, accessors, symbol keys,
10
+ unknown fields, and the keys/names `__proto__`, `prototype`, and `constructor`.
11
+ Every rejection must throw `TypeError` before returning any partial result.
12
+
13
+ ## Period and plan timeline
14
+
15
+ `period` contains exactly `{ start, end }`. Both values are canonical ISO-8601
16
+ UTC strings (`new Date(value).toISOString() === value`) and define a non-empty
17
+ half-open interval `[start, end)`.
18
+
19
+ `normalizePlanTimeline(plans, period)` validates and returns a deep-cloned array
20
+ sorted by `tenantId`, `effectiveAt`, then `id`. A plan contains exactly:
21
+
22
+ ```js
23
+ {
24
+ id, tenantId, currency, effectiveAt,
25
+ meters: {
26
+ api: [
27
+ { upTo: 100, unitPriceMicros: 250000 },
28
+ { upTo: null, unitPriceMicros: 500000 }
29
+ ]
30
+ }
31
+ }
32
+ ```
33
+
34
+ - `id`, `tenantId`, and meter names are non-empty trimmed strings and cannot be
35
+ poison names. Plan ids are globally unique. Effective times are unique per
36
+ tenant. A tenant uses one three-letter uppercase currency for its whole
37
+ timeline.
38
+ - `effectiveAt` is canonical ISO UTC. A plan becomes active at that exact
39
+ instant and remains active until the next plan for that tenant.
40
+ - `meters` is a non-empty plain object. Its keys are returned in lexical order.
41
+ Every tier array is dense and non-empty. Each tier contains exactly `upTo`
42
+ and `unitPriceMicros`.
43
+ - `upTo` values are cumulative positive safe-integer boundaries, strictly
44
+ increasing. Exactly the final tier has `upTo: null`. `unitPriceMicros` is a
45
+ non-negative safe integer. One unit price is expressed in one millionth of a
46
+ currency minor unit.
47
+
48
+ ## Usage close
49
+
50
+ `closeUsagePeriod(input)` accepts exactly `{ period, plans, events }`. Events
51
+ have globally unique, non-empty trimmed ids and one of these exact shapes:
52
+
53
+ ```js
54
+ { id, kind: "usage", tenantId, meter, at, units }
55
+ { id, kind: "reversal", tenantId, at, targetId }
56
+ ```
57
+
58
+ Every event time must be canonical and inside the period. `units` is a positive
59
+ safe integer. A reversal must reference an existing usage event for the same
60
+ tenant at or before the reversal time. One usage can be reversed at most once;
61
+ a reversal cannot target another reversal.
62
+
63
+ Resolve all valid reversals before rating, independent of input order. Rate the
64
+ remaining usage in ascending `at`, then `id` order. Select the latest plan whose
65
+ `effectiveAt <= usage.at`. A missing active plan or a meter absent from that plan
66
+ is invalid input: throw `TypeError`; never skip or silently omit that usage. Tier
67
+ consumption is cumulative per `(tenantId, planId, meter)`, so it is isolated
68
+ between tenants and meters and resets on a plan change. One usage event may span
69
+ multiple tiers.
70
+
71
+ Use `BigInt` internally for every multiplication and sum. Do not convert a
72
+ charge through `Number`. Round an invoice from micro-minor units to minor units
73
+ exactly once, at close, using round-half-to-even with divisor `1_000_000`.
74
+
75
+ Return exactly:
76
+
77
+ ```js
78
+ {
79
+ period: { start, end },
80
+ invoices: [{
81
+ tenantId,
82
+ currency,
83
+ lines: [{
84
+ eventId, planId, meter, at, units,
85
+ allocations: [{
86
+ tierIndex, units,
87
+ unitPriceMicros, // decimal string
88
+ chargeMicros // decimal string
89
+ }],
90
+ chargeMicros // decimal string
91
+ }],
92
+ subtotalMicros, // decimal string
93
+ totalMinor, // decimal string
94
+ digest // lowercase SHA-256
95
+ }],
96
+ reversedEventIds
97
+ }
98
+ ```
99
+
100
+ Invoices are ordered by `tenantId`; lines use rating order; allocation order is
101
+ tier order; reversed ids are lexical. Create an invoice only for a tenant with
102
+ at least one non-reversed usage. `digest` is SHA-256 of canonical JSON for the
103
+ invoice without `digest`: object keys recursively sorted and array order kept.
104
+
105
+ `billingSummary(result)` returns a deterministic Terminal/WebUI summary. The
106
+ lines are joined with the actual LF character (`"\n"`), never the two literal
107
+ characters backslash and `n`. The first line is:
108
+
109
+ ```text
110
+ period=<start>..<end>; invoices=<count>; reversed=<count>
111
+ ```
112
+
113
+ Then emit one line per invoice, in result order:
114
+
115
+ ```text
116
+ tenant=<JSON string>; currency=<currency>; lines=<count>; subtotalMicros=<value>; totalMinor=<value>; digest=<digest>
117
+ ```
118
+
119
+ Reject malformed result objects rather than displaying a misleading summary.
120
+ Add focused integration tests if useful; change only the declared source/test
121
+ scope.
122
+
123
+ Run `npm test` when complete; it includes a fixed public happy-path contract for this scenario.
@@ -11,3 +11,5 @@ Requirements:
11
11
  - The operation is transactional: any validation failure throws and yields no partial object.
12
12
 
13
13
  Use Node's standard library only. Add focused tests if useful.
14
+
15
+ Run `npm test` when complete; it includes a fixed public happy-path contract for this scenario.
@@ -1,11 +1,45 @@
1
1
  {
2
- "schemaVersion": 1,
2
+ "schemaVersion": 2,
3
3
  "id": "deep-logic-v1",
4
4
  "title": "Piagent Deep Logic V1",
5
- "description": "Paired current-model tasks with interacting invariants across event reconciliation, scheduling, layered policy, graph context, stream recovery, and transactional configuration.",
5
+ "description": "Paired current-model tasks with interacting invariants across event reconciliation, scheduling, layered policy, graph context, stream recovery, transactional configuration, and temporal usage billing.",
6
6
  "profile": "node-typescript",
7
- "defaultRepeats": 2,
7
+ "defaultRepeats": 3,
8
8
  "timeoutSeconds": 1200,
9
+ "executionContract": {
10
+ "surfaces": ["piagent", "codex-cli"],
11
+ "model": "openai-codex/gpt-5.6-luna",
12
+ "thinking": "medium",
13
+ "codexMode": "controlled"
14
+ },
15
+ "assurance": {
16
+ "taskSource": "maintainer-authored-deep-work-archetypes",
17
+ "visibility": "public-suite-with-run-private-oracles",
18
+ "claimTier": "capability",
19
+ "generatedVariants": true,
20
+ "familyDisjointSplit": false,
21
+ "reviewed": true,
22
+ "refreshedAt": "2026-08-21"
23
+ },
24
+ "releaseGate": {
25
+ "minimumQualityScore": 9.5,
26
+ "minimumSafetyScore": 10,
27
+ "minimumReliabilityScore": 9.5,
28
+ "minimumWorkflowScore": 9.5,
29
+ "minimumCategoryScore": 9.5,
30
+ "minimumOutcomeScoreExclusive": 9.5,
31
+ "minimumPairedScenarios": 7,
32
+ "minimumComparableEfficiencyScenarios": 7,
33
+ "minimumRepeats": 3,
34
+ "maximumInfrastructureRetries": 0,
35
+ "maximumFreshTokenRatioUpper95": 0.8,
36
+ "maximumDurationRatioUpper95": 1.1,
37
+ "primaryEfficiencyEstimand": "failure-aware-family-ratio",
38
+ "requireEfficiencyClaim": true,
39
+ "requireFullSuiteForClaim": true,
40
+ "requireStableProviderWireSurface": true,
41
+ "requireCausalContextReceipt": true
42
+ },
9
43
  "scenarios": [
10
44
  {
11
45
  "id": "revision-event-reconciliation",
@@ -90,6 +124,20 @@
90
124
  "grader": "grade.mjs",
91
125
  "variantGenerator": "variant.mjs",
92
126
  "allowedChanges": ["src/config-transaction.js", "test/**"]
127
+ },
128
+ {
129
+ "id": "temporal-usage-billing-close",
130
+ "title": "Temporal usage billing close with exact audit",
131
+ "kind": "source-change",
132
+ "category": "financial-correctness",
133
+ "difficulty": "large",
134
+ "profile": "fullstack",
135
+ "lifecycle": "cold-start",
136
+ "fixture": "project",
137
+ "prompt": "prompts/temporal-usage-billing-close.md",
138
+ "grader": "grade.mjs",
139
+ "variantGenerator": "variant.mjs",
140
+ "allowedChanges": ["packages/billing/src/**", "apps/admin/src/billing-summary.js", "test/**"]
93
141
  }
94
142
  ]
95
143
  }
@@ -20,8 +20,29 @@ switch (scenarioId) {
20
20
  }; break;
21
21
  case "layered-policy-resolution": oracle.graderData = { protectedPath: `private/${token("vault")}/secret.json`, operation: token("read") }; break;
22
22
  case "budgeted-context-graph": oracle.graderData = { term: token("resolver"), budget: integer(8, 14) }; break;
23
- case "resumable-stream-assembly": oracle.graderData = { first: token("hello"), second: token("world"), message: token("message") }; break;
23
+ case "resumable-stream-assembly": {
24
+ const astral = ["🙂", "🧠", "🚀"][integer(0, 2)];
25
+ oracle.graderData = {
26
+ first: token("hello"),
27
+ second: token("world"),
28
+ third: token("chunk"),
29
+ message: token("message"),
30
+ other: token("message"),
31
+ start: integer(2, 24),
32
+ astral
33
+ };
34
+ break;
35
+ }
24
36
  case "transactional-config-merge": oracle.graderData = { key: token("feature"), value: token("enabled") }; break;
37
+ case "temporal-usage-billing-close": oracle.graderData = {
38
+ tenantA: token("tenant"),
39
+ tenantB: token("tenant"),
40
+ meter: token("meter"),
41
+ plans: [token("plan"), token("plan"), token("plan")],
42
+ firstLimit: integer(4, 12),
43
+ secondLimit: integer(15, 28),
44
+ prices: [integer(110_000, 390_000), integer(410_000, 790_000), integer(810_000, 1_250_000)]
45
+ }; break;
25
46
  default: throw new Error(`unsupported deep logic scenario ${scenarioId}`);
26
47
  }
27
48
 
@@ -0,0 +1,92 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "suiteId": "production-v1",
4
+ "purpose": "Provider-spend control before the one claim-eligible 108-session token-quality-continuity result.",
5
+ "rootSeed": "production-v1-40-gate-v1-1370",
6
+ "execution": {
7
+ "surfaces": ["piagent", "codex-cli"],
8
+ "model": "openai-codex/gpt-5.6-luna",
9
+ "thinking": "medium",
10
+ "repeats": 3,
11
+ "infrastructureRetries": 0,
12
+ "stopAfterFailedPair": true
13
+ },
14
+ "stages": [
15
+ { "id": "S0", "cumulativeSessions": 0, "newSessions": 0, "mode": "preflight-only", "claimEligible": false },
16
+ { "id": "S12", "cumulativeSessions": 12, "newSessions": 12, "mode": "execute-and-pause", "claimEligible": false },
17
+ { "id": "S36", "cumulativeSessions": 36, "newSessions": 24, "mode": "resume-and-pause", "claimEligible": false },
18
+ { "id": "S72", "cumulativeSessions": 72, "newSessions": 36, "mode": "resume-and-pause", "claimEligible": false },
19
+ { "id": "S108", "cumulativeSessions": 108, "newSessions": 36, "mode": "resume-and-finalize", "claimEligible": true }
20
+ ],
21
+ "earlyDetection": {
22
+ "expectedFirstRepeatScenarioIds": [
23
+ "cli-double-dash",
24
+ "destructive-history-refusal",
25
+ "tenant-role-authorization",
26
+ "expiry-boundary",
27
+ "quoted-csv",
28
+ "unicode-search"
29
+ ],
30
+ "requiredCategoryCoverage": ["backend", "frontend", "data", "platform", "reliability", "security"],
31
+ "requiredLifecycleCoverage": ["steady-state", "cold-start"],
32
+ "requiredDifficultyCoverage": ["small", "medium", "large"]
33
+ },
34
+ "productionGuards": {
35
+ "subagents": {
36
+ "required": true,
37
+ "maximumSessionsPerAttempt": 1,
38
+ "maximumTrafficShare": 0.05,
39
+ "requireExactAllAttemptEvidence": true,
40
+ "requireExplainedSessionCount": true
41
+ },
42
+ "partialFreshSpend": {
43
+ "requiredFromCumulativeSessions": 12,
44
+ "maximumPooledFreshRatio": 1.1,
45
+ "maximumObservedFamilyFreshRatio": 1.25,
46
+ "includeExactFailedAttempts": true
47
+ },
48
+ "providerFreeEvidence": {
49
+ "requiredBeforeFirstPaidSession": true,
50
+ "requiredLaneIds": ["runtime-conformance-v1", "long-horizon-v1", "webui-parity-v1"],
51
+ "requireCleanCommitAndTreeBinding": true,
52
+ "requireProductionConfigurationBinding": true,
53
+ "requireRunnerAndLaneConfigurationDigests": true
54
+ }
55
+ },
56
+ "enforcement": {
57
+ "runnerConsumesThisArtifact": true,
58
+ "runnerBindsFrozenSeedAndExecution": true,
59
+ "runnerWritesAtomicPrivateStageDiagnostic": true,
60
+ "runnerBlocksProductionResumeWhenStageDiagnosticFails": true,
61
+ "durableStageStateSurvivesMissingPauseMarker": true,
62
+ "completeLedgerFinalizesWithoutProviderPreflight": true,
63
+ "stageDiagnosticArtifact": "stage-diagnostic.json",
64
+ "automaticTerminalOrAbortRules": [
65
+ "dirty-release-source-before-auth-tool-or-provider-preflight",
66
+ "piagent-unresolved-or-outcome-score-at-or-below-floor-via-stop-after-failed-pair",
67
+ "infrastructure-error-or-unknown-provider-attempt-usage-via-runner-abort",
68
+ "candidate-provenance-drift-via-execution-guard"
69
+ ],
70
+ "stageAdvanceRules": [
71
+ "clean-release-source",
72
+ "no-baseline-pass-piagent-fail",
73
+ "no-observed-paired-grade-regression",
74
+ "all-observed-piagent-outcomes-remain-above-the-release-floor",
75
+ "no-model-thinking-or-provider-wire-parity-drift",
76
+ "complete-privacy-safe-causal-context-receipt-with-closed-session-lifecycle",
77
+ "source-bound-provider-free-runtime-long-horizon-and-webui-parity-receipts",
78
+ "exact-subagent-budget-at-most-one-session-per-attempt-and-five-percent-traffic",
79
+ "partial-stage-pooled-fresh-ratio-at-most-1.10-and-every-observed-family-at-most-1.25",
80
+ "no-accepted-usage-completeness-failure",
81
+ "no-infrastructure-retry",
82
+ "no-unknown-provider-attempt-usage"
83
+ ],
84
+ "nonBlockingDiagnostics": [
85
+ "normalized-api-equivalent-text-token-cost",
86
+ "duration",
87
+ "host-load"
88
+ ],
89
+ "operatorRule": "The commands pass this artifact's frozen values explicitly. S0 binds clean-source runtime-conformance, long-horizon, and WebUI-parity receipts before paid work. Every partial paid stage from S12 onward hard-stops when pooled fresh traffic exceeds 1.10, any observed family exceeds 1.25, or exact subagent evidence exceeds one child session per attempt or 5% of candidate traffic. Cost, duration, and host load remain observational. Only the complete S108 ledger may decide the 0.60 upper-95 fresh-token claim."
90
+ },
91
+ "claimBoundary": "Only S108 may be evaluated for the production-v1 0.60 upper-95 fresh-token public-regression claim. S12, S36 and S72 enforce catastrophic fresh-spend and subagent safety ceilings but cannot establish the claim. Duration, host load, and normalized cost are reported but cannot block or support this claim."
92
+ }
@@ -6,6 +6,38 @@
6
6
  "profile": "node-typescript",
7
7
  "defaultRepeats": 3,
8
8
  "timeoutSeconds": 900,
9
+ "executionContract": {
10
+ "surfaces": ["piagent", "codex-cli"],
11
+ "model": "openai-codex/gpt-5.6-luna",
12
+ "thinking": "medium",
13
+ "codexMode": "controlled"
14
+ },
15
+ "pricingSnapshot": {
16
+ "schemaVersion": 1,
17
+ "id": "openai-gpt-5-6-luna-2026-08-22",
18
+ "model": "openai-codex/gpt-5.6-luna",
19
+ "currency": "USD",
20
+ "unitTokens": 1000000,
21
+ "rates": {
22
+ "freshInput": 0.2,
23
+ "cachedInput": 0.02,
24
+ "output": 1.2
25
+ },
26
+ "cacheWrite": {
27
+ "basis": "fresh-input",
28
+ "multiplier": 1.25
29
+ },
30
+ "longContext": {
31
+ "thresholdInputTokens": 272000,
32
+ "condition": "per-request-input-greater-than",
33
+ "inputMultiplier": 2,
34
+ "outputMultiplier": 1.5
35
+ },
36
+ "source": {
37
+ "url": "https://developers.openai.com/api/docs/models/gpt-5.6-luna",
38
+ "retrievedAt": "2026-08-22"
39
+ }
40
+ },
9
41
  "assurance": {
10
42
  "taskSource": "maintainer-authored-production-archetypes",
11
43
  "visibility": "public-suite-with-run-private-oracles",
@@ -23,10 +55,21 @@
23
55
  "minimumCategoryScore": 9.5,
24
56
  "minimumOutcomeScoreExclusive": 9.5,
25
57
  "minimumPairedScenarios": 18,
26
- "minimumComparableEfficiencyScenarios": 12,
58
+ "minimumComparableEfficiencyScenarios": 18,
27
59
  "minimumRepeats": 3,
28
- "maximumFreshTokenRatioUpper95": 1,
29
- "requireEfficiencyClaim": true
60
+ "maximumInfrastructureRetries": 0,
61
+ "primaryEfficiencyEstimand": "fixed-workload-family-ratio",
62
+ "maximumFreshTokenRatioUpper95": 0.6,
63
+ "requireEfficiencyClaim": true,
64
+ "requireNormalizedCostClaim": false,
65
+ "requireHostReadinessForClaim": false,
66
+ "requireFullSuiteForClaim": true,
67
+ "requireStableProviderWireSurface": true,
68
+ "requireCausalContextReceipt": true,
69
+ "requireProviderFreeEvidence": true,
70
+ "requireSubagentBudget": true,
71
+ "maximumSubagentSessionsPerAttempt": 1,
72
+ "maximumSubagentTrafficShare": 0.05
30
73
  },
31
74
  "scenarios": [
32
75
  {
@@ -26,8 +26,8 @@
26
26
  "path": "evals/scenarios/capability-resolution.json"
27
27
  },
28
28
  {
29
- "byteSize": 6271,
30
- "digest": "sha256:90dafc5b6c0bd555b932d89b10785b9eb50104ed22dcb06cfb8a2d306cc26d2f",
29
+ "byteSize": 7158,
30
+ "digest": "sha256:8edb1cce6716291c8ca642d3d2392c8f6c92e725ca502e93e06ab45abe541a79",
31
31
  "id": "base-policy",
32
32
  "kind": "policies",
33
33
  "path": "packages/piagent-core/policies/base-policy.json"
@@ -40,8 +40,8 @@
40
40
  "path": "packages/piagent-core/prompts/commit.md"
41
41
  },
42
42
  {
43
- "byteSize": 1605,
44
- "digest": "sha256:1c2ae0893f131ca0c519f0954845f2b4a8e61182360aac245134102dc3324643",
43
+ "byteSize": 1413,
44
+ "digest": "sha256:cb6e7bad1305c7b61d34489cbb5d066ca99855dcfc846dee1668d16d17be8a2b",
45
45
  "id": "plan",
46
46
  "kind": "prompts",
47
47
  "path": "packages/piagent-core/prompts/plan.md"
@@ -54,15 +54,15 @@
54
54
  "path": "packages/piagent-core/prompts/pr.md"
55
55
  },
56
56
  {
57
- "byteSize": 1314,
58
- "digest": "sha256:e1e9caf68957748bebf6ac2d6294905226b298b2734434db8341b35664794388",
57
+ "byteSize": 1375,
58
+ "digest": "sha256:bd474a18754c3ab835951d802158c5a19bd5e92f66cffd0dd6b560adcadb795d",
59
59
  "id": "review",
60
60
  "kind": "prompts",
61
61
  "path": "packages/piagent-core/prompts/review.md"
62
62
  },
63
63
  {
64
- "byteSize": 2371,
65
- "digest": "sha256:bfe8374f15e06d410eec7ab2c82f85ef011fc7d514a92f23720179b497910a44",
64
+ "byteSize": 2796,
65
+ "digest": "sha256:8f1552bac55dce1399f3e65cce0333205b2002cc37d4366d69e25b0b4d5f09f9",
66
66
  "id": "task",
67
67
  "kind": "prompts",
68
68
  "path": "packages/piagent-core/prompts/task.md"
@@ -82,29 +82,29 @@
82
82
  "path": "packages/piagent-core/skills/piagent-ops/SKILL.md"
83
83
  },
84
84
  {
85
- "byteSize": 2024,
86
- "digest": "sha256:9c6aa91663a6614b72a4fb8c6c4a07c07a466c0889fcfe45528ae3e3f62bac90",
85
+ "byteSize": 2223,
86
+ "digest": "sha256:18f865d816c5a5cee50bf3b2b407c23a2e67e1e92d929001a0f24c04d0c20e03",
87
87
  "id": "piagent-planner",
88
88
  "kind": "subagents",
89
89
  "path": "packages/piagent-core/subagents/piagent-planner.md"
90
90
  },
91
91
  {
92
- "byteSize": 1951,
93
- "digest": "sha256:6a02cbc7904ea6d8de64aa776ac21ccfbf3c9cc468c4c1c7650e08374ab9e949",
92
+ "byteSize": 2091,
93
+ "digest": "sha256:4e514d6480a618d610d4f520af93fa4e151ef60b42b30f5cf94da1a9c96d6ead",
94
94
  "id": "piagent-reviewer",
95
95
  "kind": "subagents",
96
96
  "path": "packages/piagent-core/subagents/piagent-reviewer.md"
97
97
  },
98
98
  {
99
- "byteSize": 1575,
100
- "digest": "sha256:ecd432c57c99783ab76844d0a35cccad377e4cd265674577742ded48ea3ffbb4",
99
+ "byteSize": 1714,
100
+ "digest": "sha256:37d9638bfbca8d50f86cbee3fee4db3ba9197bf06004d3a7bba08fc2f8249549",
101
101
  "id": "piagent-scout",
102
102
  "kind": "subagents",
103
103
  "path": "packages/piagent-core/subagents/piagent-scout.md"
104
104
  },
105
105
  {
106
- "byteSize": 2146,
107
- "digest": "sha256:e8e18e1ef3a43db2acd559c40a99b31d8cd994cbfaaf1adc5ef9d2cc5e3721a6",
106
+ "byteSize": 2210,
107
+ "digest": "sha256:aa18041470aae1a2b600cef1c09ddbfcd8b86e1efb6858c1f460e46292120e9d",
108
108
  "id": "piagent-worker",
109
109
  "kind": "subagents",
110
110
  "path": "packages/piagent-core/subagents/piagent-worker.md"
@@ -151,8 +151,8 @@
151
151
  },
152
152
  "artifacts": [
153
153
  {
154
- "byteSize": 1950,
155
- "digest": "sha256:84ac29dcbe0c692070be302707424ea16130a5938cff309c5d7755204b6c2dc1",
154
+ "byteSize": 2378,
155
+ "digest": "sha256:35d6757d0a8d2f8644b967fe82645fba3de430b53f23b5577c2e5e104dcccdc1",
156
156
  "id": "web-frontend",
157
157
  "kind": "adapters",
158
158
  "path": "adapters/web-frontend/profile.json"
@@ -170,7 +170,7 @@ directory sibling, unresolved test, denied carrier, failed call, or successful
170
170
  no-op locks the opportunity and invalidates reusable review credit. A real
171
171
  mutation must be followed by the task's exact verifier on the new tree before
172
172
  completion. Retryable infrastructure failure may retry that verifier once on
173
- the same digest, and a high-confidence in-scope failure may open one final
173
+ the same digest, and a high-confidence evidence-backed failure may open one final
174
174
  mutation-bound correction inside the already consumed continuation. Every
175
175
  other failure, repeated signature, exhausted budget, stale/corrupt state, or
176
176
  unsupported semantic shape produces a deterministic handoff rather than a new