flower-trellis 0.6.10-beta.2 → 0.6.10-beta.4

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 (212) hide show
  1. package/README.md +1 -1
  2. package/enhancements/0.6/.agents/skills/trellis-auto-loop/SKILL.md +9 -9
  3. package/enhancements/0.6/.agents/skills/trellis-create-command/SKILL.md +2 -2
  4. package/enhancements/0.6/.agents/skills/trellis-push/SKILL.md +10 -10
  5. package/enhancements/0.6/.agents/skills/trellis-push/references/completed-task-recovery.md +7 -6
  6. package/enhancements/0.6/.agents/skills/trellis-push/references/output-templates.md +4 -4
  7. package/enhancements/0.6/.agents/skills/trellis-release/SKILL.md +4 -5
  8. package/enhancements/0.6/.claude/skills/trellis-auto-loop/SKILL.md +9 -9
  9. package/enhancements/0.6/.claude/skills/trellis-create-command/SKILL.md +2 -2
  10. package/enhancements/0.6/.claude/skills/trellis-push/SKILL.md +10 -10
  11. package/enhancements/0.6/.claude/skills/trellis-push/references/completed-task-recovery.md +7 -6
  12. package/enhancements/0.6/.claude/skills/trellis-push/references/output-templates.md +4 -4
  13. package/enhancements/0.6/.claude/skills/trellis-release/SKILL.md +4 -5
  14. package/enhancements/0.6/overrides/bundles/intent-routing.json +2 -0
  15. package/enhancements/0.6/overrides/bundles/task-reference-contract.json +5 -4
  16. package/enhancements/0.6/overrides/conflicts.json +174 -55
  17. package/enhancements/0.6/overrides/patches/hooks/claude-session-start/missing-task-routing/completed-content.py +7 -0
  18. package/enhancements/0.6/overrides/patches/hooks/claude-session-start/missing-task-routing/completed-selector.py +6 -0
  19. package/enhancements/0.6/overrides/patches/hooks/claude-session-start/missing-task-routing/patch.json +17 -8
  20. package/enhancements/0.6/overrides/patches/hooks/codex-session-start/missing-task-routing/completed-content.py +6 -0
  21. package/enhancements/0.6/overrides/patches/hooks/codex-session-start/missing-task-routing/completed-selector.py +6 -0
  22. package/enhancements/0.6/overrides/patches/hooks/codex-session-start/missing-task-routing/patch.json +17 -8
  23. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/codex-builder-call-content.py +1 -0
  24. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/codex-builder-call-selector.py +1 -0
  25. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/codex-builder-content.py +1 -0
  26. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/codex-builder-selector.py +1 -0
  27. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/dispatch-filter-content.py +3 -0
  28. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/dispatch-filter-selector.py +2 -0
  29. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/dispatch-helper-content.py +26 -0
  30. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/dispatch-helper-selector.py +1 -0
  31. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/patch.json +127 -0
  32. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/ready-selector.py +3 -0
  33. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/shared-builder-call-content.py +1 -0
  34. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/shared-builder-call-selector.py +1 -0
  35. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/shared-builder-content.py +1 -0
  36. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/shared-builder-selector.py +1 -0
  37. package/enhancements/0.6/overrides/patches/hooks/session-start/context-trim/shared-dispatch-helper-selector.py +1 -0
  38. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/active-task-content.py +45 -0
  39. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/active-task-intermediate-selector.py +17 -0
  40. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/cli-adapter-command-example-content.py +1 -0
  41. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/cli-adapter-command-example-selector.py +1 -0
  42. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/cli-adapter-path-example-content.py +1 -0
  43. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/cli-adapter-path-example-selector.py +1 -0
  44. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/config-after-archive-selector.yaml +2 -0
  45. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/config-after-close-content.yaml +2 -0
  46. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/config-doc-after-archive-selector.py +1 -0
  47. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/config-doc-after-close-content.py +1 -0
  48. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/linear-archive-action-selector.py +1 -0
  49. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/linear-archive-function-selector.py +7 -0
  50. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/linear-close-action-content.py +1 -0
  51. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/linear-close-function-content.py +8 -0
  52. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/patch.json +334 -0
  53. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/safe-commit-archive-import-selector.py +1 -0
  54. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/safe-commit-module-content.py +1 -0
  55. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/safe-commit-module-selector.py +1 -0
  56. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/safe-commit-paths-content.py +40 -0
  57. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-active-reference-import-content.py +1 -0
  58. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-active-reference-import-selector.py +1 -0
  59. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-archive-import-content.py +2 -0
  60. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-archive-import-selector.py +3 -0
  61. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-command-map-content.py +6 -0
  62. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-command-map-selector.py +5 -0
  63. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-create-closeout-content.py +7 -0
  64. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-create-closeout-selector.py +2 -0
  65. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-doc-commands-content.py +4 -0
  66. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-doc-commands-selector.py +3 -0
  67. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-empty.py +0 -0
  68. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-imports-content.py +9 -0
  69. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-imports-selector.py +1 -0
  70. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-list-content.py +109 -0
  71. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-list-selector.py +107 -0
  72. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-parser-archive-selector.py +4 -0
  73. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-parser-legacy-closed-view-selector.py +3 -0
  74. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-parser-lifecycle-content.py +23 -0
  75. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-parser-list-content.py +6 -0
  76. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-parser-list-selector.py +3 -0
  77. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-start-active-reference-content.py +6 -0
  78. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-start-active-reference-selector.py +2 -0
  79. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-config-content.py +2 -0
  80. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-config-selector.py +3 -0
  81. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-doc-content.py +2 -0
  82. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-doc-selector.py +3 -0
  83. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-git-content.py +1 -0
  84. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-git-selector.py +1 -0
  85. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-legacy-decision-import-selector.py +4 -0
  86. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-safe-commit-selector.py +5 -0
  87. package/enhancements/0.6/overrides/patches/scripts/{task-store-write-integrity/decision-import-selector.py → task-closeout-lifecycle/task-store-task-utils-content.py} +1 -0
  88. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-store-task-utils-selector.py +7 -0
  89. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-type-closeout-content.py +3 -0
  90. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-type-closeout-selector.py +2 -0
  91. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-usage-commands-content.py +6 -0
  92. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-usage-commands-selector.py +5 -0
  93. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-usage-example-content.py +1 -0
  94. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-usage-example-selector.py +1 -0
  95. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-usage-list-content.py +5 -0
  96. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-usage-list-selector.py +3 -0
  97. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-utils-doc-content.py +2 -0
  98. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-utils-doc-selector.py +3 -0
  99. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-utils-import-content.py +1 -0
  100. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/task-utils-import-selector.py +3 -0
  101. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/tasks-baseline.py +112 -0
  102. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/tasks-closeout-v1-baseline.py +208 -0
  103. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/tasks-closeout-v2-baseline.py +284 -0
  104. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/tasks-closeout-v3-baseline.py +288 -0
  105. package/enhancements/0.6/overrides/patches/scripts/task-closeout-lifecycle/tasks-content.py +290 -0
  106. package/enhancements/0.6/overrides/patches/scripts/task-reference-resolution/task-reference-content.py +83 -38
  107. package/enhancements/0.6/overrides/patches/scripts/task-store-write-integrity/patch.json +0 -23
  108. package/enhancements/0.6/overrides/patches/skills/trellis-continue/task-progress-recovery/completed-route-content.md +1 -1
  109. package/enhancements/0.6/overrides/patches/skills/trellis-continue/task-progress-recovery/content.md +1 -1
  110. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/active-task-lifecycle-content.md +5 -4
  111. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/child-closeout-language-content.md +1 -0
  112. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/child-closeout-language-selector.md +1 -0
  113. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/child-history-language-content.md +1 -0
  114. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/child-history-language-selector.md +1 -0
  115. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/command-example-language-content.md +1 -0
  116. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/command-example-language-selector.md +1 -0
  117. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/continue-recovery-content.md +1 -1
  118. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/entry-example-language-content.md +1 -0
  119. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/entry-example-language-selector.md +1 -0
  120. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/gc-customization-language-content.md +1 -0
  121. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/gc-customization-language-selector.md +1 -0
  122. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/lifecycle-entry-content.md +3 -3
  123. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/lifecycle-hooks-baseline.md +17 -0
  124. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/lifecycle-hooks-content.md +11 -0
  125. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/lifecycle-modification-content.md +1 -1
  126. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/lifecycle-summary-language-content.md +1 -0
  127. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/lifecycle-summary-language-selector.md +1 -0
  128. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/owner-routing-content.md +2 -1
  129. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/patch.json +218 -0
  130. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/task-common-commands-baseline.md +13 -0
  131. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/task-common-commands-content.md +15 -0
  132. package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/workflow-change-map-content.md +1 -1
  133. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/closeout-intro-content.md +10 -0
  134. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/closeout-intro-selector.md +10 -0
  135. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/closeout-phase-content.md +1 -0
  136. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/closeout-phase-selector.md +1 -0
  137. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/closeout-reference-content.md +1 -0
  138. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/closeout-reference-selector.md +1 -0
  139. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/patch.json +109 -0
  140. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/when-to-reach-baseline.md +12 -0
  141. package/enhancements/0.6/overrides/patches/skills/trellis-session-insight/grok-memory-support/when-to-reach-content.md +12 -0
  142. package/enhancements/0.6/overrides/patches/skills/trellis-update-spec/autonomous-evaluation/command-relationship-content.md +13 -0
  143. package/enhancements/0.6/overrides/patches/skills/trellis-update-spec/autonomous-evaluation/patch.json +26 -0
  144. package/enhancements/0.6/overrides/patches/workflow/hub/content.md +5 -5
  145. package/enhancements/0.6/overrides/patches/workflow/phase-ownership/patch.json +8 -0
  146. package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-3-closeout-content.md +3 -0
  147. package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-3-closeout-selector.md +3 -0
  148. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/completed-content.md +3 -5
  149. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/customizing-trellis-content.md +5 -5
  150. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/in-progress-scope-content.md +4 -0
  151. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/in-progress-scope-selector.md +5 -0
  152. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/patch.json +17 -0
  153. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/state-contract-comment-content.md +2 -3
  154. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/task-system-baseline.md +37 -0
  155. package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/task-system-content.md +22 -0
  156. package/enhancements/0.6/overrides/patches/workflow/sessionstart-context-trim/context-step-content.md +1 -0
  157. package/enhancements/0.6/overrides/patches/workflow/sessionstart-context-trim/context-step-selector.md +1 -0
  158. package/enhancements/0.6/overrides/patches/workflow/sessionstart-context-trim/patch.json +26 -0
  159. package/enhancements/0.6/overrides/patches/workflow/sessionstart-context-trim/planning-rule-selector.md +1 -0
  160. package/enhancements/0.6/overrides/patches/workflow/sessionstart-context-trim/step-history-selector.md +1 -0
  161. package/enhancements/0.6/overrides/patches/workflow/state-no-task/content.md +1 -1
  162. package/enhancements/0.6/overrides/patches/workflow/states-in-progress/common-content.md +1 -1
  163. package/enhancements/0.6/overrides/removals.json +26 -0
  164. package/enhancements/0.6/scripts/auto_loop.py +108 -63
  165. package/enhancements/0.6/scripts/decision_log.py +5 -5
  166. package/enhancements/0.6/scripts/task_intent.py +15 -4
  167. package/enhancements/0.6/scripts/task_lifecycle.py +2133 -0
  168. package/enhancements/0.6/scripts/task_progress.py +58 -14
  169. package/enhancements/MANIFEST.json +126 -15
  170. package/enhancements/common/.common/.claude/skills/aliyun-ops/SKILL.md +6 -3
  171. package/enhancements/common/.common/.claude/skills/aliyun-ops/agents/openai.yaml +2 -2
  172. package/enhancements/common/.common/.claude/skills/aliyun-ops/references/ack.md +109 -0
  173. package/enhancements/common/.common/.claude/skills/aliyun-ops/references/sls.md +45 -0
  174. package/enhancements/common/.common/.claude/skills/aliyun-ops/scripts/ack.py +869 -0
  175. package/enhancements/common/.common/.claude/skills/aliyun-ops/scripts/ack_roa_v3.py +252 -0
  176. package/enhancements/common/.common/.claude/skills/aliyun-ops/scripts/aliyun_common.py +3 -1
  177. package/enhancements/common/.common/.codex/skills/aliyun-ops/SKILL.md +6 -3
  178. package/enhancements/common/.common/.codex/skills/aliyun-ops/agents/openai.yaml +2 -2
  179. package/enhancements/common/.common/.codex/skills/aliyun-ops/references/ack.md +109 -0
  180. package/enhancements/common/.common/.codex/skills/aliyun-ops/references/sls.md +45 -0
  181. package/enhancements/common/.common/.codex/skills/aliyun-ops/scripts/ack.py +869 -0
  182. package/enhancements/common/.common/.codex/skills/aliyun-ops/scripts/ack_roa_v3.py +252 -0
  183. package/enhancements/common/.common/.codex/skills/aliyun-ops/scripts/aliyun_common.py +3 -1
  184. package/package.json +3 -3
  185. package/src/assets/flower_session_start.py +93 -6
  186. package/src/assets/flower_update_hook.py +19 -14
  187. package/src/builtin-plugins/skill-garden/content-adapter.js +68 -1
  188. package/src/lib/copy-scripts.js +13 -3
  189. package/src/lib/patch-engine.js +159 -3
  190. package/src/lib/skill-catalog.js +1 -1
  191. package/src/lib/telemetry-files.js +10 -2
  192. package/src/patches/bundles/flower-platform-integration.json +1 -0
  193. package/src/patches/conflicts.json +16 -0
  194. package/src/patches/platforms/claude/session-start-hooks/patch.json +1 -1
  195. package/src/patches/platforms/claude/statusline-active-tasks/count-content.py +8 -0
  196. package/src/patches/platforms/claude/statusline-active-tasks/count-selector.py +10 -0
  197. package/src/patches/platforms/claude/statusline-active-tasks/patch.json +17 -0
  198. package/src/patches/platforms/codex/session-start-hooks/patch.json +1 -1
  199. package/src/plugin/integrity/canonical-tree.js +2 -18
  200. package/src/plugin/integrity/volatile-tree-artifact.js +13 -0
  201. package/enhancements/0.6/overrides/bundles/finish-work.json +0 -10
  202. package/enhancements/0.6/overrides/patches/scripts/task-store-write-integrity/archive-guard-content.py +0 -28
  203. package/enhancements/0.6/overrides/patches/scripts/task-store-write-integrity/archive-guard-selector.py +0 -3
  204. package/enhancements/0.6/overrides/patches/scripts/task-store-write-integrity/archive-write-content.py +0 -10
  205. package/enhancements/0.6/overrides/patches/scripts/task-store-write-integrity/archive-write-selector.py +0 -3
  206. package/enhancements/0.6/overrides/patches/scripts/task-store-write-integrity/decision-import-content.py +0 -2
  207. package/enhancements/0.6/overrides/patches/skills/trellis-finish-work/exact-bookkeeping/baseline-agent.md +0 -66
  208. package/enhancements/0.6/overrides/patches/skills/trellis-finish-work/exact-bookkeeping/baseline-command.md +0 -66
  209. package/enhancements/0.6/overrides/patches/skills/trellis-finish-work/exact-bookkeeping/content.md +0 -124
  210. package/enhancements/0.6/overrides/patches/skills/trellis-finish-work/exact-bookkeeping/gemini-content.md +0 -3
  211. package/enhancements/0.6/overrides/patches/skills/trellis-finish-work/exact-bookkeeping/gemini-selector.txt +0 -1
  212. package/enhancements/0.6/overrides/patches/skills/trellis-finish-work/exact-bookkeeping/patch.json +0 -57
