@tea-agent/loop-agent 0.43.0-next.8 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +41 -2312
  3. package/README.md +7 -0
  4. package/dist/application/dag/args.js +8 -0
  5. package/dist/application/task-lifecycle/advance.js +38 -7
  6. package/dist/build-stamp.json +3 -3
  7. package/dist/cli/command-definitions.js +2 -0
  8. package/dist/cli/program.js +3 -1
  9. package/dist/cli/update/init-surface-notifier.js +2 -0
  10. package/dist/cli/update/policy.js +2 -0
  11. package/dist/commands/client-recovery.js +20 -55
  12. package/dist/commands/cursor-prompt.js +2 -0
  13. package/dist/commands/dag-approve.js +2 -0
  14. package/dist/commands/dag-final-verification.js +2 -0
  15. package/dist/commands/dag-init-hybrid.js +2 -0
  16. package/dist/commands/dag-reconcile-tasks.js +2 -0
  17. package/dist/commands/dag-reject.js +2 -0
  18. package/dist/commands/dag-report.js +2 -0
  19. package/dist/commands/dag-rerun.js +2 -0
  20. package/dist/commands/dag-resume.js +2 -0
  21. package/dist/commands/dag-workflow-compile.js +2 -0
  22. package/dist/commands/dag-workflow-plan.js +2 -0
  23. package/dist/commands/dag-workflow-validate.js +2 -0
  24. package/dist/commands/delegate.js +2 -0
  25. package/dist/commands/examples.js +2 -0
  26. package/dist/commands/import-prd.js +2 -0
  27. package/dist/commands/init-model-catalog.js +2 -0
  28. package/dist/commands/init.js +19 -13
  29. package/dist/commands/instructions.js +2 -0
  30. package/dist/commands/knowledge.js +2 -0
  31. package/dist/commands/loop-benchmark.js +2 -0
  32. package/dist/commands/pi-prompt.js +2 -0
  33. package/dist/commands/pi-reuse-benchmark.js +2 -0
  34. package/dist/commands/promote-run.js +2 -0
  35. package/dist/commands/stats.js +1 -1
  36. package/dist/commands/study-init.js +2 -0
  37. package/dist/commands/task-advance.js +34 -0
  38. package/dist/commands/task-source-prepare.js +2 -0
  39. package/dist/commands/worktree-create.js +2 -0
  40. package/dist/commands/worktree-remove.js +2 -0
  41. package/dist/executors/dag-pi-executor.js +1650 -198
  42. package/dist/executors/pi-executor.js +85 -3
  43. package/dist/executors/pi-sdk-executor.js +18 -0
  44. package/dist/executors/shell-executor.js +93 -7
  45. package/dist/executors/shell-verification.js +3 -0
  46. package/dist/executors/shell-write-guard.js +27 -32
  47. package/dist/governance/exec-plans.js +6 -3
  48. package/dist/infrastructure/console/app-data.js +6 -0
  49. package/dist/shared/artifacts-core.js +2 -0
  50. package/dist/shared/backend-dogfood-preflight.js +47 -0
  51. package/dist/shared/dag-failure-category.js +3 -0
  52. package/dist/shared/git-progress.js +2 -0
  53. package/dist/shared/one-shot-prompt-args.js +2 -0
  54. package/dist/shared/operator/capabilities.js +180 -0
  55. package/dist/shared/package-metadata.js +6 -4
  56. package/dist/shared/pi-context-pressure/extension.js +26 -16
  57. package/dist/shared/pi-context-pressure/sift-bridge.js +1 -1
  58. package/dist/shared/pi-provider-recovery.js +182 -0
  59. package/dist/shared/pi-retry-settings.js +40 -0
  60. package/dist/shared/reference-context.js +2 -0
  61. package/dist/task/config-types.js +29 -0
  62. package/dist/task/contract/project.js +9 -0
  63. package/dist/task/contract/recover.js +6 -0
  64. package/dist/task/contract/schema.js +17 -0
  65. package/dist/task/source-prepare/artifact-meta.js +9 -2
  66. package/dist/task/source-prepare/build-draft.js +60 -0
  67. package/dist/task/source-prepare/fragment-inventory.js +4 -1
  68. package/dist/task/source-prepare/parse-intent.js +36 -11
  69. package/dist/task/task-demand-routing.js +5 -2
  70. package/dist/worker/console/chat/browser-automation.js +523 -0
  71. package/dist/worker/console/chat/browser-policy.js +6 -36
  72. package/dist/worker/console/chat/browser-routes.js +188 -56
  73. package/dist/worker/console/chat/explore-tools.js +5 -2
  74. package/dist/worker/console/chat/pi-mode-loop-isolation.js +155 -0
  75. package/dist/worker/console/chat/pi-runtime/custom-tools/ask-user-question.js +44 -0
  76. package/dist/worker/console/chat/pi-runtime/custom-tools/browser-tools.js +184 -0
  77. package/dist/worker/console/chat/pi-runtime/custom-tools/explore-tools.js +202 -0
  78. package/dist/worker/console/chat/pi-runtime/custom-tools/goal-tools.js +79 -0
  79. package/dist/worker/console/chat/pi-runtime/custom-tools/operator-tools.js +94 -0
  80. package/dist/worker/console/chat/pi-runtime/custom-tools/scheduled-goal-tools.js +22 -0
  81. package/dist/worker/console/chat/pi-runtime/custom-tools/todo-write.js +38 -0
  82. package/dist/worker/console/chat/pi-runtime/inspection-types.js +28 -0
  83. package/dist/worker/console/chat/pi-runtime/inspection.js +439 -0
  84. package/dist/worker/console/chat/pi-runtime/progressive-tools.js +195 -0
  85. package/dist/worker/console/chat/pi-runtime/sdk-bindings.js +153 -0
  86. package/dist/worker/console/chat/pi-runtime/sdk-session.js +5 -0
  87. package/dist/worker/console/chat/pi-runtime.js +208 -1138
  88. package/dist/worker/console/chat/routes.js +59 -24
  89. package/dist/worker/console/chat/scheduled-goal-booking.js +59 -0
  90. package/dist/worker/console/chat/scheduled-goal-delivery.js +27 -0
  91. package/dist/worker/console/chat/scheduled-goal-request.js +190 -0
  92. package/dist/worker/console/chat/sdd-data-alignment.js +1 -1
  93. package/dist/worker/console/chat/session-mode-view.js +5 -4
  94. package/dist/worker/console/chat/session-mode.js +18 -12
  95. package/dist/worker/console/chat/session-store.js +42 -9
  96. package/dist/worker/console/chat/terminal-sessions.js +65 -1
  97. package/dist/worker/console/chat/terminal-tools.js +17 -5
  98. package/dist/worker/console/chat/tool-preview.js +115 -0
  99. package/dist/worker/console/chat/tools.js +10 -0
  100. package/dist/worker/console/chat/turn-order.js +13 -0
  101. package/dist/worker/console/chat/turn-process.js +32 -30
  102. package/dist/worker/console/console-update-and-init.js +1 -19
  103. package/dist/worker/console/console-update-runtime.js +5 -20
  104. package/dist/worker/console/operator-actions.js +63 -1
  105. package/dist/worker/console/prd-intake-bridge.js +54 -1
  106. package/dist/worker/console/routes.js +8 -0
  107. package/dist/worker/console/scheduled-goal-host.js +98 -0
  108. package/dist/worker/console/scheduled-goal-operation-adapter.js +127 -0
  109. package/dist/worker/console/server.js +24 -1
  110. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-CwAxHSAM.js → abnfDiagram-N423BO3Z-8-j6y-sd.js} +1 -1
  111. package/dist/worker/console/static/assets/{arc-Bozf-oeF.js → arc-eoQiMvuk.js} +1 -1
  112. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-DEypbEQv.js → architectureDiagram-T3A2C74G-C4A3uMcI.js} +1 -1
  113. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-B1BQWCbE.js → blockDiagram-VBNYF7ZC-D4zD2F-Q.js} +1 -1
  114. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-B3u5-yZz.js → c4Diagram-5PPSVZJV-j1RkJziL.js} +1 -1
  115. package/dist/worker/console/static/assets/channel-ChE7y-cx.js +1 -0
  116. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-DSUc2NTh.js → chunk-2GRJ4B5K-YBHmhik1.js} +1 -1
  117. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DZouMIvT.js → chunk-2Q5K7J3B-COfWyo9P.js} +1 -1
  118. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-B3bhB5hh.js → chunk-5RXB4S5H-I99OUkHY.js} +1 -1
  119. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-CZFP_BOz.js → chunk-5VM5RSS4-XKxoJNJ4.js} +1 -1
  120. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-DnE_wb-X.js → chunk-6Q2QTUOP-DLT_cYx1.js} +1 -1
  121. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-C2OfoiWm.js → chunk-GF5L2VYU-CxcKZ9mV.js} +1 -1
  122. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-BKUTL8mm.js → chunk-JWPE2WC7-V1EqXdjY.js} +1 -1
  123. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-BT5oz0tg.js → chunk-KBJHAD2P-DebTtdFp.js} +1 -1
  124. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-D8vk-GJi.js → chunk-RYQCIY6F-B-ivNRDf.js} +1 -1
  125. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CkUIm3zu.js → chunk-XXDRQBXY-DC_Ds11b.js} +1 -1
  126. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C01TCf2X.js +1 -0
  127. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C01TCf2X.js +1 -0
  128. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CO9QNHmR.js → cose-bilkent-JH36ORCC-sWEqKwIb.js} +1 -1
  129. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-s52EPl2Z.js → cynefin-VYW2F7L2-BXa_dcu4.js} +1 -1
  130. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-BHaseJfW.js → cynefinDiagram-MW4NZA55-C-Mle84F.js} +1 -1
  131. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CTVhRG_R.js → dagre-VZM6K2ZE-CXPDBITe.js} +1 -1
  132. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-B6pYeOMR.js → diagram-7IWD3JNH-CC-WJQfa.js} +1 -1
  133. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-CXXRzw5j.js → diagram-B4RE2ZJO-CDAV5Vs4.js} +1 -1
  134. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-BOeJHiLA.js → diagram-LBJQPF4R-CmFiAcNz.js} +1 -1
  135. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-DbEg6h_l.js → diagram-Q27KOJAE-DPBZHuyn.js} +1 -1
  136. package/dist/worker/console/static/assets/{diagram-UB23O5K3-CjlEcbX6.js → diagram-UB23O5K3-jUlm_Ds3.js} +1 -1
  137. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-BcqMPbD_.js → ebnfDiagram-BXEA7PRR-DWhQ3mfY.js} +1 -1
  138. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DWfRyHe5.js → erDiagram-JOGREHBK-Tr2gMqet.js} +1 -1
  139. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-Bz7TeIc8.js → flowDiagram-UKHOOZJN-DJjVQHPA.js} +1 -1
  140. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-BD-JxYjU.js → ganttDiagram-PKOTCBZU-D74dQ4u0.js} +1 -1
  141. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-Cv16vMHK.js → gitGraphDiagram-DS77QQ5N-DwW0tZ0X.js} +1 -1
  142. package/dist/worker/console/static/assets/index-BWkIfcrK.css +1 -0
  143. package/dist/worker/console/static/assets/index-Cdkvw_H6.js +469 -0
  144. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-BlWO0HQQ.js → infoDiagram-6WML65LV-ILCbxJyb.js} +1 -1
  145. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-C4mbsn97.js → ishikawaDiagram-WSZJBQD7-DeuWBQ89.js} +1 -1
  146. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CBPvVKjw.js → journeyDiagram-NVQOT4AX-CF5ih8Fk.js} +1 -1
  147. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-DPHLp54K.js → kanban-definition-27J2QSJJ-C7yOSuRO.js} +1 -1
  148. package/dist/worker/console/static/assets/{linear-CXx_9o6k.js → linear-BDZ9riWi.js} +1 -1
  149. package/dist/worker/console/static/assets/{mermaid.core-DU3IxMq9.js → mermaid.core-7pKqYtpZ.js} +5 -5
  150. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-COm4a2ud.js → mindmap-definition-FAOFIHXS-LeJDybSU.js} +1 -1
  151. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-Cbt7OA5d.js → pegDiagram-VL7TDLO6-BJvT3pMD.js} +1 -1
  152. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-BiYV_4Wl.js → pieDiagram-7S7Q4E2Y-_rGqpMan.js} +1 -1
  153. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-lg2zhvbp.js → quadrantDiagram-CIZ2JOQS-DPcSv5aA.js} +1 -1
  154. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-cBLvtf0p.js → railroadDiagram-AXF67PYL-Drxx4hkJ.js} +1 -1
  155. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-BoekU3Bg.js → requirementDiagram-LRYGKXZP-BCTUdU4z.js} +1 -1
  156. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-D_DMZYga.js → sankeyDiagram-W5VNT64P-B6wzbZmB.js} +1 -1
  157. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-Lzmzn8lz.js → sequenceDiagram-SI44F4Z6-BGt8d3QQ.js} +1 -1
  158. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-Cos3HpIe.js → sizeCapture-X5ZJPWSS-7nlhJKo7.js} +1 -1
  159. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-D-hFBGsx.js → stateDiagram-OKZ733FA-Cv2stqMA.js} +1 -1
  160. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DC7V5vcq.js +1 -0
  161. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-BY95sCVI.js → swimlanes-SLNWSIFB-qDAo4Yc1.js} +2 -2
  162. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-Bwy4QUTO.js +8 -0
  163. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-D1iCgWHS.js → timeline-definition-Z64GVDOM-CKbDNKTr.js} +1 -1
  164. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-D9IYy4WK.js → vennDiagram-T6HMQDX7-DI-9EHic.js} +1 -1
  165. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-C9yJwO-R.js → wardleyDiagram-T6FBY63Y-BrzzRDpX.js} +1 -1
  166. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-CC2llyou.js → xychartDiagram-ELKLHX3M-BclH5hGh.js} +1 -1
  167. package/dist/worker/console/static/index.html +2 -2
  168. package/dist/worker/console/static-src/operator-chat/active-turn-tail.js +10 -0
  169. package/dist/worker/console/static-src/operator-chat/chat-scroll-position.js +24 -0
  170. package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +41 -11
  171. package/dist/worker/console/static-src/operator-chat/compaction-message.js +10 -17
  172. package/dist/worker/console/static-src/operator-chat/composer-session-ledger.js +192 -0
  173. package/dist/worker/console/static-src/operator-chat/pending-user-message.js +9 -1
  174. package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +15 -5
  175. package/dist/worker/console/static-src/operator-chat/timeline-merge.js +29 -0
  176. package/dist/worker/console/static-src/operator-chat/turn-process-disclosure.js +10 -0
  177. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +105 -44
  178. package/dist/worker/console/static-src/operator-chat/useChatStream.js +145 -70
  179. package/dist/worker/console/static-src/operator-chat/useChatThread.js +38 -57
  180. package/dist/worker/console/static-src/operator-chat/useComposer.js +195 -73
  181. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +2 -0
  182. package/dist/worker/console/static-src/prd-file-import.js +3 -1
  183. package/dist/worker/console/workspace-context.js +22 -0
  184. package/dist/worker/console/workspace-initialization.js +209 -0
  185. package/dist/worker/delivery/git-transaction.js +2 -0
  186. package/dist/worker/feature/fullstack-validate.js +2 -0
  187. package/dist/worker/loop-agent/loop-agent-client.js +8 -2
  188. package/dist/worker/materialize/harness-task-materializer.js +4 -1
  189. package/dist/worker/metrics/projector.js +1 -1
  190. package/dist/worker/observability/event-store.js +4 -1
  191. package/dist/worker/observability/read-model.js +4 -1
  192. package/dist/worker/observe/node-transparency.js +23 -1
  193. package/dist/worker/observe/routes.js +4 -0
  194. package/dist/worker/observe/static/operator-chrome.js +3 -1
  195. package/dist/worker/observe/static/styles.css +7 -4
  196. package/dist/worker/observe/static/views/dag-inspector.js +5 -19
  197. package/dist/worker/outcomes/declared-artifacts.js +2 -0
  198. package/dist/worker/preflight.js +3 -0
  199. package/dist/worker/scheduler/scheduled-goal-dispatch.js +117 -0
  200. package/dist/worker/scheduler/scheduled-goal-evidence.js +167 -0
  201. package/dist/worker/scheduler/scheduled-goal-recovery.js +62 -0
  202. package/dist/worker/scheduler/scheduled-goal-store.js +699 -0
  203. package/dist/worker/scheduler/scheduled-goal-supervisor.js +132 -0
  204. package/dist/worker/scheduler/scheduled-goal-time.js +102 -0
  205. package/dist/worker/scheduler/scheduled-goal-types.js +95 -0
  206. package/dist/worker/task-spec/validate.js +4 -1
  207. package/dist/workflows/dag/backend-test-markdown-workflow.js +6 -24
  208. package/dist/workflows/dag/backend-test-plan-protocol.js +82 -5
  209. package/dist/workflows/dag/dag-retry-schema.js +11 -0
  210. package/dist/workflows/dag/decision-envelope.js +2 -0
  211. package/dist/workflows/dag/dynamic-runtime/shared.js +2 -2
  212. package/dist/workflows/dag/frontend-closeout.js +3 -1
  213. package/dist/workflows/dag/frontend-committed-facts.js +461 -0
  214. package/dist/workflows/dag/frontend-durable-tools.js +15 -3
  215. package/dist/workflows/dag/frontend-implementation-contract.js +369 -12
  216. package/dist/workflows/dag/frontend-plan-canary.js +53 -0
  217. package/dist/workflows/dag/frontend-plan-decision-contract.js +803 -0
  218. package/dist/workflows/dag/frontend-plan-render.js +0 -2
  219. package/dist/workflows/dag/frontend-provider-capability-matrix.js +8 -61
  220. package/dist/workflows/dag/frontend-recovery-run.js +57 -0
  221. package/dist/workflows/dag/frontend-repair.js +55 -76
  222. package/dist/workflows/dag/frontend-review-context.js +42 -68
  223. package/dist/workflows/dag/frontend-review-scopes.js +2 -2
  224. package/dist/workflows/dag/frontend-risk.js +92 -10
  225. package/dist/workflows/dag/frontend-session-budget.js +117 -3
  226. package/dist/workflows/dag/frontend-shape.js +11 -55
  227. package/dist/workflows/dag/frontend-test-execution-evidence.js +35 -10
  228. package/dist/workflows/dag/frontend-typed-event-store.js +32 -25
  229. package/dist/workflows/dag/frontend-verification-trace.js +33 -54
  230. package/dist/workflows/dag/frontend-writer-admission.js +3 -47
  231. package/dist/workflows/dag/frontend-writer-status.js +0 -23
  232. package/dist/workflows/dag/init-hybrid.js +47 -19
  233. package/dist/workflows/dag/interrupt-request.js +2 -0
  234. package/dist/workflows/dag/lifecycle.js +11 -2
  235. package/dist/workflows/dag/node-execution.js +50 -13
  236. package/dist/workflows/dag/reconcile-run.js +2 -0
  237. package/dist/workflows/dag/repair-artifact.js +3 -1
  238. package/dist/workflows/dag/report.js +2 -0
  239. package/dist/workflows/dag/rerun-plan.js +10 -0
  240. package/dist/workflows/dag/rerun-task.js +79 -1
  241. package/dist/workflows/dag/retry-policy.js +18 -0
  242. package/dist/workflows/dag/scheduler.js +2 -4
  243. package/dist/workflows/dag/types.js +44 -6
  244. package/dist/workflows/dag/validate.js +4 -0
  245. package/docs/README.md +1 -0
  246. package/docs/architecture/runtime-boundaries.md +3 -3
  247. package/docs/governance/README.md +1 -0
  248. package/docs/init-surface.manifest.json +1 -0
  249. package/docs/operations/README.md +2 -0
  250. package/docs/templates/README.md +1 -1
  251. package/docs/templates/agent-dag.schema.json +2 -2
  252. package/docs/templates/backend-test-dag.json +14 -10
  253. package/docs/templates/frontend-implementation-contract.schema.json +0 -7
  254. package/package.json +9 -3
  255. package/skills/frontend-bounded-implement/references/code-standards.md +3 -3
  256. package/skills/frontend-contract/references/contract-protocol.md +3 -1
  257. package/skills/frontend-plan/SKILL.md +8 -6
  258. package/skills/frontend-plan/references/decision-contract.md +3 -3
  259. package/skills/frontend-review/SKILL.md +18 -28
  260. package/skills/frontend-review/references/review-findings.md +8 -3
  261. package/dist/commands/new-task.js +0 -5
  262. package/dist/commands/status.js +0 -57
  263. package/dist/commands/task-contract.js +0 -269
  264. package/dist/shared/prompts.js +0 -26
  265. package/dist/task/config.js +0 -2
  266. package/dist/task/contract/validate-draft.js +0 -106
  267. package/dist/task/goal.js +0 -3
  268. package/dist/task/index.js +0 -12
  269. package/dist/task/lifecycle.js +0 -1
  270. package/dist/task/operator/capabilities.js +0 -6
  271. package/dist/task/operator/envelope.js +0 -2
  272. package/dist/task/operator/index.js +0 -5
  273. package/dist/task/operator/registry.js +0 -2
  274. package/dist/task/operator/types.js +0 -1
  275. package/dist/task/paths.js +0 -1
  276. package/dist/task/source-state.js +0 -1
  277. package/dist/task/subagent-guidance.js +0 -1
  278. package/dist/worker/console/chat/sift-bridge.js +0 -1
  279. package/dist/worker/console/index.js +0 -20
  280. package/dist/worker/console/static/assets/channel-JM-I_b0s.js +0 -1
  281. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DuQQAYEg.js +0 -1
  282. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DuQQAYEg.js +0 -1
  283. package/dist/worker/console/static/assets/index-B5H-giS2.js +0 -468
  284. package/dist/worker/console/static/assets/index-Bf7dxfm-.css +0 -1
  285. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-img0hVJ4.js +0 -1
  286. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-B4acZJvk.js +0 -8
  287. package/dist/worker/scheduler/index.js +0 -25
  288. package/dist/workflows/dag/facts.js +0 -4
  289. package/dist/workflows/dag/frontend-shadow-dual-write.js +0 -975
  290. package/dist/workflows/dag/index.js +0 -6
  291. package/dist/workflows/dynamic/index.js +0 -7
package/CHANGELOG.md CHANGED
@@ -2,15 +2,47 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.43.0] - 2026-09-14
6
+
7
+ ### 新增
8
+
9
+ - 新增了本发布周期内已经完成并通过验证的功能。
10
+
11
+ ### 改进
12
+
13
+ - 完善了日常使用体验和运行稳定性。
14
+
15
+ ### 修复
16
+
17
+ - 修复了影响使用体验或运行稳定性的问题。
18
+
19
+ ## [0.42.1] - 2026-09-09
20
+
5
21
  ### 新增
6
22
 
23
+ - Console Chat 的 `/goal` 持续目标能力对 Pi 模式开放(与工作流模式同语义):斜杠面板两模式均可见 `/goal`;Pi 会话注册 `get_goal` / `create_goal` / `update_goal` 工具并纳入激活集;Goal HTTP 接口(创建/暂停/恢复/清除)在 Pi 会话不再返回模式拒绝;GoalBar 与目标编辑面板在 Pi 会话渲染;压缩恢复、每轮 Goal 上下文与有界自主续跑(仅显式 `/goal` 才 arm,maxRounds 上限,reload/重启/出错/暂停即 disarm)在 Pi 会话可用。
24
+
7
25
  - Operator Chat 浏览器面板(DSH 风格):Console 右侧辅助栏新增「浏览器」tab——地址栏(自动补 https、仅 http/https、禁止 javascript/data/file 等危险协议与本机回环地址)、后退/前进/刷新导航栈、系统浏览器跳转;页面运行在无 same-origin、无 top-navigation 的沙箱 iframe 中(访问的页面拿不到 Console 的存储与 API),沙箱状态条支持单页面临时解锁(红色警示 + 一键恢复);对拒绝被嵌入的站点(X-Frame-Options / frame-ancestors)给出明确解释面板与「在系统浏览器打开 / 仍要加载」出口,探测端点仅返回响应头、仅限 http(s) 非回环、8 秒硬超时。
8
26
  - Operator Chat 源代码管理(DSH 风格):模型获得 `scm` 工具(status/diff/stage/unstage/discard/commit/log/branch/push/pull,固定参数 git 无 shell、限时限量输出);Console 右侧辅助栏新增「源码」面板(DSH GitView 布局——分支下拉切换、已暂存/更改分组与全部暂存/取消暂存、单行提交框 Ctrl+Enter、内联分页历史带 refs 徽标与相对时间、点击文件看 diff、右键菜单放弃更改/复制路径);模型与面板共用同一工作区级 ScmService。
9
27
  - Operator Chat 在具备 Aimax 凭据资格时,向对话进程注入 `$AIMAX_AUTH_TOKEN`(明文或 `sm4:v1:` 解密后的 ticket),供 skills 读取;文件缺失、无法解析或解密失败时不注入该变量。
10
- - Operator Chat 终端管理(DSH 风格):模型获得 `terminal` 持久 PTY 工具(跨平台 shell 目录——Windows 提供 powershell/bash,macOS/Linux 提供 bash/zsh,pwsh 7 装了即用;cwd/环境变量/后台任务跨调用保留,完成标记协议 + 超时与截断保护,枚举与默认值按平台动态生成);Console 右侧辅助栏新增「终端」面板(xterm.js 渲染,实时查看/接管模型的 shell,按平台动态展示可创建的 shell,支持发送输入、Ctrl+C、终止并关闭);模型 shell 与用户面板共用同一会话注册表并开在工作区仓库根目录,命名区分来源。
28
+ - Operator Chat 终端管理(DSH 风格):模型获得 `terminal` 持久 PTY 工具(跨平台 shell 目录——Windows 提供 powershell/bash/cmd,macOS/Linux 提供 bash/zsh,pwsh 7 装了即用;cwd/环境变量/后台任务跨调用保留,完成标记协议 + 超时与截断保护,枚举与默认值按平台动态生成);Console 右侧辅助栏新增「终端」面板(xterm.js 渲染,实时查看/接管模型的 shell,按平台动态展示可创建的 shell,支持发送输入、Ctrl+C、终止并关闭);模型 shell 与用户面板共用同一会话注册表并开在工作区仓库根目录,命名区分来源。
29
+ - Windows 原生 `cmd.exe` 终端体验补全:仅 Windows 平台提供 `cmd` shell,使用经典 `C:\path>` 提示符、cmd 黑底浅灰配色与方块光标,并补回 ConPTY 丢失的 `Microsoft Windows [版本 …]` 启动横幅;bash 与 PowerShell 保持各自原生输出,不注入 Windows 横幅。
30
+ - Operator Chat 详情栏调整:「源码」tab 紧邻「文件」tab,便于在文件预览与源码管理之间快速切换。
11
31
 
12
32
  ### 改进
13
33
 
34
+ - 上游网关不可达(502/503、Service temporarily unavailable、Bad Gateway)现在归类为 `upstream-unavailable` 并默认重试;计划重试阶梯在 fail-closed 时不再把这类可达性故障改写成 `unsupported-provider-capability`,避免把上游宕机误诊为模型能力不匹配(2026-09-11 深夜 r18/r19 的误诊根因)。
35
+
36
+ - 前端 DAG 的验证与审查证据打通:verify 节点落盘逐命令退出证据 `contracts/frontend-verification-evidence.json`(`commandId/label/lane/exitCode/ok` + `allPassed` + `lintStatus`/`lintConfigured`),review-context 暴露该证据,评审协议与评审节点 prompt 改为读逐命令退出状态,不再从绑定 trace 推断命令是否成功;未声明 lint 的任务使用协议内 `unavailable` 并标记 `lintConfigured:false`,不再自造取值。
37
+ - 前端恢复轮不再丢 run 级产物:imported 节点(如 writer-admission)在自身节点目录之外写出的文件(worktree baseline 等)会随继承搬运到子 run,修复恢复轮 `frontend-review-context-shell` 因产物缺失 ENOENT 而必然失败的死结。
38
+ - 前端 Plan finalize 的确定性前置检查要求**每个**冻结静态命令都被验证目标覆盖(此前只要求覆盖其中一个),把历史上只能由评审散文提出的类型检查缺口变成计划节点可机器修复的项;恢复 finalize 的 identical-plan 门改用**决策身份**(忽略 `rationale`/`purpose`/`notApplicableReason`/`specReference`),只改文案或引用不再算作修复。
39
+ - 失败分类不再被模型正文污染:provider/传输类判定只读 stderr、非 JSON 子进程输出与结构化错误字段,模型正文与工具参数不参与 auth/rate-limit/quota/网络判定(修复 finding id 等自产文本把可重试的 empty-output 误判为不可重试 auth 而拖垮整轮的问题);工具终态型节点(design/review)在本轮已提交终态却没有收尾文本时直接判成功,不再空转一次重试。
40
+ - 修复 Console 中 `newTask` 与 `importPrd` 并发创建同一任务时 `task already exists` 导致 intake 卡死;前端 run 的 `dag rerun --from-node` 不再因只读 artifact shell(review-context/closeout)被判 unsafe 而永远 ineligible(hard budget 模板仍按设计不支持 rerun)。
41
+
42
+ - 前端恢复不再从评审自由文本猜测文件删除、状态和 VT 映射硬约束,避免把保留项、否定描述或错误现状当作修复要求;语义闭合继续由设计评审裁决。显式 VT 断言必须包含目标覆盖,不能以任意变化代替修复。
43
+
44
+ - 前端 Plan 精简改为由 runtime 直接完成 typed ledger finalize,合并无决策的全局会话,统一 Risk/Shape 信号并按 endpoint/resource domain 合并 Mock/Data 批次;提交事实模块改名为 `frontend-committed-facts`,移除无生产消费者的 shadow observer 与旧 Review/Admission 对照链。新增 Plan canary 指标读取和决策/安全投影旁路,但在真实同输入 before/after 数据齐备前不切换生产 Plan 契约。
45
+
14
46
  - 修复前端设计评审与实施评审遗漏 `complete_review_scope` 工具权限,导致模型无法完成分段确认、最终评审反复被拒绝的问题;补充真实 Pi SDK 工具激活与分段收口回归验证。
15
47
 
16
48
  - 对话正文与 Human Gate、任务活动和产物卡片统一绑定会话所属工作区;修正旧式任务/运行链接,只有操作编号时查询真实记录再定位,工作区冲突或记录缺失时明确提示,避免误入其他工作区或总览。
@@ -22,8 +54,9 @@
22
54
  - Operator Chat 侧栏「添加工作区」图标改为与 DSH 一致的文件夹加号,不再用纯加号。
23
55
  - Operator Chat 侧栏改为单一「新会话」;空白会话在输入框上方用芯片选择工作区和模式(工作流 / Pi),有历史后芯片收起。不再用落地页双卡或「新 Pi」按钮;换模式会复用或新建对应空白会话,不会改已有会话的模式。
24
56
  - 修复模型续跑取消后带部分文字仍被标记成功的问题;前端 Plan 的取消、认证、限流及策略失败优先于容量恢复,精确格式错误保留原修复路径。完整性检查按需求建立单次索引,减少大计划重复扫描,同时拆分纯检查与恢复策略模块。
57
+ - 长会话中的输入框不再因历史消息和工具记录增多而逐键重绘整段会话,输入与自动增高在低性能电脑上更流畅。
25
58
  - 优化 Operator Chat 长会话的流式渲染:完成回合、消息行、工具卡和用户输入锚点建立稳定的 memo 边界,流式文本更新不再重复渲染整段历史或重装锚点测量监听;缓存会在历史消息或工具实际更新时正确失效;无新增折叠回合时不再提交空状态及重复写入本地存储,工具参数与结果格式化按真实输入变化缓存。
26
- - 对话页「过程折叠」对齐 DSH 细节:折叠后的内容仍保留在页面中,浏览器 Ctrl+F 可直接命中并自动展开;折叠行展开时不再多出底部空隙;箭头改为 16px、颜色更淡的固定图标(靠旋转而非换图标),并补齐系统「减少动态效果」偏好;汇总文案新增「N 个 subagent」,内置 Explore 子代理不再计入普通工具调用。
59
+ - 对话页「过程折叠」对齐 DSH 细节:模型回复完成时直接进入折叠态,不再先展开再跳动;折叠摘要、过程内容和最终回答采用与 DSH 一致的间距,折叠内容仍保留在页面中,浏览器 Ctrl+F 可直接命中并自动展开;折叠行展开时不再多出底部空隙;箭头改为 16px、颜色更淡的固定图标(靠旋转而非换图标),并补齐系统「减少动态效果」偏好;汇总文案新增「N 个 subagent」,内置 Explore 子代理不再计入普通工具调用。
27
60
  - 恢复前端 Plan 实时事实分页读取、逐需求 UX 遗漏检查与已完成范围复用;超限时补齐剩余验证目标,并接通 DAG 到 SDK 的原会话续跑。局部状态修改保留其他需求的关联,沿用耐久账本、显式替换和冻结分片边界。
28
61
 
29
62
  - DAG 的 Pi SDK 节点遇到 `stopReason=length` 时,先在原会话内最多续跑 3 次,保留已完成写入和事实,成功恢复不消耗额外节点重试次数;共享原超时与上下文预算,已成功提交终态时不重复续跑,耗尽后才进入原有缩片或重试路径。
@@ -43,11 +76,13 @@
43
76
 
44
77
  ### 修复
45
78
 
79
+ - 悬停或打开会话「更多」菜单时,Pi / 工作流徽章与相对时间一并让出,避免被三个点按钮盖住。
46
80
  - 修复点「新 Pi」后一发消息侧栏就变成「工作流」:全局会话列表和点进会话时漏了 `sessionMode`,缺省被当成工作流。
81
+ - 修复手动压缩上下文后,长会话会清空并重复绘制大量历史内容的问题;压缩结果现在会直接在当前消息流中更新,不再触发整段会话重载。
47
82
  - 修复对话页存在运行活动时,收起状态的右侧辅助栏展开按钮覆盖「运行活动 N」及数字徽标的问题;中大尺寸布局现在保留 8px 操作间距,窄屏布局不变。
48
83
  - 修复 Operator Chat 消息流的六处实际使用问题:
49
84
  - **回复被吞**:断线/重连(含每 25 秒的 SSE 事件窗口轮转)后,保留事件里已经生成的正文会在事件流恢复时重新应用到对应回合,不再被静默丢弃;仅当该回合已有更新内容时才跳过,避免重复气泡。
50
- - **用户输入消失或重复**:服务端确认后,提交回滚(排队抢占、被拒绝、连接失败)不再删掉已确认的消息;确认帧到达时按请求 ID 或持久消息 ID 原地合并乐观气泡与会话快照,retained replay 不再追加同一条用户消息。
85
+ - **用户输入消失或重复**:新消息发送后会在每一帧模型输出中持续显示,不再等回复结束才重新出现;服务端确认后,提交回滚(排队抢占、被拒绝、连接失败)不再删掉已确认的消息;确认帧到达时会原地合并临时消息与会话快照,不再重复显示同一条输入。
51
86
  - **回复重复**:上下文溢出自动压缩并重新生成后,被打断的旧回复会被取代,不再与重新生成的回复同时显示。
52
87
  - **只有思考没有正文**:模型回复以工具调用或思考结尾时,正文会作为回答显示,不再被折叠进「过程」区。
53
88
  - **空气泡误删**:只包含思考或工具内容、正文为空的回合不再被清理掉。
@@ -169,230 +204,7 @@
169
204
  - 长任务和复杂工作区的进度、文件和运行结果展示更加清晰。
170
205
  - 插件管理、文件预览和任务详情等常用操作得到改进。
171
206
 
