@deftai/directive-content 0.65.0 → 0.66.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.githooks/pre-commit +3 -1
- package/QUICK-START.md +8 -4
- package/Taskfile.yml +31 -14
- package/UPGRADING.md +19 -5
- package/commands.md +46 -41
- package/conventions/rule-ownership.json +1 -1
- package/docs/BROWNFIELD.md +37 -33
- package/docs/directive-lifecycle.md +2 -2
- package/docs/getting-started.md +8 -8
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +28 -28
- package/skills/deft-directive-article-review/SKILL.md +4 -4
- package/skills/deft-directive-build/SKILL.md +37 -37
- package/skills/deft-directive-cost/SKILL.md +6 -6
- package/skills/deft-directive-debug/SKILL.md +4 -4
- package/skills/deft-directive-decompose/SKILL.md +15 -15
- package/skills/deft-directive-gh-arch/SKILL.md +3 -3
- package/skills/deft-directive-gh-slice/SKILL.md +2 -2
- package/skills/deft-directive-interview/SKILL.md +12 -12
- package/skills/deft-directive-pre-pr/SKILL.md +3 -3
- package/skills/deft-directive-probe/SKILL.md +9 -9
- package/skills/deft-directive-refinement/SKILL.md +65 -65
- package/skills/deft-directive-release/SKILL.md +3 -3
- package/skills/deft-directive-review-cycle/SKILL.md +4 -4
- package/skills/deft-directive-setup/SKILL.md +71 -71
- package/skills/deft-directive-swarm/SKILL.md +94 -94
- package/skills/deft-directive-sync/SKILL.md +55 -55
- package/skills/deft-directive-triage/SKILL.md +15 -15
- package/tasks/architecture.yml +3 -1
- package/tasks/cache.yml +20 -10
- package/tasks/capacity.yml +8 -4
- package/tasks/change.yml +8 -10
- package/tasks/changelog.yml +3 -1
- package/tasks/codebase.yml +20 -10
- package/tasks/commit.yml +4 -8
- package/tasks/engine.yml +18 -4
- package/tasks/install.yml +4 -8
- package/tasks/issue.yml +8 -10
- package/tasks/migrate.yml +24 -8
- package/tasks/packs.yml +32 -16
- package/tasks/policy.yml +24 -12
- package/tasks/pr.yml +16 -8
- package/tasks/prd.yml +9 -12
- package/tasks/project.yml +14 -14
- package/tasks/reconcile.yml +4 -8
- package/tasks/roadmap.yml +9 -5
- package/tasks/scm.yml +36 -18
- package/tasks/scope-undo.yml +3 -1
- package/tasks/scope.yml +40 -26
- package/tasks/session.yml +4 -2
- package/tasks/slice.yml +8 -10
- package/tasks/spec.yml +10 -12
- package/tasks/swarm.yml +20 -10
- package/tasks/triage-actions.yml +32 -16
- package/tasks/triage-bootstrap.yml +4 -2
- package/tasks/triage-bulk.yml +20 -10
- package/tasks/triage-classify.yml +4 -2
- package/tasks/triage-queue.yml +12 -6
- package/tasks/triage-reconcile.yml +4 -2
- package/tasks/triage-scope-drift.yml +4 -2
- package/tasks/triage-scope.yml +4 -2
- package/tasks/triage-smoketest.yml +4 -2
- package/tasks/triage-subscribe.yml +8 -4
- package/tasks/triage-summary.yml +4 -2
- package/tasks/triage-welcome.yml +4 -2
- package/tasks/ts.yml +3 -1
- package/tasks/umbrella.yml +1 -7
- package/tasks/vbrief.yml +25 -17
- package/tasks/verify.yml +102 -50
- package/templates/agent-prompt-preamble.md +26 -23
- package/templates/agents-entry.md +33 -19
- package/vbrief/conformance/extensions/valid/extension-at-root.vbrief.json +31 -0
- package/vbrief/conformance/extensions/valid/nested-extension-value.vbrief.json +19 -0
- package/vbrief/schemas/xbrief-core-0.8.schema.json +786 -0
package/tasks/scope.yml
CHANGED
|
@@ -34,36 +34,36 @@ vars:
|
|
|
34
34
|
# Taskfile.yml also sets this (#540).
|
|
35
35
|
|
|
36
36
|
tasks:
|
|
37
|
-
_ensure-ts:
|
|
38
|
-
internal: true
|
|
39
|
-
desc: "Build the TS engine before lifecycle gates (#1828 s4)"
|
|
40
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
41
|
-
cmds:
|
|
42
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
43
37
|
|
|
44
38
|
promote:
|
|
45
39
|
desc: "Promote a vBRIEF scope: proposed/ -> pending/ (status: pending)"
|
|
46
40
|
dir: '{{.USER_WORKING_DIR}}'
|
|
47
41
|
deps:
|
|
48
|
-
-
|
|
42
|
+
- task: :engine:_ts-build
|
|
49
43
|
cmds:
|
|
50
|
-
-
|
|
44
|
+
- task: :engine:invoke
|
|
45
|
+
vars:
|
|
46
|
+
ENGINE_CMD: 'scope-lifecycle promote {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
51
47
|
|
|
52
48
|
activate:
|
|
53
49
|
desc: "Activate a vBRIEF scope: pending/ -> active/ (status: running)"
|
|
54
50
|
dir: '{{.USER_WORKING_DIR}}'
|
|
55
51
|
deps:
|
|
56
|
-
-
|
|
52
|
+
- task: :engine:_ts-build
|
|
57
53
|
cmds:
|
|
58
|
-
-
|
|
54
|
+
- task: :engine:invoke
|
|
55
|
+
vars:
|
|
56
|
+
ENGINE_CMD: 'scope-lifecycle activate {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
59
57
|
|
|
60
58
|
complete:
|
|
61
59
|
desc: "Complete a vBRIEF scope: active/ -> completed/ (status: completed)"
|
|
62
60
|
dir: '{{.USER_WORKING_DIR}}'
|
|
63
61
|
deps:
|
|
64
|
-
-
|
|
62
|
+
- task: :engine:_ts-build
|
|
65
63
|
cmds:
|
|
66
|
-
-
|
|
64
|
+
- task: :engine:invoke
|
|
65
|
+
vars:
|
|
66
|
+
ENGINE_CMD: 'scope-lifecycle complete {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
67
67
|
|
|
68
68
|
fail:
|
|
69
69
|
# Terminal ``failed`` transition (#614). Parallels ``scope:complete``
|
|
@@ -79,49 +79,61 @@ tasks:
|
|
|
79
79
|
desc: "Fail a vBRIEF scope: active/ -> completed/ (status: failed)"
|
|
80
80
|
dir: '{{.USER_WORKING_DIR}}'
|
|
81
81
|
deps:
|
|
82
|
-
-
|
|
82
|
+
- task: :engine:_ts-build
|
|
83
83
|
cmds:
|
|
84
|
-
-
|
|
84
|
+
- task: :engine:invoke
|
|
85
|
+
vars:
|
|
86
|
+
ENGINE_CMD: 'scope-lifecycle fail {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
85
87
|
|
|
86
88
|
cancel:
|
|
87
89
|
desc: "Cancel a vBRIEF scope: any folder -> cancelled/ (status: cancelled)"
|
|
88
90
|
dir: '{{.USER_WORKING_DIR}}'
|
|
89
91
|
deps:
|
|
90
|
-
-
|
|
92
|
+
- task: :engine:_ts-build
|
|
91
93
|
cmds:
|
|
92
|
-
-
|
|
94
|
+
- task: :engine:invoke
|
|
95
|
+
vars:
|
|
96
|
+
ENGINE_CMD: 'scope-lifecycle cancel {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
93
97
|
|
|
94
98
|
restore:
|
|
95
99
|
desc: "Restore a cancelled vBRIEF scope: cancelled/ -> proposed/ (status: proposed)"
|
|
96
100
|
dir: '{{.USER_WORKING_DIR}}'
|
|
97
101
|
deps:
|
|
98
|
-
-
|
|
102
|
+
- task: :engine:_ts-build
|
|
99
103
|
cmds:
|
|
100
|
-
-
|
|
104
|
+
- task: :engine:invoke
|
|
105
|
+
vars:
|
|
106
|
+
ENGINE_CMD: 'scope-lifecycle restore {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
101
107
|
|
|
102
108
|
block:
|
|
103
109
|
desc: "Block a vBRIEF scope: stays in active/ (status: blocked)"
|
|
104
110
|
dir: '{{.USER_WORKING_DIR}}'
|
|
105
111
|
deps:
|
|
106
|
-
-
|
|
112
|
+
- task: :engine:_ts-build
|
|
107
113
|
cmds:
|
|
108
|
-
-
|
|
114
|
+
- task: :engine:invoke
|
|
115
|
+
vars:
|
|
116
|
+
ENGINE_CMD: 'scope-lifecycle block {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
109
117
|
|
|
110
118
|
unblock:
|
|
111
119
|
desc: "Unblock a vBRIEF scope: stays in active/ (status: running)"
|
|
112
120
|
dir: '{{.USER_WORKING_DIR}}'
|
|
113
121
|
deps:
|
|
114
|
-
-
|
|
122
|
+
- task: :engine:_ts-build
|
|
115
123
|
cmds:
|
|
116
|
-
-
|
|
124
|
+
- task: :engine:invoke
|
|
125
|
+
vars:
|
|
126
|
+
ENGINE_CMD: 'scope-lifecycle unblock {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
117
127
|
|
|
118
128
|
decompose:
|
|
119
129
|
desc: "Apply/check an approved epic/phase -> story decomposition draft"
|
|
120
130
|
dir: '{{.USER_WORKING_DIR}}'
|
|
121
131
|
deps:
|
|
122
|
-
-
|
|
132
|
+
- task: :engine:_ts-build
|
|
123
133
|
cmds:
|
|
124
|
-
-
|
|
134
|
+
- task: :engine:invoke
|
|
135
|
+
vars:
|
|
136
|
+
ENGINE_CMD: 'scope-decompose {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
125
137
|
|
|
126
138
|
# Operator-driven demote (D1 / #1121). Moves a vBRIEF scope from
|
|
127
139
|
# vbrief/pending/ back to vbrief/proposed/ and appends a structured
|
|
@@ -136,6 +148,8 @@ tasks:
|
|
|
136
148
|
desc: "Demote a vBRIEF scope: pending/ -> proposed/ (#1121). Single-file or --batch --older-than-days N (default 45)."
|
|
137
149
|
dir: '{{.USER_WORKING_DIR}}'
|
|
138
150
|
deps:
|
|
139
|
-
-
|
|
151
|
+
- task: :engine:_ts-build
|
|
140
152
|
cmds:
|
|
141
|
-
-
|
|
153
|
+
- task: :engine:invoke
|
|
154
|
+
vars:
|
|
155
|
+
ENGINE_CMD: 'scope-demote {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
package/tasks/session.yml
CHANGED
|
@@ -12,8 +12,10 @@ tasks:
|
|
|
12
12
|
start:
|
|
13
13
|
desc: "Run quick-tier session-start ritual and write .deft/ritual-state.json (#1348). Flags: --defer step=reason / --json"
|
|
14
14
|
dir: '{{.USER_WORKING_DIR}}'
|
|
15
|
-
deps: [":
|
|
15
|
+
deps: [":engine:_ts-build"]
|
|
16
16
|
env:
|
|
17
17
|
PYTHONUTF8: "1"
|
|
18
18
|
cmds:
|
|
19
|
-
-
|
|
19
|
+
- task: :engine:invoke
|
|
20
|
+
vars:
|
|
21
|
+
ENGINE_CMD: 'session:start --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/slice.yml
CHANGED
|
@@ -43,27 +43,25 @@ vars:
|
|
|
43
43
|
# `--wave-N=<csv>`, `--actor`, etc.) via {{.CLI_ARGS}}.
|
|
44
44
|
|
|
45
45
|
tasks:
|
|
46
|
-
_ensure-ts:
|
|
47
|
-
internal: true
|
|
48
|
-
desc: "Build the TS engine before slice gates (#1828 s4)"
|
|
49
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
50
|
-
cmds:
|
|
51
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
52
46
|
|
|
53
47
|
record-existing:
|
|
54
48
|
desc: "Retrofit a slices.jsonl entry for a hand-filed cohort (#1147 / N7). Windows note (#1231): CLI_ARGS is forwarded bare to argparse so values containing spaces (e.g. --notes \"A note with spaces\") may be re-split by the shell -- prefer hyphenated single-token values like --notes=backfill-after-N7. -- task slice:record-existing -- --umbrella=N --children=A,B,C [--wave-1=A,B] [--wave-2=C] [--actor=manual:operator] [--expected-close-signal=all-children-merged] [--sliced-at=ISO] [--notes=TEXT] [--dry-run] [--force] [--skip-validation] [--repo OWNER/NAME]"
|
|
55
49
|
internal: true
|
|
56
50
|
dir: '{{.USER_WORKING_DIR}}'
|
|
57
51
|
deps:
|
|
58
|
-
-
|
|
52
|
+
- task: :engine:_ts-build
|
|
59
53
|
cmds:
|
|
60
|
-
-
|
|
54
|
+
- task: :engine:invoke
|
|
55
|
+
vars:
|
|
56
|
+
ENGINE_CMD: 'slice record-existing {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
61
57
|
|
|
62
58
|
list:
|
|
63
59
|
desc: "List recorded slices in vbrief/.eval/slices.jsonl (umbrella + child count + actor + sliced_at). -- task slice:list [-- --json]"
|
|
64
60
|
internal: true
|
|
65
61
|
dir: '{{.USER_WORKING_DIR}}'
|
|
66
62
|
deps:
|
|
67
|
-
-
|
|
63
|
+
- task: :engine:_ts-build
|
|
68
64
|
cmds:
|
|
69
|
-
-
|
|
65
|
+
- task: :engine:invoke
|
|
66
|
+
vars:
|
|
67
|
+
ENGINE_CMD: 'slice list {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
package/tasks/spec.yml
CHANGED
|
@@ -11,28 +11,26 @@ vars:
|
|
|
11
11
|
# on Windows under `uv --project "{{.DEFT_ROOT}}" run python` (#566).
|
|
12
12
|
|
|
13
13
|
tasks:
|
|
14
|
-
_ts-build:
|
|
15
|
-
internal: true
|
|
16
|
-
desc: "Build @deftai/cli dist/ before TS-backed render gates run (#1854 s2)."
|
|
17
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
18
|
-
cmds:
|
|
19
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
20
14
|
|
|
21
15
|
validate:
|
|
22
|
-
desc: Validate that
|
|
16
|
+
desc: Validate that the specification artifact exists and is well-formed JSON
|
|
23
17
|
dir: '{{.USER_WORKING_DIR}}'
|
|
24
18
|
deps:
|
|
25
|
-
- _ts-build
|
|
19
|
+
- task: :engine:_ts-build
|
|
26
20
|
cmds:
|
|
27
|
-
-
|
|
21
|
+
- task: :engine:invoke
|
|
22
|
+
vars:
|
|
23
|
+
ENGINE_CMD: 'spec-validate --project-root "{{.USER_WORKING_DIR}}"'
|
|
28
24
|
|
|
29
25
|
render:
|
|
30
|
-
desc: Render
|
|
26
|
+
desc: Render the specification artifact to SPECIFICATION.md
|
|
31
27
|
dir: '{{.USER_WORKING_DIR}}'
|
|
32
28
|
deps:
|
|
33
|
-
- _ts-build
|
|
29
|
+
- task: :engine:_ts-build
|
|
34
30
|
cmds:
|
|
35
|
-
-
|
|
31
|
+
- task: :engine:invoke
|
|
32
|
+
vars:
|
|
33
|
+
ENGINE_CMD: 'spec-render --project-root "{{.USER_WORKING_DIR}}"'
|
|
36
34
|
|
|
37
35
|
pipeline:
|
|
38
36
|
desc: Run full spec pipeline (validate then render)
|
package/tasks/swarm.yml
CHANGED
|
@@ -7,12 +7,14 @@ tasks:
|
|
|
7
7
|
readiness:
|
|
8
8
|
desc: "Report whether story vBRIEFs are ready for concurrent swarm allocation"
|
|
9
9
|
dir: '{{.USER_WORKING_DIR}}'
|
|
10
|
-
deps: [":
|
|
10
|
+
deps: [":engine:_ts-build"]
|
|
11
11
|
env:
|
|
12
12
|
PYTHONUTF8: "1"
|
|
13
13
|
cmds:
|
|
14
14
|
# Keep CLI_ARGS bare; go-task shell-escapes pass-through args and quoting breaks globs/multi-arg calls.
|
|
15
|
-
-
|
|
15
|
+
- task: :engine:invoke
|
|
16
|
+
vars:
|
|
17
|
+
ENGINE_CMD: 'swarm-readiness {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
16
18
|
|
|
17
19
|
# swarm:launch -- deterministic headless launch engine (#1387). Turns an
|
|
18
20
|
# operator-supplied, pre-approved cohort into a ready-to-spawn launch
|
|
@@ -29,10 +31,12 @@ tasks:
|
|
|
29
31
|
# Companion test: tests/cli/test_swarm_launch.py
|
|
30
32
|
launch:
|
|
31
33
|
desc: "Resolve a pre-approved cohort, enforce the #810 + swarm:readiness gates and sub-agent backend policy per story, and emit the launch-manifest JSON (#1387, #1531e)"
|
|
32
|
-
deps: [":
|
|
34
|
+
deps: [":engine:_ts-build"]
|
|
33
35
|
dir: '{{.USER_WORKING_DIR}}'
|
|
34
36
|
cmds:
|
|
35
|
-
-
|
|
37
|
+
- task: :engine:invoke
|
|
38
|
+
vars:
|
|
39
|
+
ENGINE_CMD: 'swarm-launch {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
36
40
|
|
|
37
41
|
# swarm:routing-set -- record an operator coding sub-agent model decision
|
|
38
42
|
# (#1739) into the gitignored, per-machine .deft/routing.local.json keyed by
|
|
@@ -41,10 +45,12 @@ tasks:
|
|
|
41
45
|
# (resolved_model / model_source) so dispatch can actually honor it.
|
|
42
46
|
routing-set:
|
|
43
47
|
desc: "Record an operator coding sub-agent model decision (#1739): --role <role> (--model <slug> | --harness-default) [--provider <p>]. Writes the gitignored, per-machine .deft/routing.local.json."
|
|
44
|
-
deps: [":
|
|
48
|
+
deps: [":engine:_ts-build"]
|
|
45
49
|
dir: '{{.USER_WORKING_DIR}}'
|
|
46
50
|
cmds:
|
|
47
|
-
-
|
|
51
|
+
- task: :engine:invoke
|
|
52
|
+
vars:
|
|
53
|
+
ENGINE_CMD: 'swarm-routing-set {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
48
54
|
|
|
49
55
|
# swarm:verify-review-clean -- cohort-level CLEAN verification gate (#1364).
|
|
50
56
|
# Mandate the monitor invokes this after Phase 6 pollers report and BEFORE
|
|
@@ -59,10 +65,12 @@ tasks:
|
|
|
59
65
|
# Skill citation: skills/deft-directive-swarm/SKILL.md Phase 5 Exit Condition + Phase 5 -> 6 gate
|
|
60
66
|
verify-review-clean:
|
|
61
67
|
desc: "Verify EVERY PR in a swarm cohort is CLEAN on current HEAD (confidence > 3, no P0/P1, not errored) before raising the Phase 5 -> 6 merge gate (#1364)"
|
|
62
|
-
deps: [":
|
|
68
|
+
deps: [":engine:_ts-build"]
|
|
63
69
|
dir: '{{.USER_WORKING_DIR}}'
|
|
64
70
|
cmds:
|
|
65
|
-
-
|
|
71
|
+
- task: :engine:invoke
|
|
72
|
+
vars:
|
|
73
|
+
ENGINE_CMD: 'swarm-verify-review-clean {{.CLI_ARGS}}'
|
|
66
74
|
|
|
67
75
|
# swarm:complete-cohort -- deterministic cohort completion sweep (#1487).
|
|
68
76
|
# The REQUIRED Phase 6 step that moves a finished cohort's story vBRIEFs
|
|
@@ -79,7 +87,9 @@ tasks:
|
|
|
79
87
|
# Skill citation: skills/deft-directive-swarm/SKILL.md Phase 6 cohort completion sweep
|
|
80
88
|
complete-cohort:
|
|
81
89
|
desc: "Sweep a finished swarm cohort's stories active/ -> completed/ and complete their epic parents, keeping vbrief:validate green (#1487)"
|
|
82
|
-
deps: [":
|
|
90
|
+
deps: [":engine:_ts-build"]
|
|
83
91
|
dir: '{{.USER_WORKING_DIR}}'
|
|
84
92
|
cmds:
|
|
85
|
-
-
|
|
93
|
+
- task: :engine:invoke
|
|
94
|
+
vars:
|
|
95
|
+
ENGINE_CMD: 'swarm-complete-cohort {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
package/tasks/triage-actions.yml
CHANGED
|
@@ -32,63 +32,79 @@ tasks:
|
|
|
32
32
|
accept:
|
|
33
33
|
desc: "Accept an issue for triage. Records an audit entry. (#845 Story 3)"
|
|
34
34
|
internal: true
|
|
35
|
-
deps: [":
|
|
35
|
+
deps: [":engine:_ts-build"]
|
|
36
36
|
dir: '{{.USER_WORKING_DIR}}'
|
|
37
37
|
cmds:
|
|
38
|
-
-
|
|
38
|
+
- task: :engine:invoke
|
|
39
|
+
vars:
|
|
40
|
+
ENGINE_CMD: 'triage-actions accept {{.CLI_ARGS}}'
|
|
39
41
|
|
|
40
42
|
reject:
|
|
41
43
|
desc: "Reject an issue. Closes upstream via gh + applies triage-rejected label; rolls audit back on gh failure. (#845 Story 3)"
|
|
42
44
|
internal: true
|
|
43
|
-
deps: [":
|
|
45
|
+
deps: [":engine:_ts-build"]
|
|
44
46
|
dir: '{{.USER_WORKING_DIR}}'
|
|
45
47
|
cmds:
|
|
46
|
-
-
|
|
48
|
+
- task: :engine:invoke
|
|
49
|
+
vars:
|
|
50
|
+
ENGINE_CMD: 'triage-actions reject {{.CLI_ARGS}}'
|
|
47
51
|
|
|
48
52
|
defer:
|
|
49
53
|
desc: "Defer an issue. Records an audit entry. (#845 Story 3)"
|
|
50
54
|
internal: true
|
|
51
|
-
deps: [":
|
|
55
|
+
deps: [":engine:_ts-build"]
|
|
52
56
|
dir: '{{.USER_WORKING_DIR}}'
|
|
53
57
|
cmds:
|
|
54
|
-
-
|
|
58
|
+
- task: :engine:invoke
|
|
59
|
+
vars:
|
|
60
|
+
ENGINE_CMD: 'triage-actions defer {{.CLI_ARGS}}'
|
|
55
61
|
|
|
56
62
|
needs-ac:
|
|
57
63
|
desc: "Mark an issue as needing acceptance criteria + post AC-request comment upstream. (#845 Story 3)"
|
|
58
64
|
internal: true
|
|
59
|
-
deps: [":
|
|
65
|
+
deps: [":engine:_ts-build"]
|
|
60
66
|
dir: '{{.USER_WORKING_DIR}}'
|
|
61
67
|
cmds:
|
|
62
|
-
-
|
|
68
|
+
- task: :engine:invoke
|
|
69
|
+
vars:
|
|
70
|
+
ENGINE_CMD: 'triage-actions needs-ac {{.CLI_ARGS}}'
|
|
63
71
|
|
|
64
72
|
mark-duplicate:
|
|
65
73
|
desc: "Link an issue as a duplicate of another (validated against Story 1 cache). (#845 Story 3)"
|
|
66
74
|
internal: true
|
|
67
|
-
deps: [":
|
|
75
|
+
deps: [":engine:_ts-build"]
|
|
68
76
|
dir: '{{.USER_WORKING_DIR}}'
|
|
69
77
|
cmds:
|
|
70
|
-
-
|
|
78
|
+
- task: :engine:invoke
|
|
79
|
+
vars:
|
|
80
|
+
ENGINE_CMD: 'triage-actions mark-duplicate {{.CLI_ARGS}}'
|
|
71
81
|
|
|
72
82
|
status:
|
|
73
83
|
desc: "Print the latest triage decision for an issue. Read-only. (#845 Story 3)"
|
|
74
84
|
internal: true
|
|
75
|
-
deps: [":
|
|
85
|
+
deps: [":engine:_ts-build"]
|
|
76
86
|
dir: '{{.USER_WORKING_DIR}}'
|
|
77
87
|
cmds:
|
|
78
|
-
-
|
|
88
|
+
- task: :engine:invoke
|
|
89
|
+
vars:
|
|
90
|
+
ENGINE_CMD: 'triage-actions status {{.CLI_ARGS}}'
|
|
79
91
|
|
|
80
92
|
reset:
|
|
81
93
|
desc: "Reset an issue's triage state. Appends a reset audit entry referencing prior; does NOT delete history. (#845 Story 3)"
|
|
82
94
|
internal: true
|
|
83
|
-
deps: [":
|
|
95
|
+
deps: [":engine:_ts-build"]
|
|
84
96
|
dir: '{{.USER_WORKING_DIR}}'
|
|
85
97
|
cmds:
|
|
86
|
-
-
|
|
98
|
+
- task: :engine:invoke
|
|
99
|
+
vars:
|
|
100
|
+
ENGINE_CMD: 'triage-actions reset {{.CLI_ARGS}}'
|
|
87
101
|
|
|
88
102
|
history:
|
|
89
103
|
desc: "Print the full triage timeline for an issue, ordered by timestamp. Read-only. (#845 Story 3)"
|
|
90
104
|
internal: true
|
|
91
|
-
deps: [":
|
|
105
|
+
deps: [":engine:_ts-build"]
|
|
92
106
|
dir: '{{.USER_WORKING_DIR}}'
|
|
93
107
|
cmds:
|
|
94
|
-
-
|
|
108
|
+
- task: :engine:invoke
|
|
109
|
+
vars:
|
|
110
|
+
ENGINE_CMD: 'triage-actions history {{.CLI_ARGS}}'
|
|
@@ -37,7 +37,9 @@ tasks:
|
|
|
37
37
|
bootstrap:
|
|
38
38
|
desc: "Idempotent triage v1 installer (#845): populate cache, backfill audit log, ensure gitignore for .deft-cache/ and vbrief/.eval/. Re-runnable; per-step progress on stderr; cache:fetch-all wall-clock cap (#952). -- task triage:bootstrap [-- --repo OWNER/NAME] [--limit N] [--state open|closed|all] [--fetch-timeout-s N] [--quiet] [--json]"
|
|
39
39
|
internal: true
|
|
40
|
-
deps: [":
|
|
40
|
+
deps: [":engine:_ts-build"]
|
|
41
41
|
dir: '{{.USER_WORKING_DIR}}'
|
|
42
42
|
cmds:
|
|
43
|
-
-
|
|
43
|
+
- task: :engine:invoke
|
|
44
|
+
vars:
|
|
45
|
+
ENGINE_CMD: 'triage-bootstrap --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/triage-bulk.yml
CHANGED
|
@@ -37,39 +37,49 @@ tasks:
|
|
|
37
37
|
bulk-accept:
|
|
38
38
|
desc: "Bulk accept candidates (#845 Story 4) -- task triage:bulk-accept -- --repo OWNER/NAME [--label L] [--author A] [--age-days N] [--cluster C] [--re-action]"
|
|
39
39
|
internal: true
|
|
40
|
-
deps: [":
|
|
40
|
+
deps: [":engine:_ts-build"]
|
|
41
41
|
dir: '{{.USER_WORKING_DIR}}'
|
|
42
42
|
cmds:
|
|
43
|
-
-
|
|
43
|
+
- task: :engine:invoke
|
|
44
|
+
vars:
|
|
45
|
+
ENGINE_CMD: 'triage-bulk accept {{.CLI_ARGS}}'
|
|
44
46
|
|
|
45
47
|
bulk-reject:
|
|
46
48
|
desc: "Bulk reject candidates (#845 Story 4) -- task triage:bulk-reject -- --repo OWNER/NAME --reason 'why' [--label L] [--author A] [--age-days N] [--cluster C] [--re-action]"
|
|
47
49
|
internal: true
|
|
48
|
-
deps: [":
|
|
50
|
+
deps: [":engine:_ts-build"]
|
|
49
51
|
dir: '{{.USER_WORKING_DIR}}'
|
|
50
52
|
cmds:
|
|
51
|
-
-
|
|
53
|
+
- task: :engine:invoke
|
|
54
|
+
vars:
|
|
55
|
+
ENGINE_CMD: 'triage-bulk reject {{.CLI_ARGS}}'
|
|
52
56
|
|
|
53
57
|
bulk-defer:
|
|
54
58
|
desc: "Bulk defer candidates (#845 Story 4) -- task triage:bulk-defer -- --repo OWNER/NAME [--label L] [--author A] [--age-days N] [--cluster C] [--re-action]"
|
|
55
59
|
internal: true
|
|
56
|
-
deps: [":
|
|
60
|
+
deps: [":engine:_ts-build"]
|
|
57
61
|
dir: '{{.USER_WORKING_DIR}}'
|
|
58
62
|
cmds:
|
|
59
|
-
-
|
|
63
|
+
- task: :engine:invoke
|
|
64
|
+
vars:
|
|
65
|
+
ENGINE_CMD: 'triage-bulk defer {{.CLI_ARGS}}'
|
|
60
66
|
|
|
61
67
|
bulk-needs-ac:
|
|
62
68
|
desc: "Bulk needs-ac candidates (#845 Story 4) -- task triage:bulk-needs-ac -- --repo OWNER/NAME [--label L] [--author A] [--age-days N] [--cluster C] [--re-action]"
|
|
63
69
|
internal: true
|
|
64
|
-
deps: [":
|
|
70
|
+
deps: [":engine:_ts-build"]
|
|
65
71
|
dir: '{{.USER_WORKING_DIR}}'
|
|
66
72
|
cmds:
|
|
67
|
-
-
|
|
73
|
+
- task: :engine:invoke
|
|
74
|
+
vars:
|
|
75
|
+
ENGINE_CMD: 'triage-bulk needs-ac {{.CLI_ARGS}}'
|
|
68
76
|
|
|
69
77
|
refresh-active:
|
|
70
78
|
desc: "Pre-swarm freshness gate (#845 Story 4) -- detects drift between cached and live `gh issue view` for every issue referenced in vbrief/active/*.vbrief.json"
|
|
71
79
|
internal: true
|
|
72
|
-
deps: [":
|
|
80
|
+
deps: [":engine:_ts-build"]
|
|
73
81
|
dir: '{{.USER_WORKING_DIR}}'
|
|
74
82
|
cmds:
|
|
75
|
-
-
|
|
83
|
+
- task: :engine:invoke
|
|
84
|
+
vars:
|
|
85
|
+
ENGINE_CMD: 'triage-refresh --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
@@ -24,7 +24,9 @@ tasks:
|
|
|
24
24
|
classify:
|
|
25
25
|
desc: "Inspect / validate plan.policy.triageAutoClassify[] + triageHoldMarkers[] (#1129 / D10). -- task triage:classify -- [--list | --validate]"
|
|
26
26
|
internal: true
|
|
27
|
-
deps: [":
|
|
27
|
+
deps: [":engine:_ts-build"]
|
|
28
28
|
dir: '{{.USER_WORKING_DIR}}'
|
|
29
29
|
cmds:
|
|
30
|
-
-
|
|
30
|
+
- task: :engine:invoke
|
|
31
|
+
vars:
|
|
32
|
+
ENGINE_CMD: 'triage-classify --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/triage-queue.yml
CHANGED
|
@@ -28,23 +28,29 @@ tasks:
|
|
|
28
28
|
queue:
|
|
29
29
|
desc: "Print the ranked triage queue (#1128 / D11). -- task triage:queue [-- --repo OWNER/NAME] [--limit N]"
|
|
30
30
|
internal: true
|
|
31
|
-
deps: [":
|
|
31
|
+
deps: [":engine:_ts-build"]
|
|
32
32
|
dir: '{{.USER_WORKING_DIR}}'
|
|
33
33
|
cmds:
|
|
34
|
-
-
|
|
34
|
+
- task: :engine:invoke
|
|
35
|
+
vars:
|
|
36
|
+
ENGINE_CMD: 'triage-queue queue --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
35
37
|
|
|
36
38
|
show:
|
|
37
39
|
desc: "Per-issue triage detail (#1128 / D11). -- task triage:show -- <N> [--repo OWNER/NAME]"
|
|
38
40
|
internal: true
|
|
39
|
-
deps: [":
|
|
41
|
+
deps: [":engine:_ts-build"]
|
|
40
42
|
dir: '{{.USER_WORKING_DIR}}'
|
|
41
43
|
cmds:
|
|
42
|
-
-
|
|
44
|
+
- task: :engine:invoke
|
|
45
|
+
vars:
|
|
46
|
+
ENGINE_CMD: 'triage-queue show --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
43
47
|
|
|
44
48
|
audit:
|
|
45
49
|
desc: "Audit-log surface (#1128 / D11, #1180). -- task triage:audit [-- --format=text|json] [--vbrief-staleness] [--since=<window>] [--action=<verb>] [--repo OWNER/NAME]"
|
|
46
50
|
internal: true
|
|
47
|
-
deps: [":
|
|
51
|
+
deps: [":engine:_ts-build"]
|
|
48
52
|
dir: '{{.USER_WORKING_DIR}}'
|
|
49
53
|
cmds:
|
|
50
|
-
-
|
|
54
|
+
- task: :engine:invoke
|
|
55
|
+
vars:
|
|
56
|
+
ENGINE_CMD: 'triage-queue audit --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
@@ -23,7 +23,9 @@ tasks:
|
|
|
23
23
|
reconcile:
|
|
24
24
|
desc: "Self-heal the triage audit log (#1468): backfill missing `accept` decisions for proposed/pending/active vBRIEFs carrying an x-vbrief/github-issue reference, without a cache re-fetch. Idempotent. -- task triage:reconcile [-- --repo OWNER/NAME] [--dry-run] [--json]"
|
|
25
25
|
internal: true
|
|
26
|
-
deps: [":
|
|
26
|
+
deps: [":engine:_ts-build"]
|
|
27
27
|
dir: '{{.USER_WORKING_DIR}}'
|
|
28
28
|
cmds:
|
|
29
|
-
-
|
|
29
|
+
- task: :engine:invoke
|
|
30
|
+
vars:
|
|
31
|
+
ENGINE_CMD: 'triage-reconcile --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
@@ -23,7 +23,9 @@ tasks:
|
|
|
23
23
|
scope-drift:
|
|
24
24
|
desc: "Detect subscription drift -- unsubscribed labels/milestones on cached open issues (#1133 / D14). -- task triage:scope-drift [-- --ignore-label=L | --ignore-milestone=M]"
|
|
25
25
|
internal: true
|
|
26
|
-
deps: [":
|
|
26
|
+
deps: [":engine:_ts-build"]
|
|
27
27
|
dir: '{{.USER_WORKING_DIR}}'
|
|
28
28
|
cmds:
|
|
29
|
-
-
|
|
29
|
+
- task: :engine:invoke
|
|
30
|
+
vars:
|
|
31
|
+
ENGINE_CMD: 'triage-scope-drift --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/triage-scope.yml
CHANGED
|
@@ -25,7 +25,9 @@ tasks:
|
|
|
25
25
|
scope:
|
|
26
26
|
desc: "Inspect / mutate / diff the typed plan.policy.triageScope[] subscription + triageScopeIgnores[] (#1131 / D12, #1133 / D14, #1182 / D14c). -- task triage:scope -- [--list] [--add-label=L | --add-milestone=M | --ignore-label=L] [--diff-from-upstream --repo OWNER/NAME] [--refresh-denominator --repo OWNER/NAME --count N]"
|
|
27
27
|
internal: true
|
|
28
|
-
deps: [":
|
|
28
|
+
deps: [":engine:_ts-build"]
|
|
29
29
|
dir: '{{.USER_WORKING_DIR}}'
|
|
30
30
|
cmds:
|
|
31
|
-
-
|
|
31
|
+
- task: :engine:invoke
|
|
32
|
+
vars:
|
|
33
|
+
ENGINE_CMD: 'triage-scope --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
@@ -25,9 +25,11 @@ tasks:
|
|
|
25
25
|
smoketest:
|
|
26
26
|
desc: "Run the N6 (#1146) end-to-end smoketest against the hermetic 20-issue fixture. Exits 0 on PASS / 1 on first failure. -- task triage:smoketest [-- --verbose] [--keep-tempdir] [--cache-only]"
|
|
27
27
|
internal: true
|
|
28
|
-
deps: [":
|
|
28
|
+
deps: [":engine:_ts-build"]
|
|
29
29
|
dir: '{{.USER_WORKING_DIR}}'
|
|
30
30
|
env:
|
|
31
31
|
DEFT_ROOT: '{{.DEFT_ROOT}}'
|
|
32
32
|
cmds:
|
|
33
|
-
-
|
|
33
|
+
- task: :engine:invoke
|
|
34
|
+
vars:
|
|
35
|
+
ENGINE_CMD: 'triage-smoketest {{.CLI_ARGS}}'
|
|
@@ -22,15 +22,19 @@ tasks:
|
|
|
22
22
|
subscribe:
|
|
23
23
|
desc: "Subscribe to a label / milestone / issue on plan.policy.triageScope[] (#1133 / D14). -- task triage:subscribe -- (--label=L | --milestone=M | --issue=N)"
|
|
24
24
|
internal: true
|
|
25
|
-
deps: [":
|
|
25
|
+
deps: [":engine:_ts-build"]
|
|
26
26
|
dir: '{{.USER_WORKING_DIR}}'
|
|
27
27
|
cmds:
|
|
28
|
-
-
|
|
28
|
+
- task: :engine:invoke
|
|
29
|
+
vars:
|
|
30
|
+
ENGINE_CMD: 'triage-subscribe subscribe --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
29
31
|
|
|
30
32
|
unsubscribe:
|
|
31
33
|
desc: "Unsubscribe a label / milestone / issue from plan.policy.triageScope[] (#1133 / D14). -- task triage:unsubscribe -- (--label=L | --milestone=M | --issue=N)"
|
|
32
34
|
internal: true
|
|
33
|
-
deps: [":
|
|
35
|
+
deps: [":engine:_ts-build"]
|
|
34
36
|
dir: '{{.USER_WORKING_DIR}}'
|
|
35
37
|
cmds:
|
|
36
|
-
-
|
|
38
|
+
- task: :engine:invoke
|
|
39
|
+
vars:
|
|
40
|
+
ENGINE_CMD: 'triage-subscribe unsubscribe --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/triage-summary.yml
CHANGED
|
@@ -23,7 +23,9 @@ tasks:
|
|
|
23
23
|
summary:
|
|
24
24
|
desc: "Emit the D2 (#1122) one-line triage state for the session-start ritual (N9 / #1149). Always exits 0; appends a JSONL record to vbrief/.eval/summary-history.jsonl. -- task triage:summary -- [--json] [--no-history]"
|
|
25
25
|
internal: true
|
|
26
|
-
deps: [":
|
|
26
|
+
deps: [":engine:_ts-build"]
|
|
27
27
|
dir: '{{.USER_WORKING_DIR}}'
|
|
28
28
|
cmds:
|
|
29
|
-
-
|
|
29
|
+
- task: :engine:invoke
|
|
30
|
+
vars:
|
|
31
|
+
ENGINE_CMD: 'triage-summary --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/triage-welcome.yml
CHANGED
|
@@ -24,9 +24,11 @@ tasks:
|
|
|
24
24
|
welcome:
|
|
25
25
|
desc: "Run the 6-phase onboarding ritual (N3 / #1143): detect prior state, prompt subscription scope, run triage:bootstrap, prompt wipCap, offer WIP relief, print triage:summary. Idempotent; re-run resumes cleanly. -- task triage:welcome -- [--no-subprocess]"
|
|
26
26
|
internal: true
|
|
27
|
-
deps: [":
|
|
27
|
+
deps: [":engine:_ts-build"]
|
|
28
28
|
dir: '{{.USER_WORKING_DIR}}'
|
|
29
29
|
env:
|
|
30
30
|
DEFT_TASK_PREFIX: '{{.DEFT_TASK_PREFIX | default ""}}'
|
|
31
31
|
cmds:
|
|
32
|
-
-
|
|
32
|
+
- task: :engine:invoke
|
|
33
|
+
vars:
|
|
34
|
+
ENGINE_CMD: 'triage-welcome --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/ts.yml
CHANGED
|
@@ -28,7 +28,9 @@ tasks:
|
|
|
28
28
|
desc: "Run the TS lane (lint+build+test) when a Node toolchain is present; skip with a notice otherwise (#1530, #1790)."
|
|
29
29
|
dir: '{{.DEFT_ROOT}}'
|
|
30
30
|
cmds:
|
|
31
|
-
-
|
|
31
|
+
- task: :engine:invoke
|
|
32
|
+
vars:
|
|
33
|
+
ENGINE_CMD: 'ts-check-lane --project-root "{{.DEFT_ROOT}}"'
|
|
32
34
|
|
|
33
35
|
encoding:
|
|
34
36
|
desc: "Run the ported verify:encoding gate (TS @deftai/core port, #1718)"
|