package/README.md CHANGED
@@ -172,7 +172,7 @@ flower-trellis plugin
172
172
 
173
173
  交互管理器采用 `发现 / 已安装 / 来源 / 问题` 四个页签。Trellis 项目的 `发现` 页会展示 `flower/skill-garden` 内置入口,按 Enter 直接管理工作流强化与可选通用技能;原 `flower-trellis skill` 命令继续保留为高级兼容入口。`发现` 同时合并全部已启用来源的 Plugin,并保留来源标签和即时搜索;未登录 GitLab 来源会直接进入 Device Flow,GitHub 公共来源无需登录。`来源` 页的“新增来源”可选择 GitHub 公共仓库或 GitLab Marketplace;GitHub 会先在临时缓存中下载固定快照、检测格式、展示可导入与忽略组件,确认后才保存。ref 留空时使用仓库默认分支;出现多个格式入口时会要求选择,公开 GitHub 跨仓 Marketplace 条目和 `plugins/*` 多 Plugin 仓库也可识别。
174
174
 
175
- 可选通用技能包含 `aliyun-ops`,统一提供阿里云 DMS、SLS 与 MSE 查询和排障能力,DMS 写操作通过数据变更工单进入审批流。通用技能需手动选择启用,不会复制用户私有 AK/SK 配置。Codex 通用技能安装到 `.agents/skills`,Claude 安装到 `.claude/skills`;已有 `.codex` 或 `.agents` 时使用共享目标,已有 `.claude` 时使用 Claude 目标,三个目录都不存在时默认同时安装两份。空目录也可通过 Skill Garden 入口管理通用技能,无需初始化 Trellis。
175
+ 可选通用技能包含 `aliyun-ops`,统一提供阿里云 DMS、SLS、MSE 与 ACK 查询和排障能力;ACK 支持通过短期 KubeConfig 和 Workbench 查询私网 Kubernetes 资源,DMS 写操作通过数据变更工单进入审批流。通用技能需手动选择启用,不会复制用户私有 AK/SK 或 Workbench 配置。Codex 通用技能安装到 `.agents/skills`,Claude 安装到 `.claude/skills`;已有 `.codex` 或 `.agents` 时使用共享目标,已有 `.claude` 时使用 Claude 目标,三个目录都不存在时默认同时安装两份。空目录也可通过 Skill Garden 入口管理通用技能,无需初始化 Trellis。
176
176
 
177
177
  安装、更新和卸载都会先展示 dry-run、依赖、capability 和目标文件变化,确认后才写入项目。Plugin 作者使用的 `plugin init`、`plugin validate` 继续保留在高级命令中,不占用普通用户的管理器首页。
178
178
 
@@ -14,7 +14,7 @@ description: "启动、恢复和推进 Trellis 自动任务循环。用于用户
14
14
  - 新 run 先 prepare 全部显式任务,Open Questions 全部收敛后才进入 running。running 中不再询问 route、planning 或普通 Check-All 停止边界。
15
15
  - 每个 action 完成后,必须用同名 `record --action ...` 精确回写;record 成功后立即 `next`。不得根据聊天摘要手改 runtime 或跳步。
16
16
  - `record` 返回 `status=retryable` 时不得运行 `next`,必须按返回指令在同一个 outstanding action 内纠正并重录;恢复诊断的 owner 见下方 Action 内恢复。
17
- - 本地提交是自动终点。不得 push、merge、release、deploy、finish-work 或 archive;runner 在 item 本地提交成功后把该任务写入本地完成态(`status=completed` + `completedAt`),归档仍需用户显式执行。
17
+ - 本地提交是自动终点。不得 push、merge、release 或 deploy;runner 在 item 本地提交成功后原子写入 `progress`、`status=completed`、`completedAt` 与确定性 `closeout`。`closed` 立即退出活跃视图,物理 GC 由后续 SessionStart 处理。
18
18
  - 任务顺序只决定稳定调度顺序,不隐含依赖。依赖必须通过 `--depends-on dependent=dependency` 明确传入或由 planning artifacts 明确声明。
