@deftai/directive-content 0.61.2 → 0.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/QUICK-START.md +12 -15
- package/Taskfile.yml +6 -25
- package/UPGRADING.md +42 -12
- package/docs/BROWNFIELD.md +7 -3
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +5 -5
- package/skills/deft-directive-build/SKILL.md +3 -3
- package/skills/deft-directive-refinement/SKILL.md +2 -0
- package/skills/deft-directive-setup/SKILL.md +17 -48
- package/skills/deft-directive-sync/SKILL.md +4 -4
- package/skills/deft-directive-triage/SKILL.md +2 -0
- package/tasks/core.yml +9 -123
- package/tasks/framework.yml +15 -19
- package/tasks/migrate.yml +5 -62
- package/tasks/ts.yml +2 -293
- package/tasks/umbrella.yml +30 -0
- package/templates/agent-prompt-preamble.md +14 -0
- package/templates/agents-entry.md +10 -1
- package/tasks/ci.yml +0 -57
package/tasks/ts.yml
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
version: '3'
|
|
2
2
|
|
|
3
|
-
# TypeScript engine monorepo verbs (#1717).
|
|
4
|
-
# root (packages/*) and coexists with the Python/Go engine during the
|
|
5
|
-
# strangler-fig migration.
|
|
6
|
-
#
|
|
7
|
-
# `check:framework-source` now runs the TS lane via the `ts:check-lane`
|
|
8
|
-
# Node-toolchain-aware guard (#1790): when `pnpm` is on PATH it runs
|
|
9
|
-
# lint+build+test, and when it is absent it skips with a notice and exits 0
|
|
10
|
-
# (so the gate still works in Node-less environments, mirroring the #1474
|
|
11
|
-
# vendored-consumer guards). This closed the PR #1780 gap where a TS biome
|
|
12
|
-
# failure passed a local `task check` but reddened CI. The dedicated `ts` CI
|
|
13
|
-
# job still runs the lane unconditionally.
|
|
14
|
-
#
|
|
15
|
-
# DEFT_ROOT resolves to the repo root (this fragment lives in tasks/, so
|
|
16
|
-
# {{.TASKFILE_DIR}}/.. is the root), matching the sibling task fragments.
|
|
3
|
+
# TypeScript engine monorepo verbs (#1717). Parity oracle tasks removed (#1860).
|
|
17
4
|
|
|
18
5
|
vars:
|
|
19
6
|
DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'
|
|
@@ -38,7 +25,7 @@ tasks:
|
|
|
38
25
|
- pnpm run lint
|
|
39
26
|
|
|
40
27
|
check-lane:
|
|
41
|
-
desc: "Run the TS lane (lint+build+test) when a Node toolchain is present; skip with a notice otherwise (#1530
|
|
28
|
+
desc: "Run the TS lane (lint+build+test) when a Node toolchain is present; skip with a notice otherwise (#1530, #1790)."
|
|
42
29
|
dir: '{{.DEFT_ROOT}}'
|
|
43
30
|
cmds:
|
|
44
31
|
- node "{{.DEFT_ROOT}}/packages/cli/dist/bin.js" ts-check-lane --project-root "{{.DEFT_ROOT}}"
|
|
@@ -48,281 +35,3 @@ tasks:
|
|
|
48
35
|
deps: [build]
|
|
49
36
|
cmds:
|
|
50
37
|
- node "{{.DEFT_ROOT}}/packages/cli/dist/verify-encoding.js" --all --project-root "{{.DEFT_ROOT}}"
|
|
51
|
-
|
|
52
|
-
parity:
|
|
53
|
-
desc: "Golden-diff the ported verify:encoding gate vs the Python oracle, cache-off (#1718)"
|
|
54
|
-
deps: [build]
|
|
55
|
-
cmds:
|
|
56
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/parity.js"
|
|
57
|
-
|
|
58
|
-
policy-parity:
|
|
59
|
-
desc: "Golden-diff the ported policy surface vs the Python oracle, cache-off (#1722)"
|
|
60
|
-
deps: [build]
|
|
61
|
-
cmds:
|
|
62
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/policy-parity.js"
|
|
63
|
-
|
|
64
|
-
preflight-parity:
|
|
65
|
-
desc: "Golden-diff the ported vBRIEF preflight gate vs the Python oracle, cache-off (#1721)"
|
|
66
|
-
deps: [build]
|
|
67
|
-
cmds:
|
|
68
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-preflight-parity.js"
|
|
69
|
-
|
|
70
|
-
story-ready-parity:
|
|
71
|
-
desc: "Golden-diff the ported verify:story-ready gate vs the Python oracle, cache-off (#1720)"
|
|
72
|
-
deps: [build]
|
|
73
|
-
cmds:
|
|
74
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/story-ready-parity.js"
|
|
75
|
-
|
|
76
|
-
branch-parity:
|
|
77
|
-
desc: "Golden-diff the ported verify:branch gate vs the Python oracle, cache-off (#1719)"
|
|
78
|
-
deps: [build]
|
|
79
|
-
cmds:
|
|
80
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/branch-parity.js"
|
|
81
|
-
|
|
82
|
-
wip-cap-parity:
|
|
83
|
-
desc: "Golden-diff the ported verify:wip-cap gate vs the Python oracle, cache-off (#1723)"
|
|
84
|
-
deps: [build]
|
|
85
|
-
cmds:
|
|
86
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/wip-cap-parity.js"
|
|
87
|
-
|
|
88
|
-
scm-parity:
|
|
89
|
-
desc: "Golden-diff the ported scm.py SCM boundary vs the Python oracle, cache-off (#1724)"
|
|
90
|
-
deps: [build]
|
|
91
|
-
cmds:
|
|
92
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/scm-parity.js"
|
|
93
|
-
|
|
94
|
-
triage-parity:
|
|
95
|
-
desc: "Golden-diff every ported triage verb vs its Python oracle, cache-off (#1530 Wave 3, #1725)"
|
|
96
|
-
deps: [build]
|
|
97
|
-
cmds:
|
|
98
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-queue-parity.js"
|
|
99
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-summary-parity.js"
|
|
100
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-classify-parity.js"
|
|
101
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-actions-parity.js"
|
|
102
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-bootstrap-parity.js"
|
|
103
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-scope-parity.js"
|
|
104
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-aux-a-parity.js"
|
|
105
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-aux-b-parity.js"
|
|
106
|
-
|
|
107
|
-
scope-lifecycle-parity:
|
|
108
|
-
desc: "Golden-diff the ported scope:* lifecycle family vs the Python oracle, cache-off (#1726)"
|
|
109
|
-
deps: [build]
|
|
110
|
-
cmds:
|
|
111
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/scope-lifecycle-parity.js"
|
|
112
|
-
|
|
113
|
-
slice-parity:
|
|
114
|
-
desc: "Golden-diff the ported slice:* family vs the Python oracle, cache-off (#1727)"
|
|
115
|
-
deps: [build]
|
|
116
|
-
cmds:
|
|
117
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/slice-parity.js"
|
|
118
|
-
|
|
119
|
-
cache-parity:
|
|
120
|
-
desc: "Golden-diff the ported unified content cache vs the Python oracle, cache-off (#1728)"
|
|
121
|
-
deps: [build]
|
|
122
|
-
cmds:
|
|
123
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/cache-parity.js"
|
|
124
|
-
|
|
125
|
-
doctor-parity:
|
|
126
|
-
desc: "Golden-diff the ported deft doctor vs the Python oracle, cache-off (#1728)"
|
|
127
|
-
deps: [build]
|
|
128
|
-
cmds:
|
|
129
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/doctor-parity.js"
|
|
130
|
-
|
|
131
|
-
release-parity:
|
|
132
|
-
desc: "Golden-diff the ported release.py core vs the Python oracle, cache-off (#1729)"
|
|
133
|
-
deps: [build]
|
|
134
|
-
cmds:
|
|
135
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-parity.js"
|
|
136
|
-
|
|
137
|
-
release-publish-parity:
|
|
138
|
-
desc: "Golden-diff the ported release_publish.py vs the Python oracle, cache-off (#1729)"
|
|
139
|
-
deps: [build]
|
|
140
|
-
cmds:
|
|
141
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-publish-parity.js"
|
|
142
|
-
|
|
143
|
-
release-rollback-parity:
|
|
144
|
-
desc: "Golden-diff the ported release_rollback.py vs the Python oracle, cache-off (#1729)"
|
|
145
|
-
deps: [build]
|
|
146
|
-
cmds:
|
|
147
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-rollback-parity.js"
|
|
148
|
-
|
|
149
|
-
release-e2e-parity:
|
|
150
|
-
desc: "Golden-diff the ported release_e2e.py vs the Python oracle, cache-off (#1729)"
|
|
151
|
-
deps: [build]
|
|
152
|
-
cmds:
|
|
153
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-e2e-parity.js"
|
|
154
|
-
|
|
155
|
-
pr-merge-readiness-parity:
|
|
156
|
-
desc: "Golden-diff the ported pr_merge_readiness.py vs the Python oracle, cache-off (#1730)"
|
|
157
|
-
deps: [build]
|
|
158
|
-
cmds:
|
|
159
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-merge-readiness-parity.js"
|
|
160
|
-
|
|
161
|
-
pr-protected-issues-parity:
|
|
162
|
-
desc: "Golden-diff the ported pr_check_protected_issues.py vs the Python oracle, cache-off (#1730)"
|
|
163
|
-
deps: [build]
|
|
164
|
-
cmds:
|
|
165
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-protected-issues-parity.js"
|
|
166
|
-
|
|
167
|
-
pr-closing-keywords-parity:
|
|
168
|
-
desc: "Golden-diff the ported pr_check_closing_keywords.py vs the Python oracle, cache-off (#1730)"
|
|
169
|
-
deps: [build]
|
|
170
|
-
cmds:
|
|
171
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-closing-keywords-parity.js"
|
|
172
|
-
|
|
173
|
-
pr-monitor-parity:
|
|
174
|
-
desc: "Golden-diff the ported monitor_pr.py vs the Python oracle, cache-off (#1730)"
|
|
175
|
-
deps: [build]
|
|
176
|
-
cmds:
|
|
177
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-monitor-parity.js"
|
|
178
|
-
|
|
179
|
-
pr-wait-mergeable-parity:
|
|
180
|
-
desc: "Golden-diff the ported pr_wait_mergeable.py cascade composer vs the Python oracle, cache-off (#1730)"
|
|
181
|
-
deps: [build]
|
|
182
|
-
cmds:
|
|
183
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-wait-mergeable-parity.js"
|
|
184
|
-
|
|
185
|
-
vbrief-build-parity:
|
|
186
|
-
desc: "Golden-diff the ported vBRIEF construction foundation vs the Python oracle, cache-off (#1782 s1)"
|
|
187
|
-
deps: [build]
|
|
188
|
-
cmds:
|
|
189
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-build-parity.js"
|
|
190
|
-
|
|
191
|
-
vbrief-reconcile-parity:
|
|
192
|
-
desc: "Golden-diff the ported vBRIEF reconciliation engine vs the Python oracle, cache-off (#1782 s4)"
|
|
193
|
-
deps: [build]
|
|
194
|
-
cmds:
|
|
195
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-reconcile-parity.js"
|
|
196
|
-
|
|
197
|
-
vbrief-validation-parity:
|
|
198
|
-
desc: "Golden-diff the ported vBRIEF validation primitives vs the Python oracle, cache-off (#1782 s2)"
|
|
199
|
-
deps: [build]
|
|
200
|
-
cmds:
|
|
201
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-validation-parity.js"
|
|
202
|
-
|
|
203
|
-
vbrief-validate-parity:
|
|
204
|
-
desc: "Golden-diff the ported vbrief:validate + verify:vbrief-conformance gates vs the Python oracle, cache-off (#1782 s3)"
|
|
205
|
-
deps: [build]
|
|
206
|
-
cmds:
|
|
207
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-validate-parity.js"
|
|
208
|
-
|
|
209
|
-
vbrief-activate-parity:
|
|
210
|
-
desc: "Golden-diff the ported vbrief_activate.py lifecycle verb vs the Python oracle, cache-off (#1782 s5)"
|
|
211
|
-
deps: [build]
|
|
212
|
-
cmds:
|
|
213
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-activate-parity.js"
|
|
214
|
-
|
|
215
|
-
verify-env-parity:
|
|
216
|
-
desc: "Golden-diff the ported verify_tools / verify_hooks_installed / toolchain-check / verify_no_task_runtime gates vs the Python oracle, cache-off (#1783 s1)"
|
|
217
|
-
deps: [build]
|
|
218
|
-
cmds:
|
|
219
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/verify-env-parity.js"
|
|
220
|
-
|
|
221
|
-
verify-source-parity:
|
|
222
|
-
desc: "Golden-diff the ported source-tree scanner gates vs the Python oracle, cache-off (#1783 s2)"
|
|
223
|
-
deps: [build]
|
|
224
|
-
cmds:
|
|
225
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/verify-source-parity.js"
|
|
226
|
-
|
|
227
|
-
validate-content-parity:
|
|
228
|
-
desc: "Golden-diff the ported content validator gates vs the Python oracle, cache-off (#1783 s3)"
|
|
229
|
-
deps: [build]
|
|
230
|
-
cmds:
|
|
231
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/validate-content-parity.js"
|
|
232
|
-
|
|
233
|
-
render-parity:
|
|
234
|
-
desc: "Golden-diff the ported spec/PRD/render family vs the Python oracle, cache-off (#1785)"
|
|
235
|
-
deps: [build]
|
|
236
|
-
cmds:
|
|
237
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/render-parity.js"
|
|
238
|
-
|
|
239
|
-
codebase-parity:
|
|
240
|
-
desc: "Golden-diff the ported codebase mapping + capacity modules vs the Python oracle, cache-off (#1786)"
|
|
241
|
-
deps: [build]
|
|
242
|
-
cmds:
|
|
243
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/codebase-parity.js"
|
|
244
|
-
|
|
245
|
-
intake-parity:
|
|
246
|
-
desc: "Golden-diff the ported issue intake + reconcile surface vs the Python oracle, cache-off (#1784)"
|
|
247
|
-
deps: [build]
|
|
248
|
-
cmds:
|
|
249
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/intake-parity.js"
|
|
250
|
-
|
|
251
|
-
lifecycle-packs-parity:
|
|
252
|
-
desc: "Golden-diff the ported lifecycle hygiene + events + packs surface vs the Python oracle, cache-off (#1787 s2)"
|
|
253
|
-
deps: [build]
|
|
254
|
-
cmds:
|
|
255
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/lifecycle-packs-parity.js"
|
|
256
|
-
|
|
257
|
-
session-parity:
|
|
258
|
-
desc: "Golden-diff the ported session/ritual core vs the Python oracle, cache-off (#1787 s1)"
|
|
259
|
-
deps: [build]
|
|
260
|
-
cmds:
|
|
261
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/session-parity.js"
|
|
262
|
-
|
|
263
|
-
orchestration-parity:
|
|
264
|
-
desc: "Golden-diff the ported monitor/investigation gate verbs vs the Python oracle, cache-off (#1788 s2)"
|
|
265
|
-
deps: [build]
|
|
266
|
-
cmds:
|
|
267
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/orchestration-parity.js"
|
|
268
|
-
|
|
269
|
-
swarm-parity:
|
|
270
|
-
desc: "Golden-diff the ported swarm cohort verbs vs the Python oracle, cache-off (#1788 s1)"
|
|
271
|
-
deps: [build]
|
|
272
|
-
cmds:
|
|
273
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/swarm-parity.js"
|
|
274
|
-
|
|
275
|
-
platform-parity:
|
|
276
|
-
desc: "Golden-diff the ported AGENTS.md/version/platform utilities vs the Python oracle, cache-off (#1787 s3)"
|
|
277
|
-
deps: [build]
|
|
278
|
-
cmds:
|
|
279
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/platform-parity.js"
|
|
280
|
-
|
|
281
|
-
parity-all:
|
|
282
|
-
desc: "Run every TS-port golden-diff parity harness vs the Python oracle (#1530 Wave 2)"
|
|
283
|
-
deps: [build]
|
|
284
|
-
cmds:
|
|
285
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/parity.js"
|
|
286
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/policy-parity.js"
|
|
287
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-preflight-parity.js"
|
|
288
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/story-ready-parity.js"
|
|
289
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/branch-parity.js"
|
|
290
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/wip-cap-parity.js"
|
|
291
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/scm-parity.js"
|
|
292
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-queue-parity.js"
|
|
293
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-summary-parity.js"
|
|
294
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-classify-parity.js"
|
|
295
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-actions-parity.js"
|
|
296
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-bootstrap-parity.js"
|
|
297
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-scope-parity.js"
|
|
298
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-aux-a-parity.js"
|
|
299
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/triage-aux-b-parity.js"
|
|
300
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/scope-lifecycle-parity.js"
|
|
301
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/slice-parity.js"
|
|
302
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/cache-parity.js"
|
|
303
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/doctor-parity.js"
|
|
304
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-parity.js"
|
|
305
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-publish-parity.js"
|
|
306
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-rollback-parity.js"
|
|
307
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/release-e2e-parity.js"
|
|
308
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-merge-readiness-parity.js"
|
|
309
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-protected-issues-parity.js"
|
|
310
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-closing-keywords-parity.js"
|
|
311
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-monitor-parity.js"
|
|
312
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/pr-wait-mergeable-parity.js"
|
|
313
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-build-parity.js"
|
|
314
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-reconcile-parity.js"
|
|
315
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-validation-parity.js"
|
|
316
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-validate-parity.js"
|
|
317
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/vbrief-activate-parity.js"
|
|
318
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/verify-env-parity.js"
|
|
319
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/verify-source-parity.js"
|
|
320
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/validate-content-parity.js"
|
|
321
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/render-parity.js"
|
|
322
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/codebase-parity.js"
|
|
323
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/intake-parity.js"
|
|
324
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/lifecycle-packs-parity.js"
|
|
325
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/session-parity.js"
|
|
326
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/orchestration-parity.js"
|
|
327
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/swarm-parity.js"
|
|
328
|
-
- node "{{.DEFT_ROOT}}/packages/cli/dist/platform-parity.js"
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
version: '3'
|
|
2
|
+
|
|
3
|
+
# tasks/umbrella.yml — umbrella issue tooling (#1152 / #2066).
|
|
4
|
+
#
|
|
5
|
+
# Hosts read-only surfaces for the canonical current-shape comment convention.
|
|
6
|
+
# Runs from the consumer project root so git origin and gh auth resolve against
|
|
7
|
+
# the operator's repo, not deftai/directive (#538 pattern).
|
|
8
|
+
|
|
9
|
+
vars:
|
|
10
|
+
DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'
|
|
11
|
+
|
|
12
|
+
tasks:
|
|
13
|
+
_ensure-ts:
|
|
14
|
+
internal: true
|
|
15
|
+
desc: "Build the TS engine before umbrella gates (#2066)"
|
|
16
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
17
|
+
cmds:
|
|
18
|
+
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
19
|
+
|
|
20
|
+
current-shape:
|
|
21
|
+
desc: "Fetch umbrella ## Current shape comment (#1152) — task umbrella:current-shape <N> [-- --repo OWNER/REPO | --json | --strict]. Does NOT read the issue body."
|
|
22
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
23
|
+
deps:
|
|
24
|
+
- _ensure-ts
|
|
25
|
+
cmds:
|
|
26
|
+
- task: :engine:invoke
|
|
27
|
+
vars:
|
|
28
|
+
ENGINE_CMD: >-
|
|
29
|
+
umbrella:current-shape --project-root "{{.USER_WORKING_DIR}}"
|
|
30
|
+
{{.CLI_ARGS}}
|
|
@@ -233,6 +233,20 @@ task scm:body:pr:edit -- --repo OWNER/REPO --pr 42 --body-file "$bodyFile"
|
|
|
233
233
|
|
|
234
234
|
The wrapper reads UTF-8 body text from a file or stdin, sends JSON to `gh api --input -` via `_safe_subprocess.run_text` with `shell=False`, and prints the live post-mutation read-back object. Use live `gh` for immediate verification after mutations; do not use `ghx` for the first read-back because it may serve a cached stale GET.
|
|
235
235
|
|
|
236
|
+
## 5.6 Umbrella status — claim-cites-state-surface (#2066)
|
|
237
|
+
|
|
238
|
+
Before stating an umbrella or epic's current status (what is done, what blocks, wave order), satisfy the claim-cites-state-surface rule:
|
|
239
|
+
|
|
240
|
+
1. ! Fetch issue comments via REST: `gh api repos/<owner>/<repo>/issues/<N>/comments` (or `ghx api ...` for cached read-only GET).
|
|
241
|
+
2. ! Read the `## Current shape (as of pass-N)` comment and any linked context or `LockedDecisions` vBRIEF referenced there. Follow the AGENTS.md #1152 reading order: body -> current-shape comment -> amendment comments.
|
|
242
|
+
3. ! Any "X is done" / "X is the blocker" assertion about an umbrella MUST cite the current-shape comment or another state artifact in the same message.
|
|
243
|
+
|
|
244
|
+
Anti-pattern: reading only the issue body (pass-1 plan, stale by design) and concluding umbrella status from it — e.g. `gh issue view <N> --json body` or REST `repos/.../issues/<N>` body field alone. The live recurrence on 2026-06-28 misread #2013 Wave 0 status this way despite #1152 being loaded.
|
|
245
|
+
|
|
246
|
+
⊗ Conclude umbrella or epic status from the issue body alone (#2066).
|
|
247
|
+
|
|
248
|
+
Reference: AGENTS.md `## Umbrella current-shape convention (#1152)`, issue #2066.
|
|
249
|
+
|
|
236
250
|
## 6. No Draft re-toggling within a single review cycle
|
|
237
251
|
|
|
238
252
|
Once a PR transitions Draft -> Ready, keep it Ready unless a P0 finding requires re-Draft. Repeated Draft<->Ready toggles cost GraphQL mutations and trigger stale CheckRun states downstream (Greptile re-runs, branch-protection re-evaluations).
|
|
@@ -15,7 +15,7 @@ Deft is installed in .deft/core/. Full guidelines: .deft/core/main.md
|
|
|
15
15
|
- ./PROJECT.md exists and is not a deprecation redirect (`<!-- deft:deprecated-redirect -->` or `<!-- Purpose: deprecation redirect -->`).
|
|
16
16
|
- ./vbrief/ exists but any of the five lifecycle subfolders (proposed/, pending/, active/, completed/, cancelled/) is missing
|
|
17
17
|
|
|
18
|
-
→ On detection: read .deft/core/.agents/skills/deft-directive-setup/SKILL.md "Pre-Cutover Detection Guard" section and follow the migration path BEFORE any other action. The Migrating from pre-v0.20 section of the full guidelines
|
|
18
|
+
→ On detection: read .deft/core/.agents/skills/deft-directive-setup/SKILL.md "Pre-Cutover Detection Guard" section and follow the frozen migration path BEFORE any other action. The Migrating from pre-v0.20 section of the full guidelines and UPGRADING.md § Frozen pre-v0.20 document-model migration (#2068) describe the pinned v0.59.0 path.
|
|
19
19
|
|
|
20
20
|
⊗ Start Phase 1, Phase 2, or a Returning-Sessions workflow while pre-cutover artifacts are present — run migration first.
|
|
21
21
|
|
|
@@ -83,6 +83,15 @@ The `plan.policy.wipCap` field caps the number of in-flight scope vBRIEFs (`vbri
|
|
|
83
83
|
|
|
84
84
|
⊗ Recommend a specific issue or vBRIEF without consulting `deft triage:queue` (or showing the operator the result of the consultation).
|
|
85
85
|
|
|
86
|
+
## Umbrella status reading (#1152 / #2066)
|
|
87
|
+
|
|
88
|
+
Umbrella and epic issues carry a pass-1 body (plan, stale by design) and a canonical `## Current shape (as of pass-N)` comment (live state). Before reporting umbrella status:
|
|
89
|
+
|
|
90
|
+
- ! Fetch issue comments via REST (`gh api repos/<owner>/<repo>/issues/<N>/comments`), read the `## Current shape (as of pass-N)` comment, and any linked context or `LockedDecisions` vBRIEF referenced there — following the reading order body -> current-shape comment -> amendment comments (claim-cites-state-surface, #2066). Prefer the deterministic read path: `deft umbrella:current-shape <N>` (or `task umbrella:current-shape <N>`) — it locates the canonical comment, validates #1152 sections, and never falls back to the issue body.
|
|
91
|
+
- ⊗ Conclude umbrella or epic status from the issue body alone. Any "X is done" / "X is the blocker" assertion about an umbrella MUST cite the current-shape comment or another state artifact, not the body.
|
|
92
|
+
|
|
93
|
+
Cross-references: `.deft/core/.agents/skills/deft-directive-refinement/SKILL.md` and `.deft/core/.agents/skills/deft-directive-triage/SKILL.md` (before reporting umbrella status). Refs #1152, #2066.
|
|
94
|
+
|
|
86
95
|
## Content packs
|
|
87
96
|
|
|
88
97
|
Deft ships versioned content packs (e.g. lessons learned from prior work) under `.deft/core/packs/`. Discover and LOAD pack content via the slice surface instead of reading whole pack files into context:
|
package/tasks/ci.yml
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
version: '3'
|
|
2
|
-
|
|
3
|
-
# Maintainer-only local CI mirror (#1813 contributor path / #2022 Phase 2).
|
|
4
|
-
#
|
|
5
|
-
# `ci:local` shells into scripts/ci_local.py via `uv run python`. Release
|
|
6
|
-
# Step-5 pre-flight now uses the TS `task check` path (py-purge-ci-local-ts);
|
|
7
|
-
# this fragment remains for explicit maintainer local CI only. Included from
|
|
8
|
-
# the root Taskfile with `internal: true` — not wired into `check:consumer`
|
|
9
|
-
# or the default `task check` aggregate.
|
|
10
|
-
|
|
11
|
-
vars:
|
|
12
|
-
DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'
|
|
13
|
-
|
|
14
|
-
# ci:* tasks for running the full CI pipeline locally so contributors
|
|
15
|
-
# catch CI failures before pushing.
|
|
16
|
-
#
|
|
17
|
-
# ci:local mirrors the step graph of .github/workflows/ci.yml on the
|
|
18
|
-
# host platform:
|
|
19
|
-
#
|
|
20
|
-
# - Linux: Python (uv sync + ruff + mypy + pytest --cov), Go test +
|
|
21
|
-
# cross-compile builds for linux/amd64 + darwin/arm64 +
|
|
22
|
-
# windows/amd64, and the existing Taskfile-level
|
|
23
|
-
# verifications (toolchain:check, verify:stubs,
|
|
24
|
-
# verify:links, verify:rule-ownership, vbrief:validate,
|
|
25
|
-
# build).
|
|
26
|
-
#
|
|
27
|
-
# - macOS: Same as Linux. The darwin/arm64 cross-compile is the
|
|
28
|
-
# native build path. /dev/null is the discard target for
|
|
29
|
-
# cross-compile output.
|
|
30
|
-
#
|
|
31
|
-
# - Windows: Same Python + Go + Taskfile-level steps; NUL replaces
|
|
32
|
-
# /dev/null as the cross-compile discard target.
|
|
33
|
-
# Additionally, when --matrix=windows is supplied the
|
|
34
|
-
# Windows-task-dispatch regression pytest guard-rails run
|
|
35
|
-
# -- those steps shell out to PowerShell and require a
|
|
36
|
-
# real Windows host (CI uses windows-latest).
|
|
37
|
-
#
|
|
38
|
-
# CLI_ARGS are forwarded so contributors can pass flags such as
|
|
39
|
-
# --matrix=linux, --skip-build, --verbose, and --no-fail-fast.
|
|
40
|
-
#
|
|
41
|
-
# Per conventions/task-caching.md, this task forwards {{.CLI_ARGS}} to
|
|
42
|
-
# a Python script that accepts user-facing flags (--skip-build,
|
|
43
|
-
# --no-fail-fast, etc.); declaring sources: / generates: would short-
|
|
44
|
-
# circuit the cmds: block and silently swallow those flags. Caching is
|
|
45
|
-
# intentionally absent.
|
|
46
|
-
#
|
|
47
|
-
# Companion script: scripts/ci_local.py
|
|
48
|
-
# Companion test: tests/cli/test_ci_local.py
|
|
49
|
-
|
|
50
|
-
tasks:
|
|
51
|
-
local:
|
|
52
|
-
desc: "Run the full CI pipeline locally (matrix-aware). Mirrors .github/workflows/ci.yml step graph; on Windows hosts --matrix=windows additionally runs the windows-task-dispatch regression guard-rails. Refs #233."
|
|
53
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
54
|
-
env:
|
|
55
|
-
PYTHONUTF8: "1"
|
|
56
|
-
cmds:
|
|
57
|
-
- uv --project "{{.DEFT_ROOT}}" run python "{{.DEFT_ROOT}}/scripts/ci_local.py" --root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}
|