flower-trellis 0.6.0-beta.0 → 0.6.0-beta.2
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.
- package/enhancements/0.6/.agents/skills/trellis-check-all/SKILL.md +1 -1
- package/enhancements/0.6/.agents/skills/trellis-check-all/references/depth-routing.md +2 -2
- package/enhancements/0.6/.agents/skills/trellis-check-all/references/full-profile.md +1 -1
- package/enhancements/0.6/.agents/skills/trellis-check-all/references/reporting-and-disposition.md +1 -1
- package/enhancements/0.6/.agents/skills/trellis-push/SKILL.md +3 -3
- package/enhancements/0.6/.agents/skills/trellis-route/SKILL.md +1 -1
- package/enhancements/0.6/.claude/skills/trellis-check-all/SKILL.md +1 -1
- package/enhancements/0.6/.claude/skills/trellis-check-all/references/depth-routing.md +2 -2
- package/enhancements/0.6/.claude/skills/trellis-check-all/references/full-profile.md +1 -1
- package/enhancements/0.6/.claude/skills/trellis-check-all/references/reporting-and-disposition.md +1 -1
- package/enhancements/0.6/.claude/skills/trellis-push/SKILL.md +3 -3
- package/enhancements/0.6/.claude/skills/trellis-route/SKILL.md +1 -1
- package/enhancements/0.6/overrides/conflicts.json +9 -7
- package/enhancements/0.6/overrides/patches/agents/untracked-context/codex-content.md +1 -1
- package/enhancements/0.6/overrides/patches/agents/untracked-context/markdown-content.md +1 -1
- package/enhancements/0.6/overrides/patches/hooks/inject-workflow-state/shared-runtime/main-content.py +3 -2
- package/enhancements/0.6/overrides/patches/hooks/inject-workflow-state/shared-runtime/untracked-helper-content.py +0 -1
- package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/owner-routing-content.md +2 -2
- package/enhancements/0.6/overrides/patches/skills/trellis-meta/managed-workflow-owners/workflow-change-map-content.md +1 -1
- package/enhancements/0.6/overrides/patches/skills/trellis-start/no-task-routing/content.md +1 -1
- package/enhancements/0.6/overrides/patches/skills/trellis-update-spec/autonomous-evaluation/content.md +2 -2
- package/enhancements/0.6/overrides/patches/workflow/hub/content.md +2 -2
- package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-2-check-content.md +1 -1
- package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-2-implement-content.md +2 -2
- package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-3-commit-content.md +1 -1
- package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-3-update-spec-content.md +1 -1
- package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/customizing-trellis-managed-baseline.md +1 -1
- package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/runtime-reference-content.md +1 -1
- package/enhancements/0.6/overrides/patches/workflow/runtime-contract-reference/state-contract-comment-content.md +2 -2
- package/enhancements/0.6/overrides/patches/workflow/state-no-task/content.md +1 -1
- package/enhancements/0.6/overrides/patches/workflow/state-untracked/content.md +18 -6
- package/enhancements/0.6/scripts/pre_check_state.py +2 -2
- package/enhancements/0.6/scripts/task_intent.py +6 -7
- package/enhancements/0.6/scripts/untracked_flow.py +52 -370
- package/enhancements/MANIFEST.json +2 -2
- package/package.json +3 -3
- package/src/builtin-plugins/skill-garden/content-adapter.js +55 -3
- package/src/builtin-plugins/skill-garden/runtime.js +37 -5
- package/src/commands/update.js +22 -1
- package/src/lib/copy-scripts.js +0 -8
|
@@ -18,7 +18,7 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
|
|
|
18
18
|
4. 全程收集普通问题到 `CHK-*`,收集低风险文档漂移到 `DOC-*`。
|
|
19
19
|
5. 在最终报告前处理允许自动修复的文档漂移,并把修复内容展示在报告里。
|
|
20
20
|
6. 根据 interactive / validated auto-loop 边界输出下一步或完成 runner `record + next`。
|
|
21
|
-
7. untracked
|
|
21
|
+
7. untracked helper 只保存流程游标:findings 或新编辑设回 `implement`;只有严格通过且 disposition 确认继续时才 `advance --stage spec`。
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -37,9 +37,9 @@ git log --oneline -10
|
|
|
37
37
|
|
|
38
38
|
没有当前 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`:
|
|
39
39
|
|
|
40
|
-
- `hit`:读取 work id、summary
|
|
40
|
+
- `hit`:读取 work id、summary 和 stage;三件套实现维度标记 `N/A`,其余维度仍对实际 diff、相关 spec 和本轮可验证证据负责。
|
|
41
41
|
- `miss`:仅当用户明确要求检查一个无状态的已知 diff 时继续,并把工作上下文缺失列为风险;否则停止并回到 Request Triage。
|
|
42
|
-
- `error
|
|
42
|
+
- `error`:按损坏状态阻塞报告,禁止用聊天摘要恢复或覆盖游标。
|
|
43
43
|
|
|
44
44
|
untracked 检查必须处于 `stage=check`,且只读取个人 check 偏好,不创建 task-scoped route decision。
|
|
45
45
|
|
|
@@ -6,7 +6,7 @@ Full 是完整验收映射和全影响面审查。只有 `check_profile.effectiv
|
|
|
6
6
|
|
|
7
7
|
## Step 1:对照规划三件套检查实现
|
|
8
8
|
|
|
9
|
-
untracked 上下文没有 task artifacts,本 Step 标记 `N/A`;不得把 summary、
|
|
9
|
+
untracked 上下文没有 task artifacts,本 Step 标记 `N/A`;不得把 summary、stage 或聊天记录当成 PRD。仍须完整执行 Step 2 与 Step 3,并对实际 diff、相关 spec、当前验证证据和多仓分发边界负责。
|
|
10
10
|
|
|
11
11
|
### 1.1 验收依据
|
|
12
12
|
|
package/enhancements/0.6/.agents/skills/trellis-check-all/references/reporting-and-disposition.md
CHANGED
|
@@ -125,7 +125,7 @@ interactive 模式完成所有可继续检查和允许的 `DOC-*` 自动修复
|
|
|
125
125
|
|
|
126
126
|
检查通过后的动作由下方 `Interactive Post-Check Stop Gate` 判断:普通交互停止等待,符合 direct Git 严格通过条件时同轮进入 Phase 3.3 `trellis-update-spec`,再到 Phase 3.4 `trellis-push`。仍有 `CHK-*` 时停留在修复/重检循环。
|
|
127
127
|
|
|
128
|
-
untracked
|
|
128
|
+
untracked helper 不记录 Check-All 证据。普通严格通过但尚未继续时保持 `stage=check`;只有 direct Git 同轮继续或用户后续明确继续时才 `advance --stage spec`。有 findings、部分验证、阻塞或报告后的新编辑时,先 `advance --stage implement` 再返回实现。
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
@@ -17,7 +17,7 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
|
|
|
17
17
|
- 不发起、终止或解决分支合并;只允许普通模式完成已经开始、冲突已清零且索引完全可归属的 merge commit。
|
|
18
18
|
- 不处理上线核对、任务归档、会话日志或自动任务队列状态。
|
|
19
19
|
- 不使用 `git add .`、`git add -A`,不要求工作区整体干净,也不提交计划外文件。
|
|
20
|
-
- untracked 上下文只接受 `stage=push
|
|
20
|
+
- untracked 上下文只接受 `stage=push`;该状态只负责路由,不替代本 skill 的正式计划、确认和 Git 安全检查,也不生成任务进度提交。
|
|
21
21
|
|
|
22
22
|
## 模式
|
|
23
23
|
|
|
@@ -40,7 +40,7 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
|
|
|
40
40
|
|
|
41
41
|
auto-loop 内部 `commit-only` 已由 runner 的 `run_check_all -> run_spec_update -> commit_only` 状态机和预授权保证顺序,因此不重复记录或判断本交互证据。
|
|
42
42
|
|
|
43
|
-
没有活动 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`。命中 untracked
|
|
43
|
+
没有活动 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`。命中 untracked 后,记录 work id、summary 和 stage,并要求 `stage=push`;完成链证据仍从当前 Check-All / Update-Spec 结果与实际 diff 获取。`miss` 才按既有“无活动任务”普通 Git 路径处理;损坏状态停止,不从摘要猜测。游标命中不表示 Push 已计划、已确认或已执行。
|
|
44
44
|
|
|
45
45
|
## Step 1:发现仓库与任务
|
|
46
46
|
|
|
@@ -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
|
-
不得把默认 `git status --short` 可能返回的 `?? <task-dir>/` 折叠目录当成 exact file、展示条目或 pathspec。无活动 task 时仍可提交相关代码,但不生成任务进度。untracked
|
|
70
|
+
不得把默认 `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 动作。
|
|
71
71
|
|
|
72
72
|
## Step 2:预检与文件归属
|
|
73
73
|
|
|
@@ -212,7 +212,7 @@ dispatch prompt 第一行始终遵守当前 task/untracked 契约。agent 文件
|
|
|
212
212
|
|
|
213
213
|
### Untracked Subagent Dispatch 契约
|
|
214
214
|
|
|
215
|
-
untracked 的 implement/check subagent prompt 第一行固定为 `Untracked work: <work-id
|
|
215
|
+
untracked 的 implement/check subagent prompt 第一行固定为 `Untracked work: <work-id>`,并包含事项摘要、当前 stage、实际 diff、相关 spec 路径、已有验证上下文和本轮明确职责。helper 只提供流程游标,不提供 scope、baseline、fingerprint 或 owner evidence。不得写 `Active task:`,不得要求 `prd.md`、`implement.jsonl` 或 `check.jsonl`。agent 必须直接执行,不得递归 dispatch implement/check agent。
|
|
216
216
|
|
|
217
217
|
### Subagent Check-All Dispatch 契约
|
|
218
218
|
|
|
@@ -18,7 +18,7 @@ description: "统一 Check-All 入口:确认范围与运行上下文,按 req
|
|
|
18
18
|
4. 全程收集普通问题到 `CHK-*`,收集低风险文档漂移到 `DOC-*`。
|
|
19
19
|
5. 在最终报告前处理允许自动修复的文档漂移,并把修复内容展示在报告里。
|
|
20
20
|
6. 根据 interactive / validated auto-loop 边界输出下一步或完成 runner `record + next`。
|
|
21
|
-
7. untracked
|
|
21
|
+
7. untracked helper 只保存流程游标:findings 或新编辑设回 `implement`;只有严格通过且 disposition 确认继续时才 `advance --stage spec`。
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
@@ -37,9 +37,9 @@ git log --oneline -10
|
|
|
37
37
|
|
|
38
38
|
没有当前 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`:
|
|
39
39
|
|
|
40
|
-
- `hit`:读取 work id、summary
|
|
40
|
+
- `hit`:读取 work id、summary 和 stage;三件套实现维度标记 `N/A`,其余维度仍对实际 diff、相关 spec 和本轮可验证证据负责。
|
|
41
41
|
- `miss`:仅当用户明确要求检查一个无状态的已知 diff 时继续,并把工作上下文缺失列为风险;否则停止并回到 Request Triage。
|
|
42
|
-
- `error
|
|
42
|
+
- `error`:按损坏状态阻塞报告,禁止用聊天摘要恢复或覆盖游标。
|
|
43
43
|
|
|
44
44
|
untracked 检查必须处于 `stage=check`,且只读取个人 check 偏好,不创建 task-scoped route decision。
|
|
45
45
|
|
|
@@ -6,7 +6,7 @@ Full 是完整验收映射和全影响面审查。只有 `check_profile.effectiv
|
|
|
6
6
|
|
|
7
7
|
## Step 1:对照规划三件套检查实现
|
|
8
8
|
|
|
9
|
-
untracked 上下文没有 task artifacts,本 Step 标记 `N/A`;不得把 summary、
|
|
9
|
+
untracked 上下文没有 task artifacts,本 Step 标记 `N/A`;不得把 summary、stage 或聊天记录当成 PRD。仍须完整执行 Step 2 与 Step 3,并对实际 diff、相关 spec、当前验证证据和多仓分发边界负责。
|
|
10
10
|
|
|
11
11
|
### 1.1 验收依据
|
|
12
12
|
|
package/enhancements/0.6/.claude/skills/trellis-check-all/references/reporting-and-disposition.md
CHANGED
|
@@ -125,7 +125,7 @@ interactive 模式完成所有可继续检查和允许的 `DOC-*` 自动修复
|
|
|
125
125
|
|
|
126
126
|
检查通过后的动作由下方 `Interactive Post-Check Stop Gate` 判断:普通交互停止等待,符合 direct Git 严格通过条件时同轮进入 Phase 3.3 `trellis-update-spec`,再到 Phase 3.4 `trellis-push`。仍有 `CHK-*` 时停留在修复/重检循环。
|
|
127
127
|
|
|
128
|
-
untracked
|
|
128
|
+
untracked helper 不记录 Check-All 证据。普通严格通过但尚未继续时保持 `stage=check`;只有 direct Git 同轮继续或用户后续明确继续时才 `advance --stage spec`。有 findings、部分验证、阻塞或报告后的新编辑时,先 `advance --stage implement` 再返回实现。
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
@@ -17,7 +17,7 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
|
|
|
17
17
|
- 不发起、终止或解决分支合并;只允许普通模式完成已经开始、冲突已清零且索引完全可归属的 merge commit。
|
|
18
18
|
- 不处理上线核对、任务归档、会话日志或自动任务队列状态。
|
|
19
19
|
- 不使用 `git add .`、`git add -A`,不要求工作区整体干净,也不提交计划外文件。
|
|
20
|
-
- untracked 上下文只接受 `stage=push
|
|
20
|
+
- untracked 上下文只接受 `stage=push`;该状态只负责路由,不替代本 skill 的正式计划、确认和 Git 安全检查,也不生成任务进度提交。
|
|
21
21
|
|
|
22
22
|
## 模式
|
|
23
23
|
|
|
@@ -40,7 +40,7 @@ description: "按确认的精确文件范围提交普通变更或完成已就绪
|
|
|
40
40
|
|
|
41
41
|
auto-loop 内部 `commit-only` 已由 runner 的 `run_check_all -> run_spec_update -> commit_only` 状态机和预授权保证顺序,因此不重复记录或判断本交互证据。
|
|
42
42
|
|
|
43
|
-
没有活动 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`。命中 untracked
|
|
43
|
+
没有活动 task 时运行 `python3 ./.trellis/scripts/untracked_flow.py status --verbose`。命中 untracked 后,记录 work id、summary 和 stage,并要求 `stage=push`;完成链证据仍从当前 Check-All / Update-Spec 结果与实际 diff 获取。`miss` 才按既有“无活动任务”普通 Git 路径处理;损坏状态停止,不从摘要猜测。游标命中不表示 Push 已计划、已确认或已执行。
|
|
44
44
|
|
|
45
45
|
## Step 1:发现仓库与任务
|
|
46
46
|
|
|
@@ -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
|
-
不得把默认 `git status --short` 可能返回的 `?? <task-dir>/` 折叠目录当成 exact file、展示条目或 pathspec。无活动 task 时仍可提交相关代码,但不生成任务进度。untracked
|
|
70
|
+
不得把默认 `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 动作。
|
|
71
71
|
|
|
72
72
|
## Step 2:预检与文件归属
|
|
73
73
|
|
|
@@ -212,7 +212,7 @@ dispatch prompt 第一行始终遵守当前 task/untracked 契约。agent 文件
|
|
|
212
212
|
|
|
213
213
|
### Untracked Subagent Dispatch 契约
|
|
214
214
|
|
|
215
|
-
untracked 的 implement/check subagent prompt 第一行固定为 `Untracked work: <work-id
|
|
215
|
+
untracked 的 implement/check subagent prompt 第一行固定为 `Untracked work: <work-id>`,并包含事项摘要、当前 stage、实际 diff、相关 spec 路径、已有验证上下文和本轮明确职责。helper 只提供流程游标,不提供 scope、baseline、fingerprint 或 owner evidence。不得写 `Active task:`,不得要求 `prd.md`、`implement.jsonl` 或 `check.jsonl`。agent 必须直接执行,不得递归 dispatch implement/check agent。
|
|
216
216
|
|
|
217
217
|
### Subagent Check-All Dispatch 契约
|
|
218
218
|
|
|
@@ -375,8 +375,8 @@
|
|
|
375
375
|
"| Request Intent Routing | `Request Triage` + `trellis-start` | `task_intent.py` |",
|
|
376
376
|
"| Project Knowledge Discovery | `Request Triage` | `spec_router.py` |",
|
|
377
377
|
"| Active Task Scope Guard | `Request Triage` | `task_intent.py` scope safety |",
|
|
378
|
-
"| Untracked Work Completion Chain | `workflow-state:untracked
|
|
379
|
-
"| Untracked Task Adoption | `workflow-state:untracked
|
|
378
|
+
"| Untracked Work Completion Chain | `workflow-state:untracked*` + Phase 2/3 owners | `untracked_flow.py` |",
|
|
379
|
+
"| Untracked Task Adoption | `workflow-state:untracked*` + `trellis-brainstorm` | `task_intent.py adopt` |",
|
|
380
380
|
"| Routing Gate | Phase 2 + `trellis-route` | `route_state.py` |",
|
|
381
381
|
"| Auto-Loop Return Gate | `trellis-check-all` + `trellis-auto-loop` | `auto_loop.py record/next` |",
|
|
382
382
|
"| Code Commit Confirmation Gate | Phase 3.4 + `trellis-push` | exact Git safety checks |",
|
|
@@ -480,9 +480,11 @@
|
|
|
480
480
|
"A same-item hit resumes the existing state",
|
|
481
481
|
"`active-work-conflict` blocks unrelated code writes until the current item is completed, explicitly abandoned, or adopted into a task",
|
|
482
482
|
"Unrelated read-only requests may continue without mutating the state.",
|
|
483
|
-
"
|
|
484
|
-
"
|
|
485
|
-
"
|
|
483
|
+
"A successful `begin` starts at `stage=implement`; the helper is a workflow cursor",
|
|
484
|
+
"[workflow-state:untracked_check]",
|
|
485
|
+
"[workflow-state:untracked_spec]",
|
|
486
|
+
"[workflow-state:untracked_push]",
|
|
487
|
+
"`stage=push` is only a route cursor",
|
|
486
488
|
"python3 ./.trellis/scripts/task_intent.py adopt \"<title>\" --slug <slug>",
|
|
487
489
|
"adoption continues through planning artifacts, Brief review, and `task.py start`, and never authorizes immediate implementation",
|
|
488
490
|
"task_intent.py discard --task <current-task>"
|
|
@@ -1207,7 +1209,7 @@
|
|
|
1207
1209
|
"<!-- BEGIN skill-garden patch trellis-meta-managed-workflow-source v0.6 -->",
|
|
1208
1210
|
"<!-- BEGIN skill-garden patch trellis-meta-managed-owner-routing v0.6 -->\n## Skill Routing",
|
|
1209
1211
|
"Do not choose implementation or checking behavior from a static platform-capability split.",
|
|
1210
|
-
"| Untracked task adoption | `workflow-state:untracked
|
|
1212
|
+
"| Untracked task adoption | `workflow-state:untracked*`, `trellis-brainstorm`, and `task_intent.py adopt` |",
|
|
1211
1213
|
"| Automatic task loop and return gate | `trellis-auto-loop`",
|
|
1212
1214
|
"| Commit/push safety and completion activation | `trellis-push` and `task_progress.py` |",
|
|
1213
1215
|
"| Cross-session task progress discovery and recovery | `trellis-continue` owns the recovery decision, `task_progress.py` owns candidate evidence and completed-task reopen, and `task.py start` with `.trellis/scripts/common/active_task.py` owns explicit session binding |",
|
|
@@ -1236,7 +1238,7 @@
|
|
|
1236
1238
|
"<!-- BEGIN skill-garden patch trellis-meta-managed-workflow-source v0.6 -->",
|
|
1237
1239
|
"<!-- BEGIN skill-garden patch trellis-meta-managed-owner-routing v0.6 -->\n## Skill Routing",
|
|
1238
1240
|
"Do not choose implementation or checking behavior from a static platform-capability split.",
|
|
1239
|
-
"| Untracked task adoption | `workflow-state:untracked
|
|
1241
|
+
"| Untracked task adoption | `workflow-state:untracked*`, `trellis-brainstorm`, and `task_intent.py adopt` |",
|
|
1240
1242
|
"| Automatic task loop and return gate | `trellis-auto-loop`",
|
|
1241
1243
|
"| Commit/push safety and completion activation | `trellis-push` and `task_progress.py` |",
|
|
1242
1244
|
"| Cross-session task progress discovery and recovery | `trellis-continue` owns the recovery decision, `task_progress.py` owns candidate evidence and completed-task reopen, and `task.py start` with `.trellis/scripts/common/active_task.py` owns explicit session binding |",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
If the dispatch prompt's first line is `Untracked work: <work-id>`, run `python3 ./.trellis/scripts/untracked_flow.py status --verbose`, require the same work id, use
|
|
2
|
+
If the dispatch prompt's first line is `Untracked work: <work-id>`, run `python3 ./.trellis/scripts/untracked_flow.py status --verbose`, require the same work id, use its summary/stage plus the actual diff, relevant specs, validation context, and responsibility supplied by the main agent, and skip any task lookup or task-artifact loading below. The helper is only a workflow cursor; do not require or invent a task path, JSONL file, scope, baseline, fingerprint, or owner evidence. Otherwise continue with the agent's normal task context rules.
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
Resolve exactly one dispatch subject from the first prompt line:
|
|
4
4
|
|
|
5
5
|
- `Active task: <path>`: use the normal task path. Read the role manifest (`implement.jsonl` for implement, `check.jsonl` for check), every listed file, then `prd.md`, optional `design.md`, and optional `implement.md`.
|
|
6
|
-
- `Untracked work: <work-id>`: run `python3 ./.trellis/scripts/untracked_flow.py status --verbose`, require the same work id, and use
|
|
6
|
+
- `Untracked work: <work-id>`: run `python3 ./.trellis/scripts/untracked_flow.py status --verbose`, require the same work id, and use its summary/stage plus the actual diff, relevant specs, validation context, and responsibility supplied by the main session. The helper is only a workflow cursor; do not require or invent task artifacts, JSONL files, scope, baseline, fingerprint, or owner evidence.
|
|
7
7
|
|
|
8
8
|
If hook-injected context is present, it may satisfy the task branch. The untracked branch remains prompt-driven and must still validate the helper state. If neither first-line contract is present or the resolved subject mismatches, stop and report the missing context; do not guess or switch subjects.
|
|
@@ -29,10 +29,11 @@ def main() -> int:
|
|
|
29
29
|
)
|
|
30
30
|
else:
|
|
31
31
|
work_id, stage, summary = untracked
|
|
32
|
-
|
|
32
|
+
untracked_status = "untracked" if stage == "implement" else f"untracked_{stage}"
|
|
33
|
+
untracked_key = resolve_breadcrumb_key(untracked_status, platform, config)
|
|
33
34
|
breadcrumb = build_breadcrumb(
|
|
34
35
|
None,
|
|
35
|
-
|
|
36
|
+
untracked_status,
|
|
36
37
|
templates,
|
|
37
38
|
breadcrumb_key=untracked_key,
|
|
38
39
|
subject_label=f"Untracked work: {work_id} ({stage})",
|
|
@@ -8,8 +8,8 @@ Stable owner categories are:
|
|
|
8
8
|
| --- | --- |
|
|
9
9
|
| Request intent and project knowledge discovery | Request Triage, `trellis-start`, and the referenced router helper |
|
|
10
10
|
| Active task scope safety | Request Triage and the active-task scope guard |
|
|
11
|
-
| Untracked work completion | `workflow-state:untracked
|
|
12
|
-
| Untracked task adoption | `workflow-state:untracked
|
|
11
|
+
| Untracked work completion | `workflow-state:untracked*`, Phase 2/3 owners, and `untracked_flow.py` |
|
|
12
|
+
| Untracked task adoption | `workflow-state:untracked*`, `trellis-brainstorm`, and `task_intent.py adopt` |
|
|
13
13
|
| Planning handoff and activation | `trellis-task-brief` and the task-start Brief guard |
|
|
14
14
|
| Implement/check execution mode | `trellis-route` |
|
|
15
15
|
| Unified quality verification | `trellis-check-all` |
|
|
@@ -6,7 +6,7 @@ Start from the runtime section, then move to its owner:
|
|
|
6
6
|
| --- | --- |
|
|
7
7
|
| Add or reorder a phase | Workflow Patch/source plus every affected owner handoff |
|
|
8
8
|
| Change task creation or scope policy | Request Triage, task-intent helper, and the managed workflow/state Patch |
|
|
9
|
-
| Change untracked completion or adoption | `workflow-state:untracked
|
|
9
|
+
| Change untracked completion or adoption | `workflow-state:untracked*`, Phase 2/3 owners, `untracked_flow.py`, and `task_intent.py adopt` |
|
|
10
10
|
| Change planning handoff or activation | `trellis-task-brief` and the task-start Brief guard |
|
|
11
11
|
| Change implement/check execution | `trellis-route`; Check-All remains the unified check entry |
|
|
12
12
|
| Change automatic continuation | `trellis-auto-loop` and its runner action contract |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
- **No active task** -> first run `python3 ./.trellis/scripts/untracked_flow.py status`. On `hit`, resume the reported stage through `[workflow-state:untracked]
|
|
1
|
+
- **No active task** -> first run `python3 ./.trellis/scripts/untracked_flow.py status`. On `hit`, resume the reported stage through the matching `[workflow-state:untracked*]` breadcrumb; on `miss`, follow the workflow `Request Triage` contract before acting. Use `task_intent.py create` for inferred complex planning, `task.py create` for explicit task planning, and ask only for material ambiguity or an independent safety boundary.
|
|
@@ -27,7 +27,7 @@ Read real evidence in this order. Do not decide from the chat summary, task titl
|
|
|
27
27
|
|
|
28
28
|
1. For task context, the current task's `implement.jsonl` / `check.jsonl` and every file they reference.
|
|
29
29
|
2. For task context, the current task's `prd.md`, `design.md`, and `implement.md`.
|
|
30
|
-
3. For untracked context, `untracked_flow.py status --verbose
|
|
30
|
+
3. For untracked context, `untracked_flow.py status --verbose` for work id, summary, and stage; obtain validation evidence from the current Check-All result and current change set rather than the cursor helper.
|
|
31
31
|
4. The final Check-All conclusion and its actual validation evidence.
|
|
32
32
|
5. The current subject's actual diff, source code, tests, and commit evidence.
|
|
33
33
|
6. Existing specs and their indexes returned by `spec_router.py`.
|
|
@@ -56,6 +56,6 @@ When applicable, also validate indexes/links, code signatures, or project-specif
|
|
|
56
56
|
- Interactive: after a passed Check-All stop, when the user says “下一步”, “继续”, `next`, `continue`, or an equivalent continuation intent, run this skill. A `no-op` or `written` result must load `trellis-push` in the same turn and present its single confirmation plan. A `needs-review` result stops and must not generate a Push plan.
|
|
57
57
|
- Interactive direct Git: when the latest user message that triggered the current completion chain explicitly requests an ordinary push or a user-initiated `commit-only`, use that request only as conditional continuation after a strictly passed Check-All. After the existing standard Check-All report is shown, run this skill in the same turn when no currently valid `spec_update_result` exists. Only `no-op` or `written` may proceed to `trellis-push`; `needs-review` stops. Do not infer this intent from history, summaries, dirty state, or an auto-loop internal `commit-only`.
|
|
58
58
|
- Validated auto-loop: for `no-op` or `written`, execute `record --action run_spec_update --result ok` and immediately run `next`. For `needs-review`, execute `record --action run_spec_update --result blocked --failure-type spec-needs-review`; never disguise it as `no-op`.
|
|
59
|
-
- Untracked:
|
|
59
|
+
- Untracked: keep the cursor at `spec` for `needs-review`. For `no-op` or `written`, run `untracked_flow.py advance --stage push`. Any later product edit returns the cursor to `implement`; the helper does not validate or preserve owner evidence.
|
|
60
60
|
|
|
61
61
|
Do not ask again or rerun when a currently valid `no-op` or `written` result already exists. Re-evaluate after the actual diff, Check-All conclusion, or the user's spec intent changes.
|
|
@@ -12,8 +12,8 @@ Complete contracts live in the owning phase, workflow state, skill, hook, or hel
|
|
|
12
12
|
| Project Knowledge Discovery | `Request Triage` | `spec_router.py` |
|
|
13
13
|
| Flower Update Confirmation | SessionStart update context + Flower CLI | update hook / `self-update` arguments |
|
|
14
14
|
| Active Task Scope Guard | `Request Triage` | `task_intent.py` scope safety |
|
|
15
|
-
| Untracked Work Completion Chain | `workflow-state:untracked
|
|
16
|
-
| Untracked Task Adoption | `workflow-state:untracked
|
|
15
|
+
| Untracked Work Completion Chain | `workflow-state:untracked*` + Phase 2/3 owners | `untracked_flow.py` |
|
|
16
|
+
| Untracked Task Adoption | `workflow-state:untracked*` + `trellis-brainstorm` | `task_intent.py adopt` |
|
|
17
17
|
| Routing Gate | Phase 2 + `trellis-route` | `route_state.py` |
|
|
18
18
|
| Auto-Loop Return Gate | `trellis-check-all` + `trellis-auto-loop` | `auto_loop.py record/next` |
|
|
19
19
|
| Interactive Post-Check Stop Gate | Phase 2.2 + `trellis-check-all` | current Check-All evidence |
|
package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-2-check-content.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Run `trellis-route(target=check)`, then execute the unified `trellis-check-all` entry using the validated inline/subagent route.
|
|
4
4
|
|
|
5
|
-
For untracked work, route reads only the personal pref helper and the dispatch prompt starts with `Untracked work: <work-id>` plus
|
|
5
|
+
For untracked work, route reads only the personal pref helper and the dispatch prompt starts with `Untracked work: <work-id>` plus the work summary, current stage, actual diff, relevant specs, and validation context. Findings or new edits return the cursor to `implement`; a strict pass advances to `spec` only when the existing interactive/direct-Git disposition continues the completion chain.
|
|
6
6
|
|
|
7
7
|
Before interactive Check-All begins, run `python3 ./.trellis/scripts/pre_check_state.py clear`. A missing, subject-mismatched, or already-cleared preference is a no-op; a damaged runtime is reported diagnostically but safely defaults to checking.
|
|
8
8
|
|
package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-2-implement-content.md
CHANGED
|
@@ -7,13 +7,13 @@ Follow the validated route result:
|
|
|
7
7
|
- `inline`: load `trellis-before-dev`, read the active task artifacts and referenced context, then implement and run focused verification.
|
|
8
8
|
- `subagent`: dispatch the selected implement agent with `Active task: <task path>` as the first prompt line; the agent implements directly and must not recursively dispatch implement/check agents.
|
|
9
9
|
|
|
10
|
-
For untracked work, route reads only the personal pref helper and never creates task-scoped route decisions. Inline loads relevant project specs from `spec_router.py`; subagent dispatch starts with `Untracked work: <work-id>` and includes the
|
|
10
|
+
For untracked work, route reads only the personal pref helper and never creates task-scoped route decisions. Inline loads relevant project specs from `spec_router.py`; subagent dispatch starts with `Untracked work: <work-id>` and includes the work summary, current stage, actual diff/spec context, and this turn's responsibility instead of task artifacts. If implementation resumes from a downstream stage, set the cursor to `implement` before editing.
|
|
11
11
|
|
|
12
12
|
Route preference recovery, fallback choices, and runtime evidence belong to `trellis-route`; do not reproduce them here.
|
|
13
13
|
|
|
14
14
|
After implementation and focused verification, resolve the next action in this order:
|
|
15
15
|
|
|
16
|
-
For untracked work,
|
|
16
|
+
For untracked work, focused validation remains owned by the implementation path. When it is complete, advance the cursor to `check`; a failed or partial validation stays at `implement`.
|
|
17
17
|
|
|
18
18
|
1. A validated auto-loop outstanding action wins; continue to its requested Check-All action without consulting interactive hold state.
|
|
19
19
|
2. If the latest user message explicitly requests checking, continuation, commit, or deployment, run `python3 ./.trellis/scripts/pre_check_state.py clear` and enter Phase 2.2 in the same turn.
|
package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-3-commit-content.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Load `trellis-push`. It owns dirty-file classification, exact file/message planning, one-shot confirmation, Git safety checks, ordinary commit + push, and current-task progress synchronization.
|
|
4
4
|
|
|
5
|
-
For untracked work,
|
|
5
|
+
For untracked work, `stage=push` identifies the next owner and there is no task progress commit. `trellis-push` derives attribution from the current request, work summary, and actual diff. After every confirmed repository action succeeds, clear the untracked state with `--reason completed`; partial or failed Git execution keeps the cursor for recovery.
|
|
6
6
|
|
|
7
7
|
Ordinary mode defaults to commit and push. Commit-only is allowed only when the user explicitly requests a local commit or a validated auto-loop supplies its scoped preauthorization.
|
|
8
8
|
|
package/enhancements/0.6/overrides/patches/workflow/phase-ownership/phase-3-update-spec-content.md
CHANGED
|
@@ -8,4 +8,4 @@ Load `trellis-update-spec` and let it decide whether the task produced executabl
|
|
|
8
8
|
|
|
9
9
|
Do not ask a separate generic “update spec?” question before invoking the skill.
|
|
10
10
|
|
|
11
|
-
For untracked work, evaluate the
|
|
11
|
+
For untracked work, evaluate the actual diff and relevant specs without inventing task artifacts. Keep the cursor at `spec` for `needs-review`; advance it to `push` only for `no-op` or `written`.
|
|
@@ -60,7 +60,7 @@ Supported events: `after_create / after_start / after_finish / after_archive`. N
|
|
|
60
60
|
### Full contract
|
|
61
61
|
|
|
62
62
|
<!-- BEGIN skill-garden patch workflow-runtime-contract-reference v0.6 -->
|
|
63
|
-
For the workflow state machine's runtime contract, the authoritative runtime inputs are the installed per-turn hook parser and the `[workflow-state:*]` tags in this file. This Flower variant uses fixed pseudo-status tag names `no_task`, `untracked`, and `missing_task`; hook diagnostic source types such as `session` or `session-fallback` must not become workflow-state tag names.
|
|
63
|
+
For the workflow state machine's runtime contract, the authoritative runtime inputs are the installed per-turn hook parser and the `[workflow-state:*]` tags in this file. This Flower variant uses fixed pseudo-status tag names `no_task`, `untracked`, `untracked_check`, `untracked_spec`, `untracked_push`, and `missing_task`; hook diagnostic source types such as `session` or `session-fallback` must not become workflow-state tag names.
|
|
64
64
|
|
|
65
65
|
- Installed `<platform>/hooks/inject-workflow-state.py` copies — parse this workflow and emit the current breadcrumb for platforms with a per-turn hook.
|
|
66
66
|
- `.trellis/spec/` project specs, when present — project-local runtime contract notes and invariants.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
For the workflow state machine's runtime contract, the authoritative runtime inputs are the installed per-turn hook parser and the `[workflow-state:*]` tags in this file. This Flower variant uses fixed pseudo-status tag names `no_task`, `untracked`, and `missing_task`; hook diagnostic source types such as `session` or `session-fallback` must not become workflow-state tag names.
|
|
1
|
+
For the workflow state machine's runtime contract, the authoritative runtime inputs are the installed per-turn hook parser and the `[workflow-state:*]` tags in this file. This Flower variant uses fixed pseudo-status tag names `no_task`, `untracked`, `untracked_check`, `untracked_spec`, `untracked_push`, and `missing_task`; hook diagnostic source types such as `session` or `session-fallback` must not become workflow-state tag names.
|
|
2
2
|
|
|
3
3
|
- Installed `<platform>/hooks/inject-workflow-state.py` copies — parse this workflow and emit the current breadcrumb for platforms with a per-turn hook.
|
|
4
4
|
- `.trellis/spec/` project specs, when present — project-local runtime contract notes and invariants.
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
TAG ↔ PHASE scoping:
|
|
23
23
|
[workflow-state:no_task] → no active task; before Phase 1
|
|
24
|
-
[workflow-state:untracked]
|
|
24
|
+
[workflow-state:untracked*] → current-session direct-edit stage cursor
|
|
25
25
|
[workflow-state:missing_task] → missing active-task directory recovery
|
|
26
26
|
[workflow-state:planning] → all of Phase 1 (status='planning')
|
|
27
27
|
[workflow-state:planning-inline] → Codex inline variant of Phase 1
|
|
@@ -41,6 +41,6 @@
|
|
|
41
41
|
in Skill-Garden managed mode, edit the owning Patch and run source sync,
|
|
42
42
|
compiled-target checks, and dogfood update
|
|
43
43
|
- Runtime pseudo-status names are fixed. This Flower variant defines
|
|
44
|
-
`no_task`, `untracked
|
|
44
|
+
`no_task`, the `untracked*` stage family, and `missing_task`; hook diagnostic source types must not be
|
|
45
45
|
appended to workflow-state tag names.
|
|
46
46
|
-->
|
|
@@ -2,5 +2,5 @@ No active task. Infer the current request intent before acting.
|
|
|
2
2
|
Repair intent alone is not a no-task switch; inspect unknown scope and reclassify before edits. Only an explicit current-request workflow instruction such as `直接做` / `不要任务` may override automatic `task_plan`.
|
|
3
3
|
For non-trivial project work, follow the `Request Triage` Project Knowledge Discovery contract before routing the action. Load a Trellis capability directly only when the user explicitly names it or the request exactly matches that capability; route project-specific workflow actions through the matched SOP instead of keyword-mapping a general release/publish request to `trellis-release`.
|
|
4
4
|
Handle `discuss` and `inspect` silently. For non-destructive `direct_edit`, state once that work will use the session-scoped untracked flow, then run `python3 ./.trellis/scripts/untracked_flow.py begin --summary "<bounded work summary>" --source <inferred|user-explicit>`.
|
|
5
|
-
A same-item hit resumes the existing state; `active-work-conflict` blocks unrelated code writes until the current item is completed, explicitly abandoned, or adopted into a task. Unrelated read-only requests may continue without mutating the state.
|
|
5
|
+
A same-item hit resumes the existing state; `active-work-conflict` blocks unrelated code writes until the current item is completed, explicitly abandoned, or adopted into a task. Unrelated read-only requests may continue without mutating the state. A successful `begin` starts at `stage=implement`; the helper is a workflow cursor and does not gate edits on file scope, Git state, or owner evidence.
|
|
6
6
|
For high-confidence complex implementation, create an auto-routed planning task through `task_intent.py create`, show one non-blocking switch hint, and enter `trellis-brainstorm`. Ask only for material ambiguity or independent safety gates.
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
[workflow-state:untracked]
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
At `spec`, run `trellis-update-spec`; use `record-spec` for `no-op`, `written`, or `needs-review`, and advance to `push` only for the first two results.
|
|
6
|
-
At `push`, load `trellis-push`; clear with `--reason completed` only after all confirmed Git actions succeed. New edits return through `prepare-edit`, which invalidates downstream evidence.
|
|
7
|
-
A different implementation request is blocked by the single-active-work guard until this item is completed, explicitly abandoned, or adopted through `python3 ./.trellis/scripts/task_intent.py adopt "<title>" --slug <slug>`; adoption continues through planning artifacts, Brief review, and `task.py start`, and never authorizes immediate implementation. Unrelated read-only requests may continue without changing state.
|
|
2
|
+
The current-session untracked work item is at `implement`. Run `python3 ./.trellis/scripts/untracked_flow.py status`, then enter Phase 2.1 through `trellis-route(target=implement)` without creating task artifacts or task-scoped route decisions.
|
|
3
|
+
The helper is only a workflow cursor: it does not validate file scope, Git state, focused validation, or owner evidence. After focused validation is complete, run `python3 ./.trellis/scripts/untracked_flow.py advance --stage check` and continue through the normal Phase 2.1 completion contract.
|
|
4
|
+
A different implementation request remains blocked by the single-active-work guard until this item is completed, explicitly abandoned, or adopted through `python3 ./.trellis/scripts/task_intent.py adopt "<title>" --slug <slug>`; adoption continues through planning artifacts, Brief review, and `task.py start`, and never authorizes immediate implementation. Unrelated read-only requests may continue without changing state.
|
|
8
5
|
[/workflow-state:untracked]
|
|
6
|
+
|
|
7
|
+
[workflow-state:untracked_check]
|
|
8
|
+
The current-session untracked work item is at `check`. Run `python3 ./.trellis/scripts/untracked_flow.py status`, then enter Phase 2.2 through `trellis-route(target=check)` and execute `trellis-check-all`.
|
|
9
|
+
If Check-All reports findings or a new edit is needed, run `python3 ./.trellis/scripts/untracked_flow.py advance --stage implement` before returning to implementation. On a strict pass, keep `check` while the interactive stop gate waits; only a same-turn direct Git continuation or a later explicit continuation advances to `spec`.
|
|
10
|
+
[/workflow-state:untracked_check]
|
|
11
|
+
|
|
12
|
+
[workflow-state:untracked_spec]
|
|
13
|
+
The current-session untracked work item is at `spec`. Run `python3 ./.trellis/scripts/untracked_flow.py status`, then load `trellis-update-spec`.
|
|
14
|
+
Keep `spec` for `needs-review`. For `no-op` or `written`, run `python3 ./.trellis/scripts/untracked_flow.py advance --stage push`. The helper records only the next owner; Update-Spec owns its evidence and validation.
|
|
15
|
+
[/workflow-state:untracked_spec]
|
|
16
|
+
|
|
17
|
+
[workflow-state:untracked_push]
|
|
18
|
+
The current-session untracked work item is ready to enter Push. Run `python3 ./.trellis/scripts/untracked_flow.py status`, require `stage=push`, and load `trellis-push`.
|
|
19
|
+
`stage=push` is only a route cursor: it is not a Git plan, user confirmation, or proof that Push already ran. `trellis-push` owns the exact plan, confirmation, Git safety checks, and execution. Clear with `--reason completed` only after every confirmed Git action succeeds; new edits first return the cursor to `implement`.
|
|
20
|
+
[/workflow-state:untracked_push]
|
|
@@ -19,7 +19,7 @@ PREFERENCE_KEY = "pre_check_preference"
|
|
|
19
19
|
PREFERENCE_VERSION = 2
|
|
20
20
|
LEGACY_PREFERENCE_VERSION = 1
|
|
21
21
|
VALID_SOURCES = {"user-explicit", "follow-up-edit"}
|
|
22
|
-
|
|
22
|
+
UNTRACKED_STATE_VERSIONS = {1, 2}
|
|
23
23
|
UNTRACKED_STAGES = {"inspect", "implement", "check", "spec", "push"}
|
|
24
24
|
SESSION_START_HINT = "Pre-check: deferred for current work; latest user intent may override."
|
|
25
25
|
|
|
@@ -137,7 +137,7 @@ def _runtime_scope(
|
|
|
137
137
|
if isinstance(untracked, dict):
|
|
138
138
|
work_id = untracked.get("id")
|
|
139
139
|
if not (
|
|
140
|
-
untracked.get("version")
|
|
140
|
+
untracked.get("version") in UNTRACKED_STATE_VERSIONS
|
|
141
141
|
and isinstance(work_id, str)
|
|
142
142
|
and work_id.strip()
|
|
143
143
|
and untracked.get("stage") in UNTRACKED_STAGES
|
|
@@ -243,7 +243,7 @@ def _rollback_adoption(
|
|
|
243
243
|
|
|
244
244
|
|
|
245
245
|
def adopt_untracked_work(args: argparse.Namespace) -> dict:
|
|
246
|
-
"""把当前 untracked diff
|
|
246
|
+
"""把当前 untracked diff 和流程游标原地接管到 planning task。
|
|
247
247
|
|
|
248
248
|
Args:
|
|
249
249
|
args: adopt 子命令参数。
|
|
@@ -256,7 +256,7 @@ def adopt_untracked_work(args: argparse.Namespace) -> dict:
|
|
|
256
256
|
if not context_key:
|
|
257
257
|
raise IntentTaskError("no-session-context", "无法解析当前 AI session")
|
|
258
258
|
try:
|
|
259
|
-
untracked = read_untracked_state(repo_root
|
|
259
|
+
untracked = read_untracked_state(repo_root)
|
|
260
260
|
except Exception as exc:
|
|
261
261
|
reason = getattr(exc, "reason", "untracked-state-invalid")
|
|
262
262
|
raise IntentTaskError(reason, str(exc)) from exc
|
|
@@ -267,6 +267,7 @@ def adopt_untracked_work(args: argparse.Namespace) -> dict:
|
|
|
267
267
|
raw_state = session_before.get(STATE_KEY)
|
|
268
268
|
if not isinstance(raw_state, dict) or raw_state.get("id") != state["id"]:
|
|
269
269
|
raise IntentTaskError("untracked-state-mismatch", "纳管前 untracked 状态已变化")
|
|
270
|
+
baseline = capture_git_baseline(repo_root)
|
|
270
271
|
|
|
271
272
|
task_ref = ""
|
|
272
273
|
task_dir: Path | None = None
|
|
@@ -281,11 +282,9 @@ def adopt_untracked_work(args: argparse.Namespace) -> dict:
|
|
|
281
282
|
"createdAt": _utc_now(),
|
|
282
283
|
"contextKey": context_key,
|
|
283
284
|
"untrackedWorkId": state["id"],
|
|
284
|
-
"implementationStarted":
|
|
285
|
-
"baseline":
|
|
285
|
+
"implementationStarted": True,
|
|
286
|
+
"baseline": baseline,
|
|
286
287
|
"adoptedStage": state["stage"],
|
|
287
|
-
"workspaceFingerprint": state.get("workspaceFingerprint"),
|
|
288
|
-
"evidence": state.get("evidence", {}),
|
|
289
288
|
}
|
|
290
289
|
task_data["meta"] = meta
|
|
291
290
|
_write_json_atomic(task_json, task_data)
|
|
@@ -322,7 +321,7 @@ def adopt_untracked_work(args: argparse.Namespace) -> dict:
|
|
|
322
321
|
"task": task_ref,
|
|
323
322
|
"workId": state["id"],
|
|
324
323
|
"adoptedStage": state["stage"],
|
|
325
|
-
"implementationStarted":
|
|
324
|
+
"implementationStarted": True,
|
|
326
325
|
}
|
|
327
326
|
|
|
328
327
|
|