19
19
  - 任务级失败只阻塞自身及显式依赖项;独立任务继续。fix/recheck、planning repair 与安全的 commit-only repair 各最多 3 轮,队列结束后不自动执行第二遍恢复扫描。
20
20
  - schema 1 runtime 继续按 runner 返回的旧 action 恢复,包括 outstanding `confirm_brief`;不要把旧 run 改写成 schema 2。
@@ -91,7 +91,7 @@ python3 ./.trellis/scripts/auto_loop.py decide \
91
91
  - 扩大权限或降低安全、隐私保护。
92
92
  - 公开 API 或数据格式破坏性变更。
93
93
  - 费用、生产环境或外部系统影响。
94
- - push、merge、release、deploy、finish-work、archive。
94
+ - push、merge、release、deploy、物理 GC 或其它外部副作用。
95
95
  - 明显改变任务目标或业务规则且仓库没有倾向证据。
96
96
  - `Open Questions` 中人工保留的任何选择。
97
97
 
@@ -169,13 +169,13 @@ python3 ./.trellis/scripts/auto_loop.py stop --reason "<原因>"
169
169
 
170
170
  ## Run 收尾交接
171
171
 
172
- 队列到达终态后必须向用户报告归档待办,不得只说 run 已完成。待办从终态 `next`、`record` 或 `status` 的 `summary.pending_archive` 读取:
172
+ 队列到达终态后必须根据 `next`、`record` 或 `status` 的摘要报告真实结果:
173
173
 
174
- - `tasks_awaiting_archive`:已写入本地完成态、等待用户显式归档的队列任务,逐项列出。
175
- - `parent_tasks_outside_queue`:队列任务声明的父任务中未纳入本次队列的部分。父任务只负责范围、依赖顺序和集成复核,不进入实现流水线,但必须排在全部子任务归档之后单独 finish-work。
176
- - run 结束后 pointer 已清除,`status` 走最近 run 列表;`pending_archive` 在该列表里同样可读。
174
+ - `completed_tasks`:逐项报告 commit 与 `close_result`;`closed` 无额外收尾动作,`blocked` 必须连同 `close_blockers` 交接。
175
+ - `blocked_tasks`:报告阻塞原因与可恢复入口,不把 run 终态说成全部成功。
176
+ - `parent_tasks_outside_queue`:仅说明未纳入本次队列的父任务;父任务仍按自身范围和验收条件独立推进。
177
177
 
178
- run 期间新建的后补子任务不在冻结队列内,runner 不追踪;发现时按普通任务单独推进,不得手改 runtime 塞进当前 run。归档动作本身始终由用户发起。
178
+ run 期间新建的后补子任务不在冻结队列内,runner 不追踪;发现时按普通任务单独推进,不得手改 runtime 塞进当前 run。物理 GC 不属于 run 收尾。
179
179
 
180
180
  ## 禁止事项
181
181
 
@@ -183,6 +183,6 @@ run 期间新建的后补子任务不在冻结队列内,runner 不追踪;发
183
183
  - 不覆盖、暂存或提交 protected-retained 文件;发生路径冲突只阻塞涉及任务。
184
184
  - 不用 `start --force` 代替 `retry-blocked`。
185
185
  - `record` 返回 `retryable` 后不得调用 `next` 或重新发起 action。
186
- - 不把 queue item completed 解释为任务已归档。
187
- - 不只报告 run 已完成而省略 `pending_archive` 待办,也不代用户执行 finish-work 或 archive。
186
+ - 不忽略 `close_result`:只有 `closed` 才表示确定性 Close 成功,`blocked` 必须保留结构化阻塞项。
187
+ - 不在 run 收尾执行物理 GC,也不为已关闭任务制造额外收尾命令。
188
188
  - 不在无人值守执行中替用户回答 Open Questions。
@@ -75,7 +75,7 @@ description: "Create a new trellis entry as command or skill for the target plat
75
75
 
76
76
  | 形态 | 何时选 | 触发方式 |
77
77
  |------|--------|---------|
78
- | **command** | 显式动作、高风险、需确认点(如 finish-work、continue) | 按目标平台的显式入口语法 |
78
+ | **command** | 显式动作、高风险、需确认点(如 continue、push) | 按目标平台的显式入口语法 |
79
79
  | **skill** | 自然语可触发、查询 / 分析 / 检查、低破坏性(如 check-all、extract-prd、visualize) | 自动匹配或显式调用,以目标平台能力为准 |
80
80
 
81
81
  决定不了时**推荐 skill**:自然语路由更灵活,显式斜杠仍可用。反过来,后悔做成 skill 想改 command 比较费事。
@@ -224,7 +224,7 @@ description: "<what> <when> <exclusion>"
224
224
 
225
225
  | 类型 | 前缀 | 示例 |
226
226
  |------|------|------|
227
- | 会话生命周期 | — | `continue` / `finish-work` |
227
+ | 会话恢复 | — | `continue` |
228
228
  | Pre-development | `before-` | `before-dev` |
229
229
  | Check | `check-` | `check-all` |
230
230
  | Verify | `verify-` | `verify-task` |
@@ -13,9 +13,9 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
13
13
  - 普通多仓计划可以包含本地确定性生成命令;生成后没有新增计划外文件时沿用同一次确认。
14
14
  - 普通模式把当前任务产物与更新后的 `task.json` 纳入同一次确认下的独立任务记录提交。
15
15
  - 用户明确要求“只提交不推送”时使用 `commit-only`。
16
- - auto-loop 可调用内部 `commit-only`,复用本 skill 的仓库发现、动态多仓计划、确定性本地生成、精确提交和失败保留能力;不再次确认、不 push,也不执行 Step 5 的任务进度写入、进度 commit 或 progress push。Auto-Loop runner 仍按自己的状态契约写入本地 `task.json.progress` 与本地完成态(`status=completed` + `completedAt`)。
16
+ - auto-loop 可调用内部 `commit-only`,复用本 skill 的仓库发现、动态多仓计划、确定性本地生成、精确提交和失败保留能力;不再次确认、不 push,也不执行 Step 5 的任务进度写入、进度 commit 或 progress push。Auto-Loop runner 在提交成功后原子写入本地 `task.json.progress`、`status=completed`、`completedAt` 与确定性 `closeout`。
17
17
  - 不发起、终止或解决分支合并;只允许普通模式完成已经开始、冲突已清零且索引完全可归属的 merge commit。
18
- - 不处理上线核对、任务归档、会话日志或自动任务队列状态。
18
+ - 不处理上线核对、物理 GC、会话日志或自动任务队列状态。
19
19
  - 不使用 `git add .`、`git add -A`,不要求工作区整体干净,也不提交计划外文件。
20
20
  - untracked 上下文只接受 `stage=push`;该状态只负责路由,不替代本 skill 的正式计划、确认和 Git 安全检查,也不生成任务进度提交。
21
21
 
@@ -25,7 +25,7 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
25
25
  | --- | --- | --- | --- |
26
26
  | 普通 | 展示最小计划并确认一次 | exact commit;已有 merge 就绪时完成双父提交;然后 push | 有活动任务时立即同步 |
27
27
  | 用户 `commit-only` | 展示最小计划并确认一次 | exact local commit | 跳过 |
28
- | auto-loop 内部 `commit-only` | 复用 auto-loop 预授权 | exact local commit chain | 由 Auto-Loop runner 写本地 progress 与本地完成态;本 skill 跳过 Step 5 |
28
+ | auto-loop 内部 `commit-only` | 复用 auto-loop 预授权 | exact local commit chain | 由 Auto-Loop runner 写本地 progress、完成态与 Close;本 skill 跳过 Step 5 |
29
29
 
30
30
  内部 `commit-only` 不接受超出当前任务证据、runner owned dirty 和 protected-retained 边界的文件,不执行远端推送或其他附加动作。安全条件不满足时返回失败,由调用方决定后续状态。
31
31
 
@@ -67,7 +67,7 @@ python3 ./.trellis/scripts/task_progress.py status --json || true
67
67
  git status --short --untracked-files=all -- <task-dir>