172
- <details>
173
- <summary>实现细节(开发者参考)</summary>
174
-
175
- - 0.41.1-beta.0(frontend-node dogfood):将前端 DAG 的 Contract、Scout、Plan 切换为节点专属 skill/reference,bounded implement 仅注入有界代码规范;在保留默认 3K/12K 上下文预算的同时,避免 `frontend-plan-pi` 的必需 stable-id 追踪合同被静默截断。
176
- - 拆分前端 DAG 的大一统 skill 注入:`frontend-contract-pi`、`frontend-scout-pi`、`frontend-plan-pi` 分别使用阶段专属 skill/reference,默认 12K runtime 预算内完整加载关键合同,不再让三个节点重复携带整份 node lifecycle、设计与代码规范;bounded implement 单独接收不授权扩展侦察的代码规范。新增真实默认预算回归断言,防 required reference 再次静默截断或因预算遗漏。
177
- - 修复 frontend behavior verification 的伪 symbol 追踪:Plan 不再提交自由文本 `symbol`,改以非 static `verificationTarget.id` 作为稳定 token,并允许一个行为级 VT 覆盖多个相关 requirement;Implement 必须把 token 写入真实 `describe` / `it` / `test` 字面量标题。writer 完成边界新增轻量 trace preflight,缺失 token 时以 `needs-repair` 在 full verify 前失败;最终 trace gate 保留复验,并排除注释、普通字符串与 `VT-0010`/`VT-001` 前缀误命中。
178
- - 移除前端 canonical contract 的固定 64KB 拒绝门禁:生产 `frontend-design-policy-shell` 与历史 shadow prewrite gate 不再因 UTF-8 序列化大小阻断 schema-valid contract;继续保留 schema、来源新鲜度、OpenSpec、writeSet、Mock 绑定以及 artifact 路径/hash 完整性校验。canonical compaction 只去重完全相同记录与集合成员,不再用 last-wins 隐藏冲突 identity,也不删除 reviewer 所需的 `sourceRefs` / component `rationale`。新增面向 design/final review 的非阻断容量诊断、字段索引和约 40KB 的 hash-bound sections;`frontend-review-context-v2` 只保存 contract 引用/index,不再重复嵌入完整 contract。
179
- - 0.39.0-beta.15(frontend-node dogfood):修复自动前端路由修改 task.json 后未同步 Task Contract,导致批准阶段反复出现 externally-modified、contract binding drift 和 DAG 启动失败的问题;同时修复 adopt/import refresh 丢失 source fidelity ledger hash 的问题。
180
- - 0.39.0-beta.14(frontend-node dogfood):plan-pi 三段分段会话 + coverage 需求批次切片(4/批、零进度减半)、finalize 收据修复环(聚合诊断+修复 JSON)、record_* 边界校验左移(VT 重复/writeSet/交互 VT 引用/规范需求 id/可疑 symbol)、编译装配 last-wins(组件按 purpose 去重修正)、review-context 授权面扩展至 VT 测试文件、设计评审修订降级为 admission advisory。
181
- - 前端 DAG 极端环境加固(16KB 输出 / 120KB 上下文真实冒烟,r2-r5 验证):`frontend-contract-pi` 改为消费编译后的 ledger 输入块(`<frontend_contract_input>`,12KB 上限、cap ladder、requirement id 永不丢)并移除 read 工具,以增量 `record_*` 提交为唯一输出模式(OUTPUT BUDGET DISCIPLINE),修复极端小输出窗口下模型反复 read 源文件空转 1h54m 超时的问题(r3 起 contract 3m54s 正常完成、37 次 record_* / 0 次 read);plan/contract 的 `record_*` 工具支持每 message 最多 5 条批量提交并加 1s 调用间隔,rate-limit 退避上限提高到 60s,缓解密集小调用触发第三方网关限流;修复 fragment-inventory 对 V4 标题式 AC(`#### AC-NNN`)的双重 emit 缺陷(同一标题行被 section 入口与正文 heading 分支各切一次,30 个 AC 结构性产生 30 个 duplicate)。
182
-
183
- - 修复连续 `dag rerun-task` 丢失前代评审意见的问题:直接父 run 未走到 review/design review 时,`deriveDagRerunFeedback` 沿 run-owned lineage 有界追溯最近 5 层并继承最近的 committed typed findings;较近的 `approve_review` / `approve_design` 作为对应 resolution barrier,防止已解决 finding 被复活。lineage run ID、生命周期目录与 `state.json.runId` 必须一致,损坏、越界、循环或超深链路 fail closed。
184
-
185
- - 修复前端 review 修订无法稳定收敛的问题:`decision=new` 的组件选型除关联 `sourceRequirementIds` 外,必须显式选择该需求绑定的冻结 `sourceFragmentId`;runtime 校验隶属关系后物化 `specReference`,并覆盖模型提交的任意路径/章节/行号,避免同一需求含多个来源片段时引用错误章节。同步明确 `purpose` 是与 interaction/UI state 对齐的稳定覆盖键,组件职责由 `expectedBehavior` 与 rationale 表达,review 不再仅因标识符相同而误判。
186
-
187
- - 收敛前端 `frontend-plan-pi` 的职责与上下文:Plan 只把 Contract/Scout 的冻结事实映射为 typed decision patch(需求→实现/验证、组件/状态/Mock/依赖与真实证据缺口),不再重复任务源、完整 JSON Schema、受保护 skeleton、逐 AC 回显模板或 bad/good 教学示例。Schema、字段别名、路径与命令校验继续由 typed tools 和 deterministic runtime 持有;Plan 的同名 `record_target_surface` 改为只接受 routes 的 `record_route_selection`,文件归属仍只来自 Scout/runtime。初始 prompt 不再教学别名,validator 失败重试才附加对应 canonical 字段指引;保留冻结验证命令、Mock 约束、字段摘要和组件选型约束,并新增回归断言防止大段 Schema 回注。
188
-
189
- - 前端 `frontend-plan-pi` 的读预算统一为软停止:达到 40 次读取、文件数或字节数预算时不再把节点改判 `read-burst`,也不返回截断的仓库内容;工具只返回“停止探索、使用已注入 facts 并 finalize_plan”的短指引。Plan 保留精确 `read` 用于上游截断 artifact,`grep/find/ls` 继续由 Scout 节点承担仓库发现,避免第 41 次读取或大文件触发无意义失败。
190
-
191
- - 补齐前端 Scout→Plan 的发现闭环:Scout 必须提交带 `complete/blocked` 状态、未决路径和运行时新鲜路径证据的 target surface;空表面、未决路径或无证据时在 Scout 节点内重试,Plan 不再接手盲搜。Plan 仍可为具体组件/状态/测试决策读取 Scout 已确认路径或上游运行产物,但读取未确认仓库路径会返回收敛指引而非让节点失败,`grep/find/ls` 继续不可用。
192
-
193
- - 修复前端 DAG 的新增组件选型契约:任务源/PRD 明确要求新增的组件现在以 `decision=new` 携带可追溯的 PRD `specReference` 通过 schema、design policy 与兼容 prewrite gate;OpenSpec 候选与读取证据校验仅约束 `specified` 组件,避免 `TaskSourceBadge` 一类计划在 writer 前自相矛盾地失败。
194
-
195
- - 前端 DAG 的注入合同与运行时对齐:design review、final review 与 bounded writer skills 不再要求 `VERDICT:` 或 `IMPLEMENTATION_OUTCOME:` 首行;design/review 改以 committed typed terminal 为唯一权威,writer 状态由 write events、累计 diff、write guard、requirement coverage 与 focused checks 派生。同步修正旧拓扑文档、必读 node-contract reference 的预算和累计 diff 回归断言,避免模型按已删除的 revision/repair 链工作。
196
-
197
- - 前端 taskKind 分类漂移修复(合并后冒烟暴露):semantic-intake 模型提示词只列了 `backend-test / frontend-test / standard`,没提 `frontend-implementation`——模型把「实现组件 + 附带测试」的 PRD 误分类为 frontend-test(走了 browser-test RAG DAG 模板,报 allowedPaths 未覆盖 testcase/frontend)。提示词补全 taskKind 全集并明确区分:实现组件(含自带测试)是 frontend-implementation;frontend-test 只用于对既有功能的纯浏览器/UI 自动化测试。同时 source fidelity 不再把 PRD「背景」段误判为 executable(fragment-inventory other 章节固定 context-only,`EXECUTABLE_HINT_RE` 过度匹配「需要」导致 SOURCE_FIDELITY_HIGH_RISK_UNCOVERED 阻塞的回归)。
198
-
199
- - 根 `tsconfig.json` 补 `jsx: "react-jsx"`(规范冒烟暴露):`test/**` 下的前端测试 import `static-src/**/*.tsx`(JSX 组件)时,根 tsc(无 jsx 配置)报 `TS6142: '--jsx' is not set` 导致 typecheck 失败——之前只能靠组件避免 JSX 语法或测试用 readFile 读源码绕过。补配置后测试可直接 import/渲染 JSX 组件,与 `src/worker/console/tsconfig.json` 的 static-src 编译约定一致;服务端 `src/**` 无 `.tsx` 不受影响。
200
-
201
- - 前端 design-review 拒绝纳入自动恢复(方向 A 姊妹实现):`request_design_changes`(definite finding)不再让 writer-admission blocked 变成 terminal failed——runner 终态判定识别 committed design fact 后生成 recovery trigger(new-dag,从 plan 重启)+ 渲染 design findings PRD 草稿 + `deriveDagRerunFeedback` 增加 design typed-fact 通道(findings 注入下一轮 `<rerun_feedback>`),受同一 `frontendRecoveryQuota` 控制;无 design fact 的 blocked admission 仍保持 terminal failed。design-review 发现"AC 未被契约/测试锚定"这类真问题会在写代码前自动进入修正轮,而非一次失败即停。
202
- - 前端 DAG 两个闭环补齐(P0-1 / P2-4):
203
- - **P0-1 前端 recovery 配额可配置**:`task.json frontendRecovery.maxContinuations`(默认 1,可配 2-5)冻结进 DAG spec(`spec.frontendRecovery`),runner 的 `finalizeTerminalRunStatus` 4 处硬编码 `< 1` 改为按配额判定——verify 偶发失败导致 run 真失败的场景可放宽到 2-3 次自动恢复,不必人工介入。
204
- - **P2-4 `dag follow-up` 命令**:`loop-agent dag follow-up <parent-run-id> [--task-id <id>] [--execute] [--profile <p>]`——读取 parent run 的 `contracts/frontend-review-findings-prd.md`,createTask + importPrd(taskKind=frontend-implementation + PRD 内容)生成下游修复任务,`--execute` 直接 advance 走前端 DAG。review findings 从"只落文件的草稿"变成"一步进入下一轮 DAG 的任务",闭环补齐。
205
- - frontend-plan-pi 重试上限从 5 收紧到 3(`FRONTEND_PLAN_LADDER_RETRY_POLICY.maxAttempts`):每次 attempt 都是完整跑一遍 plan(读上下文 + 提交 record_* ledger),5 次在坏情况下等于 5 倍 plan token 成本;3 次仍覆盖常见失败(invalid-output 格式滑动、read-burst、传输类),四档阶梯只部分可遍历即判 non-converging,减少单节点无限烧 token 风险。
206
-
207
- - 前端 review `request_review_changes` 不再被静默当作成功(方向 A):`frontend-review-pi` 提交 typed `request_review_changes` 时,run 终态判定为「未通过」(`partial_failed` + `terminalReason=review-request-changes`,即使全部节点 FINISHED 也不显示成功),committed findings 自动渲染为 run-owned 下游任务 PRD 草稿 `contracts/frontend-review-findings-prd.md`(含 issueCategory/evidenceRefs/findings/restartPhase 指引),并生成 recovery trigger(issueCategory→failureOwner 映射,new-dag)。`deriveDagRerunFeedback` 新增 typed-fact 通道:无文本 verdict、无 convergence 的 frontend 场景也能把 committed `request_review_changes` findings 注入下一轮 `<rerun_feedback>`,问题不再丢失、下一轮从 restartPhase 定点修复而非重复流程。
208
- - 前端 review findings PRD 草稿携带修复范围路由信号(方向 A 补充):`deriveFrontendReviewFixScope` 从 committed findings 确定性推导建议 shape(单文件无远程 API→micro、同目录集中多文件→small、跨目录/API 信号→standard)与建议 complexity、目标文件、建议 allowedPaths;PRD 标题改为「修复 review 发现(<shape>):<目标文件>」,正文新增「修复范围(供下一轮任务生成路由)」段(含 small 信号词,如「单文件局部修复」「无远程接口」),下一轮任务以该 PRD 生成 DAG 时,`resolveFrontendTaskShape` 能把小修复路由到 micro=7/small=10 节点拓扑,而非默认 11 节点 standard 全流程。
209
- - 前端 shape 分类 API 否定词覆盖中文空格形式(冒烟暴露边界):`无 API/网络调用`、`无 API` 等表述不再被误判为远程 API 信号(原 `\b(...)\b` 对 CJK 开头无词边界),`resolveFrontendTaskShape` 与 `deriveFrontendReviewFixScope` 的 hasApiSignal 判定同步修正——带「无 API/无接口」声明的单文件小修复正确路由 micro/small,而非误升级 standard。
210
- - 深度合入 origin/main(source e68dfbe1):以 frontend-node typed-tools 拓扑为基底移植 main 硬化——canonical artifact 消费、fail-closed 无验证 marker、风险分级细化(DEPENDENCY_INSTALL_LANGUAGE)、`HARNESS_DAG_RERUN_PROMPT_OVERRIDE` prompt override、Pi SDK 运行时依赖 0.83.0 与 `engines node>=22.19.0`、next-release scripts 入包;废弃节点(verify-assess/reverify/repair-pi/plan-revision/final-design-review/lint-baseline shell)能力确认被当前流程覆盖后裁剪对应实现(repair-gate 机制、lint-baseline shell 类型),plan retry 文案对齐 committed ledger;affected 392 + M2-M9 303 测试全绿,fast 3909/3910、integration 397/398(各 1 个 fn 既有失败)。
211
- - Console「Pi 插件」新增升级功能:进入页面自动检查已安装插件的可用更新(从 npm 配置的仓库拉取每个已装包的 latest,与本地实际版本做语义化比较),检测到新版本时该插件行展示「升级 v<新版本>」按钮,一键升级到目标版本;工具栏提供「检查更新」手动重查入口,摘要行显示「已安装 N 个 · M 个可升级」;单包拉取失败不影响其它插件的判定,检查结果在服务端缓存 60 秒避免频繁刷新打爆 registry。
212
- - backend-test 新增可选 strict `backendTest.moduleLayout`:可结构化冻结模块、业务资源、operation ownership 和不同 stem 的 Markdown/Python 精确路径,归一化合同 SHA 进入 Run-owned manifest;`output-budget` 拆分必须携带版本化数值 proof,纯理由字符串不再通过。
213
- - 修复 backend-test Markdown 分片把同一接口的参数轴、组合、响应字段和回归类型误拆成多个物理模块的问题:Plan 现在优先保留主需求显式列出的 Markdown/Python 文件对,否则按最小稳定业务资源分组;Module Index 增加业务资源、operation/rule/Case ownership、拆分原因和精确路径,manifest 在 map 展开前拒绝测试目的型资源及无依据的同接口多模块,并可在权威合同无冲突时最多一次修复 Run-owned Plan 后再展开 map。
214
- - 修复 backend-test Markdown writer 已明确写出 TP 分类语义但因圆括号、方括号或 pipe 标注不符合扫描格式而连续三次高 token 重试的问题:Completeness Gate 会在当前 child writeSet 内确定性补写 canonical 变体/断言/横切标签并复验;仍为单文件纯 binding-format 缺陷时最多一次 lightweight repair,不再重放第三次 full-context writer;否定、模糊、重复和未声明分类继续 fail-closed。
215
- - 修复 backend-test 显式 Markdown/Python 路径使用不同 stem 时 Markdown validation 仍按 `test_<markdown-stem>.py` 推导默认脚本并误报的问题:validator 现在与 manifest/correspondence 一样读取冻结 Module Index 的 exact pytest path。
216
- - 修复 DAG 节点「执行过程」导出 HTML 在内网反代/子路径部署下整页样式丢失的问题:导出不再写死从主机根抓 /inspect/styles.css(反代下 404 后静默回退兜底样式,按钮与卡片样式全丢),改为直接复用页面实际加载的样式表地址(相对当前页面解析,任何部署形态都拿到同一份 CSS,多张样式表合并);导出文档 body 补 data-shell 属性让内联页面 CSS 的设计令牌与前缀规则原生命中;兜底样式补充最小按钮样式。
217
- - 修复 DAG 检查器节点「执行过程」导出 HTML 在系统深色模式下黑底黑字不可读的问题:导出文档自带完整的 `:root` 颜色变量定义(页面样式变量挂在 `body[data-shell]` 选择器下、独立导出文档不生效)并强制 light 配色,深色系统打开导出文件正文对比度恢复正常(15.4:1)。
218
- - 修复「Pi 插件」安装时内网 Nexus 拉 scoped 包(如 `@0xkobold/pi-ollama`)版本列表失败的问题:包名整段编码不再把 `%2F` 还原成字面 `/`,与 npm 客户端请求形式一致,npmjs.org 与内网 Nexus 均正常返回。
219
- - 「Pi 插件」安装版本下拉增加加载过渡:内网拉取版本较慢时显示行内小转圈「正在获取版本…」并暂禁确认按钮;获取失败显示「版本获取失败,将安装最新」并可一键重试,不阻塞安装流程。
220
- - backend-test 新增 `backendTest.executeTimeoutMs`,可为 readiness 授权的单次 pytest/HTML 执行节点配置 1 分钟至 2 小时的每命令超时;省略时仍为 5 分钟,不影响其他节点、DAG 外层 wall-clock 或 fail-closed 判定。
221
- - 修复 Console 对话页「轨迹」视图刷新页面后工具行耗时全部变成 0ms/消失的问题:会话恢复投影现在会从持久化事件环回填每次工具调用的真实起止时间(tool_call 发起 → tool_result 返回),刷新/重开历史会话后 bash、write 等工具行继续显示真实耗时(如 20.0s、16ms);事件环已裁剪的旧记录不再显示误导性的「0ms」而是留空。
222
- - 修复 Console 对话页「轨迹」视图窄窗口(≤720px)下工具行耗时列被整体隐藏的问题:工具名列本身可收缩省略,无需靠隐藏耗时信息防挤爆,任何窗口宽度都显示耗时。
223
- - Console 对话页「轨迹」视图新增每轮遥测头行(对标 DSH「请求 #N」记录):从服务端持久化事件环按轮折叠出步骤数、LLM 时长、首 token 延迟、解码吞吐(tok/s)、工具调用数与耗时、上下行 token(含缓存读/写计入上行)与成本,切到历史会话立即显示;「导出 HTML」同步输出该行。
224
- - Console 对话页「轨迹」视图「展开」按钮改为按实际溢出显隐:渲染后实测文本宽度并用 ResizeObserver 跟随容器尺寸,拉宽面板后能放下的行不再显示按钮,收窄时自动恢复;展开态恒显「收起」。
225
- - Console 对话页「轨迹」视图「会话注入」区在服务端冷启动 Pi 会话期间(首次打开历史会话约 1 秒)显示加载占位行,不再空白后突然出现;注入读取失败也会显示错误提示。
226
- - 修复 Console 对话页轨迹/工具目录数据在多工作区控制台恒为空的问题:capabilities 请求补带 `?workspaceId=`(会话所属工作区优先),工具目录与注入区正常显示 61 个模型可见工具。
227
- - 修复轨迹遥测只在收到流式事件后才显示的问题:会话切换/激活与重连恢复两条 hydrate 路径现在都会带上按轮遥测数据。
228
- - Console 对话页「轨迹」视图新增「会话注入」区(对标 DSH SYSTEM 记录):在轨迹顶部展示真实注入 Pi 会话的系统提示词全文(含字符数与注入上下文 suffix)与模型可见工具目录(工具 ID、动作、描述),均可展开/收起;「导出 HTML」同步包含该区块,离线导出也能审查完整注入面。
229
- - 修复 Console 对话页「轨迹」视图工具行(如 bash)展开后参数与结果仍被截断在 420 字符的问题:展开现在显示完整内容(块内滚动收纳长输出),并复用聊天工具卡同款的结果解包与参数格式化,HTML 导出同步生效。
230
- - 对话中的长时间 DAG 执行现在会保留一条实时状态:持续显示总运行时间、当前阶段、完成步数和最近一次有效进展;重复等待不再堆叠,点击状态可以直接查看对应 DAG。模型仍会在阶段变化、重要发现、失败恢复和结束时,用自然语言说明刚完成什么、下一步做什么。
231
-
232
- ### 重点更新
233
-
234
- - Console「更新并初始化」体验修复:设置对话框内嵌实时进度(阶段说明 + 已用时 + 完成摘要,关闭重开对话框不丢进度);接棒重启改为等待新实例就绪后再刷新页面(不再白屏「页面没了」);接棒期间操作记录不再误报为失败(boot reconcile 识别已请求接棒的记录并闭合为成功);补齐更新链路错误码(版本回退/安装失败/运行占用/接棒失败等)的中文语义映射。
235
-
236
- - Worker 只读分析 workflow:TaskSpec 新增 `execution.workflow: backend-test-analysis`,映射到专用 `backend-test-analysis-dag`,只执行 Backend Test Analysis v2 生成、严格 JSON 物化、独立只读复核与静态收尾。该路径不进入 writer、动态扩展或测试执行,并显式声明 `revisionPolicy: replace-file` artifact 及其 consumer,可作为安全 artifact continuation 的真实 Worker parent。
237
-
238
- - 发布渠道:结束 M7/M8 dogfood 期间临时开放的 npm `beta` 发布例外;`checkPublishPolicy` 再次拒绝全部 `beta` / `rc` 等非 `next` prerelease,只保留 `main -> next` 与 `release/x.y -> release-x.y` 正式列车入口。已发布 beta 制品仅作为历史验证证据保留,不再允许新发。
239
-
240
- - Worker-managed 产物派生继续(M7):Console 现在为 Worker-owned parent 生成 plan-hash-bound continuation authority,以 parent worker run + revision 确定性创建新的 child Worker/DAG、先占 Task Pool Running slot再调用 pinned sibling `loop-agent`,并在 spawn 前绑定 child run 供 interrupt 使用。成功 child 写入独立 `artifact-continuation` 审计 run/event、释放 lease,并保留原 parent Outcome/Delivery checkpoint;失败 fail closed。Console crash 发生在 terminal run record 写入前时,可由 immutable owner + child DAG lineage reconcile,已有 child 不会被第二请求覆盖或双启动。高风险 writer/dynamic/budget 扩展见下一条 M8。
241
-
242
- - 高风险 Artifact Continuation(M8):`artifact-override` 现在可在 hash-bound authority 下继续 bounded exclusive Pi writer、重新物化 dynamic map/loop 子图并继承 hard-budget 累计 ledger;child staging 对 writeSet 建立 content snapshot,失败按 attempt inventory 做逐文件 CAS rollback,外部冲突绝不覆盖并以 `WRITER_ROLLBACK_BLOCKED` 留证。执行前二次 workspace freshness 位于 revision consume/writer 调用之前;dynamic writer template 缺 writeSet、越出 allowedPaths、非 Pi/docs-only、decision/evaluation/convergence 与非 canonical shell 继续 fail closed。普通 `dag rerun --from-node` 边界不变。`@tea-agent/loop-agent@0.41.0-beta.1` 发布版真实 frontend dogfood 进一步完成普通 writer continuation、hard-budget 累计继承、失败回滚与幂等重放收口。
243
-
244
- - Console 报错语义化扫尾:DAG 检查器导出/修订/派生继续的失败状态行统一走「中文语义(原码);原始信息」修饰(新增 `describeTransferError`,覆盖 reason code、token 失效、控制器版本变更等运行时错误);Operator Chat/Operate 的操作错误映射补齐全部 context-transfer reason code。修复 Console 重启后浏览器缓存旧页面导致所有操作 403「invalid confirmation header token」的问题:Console HTML 响应现在带 `Cache-Control: no-store`,重启后刷新页面即可恢复。
245
-
246
- - 产物修订/上下文导出七次评审收口:① Context Receipt 的 declared source 与上游产物一律是契约级 reference-only provenance(dispatch 只发 system+user message + 上游 read-tool 指针,源文档 prose 经 prompt assembly 嵌入 system-prompt,未真实 read 前不以 full/excerpt 冒充 effective context;路径经 task source/ 权威边界与逐段 symlink 拒绝解析,越界即拒)。Task Contract 组件携带 `sourceHashes` 物化,bundle 构建时以严格 schema 解析后用 `computeCanonicalHash` 独立验证 canonicalHash(不再只是「这个 JSON 没变」);综合 golden fixture 锁定确定性 digest。② 修订候选按声明 `schemaId` 做 registry 实际校验(7 个冻结结构化 id),未注册 id fail-closed 拒绝而非降级放行;staging 配额(每 repo 200 MiB,`ARTIFACT_REVISION_QUOTA_EXCEEDED`)以带 owner token 的 repo 级目录锁消除并发绕过(stale 原子 rename 接管;release 也原子 rename→校验 owner→命中才删/未命中恢复,旧持有者不能删新持有者的锁,跨进程竞争用真实子进程验证;孤儿 tombstone 由 reconcile 按 TTL 清扫);显式 staging lease(`LEASE_HELD`/滑续/过期接管)接入 CLI execute/discard 生产链,execute 的 `consumeRevision` 以同一 `cli-execute:<requestId>` holder 持锁。③ 直接 CLI 同 requestId 重放走持久化 operator request 幂等返回(envelope 严格 schema 校验,parent/planHash 不匹配返回 `REQUEST_ID_REUSE_CONFLICT`;revision 被 reconcile 删除后仍可重放——execute 路径 replay-first)。④ Inspector 阻断原因统一为表驱动中文 reason-code copy(未知 code 原样保留),预览头部展示 SHA-256,截断预览如实说明暂无完整文件下载。⑤ standalone continuation 纵向 E2E:真实 CLI stage → plan → execute 子进程(真实 runner 执行 child shell 闭包、revision 消费、幂等重放、reconcile 后重放、异 planHash 冲突、hardlink parent 拒绝)+ workflow 层五路径 + Console canonical operation 层 failed 投影证据;bundle 对 materializedPath 做逐段 symlink/hardlink/device/FIFO 拒绝;内置 DAG 生成的 structured artifact 默认 `revisionPolicy: replace-file`,普通 task advance 新 run 即具备可修订产物。⑥ 所有边界内读取改为 fd 级安全读取(预检、`O_NOFOLLOW|O_NONBLOCK`、打开后 inode/dev 对账及 realpath containment),receipt、bundle material、upload/candidate 均拒绝路径替换,避免 FIFO 阻塞与检查后重开路径的 TOCTOU;revision metadata 变更以跨进程目录锁串行,重试上传必须与既有 content-addressed 字节一致,Console 在同级 CLI 调度前完成 canonical admission,冲突请求不会遗留孤儿上传;CLI 每次 execute 使用独立 lease holder,避免并发同 requestId 互相续租。⑦ 活跃目录锁以 owner 文件心跳判断 stale;长时间正常持锁不会仅因目录 mtime 未变而被错误接管,reconcile 也按同一 freshness 规则处理 mutation locks。
247
-
248
- - DAG Inspector 节点透明度与可移植上下文闭环:节点检查器统一为八个页签(含保留的「规范证据」只读页签),并用「执行设置」「实际上下文」「执行记录」「产出」「来源与影响」等操作者语言区分节点事实;新增 dispatch-time Context Receipt、产出关系,以及 generic、Pi session、可读记录、Pi handoff 四种 deterministic Context Bundle 导出。交接包工作台会在下载前预览用途、包含内容与保护级别;默认脱敏,raw 需显式风险确认。所有文本型 bundle 文件在写 manifest 前统一执行 credential 与本机 home 路径安全终检;raw 保留原字节但如实记录 warning/分类计数。Context Receipt/materials 使用 0600 文件与 0700 目录;Console staging 保存在 repo 外,启动时回收过期/半写入数据和 stale lease。产物修订候选若含 credential-like 内容会以 `SECRET_SCAN_CONFIRMATION_REQUIRED` fail closed,且 operation/CLI 不回显命中值。
249
- - Frozen DAG spec 新增结构化 Artifact Binding(`producesArtifacts` / `consumesArtifacts`),全部内置模板同步声明 producer/consumer;consumer closure 只读 binding,不从 prompt、`outputContract` 或路径猜测。操作者可 stage 单个 ordinary declared artifact revision、查看 bounded diff/影响闭包与 hash-bound plan,再创建 parent 不可变的 child run,只重跑受影响消费者并记录 imported/overridden/supersedes lineage。Worker-managed、writer/dynamic/decision/unsafe-shell/budget 不安全链路继续 fail closed。
250
- - Pi SDK 显式模型解析失败时不再静默退回会话默认模型;Context Receipt 中的 resolved model 与实际执行保持一致。Artifact consumer prompt 使用 frozen binding 注入 run-owned 精确路径,receipt 同时复制 hash-bound 上游文本产物,确保下游可读且导出的 bundle 不依赖归档后失效的 active 路径。
251
- - Operator Chat 多次输入排队对齐 DSH Web:运行中的连续输入改为持久化 FIFO 队列,不再用后一条覆盖前一条;单条直接展示,多条默认折叠为数量栏,展开后逐行提供内联编辑、删除和插话发送。队列 Dock 使用与 DSH 一致的外层定位与内层面板结构,标题固定、仅消息列表滚动,并在编辑或请求期间锁定折叠操作。编辑/删除以消息 ID + revision 做并发保护,插话复用 Pi `steer` 注入当前回合,其余消息继续按顺序在回合结束后自动发送;队列通过会话快照与 SSE 权威数组恢复,刷新或 Console 重启不丢失。
252
- - Operator Chat 右侧辅助栏统一上下文与调用记录:输入框的上下文环、调用记录入口现在复用文件/DAG 侧栏;「文件」常驻,「上下文 / 调用记录」按入口临时添加并支持独立 `×` 关闭,关闭后回到文件 Tab;点击已选入口可收起侧栏,切换到上下文时同步开启注入状态,收起时仅关闭注入而保留上下文数据。上下文与工具调用内容改为内嵌布局,不再叠加独立弹窗、遮罩、焦点陷阱或重复关闭按钮,并补充 Tab 切换与侧栏开合动画;修复折叠态右侧展开按钮无法恢复侧栏的问题。
253
- - Operator Chat 手动 compact 消息流对齐 DSH Web:压缩中在时间线显示状态行,完成后显示默认折叠的 `compact` 摘要边界,点击可展开完整 Markdown 压缩结果;compact 事件通过 SSE 与 session 详情快照双路径恢复,使用事件 ID 去重,刷新/重新进入会话不丢失。Pi compaction 会把摘要写入 session context,后续模型请求继续使用压缩后的上下文。
254
- - Operator Chat 对齐 DSH Web Todo 能力:新增 `todo_write` 整表替换工具与内容校验,Todo 状态通过会话事件持久化并支持刷新恢复;新一轮开始自动清空,输入框上方展示默认折叠的任务面板(待处理虚线圆环、进行中旋转圆环与完成勾选),消息流使用专用“更新任务清单”摘要行;手动压缩上下文时会把当前完整 Todo 列表合并进压缩指令,避免摘要遗漏仍在执行的任务。
255
- - Todo 压缩续跑保护:保留 Pi 默认压缩算法,在手动、阈值或上下文溢出压缩成功后的同一轮下一次模型请求前,临时注入当前完整 Todo 内容与状态;下一轮按 DSH 生命周期清空,避免旧任务串入新对话。
256
- - Operator Chat 的 `ask_user_question` 提问卡片进一步对齐 DSH Web:问题协议新增 Markdown `detail` 说明;选项标签、推荐标记与描述按同一行自然换行,多选仅由 checkbox 表达勾选而不再整行强高亮;自定义回答按单选编辑图标/多选 checkbox 区分,并使用最多六行的镜像自增高输入框;卡片滚动、悬浮/选中动画、窄屏间距和无障碍 tooltip 同步 DSH 行为。
257
- - Console 多工作区作用域模型收敛(2026-08-26):对话页顶部不再渲染工作区切换器,工作区添加/选择/新建会话只保留在左侧 Workspace browser;会话按创建工作区持久归属,打开会话后的对话、文件与仓库能力请求全部路由该 session 的 owning workspaceId,与当前全局 active workspace 无关,切换 Operate/Inspect 活动工作区不再泄漏跨工作区数据;新建会话必须携带已知 workspaceId,缺失或未知时前后端一致 fail closed(400 `WORKSPACE_REQUIRED` / 404 `WORKSPACE_NOT_FOUND`),绝不回退默认工作区;Operate 顶部切换工作区为硬作用域边界——中止旧 operation SSE、清空 taskId/dagRunId/operationId/确认态并以新 workspaceId 重新加载;readiness、recovery candidates、night jobs/doctor/morning/ticker 与全部 Observe GET 改为显式 `?workspaceId=` 作用域(`/api/health` 保持进程级),Observe 工作区切换严格按 abort old → clear old → set scope → route/reload new 原子顺序执行,消除旧作用域请求新路由的竞态窗口。
258
-
259
- - Operator Console 顶栏以对话页为统一基准:Logo 与工作区入口固定在左侧,「对话 / 操作 / 观测」使用视口居中的三等分胶囊与 190ms 横向滑动选中态;切换页面时复用同一个滑块 DOM 节点,避免顶栏更新中断过渡而闪到终点,也不再因仓库身份、状态胶囊或不同内容宽度发生位移;原“仓库身份”改为消费唯一多工作区控制器的工作区下拉,保持列表顺序,切换后停留在当前主页面,并让对话、操作请求与观测数据继续携带同一 `workspaceId`。
260
- - Operator Chat 右侧文件工作台对齐 `dsh-better-sidebar@0.16.1`:辅助栏宽度不再受固定 520px 上限限制,拖拽宽度随视口钳制并跨会话持久化;文件打开后采用左侧预览、右侧文件树布局,树宽可在 160–480px 间独立拖动。文件 Tab 内置关闭按钮,「预览 / 源文件」与「新窗口打开」收为右侧紧凑工具区;Tab 悬浮、选中与键盘焦点统一为整行反馈,不再出现文件名和关闭按钮各自高亮;预览滚动条同步模型选择器的低对比细滚动条样式。
261
- - Operator Chat 工具执行状态进一步对齐 DSH Web:成功后不再显示“完成”标签,错误时以红色状态点和错误首行替换普通图标、参数摘要,运行中以低对比扫光表达状态;Think 与工具行统一为 14/24,Think 正文继承界面正文字体,Bash/代码输出保留 12/18 等宽字体;折叠态显示语义图标、悬浮时切换展开箭头,未知工具使用 Sparkle 图标;状态文字继续通过无障碍文本提供,错误详情仍默认展开,右侧“工具调用记录”诊断面板保持不变。
262
- - Operator Chat 输入框把模型与推理等级合并为一个 DSH 风格入口:根菜单分为“模型 / 推理等级”,模型仍按供应商分组,`Auto` 同时显示 Pi 当前实际档位。
263
- - Operator Chat 输入框下方统计栏对齐 DSH Web:移除长期硬编码的 `轮/步 —`、`LLM —`、`首 token —` 等占位,改由服务端从持久会话事件投影真实轮数、步骤数、LLM/工具耗时与 token/cache 汇总,刷新或切换历史会话后仍可恢复;新回复同时记录每个 assistant step 的首 token、解码时长和输出 token,结束后自动刷新并展示平均 TTFT 与 tok/s。展示按 DSH 使用 `|` 分组、组内 `·`,没有可靠证据的整组直接隐藏,超长单行省略并保留完整悬浮文本。
264
- - Operator Chat 消息流对齐 DSH Web:彻底移除历史回合中的“处理详情”聚合入口以及残留的 `Assistant process` 展示容器,Think、进展、阶段性正文、Bash/Read/Search/Edit/Web/MCP 等工具调用与最终回答作为轮次下的同级节点,按真实事件顺序直接展示;Think 与工具行显式左对齐,不再继承全局按钮的横向居中,运行中 Think 展开、历史 Think 折叠,右侧“工具调用记录”诊断面板继续保留。回答正文、Think、工具行与代码输出同步采用 DSH 的字号和行高基准。
265
- - Operator Chat Markdown 表格对齐 DSH Web:三列及以下表格在 748px 正文列内自动换行,四列及以上表格扩展利用整个消息视口;宽表静止时不再常驻横向滚动条,只有内容确实溢出且鼠标悬浮或键盘聚焦时才显示,窄视口自动回退为列内安全滚动。
266
- - 新增源码仓库专用 `npm run console:dev`:浏览器继续固定使用 8790 的真实同源接口与 mutation gate,8790 仅把前端模块代理给内部 loopback Vite;CSS 原地 HMR、TSX 自动整页刷新,后台类型检查不阻塞视觉循环,Console 后端依赖变化只重启受监督源码子进程。正式 build、发布包与 init surface 不变。
267
- - Operator Chat 左侧会话行按 DSH Web 保留 2px 相邻间距,选中/悬浮背景不再黏连;工作区行隔离鼠标点击焦点,鼠标移开即恢复,仅键盘 `focus-visible` 与打开菜单时保留聚焦反馈;Console mutation gate 修正同端口 `localhost`、`127.0.0.1` 与 `[::1]` 回环别名误判,并把新建会话的安全闸错误转换为可操作中文提示。
268
- - Operator Chat 左侧工作区与会话的悬浮/键盘聚焦状态改为行级隔离:会话仍归属工作区分组,但悬浮或聚焦会话时不再连带高亮工作区行、切换工作区图标或显示工作区操作按钮;工作区自身的悬浮卡片和菜单保持原行为。
269
- - Operator Console 收敛为常驻单壳:一级导航改为「对话 / 操作 / 观测」。对话与操作工作区保活不卸载;观测工作区首次动态挂载 `inspect-workspace.js`,切走 `setActive(false)` 暂停轮询。对话模式没有二级页签时直接隐藏空标签带与折叠按钮,不覆盖操作/观测已有的折叠偏好。产品观测入口(Night 深链、Recovery 全屏、InspectSplitPanel、对话卡片)一律写入 Console canonical hash(`/#/inspect...`),独立 `/inspect/#/...` 仅作兼容入口。
270
- - Console DAG 检查器「提示词重启」面板改为与检查器一致的卡片层级:版本选择复用自定义下拉;编辑模式与页签同款分段按钮;提交按钮用品牌橙药丸并吸底;追加/替换编辑区放到底稿前面,长底稿默认折叠以免把操作挤出视口。
271
- - Console「操作」模式新增人类专用的“更新并初始化”入口:默认更新 npm `latest` 稳定版,也可明确选择 `next` 预发布版;先 fail-closed 检查活跃 DAG/Worker/Chat/Console 操作与 npm 来源,再精确安装并验证所选版本、仅执行 `init update --apply-safe`,并以 hash-bound handoff 在原端口接棒新 Console。`latest` 保持稳定版且拒绝回退,`next` 仅在人工选择时允许精确 prerelease;渠道写入 operation 审计身份。Inspect 与模型工具均不能触发该写入操作。启动时不再在终端询问更新,页面会在接棒后自动刷新并通过新的 `consoleInstanceId` 识别实例。
272
- - 修复 Console 四处评审缺陷(合并前收口):① 向导「运行」进度块接通——`runDag` 只返回 operationId,原实现读的 `recovery.dagRunId` 在向导路径永远为空;现在确认页先快照基线 run、进入运行页后轮询 `observeLink`,以 (taskId, operationId) 任一变化为失效信号(operationId 覆盖「重新运行」按钮——它不改变向导步骤;taskId 覆盖运行步骤中手动改任务 ID 的场景,失效时基线一并重置,避免沿用上一任务的 run):新派发/切任务会清掉旧选中 run 并重新解析,**只接受与当前任务基线不同的新 run**;从 Recovery 带回的共享选中 run 先做归属校验——`GET /api/dag-runs/:id` 详情响应新增 `taskId` 投影(源自 run.json 的 `taskContractBinding`→`sourceBinding`→Hybrid 标题,与 observeLink/candidates 同一绑定真源,不受候选列表 limit 截断影响;404 视为失效选中、无绑定视为不可判定),非本任务的 run 不展示;校验全程由 effect 生命周期栅栏保护——任务/运行/选中在异步校验期间变化时,旧响应直接丢弃、不会改写新状态;校验暂不可用时按有界退避(2s→30s,约 2 分钟)自动重试而非被动等待状态变化,重试计划为纯函数并有行为测试;**展示层另有闸门**——进度面板与运行操作只消费「本解析器已采纳/已验证」的 run(组件 state),未验证期间(校验中、重试中、give-up 后)进度面板保持空缺,不会即时或永久显示其他任务的 DAG;「打开检视」「侧栏预览」两个入口同样双重门禁(按钮无已验证 run 即禁用 + 处理器复核 verifiedRunId),共享的 openInspectSplit 解析器不再能带出未验证的外来 run。解析决策本身抽取为纯状态机 `pages/tasks/run-id-resolution.ts`(首跑/重跑/切任务/外来选中/基线门控五类迁移),Effects 只做薄适配,主流程「确认页基线快照 → runDag 派发 → observeLink 轮询 → 新 run 采纳」有完整行为测试。基线快照为三态(成功/权威无运行/暂不可查),**查询失败不会被当成「没有历史运行」**——快照重试期间基线保持未知、探测轮询等待,不会把旧运行误判为新运行;新 run 创建失败或注册较慢时进度面板宁可空缺也不把上一次已终止的 DAG 当作当前运行(轮询上限 5 分钟后安静停止)。② 失败建议数据契约修正——旅程卡原先把原始 run 级 `failureCategory` 直接查归一化建议表(`missing-api-key`/`nonzero-exit` 等永远查不中,节点分类又在安全投影中被丢弃);现在纯分类核心下沉 `src/shared/dag-failure-category.ts`(console↔workflows 双向共享叶,不破坏 console 禁止 import workflows 的边界测试),服务端投影把 run 级与节点级分类都归一化输出(success/skipped 不出),卡片按「失败节点分类优先、run 级兜底」取值,失败卡始终有可操作建议。③ Recovery interrupt 资格轮询在运行中档位同步刷新 run 状态——原先状态只在选中时读一次,运行中的 run 结束后仍永久保持 4 秒快轮询;现在 4 秒档附带轻量 `GET /api/dag-runs/:id` 刷新 `effectiveStatus`,终态后自动退到 30 秒。④ Inspect 紧凑检视一次瞬时刷新失败不再永久显示错误——成功刷新回合会清除上一轮 error 横幅。
273
- - Operator Chat 输入框两项交互增强:① **↑/↓ 历史输入召回**——每次发送的文本进入输入历史(连续重复折叠、上限 100 条),光标在首行按 ↑ 逐条向旧回溯、按 ↓ 向新前进,越过最新一条时恢复回溯前**未发送的草稿**(草稿不会被历史浏览冲掉);多行文本中部的方向键仍是普通光标移动,IME 组词与 @文件/命令面板打开时不抢占。② **运行中排队下一轮指令**——当前回合运行中 Enter 不再被吞掉,消息作为「排队消息」绑定当前 Turn(服务端 `PUT deferred-turn` 从仅限 stopping 放开为 running/stopping,错误码 `TURN_NOT_STOPPING`→`TURN_NOT_ACTIVE`),当前回合结束(正常完成或停止)后自动发送;排队条提供「立即发送」(停止当前回复并立即发出)、「编辑」(移回输入框改写后再排)、「删除」三种操作,运行中输入框右侧提供排队发送按钮(与停止按钮并列);排队条单行展示(状态 + 省略号预览 + 操作按钮一行),输入框默认一行高(自动增高上限 280px 不变)。
274
- - 向导「运行」面板结构化与预期管理(A2/C9):新增实时运行进度块——节点完成计数与百分比进度条(含 progressbar 无障碍语义)、当前运行节点名称与已运行时长、失败节点与错误摘要,数据来自 `/api/dag-runs/:id` 每 5 秒轮询并在终态自动停止;`effectiveStatus=running-suspected-stall` 时显示橙色「疑似停滞」提示条(建议打开检视查看节点活动或到恢复页协作中止/诊断),把 20–40 分钟长跑的「日志噪音等待」变为有阶段感、可判断的等待。原始 SSE 事件日志默认折叠为「原始事件日志(最近 80 条)」,需要排查时再展开。
275
- - Console 前端三项体验优化(P0/P2):① Recovery 页 DAG 紧凑检视侧栏(InspectSplitPanel)从一次性快照改为实时刷新——运行中每 5 秒自动拉取节点/事件并新增「进行中/已结束」刷新状态行,到达终态(finished/failed/partial_failed/superseded/abandoned)自动停止轮询,刷新轮不清空既有内容避免闪烁;② Chat 任务旅程卡失败态新增按归一化 failureCategory 的可操作「建议」行(validation/executor/write-guard/timeout/auth/human-required/human-rejected/shell-command/static-error/decision-envelope/unknown 各映射到具体下一步:从失败节点重跑、修正契约后重新生成、跳「模型与认证」页等),不再只报「原因分类为 X」;③ Recovery 页 interrupt 资格轮询退避:选中 run 已终态(含 interrupted)时从 4 秒降到 30 秒,运行中保持 4 秒。
276
- - Console 对话页 Models 面板的模型管理增强:以弹框形式增/改/删 Pi 的模型条目,支持 6 个定义字段(id、name、contextWindow、maxTokens、input、reasoning)。新增时 Provider 用下拉选择、其余字段自动补默认值;编辑时 Provider 只读且仅在原位置就地替换,只改表单内字段、不覆盖配置里页面未展示的其它字段(如 cost/compat);不读写 API key(凭据走 Pi CLI)。编辑已存在的模型不再被移到最后。(该能力仅在对话页提供,设置页不再重复入口。)
277
- - 修复 `markdown-traceability` pipeline 未将冻结 `backendLayout` 传给 `validateBackendMarkdownTraceability`,自定义 layout 下不再回落默认 `testcase/md` ENOENT;新增回归用例以非默认 nested layout(`testRoot=testcase/elb/remote`、`markdownRel=md`)执行真实 shell pipeline,traceability 从自定义 Markdown 目录读取并 PASS,默认 layout 行为不变。(验证:`npm run typecheck`、`npx vitest run test/backend-test-markdown-workflow.test.ts test/backend-test-layout.test.ts`、`npm run build`、`git diff --check`。)
278
- - backend-test 快速补强(backend-test-fast-failclosed-attribution):两处 fail-open 缺口已 fail-closed。① 当前轮次 Markdown 作用域严格依赖唯一有效 `## Module Index`——README 缺失 / 不可读 / `## Module Index` 重复(或缺标题)/ 唯一但空或不可解析任一状态,`markdownFiles` 与 coverage `markdownModuleFiles` 均返回空作用域而非回退全目录扫描,历史 `.md` 不再渗入 Case/coverage/partition facts,`resolveBackendTestManifestModules` 新增可区分 `manifestStatus`(valid/missing/unreadable/duplicate/empty-unparsable)与 `moduleIndexHeadingCount`,`validateBackendMarkdownCases` 与 `analyzeBackendTestCaseCoverage` 为非法状态各推 FAIL finding,默认与自定义 `backendTest` 布局一致。② collection 分类器不再凭 `__NNN_*` 裸 import 名称单独判 REPAIRABLE:inventory 构建时预计算每个 mapped script 的裸本地 helper import 证据(`scriptBareImports`),只有「存在同名 generated-local helper asset 且 mapped script 源码确实 import 该裸模块」才判 REPAIRABLE 并给精确 repairPaths;无 helper asset / mapped script 无对应 import / 无法精确归因一律 `BLOCKED`(`missing-generated-local-helper-without-evidence`。真第三方模块缺失保持 BLOCKED,不通过 PYTHONPATH/sys.path/conftest/ImportError fallback 绕行。(验证:`npm run typecheck`、backend-test 四聚焦 vitest、`npm run build`、`git diff --check`。)
279
- - backend-test 后续修复(backend-test-fast-manifest-import-fix):Markdown 用例校验与 coverage 分析改为按 README `## Module Index` 清单限定本轮有效模块资产——未声明旧 `.md`(如 legacy.md)不再进入 Case/coverage/partition 统计,报告改为显式非静默 unmanifested advisory;“清单声明但文件缺失” fail-closed 明确失败,默认与自定义 `backendTest` 布局统一生效。generated pytest 裸本地 helper import(`from __551_manager_helpers import ...`)在 writer completeness gate 判为 recoverable 并给出精确 mapped 脚本 target path;collection 分类器对可归因到 mapped 资产的裸本地 helper `ModuleNotFoundError` 判 REPAIRABLE 并提供精确 repairPaths,真正第三方依赖缺失仍保持 BLOCKED。不放宽 self-contained、writeSet、forbiddenPaths、skip/xfail、断言与单次业务执行约束(验证:`npm run typecheck`、backend-test 聚焦 vitest、`npm run build`、`git diff --check`)。
280
- - 前端风险分级细分 manifest 触及语义:`allowedPaths` 含 `package.json`/lockfile 或需求文本提到 package.json 不再单独触发 `new-dependency` high-risk(改一行 script、调构建参数的任务不再被顶到强制全门禁并误标高风险),只有任务文本同时出现安装语言(npm install / yarn add / pnpm add / 新增依赖等)才升级;仅路径触及时记 `new-dependency:manifest-path-without-install-language` 拒绝信号,审计可溯。
281
- - 前端验证 fallback 生成期诚实化:真实项目无可读取的 `package.json` scripts 且未探测到本地 tsc 时,不再注入必然失败的 `npm run typecheck` / `npm run build` / `npm test`(纯静态 / vanilla JS 站点原会在 verify 阶段假失败),改为执行显式 no-op 标记命令(`No frontend verification command configured`,进入冻结命令集可被 contract 引用,trace 如实记录 not-run),并写生成期 advisory 提示用 `--verify` 或执行约束显式声明验证命令后重新生成 DAG。无 repoRoot 的单测 fixture 保留历史 generic fallback。**标记不构成验证证据(fail-closed)**:verification trace 将绑定标记的 target 判为失败、只含标记的 static 证据判为 unavailable,repair 分类归为 non-repairable `contract`,verify 节点以 `frontend verification unavailable` 硬失败阻断 review/closeout——无真实验证命令的 run 无法走完绿灯链。
282
- - frontend-test `passed` 回执链改按 dispatch 序号判序(B-HASH-01):`summarizePlaywrightCliReceipts` 先按 `sequence` 排序再判 open→find→cleanup 连续链;并行 `find`/`screenshot` 按完成时间落盘导致的乱序不再误杀执行已通过的 case(Wave 1 实测 4 条 passed 被改判 `browser-command-evidence-missing`)。真 gap / 重复序号仍 fail-closed。
283
- - `tool-policy` 失败归一为 `executor`(B-REC-03):前端 preflight 能力拒绝(缺 `@playwright/cli` JS entry、allowlist 拒绝)不再落 `unknown`→`manual-review`+`humanRequired`;`dag report` 给出 `rerun-after-fix`,Console `standaloneTaskRerun` 的 R2 gate 放行 run-failed 同 task 整单重跑,无需人工决策门或 sibling task。
284
- - Operator Chrome Band1 模式切换入口补显式 `aria-label`(B-FIND-01,方案 A):`操作`/`观测` mode link 原为 inline-flex 裸文本节点,不参与 name-from-content,a11y snapshot 序列化为无名 link,`find` 无法断言;补 `aria-label` 后实测 `find "观测"` 1 命中、click 后 `find "运行总览"` 1 命中,AC-FE-CHROME-003 恢复可见断言路径。
285
- - Inspect 异常 Task 页空态文案统一(B-FIND-02):`failures.js` 运行时空态由 `当前没有失败或阻塞的 Task。` 改回与静态 `#failures-empty`、页面标题及回归目录 AC-FE-INS-004 一致的 `当前没有异常 Task`,消除静态/运行时文案漂移;实测新文案 find 1 命中、旧文案 0 命中。
286
-
287
- - `next-release.yml` 防重复发布守卫补充幂等语义:`mode=recover`(dist-tags.next 已指向出自本 HEAD 的 tarball)时,手动 `workflow_dispatch` 重入不再撞 duplicate publish 硬失败,改为写 summary 后干净退出(§5.1 规则 4);非 recover 的重复发布仍硬失败。
288
-
289
- - frozen repair 工具审计改为按 attempt 段扫描(B1):`session-events.jsonl` 跨 attempt 共享追加,attempt>1 的 `auditRepairAttemptToolUse` 现在只审本 attempt 字节段(newline 对齐),planner attempt 1 的 ls/find 不再被误判给 repair 轮;repair prompt 显式声明 read-only 工具契约与 allowlist 边界(B2),并内嵌 openspec-citations 输出格式正例;`LOOP_AGENT_IGNORE_STALE_DIST=1` 环境变量旁路 stale-dist guard(B3),Console spawn 的 sibling CLI 可继承。
290
- - frontend plan/revision 结构化输出改为冻结 repair context + hash-bound canonical artifact:attempt>1 不再重放完整 planner prompt;成功后 stdout 只保留 artifact 路径,design review / prewrite 只消费已校验 artifact,不再从节点文本 merge。失败分类补齐 `structured-repair-exhausted` / `governance-blocked`,并修正 `structured-output-truncated` / `output-too-large` 的归一化映射。
291
- - 将 `@earendil-works/pi-ai` 与 `@earendil-works/pi-coding-agent` 从可选依赖提升为精确 pin 的运行时依赖 `0.83.0`,将运行时直接导入的 `typebox` 精确声明为 `1.3.7`,并在根包声明 Node.js `>=22.19.0`。安装 `@tea-agent/loop-agent` 会默认装上 Pi SDK(含 `--omit=optional` 场景);`@cursor/sdk` 仍保持 optional。availability / readiness 探针、隔离 tarball canary、发布包契约测试与安装/本地环境说明同步对齐。
292
- - backend-test Scenario Partition 仅接受绑定源有限 enum/分类集合的 GET/list query/path 轴;非法 Domain(空/重复/保留 token、无有限域、与 OpenAPI enum 不一致)报 `INVALID_PARTITION_DOMAIN` / `NO_FINITE_DOMAIN` / `PARTITION_SOURCE_MISMATCH` 根因,不再生成空后缀 `TP-SP-...-`、重复 slot,也不再级联 `MISSING_*_SLOT`。N6 对这些根因码 fail-closed;合法源分区缺槽仍阻断。N2 禁止为自由串/主键/required-only/boundary-only 建分区;N5 允许删除无源非法 Partition 及其派生槽位。
293
- - npm `next` 渠道发布改为提交数节流:main push 仅当距上次 next 发布的 source commit ≥ 5 个 commit 时才自动发布(新增 `scripts/next-publish-gate.mjs`,读已发布 tarball build-stamp 对比 HEAD);不足阈值时 workflow 绿色跳过,手动 `workflow_dispatch` 不受限(切 release 线前强制出包 / 紧急补发)。发布文档真源 §4.1/§5.1/§7/§12 同步。
294
-
295
- - Console「Pi 插件」增强:已安装插件显示实际安装版本;安装时提供版本下拉(从 npm 配置的仓库拉取该包全部已发布版本,默认装最新);版本号带 `@version` 的已装包(如 `npm:pi-lens@3.8.72`)也能被正确识别为已安装。
296
- - Console「Pi 插件」的版本号改为从 **npm 配置的仓库地址**(`npm config get registry`)拉取,不再硬编码官方源,内网镜像可用;安装/卸载进度条改用 JS(requestAnimationFrame)驱动,不受系统「减少动态效果」影响,任何环境都显示滑动动画。
297
- - Console「操作」页的「Pi 插件」从「设置」页提升为与「设置」同级的独立 tab(`/#/operate/pi-plugins`):共享壳操作导航新增入口,独立子面板承载插件目录/搜索/分页/一键安装卸载。
298
- - Console 设置页新增「Pi 插件」区块:内置一份经 npm 校验的插件目录(6303 个,仅展示 5562 个可安装、含中文说明),支持搜索、每页条数(10/20/50/100)、分页、一键安装/卸载(调用 `pi install/remove`,全局 `~/.pi/agent`),安装/卸载带进度过渡与结果提示。
299
- - CLI 命令 `--help` 现在直接显示真实 usage(此前 raw-args 命令只在解析出错时才抛 usage):`task advance` / `task status` / `task source prepare` 与 `dag resume|doctor|report|reconcile-run|rerun|rerun-task|reject|approve|status` 的 `--help` 顶部即列出完整参数契约,`task advance` 并附 `--verify "label:command"` 示例;`init` 提示补全局 `--repo-root <path>`(置于子命令前)约定。
300
- - `task source prepare`(确定性任务源投影,managed 需求.md/执行约束.md)从死代码转正:此前 `TASK_SUBCOMMANDS` 缺少 `source` 导致命令不可达,现 `task source prepare <task-id> --from-text/--from-file/--from-stdin/--from-draft --dry-run|--apply` 可直接调用。
301
- - Console 对话页「轨迹」视图响应式优化:轨迹列宽跟随面板实际宽度收缩(`.oc-trajectory` 加 `width:100%`、`.oc-trajectory-turn/.step` 加 `min-width:0` 修 flex 收缩链),窄窗口(≤720px)自动隐藏耗时列,避免工具行被固定项挤爆。
302
- - Console 对话页新增「轨迹」视图(详情侧栏 tab):仿 DSH ui-trajectory,用本仓库 turnGroups 数据把对话按「用户 → 过程 → AI 回复」渲染成统一单元格列表,每行带 kind 标签 + 图标(用户/ AI / 思考 / 工具 / 活动 / 错误 / 压缩);用户与 AI 用标签颜色 + 图标区分,AI 中间文本也标注;思考、工具、以及超长用户/AI 消息默认单行截断、可展开/收起看全文(含工具参数与结果、状态与耗时)。支持一键「导出 HTML」自包含文件(长内容用 `<details>` 折叠,短内容内联)。主会话思考块标签由英文 Think 改为「思考」。
303
- - DAG 检查器节点「执行过程」的「导出 HTML」改为复用页面真实渲染与样式,导出的独立 HTML 排版与页面一致;Pi 会话节点导出会带上原始协议事件,左上角提供「展开/隐藏原始协议事件」按钮(默认隐藏,每项仍可单独展开),shell/静态节点导出同样与页面一致。- backend-test 的 pytest repair 现在继续使用 run-owned plan,不再搜索测试目录 README;correspondence finding 会直接指向 docstring、参数 ID、符号、脚本或 payload 的修复位置,collection/scenario repair 与 generated-local Python 写边界保持一致,并在单次 Pi 会话达到 24 轮或 80K 最大 usage snapshot 前受控返回 partial failure。
304
- - Operator Chat 新增持续目标模式:可以用 `/goal` 或输入框上方的目标条创建跨多个回合推进的目标,并随时暂停、继续、编辑或清除;刷新后仍能看到目标,但重启 Console 后不会未经确认自行续跑。
305
- - Operator Chat 现在可以在同一个页面管理多个工作区;每个会话始终使用创建它的工作区,切换对话时地址栏保持简洁稳定。
306
- - 对话消息流整体调整为更紧凑、清晰的布局,思考过程、工具执行、阶段性结果和最终回答会按真实发生顺序展示。
307
- - 上下文过大时会自动压缩并继续原请求,消息流会依次展示触发原因、压缩进度和压缩结果;手动压缩也使用同一套展示方式。
308
- - Operator Chat 与 DAG Pi 节点默认开启上下文压力处理:发送前接近窗口时压缩一次、识别网关「请求上下文过大」后压缩续跑,并对 OpenAI 格式的大工具输出做线路压缩;可用环境变量关闭,不必改会话记录。
309
- - 对话进行中可以连续提交多条消息,并支持编辑、删除或立即插入当前回复;刷新页面或重启 Console 后,未发送内容仍会保留。
310
-
311
- - Operator Chat 多次输入排队对齐 DSH Web:运行中的连续输入改为持久化 FIFO 队列,不再用后一条覆盖前一条;单条直接展示,多条默认折叠为数量栏,展开后逐行提供内联编辑、删除和插话发送。队列 Dock 使用与 DSH 一致的外层定位与内层面板结构,标题固定、仅消息列表滚动,并在编辑或请求期间锁定折叠操作。编辑/删除以消息 ID + revision 做并发保护,插话复用 Pi `steer` 注入当前回合,其余消息继续按顺序在回合结束后自动发送;队列通过会话快照与 SSE 权威数组恢复,刷新或 Console 重启不丢失。
312
- - Operator Chat 右侧辅助栏统一上下文与调用记录:输入框的上下文环、调用记录入口现在复用文件/DAG 侧栏;「文件」常驻,「上下文 / 调用记录」按入口临时添加并支持独立 `×` 关闭,关闭后回到文件 Tab;点击已选入口可收起侧栏,切换到上下文时同步开启注入状态,收起时仅关闭注入而保留上下文数据。上下文与工具调用内容改为内嵌布局,不再叠加独立弹窗、遮罩、焦点陷阱或重复关闭按钮,并补充 Tab 切换与侧栏开合动画;修复折叠态右侧展开按钮无法恢复侧栏的问题。
313
- - Operator Chat 手动 compact 消息流对齐 DSH Web:压缩中在时间线显示状态行,完成后显示默认折叠的 `compact` 摘要边界,点击可展开完整 Markdown 压缩结果;compact 事件通过 SSE 与 session 详情快照双路径恢复,使用事件 ID 去重,刷新/重新进入会话不丢失。Pi compaction 会把摘要写入 session context,后续模型请求继续使用压缩后的上下文。
314
- - Operator Chat 对齐 DSH Web Todo 能力:新增 `todo_write` 整表替换工具与内容校验,Todo 状态通过会话事件持久化并支持刷新恢复;新一轮开始自动清空,输入框上方展示默认折叠的任务面板(待处理虚线圆环、进行中旋转圆环与完成勾选),消息流使用专用“更新任务清单”摘要行;手动压缩上下文时会把当前完整 Todo 列表合并进压缩指令,避免摘要遗漏仍在执行的任务。
315
- - Todo 压缩续跑保护:保留 Pi 默认压缩算法,在手动、阈值或上下文溢出压缩成功后的同一轮下一次模型请求前,临时注入当前完整 Todo 内容与状态;下一轮按 DSH 生命周期清空,避免旧任务串入新对话。
316
- - Operator Chat 的 `ask_user_question` 提问卡片进一步对齐 DSH Web:问题协议新增 Markdown `detail` 说明;选项标签、推荐标记与描述按同一行自然换行,多选仅由 checkbox 表达勾选而不再整行强高亮;自定义回答按单选编辑图标/多选 checkbox 区分,并使用最多六行的镜像自增高输入框;卡片滚动、悬浮/选中动画、窄屏间距和无障碍 tooltip 同步 DSH 行为。
317
- - Console 多工作区作用域模型收敛(2026-08-26):对话页顶部不再渲染工作区切换器,工作区添加/选择/新建会话只保留在左侧 Workspace browser;会话按创建工作区持久归属,打开会话后的对话、文件与仓库能力请求全部路由该 session 的 owning workspaceId,与当前全局 active workspace 无关,切换 Operate/Inspect 活动工作区不再泄漏跨工作区数据;新建会话必须携带已知 workspaceId,缺失或未知时前后端一致 fail closed(400 `WORKSPACE_REQUIRED` / 404 `WORKSPACE_NOT_FOUND`),绝不回退默认工作区;Operate 顶部切换工作区为硬作用域边界——中止旧 operation SSE、清空 taskId/dagRunId/operationId/确认态并以新 workspaceId 重新加载;readiness、recovery candidates、night jobs/doctor/morning/ticker 与全部 Observe GET 改为显式 `?workspaceId=` 作用域(`/api/health` 保持进程级),Observe 工作区切换严格按 abort old → clear old → set scope → route/reload new 原子顺序执行,消除旧作用域请求新路由的竞态窗口。
318
-
319
- - Operator Console 顶栏以对话页为统一基准:Logo 与工作区入口固定在左侧,「对话 / 操作 / 观测」使用视口居中的三等分胶囊与 190ms 横向滑动选中态;切换页面时复用同一个滑块 DOM 节点,避免顶栏更新中断过渡而闪到终点,也不再因仓库身份、状态胶囊或不同内容宽度发生位移;原“仓库身份”改为消费唯一多工作区控制器的工作区下拉,保持列表顺序,切换后停留在当前主页面,并让对话、操作请求与观测数据继续携带同一 `workspaceId`。
320
- - Operator Chat 右侧文件工作台对齐 `dsh-better-sidebar@0.16.1`:辅助栏宽度不再受固定 520px 上限限制,拖拽宽度随视口钳制并跨会话持久化;文件打开后采用左侧预览、右侧文件树布局,树宽可在 160–480px 间独立拖动。文件 Tab 内置关闭按钮,「预览 / 源文件」与「新窗口打开」收为右侧紧凑工具区;Tab 悬浮、选中与键盘焦点统一为整行反馈,不再出现文件名和关闭按钮各自高亮;预览滚动条同步模型选择器的低对比细滚动条样式。
321
- - Operator Chat 工具执行状态进一步对齐 DSH Web:成功后不再显示“完成”标签,错误时以红色状态点和错误首行替换普通图标、参数摘要,运行中以低对比扫光表达状态;Think 与工具行统一为 14/24,Think 正文继承界面正文字体,Bash/代码输出保留 12/18 等宽字体;折叠态显示语义图标、悬浮时切换展开箭头,未知工具使用 Sparkle 图标;状态文字继续通过无障碍文本提供,错误详情仍默认展开,右侧“工具调用记录”诊断面板保持不变。
322
- - Operator Chat 输入框把模型与推理等级合并为一个 DSH 风格入口:根菜单分为“模型 / 推理等级”,模型仍按供应商分组,`Auto` 同时显示 Pi 当前实际档位。
323
- - Operator Chat 输入框下方统计栏对齐 DSH Web:移除长期硬编码的 `轮/步 —`、`LLM —`、`首 token —` 等占位,改由服务端从持久会话事件投影真实轮数、步骤数、LLM/工具耗时与 token/cache 汇总,刷新或切换历史会话后仍可恢复;新回复同时记录每个 assistant step 的首 token、解码时长和输出 token,结束后自动刷新并展示平均 TTFT 与 tok/s。展示按 DSH 使用 `|` 分组、组内 `·`,没有可靠证据的整组直接隐藏,超长单行省略并保留完整悬浮文本。
324
- - Operator Chat 消息流对齐 DSH Web:彻底移除历史回合中的“处理详情”聚合入口以及残留的 `Assistant process` 展示容器,Think、进展、阶段性正文、Bash/Read/Search/Edit/Web/MCP 等工具调用与最终回答作为轮次下的同级节点,按真实事件顺序直接展示;Think 与工具行显式左对齐,不再继承全局按钮的横向居中,运行中 Think 展开、历史 Think 折叠,右侧“工具调用记录”诊断面板继续保留。回答正文、Think、工具行与代码输出同步采用 DSH 的字号和行高基准。
325
- - Operator Chat Markdown 表格对齐 DSH Web:三列及以下表格在 748px 正文列内自动换行,四列及以上表格扩展利用整个消息视口;宽表静止时不再常驻横向滚动条,只有内容确实溢出且鼠标悬浮或键盘聚焦时才显示,窄视口自动回退为列内安全滚动。
326
- - 新增源码仓库专用 `npm run console:dev`:浏览器继续固定使用 8790 的真实同源接口与 mutation gate,8790 仅把前端模块代理给内部 loopback Vite;CSS 原地 HMR、TSX 自动整页刷新,后台类型检查不阻塞视觉循环,Console 后端依赖变化只重启受监督源码子进程。正式 build、发布包与 init surface 不变。
327
- - Operator Chat 左侧会话行按 DSH Web 保留 2px 相邻间距,选中/悬浮背景不再黏连;工作区行隔离鼠标点击焦点,鼠标移开即恢复,仅键盘 `focus-visible` 与打开菜单时保留聚焦反馈;Console mutation gate 修正同端口 `localhost`、`127.0.0.1` 与 `[::1]` 回环别名误判,并把新建会话的安全闸错误转换为可操作中文提示。
328
- - Operator Chat 左侧工作区与会话的悬浮/键盘聚焦状态改为行级隔离:会话仍归属工作区分组,但悬浮或聚焦会话时不再连带高亮工作区行、切换工作区图标或显示工作区操作按钮;工作区自身的悬浮卡片和菜单保持原行为。
329
- - Operator Console 收敛为常驻单壳:一级导航改为「对话 / 操作 / 观测」。对话与操作工作区保活不卸载;观测工作区首次动态挂载 `inspect-workspace.js`,切走 `setActive(false)` 暂停轮询。对话模式没有二级页签时直接隐藏空标签带与折叠按钮,不覆盖操作/观测已有的折叠偏好。产品观测入口(Night 深链、Recovery 全屏、InspectSplitPanel、对话卡片)一律写入 Console canonical hash(`/#/inspect...`),独立 `/inspect/#/...` 仅作兼容入口。
330
- - Console DAG 检查器「提示词重启」面板改为与检查器一致的卡片层级:版本选择复用自定义下拉;编辑模式与页签同款分段按钮;提交按钮用品牌橙药丸并吸底;追加/替换编辑区放到底稿前面,长底稿默认折叠以免把操作挤出视口。
331
- - Console「操作」模式新增人类专用的“更新并初始化”入口:默认更新 npm `latest` 稳定版,也可明确选择 `next` 预发布版;先 fail-closed 检查活跃 DAG/Worker/Chat/Console 操作与 npm 来源,再精确安装并验证所选版本、仅执行 `init update --apply-safe`,并以 hash-bound handoff 在原端口接棒新 Console。`latest` 保持稳定版且拒绝回退,`next` 仅在人工选择时允许精确 prerelease;渠道写入 operation 审计身份。Inspect 与模型工具均不能触发该写入操作。启动时不再在终端询问更新,页面会在接棒后自动刷新并通过新的 `consoleInstanceId` 识别实例。
332
- - 修复 Console 四处评审缺陷(合并前收口):① 向导「运行」进度块接通——`runDag` 只返回 operationId,原实现读的 `recovery.dagRunId` 在向导路径永远为空;现在确认页先快照基线 run、进入运行页后轮询 `observeLink`,以 (taskId, operationId) 任一变化为失效信号(operationId 覆盖「重新运行」按钮——它不改变向导步骤;taskId 覆盖运行步骤中手动改任务 ID 的场景,失效时基线一并重置,避免沿用上一任务的 run):新派发/切任务会清掉旧选中 run 并重新解析,**只接受与当前任务基线不同的新 run**;从 Recovery 带回的共享选中 run 先做归属校验——`GET /api/dag-runs/:id` 详情响应新增 `taskId` 投影(源自 run.json 的 `taskContractBinding`→`sourceBinding`→Hybrid 标题,与 observeLink/candidates 同一绑定真源,不受候选列表 limit 截断影响;404 视为失效选中、无绑定视为不可判定),非本任务的 run 不展示;校验全程由 effect 生命周期栅栏保护——任务/运行/选中在异步校验期间变化时,旧响应直接丢弃、不会改写新状态;校验暂不可用时按有界退避(2s→30s,约 2 分钟)自动重试而非被动等待状态变化,重试计划为纯函数并有行为测试;**展示层另有闸门**——进度面板与运行操作只消费「本解析器已采纳/已验证」的 run(组件 state),未验证期间(校验中、重试中、give-up 后)进度面板保持空缺,不会即时或永久显示其他任务的 DAG;「打开检视」「侧栏预览」两个入口同样双重门禁(按钮无已验证 run 即禁用 + 处理器复核 verifiedRunId),共享的 openInspectSplit 解析器不再能带出未验证的外来 run。解析决策本身抽取为纯状态机 `pages/tasks/run-id-resolution.ts`(首跑/重跑/切任务/外来选中/基线门控五类迁移),Effects 只做薄适配,主流程「确认页基线快照 → runDag 派发 → observeLink 轮询 → 新 run 采纳」有完整行为测试。基线快照为三态(成功/权威无运行/暂不可查),**查询失败不会被当成「没有历史运行」**——快照重试期间基线保持未知、探测轮询等待,不会把旧运行误判为新运行;新 run 创建失败或注册较慢时进度面板宁可空缺也不把上一次已终止的 DAG 当作当前运行(轮询上限 5 分钟后安静停止)。② 失败建议数据契约修正——旅程卡原先把原始 run 级 `failureCategory` 直接查归一化建议表(`missing-api-key`/`nonzero-exit` 等永远查不中,节点分类又在安全投影中被丢弃);现在纯分类核心下沉 `src/shared/dag-failure-category.ts`(console↔workflows 双向共享叶,不破坏 console 禁止 import workflows 的边界测试),服务端投影把 run 级与节点级分类都归一化输出(success/skipped 不出),卡片按「失败节点分类优先、run 级兜底」取值,失败卡始终有可操作建议。③ Recovery interrupt 资格轮询在运行中档位同步刷新 run 状态——原先状态只在选中时读一次,运行中的 run 结束后仍永久保持 4 秒快轮询;现在 4 秒档附带轻量 `GET /api/dag-runs/:id` 刷新 `effectiveStatus`,终态后自动退到 30 秒。④ Inspect 紧凑检视一次瞬时刷新失败不再永久显示错误——成功刷新回合会清除上一轮 error 横幅。
333
- - Operator Chat 输入框两项交互增强:① **↑/↓ 历史输入召回**——每次发送的文本进入输入历史(连续重复折叠、上限 100 条),光标在首行按 ↑ 逐条向旧回溯、按 ↓ 向新前进,越过最新一条时恢复回溯前**未发送的草稿**(草稿不会被历史浏览冲掉);多行文本中部的方向键仍是普通光标移动,IME 组词与 @文件/命令面板打开时不抢占。② **运行中排队下一轮指令**——当前回合运行中 Enter 不再被吞掉,消息作为「排队消息」绑定当前 Turn(服务端 `PUT deferred-turn` 从仅限 stopping 放开为 running/stopping,错误码 `TURN_NOT_STOPPING`→`TURN_NOT_ACTIVE`),当前回合结束(正常完成或停止)后自动发送;排队条提供「立即发送」(停止当前回复并立即发出)、「编辑」(移回输入框改写后再排)、「删除」三种操作,运行中输入框右侧提供排队发送按钮(与停止按钮并列);排队条单行展示(状态 + 省略号预览 + 操作按钮一行),输入框默认一行高(自动增高上限 280px 不变)。
334
- - 向导「运行」面板结构化与预期管理(A2/C9):新增实时运行进度块——节点完成计数与百分比进度条(含 progressbar 无障碍语义)、当前运行节点名称与已运行时长、失败节点与错误摘要,数据来自 `/api/dag-runs/:id` 每 5 秒轮询并在终态自动停止;`effectiveStatus=running-suspected-stall` 时显示橙色「疑似停滞」提示条(建议打开检视查看节点活动或到恢复页协作中止/诊断),把 20–40 分钟长跑的「日志噪音等待」变为有阶段感、可判断的等待。原始 SSE 事件日志默认折叠为「原始事件日志(最近 80 条)」,需要排查时再展开。
335
- - Console 前端三项体验优化(P0/P2):① Recovery 页 DAG 紧凑检视侧栏(InspectSplitPanel)从一次性快照改为实时刷新——运行中每 5 秒自动拉取节点/事件并新增「进行中/已结束」刷新状态行,到达终态(finished/failed/partial_failed/superseded/abandoned)自动停止轮询,刷新轮不清空既有内容避免闪烁;② Chat 任务旅程卡失败态新增按归一化 failureCategory 的可操作「建议」行(validation/executor/write-guard/timeout/auth/human-required/human-rejected/shell-command/static-error/decision-envelope/unknown 各映射到具体下一步:从失败节点重跑、修正契约后重新生成、跳「模型与认证」页等),不再只报「原因分类为 X」;③ Recovery 页 interrupt 资格轮询退避:选中 run 已终态(含 interrupted)时从 4 秒降到 30 秒,运行中保持 4 秒。
336
- - Console 对话页 Models 面板的模型管理增强:以弹框形式增/改/删 Pi 的模型条目,支持 6 个定义字段(id、name、contextWindow、maxTokens、input、reasoning)。新增时 Provider 用下拉选择、其余字段自动补默认值;编辑时 Provider 只读且仅在原位置就地替换,只改表单内字段、不覆盖配置里页面未展示的其它字段(如 cost/compat);不读写 API key(凭据走 Pi CLI)。编辑已存在的模型不再被移到最后。(该能力仅在对话页提供,设置页不再重复入口。)
337
- - 修复 `markdown-traceability` pipeline 未将冻结 `backendLayout` 传给 `validateBackendMarkdownTraceability`,自定义 layout 下不再回落默认 `testcase/md` ENOENT;新增回归用例以非默认 nested layout(`testRoot=testcase/elb/remote`、`markdownRel=md`)执行真实 shell pipeline,traceability 从自定义 Markdown 目录读取并 PASS,默认 layout 行为不变。(验证:`npm run typecheck`、`npx vitest run test/backend-test-markdown-workflow.test.ts test/backend-test-layout.test.ts`、`npm run build`、`git diff --check`。)
338
- - backend-test 快速补强(backend-test-fast-failclosed-attribution):两处 fail-open 缺口已 fail-closed。① 当前轮次 Markdown 作用域严格依赖唯一有效 `## Module Index`——README 缺失 / 不可读 / `## Module Index` 重复(或缺标题)/ 唯一但空或不可解析任一状态,`markdownFiles` 与 coverage `markdownModuleFiles` 均返回空作用域而非回退全目录扫描,历史 `.md` 不再渗入 Case/coverage/partition facts,`resolveBackendTestManifestModules` 新增可区分 `manifestStatus`(valid/missing/unreadable/duplicate/empty-unparsable)与 `moduleIndexHeadingCount`,`validateBackendMarkdownCases` 与 `analyzeBackendTestCaseCoverage` 为非法状态各推 FAIL finding,默认与自定义 `backendTest` 布局一致。② collection 分类器不再凭 `__NNN_*` 裸 import 名称单独判 REPAIRABLE:inventory 构建时预计算每个 mapped script 的裸本地 helper import 证据(`scriptBareImports`),只有「存在同名 generated-local helper asset 且 mapped script 源码确实 import 该裸模块」才判 REPAIRABLE 并给精确 repairPaths;无 helper asset / mapped script 无对应 import / 无法精确归因一律 `BLOCKED`(`missing-generated-local-helper-without-evidence`。真第三方模块缺失保持 BLOCKED,不通过 PYTHONPATH/sys.path/conftest/ImportError fallback 绕行。(验证:`npm run typecheck`、backend-test 四聚焦 vitest、`npm run build`、`git diff --check`。)
339
- - backend-test 后续修复(backend-test-fast-manifest-import-fix):Markdown 用例校验与 coverage 分析改为按 README `## Module Index` 清单限定本轮有效模块资产——未声明旧 `.md`(如 legacy.md)不再进入 Case/coverage/partition 统计,报告改为显式非静默 unmanifested advisory;“清单声明但文件缺失” fail-closed 明确失败,默认与自定义 `backendTest` 布局统一生效。generated pytest 裸本地 helper import(`from __551_manager_helpers import ...`)在 writer completeness gate 判为 recoverable 并给出精确 mapped 脚本 target path;collection 分类器对可归因到 mapped 资产的裸本地 helper `ModuleNotFoundError` 判 REPAIRABLE 并提供精确 repairPaths,真正第三方依赖缺失仍保持 BLOCKED。不放宽 self-contained、writeSet、forbiddenPaths、skip/xfail、断言与单次业务执行约束(验证:`npm run typecheck`、backend-test 聚焦 vitest、`npm run build`、`git diff --check`)。
340
- - 前端风险分级细分 manifest 触及语义:`allowedPaths` 含 `package.json`/lockfile 或需求文本提到 package.json 不再单独触发 `new-dependency` high-risk(改一行 script、调构建参数的任务不再被顶到强制全门禁并误标高风险),只有任务文本同时出现安装语言(npm install / yarn add / pnpm add / 新增依赖等)才升级;仅路径触及时记 `new-dependency:manifest-path-without-install-language` 拒绝信号,审计可溯。
341
- - 前端验证 fallback 生成期诚实化:真实项目无可读取的 `package.json` scripts 且未探测到本地 tsc 时,不再注入必然失败的 `npm run typecheck` / `npm run build` / `npm test`(纯静态 / vanilla JS 站点原会在 verify 阶段假失败),改为执行显式 no-op 标记命令(`No frontend verification command configured`,进入冻结命令集可被 contract 引用,trace 如实记录 not-run),并写生成期 advisory 提示用 `--verify` 或执行约束显式声明验证命令后重新生成 DAG。无 repoRoot 的单测 fixture 保留历史 generic fallback。**标记不构成验证证据(fail-closed)**:verification trace 将绑定标记的 target 判为失败、只含标记的 static 证据判为 unavailable,repair 分类归为 non-repairable `contract`,verify 节点以 `frontend verification unavailable` 硬失败阻断 review/closeout——无真实验证命令的 run 无法走完绿灯链。
342
- - frontend-test `passed` 回执链改按 dispatch 序号判序(B-HASH-01):`summarizePlaywrightCliReceipts` 先按 `sequence` 排序再判 open→find→cleanup 连续链;并行 `find`/`screenshot` 按完成时间落盘导致的乱序不再误杀执行已通过的 case(Wave 1 实测 4 条 passed 被改判 `browser-command-evidence-missing`)。真 gap / 重复序号仍 fail-closed。
343
- - `tool-policy` 失败归一为 `executor`(B-REC-03):前端 preflight 能力拒绝(缺 `@playwright/cli` JS entry、allowlist 拒绝)不再落 `unknown`→`manual-review`+`humanRequired`;`dag report` 给出 `rerun-after-fix`,Console `standaloneTaskRerun` 的 R2 gate 放行 run-failed 同 task 整单重跑,无需人工决策门或 sibling task。
344
- - Operator Chrome Band1 模式切换入口补显式 `aria-label`(B-FIND-01,方案 A):`操作`/`观测` mode link 原为 inline-flex 裸文本节点,不参与 name-from-content,a11y snapshot 序列化为无名 link,`find` 无法断言;补 `aria-label` 后实测 `find "观测"` 1 命中、click 后 `find "运行总览"` 1 命中,AC-FE-CHROME-003 恢复可见断言路径。
345
- - Inspect 异常 Task 页空态文案统一(B-FIND-02):`failures.js` 运行时空态由 `当前没有失败或阻塞的 Task。` 改回与静态 `#failures-empty`、页面标题及回归目录 AC-FE-INS-004 一致的 `当前没有异常 Task`,消除静态/运行时文案漂移;实测新文案 find 1 命中、旧文案 0 命中。
346
-
347
- - 前端实现 DAG 收口到 typed tools 协议与唯一 writer + admission 四态:plan 通过 `submit_plan_ledger` 提交设计终态,design/final review 用 `approve_design|request_design_changes`、`approve_review|request_review_changes` committed typed tool 取代 `VERDICT:` 首行;`frontend-writer-admission-shell` 派生并冻结 writeSet、pre-writer baseline 与 admission digest,仅 `admitted` 放行唯一常规 writer。验证失败改为 terminal 并物化 `frontend-verify-failure-v1`(failureClass/failureOwner/restartPhase)供 recovery/operation 模型路由,删除同 run repair 分支;新增 split orchestrator 与 Micro 7 / Small 10 / Standard-High 11 拓扑 shape 路由,frontend-test 浏览器/视觉/runtime-a11y 认证保留为非阻断 handoff 收口。
348
- - 前端 OpenSpec 证据链收紧:cited 任务源引用与能力发现共用 `harness.json.governanceRoot`;新 DAG 冻结候选 SHA-256,规范内容漂移阻断 writer;引用块必须唯一,提供 section/line 时校验 heading/行范围;有组件/主题规范且存在可见 UI 时,至少一项 `specified` 选型必须绑定该规范桶。
349
- - 前端规范候选/必读集解耦:`frontendOpenspec.specRoots` 支持任务级可配置目录,任务准备期会将提示中明确声明的「规范目录 `...`」固化进契约;cited DAG 新增只读 `frontend-spec-select-pi`,逐项选择 required/relevant/irrelevant,仅 required 进入 prewrite 强制读取/引用,显式 requiredReadPaths 与任务源引用不可降级;scan-strict 保持全量读取。
350
- - 前端规范根增加软链接别名映射:对 `ai_workspace -> …/ai_doc` 等配置根,任务源中的真实目标目录名会在生成/准备期映射回仓库内逻辑根;候选、哈希和读取证据不记录仓库外绝对路径,重名别名 fail-safe 地不自动映射。
351
- - 发布一次性 dogfood 包 `0.39.0-beta.0`(`beta`):只用于验证本次前端 DAG 规范选择与软链接别名改动;不改变 `latest`、`next` 或 release train。
352
- - `next-release.yml` 防重复发布守卫补充幂等语义:`mode=recover`(dist-tags.next 已指向出自本 HEAD 的 tarball)时,手动 `workflow_dispatch` 重入不再撞 duplicate publish 硬失败,改为写 summary 后干净退出(§5.1 规则 4);非 recover 的重复发布仍硬失败。
353
-
354
- - frozen repair 工具审计改为按 attempt 段扫描(B1):`session-events.jsonl` 跨 attempt 共享追加,attempt>1 的 `auditRepairAttemptToolUse` 现在只审本 attempt 字节段(newline 对齐),planner attempt 1 的 ls/find 不再被误判给 repair 轮;repair prompt 显式声明 read-only 工具契约与 allowlist 边界(B2),并内嵌 openspec-citations 输出格式正例;`LOOP_AGENT_IGNORE_STALE_DIST=1` 环境变量旁路 stale-dist guard(B3),Console spawn 的 sibling CLI 可继承。
355
- - frontend plan/revision 结构化输出改为冻结 repair context + hash-bound canonical artifact:attempt>1 不再重放完整 planner prompt;成功后 stdout 只保留 artifact 路径,design review / prewrite 只消费已校验 artifact,不再从节点文本 merge。失败分类补齐 `structured-repair-exhausted` / `governance-blocked`,并修正 `structured-output-truncated` / `output-too-large` 的归一化映射。
356
- - 将 `@earendil-works/pi-ai` 与 `@earendil-works/pi-coding-agent` 从可选依赖提升为精确 pin 的运行时依赖 `0.83.0`,将运行时直接导入的 `typebox` 精确声明为 `1.3.7`,并在根包声明 Node.js `>=22.19.0`。安装 `@tea-agent/loop-agent` 会默认装上 Pi SDK(含 `--omit=optional` 场景);`@cursor/sdk` 仍保持 optional。availability / readiness 探针、隔离 tarball canary、发布包契约测试与安装/本地环境说明同步对齐。
357
- - backend-test Scenario Partition 仅接受绑定源有限 enum/分类集合的 GET/list query/path 轴;非法 Domain(空/重复/保留 token、无有限域、与 OpenAPI enum 不一致)报 `INVALID_PARTITION_DOMAIN` / `NO_FINITE_DOMAIN` / `PARTITION_SOURCE_MISMATCH` 根因,不再生成空后缀 `TP-SP-...-`、重复 slot,也不再级联 `MISSING_*_SLOT`。N6 对这些根因码 fail-closed;合法源分区缺槽仍阻断。N2 禁止为自由串/主键/required-only/boundary-only 建分区;N5 允许删除无源非法 Partition 及其派生槽位。
358
- - npm `next` 渠道发布改为提交数节流:main push 仅当距上次 next 发布的 source commit ≥ 5 个 commit 时才自动发布(新增 `scripts/next-publish-gate.mjs`,读已发布 tarball build-stamp 对比 HEAD);不足阈值时 workflow 绿色跳过,手动 `workflow_dispatch` 不受限(切 release 线前强制出包 / 紧急补发)。发布文档真源 §4.1/§5.1/§7/§12 同步。
359
- - 前端 split orchestrator 的 aggregate closeout 补齐 `frontendTestHandoffRefs` 与 `remainingRisks`:`finalize` 经新增确定性读取 port `loadChildCloseoutFacts` 聚合各 child 非阻断 frontend-test handoff 与 `residualRisks`,两者纳入 aggregate digest;伪造/缺失 childId、重复 handoff ref 均被拒,无 UI 可见需求的 child 空数组合法。形态决议落档为 operation 级确定性 finalize(无独立 shell 节点、无 `aggregating-closeout` phase 枚举),console 仍不实现第二套聚合逻辑。
360
-
361
- ### 新增
362
-
363
- - Frontend source fidelity 生产 Pi 接线(2026-08-24-source-fidelity-production-pi-wiring):真实 `task advance` 的 prepare-contract 主路径与 semantic-intake retry 路径现在对 `frontend-implementation` 任务注入生产 reconciliation executor 与独立 reviewer(`src/task/source-prepare/source-fidelity-pi.ts`):叙述性/歧义片段按标题顺序串行、逐块 `budgetChars=4000` 有界调用,结构化显式 AC/checklist/table 片段仍走 `isStructuredMappableFragment` 代码映射且零 Pi 调用;context-only/duplicate/conflict 在 reconciliation 完成后的独立阶段由 Pi reviewer 审核(`LEDGER_REVIEW_MAX_REVISIONS=1`,第二次拒绝 fail closed)。接线侧门 = `taskKind === 'frontend-implementation'`(`input.taskKind` 优先,缺省回退 `loadTaskConfig`),ineligible 不接线、行为不变。模型队列镜像 semantic-intake(MED→HIGH→LOW + Pi SDK 目录),单次尝试沿用有界超时,工具面仅只读 read/grep/find/ls;模型输出经 validateOutput + zod 严格校验,无效 JSON/schema、越界 canonical ID、排除类 disposition 缺理由、队列空、执行失败/超时一律以稳定 `SOURCE_FIDELITY_*` 阻断码 fail closed,生产路径无确定性 reviewer 回退。Mock 策略 not-needed(无 HTTP API 面,Pi 为 CLI/SDK 模型路径,不添加 Mock 文件/依赖);聚焦测试在 Pi 执行边界打桩(`vi.mock` / 可注入 `executePi` 桩,默认仍为真实 `executePiStep`),覆盖生产生命周期接线、reconcile→review 调用序、结构化零调用、fail-closed 阻断码与 ineligible 零调用。
364
- - Frontend 原始需求完整性门禁修复 v2(source fidelity ledger repair):① DAG 绑定改读 Task Contract 已持久化的 `source/requirement-ledger.json`(与 intake/apply/prewrite 同一份受管账本的原始字节/hash/inputDigest),删除从 materialized reference path 重建 ledger 的逻辑;缺失/损坏/漂移 fail closed(`SOURCE_FIDELITY_LEDGER_MISSING`/`SOURCE_FIDELITY_LEDGER_STALE`)。② `dagSourceBindingSchema` 拆为 v1(strict 拒绝 ledger 字段)与 v2(schemaVersion=2,`ledgerPath`/`ledgerSha256`/`inputDigest`/`requirementToFragments` 全部必填)的 discriminated union,禁止 v1+optional 冒充 v2;契约级 sourceBinding 增加 all-or-none 约束。③ canonical source identity 单一边界:ledger `sourceDocuments[].path` 与 DAG 侧 `serializeDagTaskSourcePath`/`resolveDagTaskSourcePath` 一致(repo-root relative),路径不再二次转换进入 digest。④ 确定性分片补全:Markdown 表格数据行独立切分、跨文档稳定哈希 `REQ-SRC-*` ID(消除 per-document counter reset 碰撞、文档枚举顺序无关)、V4 `#### AC-*` 标题式显式 ID 原样保留并关联正文、fragment ID 防伪造校验。⑤ 顺序 reconciliation(`ledger-reconciliation.ts`):可注入 executor 显式接口,仅叙述性/歧义 chunk 调用、按标题顺序串行、逐块有界,失败/无效返回/identity 越界 fail closed。⑥ 独立 reviewer(`ledger-review.ts`):context-only/duplicate/conflict 独立审核(不同调用阶段),最多一次有界修订,低风险 context-only 仅 reviewer pass 放行、高风险始终阻断。⑦ human resolution 真正生效:与当前 inputDigest + conflict/fragment identity 匹配且 human-confirmed 的 resolution 解除 blocking conflict/unresolved 并保留 audit,stale/伪造/未确认不生效。⑧ Console/Observe 展示 v2 binding 语义(`binding=v2`、ledger sha256、inputDigest)与稳定 failure code;`GET /api/tasks/:id/ledger` 增加绑定语义字段(向后兼容)。
365
- - Operator Chat 时间线左缘新增「用户消息锚点栏」:每个用户输入一枚横向小条(12×3px 微圆角),紧凑等距排列并在时间线高度内垂直居中;条数超出栏高时相邻锚点自动聚合为稍宽的聚合条(悬停展开「N 条聚合输入」逐条列表,时间 + 单行预览,逐条点击定位)。悬停时小条向对话一侧平滑伸长(12→18px)并变橙,浮窗右侧弹出(白底圆角,正文最多 3 行、超出省略号,附序号与时间);单击平滑滚动定位到对应消息(精确停靠在视口顶部偏移 8px);覆盖视口顶部的锚点保持高亮。空会话自动隐藏;历史分页/流式更新/窗口缩放时自动重算(rAF 节流)。
366
- - frontend-test 产物根可配置:`task.json.frontendTest.testRoot` 缺省仍为 `testcase/frontend`,省略时生成的 DAG 路径与历史默认根一致;自定义根(如 `qa/frontend-test`)在编译期冻结并驱动 writer、gate、playwright 围栏与 `allowedPaths`。`.harness/**` 等隐藏/治理树在生成期拒绝。
367
- - 实验能力「编辑失败节点提示词后从节点重跑」默认开放:无需环境变量即可使用 `dag rerun --prompt-override <nodeId>@<file>`(全文替换)与 `--prompt-override-append <nodeId>@<file>`(追加指令:保留冻结原提示词,末尾追加 `<operator_addendum>` 块);`HARNESS_DAG_RERUN_PROMPT_OVERRIDE=0|false|off` 保留为紧急关闭开关。仅限 ERROR 且位于 reset closure 内的节点;mode + base/最终 prompt sha256 计入 planHash(execute 漂移即 `PLAN_DRIFT`),父 run spec 冻结、provenance(含 mode)落 `continuation.promptOverrides`。Console 新增 `dagPromptOverrideConfig` 开关探测 action,`dagRerunPlan`/`dagRerun` 接受 `promptOverrides`(`{nodeId, prompt, mode?}`);Inspect DAG 节点 inspector 新增「提示词重启」tab——默认「追加指令」模式(只读底稿 + 追加编辑器),可切换「全文替换(高级)」,预检通过展示执行估算,提交后续跑并跳转新 run,全程不离开图页;默认开启时 `/inspect` 只注入 **scoped** 变体凭据(独立 cookie + `__INSPECT_MUTATION_TOKEN__`,与 Console 通用 token 互不可重放),mutations 路由对 inspect 凭据仅放行 `dagRerunPlan`/`dagRerun`(其余 action 403 `ACTION_NOT_IN_INSPECT_SCOPE`),Inspect 不获得通用写能力;显式关闭时不注入任何 token、tab 不出现,检视面保持严格只读。
368
- - 观察面 DAG Inspector 节点详情适配 Pi 扩展:执行器输入摘要展示节点声明的 `piExtensions` 短 id;新增「Pi 扩展运行事实」展示 `pi-extensions.json` 的 resolved(包名@版本)与 missing 降级原因(缺包降级不再静默);产物未生成/损坏时降级提示不阻断接口,绝对路径不外泄。
369
- - 后端实现 DAG(standard / review-gated / supervised)的 Pi 节点支持按桶显式加载本机 Pi 导航扩展:读侧节点(除 closeout)加载 `pi-codegraph` + `pi-lens`,写侧节点只加载 `pi-codegraph`(pi-lens 的 `ast_grep_replace` 可绕过 writeSet,不加载);前端/测试模板与省略字段节点保持扩展全关。扩展发现始终关闭,只经白名单解析 `~/.pi/agent` 与项目 `.pi` settings 的已装包(缺包降级不失败,产物 `pi-extensions.json` 记录 requested/resolved/missing);session 后 pin 工具面剔 builtin 同名、deny 面与写工具,writer 的 `edit`/`write` 仍为 policy-wrapped;`.codegraph/**` index 同步不再计入 write-guard 越界。
370
- - Pi SDK 终态 session-events JSONL 顶层增加可选 `finish_reason`:仅当 `message_end` / `turn_end` / `assistant_message` 明确携带非空终止原因时由序列化层提升,不伪造默认值,也不回流 `stopReason` 诊断。
371
- - `backendTest` 布局配置纳入 Task Contract managed 注入面:`task advance` 新增 `--backend-test <json>`,可在公共任务生命周期内把 `testRoot`/`markdownRel`/`scriptRel`/`sharedSetupDoc`/`mode`/`gapDoc`/`executeScope` 写进 `task.json`,不再需要手工编辑(手工编辑会让任务漂移成 `externally-modified` 并拒绝 `--approve-gate`)。给出即整体替换、省略即保留既有配置(历史手写配置因此自愈)、`'{}'` 为显式清空回默认布局;重复 advance 幂等,契约保持 `managed`。`task contract diff` 把值变更标 routine `BACKEND_TEST_CONFIG_CHANGED`、丢键/清空额外标 elevated `BACKEND_TEST_CONFIG_WEAKENED`。
372
- - Operator Chat 文件预览抽屉新增图标「新窗口打开」:用当前已加载内容在独立浏览器窗口打开全页阅读视图,窗口内可切换「预览 / 查看原文」(带宽高的 `window.open` popup,Markdown 排版、HTML 铺满视口的空 sandbox iframe、JSON pretty-print / 其它文本等宽滚动);打开成功后断开 `opener` 且不立刻 revoke Blob,避免空白页;弹窗被拦截时 header 附近报错且不关闭抽屉
373
- - backend-test 适配 A–D:可配置 `backendTest` 布局(`testRoot`/`markdownRel`/`scriptRel`)、用户公共前置文档引用与模块顶部 `user_shared_setup`(不写 conftest)、查询轴 Scenario Partitions 确定性展开与 fail-closed 门禁、`mode=gap-fill` 13 节点增量 DAG。Slot ID 以声明的 Partition ID 为真源(`TP-<Partition ID>-...`)。
374
- - 前端 plan 唯一机器契约化(JSON-only):`frontend-plan-pi` / `frontend-plan-revision-pi` 输出收敛为「一行导语 + 唯一 fenced `json` 契约 + 唯一 `openspec-citations` 引用块」,彻底移除「可选 Markdown 说明」;plan.md(`contracts/frontend-plan.md`)改由 prewrite gate 用纯函数 `renderFrontendPlanMarkdown` 确定性渲染(不新增 DAG 节点/不新增 Pi 调用)
375
- - 契约 schema 新增 5 个可选字段(`implementationSteps` / `stylingStrategy` / `dependencyPolicy` / `residualRisks` / `realIntegrationGap`),`schemaVersion` 保持 1;`docs/templates/frontend-implementation-contract.schema.json` 同步
376
- - revision 输出改为 RFC 7386 merge-patch delta + 引用块:gate 配置新增 `revisionPatch`,生效时在 `planFallbackFromNodeIds[0]` 原始契约上应用 `applyFrontendImplementationContractPatch` 后进入既有分析/规范化/物化管线;旧 DAG 缺字段按整契约处理
377
- - canonical contract 序列化(UTF-8)超过 64KB → `retryable-invalid` + 新增 `contract-too-large` failureCode(体积守卫兜底)
378
- - `design-review` / `final-design-review` 提示改为消费契约 JSON(注入契约字段摘要),不再要求读取 plan prose
379
- - Console「模型与认证」页新增模型矩阵编辑器:展示并允许编辑 `harness.json executors.pi` 的 LOW/MED/HIGH 三档模型;输入框从 readiness 结构化投影 `piModelMatrix` 预填(provider/model 或裸 model id),本地内联校验(空串 / `default` 哨兵 / 畸形 `provider/`、`/model`、`a//b`)非法时禁用保存;保存经既有 `POST /api/operator/v1/operations` 派发 `savePiModelMatrix`,复用 HTTP 层 `evaluateMutationGate`(boot capability cookie + `x-loop-console-confirmation` 头 + Origin/Host/Sec-Fetch-Site),读全文档后原子写 tmp+fsync+rename(保留 `$schema` 与其余字段),成功后自动重测 readiness 并对活动 Chat session 触发 `/sessions/:id/reload`(409 `PI_SESSION_BUSY` 给出可恢复提示)
380
- - `GET /api/operator/v1/readiness` 的 probe 新增 `piModelMatrix` 结构化投影(向后兼容,不改动既有 `modelsMessage`)
381
- - 组件选型规范合规(ADR 0016):契约 schema 新增可选 `uiComponentChoices[]`(`{ purpose, component, decision(specified|reuse-existing|new), specReference{path,section,line}|null, rationale }`);`specified` 必须给 OpenSpec `specReference`,任务源要求新增的 `new` 必须给 PRD `specReference`,空串拒绝;`schemaVersion` 保持 1;`docs/templates/frontend-implementation-contract.schema.json` 同步
382
- - `frontend-prewrite-gate` 新增三个 `retryable-invalid` failureCode:`component-spec-reference-invalid`(specReference.path 非受支持规范路径)、`component-spec-not-cited`(未在 openspec-citations 引用块引用或未真实读取)、`component-choices-missing`(组件/主题候选桶非空且契约有 UI 可见工作而 `uiComponentChoices` 缺失/空)
383
- - gate 配置新增可选 `componentSpecCandidatePaths`(旧 DAG 缺字段兼容);`init-hybrid` 从 `designEvidence.classified.component ∪ theme ∪ rule.components` 冻结注入,capability context 强调组件/主题桶语义,plan/revision/design-review/final-design-review 提示加入硬规则与 BAD/GOOD 示例
384
- - `frontend-plan.md` 新增 `Component Selection (spec conformance)` 章节(纯函数确定性渲染,缺省 `_(not specified)_`)
385
-
386
- - `frontend-prewrite-gate` 的 OpenSpec 读取校验支持 `task.json.frontendOpenspec` 配置:`policy` 缺省 `cited`(候选 = `requiredReadPaths` ∪ 任务源显式引用的 openspec 路径),`scan-strict` 保留止血任务后的全量必读语义;`requiredReadPaths` 中非 openspec 支持路径在生成期确定性失败
387
- - 确定性引用块协议:生效 plan 输出在 fenced `json` 契约块后追加 `openspec-citations` fenced 块(每行一个 JSON `{"path","section","line"}`);gate 解析并与生效 plan/review 节点的成功 read 事件核验,新增 `openspec-citation-block-unparseable` / `openspec-not-cited` / `openspec-citation-not-read` 三个 retryable-invalid failureCode(防捏造、防遗漏)
388
- - `src/shared/openspec-spec.ts` 新增 `extractTaskSourceOpenspecPaths` 纯函数(反引号内联、markdown 链接目标、裸路径 token → 归一化 → spec 过滤 → 治理子树排除 → 去重排序)
389
- - 生成期把 `openspecPolicy` 与候选来源元数据(`openspecCandidateSources.declared` / `taskSourceCited` / `scanStrict`)冻结进 prewrite gate 配置;`task advance` 的 advisories 说明当前模式与候选来源
390
-
391
- - 模型可以读取、创建和更新当前会话的持续目标;长任务会在安全轮数内自动续行,优先处理用户排队消息,并在 DAG 或其他运行结束后再继续。上下文压缩后,当前目标也会自动回到模型上下文中。
392
- - 右侧辅助栏统一承载文件、上下文、调用记录、运行活动和当前 DAG;点击消息流中的运行状态即可在同一侧栏查看运行、门禁与产物,并可自由调整侧栏宽度。
393
- - 新增任务清单与结构化提问卡片,让长任务的进度和需要用户选择的内容更容易理解。
394
- - 「对话 / 操作 / 观测」使用统一导航;操作和观测页面可以切换工作区查看对应数据。
395
- </details>
207
+ 实现细节与逐项变更记录(开发者参考)见 [`docs/reports/dogfood/2026-08-31-0.41.1-beta.0-implementation-details.md`](docs/reports/dogfood/2026-08-31-0.41.1-beta.0-implementation-details.md)。
396
208
 
397
209
  ## [0.41.0] - 2026-08-31
398
210
 
@@ -808,2089 +620,6 @@
808
620
  - PRD 验收标题支持更多常见写法;目录文档更新时会检查索引是否同步。
809
621
  - Operator 自定义工具可正常进入 Pi SDK 会话,命令面板的高度和降级提示也更加稳定。
810
622
 
811
- ## [0.35.4-beta.0] - 2026-08-15
812
-
813
- > frontend prewrite 阻断误路由修正 + Mock 契约文档落地(beta,发布到 `beta` dist-tag)。
814
-
815
- ### 改进
816
-
817
- - prewrite 阻断导致的 writer `SKIPPED`(`skippedReason=frontend-prewrite-not-authorized`)失败路由从 `DependencyFailure`/`unblock dependency` 修正为 `ContractMismatch`/`fix-frontend-task-contract-and-regenerate-dag`;`dag report` / `dag doctor` 透传 `skippedReason`,对「Mock 策略契约缺陷需改 task.json + 重新生成 DAG」这类场景给出可操作建议,而非误导性的「解除依赖」
818
-
819
- ### 文档
820
-
821
- - `docs/templates/frontend-task-constraints.md` 的 Mock 约束从 TODO 改为可落地契约:要求从项目**探索**实际存在的确定性 Mock 验证命令(不硬编码命令名)并声明到 `task.json.frontendMock.verifyCommands`,说明生成期 `allowedMockStrategies` 来源、`mock-strategy-outside-allowed` 是生成期契约问题(修复 = 补契约 + 重新生成 DAG,plan-revision 无法修复)
822
- - `docs/runtime/frontend-implementation-workflow.md` 的 task.json 输入标准补充 Mock 契约声明、命令探索与失败恢复指引
823
-
824
- ## [0.35.3] - 2026-08-15
825
-
826
- ### 新增
827
-
828
- - Console 默认进入「对话」页面;创建新任务时先分析需求和依赖,再进入正式任务流程
829
- - 计划中的文件验证会优先落到允许写入的范围内,命令级检查则使用稳定的静态验证入口
830
- - Recovery 页面新增恢复链路和最终结果展示,能够看清一次失败是如何被接管和收敛的
831
- - 前端实现 DAG 增加恢复根清单,并去除重复统计,恢复报告更清晰
832
- - 写入节点支持部分写入回滚和子任务恢复,局部失败不再轻易污染后续执行
833
- - 写入节点遇到短暂故障时可以回退到稳定基线,再决定重试或恢复
834
- - 调度器增加激活门禁和恢复触发条件,只有满足执行条件的子任务才会进入运行
835
- - 新增分阶段创建子任务的基础能力,为后续恢复和分批执行提供统一入口
836
- - 补齐恢复状态、恢复结果和终态恢复意图的数据结构,前后端对失败状态的理解保持一致
837
- - 产出节点新增契约自检,并强化长时间运行时的稳定性和异常收敛能力
838
- - 统一写入节点的公共辅助逻辑,修复判断改为结构化结果,不再依赖模糊文本
839
- - 精简前端实现 DAG 的第一阶段,在正式写入前完成结果合并和写入准入检查
840
-
841
- ### 修复
842
-
843
- - 规范证据面板不再单列 openspec,统一为「规范已读取/规范检索」
844
- - 恢复全量测试稳定性:没有 `python3` 时自动使用可用 Python,统一构建版本格式,并处理 Node 弃用警告造成的干扰
845
- - 修正续跑候选测试数据,使 `failureCode` 与真实失败语义一致,避免变基后出现错误判断
846
-
847
- ## [0.35.2] - 2026-08-15
848
-
849
- ### 重点更新
850
-
851
- - Operator Chat 处理详情对齐 pi-web:回合尾部的思考内容与工具调用摘要切分为可折叠「处理详情」,流式中思考可见,回合结束后自动折叠,最终回答单独成气泡
852
-
853
- ### 新增
854
-
855
- - 对话时间线新增内联可折叠「处理详情」区块,集中展示模型思考与工具调用摘要,回合结束后自动折叠
856
- - turn-process 保留 SDK thinking blocks,流式传输与持久化均携带思考内容
857
-
858
- ### 改进
859
-
860
- - 命令面板 shortcut 优化:Operator 组单行展示,/task、/contract、/dag 分别跳转到任务与恢复页面
861
-
862
- ### 修复
863
-
864
- - 修复「处理详情」思考折叠块背景引用未定义样式变量 --panel 的问题,改为确定性透明背景,消除 Console 样式变量完整性门禁对发布的拦截(视觉无变化)
865
- - 移除自指的 /help 命令项:输入 / 已弹出命令面板,不再单独提供重复的帮助入口
866
-
867
- ## [0.35.1] - 2026-08-15
868
-
869
- ### 重点更新
870
-
871
- - taskKind 显式契约全链路生效:页面显式选择的任务类型(含「后端研发(默认 DAG)」= standard)不再被 intake 语义识别或 DAG 生成阶段的语义分类改写;taskKindExplicit 从 CLI 标志 → 语义草稿 → task.json → DAG 路由全链路透传,显式 standard 跳过语义分类且不回写 taskKind
872
- - Console 任务向导提交反馈:导入/访谈/契约等长动作点击后立即显示进度文案与按钮 spinner,消除数十秒无反馈的「页面卡死」观感;导入结果新增自动发现引用文档与未解析引用的透明提示
873
- - Console intake 链路修复:任务导航上传 PRD 三件套后契约落地不再因工程边界缺失卡死;semantic intake 在缺失型边界缺口时接管并基于仓库布局推荐 allowedPaths/verify;文字录入「请参照这三个prd路径…」自动发现并导入引用文档;新的 PRD 导入重置 semantic intake 一次性 marker,失败后可重试
874
-
875
- ### 新增
876
-
877
- - PRD 引用自动发现:无上传文档时从文字录入内容中提取 Unicode 路径 token,经 URL 剥离、存在性/大小/排除过滤与角色推断后按角色自动导入引用文件,并透出自动导入与未解析引用结果
878
- - 任务向导长动作(bootstrap/import/interview/contract)点击后立即在 flash 区域显示动作进度文案(含全链路阶段说明与预期时长),结束时被结果消息覆盖
879
- - PRD 导入主按钮增加 busy 态 spinner、「导入中…」文案与 aria-busy,新增旋转动画样式
880
- - 导入结果渲染自动导入的引用文档(路径:角色)与未解析引用警告
881
-
882
- ### 改进
883
-
884
- - semantic intake 资格判定拆分缺失型(工程边界/taskKind 缺失时允许模型按仓库布局推荐)与非法型(路径策略/安全/重叠等仍维持拒绝),回归其 repo-layout-aware fallback 的设计意图
885
- - semantic intake 提示词增补正式 AC 标题逐字复制指引
886
- - task advance 对模型未推荐边界场景增加 SEMANTIC_INTAKE_BOUNDARY_UNRESOLVED 可操作提示,明确告知用户当前状态
887
-
888
- ### 修复
889
-
890
- - 修复 Console 显式选择的 taskKind 被丢弃的问题:此前「未选择」与「显式选 standard」被混为一谈,仅在非 standard 时传递任务类型标志,导致 AI 语义识别(如推荐 backend-test)覆盖用户选择、DAG 被改道
891
- - 修复 DAG 生成阶段对显式 standard 仍执行语义分类并回写 taskKind 的问题:显式信息此前在契约落盘时丢失,现显式指定时跳过语义分类且不回写
892
- - 修复 PRD 三件套上传时工程边界缺失以 EMPTY_ALLOWED_PATHS blocking 卡死、semantic intake 拒绝接管、契约永不 apply 的问题
893
- - 修复文字录入「请参照这三个prd路径XXX」只物化一句话、引用文件从未导入的问题
894
- - 修复 semantic intake attempt marker 一次性失败后永不重试的问题:新的 PRD 导入会重置 marker,失败可随新证据重试
895
- - Operator Chat DAG recovery P0 收敛:`operationWait` 默认仅由 meaningful progress 或终态唤醒,同时保留 `wakeOn=all` 诊断兼容;operation 终态原子保存并安全投影受信任的 `runSummary`/`dagRunId`,Operation Card 与 prompt 可直接消费失败节点、category 和 recovery 摘要;独立 review 后补齐所有 allowlisted 文本字段中的 Windows drive、UNC 与 POSIX absolute-path 子串脱敏,且不暴露 raw result、CLI 参数、绝对 artifact path 或 secrets。
896
- - 修复 terminal `run-failed + gate=null` 仍建议 `task advance` 的无进展循环;task status 与 Operation Card 现在停止盲目 resume/retry,并只提供合法的 Inspect/外部恢复导航。
897
- - 为 Console shortcut palette 的动态高度 custom property 声明 `62vh` 默认值,保留 ChatComposer inline override 与既有 fallback,并维持 `shell-ui-boundary` 未定义 token 检查强度。
898
-
899
- ## [0.35.1-beta.0] - 2026-08-14
900
-
901
- ### 重点更新
902
-
903
- - Operator Chat 新增长跑 DAG 自主监督能力,通过只读 `operationWait`、canonical heartbeat 与有界退避持续监控后台 operation 至真实终态
904
- - `task advance --approve-gate --json` 新增 stderr 周期进度,同时保证 stdout 保持单一最终 JSON
905
- - `loop-agent init` 收敛 managed `.gitignore` 与运行态目录迁移评估,并保留项目自有 Pi routing
906
- - Operator Chat `/` 命令面板升级为响应式 3/2/1 列卡片网格,补齐参数命令、动态目录与键盘/IME 行为
907
-
908
- ### 新增
909
-
910
- - Operator Chat 长跑 DAG 监督 P0-P2:新增只读、model-callable、无需 Human Gate 的 `operationWait` action/tool(复用 operation event store 的 `listFrom`/`subscribe`,订阅先于复查防竞态;已有事件/终态/needs-reconcile 立即返回,首个新事件立即 settle,超时返回 `timedOut:true` 摘要而非命令失败,NOT_FOUND/EVENT_CURSOR_EXPIRED 确定性错误;所有路径单次 settle 并清理 timer/listener)。
911
- - Console operation runner 将 sibling CLI 的 `LoopAgentClient` heartbeat 投影为 canonical `kind: "heartbeat"` operation event(含 `at`、`elapsedMs` 与 operation/action/run/task 安全摘要);写入失败不终止 sibling CLI/DAG 执行,不改变 DAG runner lease heartbeat 频率。
912
-
913
- ### 改进
914
-
915
- - `task advance --approve-gate --json` 运行 DAG 时周期进度只写 stderr(`--quiet` 可关闭),stdout 保持单个 `OperatorCommandResultV1` JSON;新增 `--progress-interval-ms`(下限 1000ms,与 `dag execute` 同语义)与 `--quiet` 参数;observer 仅在 approve 且非 dry-run 时创建,所有终态/异常路径 `finally` dispose,不留 timer。
916
- - Operator Chat 长跑监督合同统一为 60 → 90 → 120 → 180 秒退避(状态变化后重置 60 秒,疑似 stall 用 30–60 秒复查);base prompt 与 managed init `AGENTS.md` 模板明确:长跑 DAG 必须经 `prepareDagExecution → runDag → operationId` 由 Console operation 后台持有,禁止前台 Bash 直接 `task advance --approve-gate`、禁止管道 `tail`/`head`、禁止模型自行拼接 `nohup`/`Start-Process`/`start`。
917
-
918
- ### Init / Upgrade
919
-
920
- - `loop-agent init` 的 managed `.gitignore` block 收敛为四条目录级规则(`.harness/`、`.agents/`、`.task-pool/`、`.worktrees/`):删除旧细粒度规则与反向放行;`scripts/` 与 `ai_workspace/loop-agent/` 保持可提交。旧格式 block 仍由 `check-update` 确定性报告 `refresh-managed-block`,`update --apply-safe` / `upgrade` 应用后收敛,block 外用户规则原样保留。
921
- - full init 不再生成 `.harness/**/.gitkeep` 占位文件(目录照常创建)。
922
- - `init upgrade` 在 managed block 收敛后生成只读 gitignore 迁移评估(`.harness/init-upgrades/<run-id>/gitignore-migration.json`):inventory 已跟踪的 `.harness/**` 与 `.agents/**`,建议 index-only 的 `git rm -r --cached --ignore-unmatch` 命令(只改 index、保留工作区文件);`.agents` 已跟踪内容触发审查暂停,非 Git 仓库 / git 查询失败 / 存在 staged 条目时 fail closed,controller 不自动修改 Git index。
923
-
924
- ### Operator Chat
925
-
926
- - 会话历史删除改为 pi-web 式列表行内二次确认:首次点击垃圾桶只在原行显示“删除 / 取消”,不再弹出浏览器原生确认框;同一时刻仅允许一行确认,切换会话、点击取消或按 `Escape` 可撤销,删除中显示忙碌态并阻止重复请求,同时保留原 DELETE confirmation token、失败提示和当前会话清理合同。
927
- - 修复 Operator Chat 斜杠命令面板在紧凑布局或低高度窗口中顶部被 `.oc-main` 裁切的问题:面板打开后按主工作区顶边与 Composer 锚点之间的真实可用空间动态收缩,并在窗口、VisualViewport 与 Composer 尺寸变化时重算;面板头部保持可见,候选列表继续独立滚动,同时保留原有 `62vh / 520px` 安全上限与无测量回退。
928
- - Operator Chat 斜杠命令面板完成 UI-12 响应式卡片网格:Operator / Pi Web / Extensions / Prompts / Skills 分组按现有 `comfortable / compact / narrow` 容器模式渲染 3 / 2 / 1 列,卡片仅显示真实命令名与最多两行描述;面板头部固定、候选区独立滚动、分组标题 sticky,长命令不会撑宽页面。键盘支持四方向几何导航与最小滚动,hover、`aria-selected`、`aria-activedescendant` 保持同源;IME composition 与结束后 100ms 保护阻止误导航/误接受,完整描述通过 `aria-describedby` 关联。补足 1/2/3 列、跨分组和 shuffled globalIndex 回归测试,并以真实浏览器验证三档列数、无横向溢出及 Operator/extension/prompt/skill 补全路径。
929
- - 修复 Operator Chat 命令面板缺口:`/name` 与 `/compact` 参数走本地重命名/压缩路径,palette Enter/Tab 对参数命令进入可编辑前缀,动态 Extension/Skill/Prompt 冲突按优先级保留最高来源,动态目录 fail-soft 时保留本地命令并展示可重试 warning;会话标题 tooltip 水平夹紧视口,单条 Markdown 渲染失败仅该消息降级为纯文本。
930
-
931
- ## [0.35.1-beta.4] - 2026-08-15
932
-
933
- > 观察面板规范证据不再单列 openspec:读取与检索统一为「规范已读取 / 规范检索」,空态文案同步中性化(beta,发布到 `beta` dist-tag)。
934
-
935
- ## [0.35.1-beta.3] - 2026-08-14
936
-
937
- > frontend-implementation DAG 优化 v9 全六阶段 + Console 展示层(beta,发布到 `beta` dist-tag)。
938
-
939
- ## [0.35.0] - 2026-08-13
940
-
941
- ### 重点更新
942
-
943
- - 将前端实现契约收敛为单一事实源,消除多个 JSON 生产者导致的输出冲突
944
- - 严格绑定 Mock 策略与冻结验证命令,在生成与写入阶段前置拦截不一致配置
945
- - 设计评审节点引入协议感知重试,格式漂移不再直接拖垮整轮运行
946
- - 改进控制台运行时上下文面板与操作员对话控件
947
-
948
- ### 新增
949
-
950
- - 前端设计评审节点声明 `first-line-enum` 输出协议,VERDICT 首行缺失或畸形时在同一节点内有界重试
951
- - 前端契约物化新增冻结命令校验,`verificationTarget.commandLabel` 必须落在冻结命令集合内,否则 fail-closed 拒绝
952
- - plan/revision 提示词强化单 JSON 输出与逐条 AC 回显
953
-
954
- ### 改进
955
-
956
- - 前端实现 DAG 删除重复的 JSON 生产节点,由 prewrite gate 直接从生效计划末尾物化契约,避免 `invalid-output (found N)` 错误
957
- - 前端 Mock 策略解析逻辑优化:auto 模式在无确认 Mock 能力或无确定性验证命令时强制 `not-needed`,required 模式缺少验证命令时生成期即阻塞
958
- - 前端 prewrite gate 对不在允许范围内的 Mock 策略给出可操作错误,明确区分不同失败原因并附修复建议
959
- - 设计评审 verdict 提取同时检查 `assistantText` 与 `stdout`,避免仅输出到 stdout 的 `request-revision` 被误判为缺失
960
- - 控制台运行时上下文面板与操作员对话控件体验优化
961
-
962
- ### 修复
963
-
964
- - 修复前端 Mock 策略与验证命令不一致仅在 verify trace 才暴露的问题,现已在 prewrite gate 前置安全拦截
965
- - 修复多个 JSON 生产者导致契约物化失败的问题
966
- - 修复 `VERDICT: request-revision` 仅输出到 stdout 时被误判为缺失的问题
967
-
968
- ## [0.34.5] - 2026-08-13
969
-
970
- ### 重点更新
971
-
972
- - 优化 Operator Chat 对话页体验,包括隐藏重复标题、升级 Markdown 渲染、改进工具调用展示,并合并了 `/` 命令面板
973
- - 控制台启动后默认自动打开系统浏览器看板
974
-
975
- ### 改进
976
-
977
- - 优化 Operator Chat 对话页(UI-01 至 UI-11):隐藏重复标题、补齐品牌空态与真实注入上下文侧栏、改进工具调用摘要与结果展示、修复遮罩 hover 形变、为截断会话标题提供 tooltip、升级 Markdown/GFM 渲染,并增加用户主动打开的调用记录入口与合并后的 `/` 命令面板
978
- - 会话列表操作改为按需显示 Remix Icon,同时保留键盘 focus 与触屏可访问路径
979
- - 输入区将图片上传收敛为图标按钮,并避免“全部工具 · N · 状态”歧义
980
- - 控制台在服务监听成功后默认打开系统浏览器
981
-
982
- ## [0.34.4] - 2026-08-12
983
-
984
- ### 重点更新
985
-
986
- - 裸 `agent-worker console` 收敛为唯一看板入口,监听成功后默认打开系统浏览器,并删除 `console serve`
987
- - 本地连续交付改为按精确 Git tree 复用验证结果,避免提交、推送和分支合并之间机械重复全量测试,同时保持不同 tree、不同环境和远程 CI 的独立质量门槛
988
- - 全面加固 Operator Chat 的 Turn 所有权、停止与异常恢复流程,解决浏览器与服务端状态错位时的重复提交、停止失效和错误提示问题
989
- - Operator Chat 新增按仓库保存的 Skills 自动使用偏好,用户可控制技能是否进入模型自动发现范围,同时保留手动调用能力
990
- - 修复控制台任务导航无法自主执行后端测试与前端测试 DAG 的问题,现可正确识别 pytest、playwright 等多种测试框架的验证命令
991
-
992
- ### 新增
993
-
994
- - 新增可选的 `npm run verify:tree`,对当前严格 clean HEAD 执行完整验证并写入 receipt,随后推送同一 tree 时可直接复用
995
- - 新增只读的当前 tree receipt 诊断,可区分匹配、缺失、过期、损坏和工作区不合格等状态,不执行测试或写入 receipt
996
- - Operator Chat 引入完整的 Turn ownership 协议和服务端真实中止接口,并在状态接口中提供 active/latest Turn 与 runtime busy 事实
997
- - Operator Chat Skills 新增「允许自动使用」开关,偏好按仓库持久化;关闭后仍可通过 `/skill:<name>` 手动调用
998
-
999
- ### 改进
1000
-
1001
- - 裸 `agent-worker console` 成为唯一 Console 启动入口:本地图形交互环境在服务监听成功后默认打开系统浏览器,`--no-open` 可明确禁止;删除 `console serve` 兼容子命令
1002
- - source→target 连续交付统一选择一个本地全量验证权威;默认 commit/push 不增加步骤,远程 CI 与发布环境不复用本地 receipt
1003
- - pre-push receipt 诊断和执行日志改用有界命令摘要,并严格校验 tree、环境、命令合同、有效期及 receipt 内容一致性
1004
- - Skills 运行时快照改为使用服务端资源标识和独立的自动调用状态,资源变更仅接受当前 inventory 中的合法条目
1005
- - Turn 已占用时返回可恢复的中文状态提示和真实 active Turn,不再向用户暴露裸露的 `chat turn already active` 错误
1006
-
1007
- ### 修复
1008
-
1009
- - 修复浏览器已认为对话结束、服务端却仍持有 active Turn 时的重复提交竞态;提交现在支持幂等请求标识、boot epoch orphan 隔离和 durable Turn/runtime busy 联合对账
1010
- - 修复创建 Turn 的响应不确定时状态被过早释放的问题;客户端会保留 ambiguous 状态,通过 `/state` 绑定或释放真实 ownership,不会重新生成请求标识
1011
- - 修复停止请求在 Turn 尚未绑定时丢失的问题;绑定成功后只发送一次真实 abort,且服务端缺少 abort 能力时不会通过 dispose 会话伪造停止
1012
- - 修复 active bind、terminal SSE 与 React streaming 状态交错时提交锁未释放的问题,并统一 adopt、停止中和 abort-pending 为非致命提示
1013
- - 修复控制台任务导航执行 backend-test 和 frontend-test DAG 时,因结构化验证门禁未识别 pytest/playwright 等命令而始终被阻断的问题
1014
-
1015
- ## [0.34.3] - 2026-08-12
1016
-
1017
- ### 重点更新
1018
-
1019
- - 修复 PRD 导入时 grill-me 模板占位符路径污染写入集的问题,确保仅处理真实需求路径
1020
-
1021
- ### 改进
1022
-
1023
- - 语义化导入现可作为兜底方案推荐工程边界,提升需求解析的准确性
1024
- - 将语义约束与验证信息合并至控制台草稿,避免表单默认值覆盖精确的验证命令
1025
-
1026
- ### 修复
1027
-
1028
- - 修复 grill-me 模板占位符路径未被过滤即进入写入集,导致占位内容污染实际工程数据的问题
1029
-
1030
- ## [0.34.2] - 2026-08-12
1031
-
1032
- ### 重点更新
1033
-
1034
- - 修复控制台 DAG 执行在 120 秒后被强制终止导致状态卡死的问题,默认超时现提升至 4 小时
1035
-
1036
- ### 改进
1037
-
1038
- - DAG 挂钟时间常量统一收敛至 src/shared 共享模块管理,移除了 workflows 中不必要的内核导入
1039
- - 前端实现契约物化新增冻结命令校验:每个 `verificationTarget.commandLabel` 必须落在 DAG 生成时冻结的命令集合内,否则 fail-closed 拒绝,防止模型发明验证命令;plan/revision 提示词同步强化单 JSON 输出与逐条 AC 回显
1040
-
1041
- ### 修复
1042
-
1043
- - 修复控制台任务导航执行 DAG 时因 LoopAgentClient 默认 120 秒超时被强制终止的问题,现已将默认超时提升至 4 小时,并支持通过 --default-timeout-ms 参数覆盖
1044
- - 修正自定义模型合并报告中的文档描述错误
1045
-
1046
- ## [0.34.1] - 2026-08-11
1047
-
1048
- ### 重点更新
1049
-
1050
- - Console PRD Intake Bridge:统一粘贴、单文件与多文件 PRD 导入流程,复用确定性解析与 Semantic Intake,并回写真实 Console Draft
1051
- - 引入工程边界表单,工程路径与验证命令仅接受人工输入,杜绝使用模板内容冒充需求事实
1052
- - DAG 中断恢复增强:支持协作式 abortSignal,未启动节点明确标记为 controller-interrupted,避免粗暴终止
1053
- - Console Recovery 提供直观的 reconcile CTA,按运行状态精准展示恢复入口,破坏性操作需经浏览器 Human Gate 确认
1054
-
1055
- ### 新增
1056
-
1057
- - Console PRD 导入桥接:支持将粘贴、单文件与多文件导入统一接入 task advance 的确定性解析,并映射产物至 DraftStore
1058
- - Console 工程边界表单:在 PRD 导入时支持可选的 allowed/forbidden/verify 字段,并作为标志传递至 bootstrap intake
1059
- - Console Recovery CTA:基于 effective status 与 liveness 展示 dag reconcile-run(supersede/abandon)入口
1060
- - DAG runner 协作式 abortSignal:主控停止时允许已运行节点按 checkpoint 收尾,未启动节点标记 controller-interrupted
1061
-
1062
- ### 改进
1063
-
1064
- - dag reconcile-run 增加 --json 与 --action 参数,避免 operation runner 因期待 JSON 失败,并明确拒绝非法 action
1065
- - task advance 生命周期优化:PRD 导入后默认进入仅导入阶段,确保多文件 bootstrap 完成后再执行 Semantic Intake
1066
- - Console Recovery 状态映射细化:将 interrupted/orphaned 等状态映射为 needs-reconcile,suspected-stall 映射为 observe/doctor
1067
- - task advance writeSet gate 输出附确定性 delta,清晰展示边界扩张来源,且不破坏既有 approve 流程
1068
-
1069
- ### 修复
1070
-
1071
- - 修复追加 PRD 后两阶段 intake 未重新投影契约、Console 可能回读旧 Semantic Intake artifact 的问题
1072
- - 修复 implement-pi 在 provider clean timeout 且明确零写入时直接终止的问题,现对标准 bounded writer 自动重试一次
1073
- - 修复 grill-me 模板被误当作已解析需求的问题
1074
- - 修复窄屏(<1100px)下 CHANGELOG 文档中尖括号导致的 MDX JSX 解析错误
1075
-
1076
- ## [0.34.0] - 2026-08-11
1077
-
1078
- ### 重点更新
1079
-
1080
- - Operator Chat 会话创建实现即时响应,Landing 页面与创建请求延迟从秒级降至毫秒级
1081
- - 新增桌面端紧凑响应式布局,根据工作区宽度自动适配 comfortable/compact/narrow 三档显示模式
1082
- - 新增自动会话标题功能,基于首条用户消息生成临时标题,并在首轮对话完成后异步生成正式标题
1083
- - 新增 local-jacoco-coverage 技能,将本地 Java 服务挂载、测试执行与覆盖率切片分析串成标准化链路
1084
-
1085
- ### 新增
1086
-
1087
- - Operator Chat 桌面紧凑响应式布局:按工作区宽度切换 comfortable(≥1450px)/ compact(1100–1449px)/ narrow(<1100px)三档;compact 档使用图标窄栏与覆盖抽屉,narrow 档使用顶栏入口;会话与仓库面板支持拖拽分栏并记忆比例
1088
- - Operator Chat 自动会话标题:首条用户消息持久化后生成清洗有界的临时标题,首轮对话成功完成后异步生成正式标题;手工重命名、归档和删除操作可拒绝迟到的自动标题覆盖
1089
- - local-jacoco-coverage 技能:将本地启动 Java 服务挂载 jacocoagent、运行 backend-test DAG、按需求文档做覆盖率切片分析三步串联为可审计、可重复的本地链路,包含强制流程手册、runtime 对齐参考、需求映射规范与编排脚本
1090
-
1091
- ### 改进
1092
-
1093
- - Operator Chat 会话创建改为即时响应:先落盘会话骨架与持久记录后立即返回成功,完整 AgentSession 在后台异步初始化,真实 Chrome 测试中 Landing 延迟从 1346ms 降至 22ms、创建请求从 1269ms 降至 16ms
1094
- - 会话创建期间侧栏与 Landing 页共享 busy 状态反馈,抑制双击导致的重复创建
1095
- - 删除正在初始化的会话不会被迟到的后台初始化任务复活,初始化失败统一返回 HTTP 503 错误码
1096
-
1097
- ## [0.33.7-beta.2] - 2026-08-13
1098
-
1099
- ### Fixed
1100
-
1101
- - scenario-param 解析 `bound=LEN100`、解引用 `_STATUS_ACTIVE` 等 Python 字符串常量,识别 `"x" * _TITLE_MAX_LENGTH` 长度表达式
1102
- - correspondence 忽略 pytest payload 中的 `expect`/`echo_*` 辅助键,避免假 PAYLOAD_SHAPE_MISMATCH
1103
-
1104
- ### Changed
1105
-
1106
- - my-webapp 五轮 backend-test 全流程 live campaign 归档(R1–R5 均 finished;R5 correspondence PASS)
1107
-
1108
- ## [0.33.7-beta.1] - 2026-08-12
1109
-
1110
- ### Fixed
1111
-
1112
- - scenario-param 识别 `_*_MAX_LENGTH` / `_*_OVER_LENGTH` 等长度 helper 名,明确 `custom-literal:trim` 不能是全空白,并把无 pytest.param 的 request-level/health nominal 记为 MATCH 以免污染 eligibility
1113
- - backend-test writer 合同明确:`enum-invalid` 必须使用具体非法字面量且禁止 `_OMIT`/missing-key;`custom-literal:trim|ACTIVE|ARCHIVED` 必须使用真实 padded/enum 字面量;max/min/max+1 应用长度表达式/helper
1114
-
1115
- ### Changed
1116
-
1117
- - 归档 R108–R110 live campaign 证据与 residual 收紧结果
1118
-
1119
- ## [0.33.7-beta.0] - 2026-08-11
1120
-
1121
- ### 重点更新
1122
-
1123
- - backend-test 收口 source-fidelity P0:绑定 source coverage、有界 Markdown/pytest 同步、item-level eligibility 与单次 eligible 业务执行;my-webapp R107 16 节点 finished
1124
-
1125
- ### 新增
1126
-
1127
- - backend-test 新增绑定 source references 的来源覆盖事实、Markdown 一轮增量同步和 pytest correspondence 一轮有界修复,在业务测试体执行前保留 initial/effective/residual 证据
1128
- - backend-test 新增 item-level execution eligibility:只授权 payload-safe 的 pytest items,excluded items 与真实业务失败分开展示
1129
-
1130
- ### 改进
1131
-
1132
- - 将 backend-test Markdown/pytest map 的默认总 token 预算从 `600000` 提升到 `3000000`,降低多模块生成时过早触发 `dynamic map token budget exhausted` 的概率;仍保持预算耗尽 fail-closed
1133
- - Coverage Matrix 接受 `R400001` 等错误码 Rule Key,并保留单元格内 `ACTIVE|ARCHIVED` 未转义枚举管道符,避免合法行被拆成 10 列后整表丢弃
1134
- - scenario-param 按 TP 精确匹配多行 `场景意图`,保留 `ACTIVE` 大小写字面量,识别 `"a" * N` 长度表达式与空白 `empty`,request-level `nominal` 允许 `None` 查询过滤;避免把合法 payload 误判为 MISMATCH 并错误排除 eligible items
1135
- - backend-test 支持 evidence-only 元用例:Markdown 显式声明 `脚本/primary symbol=无` 且仅绑定 assertion/cross-cutting TP 时,不再强制 1:1 pytest 符号,也不再把其算作 MISSING_PYTEST/SCRIPT_MISMATCH
1136
- - generated pytest 内的 `ScopeMismatch`/setup fixture 失败若完全归因于 `testcase/**` 映射脚本,则归为 REPAIRABLE 并进入唯一一轮 collection repair,不再直接 BLOCKED
1137
- - scenario-param 观测跳过 `pytest.param("TP-...", value, id="TP-...")` 的前导 TP 标签,并支持长度意图用数字位置参数表达
1138
-
1139
- ### 修复
1140
-
1141
- - 修复 readiness 错误信息截断与无效 Coverage Matrix 状态语义,避免超长错误或 advisory 矩阵状态误阻断后续节点
1142
- - 修复 scenario 排除项未绑定 payload 字段、request-level 不确定性被误升级为硬失败的问题
1143
-
1144
- ## [0.33.6-beta.0] - 2026-08-11
1145
-
1146
- ### 修复
1147
-
1148
- - 修复 backend-test correspondence scanner 将下一 Case 的分隔注释误归入前一个 pytest function region,造成虚假的 `MULTIPLE_PYTEST`、script mismatch 和额外 Test Point;现在按函数实际缩进边界隔离 body,并只从精确 `Case-ID:` 元数据或 primary symbol 绑定 Case
1149
- - 修复 backend-test 将 README 其他区域的 Markdown 链接误提取为业务模块、允许 `a401606` 等 opaque/hash-like stem 和异常多模块进入 map 的问题;现在只解析唯一 `## Module Index`,非法、mixed 或超过 8 个模块时 README-only 有界重试并由 manifest fail-closed
1150
- - 修复 backend-test map 总 token 预算耗尽后只生成部分 Markdown/pytest 资产但 parent 仍可能显示成功的问题;budget-blocked child 现在使 backend map 明确 ERROR,并保留 expected/finished/blocked/token 事实
1151
-
1152
- ## [0.33.6] - 2026-08-11
1153
-
1154
- ### 重点更新
1155
-
1156
- - 加固 PRD 导入与 Semantic Intake,在结构化解析不足时提供安全回退,并增强 writeSet 审查与运行结果摘要
1157
- - Operator Chat 接入单一事件流、启动 epoch 隔离、实时运行时控制与开放资源加载,提升长会话恢复和自主 DAG 监督能力
1158
- - 统一 Windows 等环境下只读 Git 命令的有界恢复机制,同时保留用户自有的 Pi 模型路由配置
1159
-
1160
- ### 新增
1161
-
1162
- - task advance 新增 writeSet delta 与 run summary,直接展示边界扩张来源、节点结果和下一步操作
1163
- - Operator Chat 引入单一事件流与 boot epoch fence,支持 cursor 过期后的自动对账恢复,避免将可恢复问题升级为全局错误
1164
- - ChatEventStore 增加事件合并与容量上限双重压缩,控制长期会话持久化体积
1165
- - Operator Chat 新增实时模型、thinking 和运行时资源控制,并按开放资源加载规则解析 Skills、Extensions 与 Packages
1166
- - Operator Chat 可对安全的 bounded DAG 进行持续监督和恢复,执行报告同步补充运行细节与目标 URL 来源
1167
-
1168
- ### 改进
1169
-
1170
- - 只读 Git 查询统一使用共享韧性执行器,在 Windows 启动型故障下有界恢复,不扩大 mutation 命令权限
1171
- - 初始化与升级流程保留用户自行配置的 Pi 模型路由,不再因默认配置变化机械覆盖
1172
- - Packages 面板区分配置状态与真实安装元数据,并统一使用品牌图标
1173
-
1174
- ### 修复
1175
-
1176
- - 修复 Operator Chat 流式状态与 pi-web 可靠性机制未完全对齐的问题,提升重连和终态收敛稳定性
1177
- - 修复前端测试环境预检中的反引号转义错误,以及重跑默认值和 repair 选择器转义不一致的问题
1178
- - 修复后端测试完整性检查误判字符串内部未配对分隔符,以及按优先级生成非法单模块文件的问题
1179
- - 修复前端测试目标 URL 未从运行时上下文解析的问题,执行时现使用可审计的真实地址来源
1180
- - 修复 generated init 内容因 `desiredSha256` 机械比较而阻断安全升级的问题
1181
-
1182
- ## [0.33.5] - 2026-08-11
1183
-
1184
- ### 重点更新
1185
-
1186
- - 全面加固 Operator Chat 流式响应的执行可靠性,对齐 pi-web 四层保障机制,彻底解决重连后界面无限加载、空占位气泡卡死等问题
1187
- - 优化前端测试的目标 URL 解析机制,改为从运行时上下文精准解析,并丰富执行报告的细节展示
1188
- - 修复测试生成与执行环境中的多处转义错误,提升复杂脚本生成的稳定性
1189
-
1190
- ### 新增
1191
-
1192
- - 新增轻量级会话状态轮询接口(GET /sessions/:id/state),用于快速获取真实的活跃任务状态
1193
- - 前端测试执行报告新增更丰富的细节展示,并支持从运行时上下文中精准解析目标 URL
1194
-
1195
- ### 改进
1196
-
1197
- - Operator Chat 客户端现支持每 15 秒及页面可见性变化时定期对账服务端真实状态,当服务端已空闲而客户端仍在加载时自动强制结束
1198
- - 优化重连时的回放保护机制:仅当回放事件的任务 ID 与服务端真实活跃 ID 匹配时才继续流式响应,防止已结束的任务被错误唤醒
1199
- - 前端测试默认短链失败用例现仅重跑 1 次,而阻断性审查节点分支默认重跑 2 次,显式配置仍可覆盖默认值
1200
-
1201
- ### 修复
1202
-
1203
- - 修复 Operator Chat 在中断或失败时未写入持久结束事件,导致重连回放卡在开始阶段、界面无限加载的问题
1204
- - 修复对话中断或结束时残留空白占位气泡和卡死省略号的问题,现自动清理未产生内容的消息
1205
- - 修复前端测试重跑选择器生成的 Shell JavaScript 丢失正则反斜杠和换行转义,导致报语法错误的问题
1206
- - 修复前端测试环境预检脚本将 URL 尾部反引号匹配规则展开为裸 Shell 反引号,导致命令替换未闭合的问题
1207
- - 修复后端测试偶尔按优先级生成单一模块文件的问题,现对非法模块命名执行严格阻断
1208
- - 修复后端测试分片完整性校验误判合法测试字符串中未配对分隔符为脚本截断的问题
1209
-
1210
- ## [0.33.4] - 2026-08-10
1211
-
1212
- ### 重点更新
1213
-
1214
- - 修复后端测试场景参数评估器对 fallback 字段的误判问题,解除由此导致的错误执行阻断
1215
-
1216
- ### 修复
1217
-
1218
- - 修复 backend-test 场景参数评估器在 Markdown 无可解析场景意图时,将 TP-ID 推断的 fallback 字段(如 `TP-CREATE-APPROVER-FORMAT` → `cREATE`/`pattern-invalid`)被大写启发式误判为不匹配的问题;此类条目现统一判定为无法判定且不可修复,不再生成无效修复建议,由此导致的错误执行就绪阻断已解除
1219
- - 修复 fallback 场景参数状态被错误标记为失败的问题,现根据实际情况正确标记为不可用或部分可用,且不弱化任何就绪性门禁
1220
-
1221
- ## [0.33.3] - 2026-08-10
1222
-
1223
- ### 重点更新
1224
-
1225
- - 修复 Windows 环境下 frontend-test 配置 URL 冻结异常的问题,确保跨平台地址识别行为一致
1226
-
1227
- ### 改进
1228
-
1229
- - 改进 frontend-test 的 Windows URL 回归测试,使其具备更好的跨平台可移植性
1230
-
1231
- ### 修复
1232
-
1233
- - 修复 Windows 环境下 frontend-test 配置 URL(如 baseUrl、targetUrl、loginUrl)无法正确冻结的问题,冲突候选现安全 fail closed,仅在完全未配置时回退 localhost
1234
-
1235
- ## [0.33.2] - 2026-08-10
1236
-
1237
- ### 重点更新
1238
-
1239
- - 更新 analyze-product 技能
1240
- - 针对结构化产物的可恢复失败自动重试
1241
-
1242
- ### 改进
1243
-
1244
- - 更新 analyze-product 技能
1245
- - 结构化产物在遇到可恢复失败时会自动进行重试
1246
-
1247
- ## [0.33.1] - 2026-08-10
1248
-
1249
- ### 重点更新
1250
-
1251
- - Operate 与 Inspect 合并为统一的双层导航壳,取代旧的三层堆叠栏
1252
- - 在「操作」与「观测」模式间切换时保持对象上下文,支持一键带参数返回恢复现场
1253
- - 夜间信息架构收敛,总览新增「昨夜班次」条带,移除冗余的并列 tab
1254
- - 全面加固窄屏适配与可访问性,优化共享资产加载失败时的降级体验
1255
-
1256
- ### 新增
1257
-
1258
- - 新增共享壳唯一实现 operator-chrome.css/js,包含全局品牌带与工作区下划线 tab
1259
- - Inspect 总览新增「昨夜班次」条带,支持通过/失败/需人工/待 harvest 状态一眼可见
1260
- - OperatorSurfaceHealthV1 新增 repoName 字段,统一上移仓库身份展示
1261
- - 新增 operator-chrome 契约测试,覆盖 tab 映射、模型、对象连续与返回路径
1262
-
1263
- ### 改进
1264
-
1265
- - 模式切换不丢对象:恢复页持有 DAG 时切「观测」直达同一 DAG 画布,并提供来源 chip 支持一键返回
1266
- - 夜间信息架构收敛:Inspect 顶栏移除「夜间任务」并列 tab,#/night 深链详情保留并提供「在操作台管理 →」入口
1267
- - 仓库身份上移:Inspect 总览移除重复的内联仓库横幅,面包屑从 site-header 移入内容区页头
1268
- - Console 改用 CSP 友好的原生动态导入,共享资产加载失败时保留最小可用导航与错误状态
1269
- - 窄屏(1100px/760px)下新鲜度与 Pi 状态收敛为紧凑图标语法,避免整页横向溢出
1270
-
1271
- ### 修复
1272
-
1273
- - 修复 Inspect 壳重渲染时 #header-refresh 新鲜度文案被 health 回填或 hash 切换清空的问题
1274
- - 补齐仓库身份浮层的 aria-controls/aria-expanded/dialog 名称,支持外部点击与 Esc 关闭并恢复按钮焦点
1275
- - 修复关闭来源 chip 时误删 node/page 等对象页查询参数的问题,现仅移除 from 参数
1276
- - 移除 Console 中 new Function 的间接导入与 SVG 图标的 innerHTML 注入面,提升安全性
1277
- - 修复 hash 导航与 destroy 时监听与宿主 class 未完整清理的问题
1278
-
1279
- ## [0.33.0] - 2026-08-09
1280
-
1281
- ### 重点更新
1282
-
1283
- - Operator Console 工作区导航升级为 hash 路由,支持页面刷新保留状态及浏览器前进后退,并新增模型与设置页面入口
1284
- - 夜间辅助调度器(NightAuxTicker)改为自动启动,移除手动开关,简化操作流程
1285
- - Observe DAG 运行历史页交互全面优化,改进分页器布局、自定义选择器与复制反馈体验
1286
- - 执行器支持 provider/model 显式引用格式,消除运行时模型路由的歧义
1287
-
1288
- ### 新增
1289
-
1290
- - Operator Console 工作区导航新增 hash 虚拟路径(#/tasks、#/night、#/models、#/settings),支持刷新恢复与浏览器历史导航
1291
- - 新增模型(Models)与设置(Settings)页面入口
1292
- - 夜间辅助调度器(NightAuxTicker)现默认自动启动,无需手动开启即可维持夜间调度活跃度
1293
- - Observe 新增统一的自定义选择器菜单,支持键盘导航与自适应定位
1294
- - Observe 新增 DAG 运行历史分页功能
1295
-
1296
- ### 改进
1297
-
1298
- - Operator Console 工作区导航顺序调整,将对话(Tasks)置于首位
1299
- - 夜间任务面板的健康状态栏简化为纯文本状态展示,移除旧的手动开关
1300
- - Observe 夜页头部操作按钮样式统一
1301
- - Observe DAG 历史分页器视觉布局升级为精致的分段设计,并优化窄屏下的显示
1302
- - 执行器 Pi 层级支持 provider/model 引用格式,规范化解析字符串与对象两种配置写法,提升模型路由准确性
1303
-
1304
- ### 修复
1305
-
1306
- - 修复 Observe 自定义选择器键盘焦点异常的问题
1307
- - 修复 Observe DAG 历史分页器在窄视口下布局溢出的问题
1308
- - 修复 Observe 复制反馈按钮的边框样式显示异常,恢复无边框设计
1309
- - 优化 Observe DAG 节点错误摘要展示,将失败行备注压缩为紧凑的两行摘要,避免撑高表格
1310
-
1311
- ## [0.32.1] - 2026-08-09
1312
-
1313
- ### 新增
1314
-
1315
- - Observe:新增 DAG 运行历史页 `#/dags`:分页表格、hash 恢复 page/pageSize、手动刷新;只读 `GET /api/dag-runs?page=&pageSize=` 返回轻量列表,排除 dry-run/init-only,省略 nodes/edges 等重字段
1316
- - Dashboard「最近 DAG 运行」卡片右上增加「查看全部」入口,进入完整历史页;卡片仍保留最近 10 条
1317
-
1318
- ### 修复
1319
-
1320
- - Observe DAG 历史页:分页摘要与失败态使用本地固定可信文案;首次 Loading 与后续动态分页/刷新控件分离;双路径失败共用 aria-live;分页失败不污染列表;默认直连真实 `/api/dag-runs`
1321
- - Observe DAG 历史页 review 收口:取消在途 abort 中途仍式 GET 推进 requestSeq,防止旧响应覆盖缓存页;run-id 复制按钮独立 1.5s 成功计时;图标恢复;手动刷新替换当前页缓存;失效页码 bump prefetch generation 并拒绝陈旧预取写回;`totalPages>7` 页码窗口收紧为首页/末页/当前±1(无紧邻填补);`.dags-pagination.is-busy` 降级为上方 `opacity`
1322
- - Observe DAG 节点表格:失败行备注改为两行错误摘要,避免完整 errorPreview 撑高表格;完整错误仍在节点检查器输出中查看
1323
-
1324
- ### 改进
1325
-
1326
- - Operator Console 前端重构视觉层级与代码结构:`OperatorChat.tsx`(3656→407 行)、`App.tsx`(3044→182 行)、`NightJobsWorkbench.tsx`(852→90 行)按职责拆为 `operator-chat/`、`app/`、`pages/`、`shell/`、`night/` 模块,消息流 / 工具卡 / gate 卡 / composer / 侧栏各自独立;样式统一为单一语义 token 层,人工决策 gate 卡以决策卡规格(橙色左边条 + 浮起阴影 + 状态徽标 + 未决时吸附 composer 上方)突出,工具过程卡默认退后
1327
- - Observe:DAG 历史 pageSize 与节点检查器「执行分次」改为统一自定义选择器(触发器 + listbox;键盘/ARIA/焦点/自适应定位);不改动 hash-only 分页、attempt raw key / 默认最新 / 节点切换重置语义
1328
- - Observe DAG 历史页:复制改为图标反馈(成功勾号 + 页面 aria-live;失败右下角短暂 Toast);数字分页器改为精致分段布局;hash 单一事实源;缓存 + AbortController + 相邻页低优先级预取,减少翻页双重加载与长时间等待
1329
-
1330
- - Agent Worker Production Readiness v1 Phase 8:在已发布 `@0.32.0` 上完成 published-tarball deterministic campaign 与 burn-in day 0 开窗;scorecard 仍为 **`NOT_READY`**(待 burn-in 累计、live Pi canary、live Closeout、C4/C7 进程 crash)
1331
-
1332
- ### 修复
1333
-
1334
- - Operator Console:补齐 `--accent` / `--danger` / `--surface-raised` 等 14 个被引用但从未定义的 CSS 变量(pi-web 遗留命名与 warm canvas 命名两代并存),此前 HumanGateCard 的橙色左边条、confirmed 态、红色错误文本实际不渲染;设置页仓库指纹截断为短哈希展示
1335
- - Operator Console:新增 `console:typecheck` 门禁并修复拆分后 `.ts/.tsx` 未纳入类型检查的盲区;`ChatComposer` 错误从 `ToolsCatalog` 导入未导出的 `ToolCatalogView`;将 46 处旧式 `JSX.Element` 迁移为 React 19 兼容的 `React.JSX.Element`
1336
- - Operator Chat 会话切换硬化:activate / create / restore 改为版本化提交,慢响应的旧会话选择不再覆盖较新的用户选择;新建 / 删除 / 归档会话完整清理 messages、tool calls、operation / gate / artifact cards、usage、streaming、unread、composer draft、图片附件与文件预览,createSession 改为服务端创建成功后再重置
1337
- - Operator Console:新增 `styles.css` 自定义属性完整性契约与会话选择一致性源码契约;测试中以 `URL.parse` 替换会抛错的 `new URL` 构造
1338
-
1339
- ## [0.32.0] - 2026-08-09
1340
-
1341
- ### 重点更新
1342
-
1343
- - 启动 Agent Worker Production Readiness v1 分阶段落地:Running Attempt 归属不再依赖 terminal ledger;safe `run-error` 可直接 `task retry`,不再要求 emergency `mark-failed`
1344
- - Harness Task 新 identity 改为 lineage/revision digest,同日 retry 不再依赖修改 title
1345
- - 新增 Task-scoped attempt lease、controller protocol compatibility 评估,以及 agent-worker production readiness 操作合同/checklist
1346
- - Attempt 终态释放 lease;写入前评估 controllerProtocol;scaffold 强制 ADR 0007 acceptance_policy;reconcile dry-run inventory 给出唯一恢复命令
1347
- - 硬下线 `agent-worker observe serve`,只读检视统一走 Console `/inspect/`
1348
-
1349
- ### 新增
1350
-
1351
- - `WorkerAttemptIdentity` / immutable run-owner store / `beginWorkerAttempt`(含 lease 路径)
1352
- - `WorkerAttemptFailureV2`、`resolveWorkerRecoveryDecision`、Attempt transition reducer
1353
- - Harness Task lineage/revision digests 与 `MaterializeOutcome` 元数据
1354
- - `docs/operations/agent-worker-production-readiness.md` 与 checklist 模板
1355
- - operator capabilities `controllerProtocol` envelope;`buildRuntimeReconcileInventoryDryRun`;command lifecycle official 命令清单
1356
- - Feature scaffold `acceptance_policy` 与 AC `verification.authority` / `required_evidence_kinds`
1357
-
1358
- ### 改进
1359
-
1360
- - Feature Review / Observe 对 Running 与 terminal 分层投影,ownership 告警按 `workerRunId` 聚合
1361
- - Task-scoped WorkerEvent 携带 `featureId`
1362
- - `batch run-ready` / `runSingleTaskAttempt` 在 terminal 后 CAS 释放 lease;有 controller identity 时先做 protocol preflight
1363
- - Feature next-action 优先消费 acceptanceGaps.nextCommand
1364
-
1365
- ### 修复
1366
-
1367
- - 硬下线 `agent-worker observe serve`:调用后不再监听端口,stderr 输出稳定标记 `OBSERVE_SERVE_REMOVED` 与替代入口,进程以退出码 2 结束
1368
- - 只读检视统一走 `agent-worker console`(默认 `127.0.0.1:8790`)的 `/inspect/`;`observe snapshot` 仍输出 GlobalSnapshot JSON
1369
- - Console doctor / health-match 不再以外部 8787 Observe 进程为健康前提
1370
-
1371
- ## [0.31.1] - 2026-08-09
1372
-
1373
- ### 重点更新
1374
-
1375
- - 后端测试生成新增确定性冲突预检与执行就绪性校验,在执行前精准拦截潜在错误并安全自动修复局部缺陷
1376
- - 更精细地区分多种写入失败状态(如思考耗尽、部分写入等),避免无效重试并优先恢复可用进度
1377
- - 收紧测试参数校验与结果真实性,准确区分失败与错误,并前置语法门禁防止生成错误代码
1378
- - 优化 16 个节点的执行成本,将多个审查与计划环节改为确定性交接,在保持质量的同时显著降低资源消耗
1379
-
1380
- ### 新增
1381
-
1382
- - 为 `dag rerun-task` 新增确定性 generated-output-conflict 预检,执行前扫描并拦截与磁盘已有文件的冲突,提供精确修复建议
1383
- - writer 执行新增 `writer-thinking-exhausted` 终态分类,精准识别模型思考耗尽且无实际写入的情况,避免无限重试
1384
- - 后端 pytest 模块新增 self-contained 静态导入门禁,在收集前拦截对生成共享命名空间的非法导入
1385
- - 新增 `backend-test-execution-readiness-v1` 执行就绪预检,在收集通过后验证传递 fixture/plugin 注册,支持对局部缺陷的安全自动修复
1386
-
1387
- ### 改进
1388
-
1389
- - 在已确认存在实质变更且完整性校验通过时,允许确定性推断缺失的实现结果,避免因模型漏报而中断已完成的流程
1390
- - 收紧 scenario-param 结论判定,全量不可判定显示 `UNAVAILABLE`,混合情况显示 `PARTIAL`,并支持精确到具体传输目标的校验与修复
1391
- - 大幅降低 16 节点运行成本:将部分审查与计划环节改为确定性静态交接,统一质量度量并优化模块聚合策略
1392
- - 在修复写入前新增 `ast.parse` 语法门禁并修正尾逗号算法,严格禁止生成 `,,` 等错误语法污染收集流程
1393
-
1394
- ### 修复
1395
-
1396
- - 修复 pytest 结果真实性问题:setup/teardown 错误不再被误报为 collection error,准确区分并独立展示 Failed 与 Error
1397
- - 修复结果合同丢失标识的问题,现完整保留原 pytest node ID、Case ID 与 TP ID,并明确记录业务测试体的实际执行数
1398
-
1399
- ## [0.31.0] - 2026-08-08
1400
-
1401
- ### 重点更新
1402
-
1403
- - Observe 看板新增 DAG 执行轨迹视图,支持按初始执行、修复轮次和最终收敛分车道展开真实的调度执行过程
1404
- - DAG 节点新增轻量执行历史摘要,在逻辑图卡片、节点表和 Inspector 中直观展示多次尝试与恢复记录
1405
- - 统一执行轨迹与 Inspector 的业务文案为自然中文映射,主界面不再显示难以理解的裸英文状态标识
1406
- - 优化 DAG 拓扑依赖边的路由算法,实现结构化避障正交路由,并恢复平滑的视觉线条样式
1407
-
1408
- ### 新增
1409
-
1410
- - Observe DAG 详情新增执行轨迹视图,默认展示逻辑拓扑,支持键盘切换,点击轨迹卡片可联动 Inspector
1411
- - 为 DAG 节点投影并展示轻量执行历史摘要,包含执行次数叙事及 Inspector 分次选择器
1412
- - 新增纯函数模块统一执行轨迹与 Inspector 的业务文案中文映射,规范展示失败原因与状态转换
1413
- - Console 与 Observe 共享统一的品牌 favicon,并支持通过同步脚本保持资源一致
1414
-
1415
- ### 改进
1416
-
1417
- - DAG 拓扑依赖边采用结构化避障正交路由,支持长边避障与控制回环独立展示,提升复杂拓扑的可读性
1418
- - 恢复相邻层级普通依赖边的平滑视觉样式,控制回环标签视觉更轻量,避免掩盖主链路
1419
- - DAG 详情响应内嵌有界的执行轨迹投影,在历史证据缺失时安全降级并保持逻辑拓扑始终可用
1420
- - 主 UI 业务术语优化,图卡与工具栏摘要改用自然的中文轮次描述,原始内部编号仅保留在诊断提示中
1421
-
1422
- ### 修复
1423
-
1424
- - 修复 Console 与 Observe 未共享 favicon 的问题,现统一使用同一品牌资源并兼容嵌入模式
1425
- - 修复 Observe 逻辑拓扑中同一行 DAG 边未能保持水平的问题,确保同逻辑行混合高度边正确展示
1426
- - 修复执行轨迹车道归类错误,修正收敛开启时节点错误归入最终收敛道的问题,确保各节点按真实位置归类
1427
- - 恢复 DAG Pi writer 节点的 bash 工具权限,同时保持只读节点无 bash 且 edit/write 仍受安全策略约束
1428
-
1429
- ## [0.30.0] - 2026-08-08
1430
-
1431
- ### 重点更新
1432
-
1433
- - 后端测试生成引入 map-shard 拓扑,将大型单节点拆分为 plan + manifest-shell + map_agent,每个模块用例获得独立的 16K 输出预算,消除大文件多轮写入被截断或完整性误报的风险
1434
- - 修复 map_agent 单个子节点超出 token 限制导致后续所有子节点被错误级联跳过的问题,确保各模块测试用例独立生成互不干扰
1435
- - Completeness Gate 升级为返回结构化缺陷原因,帮助模型精准定位并修复格式问题,有效结束续写死循环
1436
- - 后端测试用例生成全面转向需求驱动覆盖,以产品需求为基准,API 契约作为场景补充,提升测试覆盖的精准度
1437
-
1438
- ### 新增
1439
-
1440
- - 新增 plan 节点专属完整性评估器,仅校验 README 覆盖范围和模块索引,不再错误要求下游 map 子节点产出的文件
1441
- - 新增 `scripts/regen-backend-test-dag.mjs` 脚本,用于从 runtime builder 重建打包镜像,保持 runtime 与 packaged template 字节对齐
1442
- - Completeness Gate 的 `moduleStructurallyComplete` 新增结构化原因输出,明确指出空文件、标题层级错误、ID 格式非法或缺失必选章节等具体缺陷
1443
- - 新增 `looksLikeValidPythonModule` 校验逻辑,用于准确识别共享辅助代码和工厂函数,兼容包含合法不平衡分隔符的 fixture 字符串
1444
-
1445
- ### 改进
1446
-
1447
- - N2/N3 提示词改为需求驱动覆盖:Coverage Scope 固定为 new-operation/full-contract,以产品需求为基准全覆盖,API 契约补充场景维度,并禁止使用导致用例降级的 `## 测试类` 分组
1448
- - dagDynamicExpansionChildTaskSchema 扩展 `writerOutcomePolicy` 和 `retryPolicy`,使 map_agent 子节点能正确声明实现产出并受 Completeness Gate 保护
1449
- - Completeness Gate 白名单泛化,通过识别子节点 ID 前缀准确匹配 map 分片子节点
1450
- - DAG 执行器模型矩阵统一路由至当前环境实际可用的 wizard-local 模型,避免因 API Key 缺失导致节点大面积失败
1451
-
1452
- ### 修复
1453
-
1454
- - 修复 map_agent 中单个子节点超出 `maxTokensPerCase` 被误当作全局预算耗尽,导致后续兄弟子节点全部被跳过(SKIPPED)的问题
1455
- - 修复 plan 节点 Completeness Gate 错误要求下游 map 子节点产出文件齐全,导致计划节点始终判定为不完整并陷入重试死循环的问题
1456
- - 修复 manifest shell 命令因正则反引号和转义符在多层 shell 解析中被破坏,导致确定性 manifest 节点执行报错的问题,现采用 base64 编码彻底规避 bash 转义干扰
1457
- - 修复 pytest-plan 资源检查因严格括号配平启发式算法,误判包含合法不平衡分隔符的 fixture 字符串为不完整的问题
1458
-
1459
- ## [0.29.3] - 2026-08-07
1460
-
1461
- ### 重点更新
1462
-
1463
- - 夜间任务控制台升级为引导式工作台,支持点选预约、审阅写入集与任务看板,并保留人工审批门禁
1464
- - 失败 DAG 默认改为从失败节点安全续跑,避免因服务波动无理由新建任务
1465
- - Operator Chat 支持内联展示工具执行过程,并改进 Pi 用量统计的准确解析与状态栏展示
1466
- - 增强 Pi 网关限流容错,遇到 429 状态码时自动按 60 秒间隔退避重试
1467
-
1468
- ### 新增
1469
-
1470
- - 控制台新增前台辅助夜间任务调度开关,在控制台开启时可按间隔触发调度(仅前台有效,过夜仍需系统定时器)
1471
-
1472
- ### 改进
1473
-
1474
- - 失败 DAG 恢复策略改为先诊断再从失败节点续跑,统一对齐系统提示、恢复入口与工具说明
1475
- - Operator Chat 将工具执行过程内联至消息时间线,支持折叠查看,切会话后可恢复工具记录
1476
- - Operator Chat 用量栏改进 Pi 用量解析,准确展示输入、输出、缓存读取与费用信息
1477
- - 注入上下文面板升级为更大可读面板,展示脱敏后的完整系统提示、技能正文与激活工具列表
1478
-
1479
- ### 修复
1480
-
1481
- - 修复 Windows 计划任务因 /TR 参数超过 261 字符限制导致创建失败的问题,改用短 .cmd 路径绕过
1482
- - 修复 package-lock 中硬编码的镜像源地址导致发布链路 npm ci 失败的问题,统一指向官方源
1483
- - 修复 playwright-cli open 传入不支持的 --headless/--headed 参数报错的问题
1484
- - 修复 Pi 网关返回 429 限流时重试过快导致任务失败的问题,现自动识别并按 60 秒间隔退避
1485
- - 修复标准 DAG 节点将任务相对路径误当作仓库根路径读取,导致找文件超时的问题
1486
- - 修复 Operator Chat 重开会话时因 JSONL 丢失而静默新建会话 ID 导致会话不匹配的问题
1487
- - 修复夜间任务异步执行结果丢失及 agent-worker 可执行文件权限的问题
1488
-
1489
- ## [0.29.2] - 2026-08-07
1490
-
1491
- ### 重点更新
1492
-
1493
- - 优化后端测试生成 writer 的续写重试机制,直接内嵌具体目标路径以恢复输出,不再依赖读取受限路径
1494
- - 修复三处完整性门禁(Completeness Gate)误报,避免将正确的测试生成误判为残缺写集
1495
- - 修复标准 Happy Path / `contract-pi` 等节点 source prompt:只暴露仓库相对可读路径(`.harness/tasks/<taskId>/source/...`),并明确禁止把 task-relative 的 `source/需求.md` 当工具读路径
1496
-
1497
- ### 改进
1498
-
1499
- - 后端测试生成 writer(N2 MD / N5 pytest)在输出截断或残缺写集后,续写重试直接内嵌具体目标路径清单,不再依赖读取 `.harness/**` 路径
1500
- - 即使遇到结果为空或输出失败的异常,也会评估完整性门禁,将可恢复的部分写入升格为不完整写集,避免重试空转
1501
-
1502
- ### 修复
1503
-
1504
- - 修复 README 正文提及的编号式文件名被误判为缺失模块的问题
1505
- - 修复覆盖率矩阵(Coverage Matrix)表头识别被覆盖率范围(Coverage Scope)数据行遮蔽的问题
1506
- - 修复合法多行 `def` 的 pytest 脚本被误判为截断的问题(真正截断现仍由括号配平计数准确捕获)
1507
-
1508
- ## [0.29.0] - 2026-08-07
1509
-
1510
- ### 重点更新
1511
-
1512
- - 新增 Automatic SemVer 自动化发布链,基于 Conventional Commit 增量自动决定版本号,且绝不自动发布破坏性 major 版本
1513
- - Operator Chat 默认开放完整的 Pi 工具集(read/write/edit/bash 等),在保持安全硬边界的前提下提升操作便捷性
1514
- - 后端测试在 16K 最大输出限制下引入分文件写入纪律与完整性恢复机制,彻底避免残缺资产被误判为成功
1515
- - 控制台新增横向莫比乌斯环页签图标,以暖黑双环表达持续运行,并用克制橙色交接面标记受控切换
1516
-
1517
- ### 新增
1518
-
1519
- - 新增 Automatic SemVer 每日发布入口:严格依据最新稳定 tag 到 main HEAD 的增量决定版本,feat 触发 minor,其余触发 patch,破坏性标记会安全停止
1520
- - Operator Chat 默认注册并开放完整的 Pi 工具(read/write/edit/bash/grep/find/ls),Capabilities 与 system prompt 对齐 ADR 0011
1521
- - Loop Operator Console 新增横向暖黑莫比乌斯环页签图标,并覆盖静态资源与 UI 边界检查
1522
- - 客户端恢复机制支持静默忽略瞬时中断错误,并写入详细的恢复日志供运维人员核查
1523
-
1524
- ### 改进
1525
-
1526
- - 后端测试在 pytest 执行前增加场景参数一致性检查,支持确定性有界自修,并在执行后生成结构化的《测试失败用例分析报告》
1527
- - 测试框架不再硬编码模型 ID,改为动态解析真实的 Pi 模型矩阵,提升跨环境兼容性
1528
- - 初始化升级流程在控制器基线合并中增加验证权限守卫,提升操作安全性
1529
- - AGENTS 及初始化托管块现允许在监控 DAG 时进行简短的进度更新
1530
-
1531
- ### 修复
1532
-
1533
- - 修复控制台在用户主动切换标签页时,任务失败错误信息残留并跨标签页持续显示的问题
1534
- - 修复并发操作更新导致 JSON 路径产生竞态的问题,现对操作写入进行串行化处理
1535
- - 修复 Windows 环境下文件原子替换遇到短暂占用时导致操作卡死的问题,现有界重试并清理临时文件
1536
- - 修复后端测试 Markdown 生成器在已确认变更但无 diff 时误判的问题,现会进行严格的有界重试
1537
- - 改进 Windows 环境下临时目录清理机制,在遇到目录非空或繁忙(ENOTEMPTY/EBUSY)错误时自动重试
1538
-
1539
- ## [0.28.13] - 2026-08-06
1540
-
1541
- ### 重点更新
1542
-
1543
- - 显著缩短 CI 与发布流程的测试耗时,优化 2 vCPU runner 上的并发策略
1544
- - 修复集成测试在多核环境下因工作区指纹竞态导致的不稳定问题
1545
-
1546
- ### 改进
1547
-
1548
- - 优化 CI/发布环境的测试执行效率:固定 fast 测试池为 2 个 worker,移除重复的 pre-prepare 类型检查,并将 npm dist-tag 收敛轮询改为前快后慢的退避策略
1549
- - 默认 fast 测试池现按可用 CPU 核数(上限 4)分配,避免在 2 核环境下意外退化为串行执行
1550
-
1551
- ### 修复
1552
-
1553
- - 修复集成测试在多 worker 下因读取工作区指纹竞态导致的包校验不稳定问题,现固定集成测试为串行执行
1554
- - 修复 pre-push 验证收据漂移测试受 CI 环境固定 worker 数量影响的问题,确保使用不同值以正确验证指纹失效场景
1555
-
1556
- ## [0.28.12] - 2026-08-06
1557
-
1558
- ### 重点更新
1559
-
1560
- - Night Scheduler 交付 Clock Guarantee,支持通过 macOS、Linux 和 Windows 原生系统定时器自动周期触发调度
1561
- - 加固前端 DAG 验证的回退机制与 JSON 解析,提升复杂环境下的容错能力
1562
- - 修复 pre-push 验证在本地缺失远程提交记录时异常中断的问题,保障推送流程顺畅
1563
-
1564
- ### 新增
1565
-
1566
- - 新增 `scheduler clock install|status|uninstall` 命令,支持安装用户级别的 launchd、systemd 和 schtasks 定时器
1567
- - 统一 Clock receipt 记录机制,使手动触发与系统定时触发共享运行状态
1568
- - 新增 Clock 健康状态分类器,并接入 doctor、morning 和 scheduler add 的状态反馈
1569
-
1570
- ### 改进
1571
-
1572
- - 改进 `--verify` 相关文档示例,不再硬编码特定命令,改用占位符并指向项目配置文件以避免误导
1573
- - 规范化初始化升级测试套件的代码格式,使其符合项目的统一排版规范
1574
-
1575
- ### 修复
1576
-
1577
- - 修复 pre-push 验证在本地无法解析远程最新提交 SHA 时直接报错中断的问题,现会安全回退到完整验证流程
1578
- - 修复 CI 环境下因系统定时器精度不足导致的重试退避时间断言不稳定问题
1579
- - 修复前端 DAG 验证 JSON 解析及覆盖率证据推导的问题,增强验证回退机制的健壮性
1580
- - 修复任务草稿复用时因缺少 `--dag-output` 参数导致无法正确导出 DAG 的问题
1581
- - 修复空事实情况下误触发契约准备的问题,现会安全软停止并提示需要输入
1582
- - 修复 macOS 下因路径别名导致初始化升级测试中写入保护用例失败的问题
1583
-
1584
- ## [0.28.11] - 2026-08-06
1585
-
1586
- ### 重点更新
1587
-
1588
- - 修复 Night Scheduler 收尾提交因前导空格处理不当导致变更路径截断、暂存失败的问题
1589
-
1590
- ### 修复
1591
-
1592
- - Night Scheduler 收尾提交改用 trimEnd 替代 trim,保留 git porcelain 格式的前导空格,修复 worktree-only 变更路径被截断(如 src/hello.js 变为 rc/hello.js)导致 git add 失败的问题
1593
-
1594
- ## [0.28.10] - 2026-08-05
1595
-
1596
- ### 重点更新
1597
-
1598
- - 修复 DAG 变更清单 schema 校验误杀合法执行清单的问题,恢复夜间测试成功路径
1599
-
1600
- ### 修复
1601
-
1602
- - DAG writer change-manifest 的 schema 校验现可正确接受 Pi 执行器写入的 effectiveWriteSet 与 approval 元数据字段,修复 verify-pi project-governance-integrity 因 ownership/schema 不匹配而误拒合法 implement-pi 清单的问题
1603
-
1604
- ## [0.28.9] - 2026-08-05
1605
-
1606
- ### 重点更新
1607
-
1608
- - 提升 DAG 执行的可靠性与验证效率
1609
- - 修复初始化时 Pi 模型矩阵的配置问题
1610
-
1611
- ### 改进
1612
-
1613
- - 提升 DAG 执行的可靠性与验证效率
1614
-
1615
- ### 修复
1616
-
1617
- - 修复初始化时 Pi 模型矩阵的配置问题
1618
-
1619
- ## [0.28.8] - 2026-08-05
1620
-
1621
- ### 重点更新
1622
-
1623
- - 修复 Night Scheduler 收尾提交被运行态文件污染的问题,确保提交内容仅限源码变更
1624
-
1625
- ### 修复
1626
-
1627
- - Night Scheduler 收尾提交现忽略 .harness/ 与 .worktrees/ 运行态目录,仅暂存 writeSet 源码路径,避免 verify 将 dag-runs 等运行态文件误判为 writer 变更
1628
- - Night Scheduler worktree 在 prepare 时尽力确保 .gitignore 包含 .harness/ 与 .worktrees/,防止运行态文件干扰工作区校验
1629
-
1630
- ## [0.28.7] - 2026-08-05
1631
-
1632
- ### 重点更新
1633
-
1634
- - 修复 Night Scheduler 执行已准备好的 DAG 时因客户端超时中断任务的问题
1635
-
1636
- ### 修复
1637
-
1638
- - Night Scheduler 执行已准备好的 DAG 时,`task advance --approve-gate` 改用 `timeoutMs: 0`,避免默认 120 秒超时在 DAG 仍在运行时将其强制终止,现由内核负责执行监督
1639
-
1640
- ## [0.28.6] - 2026-08-05
1641
-
1642
- ### 重点更新
1643
-
1644
- - 修复 macOS 下 /tmp 路径别名导致 Night Scheduler 工作区隔离校验误报失败的问题
1645
-
1646
- ### 修复
1647
-
1648
- - Night Scheduler 准入控制现使用 realpath 规范化控制目录与 worktree 路径,避免 macOS /tmp 别名引发隔离校验假失败
1649
- - Night Scheduler 准入事实仅冻结真实的仓库内相对 worktree 路径,提升隔离检查的准确性
1650
-
1651
- ## [0.28.5] - 2026-08-05
1652
-
1653
- ### 重点更新
1654
-
1655
- - 修复 macOS 下 /tmp 路径别名导致 Night Scheduler 工作区隔离校验误报失败的问题
1656
-
1657
- ### 修复
1658
-
1659
- - Night Scheduler 准入控制现使用 realpath 规范化控制目录与 worktree 路径,避免 macOS /tmp 别名引发隔离校验假失败
1660
- - Night Scheduler 准入事实仅冻结仓库内相对路径的 worktree 路径,提升隔离检查的准确性
1661
-
1662
- ## [0.28.4] - 2026-08-05
1663
-
1664
- ### 重点更新
1665
-
1666
- - 修复 Night Scheduler 准入控制中 writeSet 门禁冻结的误报失败问题
1667
-
1668
- ### 修复
1669
-
1670
- - Night Scheduler `admission prepare`:为 `task advance --json` 补充 `expectJson`,并允许从 stdout 解析 writeSet gate,修复“did not return JSON”假失败
1671
-
1672
- ## [0.28.3] - 2026-08-05
1673
-
1674
- ### 重点更新
1675
-
1676
- - 修复 Night Scheduler 准入控制因运行态文件自污染导致 clean-tree 校验总是误拒的问题
1677
-
1678
- ### 修复
1679
-
1680
- - Night Scheduler 准入控制:freezeCleanBase 忽略 .harness/**与 .worktrees/** 运行态事实,避免 lifecycle 运行事实自污染导致 clean-tree 误拒,同时保留失败 admission 的 submitted → rejected 审计链
1681
- - 调整 freezeCleanBase 的执行顺序,将其提前至 submitSchedule 之前,确保 baseCommit 能在调度器写入控制文件前正确捕获 HEAD
1682
- - freezeCleanBase 将 .harness 与 .worktrees 视为非源码脏污(与 harvest 逻辑共享),避免准入流程自写入的调度事实干扰基线冻结
1683
-
1684
- ## [0.28.2] - 2026-08-05
1685
-
1686
- ### 重点更新
1687
-
1688
- - Night Scheduler 实现了夜间任务的完整调度闭环,支持准入控制、执行调度、证据归档与结果回收
1689
- - 控制台新增夜间任务只读视图与操作面板,支持通过 CLI 和人工审批执行准入与调度操作
1690
- - 新增可恢复的项目初始化升级流程,支持状态复核与安全断点恢复
1691
-
1692
- ### 新增
1693
-
1694
- - Night Scheduler 核心调度能力:支持一次性夜间计划准备、准入控制、队列预约、执行调度、证据归档及结果回收
1695
- - Night Scheduler 异常恢复机制:支持过期租约恢复、环境失败与不稳定测试的有界自动重试
1696
- - Night Scheduler 自动跟进功能(默认关闭),开启后仅生成任务草稿,永不自动审批
1697
- - 控制台夜间任务只读视图与操作面板,支持通过 CLI 和人工审批执行准入与调度操作
1698
- - 可恢复的项目初始化升级流程,支持断点恢复与状态报告查询
1699
-
1700
- ### 改进
1701
-
1702
- - 统一并修正了 DAG 模拟运行(dry-run)的指导说明,明确了预览快照的保存位置与限制
1703
- - 更新了项目路线图与计划索引,将已完成的可靠性计划归档并校准至最新基线
1704
-
1705
- ### 修复
1706
-
1707
- - 对齐了各处 DAG 模拟运行的指导说明,消除了文档与实际行为不一致的问题
1708
-
1709
- ## [0.28.1] - 2026-08-05
1710
-
1711
- ### 重点更新
1712
-
1713
- - 提升前端/后端任务执行稳定性,减少“看起来成功、实际未写入”的误判
1714
- - 缩短默认测试耗时,改善本地与发布验证体验
1715
-
1716
- ### 改进
1717
-
1718
- - 默认测试流程更快,并归档已完成计划
1719
- - 维护类任务不再误入前端实现流程
1720
- - 部分证据与 lint 检查改为非阻断,降低无关噪声对交付的干扰
1721
- - 模型输出格式更宽松:说明文字、行内通过结论等常见写法更不易被误杀
1722
-
1723
- ### 修复
1724
-
1725
- - 后端生成任务在未实际写入文件时不再误判为成功
1726
- - 前端写入前补齐契约校验,避免无效契约进入实现阶段
1727
- - 修正失败分类误把路径限制提示当成鉴权失败的问题
1728
- - 加强验证与结果解析,减少畸形输出导致的卡死或误判
1729
-
1730
- ## [0.28.0] - 2026-08-05
1731
-
1732
- ### 重点更新
1733
-
1734
- - 新增客户端上下文溢出(Context Overflow)的自动压缩与恢复机制,支持 OpenCode 与 Pi 环境
1735
- - DAG 总览面板全面隔离模拟运行,确保仅展示真实执行的任务状态
1736
- - 修复多项 DAG 生命周期与状态恢复问题,提升任务执行稳定性
1737
-
1738
- ### 新增
1739
-
1740
- - 新增内网/通用客户端上下文溢出恢复机制:支持精准识别中英文溢出提示,并为 OpenCode 和 Pi 环境自动生成压缩与恢复插件
1741
-
1742
- ### 改进
1743
-
1744
- - DAG 总览面板全面隔离模拟运行(dry-run/init-only),确保其不再污染活跃任务视图,仅展示真实执行的任务状态
1745
-
1746
- ### 修复
1747
-
1748
- - 修复 Playwright 浏览器执行未受限制的问题,恢复其有界执行机制
1749
- - 修复结构化审查在遇到重复或无效 JSON 时无法正确收敛的问题,确保严格按规范完成或进入有界修复
1750
- - 修复通用 writer 声明结果与实际改动不一致仍误判成功的问题,现强制要求结果与 diff 保持一致
1751
- - 修复任务在审计或失败运行后无法正确恢复生命周期的问题,现支持在存在待审批写入集时安全恢复执行
1752
- - 修复客户端上下文溢出恢复在压缩后未正确延迟恢复执行的问题
1753
-
1754
- ## [0.27.1] - 2026-08-04
1755
-
1756
- ### 重点更新
1757
-
1758
- - 前端测试 L-5 报告看板全新改版,与后端报告模板统一
1759
- - 修复后端测试因 pytest 脚本漏生成而直接阻断的问题,升级为精确的缺失脚本恢复机制
1760
-
1761
- ### 新增
1762
-
1763
- - 前端测试 L-5 看板新增确定性质量信号、门禁摘要、证据详情及用例执行详情展示
1764
-
1765
- ### 改进
1766
-
1767
- - 前端 L-5 报告看板与后端报告模板视觉与结构对齐,提升跨端报告一致性
1768
-
1769
- ### 修复
1770
-
1771
- - 修复后端测试在 Markdown 已声明安全映射脚本、但 pytest writer 漏生成文件时直接以 invalid-output 阻断 repair 的问题:initial facts 升级为 backend-test-pytest-collection-v2,可记录 expected/existing/missing scripts、collectionAttempted=false 与 missing-mapped-pytest-script,复用既有单次有界 repair 精确创建缺失脚本,并由最终收集、scope、安全和 hash freshness 门禁重新授权业务执行
1772
-
1773
- ## [0.27.0] - 2026-08-03
1774
-
1775
- ### 重点更新
1776
-
1777
- - 标准操作生命周期统一为 task advance(推进任务)与 task status(查看状态)两个入口
1778
- - 移除十余个旧版公开命令别名,简化操作心智模型
1779
- - task advance 首次执行可自动完成 PRD 导入、契约派生、DAG 生成与校验,停在 writeSet 摘要门禁等待确认
1780
- - Worker 与 Console 全面迁移至新的机器契约,统一通过 task advance 驱动
1781
-
1782
- ### 新增
1783
-
1784
- - 新增 task advance 作为标准任务生命周期的唯一推荐变更入口
1785
- - 新增 task status 作为只读任务状态查询入口
1786
- - task advance 支持 --accept-recommendations 参数,通过摘要确认确定性采纳工程边界推荐
1787
- - task advance 新增 Worker 机器契约参数:--profile、--max-concurrent、--run-id、--events-jsonl、--worker-association、--dag-output、--skip-finalize、--no-strict-models
1788
- - ADR 0008 将 run 级 dag recovery/forensic/decision 冻结为永久 advanced 专用,标准 task 面保持简洁
1789
-
1790
- ### 改进
1791
-
1792
- - Worker run-task 主路径改为 task advance prepare 到 writeSet 门禁后经 --approve-gate 执行,不再 spawn dag run-task / run-dag / dag validate
1793
- - Console 的 status 调用迁移至 task status,dagRunTask/prepareDagConfirmation 生成路径迁移至 task advance --dag-output
1794
- - 顶层 status 去掉 refreshSourceState 副作用,read-model next 指向 advance/status
1795
- - 标准主路径文档、skills、help、capabilities 全面收敛为 task advance + task status
1796
-
1797
- ### 修复
1798
-
1799
- - 完成 task-advance 迁移后对齐残余断言:skill 触发词、workflow defaultEntry、Ring1/Ring2 CLI smoke 及 help-summary 与新生命周期一致
1800
- - 更新 dag/run-task/final-verification/reference-context 预期,pre-push 不再断言已删除的 dag run-task / task contract 公开命令
1801
-
1802
- ## [0.26.4] - 2026-08-03
1803
-
1804
- ### 重点更新
1805
-
1806
- - 强化 DAG 运行时安全与 writer 工具级写边界
1807
- - 收敛效率与可选 document catalog 兼容
1808
- - 防污染 review-pass 知识写入
1809
-
1810
- ### 改进
1811
-
1812
- - fresh init 与旧项目 `init update --apply-safe` 刷新的 `AGENTS.md` managed block 现要求持续监控 DAG 至 `FINISHED`、`FAILED`、`partial_failed` 等已结束终态或 Decision Gate 需要 approve;判活须组合 runner heartbeat、session events 与 `dag doctor` liveness/provider meaningful progress,并禁止 exclusive writer 运行期间主会话或其他 writer 并发修改工作区
1813
- - DAG 治理闭包与收敛效率:已配置 `docs/document-catalog.json` 的项目在生成时从 `completeDirectoryIndexes` 注入具体 index companion 到 implement/repair 内存路径,未配置该可选 catalog 的项目保持原有 DAG 生成能力;repair artifact 支持 `blocked-boundary`/`requiredScope` 与 empty-manifest `no-progress` 提前止损;DAG shell 支持显式 `failFast`,supervised hard verify 在同 run、同工作区指纹与命令契约下仅复用成功命令并写可审计 receipt。真实非零退出与 finished 聚合规则不放宽,且不跨 run 缓存验证结果
1814
- - DAG Pi writer 工具级写边界:移除 writer unrestricted `bash`,以 SDK 同名受控 `edit`/`write` 在文件 API 执行前强制 repo containment、symlink/ancestor containment、`allowedPaths`/`writeSet`/`forbiddenPaths`,并硬拒绝 `.harness/tasks/**` 与 `.harness/dag-runs/**`;CLI-only 与 SDK→CLI 对 writer fail-closed(read-only `cli-only` rollback 保留),SDK resource loader 与 CLI 同时关闭 Pi extension 自动发现,阻止 extension 在 session 启动或覆盖工具后绕过沙箱。授权递归 glob(如 `src/**`)可创建其覆盖的中间目录,但同级越界目录仍在 mutation 前拒绝。same-run hard-verify workspace fingerprint 纳入当前 Task Contract 稳定 ignored 治理输入;这些文件漂移后成功命令全部 `reused=false`,runner-owned dag-runs volatile 不进入指纹。post-run write-guard 与 change-manifest 保持第二层防御
1815
- - DAG convergence 成功知识防污染:只有 `review-pi` 与 review verdict recovery 均 FINISHED 且明确 `VERDICT: pass` 才写入 `review-pass` knowledge pattern;review gate 仅完成路由但上游 authority/protocol/review verdict 非 pass 时按 `non-retry-failure` 收口,不再把 `request-revision` 或被跳过的 review 误记为成功
1816
-
1817
- ### 修复
1818
-
1819
- - 修复未配置 document catalog 的项目在 DAG 生成路径上的兼容问题,避免可选 catalog 成为硬依赖
1820
- - 提升 convergence 与 writer 可靠性
1821
-
1822
- ## [0.26.3] - 2026-08-02
1823
-
1824
- ### 重点更新
1825
-
1826
- - DAG 无害工具副产物自动恢复
1827
- - 提升前端验证命令的精确度与失败分类
1828
- - 隔离测试固件与运行环境标记
1829
-
1830
- ### 新增
1831
-
1832
- - DAG 无害工具副产物自动恢复:自动清理 Git Bash 误用 `> nul` / `2> nul` 在仓库根目录生成的普通非 symlink untracked `nul` 文件,避免其干扰 Git 状态复查与变更清单生成
1833
-
1834
- ### 改进
1835
-
1836
- - 精确限定前端验证命令的作用域,提升验证执行的准确性
1837
- - 更精准地分类前端验证失败原因,避免模糊报错
1838
- - 将运行器标记与测试固件进行安全隔离,防止测试环境干扰
1839
-
1840
- ### 修复
1841
-
1842
- - 修复配置验证目标错误处理符号引用的问题
1843
- - 修复 DAG 执行中无害的根目录 nul 副产物导致流程异常的问题
1844
-
1845
- ## [0.26.2] - 2026-08-02
1846
-
1847
- ### 重点更新
1848
-
1849
- - 后端测试在执行前新增有界的 pytest 收集修复机制,安全且精准地自动修复生成测试中的不一致问题
1850
- - 全面加固 DAG 审查协议与前端契约边界,提升执行稳定性
1851
- - 修复 Observe 看板轮询刷新时的交互状态保留问题,优化使用体验
1852
-
1853
- ### 新增
1854
-
1855
- - 后端测试在业务 pytest 执行前新增有界的收集(collection)修复机制:仅对生成的测试目录中可唯一归因的语法、导入、模块或参数化不一致进行最多一次自动修复,且严格禁止修改生产代码或放宽断言
1856
-
1857
- ### 改进
1858
-
1859
- - 加固 DAG 审查协议与追踪门禁,提升执行稳定性
1860
- - 加固前端 DAG 契约边界
1861
- - 稳定 Linux 环境下的测试收集固件(fixture)
1862
- - 对齐受监督的 DAG 收尾拓扑结构
1863
-
1864
- ### 修复
1865
-
1866
- - 修复 Observe 看板在轮询刷新时破坏 DAG 图视口 DOM 的问题,确保拖动与滚动状态不被销毁
1867
- - 修复节点检查器在内容未变时重建内容的问题,现支持异步标签页安全恢复滚动位置
1868
-
1869
- ## [0.26.1] - 2026-08-02
1870
-
1871
- ### 新增
1872
-
1873
- - 新增 `task source prepare`:PRD-first 确定性派生薄执行契约(`source/需求.md` / `执行约束.md` + managed paths),默认 dry-run,`--apply` 仅经 Task Contract 投影落盘;默认无 LLM 写 source,工程字段不从 PRD 自动提取
1874
-
1875
- ### 修复
1876
-
1877
- - Nightly 发布恢复探测会对 annotated tag 做 peel:远程 `ls-remote` 优先取 `refs/tags/<tag>^{}` 的 commit SHA,而不再把 tag object SHA 与 `git rev-list` 的 commit 误判为 conflict,避免「tag+npm 已齐、仅缺 GitHub Release」的恢复被错误中断
1878
- - 收紧 Windows 下 write-guard 的 `git status` 启动路径,降低启动失败与误报
1879
-
1880
- ## [0.26.0] - 2026-08-01
1881
-
1882
- ### 新增
1883
-
1884
- - Observe/看板将 DAG 机器态 `partial_failed` 展示为「部分成功」(琥珀色 badge/timeline),与红色「执行失败」区分;内部状态与 recovery 语义仍为 `partial_failed` 非成功终态
1885
- - `harness.json` 的 `executors.pi.LOW|MED|HIGH` 支持简洁对象写法 `{ model, thinking? }`,同时完全兼容既有模型字符串;显式 `thinking` 会透传到 DAG Pi 的 `modelConfig.thinking`,省略时不强制覆盖 Pi 默认(含既有 `wizard-local/gpt-5.5 → low` 硬编码例外,且显式配置优先)
1886
- - pre-push 新增本机 verification receipt:相同 Git tree、关键环境与默认 24 小时 TTL 命中时可复用已通过验证,并对仅 `docs/reports/**/*.md` 的确定性变更使用 `check-repo` + `docs:build` 轻量门禁;新分支、多 ref、dirty/HEAD 漂移等不确定场景保持 fail-closed。
1887
- - DAG Pi 模型矩阵支持 `provider/model` 限定引用,可让 LOW/MED/HIGH 通过不同 Pi provider 调用模型;裸模型名继续兼容原有映射与默认 provider,非法空组件在模型调用前安全拒绝
1888
-
1889
- ### 修复
1890
-
1891
- - 收紧 `frontend-project-default-implementation`:强前端项目证据(React/Vue/Next)须与具体前端 allowedPath 证据(如 `.tsx`、`src/components/**`、`apps/web/src/**`)共同出现,才作为默认前端实现依据。核心 runtime 路径(如 `src/workflows/dag/**`、`src/server/**`)与宽泛 `src/**` 不再被仓库级前端证据单独劫持到 `frontend-implementation`,模糊任务安全回退 `standard-dag`/`supervised-implementation`。`Task Type: backend-feature` 不再因项目默认前端证据被误判为 mixed,分类保持 backend、模板保持非前端。不新增模型仲裁或路由 DAG 节点,也不向通用 backend 目录列表硬编码 loop-agent 私有目录,修复跨仓库通用。
1892
-
1893
- ## [0.25.6] - 2026-08-01
1894
-
1895
- ### 重点更新
1896
-
1897
- - 后端测试新增按变更类型界定覆盖深度的机制,精准控制测试范围并避免无关用例膨胀
1898
- - 初始化托管块改为从独立模板文件渲染,大幅降低维护难度并提升可读性
1899
-
1900
- ### 新增
1901
-
1902
- - backend-test 新增机器可读的 Coverage Scope,支持按新增接口、契约变化、行为变化、缺陷修复和纯实现优化选择覆盖深度
1903
- - 目标项目的 AGENTS.md 托管块改为从 docs/templates/init-managed-agents.md 渲染,便于直接编辑维护
1904
-
1905
- ### 改进
1906
-
1907
- - Observe/看板将 DAG 机器态 `partial_failed` 展示为「部分成功」(琥珀色 badge/timeline),与红色「执行失败」区分;内部状态与 recovery 语义仍为 `partial_failed` 非成功终态
1908
- - 纯优化类变更现聚焦于需求、确定性影响面与最小回归集,避免无关接口全量用例膨胀
1909
- - 目标项目 `AGENTS.md` 的 `LOOP_AGENT_INIT` managed block 改为从 `docs/templates/init-managed-agents.md` 渲染,便于直接编辑维护;该模板仅随 npm 包发布,不投影到目标项目治理目录;同时同步 `import-prd`/exec-plan 推荐路径、init reconcile 零写入条件、DAG liveness/recovery 精确命令及 Official Console 裸入口
1910
-
1911
- ## [0.25.5] - 2026-07-31
1912
-
1913
- ### 重点更新
1914
-
1915
- - 后端测试 DAG 新增确定性场景覆盖分析与 Markdown 到 pytest 的精准对应,显著提升测试质量度量的准确性与透明度
1916
- - 受监督的 DAG 默认启用有界自愈闭环,能够自动处理可恢复的执行失败并安全重算后续节点
1917
- - 全面加固客户端会话恢复机制,精准识别并补偿由模型服务瞬时异常引发的结构校验错误
1918
- - 大幅增强 DAG 执行的确定性收尾能力,确保在模型输出不稳定或前置快照失败时安全降级
1919
-
1920
- ### 新增
1921
-
1922
- - 后端测试固定 9 节点 DAG 新增可审计的场景覆盖与 Markdown→pytest 一一对应事实:节点 4 从严格 Coverage Matrix、Case Rule/Test Point 绑定及 OpenAPI required/enum/boundary/pattern/format 规则生成覆盖报告,节点 6 生成 1:1/1:0/1:N/0:1 对应报告,节点 7 校验一致性后物化 canonical manifest
1923
- - 受监督的 DAG 默认启用有界自愈闭环:通过 maxFixLoops 派生收敛预算,将可恢复失败与合法的审查修订请求统一纳入恢复链,并确定性注入上一轮失败证据指针,同时保持对安全失败的不自动重试
1924
- - 后端测试用例生成与独立 Review 改为产品需求优先,并穷举文档化 API 规则,涵盖生命周期、枚举等价类、长度数值边界及业务状态迁移等场景
1925
- - 后端测试 HTML/facts 新增可展开的“用例场景覆盖分析”和“Markdown → pytest 一一对应”质量详情
1926
-
1927
- ### 改进
1928
-
1929
- - backend-test 用例生成/独立 Review 改为产品需求优先,再穷举文档化 API 规则:覆盖 active/deleted duplicate-name 生命周期、每个合法枚举值、非法枚举等价类、长度/数值边界、字符格式、null/missing/type 错误和业务状态迁移;每个 Case 绑定唯一 primary pytest symbol
1930
- - backend-test 将 Coverage Test Point 与 pytest 执行单元解耦:Test Point 明确分为 `variant`、`assertion`、`cross-cutting`,只有真实输入/状态/结果变体生成参数 item,同一业务旅程检查点通过 symbol docstring 追溯,HTTP 日志等横切证据不再制造重复业务 item;报告区分 Markdown Case、primary symbol、pytest item 并展示执行放大率
1931
- - backend-test HTML/facts 新增可展开的“用例场景覆盖分析”和“Markdown → pytest 一一对应”质量详情,并由最终报告分别消费节点 4/6 详细 findings 与节点 7 machine totals
1932
- - 减少全量测试中的重复 CLI 冷启动和 self-host canary 二次打包安装场景,收敛低价值重复用例并保留关键端到端主路径
1933
- - DAG 执行期间的主会话行为约束得到增补:启动后自主推进至结束、持续可靠判活、严格限制工作区文件修改,并优先使用纯函数探针排查路由
1934
-
1935
- ### 修复
1936
-
1937
- - 修复 Windows 上 Pi writer 已完成写入后,write guard 启动 `git status` 偶发 `0xC0000142 / STATUS_DLL_INIT_FAILED` 而快速失败的问题:对该精确状态启用更长的有界指数退避和同一 Git for Windows 安装内的 executable fallback,持久化 writer 前置 baseline 与逐次结构化诊断;所有尝试耗尽后仍保持 fail-closed
1938
- - 修复后端测试节点 4/6 的确定性覆盖与对应分析在自身崩溃时被静默吞掉的问题,现会写入诊断信息并按基础设施故障安全停止
1939
- - 修复后端测试节点 4、6、7 在缺失 spec.sourceBinding 时未统一停止的问题,避免上游回退导致下游 manifest 突发报错
1940
- - 修复成功执行路径下 HTTP 请求/响应日志解析不规范的问题,现统一规范化大小写不敏感的日志前缀并完整解析 JSON,恢复报告中的请求参数与大响应正文
1941
- - 修复 Pi writer 已输出合法结果却因前置说明、Markdown 装饰或中文标点被误判失败的问题,现确定性规范化唯一 outcome 且不影响无副作用操作
1942
- - 修复 Pi writer 前置 Git 快照失败被延后处理的问题,现调用模型前即安全停止,并在失败信息中保留完整的尝试次数与错误上下文
1943
- - 修复不稳定模型输出导致受监督 DAG 无法可信收尾的问题,现使用精确判定协议和有限重试,确保最终状态准确且保持安全关闭
1944
- - 修复合并后 canonical DAG Pi MED 路由错误回退到旧模型的问题,统一恢复为正确配置
1945
- - 修复脚手架样例漂移检查误判当前 worktree 目录名的问题,避免附加 worktree 触发稳定测试失败
1946
- - 修复 Windows 8.3 短路径与长路径指向同一仓库时生成不同指纹的问题,避免应用数据命名空间冲突
1947
- - 修复生成的 OpenCode 恢复插件在 busy→idle 竞态下丢失续接的问题,现保留待处理错误并在明确空闲后安全重试
1948
- - 修复 Pi retry 配置读取将权限或 I/O 错误误判为缺文件的问题,现仅缺失文件时允许新建配置
1949
- - 修复客户端瞬态恢复无法正确处理 TypeValidation 瞬时错误的问题,现能准确识别携带瞬时信号的错误并安全重试,纯 schema 校验失败仍被拒绝
1950
-
1951
- ## [0.25.4] - 2026-07-31
1952
-
1953
- ### 新增
1954
-
1955
- - stream run progress heartbeats
1956
-
1957
- ### 新增
1958
-
1959
- - stream run progress heartbeats
1960
- - improve HTML failure triage
1961
- - add native checklist and HTML report gates
1962
-
1963
- ### 修复
1964
-
1965
- - tighten production URL detection
1966
- - preserve supported Pi default model
1967
- - sync packaged prompt contract
1968
- - normalize drifted case ids and decode nested HTML entities
1969
-
1970
- ## [0.25.3] - 2026-07-30
1971
-
1972
- ### 重点更新
1973
-
1974
- - 新增 OpenCode 客户端瞬态会话恢复机制,在内置重试遗漏时自动补偿 UnknownError
1975
- - 优化前端实现需求路由,将前端开发与测试任务准确分发至对应 DAG 流程
1976
-
1977
- ### 新增
1978
-
1979
- - loop-agent init 支持 --client-recovery 参数,可在目标项目生成 OpenCode 插件以补偿瞬态 UnknownError
1980
- - 支持在用户级别原子写入 Pi retry 推荐配置,并严格遵守插件 ownership 不覆盖用户改动
1981
-
1982
- ### 改进
1983
-
1984
- - 初始化或刷新 AGENTS.md 时,要求将明确的前端实现需求路由至 frontend-implementation,与浏览器和 UI 自动化测试区分开
1985
-
1986
- ### 修复
1987
-
1988
- - 修复生成的 OpenCode 恢复插件无法按真实 API 工作的问题,现直接返回 Hooks.event 并按事件正确分发与续接
1989
- - 修复 Type validation failed 等真实错误被业务校验规则误杀的问题
1990
- - 修复 Pi retry 配置读取将权限或 I/O 错误误判为缺文件的问题,现仅 ENOENT 视为缺文件
1991
-
1992
- ## [0.25.2] - 2026-07-30
1993
-
1994
- ### 重点更新
1995
-
1996
- - 加固后端测试中文 HTML 报告的用例关联与解析逻辑,提升报告的准确性与可读性
1997
-
1998
- ### 改进
1999
-
2000
- - 改进基于 class 的 pytest node id 解析,准确提取真实脚本路径,避免显示为 unknown.py
2001
- - 当用例名称缺失后端 ID 时,支持按函数名与 Markdown catalog 进行回退关联
2002
- - 规范化 [REQ]/[RESP] HTTP 日志块,增强日志兼容性
2003
-
2004
- ### 修复
2005
-
2006
- - 修复成功执行路径下原生 pytest-html 报告未正确保留的问题,现会将其另存为 backend-test-pytest-native.html
2007
-
2008
- ## [0.25.1] - 2026-07-30
2009
-
2010
- ### 重点更新
2011
-
2012
- - 后端测试 DAG 节点新增 JaCoCo 覆盖率收集能力,支持在 L-5 dashboard 展示 Java 后端的代码行与分支覆盖率
2013
- - 规范任务 DAG 草稿的默认输出路径,统一指向 `.harness/tasks/<task-id>/dag.json`
2014
- - 修复 loop-agent 技能条目因注入预算超限被截断的问题,确保默认 DAG 下技能完整解析
2015
-
2016
- ### 新增
2017
-
2018
- - backend-test DAG 节点 7 支持可选的 JaCoCo 覆盖率收集:通过跨网络 TCP dump JaCoCo tcpserver 数据,经 jacococli.jar 转换并解析为 code-coverage-v1 合约,供 L-5 dashboard 使用
2019
- - task shell 配置新增 `jacocoCoverage` 字段,支持配置 endpoint、cliJarPath、includes 和 connectTimeoutMs
2020
- - 新增面向开发与运维的 JaCoCo 覆盖率部署指南,涵盖 tcpserver agent 挂载、端口放行、cli 预装及安全提醒
2021
-
2022
- ### 改进
2023
-
2024
- - `dag run-task` 与 `dag init-hybrid` 的默认输出路径改为 `.harness/tasks/<task-id>/dag.json`,不再写入系统临时目录
2025
- - agent-worker 在 strict validate 成功后,将校验通过的草稿原子同步到 task 根 `dag.json`
2026
- - task read-model、delegate worktree 提示及各文档示例统一指向规范化的任务草稿路径
2027
- - skills 补充 `source-and-plan-practice.md`,明确 `import-prd` 与 `plan create` 的决策表与推荐顺序,不强制微小任务
2028
-
2029
- ### 修复
2030
-
2031
- - 压缩 SKILL.md 及 required-reference 体积,修复默认 DAG 技能注入预算超限导致 loop-agent 条目被截断的问题
2032
-
2033
- ## [0.25.0] - 2026-07-30
2034
-
2035
- ### 重点更新
2036
-
2037
- - 新增确定性 Feature Packet 脚手架,支持后端、前端及含 API 前端模板,并具备原子批量写入与预检能力
2038
- - 新增 Feature 交付编排命令,自动串联最终验证、交付与收口流程
2039
- - 显著提升 DAG 执行稳定性,修复超时残留子进程、重复验证及耗时记录不完整等问题
2040
- - 新增任务级 Maven 验证规划,自动定位并仅针对相关模块执行验证
2041
- - 后端测试节点现可自动生成指标机器计算的自包含 L-5 可视化报告
2042
-
2043
- ### 新增
2044
-
2045
- - backend-test DAG 节点 7 支持可选的 JaCoCo 覆盖率收集(Java 服务):task shell 配置新增 `jacocoCoverage`(endpoint + cliJarPath + includes + connectTimeoutMs);节点 7 在 pytest 后跨网络 TCP dump JaCoCo tcpserver 执行数据,用 jacococli.jar 转为 jacoco.xml,确定性解析为 `contracts/code-coverage-v1.json` 并喂给 L-5 dashboard 的 line/branch 指标;全程失败安全(endpoint 不通 / cli 缺失 / 解析失败 → 覆盖率降级 unavailable,不阻断测试与 L-5)
2046
- - 提供 agent-worker Feature Packet 脚手架,内置 backend-only、frontend-only 和 fe-with-api 模板,支持原子批量写入与 validate-feature 预检
2047
- - 新增 agent-worker feature advance 命令,编排 verify-final、delivery 到 closeout 的完整交付路径
2048
- - 新增 agent-worker feature doctor 命令,提供只读的交付就绪诊断(覆盖证据、Pool 状态与工作区改动)
2049
- - Maven 验证现支持任务级范围规划,根据任务涉及的目录自动定位并验证正确的 POM 模块
2050
- - 后端测试 DAG 节点 7 现可确定性生成美观的自包含 L-5 可视化报告,指标完全由机器计算
2051
-
2052
- ### 改进
2053
-
2054
- - Feature Delivery 在省略特定参数时,默认使用 feature verify-final 写入的标准证据路径
2055
- - TaskConfig 持久化入口在写入前执行 schema 校验,拒绝不符合规范的数据格式
2056
- - Dogfood 前端测试服务器在检测到旧缓存导致接口数据异常时,现会自动强制重启恢复
2057
-
2058
- ### 修复
2059
-
2060
- - 显著加固 DAG 执行可靠性,修复超时或中断后子进程残留问题,降低文件占用与测试干扰概率
2061
- - 修复受监督流程可能重复执行完整验证的问题,避免高成本检查在不同阶段反复运行
2062
- - 修复 DAG 被放弃或替换时,运行中节点实际耗时记录不完整的问题
2063
- - 修复 Windows 环境下因提示内容过长导致 DAG 无法启动的问题,现安全采用受控临时文件传输
2064
- - 修复前端实现 DAG 在未确认项目 Mock 能力时误报缺失 Mock 文件的问题
2065
- - 修复结构化任务配置中数组类型校验不严格的问题
2066
-
2067
- ## [0.24.10] - 2026-07-29
2068
-
2069
- ### 修复
2070
-
2071
- - Closeout 重验不再要求 `should`/partial AC 绑定完整 run evidence(仅 `covered` must AC 强制 hash 绑定)
2072
-
2073
- ## [0.24.9] - 2026-07-29
2074
-
2075
- ### 重点更新
2076
-
2077
- - 后端测试执行失败时的诊断信息更加完善,避免出现无输出导致无法定位的问题
2078
- - 修复 Windows 环境下前端证据校验因长命令终端转义导致的崩溃
2079
- - 节点检查器新增「节点输入」只读页签,支持安全审查冻结的节点定义
2080
-
2081
- ### 新增
2082
-
2083
- - Observe / Inspect 节点检查器在「节点输出」左侧新增「节点输入」页签:只读投影冻结 run.json 顶层节点定义(任务正文、依赖、执行器摘要、边界)与可选 assembled prompt 指纹
2084
-
2085
- ### 改进
2086
-
2087
- - 后端测试节点执行失败时可观测性增强:写入包含映射脚本、PYTHON_BIN、pytest 版本、exit、html 是否存在与 STEP 等信息的诊断文件,并在节点 stderr 汇总失败摘要
2088
-
2089
- ### 修复
2090
-
2091
- - 修复前端证据校验在 Windows 下通过长 node -e 命令执行时的终端转义崩溃:改为由 runtime 内部直接校验,兼容 CMD、Git Bash、PowerShell 与 Unix shell
2092
-
2093
- ## [0.24.9] - 2026-07-29
2094
-
2095
- ### 修复
2096
-
2097
- - Closeout 重验不再要求 `should`/partial AC 绑定完整 run evidence(仅 `covered` must AC 强制 hash 绑定)
2098
-
2099
- ## [0.24.8] - 2026-07-29
2100
-
2101
- ### 重点更新
2102
-
2103
- - 修复 FINAL-VERIFY 改写已存在的 allowed_paths 证据(gitignore)时 Git checkpoint 误失败,以及 record-error 后 Task Pool 卡在 Running 无法 mark-failed/retry 的问题
2104
-
2105
- ### 修复
2106
-
2107
- - `finalizeGitTask` 对 allowed_paths 内的 pre-existing ignored evidence 允许 rewrite 并 force-add
2108
- - `runReadyTasks` 在 record-error 时 best-effort 投影 `runs.jsonl` + Failed 状态,便于官方 retry
2109
-
2110
- ## [0.24.7] - 2026-07-29
2111
-
2112
- ### 重点更新
2113
-
2114
- - 修复 Feature Verification Bundle 在 Delivery 重验时因绝对路径 artifact、`qa-testcode` 类型与 `run_record` 后写 hash 漂移而失败的问题
2115
-
2116
- ### 修复
2117
-
2118
- - 修复前端证据校验在 Windows 下通过长 `node -e` 命令执行时的终端转义崩溃:改为由 runtime 内部直接校验,兼容 CMD、Git Bash、PowerShell 与 Unix shell
2119
- - 修复 `frontend-implement-pi` 因复用需求发现 skill 而长时间侦查后空实现:contract 现在强制 requirement outcome 与 interaction 行为语义,implement/repair 改用不含递归 OpenSpec/AI workspace 搜索的 bounded skill,并由 `implementation-outcome-v1` 机器校验声明结果与实际 diff;只有显式 already-satisfied 才允许空 diff
2120
- - Outcome 投影强制写出 repo-relative artifact 路径
2121
- - Delivery `verifyArtifactRefs` 接受位于仓库内的绝对路径(兼容旧 envelope)
2122
- - `verifyBundleTaskSpecBindings` 接受 `qa-testcode`(backend-test)与 `qa-execute`(frontend-test)
2123
- - Bundle 重验仅 rehash typed evidence(backend/frontend-test-result),忽略可能后写的 run_record
2124
-
2125
- ## [0.24.6] - 2026-07-29
2126
-
2127
- ### 重点更新
2128
-
2129
- - 修复后端测试 Markdown-first 成功路径未投影 `backend-test-result` 的问题,Ready Planner 可再次放行 FE-TEST
2130
-
2131
- ### 修复
2132
-
2133
- - Markdown-first `markdown-execute-html` 在解析原生 pytest-html 后立即物化 `contracts/backend-test-result.json`(Result v1),避免 styled HTML 覆盖后丢失 JSON island
2134
- - `node-execution` 对 `markdown-execute-html` 绑定 `structuredArtifact*`,Outcome 适配器可投影 `kind: backend-test-result`
2135
-
2136
- ## [0.24.5] - 2026-07-28
2137
-
2138
- ### 重点更新
2139
-
2140
- - 后端测试 Markdown 模块与 pytest 脚本实现一对一精准映射,提升测试执行的确定性
2141
- - 修复后端测试 HTML 报告中请求参数显示为空的问题,正确展示请求与响应日志
2142
- - 初始化项目支持将「帮我完成/实现/修复」等通用需求表达直接路由进 Agent DAG
2143
- - 新增裸 agent-worker console 入口,简化本地看板启动流程
2144
-
2145
- ### 新增
2146
-
2147
- - 初始化后的目标项目支持将「帮我完成/实现/修复/开发」等通用需求表达确定性地路由进 Agent DAG(new-task → dag run-task → dag validate → run-dag),无需追加额外的 cli 关键词
2148
- - 新增裸 agent-worker console 入口,直接启动 Loop Operator Console,repo 默认当前目录、port 默认 8790
2149
- - check-skill-entry.sh 及初始化投影脚本支持解析 YAML 折叠块,对通用需求触发词建立机器门禁以防漂移
2150
-
2151
- ### 改进
2152
-
2153
- - 后端测试收敛模块映射,生成与评审 prompt 强制模块文件一对一映射,在映射缺失时支持确定性恢复
2154
- - 后端测试 execute/report 节点文案与 pytest-html 真源对齐,移除残留的 JUnit 表述
2155
- - 后端测试 HTML 报告对齐 R04 模板样式,采用全 inline style 设计(渐变 banner、可折叠用例卡片、状态胶囊及请求/响应分块展示)
2156
- - 本地看板启动更简,端口被占用时不再自动更换,改为明确提示使用 --port 显式指定其它端口
2157
- - 旧项目经 init check-update 与 apply-safe 即可安全补回新的「通用需求实现」路由行,并保留用户自定义前言
2158
-
2159
- ### 修复
2160
-
2161
- - 修复后端测试 HTML 报告中请求参数显示为空的问题:渲染器现已兼容 payload= 键或 JSON request_record 格式的请求摘要
2162
- - 修复后端测试报告无法正确获取请求/响应日志的问题:兼容 HTTP_REQUEST 与 HTTP REQUEST 两种日志前缀,并在解析前正确解码 HTML 实体
2163
- - 修复 shell-executor 在 Windows 环境下因反斜杠路径导致 runDir 损坏的问题,确保路径注入稳定
2164
- - 修复前端 lint baseline 在 Windows 下因路径解析逻辑缺陷,拒绝相对路径输出导致评估误报为不可用的问题
2165
- - 修复多个测试固件在 Windows 下因嵌套 Shell 引号剥离导致命令执行输出为空或报错的问题(涉及 composite-shell 与 init-command)
2166
-
2167
- ## [0.24.4] - 2026-07-28
2168
-
2169
- ### 重点更新
2170
-
2171
- - 控制台「导入需求」支持多文件批量导入,自动合成可编辑正文后创建任务
2172
- - 后端测试移除重复运行稳定性门槛,每次执行同时生成用户可读的 HTML 与 Markdown 报告
2173
- - 本地 pre-push 钩子升级为执行完整 CI 流程,覆盖治理检查、类型检查与全量测试
2174
-
2175
- ### 新增
2176
-
2177
- - 控制台「导入需求」支持选择或拖入一份或多份 Markdown/TXT 文档(严格 UTF-8,单文件 ≤8 MiB,最多 8 个),多文件分卷归档并合成可编辑正文后创建任务
2178
-
2179
- ### 改进
2180
-
2181
- - 后端测试 L-5 结论不再将重复运行稳定性作为门槛,每次执行同时产出用户可读的 HTML 与 Markdown 报告,内部 facts 文件保留用于审计
2182
- - 本地 pre-push 钩子改为执行完整 CI 流程(治理检查 + 类型检查 + 全量测试),pre-commit 保持仅执行 check-repo
2183
- - harness 中等复杂度(MED)模型调整为 grok-4.5,并同步对齐相关 smoke/init 断言
2184
- - 归档已完成的设计文档与执行计划,刷新 0.24.x 六个月规划与能力摘要,并同步验证与 hooks 文档
2185
-
2186
- ## [0.24.3] - 2026-07-28
2187
-
2188
- ### 重点更新
2189
-
2190
- - 发布工作流改为发布已通过完整门禁并经 SHA-256 校验的 npm tarball,避免 `npm publish` 再次触发全量测试、类型检查与构建。
2191
- - 默认 `standard` 实现任务在 React、Next.js 或 Vue 项目中直接选择 `frontend-implementation` DAG,不再依赖需求关键词;明确后端、文档/测试范围或前端否定仍保留对应通用流程。
2192
-
2193
- ## [0.24.2] - 2026-07-28
2194
-
2195
- ### 重点更新
2196
-
2197
- - 夜间自动发布固定为 patch 通道,不再因功能提交自动跳转次版本号
2198
- - 新增人工次版本发布工作流,支持显式触发 v0.x.0 版本线升级
2199
- - 夜间发布支持幂等恢复,重跑时自动探测并跳过已完成步骤,冲突时安全失败
2200
- - 控制台聊天工作台布局收紧,新增聚焦模式与落地页设计
2201
-
2202
- ### 新增
2203
-
2204
- - 新增 manual-minor-release 工作流,仅在显式触发时强制 bump minor 版本
2205
- - 控制台新增 ChatLanding 子组件,提供无会话/空会话模式下的落地页与建议网格
2206
- - 聊天压缩失败分类器新增对 token 预算超限、已压缩、模型缺失、活跃对话及不支持运行时等场景的精确 HTTP 状态码映射
2207
-
2208
- ### 改进
2209
-
2210
- - 发布工作流将最终门禁拆分为独立可观测步骤,并去重以提升执行效率
2211
- - 夜间自动发布固定为 --bump=patch,确保版本递增稳定在 0.x.y + 0.0.1
2212
- - 文档版本引用现支持 floating/current/minimum/range/historical 五类语义声明,合法旧文档不再误阻塞发布
2213
- - 控制台聊天界面收紧工作台密度,新增 is-chat-focus 类锁定视口,仅消息区域滚动且输入框固定底部
2214
- - 聊天压缩接口现通过分类器返回类型化错误码,替代原有的通用失败提示
2215
-
2216
- ### 修复
2217
-
2218
- - 修复发布流程接受 GitHub Release 目标时无法正确处理符号引用的问题
2219
- - 修复 GitHub 状态探测缺少认证导致发布恢复判断不准确的问题
2220
- - 修复夜间发布恢复时未针对当前版本标签进行探测的问题
2221
- - 修复夜间发布与手动次版本发布通道混淆的问题,现拆分为独立的 patch 与 minor 通道
2222
- - 修复文档版本治理将合法的旧版本引用误判为漂移并阻塞发布的问题
2223
-
2224
- ## [0.24.1] - 2026-07-27
2225
-
2226
- ### 重点更新
2227
-
2228
- - 后端测试 HTML 报告全面升级,采用更清晰的可折叠用例卡片设计,直观展示脱敏的请求与响应详情。
2229
- - 彻底修复了 Windows 环境下因 cmd.exe 与 bash 嵌套引号转义不当,导致前端与初始化测试固件执行失败的问题。
2230
- - 前端实现 DAG 大幅优化,复用现有 run-owned canonical artifacts,有效精简了常规全绿路径的直接依赖节点数量。
2231
-
2232
- ### 新增
2233
-
2234
- - 后端测试第 7 节点现使用 pytest-html 生成自包含报告,并新增解析器从其 JSON island 提取每条用例的结果与日志。
2235
- - 后端测试生成的 pytest 文件名现可与 Markdown 模块建立一对一清晰映射。
2236
-
2237
- ### 改进
2238
-
2239
- - 后端测试 HTML 报告对齐 R04 模板样式:改用全 inline style 设计,包含渐变 banner、可折叠用例卡片、状态胶囊以及请求参数与响应结果分块展示。
2240
- - 前端 canonical implementation contract 允许纯逻辑修改使用空的 UI state,不再强制虚构,并会确定性移除不适用状态下的空输出。
2241
- - 前端实现 DAG 的多个节点(如 frontend-implement-pi、frontend-review-pi 等)直接依赖得到收敛,不再重复读取完整任务源或上游冗余文本。
2242
-
2243
- ### 修复
2244
-
2245
- - 修复后端测试 HTML 报告中请求参数显示为空的问题:渲染器现已兼容 payload= 键或 JSON request_record 格式的请求摘要。
2246
- - 修复后端测试报告无法获取请求/响应日志的问题:兼容 HTTP_REQUEST 与 HTTP REQUEST 两种日志前缀,并在解析前正确解码 HTML 实体。
2247
- - 修复 shell-executor 在 Windows 环境下因反斜杠路径导致 runDir 损坏的问题,确保路径注入稳定。
2248
- - 修复前端 worktree baseline 解析 git status 时因提前 trim 导致未暂存文件路径丢失首字符的解析缺陷。
2249
- - 统一 DAG 任务源路径生成与运行时解析基准,解决 freshness、rerun 与预览共享不一致的问题。
2250
- - 修复前端项目在需求未显式提及 UI 时被误判保留为标准任务的问题,提升了基于工程证据与交互语义的任务类型推断准确度。
2251
- - 修复前端 lint baseline 在 Windows 下因路径解析逻辑缺陷,拒绝相对路径输出导致评估误报为不可用的问题。
2252
- - 修复多个测试固件在 Windows 下因嵌套 Shell 引号剥离导致命令执行输出为空或报错的问题(涉及 composite-shell 与 init-command)。
2253
-
2254
- ## [0.24.0] - 2026-07-27
2255
-
2256
- ### 新增
2257
-
2258
- - align chat workspace with pi web UX
2259
- - operator chat workspace UX + async runtime race guards
2260
- - operator chat M3-M7 (draft interview, human-gate, input context, artifacts, branching, landing)
2261
- - pytest-html report + filename mapping + Windows path fix (#71)
2262
-
2263
- ### 改进
2264
-
2265
- - style(console): 收紧 Operator Chat 工作台密度与侧栏体验
2266
- - style(console): prettier-format Operator Chat + keep UI-contract text intact
2267
-
2268
- ### 修复
2269
-
2270
- - operator chat M2 closure tracer + code review followups
2271
-
2272
- ## [0.23.1] - 2026-07-26
2273
-
2274
- ### 重点更新
2275
-
2276
- - **Console Phase 4 — General Operator Chat**:在 `agent-worker console` 内交付 Pi 驱动的自由对话入口,用自然语言多轮编排 loop-agent / agent-worker;暴露全部 operator action(registry 动态派生)+ 内置探查工具 bash/read/grep/find/ls,仍禁文件写入 coding tool;含两轮代码审查的 P1 修复(builtin tool 注册、schema↔dispatcher 契约、server 生命周期、tool policy 统一)与 followup 修复(缩进、SSE 错误兜底、文档同步、waitForIdle 超时+心跳)
2277
- - DAG 新增显式 failure-aware 依赖语义,允许只读恢复节点容忍上游 ERROR 并读取失败证据执行收敛
2278
- - review verdict 协议重试耗尽后支持确定性规范化,缺失或冲突时仍严格报错
2279
- - 新增 recovery recommendation 稳定下一步分类,为各类失败提供明确的修复或重试路由提示
2280
- - loop-agent doctor 新增机器可读 JSON 报告与只读上下文审计能力
2281
- - loop-agent stats context 提供近端 DAG 运行的上下文用量只读聚合统计
2282
- - AGENTS.md 与 init managed block 采用感知源码的精简策略,保留路由与硬约束不变
2283
- - 全面深化文档治理体系,引入目录状态语义、审查策略与外部方法论单轨融入
2284
-
2285
- ### 新增
2286
-
2287
- - **Console Phase 4 — General Operator Chat(Pi SDK services 模式)**:
2288
- - 后端 `src/worker/console/chat/`:`pi-runtime.ts`(services 模式 SDK 包装 + session 隔离 + 显式注册 builtin 探查工具 `tools:[bash,read,grep,find,ls]`)、`tool-adapter.ts`(operator action → Pi tool schema,动态发现 fail-closed)、`session-store.ts`(Gate 3 per-call 授权 + per-session write chain)、`routes.ts`(SSE 流式 HTTP)、`tools.ts`(全 operator action 动态派生白名单)、`resource-loader.ts`(封闭 ResourceLoader)、`model-resolver.ts`(harness.json 动态解析,无硬编码)、`instruction-skills.ts`(9 个只读 skill 白名单)
2289
- - 前端 `OperatorChat.tsx` + `ChatMarkdown.tsx`:多行 composer、Markdown 气泡、可折叠工具侧栏、停止生成、智能贴底滚动;零依赖 Markdown 渲染
2290
- - 默认模型从 `harness.json executors.pi.MED` 动态解析,按「bare-id 优先 + 有凭证优先」选取 provider(无硬编码回退)
2291
- - 红队验证 V12/V14/V15/V16:文件写入 coding tool 必拒、credential 不回传、高风险 action 无 prepared receipt 必失败、模型伪报 complete 不覆盖 deterministic validation
2292
- - DAG 显式 failureAwareDependsOn 依赖语义,支持只读恢复等价节点显式声明容忍指定上游节点的 ERROR
2293
- - review verdict 协议重试耗尽后的确定性规范化:当恰好存在一个合法受支持且无冲突的 verdict 行时自动规范化为首行
2294
- - recovery recommendation 稳定下一步分类:为 nonzero-exit、protocol-invalid 等各类失败提供稳定的 repair/revision/retry 路由提示
2295
- - loop-agent doctor --json 输出单一可 JSON.parse 的 typed DoctorReport,供人与机器共享同一事实源
2296
- - loop-agent doctor --context 提供只读上下文审计,报告默认策略、技能清单与预算跳过情况
2297
- - loop-agent stats context [--last N] [--json] 只读聚合最近 DAG 运行的技能解析与节点结果
2298
- - 新增 scripts/eval-dogfood-context-engineering-ab.sh,支持复现演练 AGENTS map verbose→slim A/B 协议
2299
- - skill registry 增加 verification placement taxonomy(standalone/embedded/chained/PR-bound)创作词汇
2300
- - 新增 docs/architecture/agents-invariants.md 作为源 AGENTS 与 managed block 不变量合同的单一真源
2301
- - 新增 docs/templates/README.md 并纳入 package / full init / init check-update 面
2302
- - 新增文档治理任务式 README、机器可读 document-catalog.json 与 check-doc-governance.mjs 语义检查器
2303
- - 新增文档审查策略与三档 reviewTier freshness 策略,支持按 UTC 日期边界阻断过期文档
2304
- - 新增设计原则与范式转移起源文章,并发布到网站实践文档
2305
-
2306
- ### 改进
2307
-
2308
- - supervised 模板的 process-supervisor-pi 可显式消费 soft-verify-shell 的 ERROR,使失败进入有界修复收敛链
2309
- - supervised 中间验证未显式配置时不再继承 verifyQuota: full,默认只取配额 1
2310
- - 生成 DAG 的验证命令默认单命令超时由 5 分钟提升为 30 分钟,避免全量测试误判为超时
2311
- - failure-aware 节点可在 upstream_context 中读取被容忍上游 ERROR 的 stdout/stderr 等作为失败证据
2312
- - loop-agent public skill 增加默认预算完整性回归,确保关键 entry 与 required references 在默认预算下完整解析
2313
- - skills/loop-agent/SKILL.md 将 command-reference.md 从 required 调整为按需 reference,保持在默认预算内
2314
- - doctor 与 stats context 的 JSON 模式不再输出 [loop-agent] banner,保证机器输出可直接解析
2315
- - 源仓库 AGENTS.md 与 init managed block 采用感知源码的精简,长解释指向 docs/,保留开工路由与硬约束
2316
- - 调试纪律要求先建立快速确定性反馈回路再进入根因调查;verifier skill 强调不得越过 writer 边界
2317
- - 任务与 TDD 明确采用垂直 tracer bullet(一测试一实现),避免水平层批处理
2318
- - ADR 增加三门槛过滤;CONTEXT.md 明确只承担术语表职责;grill-with-docs 按 governanceRoot 解析 decisions
2319
- - 外部工程方法论按单轨治理融入 docs/skills/init(ADR 0006),不引入平行状态树
2320
- - 文档治理完成当前权威与内容可信度审计,修正设计入口、能力摘要与网站 roadmap 中的归档状态表述
2321
- - 文档治理完成实际归位,工程规则、runtime 手册和维护操作分别进入清晰目录,当前设计与历史设计分开
2322
- - 文档入口版本与状态对齐 @tea-agent/loop-agent@0.22.0
2323
- - Pi 中等复杂度节点默认模型由 glm-5.2 调整为 gpt-5.5;LOW 与 HIGH 路由保持不变
2324
-
2325
- ### 修复
2326
-
2327
- - DAG run-task 持久化 writer 草稿生成前强制要求 managed Task Contract,未管理时在写出前失败并提示人工处理流程
2328
- - Task source 指南修正 verifyCommands 示例为 { label, command, timeoutMs? }[],并补充旧字符串数组迁移说明
2329
- - 根 Vitest 配置排除 .worktrees/** 隔离 checkout,避免显式测试文件参数误收集旧副本
2330
- - 受监督的 DAG 失败收敛机制修复,确保在有监督失败时保持收敛性
2331
- - DAG bootstrap 合约反馈修复,确保引导阶段正确收敛
2332
- - 修复 check-doc-governance.mjs 未忽略 .DS_Store/Thumbs.db 等 OS 生成文件导致仓库目录测试失败的问题
2333
- - 修复 context-engineering 提案中指向 exec-plans/active/ 的过时链接,更新为实际的 completed/ 路径
2334
- - 校准 context-engineering 提案中的实现证据(测试计数与 AGENTS.md 行数)以匹配当前代码实际产出
2335
- - Console Phase 4 Chat 审查 followup:createSession 缩进规整;handleChatPrompt 加 try/catch+finally 兜底 SSE error 与 res.end;waitForIdle 超时 120s→45s 并新增每 10s heartbeat(SSE comment 帧)防代理超时;设计文档 §7.2.1/V25/§13 同步 widening 契约
2336
- - Console Phase 4 Chat P1 审查修复:`createSessionFromServices` 显式传 `tools:[bash,read,grep,find,ls]`(SDK 默认 builtin 不含 grep/find/ls,否则 setActiveToolsByName 静默 no-op);schema↔dispatcher 契约对齐(contractValidate/Diff 用 draftJson、workerTaskRetry 补 featureId、动态发现 fail-closed);server.close() 先 chatRuntime.disposeAll();resource-loader/system prompt 统一到 widening(hasBash:true)
2337
- - CI 治理:7 个 versionConsumer 文档版本漂移 0.22.0→0.23.0;check-task-pool-root.sh allowlist 增补 codify-constraints.md
2338
-
2339
- ## [0.22.0] - 2026-07-24
2340
-
2341
- ### 重点更新
2342
-
2343
- - 前端规范读取范围扩展,新增 ai_workspace 作为并列来源,并独立展示各类规范证据
2344
- - 前端实现 DAG 引入 lint 债务基线机制,精准区分存量与新增代码问题,减少误阻断
2345
- - 前端预写门禁增强,强制校验真实的规范读取事件,避免遗漏关键上下文
2346
- - 后端测试报告结构优化,新增 Markdown 报告并改进 HTML 报告的分层展示
2347
-
2348
- ### 新增
2349
-
2350
- - 前端规范读取将 ai_workspace 目录与 openspec 相关目录作为并列来源,即使缺少 package.json 也能发现本地规范候选
2351
- - Dashboard 规范证据 API 与界面独立展示知识库查询、openspec 检索和成功读取三类证据
2352
- - 后端测试在同目录下新增生成 backend-test.md 报告,便于查阅测试结论与明细
2353
-
2354
- ### 改进
2355
-
2356
- - 前端实现 DAG 允许未修改文件中的已知 lint 诊断作为基线债务继续,但对修改文件的新问题严格阻断
2357
- - 后端测试 HTML 报告采用更清晰的分层展示,新增稳定结论图标与可折叠的质量校验明细,移除了原稳定性指标
2358
- - 前端测试用例的内容完整性与证据检查降级为建议性反馈,不再因个别物料缺失阻断最终复盘
2359
- - 设计文档与研发 DAG 拓扑说明同步更新,澄清了 profile/workflow/type 三套正交概念与当前实现状态
2360
-
2361
- ### 修复
2362
-
2363
- - 修复前端技能指令可能超出预算限制的问题
2364
- - 修复 DAG 未正确注册 DeepSeek Pi 模型提供者的问题
2365
- - 修复前端目标项目验证路由不够健壮的问题
2366
- - 修复后端测试中无法跨环境便携解析 Python 运行时的问题
2367
-
2368
- ## [0.21.0] - 2026-07-24
2369
-
2370
- ### 重点更新
2371
-
2372
- - DAG/Pi 自适应活跃度监管:精准区分传输活动与真实执行进展,受控处置静默卡死,避免误杀。
2373
- - 后端测试执行范围收窄:仅运行最终 Markdown 明确映射且通过安全校验的脚本,杜绝无关测试混入。
2374
- - 后端测试 HTML 报告全面升级:采用清晰的用例卡片,直观展示脱敏的请求与响应详情。
2375
-
2376
- ### 新增
2377
-
2378
- - DAG/Pi 自适应 liveness 与非误杀监管:区分 runner lease、transport 活动与 Provider/tool/output 真实进展;节点可投影 active/quiet/suspected-stall/probing/needs-attention;静默 stall 会受控终止,退出无法确认时禁止自动重试;Pi absolute max 对齐 4h;Worker 默认不再给 `run-dag` 设置外层 wall-clock,显式 `worker.timeout_ms` 仍为 hard timeout。
2379
-
2380
- ### 改进
2381
-
2382
- - backend-test 第 7 节点现在只执行最终 Markdown `自动化映射` 明确声明且安全校验通过的 pytest 脚本,避免历史或无关 `test_*.py` 混入本轮 JUnit/HTML;空映射、缺失脚本或越界路径会 fail-closed。
2383
- - backend-test HTML 报告升级为更清晰的用例卡片:保留测试结论、质量状态和失败概览,直接展示简洁测试场景、自动化用例名称、结果与耗时,并为通过/失败用例都展示同次执行中脱敏且有界的接口请求参数与响应结果;HTML 不再附带技术证据章节,审计路径与哈希继续保留在 facts/JUnit。
2384
- - frontend-test 第四节点不再扫描或阻断 pytest、原生 Playwright、`npx playwright`、`@playwright/test` 或 Node Playwright API 等可执行工具指令;该节点只保留 manifest、Case/AC/path、非生产 URL 和标准 `playwright-cli open` 前缀等结构与安全门禁,并强烈建议浏览器执行优先使用 `playwright-cli`。
2385
- - frontend-test 用例内容、Case ID、AC 关联与 evidence 完整性检查改为 advisory:缺失或损坏的执行物料不再被自动改写为 blocked,也不阻断最终复盘;finding 汇入结构化结果,并在 Markdown retrospective 后生成中文 HTML 建议报告。路径越界、跨用例 evidence 引用、writeSet、生产环境与凭据安全仍保持硬门禁。
2386
- - frontend-test checklist JavaScript 通过 Base64 参数交给 Node 解码执行,并修正变量声明顺序与重复语句,避免 Git Bash 将 `\s` / `\d`、反引号或引号破坏后再交给 Node。
2387
- - 新初始化项目的 harness 指南同步 adaptive liveness、4h absolute max、stall 状态与 `termination-unconfirmed` 处置;旧项目可由 `init check-update` 识别未修改的受管指南,并通过 `init update --apply-safe` 安全刷新。
2388
-
2389
- ## [0.20.1] - 2026-07-24
2390
-
2391
- ### 新增
2392
-
2393
- - LLM/provider 偶发失败时可在同节点自动重试;reviewer 漏写 `VERDICT` 等协议错误也会在节点内纠错重试,不必等下游 gate 才失败
2394
- - 新增 `loop-agent dag rerun`:在安全资格通过时,从选定节点重跑只读子图,并保留父 run 证据与 import 审计
2395
- - 新增 `loop-agent dag rerun-task`:一键完整重跑 standalone 任务(重新生成、校验并执行),不修改父 run
2396
- - Operator Console Recovery 提供明确动作:从节点重跑、完整重跑任务、重新排队 Worker Task(不再使用含糊的「重试」)
2397
- - 前端规范读取将知识库与 `openspec/` 作为并列来源:无论知识库是否可用或命中,均继续递归枚举 `<repoRoot>/openspec/**` 并读取索引与任务相关规范正文。`discoverFrontendProjectCapability` 在没有 `package.json` 或 `package.json` 不可读时仍能发现 `openspec/**` 规范候选。
2398
- - 前端预写门禁会校验 plan/design-review 的真实读取事件;生成期存在 `openspec` 规范候选但没有成功读取匹配文件时,在 writer 执行前阻断 DAG 并列出候选路径、检查节点和原因。
2399
- - Dashboard 规范证据 API/UI 分别展示知识库查询、`openspec` 检索和 `openspec` 成功读取证据,三种类别独立展示。
2400
- - 前端规范证据 API 新增 `openspecReads` 与 `openspecSearches` 字段,与通用 `specReads`/`specSearches` 并行。
2401
-
2402
- ### 改进
2403
-
2404
- - backend-test 第 4 个 Markdown 校验节点只将前置条件、操作步骤和预期结果作为必需章节;需求来源引用有效性不再阻断后续测试。普通质量问题保持 advisory,但 secret-shaped 值会先生成脱敏安全报告再 fail-closed,避免进入 pytest、HTML/facts 和最终报告。
2405
- - backend-test 生成的真实 HTTP pytest 现在必须输出脱敏且有界的请求/响应日志,包含 method、URL/path、请求参数摘要、响应状态和响应 body 摘要;追溯节点会在 Markdown 映射脚本范围内把日志合同缺口记录为 advisory。
2406
- - backend-test 第 7 节点的 HTML/facts 按测试概览、质量校验、失败概览、用例执行明细和技术证据分层展示;第 8 节点使用固定简洁的中文收口结构,减少重复原文并优先展示结论和风险。
2407
- - Operator Console「恢复」面板自动拉取 DAG 运行与节点候选,优先展示失败项并以选择器填入,仍可手动输入
2408
- - 从节点重跑预检失败时展示真实安全资格阻断原因,不再误报为「无法获取 planHash」
2409
- - 恢复页长操作(完整重跑等)会回写终态成功/失败;不再只提示「已接受」后无下文
2410
- - 恢复原因按所选 run/节点与失败事实自动预填,并给出三步操作指引;手动编辑不会被覆盖
2411
- - 恢复页将「DAG 运行恢复」与「Worker Task 重排队」分成独立区域,避免把 runtime DAG 与 Task Pool 动作混在一起
2412
- - 恢复页去掉高亮「打开检视」,避免与顶部「观测」入口重复误点;需要时用「侧栏预览」或「全屏观测」
2413
- - 恢复页「侧栏预览」在本页打开可关闭;全屏观测顶栏改为「返回操作台」
2414
- - 修复侧栏预览:兼容 Observe 的 `nodeId`/`label`,并安全格式化 session-events(避免 React 渲染对象导致整页空白)
2415
- - 恢复 CTA:查看报告改走 `dag report`(按 run ID);推荐动作仅用橙色主按钮标出,悬停看说明
2416
- - 从节点重跑 / 完整重跑任务点击后,在按钮下方出现「确定 / 取消」确认条
2417
- - 恢复页不再展示仅弹 CLI 提示的按钮(如「重新生成契约/计划」)
2418
- - 「查看报告」在按钮下方展示交接摘要(失败分类与建议),不再只闪顶部提示
2419
- - 控制器指纹漂移错误改为中文提示:请重启 Console,勿在会话中途重建
2420
- - frontend-test 环境预检:在生成用例前对冻结的非生产 `baseUrl` 做 curl 可达性探测;不可达或缺少 curl 时以 `frontend-base-url-unreachable` / `curl-unavailable` 阻断 generate/map,并写入 `environmentProbe` 事实。节点 5 manifest 物化改为 ruleId 失败分类、map 配额预检与 temp+rename 原子写入;生成/清单/执行强制 playwright-cli-only,U/D 场景要求当前用户数据归属或 create/Mock/blocked。
2421
- - 前端测试 DAG 的证据自检改为按用例降级:个别缺失、空白或格式错误的证据会如实标为 blocked 并继续生成复盘报告;只有全部用例都未产生任何证据内容或证据路径不安全时才失败。
2422
-
2423
- ### 修复
2424
-
2425
- - Observe 总览 KPI 问号提示框宽度与窄卡片解耦:提示框使用稳定的 240–280px 视口安全宽度,并在五列、三列和两列布局的右侧列向内对齐,避免宽屏下被压缩成约 78px 的窄条;hover 与键盘焦点行为保持不变。
2426
- - 节点检查器的规范证据文件预览会渲染 Markdown 标题、列表、表格与代码块,不再把正文作为带语法标记的纯文本显示。
2427
-
2428
- ## [0.20.0] - 2026-07-23
2429
-
2430
- ### 新增
2431
-
2432
- - 继续收紧前端实现证据门禁:禁止空 verification contract,校验验证目标与 requirement/UI state/授权路径绑定;新版 review context 缺失 writer baseline 时直接阻断,非 `not-needed` Mock 策略必须提供 endpoint 与 consumer 证据。
2433
- - 前端写入前重新校验 DAG 绑定源文件的 SHA-256;Mock endpoint 现在必须声明 fixture 与 consumer,且验证 trace 必须记录成功的 Mock 命令。
2434
- - 前端验证 bundle 现在冻结实际命令文本,并将实现契约 targets 限制在 writer writeSet 内,避免验证证据与可写范围漂移。
2435
- - 同步前端 prewrite/review context 的 DAG JSON Schema,避免生成 DAG 因 freshness、writeSet 或 baseline 字段漂移而被错误拒绝。
2436
- - 前端 prewrite 现在强制校验需求源新鲜度,验证 Schema 也要求声明实际命令文本,减少旧 DAG 和证据配置的隐式降级。
2437
- - 前端实现 DAG 的验证命令与侦察范围改为从目标项目自身的 package scripts、包管理器和允许路径推导,不再假设目标项目沿用 loop-agent 的目录与命令布局。
2438
-
2439
- ### 改进
2440
-
2441
- - 前端实现 DAG 的验证命令与侦察范围改为从目标项目自身的 package scripts、包管理器和允许路径推导,不再假设目标项目沿用 loop-agent 的目录与命令布局。
2442
- - 后端测试用例默认生成中文 README 索引与模块用例卡片,步骤、预期、需求依据和自动化映射更便于测试、研发与评审人员阅读。
2443
- - 后端测试 HTML 主报告现在逐条展示用例编号、中文名称与场景、脚本、测试函数、结果、耗时和失败原因,完整技术详情可折叠查看。
2444
-
2445
- - streamline implementation DAG (#61)
2446
- - improve human-readable artifacts
2447
-
2448
- ### 修复
2449
-
2450
- - relax traceability mapping
2451
-
2452
- ## [0.19.0] - 2026-07-23
2453
-
2454
- ### 重点更新
2455
-
2456
- - Operator Console 统一整合 Operate 与 Inspect,在同一服务即可检视只读 Dashboard、DAG、时间线与 artifacts
2457
- - 原 Observe 服务进入兼容期,仍可运行但会输出迁移提示,引导平滑过渡到统一控制台
2458
-
2459
- ### 新增
2460
-
2461
- - 新增统一 Operator Console:`console serve` 同时提供 Operate 与 Inspect,支持通过 `/inspect/` 直接检视运行详情与 DAG
2462
- - Console 健康检查接口升级,包含 Inspect 就绪状态与路由能力信息
2463
- - `console serve` 新增局域网绑定(`--host 0.0.0.0`)与调试日志(`--debug`)选项,并在非本地访问时保留安全校验
2464
-
2465
- ### 改进
2466
-
2467
- - `frontend-implementation` 保留独立 contract/scout,并把 Mock 策略与 implementation contract 合入 plan,把写前授权、验证/失败评估、复验和 review context 分别收敛为组合 shell 节点。standard/high-risk 固定 15 个顶层节点、small-risk 13 个;绿色路径执行 11 个节点、7 次 Pi,同时保留唯一 prewrite 写入授权、同 writeSet repair、真实 diff review 与 fail-closed closeout。
2468
- - 加强前端实现节点的证据链:Trace 只绑定本次实际成功执行的验证命令,契约兼容转换不再补入占位文件或默认验证目标,Prewrite 要求上游节点明确完成,review context 校验 artifact 绑定,并以 writer 前工作区快照隔离既有用户改动。
2469
- - 优化操作与观测统一界面的导航与布局,合并确认与运行为「开始运行」,DAG 详情跳转路径更加准确
2470
-
2471
- ### 修复
2472
-
2473
- - 修复执行计划索引将命名约定占位符(如 `YYYY-MM-DD-<topic>.md`)误判为缺失计划引用的问题
2474
-
2475
- ## [0.18.1] - 2026-07-22
2476
-
2477
- ### 重点更新
2478
-
2479
- - 放宽后端测试 Markdown 用例的映射与验收标准校验,减少合法用例被误拦截的情况
2480
- - 修复文档审计报错未阻断 CI 的治理漏洞,并全面修正失效链接
2481
- - 清理发布日志中残留的已发布记录,避免将已上线能力误展示为未发布
2482
-
2483
- ### 修复
2484
-
2485
- - 放宽后端测试 Markdown 用例的每条补充 Case 必须包含 AC 标识的硬性要求,改为确保任务要求的业务 AC 场景至少被一条最终用例覆盖即可,整体缺失必需 AC 时仍会严格阻断
2486
- - 放宽后端测试 traceability 映射校验,Case ID 可位于测试函数名、装饰器、函数体或文档字符串区域,不再强制首行文档字符串或严格一对一映射,避免重复映射等情况导致的误阻断
2487
- - 修复文档审计在发现错误时未返回非零退出码导致 CI 假绿的问题,并将链接门禁覆盖范围扩展至完整的 docs/ 目录
2488
- - 修正文档报告分类迁移后遗留的 269 条失效链接
2489
- - 修复自动发布创建版本区块时未正确消费已发布内容并清理残留记录的问题,移除了随 0.18.0 版本发布的 59 条残留日志
2490
-
2491
- ## [0.18.0] - 2026-07-22
2492
-
2493
- ### 重点更新
2494
-
2495
- - 后端测试全面采用 Markdown 优先工作流,整合环境预检、独立审查与确定性门禁,单次执行即可生成完整测试报告。
2496
- - 前端实现与测试流程大幅优化,按需执行计划修订与验证,常规全绿路径执行节点数量显著减少。
2497
- - 修复多项严格校验导致的误中断问题,大幅提升 Markdown 用例生成、追踪映射与异常清理的兼容性。
2498
- - 优化 Pi CLI 与 SDK 执行器,彻底解决长文本输出导致的内存溢出与进程卡死问题。
2499
-
2500
- ### 新增
2501
-
2502
- - 引入 Markdown 优先的后端测试工作流,支持环境预检、独立审查用例并生成自包含的 HTML 与 Markdown 报告。
2503
- - 新增升级后的初始化面通知器,在检测到版本不一致时自动提示安全更新或引导人工处理。
2504
- - 新增统一的初始化协调命令,支持安全应用更新并智能处理各类阻断情况。
2505
- - 测试报告新增 L-5 指标消费与统一的代码覆盖率报告入口,支持 Python 与 Java 测试数据。
2506
-
2507
- ### 改进
2508
-
2509
- - 前端实现绿色路径改为按需分支执行,常规无错路径可少执行多个节点,提升执行效率。
2510
- - 前端测试用例生成现可自动解析明确的 baseUrl,不再保留占位符,避免执行异常。
2511
- - 前端测试复盘报告写入路径调整,支持安全禁止整个 docs 目录的写入权限。
2512
- - 夜间自动发布机制优化为双基线检测,手动补丁不再抹除同周期的功能信号。
2513
- - GitHub Actions CI 优化执行策略,合并任务并跳过纯文档变更,有效降低私有仓库分钟消耗。
2514
-
2515
- ### 修复
2516
-
2517
- - 修复 Markdown 用例追踪映射将 HTTP 状态码等数字误识别为用例 ID,以及无法正确识别带返回类型标注的测试函数的问题。
2518
- - 修复 Markdown 用例门禁误拒绝合法的列表断言,以及无法正确解析相对路径绑定文件的问题。
2519
- - 修复 Pi CLI 执行器将单个节点完整标准输出累积为单一字符串,导致长文本输出时内存溢出或卡死的问题。
2520
- - 修复 Windows 环境下因清理环境变量导致 Python 和 pytest 无法正确发现用户级依赖的问题。
2521
- - 修复初始化演进的高影响校验未覆盖专用路径,导致必要审查被静默跳过的问题。
2522
-
2523
- ## [0.17.2] - 2026-07-22
2524
-
2525
- ### 改进
2526
-
2527
- - Operator Console Happy Path 补齐:主导航(任务/恢复/模型与认证/设置)、newTask / importPrd、grill-me Interview(一次一问 + assessment)、SSE 运行跟随;Pi readiness 可刷新。
2528
- - Operator Console 页面交互文案改为中文(导航、向导步骤、按钮与状态说明);产品名与 CLI 命令仍保留英文术语。
2529
- - Operator Console 界面与交互美化:暖色画布、胶囊导航、步骤进度条、统一按钮层级与状态条,运行面板元信息更清晰。
2530
- - Operator Console Happy Path 增加「流程类型」选择(后端研发 / 前端研发 / 后端测试 / 前端测试),写入 `taskKind`;访谈枚举同步支持 `frontend-implementation` 与 `frontend-test`。
2531
- - Console Happy Path 去掉单独的「创建任务」步骤:导入需求时根据 PRD 标题自动生成任务名称与 canonical taskId,并一键创建任务 + import-prd。
2532
- - Operator Console 需求访谈可跳过:一键按 grill-me 推荐补齐草稿并签发评估,可直接进入契约校验。
2533
- - Operator Console 将「校验契约 / 应用契约 / Spine 审计」合并为「契约落地」:自动确定性校验与差异,人工确认一次应用,成功后自动 Spine。
2534
- - Observe 运行看板视觉对齐 Console:暖色渐变画布、胶囊导航、柔和面板阴影与状态点,减少高饱和色块;进一步统一 badge/表格/风险块/时间线/DAG 图与 inspector、对象关系条与推荐命令等视图组件。
2535
-
2536
- ### 修复
2537
-
2538
- - Console Draft 在 validate/diff/apply 前会投影为 CLI 严格 schema:补齐 `constraints.invariants`,并去掉仅 Console 使用的 `updatedAt`,避免误报 draft schema validation failed。
2539
- - 修复访谈完成后绑定 `interviewAssessmentRef` 会立刻让 assessment 过期的问题:`draftSha256` 不再纳入该绑定字段;finalize 时先清空 `openQuestions` 再签发 assessment。
2540
- - 修复 Console `contractApply` 默认传入 `expectedObservedHash=unknown` 导致 OBSERVED_HASH_CONFLICT / 页面只见 `exit 1`:改为先 `task contract show` 再传真实 revision/hash;异步操作失败时展示 CLI 错误信息。
2541
- - 修复应用契约后界面卡住:轮询操作结果时误读 `{ ok, operation }` 响应,一直等到超时且无法进入 Spine。
2542
- - 修复 DAG 确认准备失败:不再提交空 stub DAG;`prepareDagConfirmation` 会经 `dag run-task` 生成真实 DAG;`dag validate` 接受 `--json` 兼容 Console。
2543
- - 修复 Console `runDag` 因 `run-dag --json` 未识别而失败:CLI 现接受该旗标(输出本就为 JSON)。
2544
- - 运行 DAG 不再用短超时阻塞整页:`runDag` 改为后台接受 + SSE 跟随;Observe 按钮与任务 busy 解耦,运行中可打开。
2545
- - Console 打开 Observe 时,若只给 taskId,会解析该任务最新 DAG run 并跳转 `#/dag/<runId>`,不再误开 `#/task/<taskId>`。
2546
-
2547
- ## [0.17.1] - 2026-07-22
2548
-
2549
- ### 修复
2550
-
2551
- - TaskSpec materialize 在写入 task.json、需求和约束后会自动 adopt 或刷新 managed Task Contract,避免生成 v4 DAG 后立刻因 binding drift 无法 validate/run。
2552
- - Operator Console 的 Pi readiness 改为真实探测 SDK、认证和可用模型;本机已配置 Pi 时不再误报 `setup-required`,界面同步对齐 Observe 暖白画布。
2553
-
2554
- ## [0.17.0] - 2026-07-22
2555
-
2556
- ### 新增
2557
-
2558
- - streamline report-first workflow (#53)
2559
- - add operator console, task contract, and harden bindings (#51)
2560
- - condition DAG design and repair branches
2561
-
2562
- ### 修复
2563
-
2564
- - synchronize console frontend lockfile (#52)
2565
- - tolerate mock strategy format drift
2566
- - bound executor output
2567
-
2568
- ## [0.16.26] - 2026-07-22
2569
-
2570
- ### 修复
2571
-
2572
- - Git checkpoint 对 `allowed_paths` 内的 **gitignored 证据文件**(如 dogfood `reports/welcome/final/*.json`)执行 `git add -f` 纳入 checkpoint;敏感路径与范围外 ignored 文件仍 fail-closed。修复 FINAL-VERIFY DAG/report 已绿却因 ignored evidence 记 `record-error`、Task Pool 卡 Running 的 Delivery 阻断。
2573
-
2574
- ## [0.16.25] - 2026-07-22
2575
-
2576
- ### 修复
2577
-
2578
- - Backend-test pytest preflight 与执行体改为 `&&` fail-closed:preflight 失败不再因 `;` 继续跑 pytest(I27 曾出现 preflight 报 `WELCOME_BASE_URL`/testRoot 错配仍执行用例)。
2579
- - 本地 `npm start` / `node server.js` 类 `managed-command` 在 materialize 时降级为 `in-process`,清空 requiredEnv、seed server fixture,并把 scout `testRoot` 收敛到冻结根 `testcase/`;generate-pytest 提示要求 fixture 内启动服务,不再依赖 clean-env 注入 base URL。
2580
-
2581
- ## [0.16.24] - 2026-07-21
2582
-
2583
- ### 改进
2584
-
2585
- - frontend-test 默认改为**短链 RAG**:`reviewMode` 默认 `off`(机械 `frontend-case-checklist-shell` 放行,不再默认双轮 LLM review 硬门);`strictOutcomeGate` 默认 `false`(outcome 全绿门 opt-in)。**流程验收=最终 retrospect 报告**,不以 case 100% 通过为条件。map 仅在 `dynamicExpansion.tolerateChildFailures=true`(frontend-test 默认开启)时将 child auth/timeout/executor 错误落 case-level blocked/failed evidence 且不炸 map closeout;其它 map 仍 fail-closed。
2586
- - Shell `verdictGate` 改为纯 `node -e` 单次调用,降低 Windows Git Bash 复合脚本崩溃风险。
2587
-
2588
- ### 修复
2589
-
2590
- - Windows DAG Shell/verification 的 clean environment 现在保留 `APPDATA`,使 Python 3.12/pip 可按系统规则发现用户级 `site-packages` 与其中的 pytest;仍不会继承完整宿主环境或透传未授权 token/credential,backend-test 无需硬编码用户路径。
2591
-
2592
- ## [0.16.23] - 2026-07-21
2593
-
2594
- ### 修复
2595
-
2596
- - DAG runner 在归档到 `completed/` 前停止 heartbeat 并排空 state 写队列。避免 terminal 节点全 FINISHED 后仍因 completed-facts write guard 拒绝写 `state.json` 导致 `run-dag` 非零退出、Worker 记 `run-error`/Task Pool `Blocked`。
2597
-
2598
- ## [0.16.22] - 2026-07-21
2599
-
2600
- ### 修复
2601
-
2602
- - Git checkpoint `allowed_paths` 审计与 shell write-guard 对齐:忽略 `.playwright-cli/**` 等 ephemeral tool cache。frontend-test 浏览器用例与 `frontend-test-result` 已绿时,不再因 playwright-cli 会话落盘导致 promote/closeout `record-error`。
2603
-
2604
- ## [0.16.21] - 2026-07-21
2605
-
2606
- ### 修复
2607
-
2608
- - DAG `sourceBinding.requirementIds` 优先取任务 `需求.md` 的 `## Acceptance References`(TaskSpec `acceptance_refs`),不再把 Feature 整份 `acceptance.yaml` 的兄弟 AC 扫进本任务。修复 frontend-test 用例全绿却因 `AC-CONTRACT-*` missing 判 incomplete 的假失败。
2609
-
2610
- ## [0.16.20] - 2026-07-21
2611
-
2612
- ### 修复
2613
-
2614
- - Shell write-guard 忽略 playwright-cli 默认会话落盘 `.playwright-cli/**`(console/page dump)。frontend-test 浏览器用例已把权威证据写到 `testcase/frontend/evidence/**` 时,不再因工具缓存误拦 exclusive writer。
2615
-
2616
- ## [0.16.19] - 2026-07-20
2617
-
2618
- ### 修复
2619
-
2620
- - frontend-test result 物化在比较 evidence 路径前先 `realpath` 仓库与 evidence 根,避免 macOS `/var`→`/private/var` 导致的 `evidence realpath escapes its allowed root` 误拦。
2621
-
2622
- ## [0.16.18] - 2026-07-20
2623
-
2624
- ### 修复
2625
-
2626
- - frontend-test 执行预检改为硬校验绝对非生产 `baseUrl`(优先 config.md,缺省 `http://localhost:5173`);fixture/reset 不再作为 preflight 硬门,避免中文隔离叙述因缺少英文 `reset` 被误拦。
2627
-
2628
- ## [0.16.17] - 2026-07-20
2629
-
2630
- ### 修复
2631
-
2632
- - backend-test execution 合同在 `in-process` 且 `existingFixtures: []` 时注入非秘密默认 fixture(优先 server bootstrap),避免 near-schema 侦察输出在 contracts 门 fail-closed。
2633
-
2634
- ## [0.16.16] - 2026-07-20
2635
-
2636
- ### 修复
2637
-
2638
- - 动态 DAG `itemsFrom` / JSON 选择器从 shell 节点 stdout 解析时,可跳过命令回显行并提取末尾 JSON 对象,避免 frontend-test `execute-frontend-cases-map` 在 materialize 门成功后仍因 `$ node -e ...` 前缀失败。
2639
-
2640
- ## [0.16.15] - 2026-07-20
2641
-
2642
- ### 修复
2643
-
2644
- - frontend-test case manifest 校验接受 `evidenceDir` 为 `testcase/frontend/evidence/<caseId>` 目录根(不必强制尾斜杠/子路径),避免生成节点写出合法目录后被 materialize 门误杀。
2645
-
2646
- ## [0.16.14] - 2026-07-20
2647
-
2648
- ### 修复
2649
-
2650
- - `frontend-test` materialize / path audit 自动并入 `testcase/frontend/**` 与 `docs/test-reports/**`,与 hybrid frontend-test DAG 生成约束对齐,避免 TaskSpec 仅声明 `tests/e2e/**` 时 `dag run-task` 直接失败。
2651
-
2652
- ## [0.16.13] - 2026-07-20
2653
-
2654
- ### 修复
2655
-
2656
- - backend-test 的 `finalize-effective-result` 管道在节点完成后绑定 `contracts/backend-test-result.json` 为 structured artifact,使 Outcome 投影出 `backend-test-result`,解除 FE-TEST Ready Planner 对 BE-TEST 产物门的误阻断。
2657
-
2658
- ## [0.16.12] - 2026-07-20
2659
-
2660
- ### 修复
2661
-
2662
- - `backend-test` materialize / Git checkpoint 自动并入 `testcase/**`(与 `docs/test-reports/**`)运行时写根,避免 TaskSpec 仍写 `tests/api/**` 时绿跑无法 promote、任务卡在 Running。
2663
-
2664
- ## [0.16.11] - 2026-07-20
2665
-
2666
- ### 修复
2667
-
2668
- - Worker 报告决策不再把条件分支的 `SKIPPED` 节点当成失败;backend-test 等混合 DAG 在 revise/repair 未选中时,只要 ERROR 不存在且 run finished,即可 `report-completed` 并进入 Outcome/promote。
2669
-
2670
- ## [0.16.10] - 2026-07-20
2671
-
2672
- ### 修复
2673
-
2674
- - 后端测试执行合同物化会清理 `managedCommand` 中的空字符串(如 `stop: ""`),避免 near-schema 侦察输出在 strict parse 下误拦 in-process BE-TEST。
2675
-
2676
- ## [0.16.9] - 2026-07-20
2677
-
2678
- ### 修复
2679
-
2680
- - Outcome 结构化产物声明不再绑定节点 mint-time sha256;同一路径若被后续 gate(如 backend-test traceability)就地改写,投影时以磁盘重算 hash 为准,消除 BE-TEST 完成态仍被 `artifact sha256 mismatch` 误拦。
2681
-
2682
- ## [0.16.8] - 2026-07-20
2683
-
2684
- ### 修复
2685
-
2686
- - Outcome 投影对同一 run-owned 结构化产物路径的多次 rewrite(如 backend-test case manifest initial→final)只保留最后一次 hash 声明,避免 `artifact sha256 mismatch` 误拦已完成的 BE-TEST。
2687
-
2688
- ## [0.16.7] - 2026-07-20
2689
-
2690
- ### 修复
2691
-
2692
- - 前端实现合同物化支持 free-form plan JSON 归一化(GWT/对象 UI 状态、requirementCoverage、mock productionDefaultOff),避免 FE-IMPL 在 `frontend-implementation-contract-shell` 因字段漂移误拦。
2693
-
2694
- ## [0.16.6] - 2026-07-20
2695
-
2696
- ### 修复
2697
-
2698
- - write guard 忽略 `__pycache__` / `.pytest_cache` 等 ephemeral 解释器缓存,避免 backend-test 生成节点本地冒烟 pytest 时被误拦;并明确 generate-pytest 节点不负责执行测试。
2699
-
2700
- ## [0.16.5] - 2026-07-20
2701
-
2702
- ### 修复
2703
-
2704
- - 后端测试分析/执行合同物化支持 free-form 环境侦察与 GWT/嵌套 endpoint 形状的严格 schema 归一化,避免 BE-TEST 在 contracts 门被模型字段漂移误拦。
2705
-
2706
- ## [0.16.4] - 2026-07-19
2707
-
2708
- ### 修复
2709
-
2710
- - 后端测试 `backend-test-semantic-final-gate-shell` 改为复合 pipeline `semantic-effective`,不再手写读 contracts 的 inline shell,避免 `--strict-governance` 误判为 fragile verdict gate 并阻断 BE-TEST DAG 校验。
2711
-
2712
- ## [0.16.3] - 2026-07-19
2713
-
2714
- ### 修复
2715
-
2716
- - 前端实现 DAG 在 review 前新增确定性 `frontend-worktree-diff-shell`,写出 run-owned `diff_patch` 与清单,避免 review 因找不到 actual diff 而误拦截。
2717
-
2718
- ## [0.16.2] - 2026-07-19
2719
-
2720
- ### 修复
2721
-
2722
- - 前端 `frontend-implementation-contract-shell` 物化时用 DAG 权威 `sourceBinding` 覆盖模型输出,避免模型错绑 requirement 路径/哈希或额外引用路径导致实现链在设计门后 fail-closed。
2723
-
2724
- ## [0.16.1] - 2026-07-19
2725
-
2726
- ### 重点更新
2727
-
2728
- - 修复全栈 dogfood 产物与恢复缺口:`produces.path` 可投影为 hash-bound Outcome、closeout 证据迁入 `.harness/`、成功任务 Git checkpoint 先于 Task Pool Done,并补齐 reconcile / mark-failed / advance-checkpoint
2729
- - 收紧夜间自动发布门槛:至少一个可发布 Conventional Commit,且稳定 tag 后总提交数 ≥ 5 或距上次发布满 1 天,才自动发版
2730
- - 将根 README 收敛为产品入口,本地环境排障说明独立成篇,降低首次阅读噪声
2731
-
2732
- ### 新增
2733
-
2734
- - 新增分支合并规范:按影响自动选择快速、标准或深度模式,统一双方功能保留审查、冲突解析、source-SHA 报告与 init/package 影响校验
2735
- - `.gitignore` 与 `loop-agent init` managed block 现忽略 `.harness/dogfood-evidence/`,避免把 fullstack / Worker dogfood 本地战役证据误提交
2736
-
2737
- ### 改进
2738
-
2739
- - Observe DAG 详情移除依赖图下方重复的层级节点列表,并为节点表增加连续序号,浏览执行结构时更紧凑、更易定位
2740
- - 根 README 仅保留定位、适用问题、5 分钟开始、核心边界和文档导航;Agent DAG、Worker、发布与运维细节统一下沉到专题文档
2741
- - Cursor Cloud 等环境排障说明从 `AGENTS.md` 迁至 `docs/local-development-environment.md`
2742
-
2743
- ### 修复
2744
-
2745
- - 全栈 dogfood 修复批次:reviewed/supervised DAG 增加一次性 review VERDICT 格式恢复;shell 改为非 login `bash -c`;PATH/VERDICT 格式失败分类对齐 EnvFailure/ContractMismatch
2746
- - 旧目标项目可用 `init check-update` / `update --apply-safe` 刷新 ignore 区块以忽略 dogfood-evidence
2747
-
2748
- ## [0.16.0] - 2026-07-19
2749
-
2750
- ### 重点更新
2751
-
2752
- - Eval Lab 落地受控评测外环,支持 candidate 矩阵编排、Context Policy A/B dogfood 与 Ignition 研究门禁,全程 autoPromote=false,晋升须人工审核
2753
- - Worker 新增 TaskSpec 显式工作流路由,为四类任务生成带哈希锚定的 Task Outcome,并在晋升前校验 run_record、dag_json 等必需产物
2754
- - 新增 fullstack-v1 Feature Profile,支持确定性结构门禁与 Feature Verification Bundle v1,交付与收尾阶段任一身份漂移或产物篡改均阻断发布
2755
- - Eval Lab 落地固定预算运行时,DagSpec v3 可声明硬预算门禁,超限 fail closed 并输出预算账本,缺失 token 不被当作 0
2756
-
2757
- ### 新增
2758
-
2759
- - Eval Lab 新增 Context Policy A/B dogfood 脚本,串联 corpus/candidate/campaign/scorecard 与人工 promote(默认 dry-run),不改 DAG 默认策略
2760
- - Eval Lab 新增 Ignition 研究门禁命令,记录多代 proposer 并给出趋势 verdict,恒为研究用途,不自动晋升
2761
- - Eval Lab 新增 Corpus 契约命令与 dogfood 样板清单(15 个异质任务,public/private/held_out 齐全)
2762
- - Eval Lab 新增 public/private campaign 与 private-verifier,支持多 seed 可重复计划与 candidate 内容泄漏门禁
2763
- - Eval Lab 新增 anti-hack 审计与 Promotion Policy v1,检测验证弱化与可疑 outlier,promote 须通过多项门禁且默认 dry-run
2764
- - Eval Lab 新增固定预算运行时,支持按节点累计资源消耗,硬门禁超限 fail closed 并写出 budget-ledger
2765
- - Eval Lab 新增可切换 Context Policy(baseline-v1 默认与原先一致,role-specialized-v1 按角色调整预算)
2766
- - 新增 fullstack-v1 dogfood Feature F-2026-005,提供零依赖可运行目标仓与双覆盖验收样板
2767
- - 新增 fullstack-v1 Feature Profile,对 packet 执行确定性结构门禁,未声明 profile 的 legacy packet 行为不变
2768
- - AcceptanceSpec verification 新增可选的实现/验证任务引用、required_evidence 与 integration 声明,保留 legacy 字段兼容
2769
- - TaskGraph 节点新增可选 consumes/produces 声明与 Ready Planner artifact gate,上游产物不可验证时下游阻塞
2770
-
2771
- ### 改进
2772
-
2773
- - TaskSpec 支持可选 execution.workflow,可确定性物化为任务 DAG 类型并展示在 Worker、Task Pool、晨报与 Observe
2774
- - Ready Planner 明确仅做 envelope 级绑定,不重算产物文件 sha256,文件级 hash 在 Outcome projection 与 Feature Verification Bundle 执行
2775
- - DAG 节点 authoring guidance 明确 Pi 是唯一受治理 writer,cursor-prompt 仅作手工 one-shot sidecar
2776
- - Eval Lab propose 与 experiment 命令支持有界提出 experimenting candidate,accept/reject 须通过 scorecard 门禁,不自动改写已接受 skill
2777
- - 文档基线全面校准至 0.15.0,同步半年规划、仓库分析与路线图,harness Pi MED 路由至 grok-4.5
2778
- - Eval Lab dogfood 脚本改为可安全重复运行,并记录 promote --apply 序列供后续分析
2779
-
2780
- ### 修复
2781
-
2782
- - 对齐 Task Outcome 与 Ready Planner 契约:Ready 仅做 envelope 级绑定,Outcome 产物补齐独立 schemaId,失败时写入 outcomeFailure
2783
- - 规范化 shell_verification 为标准 evidence token(兼容旧 shell-verification),未知 outputs.required token 保持兼容不阻塞
2784
- - 清理 0.15.0 版本仍残留在 Unreleased 区块的更新日志条目
2785
- - Eval Lab 运行态(candidate/campaign/scorecard)现被 .gitignore 忽略,旧项目可用 init check-update 刷新 ignore 区块
2786
-
2787
- ## [0.15.0] - 2026-07-18
2788
-
2789
- ### 重点更新
2790
-
2791
- - 新增 Pull Request 的只读 AI 自动审查,自动检查代码缺陷与测试缺口并更新评论
2792
- - 引入内部测试版本夜间自动发布工作流,主干达标后自动更新版本并发布
2793
- - 收紧 npm 发布包范围,仅保留 init 与 runtime 必需的文档和脚本
2794
- - 修复预发布版本被误发布至 latest 的风险,发布门禁改为按版本号状态严格限制
2795
-
2796
- ### 新增
2797
-
2798
- - 新增 Pull Request 的只读 AI 自动审查:在创建、重新打开、转为 ready 或更新提交时检查 bug、测试缺口、runtime boundary 等,并更新单条 PR 评论
2799
- - 新增内部测试版本夜间自动发布:达到提交门槛并通过发布检查后,自动更新版本、生成中文说明并发布 GitHub Release 与 npm
2800
- - 新增面向内部研发人员的轻量 GitHub 协作指南和简短 Pull Request 模板,统一采用短分支与 Squash Merge 的最小协作闭环
2801
- - 新增 `.editorconfig` 与 `.gitattributes`,统一常见文本文件的 UTF-8、LF、缩进和文件末尾换行约定
2802
-
2803
- ### 改进
2804
-
2805
- - 收紧 npm 发布包中的 `docs/` 范围:只保留 init/runtime 所需的治理文档、architecture、skills 与 templates
2806
- - 收紧 npm 发布包中的 `scripts/`:只保留知识库实际调用的脚本,不再打包源仓治理检查与 `.sh` 包装
2807
- - 前端实现 DAG 的 `frontendMock.policy=auto` 不再因为目标项目缺少 Mock 能力而阻塞,无确认能力时自动跳过并保留真实请求默认路径
2808
- - 文档基线全面校准至 0.14.0,修复了多处的文档索引遗漏与旧路径引用
2809
-
2810
- ### 修复
2811
-
2812
- - 修复私有仓库 AI PR 审查因通过网页 `*.diff` 地址拉取差异导致 404 的问题,改为经 GitHub API 获取 diff
2813
- - 修复预发布版本误发布到 `latest` 的问题:发布门禁改为按版本号的 prerelease 状态限制 dist-tag,beta prerelease 仅允许 `beta` tag
2814
- - 修复网站更新日志(Changelog)的版本插入位置错误:新版本段落不再错误地插入到读者摘要之前,保持页面结构正常
2815
- - 修复网站更新日志中残留的 `[Unreleased]` 块未随版本发布移除的问题
2816
-
2817
- ## [0.14.0] - 2026-07-18
2818
-
2819
- ### 重点更新
2820
-
2821
- - 新增夜间自动发布工作流,主干达到提交门槛后自动更新版本、生成说明并发布
2822
- - 运营看板重构为执行面优先布局,并新增可展开的富执行过程时间线
2823
-
2824
- ### 新增
2825
-
2826
- - 定时触发的 GitHub Actions 夜间发布工作流,支持 dry-run 预演与正式发布
2827
- - 运营看板新增执行过程时间线,支持展开查看工具调用与 AI 正文,并记录时间戳
2828
- - 资源池默认手动刷新,突出展示需处理和 Ready 状态的任务
2829
- - 总览页改为执行面 KPI 与风险并排展示,节点检查器默认半屏显示
2830
-
2831
- ### 改进
2832
-
2833
- - 发布说明支持 OpenAI 兼容模型生成,并在模型不可用时自动回退到保守摘要
2834
- - 破坏性变更识别改为严格遵循 Conventional Commits 规范,避免因正文提及该词而误判
2835
-
2836
- ### 修复
2837
-
2838
- - 修复模型返回的 JSON 包含 Markdown 代码块导致解析失败、发布说明始终回退为默认摘要的问题
2839
- - 修复提交信息中包含 'breaking change' 字样被误判为破坏性变更从而阻断发布的问题
2840
- - 补充 format-pool.d.ts 类型声明文件,修复 CI 类型检查报错
2841
-
2842
- ## [0.13.0] - 2026-07-18
2843
-
2844
- - 前端实现流程新增需求合同、风险识别、项目能力检查、有界修复和验证追踪;高置信度前端需求可自动进入专用流程。
2845
- - 后端自动化测试会在生成 pytest 前确认执行环境和需求覆盖,并区分产品、测试与环境问题。
2846
- - Observe 看板采用增量刷新,保留焦点、滚动位置和当前节点;节点输出、执行过程与规范证据切换更稳定。
2847
- - 新增 `browser-tools` 和前端浏览器测试用例生成能力,full init 后可直接在目标项目使用。
2848
- - Task Pool 按 `{ featureId, taskId }` 识别任务,并新增检查、迁移和 Ready 计划预览命令。
2849
- - 新增 Eval Replay 与 Candidate Registry,用于重放证据、比较候选并审计候选运行关联。
2850
- - 旧项目可通过 `init check-update` 检查新增模板、skills 和托管配置,再用 `init update --apply-safe` 安全补齐。
2851
- - Pi SDK、Windows 命令执行、自举验证和受监督任务的计划修订流程得到稳定性改进。
2852
-
2853
- 完整条目和迁移提示见根 `CHANGELOG.md [0.13.0]`。
2854
-
2855
- ## [0.12.0] - 2026-07-16
2856
-
2857
- - **只读 Pi 节点安全重试**:opt-in `retryPolicy`(network / rate-limit / unavailable / timeout);writer / shell 等声明策略会校验失败。见 [Agent DAG](./website/docs/guides/agent-dag.md)。
2858
- - **`taskKind: backend-test`**:需求分析 → 功能用例 → pytest → 复盘。
2859
- - **知识同步与业务图谱 MVP**:`taskKind: knowledge-sync`(须 `featureId`)/ `knowledge-graph-bootstrap`;`loop-agent knowledge query|graph-init|graph-materialize|graph-promote|graph-incremental-prepare`(`knowledge curate` 仍只负责 repair guidance 提案)。
2860
- - **init surface 全量跟踪**:`check-update` / `update --apply-safe` 覆盖包内全部 `docs/templates/**` 与 `skills/**` 到目标目录的投影。
2861
- - 详见根 `CHANGELOG.md [0.12.0]`;站上 [当前规划](./website/docs/overview/roadmap.md) 与 [功能导览](./website/docs/overview/feature-map.md)。
2862
-
2863
- ## [0.11.0] - 2026-07-15
2864
-
2865
- - **Observe 本地运营面 R1–R5**:资源池 / Task 下钻、Batch·Run 三层事实、Feature 决策详情与对象关系条、有界事件历史、ES modules 前端模块化;`observe serve` keep-alive / SSE keepalive,可选非 loopback 绑定(默认仍 `127.0.0.1`)。见 [Observe](./website/docs/guides/observe-ui.md)。
2866
- - **版本化自举**:controller identity / package fingerprint / expected gate、run-owned skill snapshot、deterministic `self-host:canary`、`skills/agent-worker` 及目标镜像;dogfood Feature `F-2026-004`。
2867
- - **DagSpec v3 + repair 契约**:新 DAG 携带 `runtimeContract`;supervised `repairNodeId`;run-owned controller identity pin。
2868
- - **`plan create` / `plan complete` / `plan check`**:exec-plan 生命周期与 DAG 前置索引校验。见 [CLI 参考](./website/docs/reference/cli.md)。
2869
- - **CLI 自更新提醒**:交互式成功命令后检查 npm 新版本;`LOOP_AGENT_DISABLE_UPDATE_CHECK=1` 可关。见 [安装](./website/docs/quick-start/installation.md)。
2870
- - **init 布局收敛**:目标项目默认 `ai_workspace/loop-agent/` + `.agents/skills/`;`init update --apply-safe` 可安全迁移旧根 `docs/` / `skills/`。
2871
- - **文档站 IA**:intro 概念地图与 30 分钟路径;[功能导览](./website/docs/overview/feature-map.md)、[架构导读](./website/docs/overview/architecture.md)、[当前规划](./website/docs/overview/roadmap.md);Markdown 断链构建失败;`skills/loop-agent/references/docs-converge.md` 固化文档收敛检查表。
2872
- - 可选 repo-local SDD skill 嵌入;前端 DAG skill 契约与验证命令安全解析。
2873
-
2874
- ## [0.10.0] - 2026-07-12
2875
-
2876
- - **Pi-only 受治理 runtime**:DAG writer 固定 `implement-pi` / `repair-pi`;`cursor-prompt` 仅显式 one-shot sidecar。
2877
- - **`agent-worker feature review|run|approve-followup|delivery|closeout|verify-final`**:Feature 决策面、薄编排、Follow-up 可批准闭环、本地 Git checkpoint、Delivery Package、Feature Closeout。
2878
- - **`task draft-followup`**、**`report metrics --month`**;Morning / Observe Feature Decision Summary。
2879
- - 详见根 `CHANGELOG.md [0.10.0]`。
2880
-
2881
- ## [0.9.0] - 2026-07-12
2882
-
2883
- - Observe 看板重设计为暖白运行控制台:统一信息层级、依赖图 + 节点表、右侧节点检查器、安全 Markdown;本机资源 guardrail。见 [Observe](./website/docs/guides/observe-ui.md)。
2884
-
2885
- ## [0.8.0] 及更早
2886
-
2887
- - 0.8.0:[CLI 参考](./website/docs/reference/cli.md) 补充 `task validate-feature`、`task retry`、`scripts/worker-nightly.sh` + GitHub Actions、`capabilities: [interactive-ui]`,Task Pool 唯一根 `.harness/task-pool/`。
2888
- - 0.7.5:Observe 新增 DAG 依赖图可视化。
2889
- - 0.7.0:interactive-ui writer-only HIGH 路由与 UI 交付契约。
2890
- - 更早条目见根目录 `CHANGELOG.md`。
2891
-
2892
- ## 文档站点同步说明
623
+ ## 历史版本
2893
624
 
2894
- - 站上 guide / reference 与根 `docs/` 双树边界见 [架构导读 · 双树边界](./website/docs/overview/architecture.md#双树边界)。
2895
- - 活能力短摘要:[`docs/reports/current-capability-summary.md`](https://github.com/tea-agent/loop-agent/blob/main/docs/reports/current-capability-summary.md)。
2896
- - 冻结基线长文:[`docs/reports/2026-07-02-repository-analysis.md`](https://github.com/tea-agent/loop-agent/blob/main/docs/reports/2026-07-02-repository-analysis.md)(2026-07-16 再采样对齐 0.12.0 + 主干 Unreleased;勿当第二 CHANGELOG)。
625
+ 0.35.x 及更早(0.8.0 0.35.4-beta.0)的发布说明已归档到 [`CHANGELOG/CHANGELOG-0.35-and-earlier.md`](CHANGELOG/CHANGELOG-0.35-and-earlier.md);版本线维护边界与归档规则见 [`CHANGELOG/README.md`](CHANGELOG/README.md)。