68
68
  ```
69
69
 
70
- 若 `task_progress.py status` 返回 `taskStatus=completed`,立即按需读取 `references/completed-task-recovery.md`,由该 reference 完成只读 preflight 并返回“恢复计划 / 显式 finish-work / 阻断”之一。在得到结果前不得进入普通业务规划,也不得重复已经成功的业务 Git 动作。reference 缺失、不可读或证据无法闭合时失败关闭;`task.json.progress` 只作诊断,不能单独选择恢复动作。
70
+ 若 `task_progress.py status` 返回 `taskStatus=completed`,立即按需读取 `references/completed-task-recovery.md`,由该 reference 完成只读 preflight 并返回“恢复计划 / Close 待解阻 / 无需动作 / 阻断”之一。在得到结果前不得进入普通业务规划,也不得重复已经成功的业务 Git 动作。reference 缺失、不可读或证据无法闭合时失败关闭;`task.json.progress` 只作诊断,不能单独选择恢复动作。
71
71
 
72
72
  不得把默认 `git status --short` 可能返回的 `?? <task-dir>/` 折叠目录当成 exact file、展示条目或 pathspec。无活动 task 时仍可提交相关代码,但不生成任务进度。untracked 命中时,结合当前请求、work summary 和实际 diff 判断业务 `planned` 文件归属,计划同时显示 work id;无法明确归属的文件只能保留或作为风险。存在活动 task 时,结合 `brief.md`、`implement.md`、当前 diff 与本轮执行范围生成一行语义进度;同时识别当前任务目录中已存在且可归属的 dirty/untracked 产物,供 Step 5 生成任务记录 exact files。不得从旧进度推断 Git 动作。
73
73
 
@@ -116,7 +116,7 @@ git log @{u}..HEAD --oneline 2>/dev/null || true
116
116
 
117
117
  上述优先级用于发现意图和执行顺序,不允许用文档覆盖当前仓库事实。命令入口、工作目录和输出路径必须由受版本控制内容验证;任务 artifacts、SOP/spec、脚本实际行为或 Git 关系互相冲突时失败关闭。
118
118
 
119
- 命令必须是受版本控制的稳定入口,并且本地、确定性、可重复、无外部副作用。工作目录和预期影响路径必须可审计;只有名称相似、mtime、目录邻近或惯例不足以执行。禁止任意 shell 字符串、管道、重定向、命令替换、push、release、deploy、archive、凭证和生产数据操作;证据不足时失败关闭。
119
+ 命令必须是受版本控制的稳定入口,并且本地、确定性、可重复、无外部副作用。工作目录和预期影响路径必须可审计;只有名称相似、mtime、目录邻近或惯例不足以执行。禁止任意 shell 字符串、管道、重定向、命令替换、push、release、deploy、物理 GC、凭证和生产数据操作;证据不足时失败关闭。
120
120
 
121
121
  `retained` 只是内部集合名。用户可见输出统一写“保留未提交的变更(dirty)”,按输出 reference 的阈值展示;内部始终保留 exact paths 和 Git 状态,分组摘要不得用于 pathspec 或替代校验。unknown ahead、branch/upstream 异常、归属不确定等真正需要处理的事项单独进入“风险”区;普通 retained dirty 不默认视为阻塞。
122
122
 
@@ -222,7 +222,7 @@ auto-loop 内部链失败时向调用方返回全部已完成仓库提交和失
222
222
  - 父仓分支、upstream 和冲突状态安全。
223
223
  - 推送不会携带无法归属的历史 ahead commits。
224
224
 
225
- 全部业务 commit/push 成功时,通过 helper 用同一份最终 progress 原子写入 `progress`、`status=completed` 与 `completedAt`:
225
+ 全部业务 commit/push 成功时,通过 helper 用同一份最终 progress 原子写入 `progress`、`status=completed`、`completedAt` 与确定性 `closeout`:
226
226
 
227
227
  ```bash
228
228
  python3 ./.trellis/scripts/task_progress.py write \
@@ -232,7 +232,7 @@ python3 ./.trellis/scripts/task_progress.py write \
232
232
  --json
233
233
  ```
234
234
 
235
- 部分成功时调用同一 helper,但不得携带 `--complete`,并写入精确恢复位置。用户 `commit-only`、auto-loop 内部 `commit-only` 和尚未发生任何成功业务 Git 动作的失败都不得由本 skill 请求 complete;auto-loop 的本地完成态由 Auto-Loop runner 自己写入,不经过本步骤。helper 写入失败时任务保持原状态,不得继续任务记录提交或报告完成。
235
+ helper 返回 `closeResult=closed|already-closed` 时任务立即退出所有活跃视图;返回 `closeResult=blocked` 时必须保留并展示 `closeBlockers`,但仍可提交已完成的任务记录。部分成功时调用同一 helper,但不得携带 `--complete`,并写入精确恢复位置。用户 `commit-only`、auto-loop 内部 `commit-only` 和尚未发生任何成功业务 Git 动作的失败都不得由本 skill 请求 complete;auto-loop 的本地完成态与 Close 由 Auto-Loop runner 自己写入,不经过本步骤。helper 写入失败时任务保持原状态,不得继续任务记录提交或报告完成。
236
236
 
237
237
  helper 成功后,只提交并推送首次确认的当前任务 exact files;该集合包含完成态 `task.json`,以及首次计划时已存在且可归属的当前任务 dirty/untracked 产物:
238
238
 
@@ -242,14 +242,14 @@ git commit --only -m "chore(task): update <task-name> progress" -- <current-task
242
242
  git push origin <current-branch>
243
243
  ```
244
244
 
245
- 该动作属于用户已确认的普通 push 计划,不增加第二次确认。提交后必须验证 commit 只包含首次确认的当前任务 exact files,且 `task.json` 已包含同一份最终 progress、`status=completed` 与 `completedAt`;其他任务和无关 dirty/staged 文件保持原状。
245
+ 该动作属于用户已确认的普通 push 计划,不增加第二次确认。提交后必须验证 commit 只包含首次确认的当前任务 exact files,且 `task.json` 已包含同一份最终 progress、`status=completed`、`completedAt` 与同次 Close 结果;其他任务和无关 dirty/staged 文件保持原状。
246
246
 
247
247
  失败时保留真实现场,不 reset、amend、revert 或制造 dirty 回滚:
248
248
 
249
249
  - helper 失败:任务保持 `in_progress`,不得创建任务记录 commit。
250
250
  - helper 成功但任务记录 commit 失败:保留本地 `completed` 与当前任务 exact dirty,后续按 Step 1 的任务记录 commit 恢复路径重新验证和确认;不得重复业务提交或 helper 写入。
251
251
  - 任务记录 commit 成功但 push 失败:任务目录应为 clean,并保留可归属的 ahead commit;后续只重试该 commit 的 push,不重复业务提交、helper 写入或任务记录 commit。
252
- - 任务记录 push 成功:本任务产生的当前任务目录变更必须 clean;不得再写入第二份预归档完成态。
252
+ - 任务记录 push 成功:本任务产生的当前任务目录变更必须 clean;不得再次写入完成态或 Close。
253
253
 
254
254
  任何恢复都必须验证当前分支、upstream、HEAD、`@{u}..HEAD`、任务记录 commit message 与 exact file set,以及 `task.json` 的最终完成态。无法证明归属时停止,不把未知 ahead 或 dirty 当作可恢复任务记录。
255
255
 
@@ -264,7 +264,7 @@ reference 缺失、无法读取或缺少对应章节时停止并报告 `阻塞`
264
264
  ## 禁止事项
265
265
 
266
266
  - 扩大到计划外文件或要求清理无关工作区。
267
- - 把普通 push 中可归属当前活动任务的规划产物列为 retained,并以“finish-work 归档时再入库”为由延后首次记录。
267
+ - 把普通 push 中可归属当前活动任务的规划产物列为 retained,并以“之后再整理”为由延后首次记录。
268
268
  - 执行首次计划未展示的生成命令,或生成计划外文件后仍沿用旧确认。
269
269
  - 用任务进度决定是否推送代码。
270
270
  - 在本 skill 内发起、终止、解决冲突或改变分支合并目标;只允许完成已就绪的 merge commit。
@@ -1,19 +1,20 @@
1
1
  # Completed Task Recovery
2
2
 
3
- 本 reference 只在 `task_progress.py status` 返回 `taskStatus=completed` 时加载。它是普通任务记录发布恢复的唯一详细语义 owner;`trellis-continue`、completed workflow-state 和 `trellis-finish-work` 不复制本分支矩阵。
3
+ 本 reference 只在 `task_progress.py status` 返回 `taskStatus=completed` 时加载。它是普通任务记录发布恢复与 Close 待解阻的唯一详细语义 owner;`trellis-continue` 和 completed workflow-state 不复制本分支矩阵。
4
4
 
5
5
  ## Evidence
6
6
 
7
- 固定当前任务路径与 `task.json`,读取文件级任务状态、当前分支、upstream、`HEAD`、`@{u}..HEAD` 的提交消息与文件集合,以及 `python3 ./.trellis/scripts/auto_loop.py status --verbose`。所有恢复都必须验证 exact task、最终 progress、`status=completed`、分支和提交归属;缺失 `completedAt` 只记为待归档补写的审计元数据,不单独阻断恢复。progress 文本不能替代 runtime 或 Git 证据。
7
+ 固定当前任务路径与 `task.json`,读取文件级任务状态、`closeout`、当前分支、upstream、`HEAD`、`@{u}..HEAD` 的提交消息与文件集合,以及 `python3 ./.trellis/scripts/auto_loop.py status --verbose`。所有恢复都必须验证 exact task、最终 progress、`status=completed`、Close 状态、分支和提交归属;progress 文本不能替代 runtime 或 Git 证据。
8
8
 
9
9
  ## Outcomes
10
10
 
11
11
  按以下优先级只返回一个结果:
12
12
 
13
- 1. **显式 finish-work,auto-loop**:健康的终态或 recent auto-loop run 的 `pending_archive.tasks_awaiting_archive` 精确包含当前任务,记录的本地提交仍可验证,且任务 dirty 仅为 runner 在提交后写入的 `<task-dir>/task.json` progress/lifecycle bookkeeping。停止 Push,不得把该本地完成态改成普通远端 push。
14
- 2. **任务记录 commit + push 恢复计划**:没有有效 auto-loop handoff;当前任务 exact files 仍 dirty,`task.json` 已包含合法最终 progress 与 `status=completed`,且文件集合可由首次确认或重新确认闭合。缺失 `completedAt` 时不得重复 helper 写入,由后续 archive 补写;不得重复业务提交。
13
+ 1. **Auto-loop 本地完成,无需 Push**:健康的终态或 recent auto-loop run 精确包含当前任务,记录的本地提交仍可验证,且任务 dirty 仅为 runner 在提交后写入的 `<task-dir>/task.json` progress/lifecycle bookkeeping。停止 Push;`closeout.status=closed` 时无需其它生命周期动作。
14
+ 2. **任务记录 commit + push 恢复计划**:当前任务 exact files 仍 dirty,`task.json` 已包含合法最终 progress 与 `status=completed`,且文件集合可由首次确认或重新确认闭合。不得重复业务提交或 helper 写入;即使 Close 已成功,也只恢复已确认的任务记录发布。
15
15
  3. **任务记录 push-only 恢复计划**:当前任务目录 clean;upstream 存在;`@{u}..HEAD` 中存在消息、exact file set 和完成态均可归属的任务记录 commit。只推送该已存在提交,不创建新 commit。
16
- 4. **显式 finish-work,普通已同步**:当前任务目录 clean;upstream 存在;`@{u}..HEAD` 没有提交修改当前任务。普通任务记录已经同步,不再执行 Push。
17
- 5. **阻断**:runtime 与 Git 矛盾、auto-loop marker 无健康 handoff、缺少普通路径 upstream、任务 dirty 超出 exact files、未知 ahead 修改任务,或提交消息/文件集合/分支无法闭合。报告具体证据缺口,不 push、不归档,也不猜测完成来源。
16
+ 4. **Close 待解阻**:任务记录已经同步,`closeout.status=blocked|pending`,且 blockers 证据一致。报告结构化 blockers;条件解决后只重试 `task.py close <task>`,持久化语义 blocker 由所属 owner 完成后追加 `--resolve-blocker <code>`,不重复业务 Git 动作或 progress 写入。
17
+ 5. **无需动作**:任务记录已经同步且 `closeout.status=closed`。任务已退出活跃视图,物理 GC 由后续 SessionStart 在三天阈值后处理。
18
+ 6. **阻断**:runtime 与 Git 矛盾、auto-loop marker 无健康完成证据、缺少普通路径 upstream、任务 dirty 超出 exact files、未知 ahead 修改任务,或提交消息/文件集合/分支无法闭合。报告具体证据缺口,不 push、不 Close,也不猜测完成来源。
18
19
 
19
20
  恢复计划仍使用 `trellis-push` 的既有一次确认、执行前漂移检查和结果模板。这里只决定完成态恢复范围,不新增状态、持久化字段或自动确认。
@@ -42,7 +42,7 @@
42
42
  - **仓库**:<repository-name> · 分支:`<branch>` -> `<upstream>`
43
43
  - **计划提交**:<当前任务 exact files 或分组摘要>
44
44
  - **进度**:completed=<...> | partial=<...> | next=<...>
45
- - **执行**:<business commit/push -> `task_progress.py write --complete` -> task-record commit -> task-record push>
45
+ - **执行**:<business commit/push -> `task_progress.py write --complete`(含 Close) -> task-record commit -> task-record push>
46
46
 
47
47
  确认执行请回复 `确认`。可调整:`只提交`、`修改 message`、`展开文件`、`展开保留变更`。
48
48
  ```
@@ -60,7 +60,7 @@
60
60
  - 计划的完成链证据始终显示当前状态,但不重复 Check-All 报告或 Spec review 正文;`未运行`、`已失效`、任一未处置 `CHK-*` / `FBK-*`、blocked、部分验证或 `needs-review` 同时计入风险区。未变化且接受仍有效的问题只在完成链证据中汇总数量,不再进入风险区;内部保留 ID、严重度、影响与接受依据,用户要求详情时再展开。接受失效或无法验证时按实际状态进入风险区并说明变化或证据缺口,不擅自延续接受。`[上线后验证]` 作为非阻断风险逐项保留动作、环境/责任边界和预期结果,不改变 Check-All 状态,并注明由既有 `trellis-release` / `release.md` 流程承接。
61
61
  - 顶部“风险 <N>”只统计本次风险区需展开的事项,不包含已经单独汇总的有效已接受问题;不重复计数。同一问题的有效性按 Check-All reporting reference 核对,不因无关 diff 自动失效,也不把展示去重当作已修复或零风险。
62
62
  - 无活动 task、untracked 或 `commit-only` 时省略进度动作。
63
- - 不重复展示检查结果、规范复核、归档或其他阶段的详细信息。
63
+ - 不重复展示检查结果、规范复核、物理 GC 或其他阶段的详细信息。
64
64
  - 生成前无法确定的内容和增删行写“生成后计算”,不得填预测值。
65
65
 
66
66
  ## 结果模板
@@ -73,7 +73,7 @@
73
73
  [推送成功 / 仅本地提交成功 / 部分完成 / 失败]
74
74
 
75
75
  - **<repository-name>**:`<branch> → <upstream>` · `<short-hash[, short-hash...]>` · <已推送 / 仅本地 / 失败 / 未执行>
76
- - **任务记录**:`<task-record-hash>` · <completed 已同步 / partial 已同步,仍为 in_progress / commit 待恢复 / push 待恢复 / 同步失败>
76
+ - **任务记录**:`<task-record-hash>` · <completed + Close 已同步 / completed 但 Close blocked / partial 已同步,仍为 in_progress / commit 待恢复 / push 待恢复 / 同步失败>
77
77
  - **保留未提交的变更(dirty)**:<每仓数量与实际核对结论>
78
78
 
79
79
  ### 失败与恢复(仅部分完成或失败时显示)
@@ -94,5 +94,5 @@
94
94
  - 部分完成时必须明确列出已成功仓库、失败仓库/步骤、当前分支和下一恢复动作。业务结果与 progress sync 状态不得合并成一个模糊结论。
95
95
  - 普通成功结果必须确认本任务产生的当前任务目录变更 clean。其它 retained dirty(含计划外 staged)仍逐项核验,已核对保持原状时每仓只报告数量与结论,不重复清单。异常或未核验项列出路径、实际状态和处理情况,不得笼统声称全部保持原状;用户要求详情时再展示实际文件、message、命令或进度,展开文件仍沿用共用规则。
96
96
  - Git 成功不消除现有风险;成功结果省略未变化且接受仍有效的问题,不重复接受数量或原影响说明。结果的“风险”区保留新增、变化、接受失效或无法验证的事项,以及仍适用的其它完成链风险与 `[上线后验证]`;用户要求详情时再展开原问题与处置。
97
- - helper 成功但任务记录 commit 失败时,结果写“任务记录 commit 待恢复”,说明本地 `completed` 与 exact task dirty 已保留;任务记录 commit 成功但 push 失败时写“任务记录 push 待恢复”,说明 clean ahead commit 已保留。两种情况都不得暗示需要重复业务提交或 helper 写入。
97
+ - helper 成功但任务记录 commit 失败时,结果写“任务记录 commit 待恢复”,说明本地 `completed`、Close 结果与 exact task dirty 已保留;任务记录 commit 成功但 push 失败时写“任务记录 push 待恢复”,说明 clean ahead commit 已保留。两种情况都不得暗示需要重复业务提交、helper 写入或 Close。
98
98
  - validated auto-loop local completion 不渲染本模板,也不得被普通结果文案描述为任务记录 push 待恢复。
@@ -8,7 +8,7 @@ description: "核对 Trellis 任务 release.md,并生成任务上线操作单
8
8
  本 skill 有两个明确分离的模式:
9
9
 
10
10
  - 默认批次模式:核对并汇总一组任务,生成 `.trellis/releases/<release-file>.md`,写盘前需要用户确认。
11
- - 内部 `audit-current`:只核对当前活动任务,为 finish-work 维护单任务 `release.md`,不需要额外确认。
11
+ - `audit-current`:仅在用户明确要求核对当前活动任务时维护单任务 `release.md`,不进入批次流程。
12
12
 
13
13
  本 skill 只整理和核对上线事项,不执行上线、不提交代码、不推送代码。
14
14
 
@@ -28,7 +28,7 @@ description: "核对 Trellis 任务 release.md,并生成任务上线操作单
28
28
 
29
29
  ## 内部模式:audit-current
30
30
 
31
- `trellis-release audit-current` 只供 finish-work 或用户明确要求核对当前任务时使用。它不进入后续批次 Step 1-6。
31
+ `trellis-release audit-current` 只供用户明确要求核对当前任务时使用。它不进入后续批次 Step 1-6。
32
32
 
33
33
  ### 输入与证据
34
34
 
@@ -99,7 +99,7 @@ Verify according to task acceptance criteria.
99
99
  - 多个任务即将归档时仍只处理当前活动任务。
100
100
  - dirty path 只能作为风险证据,不能直接当作已完成上线内容。
101
101
 
102
- 返回结构化结果,供 finish-work 使用:
102
+ 返回结构化结果,供当前任务上线核对使用:
103
103
 
104
104
  ```json
105
105
  {
@@ -121,8 +121,7 @@ Verify according to task acceptance criteria.
121
121
 
122
122
  ```bash
123
123
  python3 ./.trellis/scripts/task.py current --source || true
124
- python3 ./.trellis/scripts/task.py list --mine || true
125
- python3 ./.trellis/scripts/task.py list-archive || true
124
+ python3 ./.trellis/scripts/task.py list --all --json || true
126
125
  ```
127
126
 
128
127
  根据用户输入确定任务集合:
@@ -14,7 +14,7 @@ description: "启动、恢复和推进 Trellis 自动任务循环。用于用户
14
14
  - 新 run 先 prepare 全部显式任务,Open Questions 全部收敛后才进入 running。running 中不再询问 route、planning 或普通 Check-All 停止边界。
15
15
  - 每个 action 完成后,必须用同名 `record --action ...` 精确回写;record 成功后立即 `next`。不得根据聊天摘要手改 runtime 或跳步。
16
16
  - `record` 返回 `status=retryable` 时不得运行 `next`,必须按返回指令在同一个 outstanding action 内纠正并重录;恢复诊断的 owner 见下方 Action 内恢复。
17
- - 本地提交是自动终点。不得 push、merge、release、deploy、finish-work 或 archive;runner 在 item 本地提交成功后把该任务写入本地完成态(`status=completed` + `completedAt`),归档仍需用户显式执行。
17
+ - 本地提交是自动终点。不得 push、merge、release 或 deploy;runner 在 item 本地提交成功后原子写入 `progress`、`status=completed`、`completedAt` 与确定性 `closeout`。`closed` 立即退出活跃视图,物理 GC 由后续 SessionStart 处理。
18
18
  - 任务顺序只决定稳定调度顺序,不隐含依赖。依赖必须通过 `--depends-on dependent=dependency` 明确传入或由 planning artifacts 明确声明。
19
19
  - 任务级失败只阻塞自身及显式依赖项;独立任务继续。fix/recheck、planning repair 与安全的 commit-only repair 各最多 3 轮,队列结束后不自动执行第二遍恢复扫描。
20
20
  - schema 1 runtime 继续按 runner 返回的旧 action 恢复,包括 outstanding `confirm_brief`;不要把旧 run 改写成 schema 2。
@@ -91,7 +91,7 @@ python3 ./.trellis/scripts/auto_loop.py decide \
91
91
  - 扩大权限或降低安全、隐私保护。
92
92
  - 公开 API 或数据格式破坏性变更。
93
93
  - 费用、生产环境或外部系统影响。
94
- - push、merge、release、deploy、finish-work、archive。
94
+ - push、merge、release、deploy、物理 GC 或其它外部副作用。
95
95
  - 明显改变任务目标或业务规则且仓库没有倾向证据。
96
96
  - `Open Questions` 中人工保留的任何选择。
97
97
 
@@ -169,13 +169,13 @@ python3 ./.trellis/scripts/auto_loop.py stop --reason "<原因>"
169
169
 
170
170
  ## Run 收尾交接
171
171
 
172
- 队列到达终态后必须向用户报告归档待办,不得只说 run 已完成。待办从终态 `next`、`record` 或 `status` 的 `summary.pending_archive` 读取:
172
+ 队列到达终态后必须根据 `next`、`record` 或 `status` 的摘要报告真实结果:
173
173
 
174
- - `tasks_awaiting_archive`:已写入本地完成态、等待用户显式归档的队列任务,逐项列出。
175
- - `parent_tasks_outside_queue`:队列任务声明的父任务中未纳入本次队列的部分。父任务只负责范围、依赖顺序和集成复核,不进入实现流水线,但必须排在全部子任务归档之后单独 finish-work。
176
- - run 结束后 pointer 已清除,`status` 走最近 run 列表;`pending_archive` 在该列表里同样可读。
174
+ - `completed_tasks`:逐项报告 commit 与 `close_result`;`closed` 无额外收尾动作,`blocked` 必须连同 `close_blockers` 交接。
175
+ - `blocked_tasks`:报告阻塞原因与可恢复入口,不把 run 终态说成全部成功。
176
+ - `parent_tasks_outside_queue`:仅说明未纳入本次队列的父任务;父任务仍按自身范围和验收条件独立推进。
177
177
 
178
- run 期间新建的后补子任务不在冻结队列内,runner 不追踪;发现时按普通任务单独推进,不得手改 runtime 塞进当前 run。归档动作本身始终由用户发起。
178
+ run 期间新建的后补子任务不在冻结队列内,runner 不追踪;发现时按普通任务单独推进,不得手改 runtime 塞进当前 run。物理 GC 不属于 run 收尾。
179
179
 
180
180
  ## 禁止事项
181
181
 
@@ -183,6 +183,6 @@ run 期间新建的后补子任务不在冻结队列内,runner 不追踪;发
183
183
  - 不覆盖、暂存或提交 protected-retained 文件;发生路径冲突只阻塞涉及任务。
184
184
  - 不用 `start --force` 代替 `retry-blocked`。
185
185
  - `record` 返回 `retryable` 后不得调用 `next` 或重新发起 action。
186
- - 不把 queue item completed 解释为任务已归档。
187
- - 不只报告 run 已完成而省略 `pending_archive` 待办,也不代用户执行 finish-work 或 archive。
186
+ - 不忽略 `close_result`:只有 `closed` 才表示确定性 Close 成功,`blocked` 必须保留结构化阻塞项。
187
+ - 不在 run 收尾执行物理 GC,也不为已关闭任务制造额外收尾命令。
188
188
  - 不在无人值守执行中替用户回答 Open Questions。
@@ -75,7 +75,7 @@ description: "Create a new trellis entry as command or skill for the target plat
75
75
 
76
76
  | 形态 | 何时选 | 触发方式 |
77
77
  |------|--------|---------|
78
- | **command** | 显式动作、高风险、需确认点(如 finish-work、continue) | 按目标平台的显式入口语法 |
78
+ | **command** | 显式动作、高风险、需确认点(如 continue、push) | 按目标平台的显式入口语法 |
79
79
  | **skill** | 自然语可触发、查询 / 分析 / 检查、低破坏性(如 check-all、extract-prd、visualize) | 自动匹配或显式调用,以目标平台能力为准 |
80
80
 
81
81
  决定不了时**推荐 skill**:自然语路由更灵活,显式斜杠仍可用。反过来,后悔做成 skill 想改 command 比较费事。
@@ -224,7 +224,7 @@ description: "<what> <when> <exclusion>"
224
224
 
225
225
  | 类型 | 前缀 | 示例 |
226
226
  |------|------|------|
227
- | 会话生命周期 | — | `continue` / `finish-work` |
227
+ | 会话恢复 | — | `continue` |
228
228
  | Pre-development | `before-` | `before-dev` |
229
229
  | Check | `check-` | `check-all` |
230
230
  | Verify | `verify-` | `verify-task` |
@@ -13,9 +13,9 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
13
13
  - 普通多仓计划可以包含本地确定性生成命令;生成后没有新增计划外文件时沿用同一次确认。
14
14
  - 普通模式把当前任务产物与更新后的 `task.json` 纳入同一次确认下的独立任务记录提交。
15
15
  - 用户明确要求“只提交不推送”时使用 `commit-only`。
16
- - auto-loop 可调用内部 `commit-only`,复用本 skill 的仓库发现、动态多仓计划、确定性本地生成、精确提交和失败保留能力;不再次确认、不 push,也不执行 Step 5 的任务进度写入、进度 commit 或 progress push。Auto-Loop runner 仍按自己的状态契约写入本地 `task.json.progress` 与本地完成态(`status=completed` + `completedAt`)。
16
+ - auto-loop 可调用内部 `commit-only`,复用本 skill 的仓库发现、动态多仓计划、确定性本地生成、精确提交和失败保留能力;不再次确认、不 push,也不执行 Step 5 的任务进度写入、进度 commit 或 progress push。Auto-Loop runner 在提交成功后原子写入本地 `task.json.progress`、`status=completed`、`completedAt` 与确定性 `closeout`。
17
17
  - 不发起、终止或解决分支合并;只允许普通模式完成已经开始、冲突已清零且索引完全可归属的 merge commit。
18
- - 不处理上线核对、任务归档、会话日志或自动任务队列状态。
18
+ - 不处理上线核对、物理 GC、会话日志或自动任务队列状态。
19
19
  - 不使用 `git add .`、`git add -A`,不要求工作区整体干净,也不提交计划外文件。
20
20
  - untracked 上下文只接受 `stage=push`;该状态只负责路由,不替代本 skill 的正式计划、确认和 Git 安全检查,也不生成任务进度提交。
21
21
 
@@ -25,7 +25,7 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
25
25
  | --- | --- | --- | --- |
26
26
  | 普通 | 展示最小计划并确认一次 | exact commit;已有 merge 就绪时完成双父提交;然后 push | 有活动任务时立即同步 |
27
27
  | 用户 `commit-only` | 展示最小计划并确认一次 | exact local commit | 跳过 |
28
- | auto-loop 内部 `commit-only` | 复用 auto-loop 预授权 | exact local commit chain | 由 Auto-Loop runner 写本地 progress 与本地完成态;本 skill 跳过 Step 5 |
28
+ | auto-loop 内部 `commit-only` | 复用 auto-loop 预授权 | exact local commit chain | 由 Auto-Loop runner 写本地 progress、完成态与 Close;本 skill 跳过 Step 5 |
29
29
 
30
30
  内部 `commit-only` 不接受超出当前任务证据、runner owned dirty 和 protected-retained 边界的文件,不执行远端推送或其他附加动作。安全条件不满足时返回失败,由调用方决定后续状态。
31
31
 
@@ -67,7 +67,7 @@ python3 ./.trellis/scripts/task_progress.py status --json || true
67
67
  git status --short --untracked-files=all -- <task-dir>
68
68
  ```
69
69
 
70
- 若 `task_progress.py status` 返回 `taskStatus=completed`,立即按需读取 `references/completed-task-recovery.md`,由该 reference 完成只读 preflight 并返回“恢复计划 / 显式 finish-work / 阻断”之一。在得到结果前不得进入普通业务规划,也不得重复已经成功的业务 Git 动作。reference 缺失、不可读或证据无法闭合时失败关闭;`task.json.progress` 只作诊断,不能单独选择恢复动作。
70
+ 若 `task_progress.py status` 返回 `taskStatus=completed`,立即按需读取 `references/completed-task-recovery.md`,由该 reference 完成只读 preflight 并返回“恢复计划 / Close 待解阻 / 无需动作 / 阻断”之一。在得到结果前不得进入普通业务规划,也不得重复已经成功的业务 Git 动作。reference 缺失、不可读或证据无法闭合时失败关闭;`task.json.progress` 只作诊断,不能单独选择恢复动作。
71
71
 
72
72
  不得把默认 `git status --short` 可能返回的 `?? <task-dir>/` 折叠目录当成 exact file、展示条目或 pathspec。无活动 task 时仍可提交相关代码,但不生成任务进度。untracked 命中时,结合当前请求、work summary 和实际 diff 判断业务 `planned` 文件归属,计划同时显示 work id;无法明确归属的文件只能保留或作为风险。存在活动 task 时,结合 `brief.md`、`implement.md`、当前 diff 与本轮执行范围生成一行语义进度;同时识别当前任务目录中已存在且可归属的 dirty/untracked 产物,供 Step 5 生成任务记录 exact files。不得从旧进度推断 Git 动作。
73
73
 
@@ -116,7 +116,7 @@ git log @{u}..HEAD --oneline 2>/dev/null || true
116
116
 
117
117
  上述优先级用于发现意图和执行顺序,不允许用文档覆盖当前仓库事实。命令入口、工作目录和输出路径必须由受版本控制内容验证;任务 artifacts、SOP/spec、脚本实际行为或 Git 关系互相冲突时失败关闭。
118
118
 
119
- 命令必须是受版本控制的稳定入口,并且本地、确定性、可重复、无外部副作用。工作目录和预期影响路径必须可审计;只有名称相似、mtime、目录邻近或惯例不足以执行。禁止任意 shell 字符串、管道、重定向、命令替换、push、release、deploy、archive、凭证和生产数据操作;证据不足时失败关闭。
119
+ 命令必须是受版本控制的稳定入口,并且本地、确定性、可重复、无外部副作用。工作目录和预期影响路径必须可审计;只有名称相似、mtime、目录邻近或惯例不足以执行。禁止任意 shell 字符串、管道、重定向、命令替换、push、release、deploy、物理 GC、凭证和生产数据操作;证据不足时失败关闭。
120
120
 
121
121
  `retained` 只是内部集合名。用户可见输出统一写“保留未提交的变更(dirty)”,按输出 reference 的阈值展示;内部始终保留 exact paths 和 Git 状态,分组摘要不得用于 pathspec 或替代校验。unknown ahead、branch/upstream 异常、归属不确定等真正需要处理的事项单独进入“风险”区;普通 retained dirty 不默认视为阻塞。
122
122
 
@@ -222,7 +222,7 @@ auto-loop 内部链失败时向调用方返回全部已完成仓库提交和失
222
222
  - 父仓分支、upstream 和冲突状态安全。
223
223
  - 推送不会携带无法归属的历史 ahead commits。
224
224
 
225
- 全部业务 commit/push 成功时,通过 helper 用同一份最终 progress 原子写入 `progress`、`status=completed` 与 `completedAt`:
225
+ 全部业务 commit/push 成功时,通过 helper 用同一份最终 progress 原子写入 `progress`、`status=completed`、`completedAt` 与确定性 `closeout`:
226
226
 
227
227
  ```bash
228
228
  python3 ./.trellis/scripts/task_progress.py write \
@@ -232,7 +232,7 @@ python3 ./.trellis/scripts/task_progress.py write \
232
232
  --json
233
233
  ```
234
234
 
235
- 部分成功时调用同一 helper,但不得携带 `--complete`,并写入精确恢复位置。用户 `commit-only`、auto-loop 内部 `commit-only` 和尚未发生任何成功业务 Git 动作的失败都不得由本 skill 请求 complete;auto-loop 的本地完成态由 Auto-Loop runner 自己写入,不经过本步骤。helper 写入失败时任务保持原状态,不得继续任务记录提交或报告完成。
235
+ helper 返回 `closeResult=closed|already-closed` 时任务立即退出所有活跃视图;返回 `closeResult=blocked` 时必须保留并展示 `closeBlockers`,但仍可提交已完成的任务记录。部分成功时调用同一 helper,但不得携带 `--complete`,并写入精确恢复位置。用户 `commit-only`、auto-loop 内部 `commit-only` 和尚未发生任何成功业务 Git 动作的失败都不得由本 skill 请求 complete;auto-loop 的本地完成态与 Close 由 Auto-Loop runner 自己写入,不经过本步骤。helper 写入失败时任务保持原状态,不得继续任务记录提交或报告完成。
236
236
 
237
237
  helper 成功后,只提交并推送首次确认的当前任务 exact files;该集合包含完成态 `task.json`,以及首次计划时已存在且可归属的当前任务 dirty/untracked 产物:
238
238
 
@@ -242,14 +242,14 @@ git commit --only -m "chore(task): update <task-name> progress" -- <current-task
242
242
  git push origin <current-branch>
243
243
  ```
244
244
 
245
- 该动作属于用户已确认的普通 push 计划,不增加第二次确认。提交后必须验证 commit 只包含首次确认的当前任务 exact files,且 `task.json` 已包含同一份最终 progress、`status=completed` 与 `completedAt`;其他任务和无关 dirty/staged 文件保持原状。
245
+ 该动作属于用户已确认的普通 push 计划,不增加第二次确认。提交后必须验证 commit 只包含首次确认的当前任务 exact files,且 `task.json` 已包含同一份最终 progress、`status=completed`、`completedAt` 与同次 Close 结果;其他任务和无关 dirty/staged 文件保持原状。
246
246
 
247
247
  失败时保留真实现场,不 reset、amend、revert 或制造 dirty 回滚:
248
248
 
249
249
  - helper 失败:任务保持 `in_progress`,不得创建任务记录 commit。
250
250
  - helper 成功但任务记录 commit 失败:保留本地 `completed` 与当前任务 exact dirty,后续按 Step 1 的任务记录 commit 恢复路径重新验证和确认;不得重复业务提交或 helper 写入。
251
251
  - 任务记录 commit 成功但 push 失败:任务目录应为 clean,并保留可归属的 ahead commit;后续只重试该 commit 的 push,不重复业务提交、helper 写入或任务记录 commit。
252
- - 任务记录 push 成功:本任务产生的当前任务目录变更必须 clean;不得再写入第二份预归档完成态。
252
+ - 任务记录 push 成功:本任务产生的当前任务目录变更必须 clean;不得再次写入完成态或 Close。
253
253
 
254
254
  任何恢复都必须验证当前分支、upstream、HEAD、`@{u}..HEAD`、任务记录 commit message 与 exact file set,以及 `task.json` 的最终完成态。无法证明归属时停止,不把未知 ahead 或 dirty 当作可恢复任务记录。
255
255
 
@@ -264,7 +264,7 @@ reference 缺失、无法读取或缺少对应章节时停止并报告 `阻塞`
264
264
  ## 禁止事项
265
265
 
266
266
  - 扩大到计划外文件或要求清理无关工作区。
267
- - 把普通 push 中可归属当前活动任务的规划产物列为 retained,并以“finish-work 归档时再入库”为由延后首次记录。
267
+ - 把普通 push 中可归属当前活动任务的规划产物列为 retained,并以“之后再整理”为由延后首次记录。
268
268
  - 执行首次计划未展示的生成命令,或生成计划外文件后仍沿用旧确认。
269
269
  - 用任务进度决定是否推送代码。
270
270
  - 在本 skill 内发起、终止、解决冲突或改变分支合并目标;只允许完成已就绪的 merge commit。
@@ -1,19 +1,20 @@
1
1
  # Completed Task Recovery
2
2
 
3
- 本 reference 只在 `task_progress.py status` 返回 `taskStatus=completed` 时加载。它是普通任务记录发布恢复的唯一详细语义 owner;`trellis-continue`、completed workflow-state 和 `trellis-finish-work` 不复制本分支矩阵。
3
+ 本 reference 只在 `task_progress.py status` 返回 `taskStatus=completed` 时加载。它是普通任务记录发布恢复与 Close 待解阻的唯一详细语义 owner;`trellis-continue` 和 completed workflow-state 不复制本分支矩阵。
4
4
 
5
5
  ## Evidence
6
6
 
7
- 固定当前任务路径与 `task.json`,读取文件级任务状态、当前分支、upstream、`HEAD`、`@{u}..HEAD` 的提交消息与文件集合,以及 `python3 ./.trellis/scripts/auto_loop.py status --verbose`。所有恢复都必须验证 exact task、最终 progress、`status=completed`、分支和提交归属;缺失 `completedAt` 只记为待归档补写的审计元数据,不单独阻断恢复。progress 文本不能替代 runtime 或 Git 证据。
7
+ 固定当前任务路径与 `task.json`,读取文件级任务状态、`closeout`、当前分支、upstream、`HEAD`、`@{u}..HEAD` 的提交消息与文件集合,以及 `python3 ./.trellis/scripts/auto_loop.py status --verbose`。所有恢复都必须验证 exact task、最终 progress、`status=completed`、Close 状态、分支和提交归属;progress 文本不能替代 runtime 或 Git 证据。
8
8
 
9
9
  ## Outcomes
10
10
 
11
11
  按以下优先级只返回一个结果:
12
12
 
13
- 1. **显式 finish-work,auto-loop**:健康的终态或 recent auto-loop run 的 `pending_archive.tasks_awaiting_archive` 精确包含当前任务,记录的本地提交仍可验证,且任务 dirty 仅为 runner 在提交后写入的 `<task-dir>/task.json` progress/lifecycle bookkeeping。停止 Push,不得把该本地完成态改成普通远端 push。
14
- 2. **任务记录 commit + push 恢复计划**:没有有效 auto-loop handoff;当前任务 exact files 仍 dirty,`task.json` 已包含合法最终 progress 与 `status=completed`,且文件集合可由首次确认或重新确认闭合。缺失 `completedAt` 时不得重复 helper 写入,由后续 archive 补写;不得重复业务提交。
13
+ 1. **Auto-loop 本地完成,无需 Push**:健康的终态或 recent auto-loop run 精确包含当前任务,记录的本地提交仍可验证,且任务 dirty 仅为 runner 在提交后写入的 `<task-dir>/task.json` progress/lifecycle bookkeeping。停止 Push;`closeout.status=closed` 时无需其它生命周期动作。
14
+ 2. **任务记录 commit + push 恢复计划**:当前任务 exact files 仍 dirty,`task.json` 已包含合法最终 progress 与 `status=completed`,且文件集合可由首次确认或重新确认闭合。不得重复业务提交或 helper 写入;即使 Close 已成功,也只恢复已确认的任务记录发布。
15
15
  3. **任务记录 push-only 恢复计划**:当前任务目录 clean;upstream 存在;`@{u}..HEAD` 中存在消息、exact file set 和完成态均可归属的任务记录 commit。只推送该已存在提交,不创建新 commit。
16
- 4. **显式 finish-work,普通已同步**:当前任务目录 clean;upstream 存在;`@{u}..HEAD` 没有提交修改当前任务。普通任务记录已经同步,不再执行 Push。
17
- 5. **阻断**:runtime 与 Git 矛盾、auto-loop marker 无健康 handoff、缺少普通路径 upstream、任务 dirty 超出 exact files、未知 ahead 修改任务,或提交消息/文件集合/分支无法闭合。报告具体证据缺口,不 push、不归档,也不猜测完成来源。
16
+ 4. **Close 待解阻**:任务记录已经同步,`closeout.status=blocked|pending`,且 blockers 证据一致。报告结构化 blockers;条件解决后只重试 `task.py close <task>`,持久化语义 blocker 由所属 owner 完成后追加 `--resolve-blocker <code>`,不重复业务 Git 动作或 progress 写入。
17
+ 5. **无需动作**:任务记录已经同步且 `closeout.status=closed`。任务已退出活跃视图,物理 GC 由后续 SessionStart 在三天阈值后处理。
18
+ 6. **阻断**:runtime 与 Git 矛盾、auto-loop marker 无健康完成证据、缺少普通路径 upstream、任务 dirty 超出 exact files、未知 ahead 修改任务,或提交消息/文件集合/分支无法闭合。报告具体证据缺口,不 push、不 Close,也不猜测完成来源。
18
19
 
19
20
  恢复计划仍使用 `trellis-push` 的既有一次确认、执行前漂移检查和结果模板。这里只决定完成态恢复范围,不新增状态、持久化字段或自动确认。
@@ -42,7 +42,7 @@
42
42
  - **仓库**:<repository-name> · 分支:`<branch>` -> `<upstream>`
43
43
  - **计划提交**:<当前任务 exact files 或分组摘要>
44
44
  - **进度**:completed=<...> | partial=<...> | next=<...>
45
- - **执行**:<business commit/push -> `task_progress.py write --complete` -> task-record commit -> task-record push>
45
+ - **执行**:<business commit/push -> `task_progress.py write --complete`(含 Close) -> task-record commit -> task-record push>
46
46
 
47
47
  确认执行请回复 `确认`。可调整:`只提交`、`修改 message`、`展开文件`、`展开保留变更`。
48
48
  ```
@@ -60,7 +60,7 @@
60
60
  - 计划的完成链证据始终显示当前状态,但不重复 Check-All 报告或 Spec review 正文;`未运行`、`已失效`、任一未处置 `CHK-*` / `FBK-*`、blocked、部分验证或 `needs-review` 同时计入风险区。未变化且接受仍有效的问题只在完成链证据中汇总数量,不再进入风险区;内部保留 ID、严重度、影响与接受依据,用户要求详情时再展开。接受失效或无法验证时按实际状态进入风险区并说明变化或证据缺口,不擅自延续接受。`[上线后验证]` 作为非阻断风险逐项保留动作、环境/责任边界和预期结果,不改变 Check-All 状态,并注明由既有 `trellis-release` / `release.md` 流程承接。
61
61
  - 顶部“风险 <N>”只统计本次风险区需展开的事项,不包含已经单独汇总的有效已接受问题;不重复计数。同一问题的有效性按 Check-All reporting reference 核对,不因无关 diff 自动失效,也不把展示去重当作已修复或零风险。
62
62
  - 无活动 task、untracked 或 `commit-only` 时省略进度动作。
63
- - 不重复展示检查结果、规范复核、归档或其他阶段的详细信息。
63
+ - 不重复展示检查结果、规范复核、物理 GC 或其他阶段的详细信息。
64
64
  - 生成前无法确定的内容和增删行写“生成后计算”,不得填预测值。
65
65
 
66
66
  ## 结果模板
@@ -73,7 +73,7 @@
73
73
  [推送成功 / 仅本地提交成功 / 部分完成 / 失败]
74
74
 
75
75
  - **<repository-name>**:`<branch> → <upstream>` · `<short-hash[, short-hash...]>` · <已推送 / 仅本地 / 失败 / 未执行>
76
- - **任务记录**:`<task-record-hash>` · <completed 已同步 / partial 已同步,仍为 in_progress / commit 待恢复 / push 待恢复 / 同步失败>
76
+ - **任务记录**:`<task-record-hash>` · <completed + Close 已同步 / completed 但 Close blocked / partial 已同步,仍为 in_progress / commit 待恢复 / push 待恢复 / 同步失败>
77
77
  - **保留未提交的变更(dirty)**:<每仓数量与实际核对结论>
78
78
 
79
79
  ### 失败与恢复(仅部分完成或失败时显示)
@@ -94,5 +94,5 @@
94
94
  - 部分完成时必须明确列出已成功仓库、失败仓库/步骤、当前分支和下一恢复动作。业务结果与 progress sync 状态不得合并成一个模糊结论。
95
95
  - 普通成功结果必须确认本任务产生的当前任务目录变更 clean。其它 retained dirty(含计划外 staged)仍逐项核验,已核对保持原状时每仓只报告数量与结论,不重复清单。异常或未核验项列出路径、实际状态和处理情况,不得笼统声称全部保持原状;用户要求详情时再展示实际文件、message、命令或进度,展开文件仍沿用共用规则。
96
96
  - Git 成功不消除现有风险;成功结果省略未变化且接受仍有效的问题,不重复接受数量或原影响说明。结果的“风险”区保留新增、变化、接受失效或无法验证的事项,以及仍适用的其它完成链风险与 `[上线后验证]`;用户要求详情时再展开原问题与处置。
97
- - helper 成功但任务记录 commit 失败时,结果写“任务记录 commit 待恢复”,说明本地 `completed` 与 exact task dirty 已保留;任务记录 commit 成功但 push 失败时写“任务记录 push 待恢复”,说明 clean ahead commit 已保留。两种情况都不得暗示需要重复业务提交或 helper 写入。
97
+ - helper 成功但任务记录 commit 失败时,结果写“任务记录 commit 待恢复”,说明本地 `completed`、Close 结果与 exact task dirty 已保留;任务记录 commit 成功但 push 失败时写“任务记录 push 待恢复”,说明 clean ahead commit 已保留。两种情况都不得暗示需要重复业务提交、helper 写入或 Close。
98
98
  - validated auto-loop local completion 不渲染本模板,也不得被普通结果文案描述为任务记录 push 待恢复。
@@ -8,7 +8,7 @@ description: "核对 Trellis 任务 release.md,并生成任务上线操作单
8
8
  本 skill 有两个明确分离的模式:
9
9
 
10
10
  - 默认批次模式:核对并汇总一组任务,生成 `.trellis/releases/<release-file>.md`,写盘前需要用户确认。
11
- - 内部 `audit-current`:只核对当前活动任务,为 finish-work 维护单任务 `release.md`,不需要额外确认。
11
+ - `audit-current`:仅在用户明确要求核对当前活动任务时维护单任务 `release.md`,不进入批次流程。
12
12
 
13
13
  本 skill 只整理和核对上线事项,不执行上线、不提交代码、不推送代码。
14
14
 
@@ -28,7 +28,7 @@ description: "核对 Trellis 任务 release.md,并生成任务上线操作单
28
28
 
29
29
  ## 内部模式:audit-current
30
30
 
31
- `trellis-release audit-current` 只供 finish-work 或用户明确要求核对当前任务时使用。它不进入后续批次 Step 1-6。
31
+ `trellis-release audit-current` 只供用户明确要求核对当前任务时使用。它不进入后续批次 Step 1-6。
32
32
 
33
33
  ### 输入与证据
34
34
 
@@ -99,7 +99,7 @@ Verify according to task acceptance criteria.
99
99
  - 多个任务即将归档时仍只处理当前活动任务。
100
100
  - dirty path 只能作为风险证据,不能直接当作已完成上线内容。
101
101
 
102
- 返回结构化结果,供 finish-work 使用:
102
+ 返回结构化结果,供当前任务上线核对使用:
103
103
 
104
104
  ```json
105
105
  {
@@ -121,8 +121,7 @@ Verify according to task acceptance criteria.
121
121
 
122
122
  ```bash
123
123
  python3 ./.trellis/scripts/task.py current --source || true
124
- python3 ./.trellis/scripts/task.py list --mine || true
125
- python3 ./.trellis/scripts/task.py list-archive || true
124
+ python3 ./.trellis/scripts/task.py list --all --json || true
126
125
  ```
127
126
 
128
127
  根据用户输入确定任务集合:
@@ -5,6 +5,7 @@
5
5
  "installMode": "full-or-selected",
6
6
  "patches": [
7
7
  "workflow/hub",
8
+ "workflow/sessionstart-context-trim",
8
9
  "workflow/phase-ownership",
9
10
  "workflow/task-brief-review",
10
11
  "workflow/state-no-task",
@@ -26,6 +27,7 @@
26
27
  "hooks/claude-session-start/no-task-routing",
27
28
  "hooks/claude-session-start/missing-task-routing",
28
29
  "hooks/session-start/pre-check-hold",
30
+ "hooks/session-start/context-trim",
29
31
  "agents/untracked-context",
30
32
  "skills/trellis-start/no-task-routing",
31
33
  "skills/trellis-before-dev/project-knowledge-discovery",
@@ -3,6 +3,7 @@
3
3
  "id": "task-reference-contract",
4
4
  "aliases": [
5
5
  "decision-log",
6
+ "task-lifecycle",
6
7
  "task-progress",
7
8
  "progress",
8
9
  "push-snapshot",
@@ -10,9 +11,6 @@
10
11
  "trellis-auto-loop",
11
12
  "auto-loop",
12
13
  "auto-loop-runner",
13
- "trellis-finish-work",
14
- "finish-work",
15
- "finish-work-enhancement",
16
14
  "trellis-continue",
17
15
  "continue",
18
16
  "progress-recovery",
@@ -20,5 +18,8 @@
20
18
  "push"
21
19
  ],
22
20
  "installMode": "full-or-selected",
23
- "patches": ["scripts/task-reference-resolution"]
21
+ "patches": [
22
+ "scripts/task-reference-resolution",
23
+ "scripts/task-closeout-lifecycle"
24
+ ]
24
25
  }