@deftai/directive-content 0.64.0 → 0.66.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/.githooks/_deft-run.sh +14 -0
- package/.githooks/pre-commit +9 -10
- package/.githooks/pre-push +4 -7
- package/QUICK-START.md +8 -4
- package/Taskfile.yml +32 -14
- package/UPGRADING.md +40 -0
- 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 +16 -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 +107 -48
- package/templates/agent-prompt-preamble.md +16 -16
- package/templates/agents-entry.md +23 -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/engine.yml
CHANGED
|
@@ -12,13 +12,25 @@ vars:
|
|
|
12
12
|
tasks:
|
|
13
13
|
_ts-build:
|
|
14
14
|
internal: true
|
|
15
|
-
desc: "Build CLI dist
|
|
16
|
-
|
|
15
|
+
desc: "Build CLI dist from the framework source checkout; no-op on npm consumer deposits that ship no packages/ source (#2022 Phase 3 / #2126)."
|
|
16
|
+
# Run from the operator project root (USER_WORKING_DIR), NOT an absolute
|
|
17
|
+
# DEFT_ROOT: an absolute `dir:` doubles onto the invocation cwd on Windows
|
|
18
|
+
# when the Taskfile is invoked via `task -t <absolute-path>` (observed as
|
|
19
|
+
# `D:\a\directive\directive\D:\a\directive\directive`, #2126). Reference the
|
|
20
|
+
# build root by absolute path so the guard stays cwd-independent.
|
|
21
|
+
#
|
|
22
|
+
# Guard on SOURCE presence (packages/cli/package.json), NOT the dist/
|
|
23
|
+
# artifact: dist/ is gitignored, so a cold framework checkout (e.g. CI after
|
|
24
|
+
# a bare `pnpm install`) has source but no dist and MUST still build. A
|
|
25
|
+
# consumer deposit (`.deft/core` = @deftai/directive-content) ships no
|
|
26
|
+
# packages/ tree, so the guard is false and the build is a clean no-op --
|
|
27
|
+
# this is the #2126 fix (avoids `pnpm run build` -> Missing script: build).
|
|
28
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
17
29
|
cmds:
|
|
18
30
|
- |
|
|
19
31
|
set -eu
|
|
20
|
-
if [ -f packages/cli/
|
|
21
|
-
pnpm run build
|
|
32
|
+
if [ -f "{{.DEFT_ROOT}}/packages/cli/package.json" ]; then
|
|
33
|
+
pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
22
34
|
fi
|
|
23
35
|
|
|
24
36
|
invoke:
|
package/tasks/install.yml
CHANGED
|
@@ -7,12 +7,6 @@ vars:
|
|
|
7
7
|
DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'
|
|
8
8
|
|
|
9
9
|
tasks:
|
|
10
|
-
_ts-build:
|
|
11
|
-
internal: true
|
|
12
|
-
desc: "Build @deftai/cli dist/ before TS-backed gates run (#1828 s2)."
|
|
13
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
14
|
-
cmds:
|
|
15
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
16
10
|
|
|
17
11
|
install:
|
|
18
12
|
desc: Install deft (dev convenience -- end users should use the compiled binary from GitHub Releases)
|
|
@@ -23,9 +17,11 @@ tasks:
|
|
|
23
17
|
desc: Remove deft entry from AGENTS.md
|
|
24
18
|
dir: '{{.USER_WORKING_DIR}}'
|
|
25
19
|
deps:
|
|
26
|
-
- _ts-build
|
|
20
|
+
- task: :engine:_ts-build
|
|
27
21
|
cmds:
|
|
28
|
-
-
|
|
22
|
+
- task: :engine:invoke
|
|
23
|
+
vars:
|
|
24
|
+
ENGINE_CMD: 'install-uninstall --project-root "{{.USER_WORKING_DIR}}"'
|
|
29
25
|
|
|
30
26
|
# User-facing upgrade entrypoint (#1061). Native deft-ts handler (#2022 Phase 2):
|
|
31
27
|
# 1. Writes / refreshes the bare ``.deft-version`` marker.
|
package/tasks/issue.yml
CHANGED
|
@@ -18,20 +18,16 @@ vars:
|
|
|
18
18
|
# `uv --project "{{.DEFT_ROOT}}" run python` (#566).
|
|
19
19
|
|
|
20
20
|
tasks:
|
|
21
|
-
_ensure-ts:
|
|
22
|
-
internal: true
|
|
23
|
-
desc: "Build the TS engine before issue gates (#1828 s4)"
|
|
24
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
25
|
-
cmds:
|
|
26
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
27
21
|
|
|
28
22
|
ingest:
|
|
29
23
|
desc: "Ingest GitHub issues as scope vBRIEFs (single <N> or --all [--label L] [--status S] [--dry-run])"
|
|
30
24
|
dir: '{{.USER_WORKING_DIR}}'
|
|
31
25
|
deps:
|
|
32
|
-
-
|
|
26
|
+
- task: :engine:_ts-build
|
|
33
27
|
cmds:
|
|
34
|
-
-
|
|
28
|
+
- task: :engine:invoke
|
|
29
|
+
vars:
|
|
30
|
+
ENGINE_CMD: 'issue-ingest --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
35
31
|
|
|
36
32
|
# issue emit task -- the write-direction counterpart to issue:ingest
|
|
37
33
|
# (#1274 Change 2). Files GitHub issue(s) from scope vBRIEFs and records
|
|
@@ -43,8 +39,10 @@ tasks:
|
|
|
43
39
|
emit:
|
|
44
40
|
desc: "File GitHub issue(s) from scope vBRIEF(s) (<path> | --umbrella <glob> | --per-vbrief <glob> [--dry-run])"
|
|
45
41
|
dir: '{{.USER_WORKING_DIR}}'
|
|
46
|
-
deps: [":
|
|
42
|
+
deps: [":engine:_ts-build"]
|
|
47
43
|
env:
|
|
48
44
|
PYTHONUTF8: "1"
|
|
49
45
|
cmds:
|
|
50
|
-
-
|
|
46
|
+
- task: :engine:invoke
|
|
47
|
+
vars:
|
|
48
|
+
ENGINE_CMD: 'issue-emit --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/migrate.yml
CHANGED
|
@@ -7,12 +7,6 @@ vars:
|
|
|
7
7
|
DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'
|
|
8
8
|
|
|
9
9
|
tasks:
|
|
10
|
-
_ts-build:
|
|
11
|
-
internal: true
|
|
12
|
-
desc: "Build @deftai/cli dist/ before TS-backed gates run (#1828 s2)."
|
|
13
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
14
|
-
cmds:
|
|
15
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
16
10
|
|
|
17
11
|
preflight:
|
|
18
12
|
# Pre-v0.20 document-model probe (#793, #2068 cutoff). Detects legacy
|
|
@@ -22,6 +16,28 @@ tasks:
|
|
|
22
16
|
desc: "Detect pre-v0.20 document model and report the frozen-release migration path (#2068). Three-state exit (#793)."
|
|
23
17
|
dir: '{{.USER_WORKING_DIR}}'
|
|
24
18
|
deps:
|
|
25
|
-
- _ts-build
|
|
19
|
+
- task: :engine:_ts-build
|
|
20
|
+
cmds:
|
|
21
|
+
- task: :engine:invoke
|
|
22
|
+
vars:
|
|
23
|
+
ENGINE_CMD: 'migrate-preflight --project-root "{{.USER_WORKING_DIR}}" --deft-root "{{.DEFT_ROOT}}" {{.CLI_ARGS}}'
|
|
24
|
+
|
|
25
|
+
xbrief:
|
|
26
|
+
desc: "Migrate consumer vbrief/ layout to xbrief/ with semantic v0.6->v0.8 transforms (#2110 / #2034)."
|
|
27
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
28
|
+
deps:
|
|
29
|
+
- task: :engine:_ts-build
|
|
30
|
+
cmds:
|
|
31
|
+
- task: :engine:invoke
|
|
32
|
+
vars:
|
|
33
|
+
ENGINE_CMD: 'migrate-xbrief --project-root "{{.USER_WORKING_DIR}}" --framework-root "{{.DEFT_ROOT}}" {{.CLI_ARGS}}'
|
|
34
|
+
|
|
35
|
+
category-b:
|
|
36
|
+
desc: "Namespace Category B bare plan keys (policy / completedNote) under x-directive/ across the corpus (#1650 / #2034)."
|
|
37
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
38
|
+
deps:
|
|
39
|
+
- task: :engine:_ts-build
|
|
26
40
|
cmds:
|
|
27
|
-
-
|
|
41
|
+
- task: :engine:invoke
|
|
42
|
+
vars:
|
|
43
|
+
ENGINE_CMD: 'migrate-category-b --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/packs.yml
CHANGED
|
@@ -31,62 +31,78 @@ tasks:
|
|
|
31
31
|
desc: "Named, structured slice access to a content pack (#1283, #1295). -- task packs:slice <pack> <name> [-- --since YYYY-MM | --tag T | --trigger KW] [--list] [--list-packs] [--json]"
|
|
32
32
|
dir: '{{.USER_WORKING_DIR}}'
|
|
33
33
|
deps:
|
|
34
|
-
- task: ":
|
|
34
|
+
- task: ":engine:_ts-build"
|
|
35
35
|
cmds:
|
|
36
|
-
-
|
|
36
|
+
- task: :engine:invoke
|
|
37
|
+
vars:
|
|
38
|
+
ENGINE_CMD: 'packs-slice {{.CLI_ARGS}}'
|
|
37
39
|
|
|
38
40
|
render:
|
|
39
41
|
desc: "Regenerate every content-pack projection from its canonical source (ADR-001): meta/lessons.md (lessons), the proof SKILL.md (skills), coding/testing.md (rules), strategies/yolo.md (strategies). -- task packs:render [-- --pack rules] [--check]"
|
|
40
42
|
dir: '{{.USER_WORKING_DIR}}'
|
|
41
43
|
deps:
|
|
42
|
-
- task: ":
|
|
44
|
+
- task: ":engine:_ts-build"
|
|
43
45
|
cmds:
|
|
44
|
-
-
|
|
46
|
+
- task: :engine:invoke
|
|
47
|
+
vars:
|
|
48
|
+
ENGINE_CMD: 'pack-render {{.CLI_ARGS}}'
|
|
45
49
|
|
|
46
50
|
render-skills:
|
|
47
51
|
desc: "One-shot migration: rebuild packs/skills/skills-pack-0.1.json from skills/*/SKILL.md + the AGENTS.md Skill Routing table (#1295)."
|
|
48
52
|
dir: '{{.USER_WORKING_DIR}}'
|
|
49
53
|
deps:
|
|
50
|
-
- task: ":
|
|
54
|
+
- task: ":engine:_ts-build"
|
|
51
55
|
cmds:
|
|
52
|
-
-
|
|
56
|
+
- task: :engine:invoke
|
|
57
|
+
vars:
|
|
58
|
+
ENGINE_CMD: 'pack-migrate-skills {{.CLI_ARGS}}'
|
|
53
59
|
|
|
54
60
|
render-rules:
|
|
55
61
|
desc: "One-shot migration: rebuild packs/rules/rules-pack-0.1.json from the RFC2119 directives in coding/*.md (#1296)."
|
|
56
62
|
dir: '{{.USER_WORKING_DIR}}'
|
|
57
63
|
deps:
|
|
58
|
-
- task: ":
|
|
64
|
+
- task: ":engine:_ts-build"
|
|
59
65
|
cmds:
|
|
60
|
-
-
|
|
66
|
+
- task: :engine:invoke
|
|
67
|
+
vars:
|
|
68
|
+
ENGINE_CMD: 'pack-migrate-rules {{.CLI_ARGS}}'
|
|
61
69
|
|
|
62
70
|
render-strategies:
|
|
63
71
|
desc: "One-shot migration: rebuild packs/strategies/strategies-pack-0.1.json from strategies/*.md (#1296)."
|
|
64
72
|
dir: '{{.USER_WORKING_DIR}}'
|
|
65
73
|
deps:
|
|
66
|
-
- task: ":
|
|
74
|
+
- task: ":engine:_ts-build"
|
|
67
75
|
cmds:
|
|
68
|
-
-
|
|
76
|
+
- task: :engine:invoke
|
|
77
|
+
vars:
|
|
78
|
+
ENGINE_CMD: 'pack-migrate-strategies {{.CLI_ARGS}}'
|
|
69
79
|
|
|
70
80
|
render-patterns:
|
|
71
81
|
desc: "One-shot migration: rebuild packs/patterns/patterns-pack-0.1.json from patterns/*.md (#1637)."
|
|
72
82
|
dir: '{{.USER_WORKING_DIR}}'
|
|
73
83
|
deps:
|
|
74
|
-
- task: ":
|
|
84
|
+
- task: ":engine:_ts-build"
|
|
75
85
|
cmds:
|
|
76
|
-
-
|
|
86
|
+
- task: :engine:invoke
|
|
87
|
+
vars:
|
|
88
|
+
ENGINE_CMD: 'pack-migrate-patterns {{.CLI_ARGS}}'
|
|
77
89
|
|
|
78
90
|
render-swarm-spec:
|
|
79
91
|
desc: "One-shot migration: rebuild packs/swarm-spec/swarm-spec-pack-0.1.json from swarm/*.md (#1637)."
|
|
80
92
|
dir: '{{.USER_WORKING_DIR}}'
|
|
81
93
|
deps:
|
|
82
|
-
- task: ":
|
|
94
|
+
- task: ":engine:_ts-build"
|
|
83
95
|
cmds:
|
|
84
|
-
-
|
|
96
|
+
- task: :engine:invoke
|
|
97
|
+
vars:
|
|
98
|
+
ENGINE_CMD: 'pack-migrate-swarm-spec {{.CLI_ARGS}}'
|
|
85
99
|
|
|
86
100
|
verify-drift:
|
|
87
101
|
desc: "Drift gate: fail (exit 1) when ANY pack projection (meta/lessons.md, the skills proof SKILL.md, coding/testing.md, strategies/yolo.md) diverges from a freshly rendered buffer. Wired into `task check` and surfaced as `task verify:pack-drift`."
|
|
88
102
|
dir: '{{.USER_WORKING_DIR}}'
|
|
89
103
|
deps:
|
|
90
|
-
- task: ":
|
|
104
|
+
- task: ":engine:_ts-build"
|
|
91
105
|
cmds:
|
|
92
|
-
-
|
|
106
|
+
- task: :engine:invoke
|
|
107
|
+
vars:
|
|
108
|
+
ENGINE_CMD: 'pack-render --check {{.CLI_ARGS}}'
|
package/tasks/policy.yml
CHANGED
|
@@ -26,50 +26,62 @@ tasks:
|
|
|
26
26
|
desc: "Inspect every registered typed-policy field on vbrief/PROJECT-DEFINITION.vbrief.json (#1148 / N8). -- task policy:show [-- --format=json] [--changed-only] [--field=<name>]"
|
|
27
27
|
dir: '{{.USER_WORKING_DIR}}'
|
|
28
28
|
deps:
|
|
29
|
-
- task: :
|
|
29
|
+
- task: :engine:_ts-build
|
|
30
30
|
cmds:
|
|
31
|
-
-
|
|
31
|
+
- task: :engine:invoke
|
|
32
|
+
vars:
|
|
33
|
+
ENGINE_CMD: 'policy show --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
32
34
|
|
|
33
35
|
enforce-branches:
|
|
34
36
|
desc: "Set plan.policy.allowDirectCommitsToMaster=false (enforce feature branches). Audits to meta/policy-changes.log. (#746)"
|
|
35
37
|
dir: '{{.USER_WORKING_DIR}}'
|
|
36
38
|
deps:
|
|
37
|
-
- task: :
|
|
39
|
+
- task: :engine:_ts-build
|
|
38
40
|
cmds:
|
|
39
|
-
-
|
|
41
|
+
- task: :engine:invoke
|
|
42
|
+
vars:
|
|
43
|
+
ENGINE_CMD: 'policy enforce-branches --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
40
44
|
|
|
41
45
|
allow-direct-commits:
|
|
42
46
|
desc: "Set plan.policy.allowDirectCommitsToMaster=true (capability-cost: branch-protection OFF). Requires --confirm to apply. (#746)"
|
|
43
47
|
dir: '{{.USER_WORKING_DIR}}'
|
|
44
48
|
deps:
|
|
45
|
-
- task: :
|
|
49
|
+
- task: :engine:_ts-build
|
|
46
50
|
cmds:
|
|
47
|
-
-
|
|
51
|
+
- task: :engine:invoke
|
|
52
|
+
vars:
|
|
53
|
+
ENGINE_CMD: 'policy allow-direct-commits --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
48
54
|
|
|
49
55
|
wip-cap:
|
|
50
56
|
desc: "Set plan.policy.wipCap=N (#1124 / D4 of #1119). Requires --set N --confirm. Default cap is 10 per umbrella #1119 Current Shape v3."
|
|
51
57
|
dir: '{{.USER_WORKING_DIR}}'
|
|
52
58
|
deps:
|
|
53
|
-
- task: :
|
|
59
|
+
- task: :engine:_ts-build
|
|
54
60
|
cmds:
|
|
55
|
-
-
|
|
61
|
+
- task: :engine:invoke
|
|
62
|
+
vars:
|
|
63
|
+
ENGINE_CMD: 'policy-set wip-cap {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
56
64
|
|
|
57
65
|
subagent-backend:
|
|
58
66
|
desc: "DEPRECATED (superseded by `task swarm:routing-set`, #1739). Was: Set plan.policy.swarmSubagentBackend (#1531a). -- task policy:subagent-backend -- --set composer|grok-build|cursor-cloud"
|
|
59
67
|
dir: '{{.USER_WORKING_DIR}}'
|
|
60
68
|
deps:
|
|
61
|
-
- task: :
|
|
69
|
+
- task: :engine:_ts-build
|
|
62
70
|
cmds:
|
|
63
71
|
- cmd: echo "[deft deprecation] task policy:subagent-backend is superseded by 'task swarm:routing-set' (#1739). The swarmSubagentBackend enum is no longer the active routing surface." 1>&2
|
|
64
72
|
silent: true
|
|
65
|
-
-
|
|
73
|
+
- task: :engine:invoke
|
|
74
|
+
vars:
|
|
75
|
+
ENGINE_CMD: 'policy-set subagent-backend {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
|
66
76
|
|
|
67
77
|
subagent-backends:
|
|
68
78
|
desc: "DEPRECATED (superseded by `task swarm:routing-set` / `task verify:routing`, #1739). Was: Probe sub-agent backend ids, role capabilities, and availability (#1531a). -- task policy:subagent-backends [-- --format=json]"
|
|
69
79
|
dir: '{{.USER_WORKING_DIR}}'
|
|
70
80
|
deps:
|
|
71
|
-
- task: :
|
|
81
|
+
- task: :engine:_ts-build
|
|
72
82
|
cmds:
|
|
73
83
|
- cmd: echo "[deft deprecation] task policy:subagent-backends is superseded by 'task verify:routing -- --advise' and 'task swarm:routing-set' (#1739). The swarmSubagentBackend enum is no longer the active routing surface." 1>&2
|
|
74
84
|
silent: true
|
|
75
|
-
-
|
|
85
|
+
- task: :engine:invoke
|
|
86
|
+
vars:
|
|
87
|
+
ENGINE_CMD: 'policy-set subagent-backends {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|
package/tasks/pr.yml
CHANGED
|
@@ -21,10 +21,12 @@ vars:
|
|
|
21
21
|
tasks:
|
|
22
22
|
check-protected-issues:
|
|
23
23
|
desc: "Verify NO protected (umbrella / staying-OPEN) issue is GitHub-side linked to a PR before squash merge (#701)"
|
|
24
|
-
deps: [":
|
|
24
|
+
deps: [":engine:_ts-build"]
|
|
25
25
|
dir: '{{.USER_WORKING_DIR}}'
|
|
26
26
|
cmds:
|
|
27
|
-
-
|
|
27
|
+
- task: :engine:invoke
|
|
28
|
+
vars:
|
|
29
|
+
ENGINE_CMD: 'pr-protected-issues {{.CLI_ARGS}}'
|
|
28
30
|
|
|
29
31
|
# pr:check-closing-keywords -- Layer 0 (prevention) closing-keyword
|
|
30
32
|
# negation-context lint introduced by #737. Refuses to push when the
|
|
@@ -39,11 +41,13 @@ tasks:
|
|
|
39
41
|
check-closing-keywords:
|
|
40
42
|
desc: "Scan PR body + commit messages for closing-keyword substrings in negation/quotation/example contexts that would trigger Layer 0 false-positive auto-closes (#737)"
|
|
41
43
|
dir: '{{.USER_WORKING_DIR}}'
|
|
42
|
-
deps: [":
|
|
44
|
+
deps: [":engine:_ts-build"]
|
|
43
45
|
env:
|
|
44
46
|
PYTHONUTF8: "1"
|
|
45
47
|
cmds:
|
|
46
|
-
-
|
|
48
|
+
- task: :engine:invoke
|
|
49
|
+
vars:
|
|
50
|
+
ENGINE_CMD: 'pr-closing-keywords {{.CLI_ARGS}}'
|
|
47
51
|
|
|
48
52
|
# pr:merge-ready -- programmatic Greptile-body verdict gate. Closes the
|
|
49
53
|
# SUCCESS-with-findings blind spot in the Phase 5 -> 6 merge-readiness
|
|
@@ -56,10 +60,12 @@ tasks:
|
|
|
56
60
|
# Companion test: tests/cli/test_pr_merge_readiness.py
|
|
57
61
|
merge-ready:
|
|
58
62
|
desc: "Verify a PR's Greptile review body satisfies the merge exit condition (confidence >3, no P0/P1, HEAD-SHA fresh, not errored)"
|
|
59
|
-
deps: [":
|
|
63
|
+
deps: [":engine:_ts-build"]
|
|
60
64
|
dir: '{{.USER_WORKING_DIR}}'
|
|
61
65
|
cmds:
|
|
62
|
-
-
|
|
66
|
+
- task: :engine:invoke
|
|
67
|
+
vars:
|
|
68
|
+
ENGINE_CMD: 'pr-merge-readiness {{.CLI_ARGS}}'
|
|
63
69
|
|
|
64
70
|
# pr:wait-mergeable-and-merge -- cascade automation surface (#1369).
|
|
65
71
|
# Wraps scripts/pr_wait_mergeable.py which composes the resilient
|
|
@@ -83,7 +89,9 @@ tasks:
|
|
|
83
89
|
# Companion test: tests/cli/test_pr_wait_mergeable.py
|
|
84
90
|
wait-mergeable-and-merge:
|
|
85
91
|
desc: "Wait until PR is mergeable (resilient cascade, #1368) and squash-merge with admin (#1369); Layer-3 protected-issue check (#701) chains before any merge call"
|
|
86
|
-
deps: [":
|
|
92
|
+
deps: [":engine:_ts-build"]
|
|
87
93
|
dir: '{{.USER_WORKING_DIR}}'
|
|
88
94
|
cmds:
|
|
89
|
-
-
|
|
95
|
+
- task: :engine:invoke
|
|
96
|
+
vars:
|
|
97
|
+
ENGINE_CMD: 'pr-wait-mergeable {{.CLI_ARGS}}'
|
package/tasks/prd.yml
CHANGED
|
@@ -13,12 +13,6 @@ vars:
|
|
|
13
13
|
# caused sporadic PATH issues on Windows.
|
|
14
14
|
|
|
15
15
|
tasks:
|
|
16
|
-
_ts-build:
|
|
17
|
-
internal: true
|
|
18
|
-
desc: "Build @deftai/cli dist/ before TS-backed render gates run (#1854 s2)."
|
|
19
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
20
|
-
cmds:
|
|
21
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
22
16
|
|
|
23
17
|
render:
|
|
24
18
|
# Caching: intentionally absent. `prd:render` runs in <30ms and its
|
|
@@ -27,13 +21,16 @@ tasks:
|
|
|
27
21
|
# would cause go-task to short-circuit before `cmds:` runs, dropping
|
|
28
22
|
# CLI_ARGS and silently breaking the #539 recovery path (#573, #574).
|
|
29
23
|
# See deft/conventions/task-caching.md for the full rule.
|
|
30
|
-
desc: Export plan.narratives from specification
|
|
24
|
+
desc: Export plan.narratives from the specification artifact to a read-only PRD.md
|
|
31
25
|
summary: |
|
|
32
|
-
Reads specification.
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
Reads the specification artifact (xbrief/specification.xbrief.json on migrated
|
|
27
|
+
trees, vbrief/specification.vbrief.json on legacy trees) and extracts
|
|
28
|
+
plan.narratives into a human-readable PRD.md for stakeholder export. PRD.md is
|
|
29
|
+
never authoritative -- the xBRIEF is the source of truth.
|
|
35
30
|
dir: '{{.USER_WORKING_DIR}}'
|
|
36
31
|
deps:
|
|
37
|
-
- _ts-build
|
|
32
|
+
- task: :engine:_ts-build
|
|
38
33
|
cmds:
|
|
39
|
-
-
|
|
34
|
+
- task: :engine:invoke
|
|
35
|
+
vars:
|
|
36
|
+
ENGINE_CMD: 'prd-render --project-root "{{.USER_WORKING_DIR}}" --output "{{.USER_WORKING_DIR}}/PRD.md" {{.CLI_ARGS}}'
|
package/tasks/project.yml
CHANGED
|
@@ -17,30 +17,28 @@ vars:
|
|
|
17
17
|
# origin freshness on scope vBRIEFs — not PROJECT-DEFINITION narrative heuristics.
|
|
18
18
|
|
|
19
19
|
tasks:
|
|
20
|
-
_ts-build:
|
|
21
|
-
internal: true
|
|
22
|
-
desc: "Build @deftai/cli dist/ before TS-backed render gates run (#1854 s2)."
|
|
23
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
24
|
-
cmds:
|
|
25
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
26
20
|
|
|
27
21
|
render:
|
|
28
|
-
desc: Regenerate PROJECT-DEFINITION
|
|
22
|
+
desc: Regenerate PROJECT-DEFINITION artifact items registry from lifecycle folders
|
|
29
23
|
dir: '{{.USER_WORKING_DIR}}'
|
|
30
24
|
deps:
|
|
31
|
-
- _ts-build
|
|
25
|
+
- task: :engine:_ts-build
|
|
32
26
|
cmds:
|
|
33
|
-
-
|
|
27
|
+
- task: :engine:invoke
|
|
28
|
+
vars:
|
|
29
|
+
ENGINE_CMD: 'project-render --project-root "{{.USER_WORKING_DIR}}"'
|
|
34
30
|
|
|
35
31
|
ack-staleness:
|
|
36
32
|
desc: >-
|
|
37
|
-
Acknowledge reviewed PROJECT-DEFINITION narrative staleness (#640).
|
|
33
|
+
Acknowledge reviewed PROJECT-DEFINITION artifact narrative staleness (#640).
|
|
38
34
|
Distinct from task reconcile:issues (scope origin freshness).
|
|
39
35
|
dir: '{{.USER_WORKING_DIR}}'
|
|
40
36
|
deps:
|
|
41
|
-
- _ts-build
|
|
37
|
+
- task: :engine:_ts-build
|
|
42
38
|
cmds:
|
|
43
|
-
-
|
|
39
|
+
- task: :engine:invoke
|
|
40
|
+
vars:
|
|
41
|
+
ENGINE_CMD: 'project-render --acknowledge-staleness --project-root "{{.USER_WORKING_DIR}}"'
|
|
44
42
|
|
|
45
43
|
export-spec:
|
|
46
44
|
desc: >-
|
|
@@ -48,6 +46,8 @@ tasks:
|
|
|
48
46
|
Use --audience=internal to include proposed scopes (#2013 / #1502).
|
|
49
47
|
dir: '{{.USER_WORKING_DIR}}'
|
|
50
48
|
deps:
|
|
51
|
-
- _ts-build
|
|
49
|
+
- task: :engine:_ts-build
|
|
52
50
|
cmds:
|
|
53
|
-
-
|
|
51
|
+
- task: :engine:invoke
|
|
52
|
+
vars:
|
|
53
|
+
ENGINE_CMD: 'export-spec {{.CLI_ARGS}}'
|
package/tasks/reconcile.yml
CHANGED
|
@@ -16,17 +16,13 @@ vars:
|
|
|
16
16
|
# `uv --project "{{.DEFT_ROOT}}" run python` (#566).
|
|
17
17
|
|
|
18
18
|
tasks:
|
|
19
|
-
_ensure-ts:
|
|
20
|
-
internal: true
|
|
21
|
-
desc: "Build the TS engine before reconcile gates (#1828 s4)"
|
|
22
|
-
dir: '{{.USER_WORKING_DIR}}'
|
|
23
|
-
cmds:
|
|
24
|
-
- pnpm --dir "{{.DEFT_ROOT}}" run build
|
|
25
19
|
|
|
26
20
|
issues:
|
|
27
21
|
desc: "Reconcile GitHub issues against vBRIEF references -- report linked, unlinked, and resolved"
|
|
28
22
|
dir: '{{.USER_WORKING_DIR}}'
|
|
29
23
|
deps:
|
|
30
|
-
-
|
|
24
|
+
- task: :engine:_ts-build
|
|
31
25
|
cmds:
|
|
32
|
-
-
|
|
26
|
+
- task: :engine:invoke
|
|
27
|
+
vars:
|
|
28
|
+
ENGINE_CMD: 'reconcile-issues --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
package/tasks/roadmap.yml
CHANGED
|
@@ -12,17 +12,21 @@ vars:
|
|
|
12
12
|
|
|
13
13
|
tasks:
|
|
14
14
|
render:
|
|
15
|
-
desc: Render ROADMAP.md from
|
|
15
|
+
desc: Render ROADMAP.md from pending/ and completed/ lifecycle folders
|
|
16
16
|
dir: '{{.USER_WORKING_DIR}}'
|
|
17
17
|
deps:
|
|
18
|
-
- task: :
|
|
18
|
+
- task: :engine:_ts-build
|
|
19
19
|
cmds:
|
|
20
|
-
-
|
|
20
|
+
- task: :engine:invoke
|
|
21
|
+
vars:
|
|
22
|
+
ENGINE_CMD: 'roadmap-render --project-root "{{.USER_WORKING_DIR}}"'
|
|
21
23
|
|
|
22
24
|
check:
|
|
23
25
|
desc: Verify ROADMAP.md matches what roadmap:render would produce
|
|
24
26
|
dir: '{{.USER_WORKING_DIR}}'
|
|
25
27
|
deps:
|
|
26
|
-
- task: :
|
|
28
|
+
- task: :engine:_ts-build
|
|
27
29
|
cmds:
|
|
28
|
-
-
|
|
30
|
+
- task: :engine:invoke
|
|
31
|
+
vars:
|
|
32
|
+
ENGINE_CMD: 'roadmap-render --project-root "{{.USER_WORKING_DIR}}" --check'
|
package/tasks/scm.yml
CHANGED
|
@@ -57,70 +57,88 @@ tasks:
|
|
|
57
57
|
desc: "[#883 stub] List issues -- task scm:issue:list -- [--rest] --repo OWNER/NAME --json number,title,state,updatedAt [--state ...] (#976 --rest routes via REST helpers; default forwards to ghx|gh)"
|
|
58
58
|
dir: '{{.USER_WORKING_DIR}}'
|
|
59
59
|
deps:
|
|
60
|
-
- task: :
|
|
60
|
+
- task: :engine:_ts-build
|
|
61
61
|
cmds:
|
|
62
|
-
-
|
|
62
|
+
- task: :engine:invoke
|
|
63
|
+
vars:
|
|
64
|
+
ENGINE_CMD: 'scm issue list {{.CLI_ARGS}}'
|
|
63
65
|
|
|
64
66
|
issue:view:
|
|
65
67
|
desc: "[#883 stub] View an issue -- task scm:issue:view -- [--rest] <N> --repo OWNER/NAME --json number,title,body,state,author,createdAt,updatedAt,labels,comments (#976 --rest routes via REST helpers and emits REST shape; default forwards to ghx|gh GraphQL shape)"
|
|
66
68
|
dir: '{{.USER_WORKING_DIR}}'
|
|
67
69
|
deps:
|
|
68
|
-
- task: :
|
|
70
|
+
- task: :engine:_ts-build
|
|
69
71
|
cmds:
|
|
70
|
-
-
|
|
72
|
+
- task: :engine:invoke
|
|
73
|
+
vars:
|
|
74
|
+
ENGINE_CMD: 'scm issue view {{.CLI_ARGS}}'
|
|
71
75
|
|
|
72
76
|
issue:close:
|
|
73
77
|
desc: "[#883 stub] Close an issue -- task scm:issue:close -- <N> --repo OWNER/NAME [--comment ...]"
|
|
74
78
|
dir: '{{.USER_WORKING_DIR}}'
|
|
75
79
|
deps:
|
|
76
|
-
- task: :
|
|
80
|
+
- task: :engine:_ts-build
|
|
77
81
|
cmds:
|
|
78
|
-
-
|
|
82
|
+
- task: :engine:invoke
|
|
83
|
+
vars:
|
|
84
|
+
ENGINE_CMD: 'scm issue close {{.CLI_ARGS}}'
|
|
79
85
|
|
|
80
86
|
issue:edit:
|
|
81
87
|
desc: "[#883 stub] Edit an issue -- task scm:issue:edit -- <N> --repo OWNER/NAME [--add-label ...] [--body ...]"
|
|
82
88
|
dir: '{{.USER_WORKING_DIR}}'
|
|
83
89
|
deps:
|
|
84
|
-
- task: :
|
|
90
|
+
- task: :engine:_ts-build
|
|
85
91
|
cmds:
|
|
86
|
-
-
|
|
92
|
+
- task: :engine:invoke
|
|
93
|
+
vars:
|
|
94
|
+
ENGINE_CMD: 'scm issue edit {{.CLI_ARGS}}'
|
|
87
95
|
|
|
88
96
|
body:issue:create:
|
|
89
97
|
desc: "[#1555] Safely create an issue body from --body-file without shell Markdown interpolation"
|
|
90
98
|
dir: '{{.USER_WORKING_DIR}}'
|
|
91
99
|
deps:
|
|
92
|
-
- task: :
|
|
100
|
+
- task: :engine:_ts-build
|
|
93
101
|
cmds:
|
|
94
|
-
-
|
|
102
|
+
- task: :engine:invoke
|
|
103
|
+
vars:
|
|
104
|
+
ENGINE_CMD: 'github-body issue-create {{.CLI_ARGS}}'
|
|
95
105
|
|
|
96
106
|
body:issue:edit:
|
|
97
107
|
desc: "[#1555] Safely edit an issue body from --body-file and live gh read-back"
|
|
98
108
|
dir: '{{.USER_WORKING_DIR}}'
|
|
99
109
|
deps:
|
|
100
|
-
- task: :
|
|
110
|
+
- task: :engine:_ts-build
|
|
101
111
|
cmds:
|
|
102
|
-
-
|
|
112
|
+
- task: :engine:invoke
|
|
113
|
+
vars:
|
|
114
|
+
ENGINE_CMD: 'github-body issue-edit {{.CLI_ARGS}}'
|
|
103
115
|
|
|
104
116
|
body:comment:create:
|
|
105
117
|
desc: "[#1555] Safely create an issue/PR comment body from --body-file and live gh read-back"
|
|
106
118
|
dir: '{{.USER_WORKING_DIR}}'
|
|
107
119
|
deps:
|
|
108
|
-
- task: :
|
|
120
|
+
- task: :engine:_ts-build
|
|
109
121
|
cmds:
|
|
110
|
-
-
|
|
122
|
+
- task: :engine:invoke
|
|
123
|
+
vars:
|
|
124
|
+
ENGINE_CMD: 'github-body comment-create {{.CLI_ARGS}}'
|
|
111
125
|
|
|
112
126
|
body:comment:edit:
|
|
113
127
|
desc: "[#1555] Safely edit an issue comment body from --body-file and live gh read-back"
|
|
114
128
|
dir: '{{.USER_WORKING_DIR}}'
|
|
115
129
|
deps:
|
|
116
|
-
- task: :
|
|
130
|
+
- task: :engine:_ts-build
|
|
117
131
|
cmds:
|
|
118
|
-
-
|
|
132
|
+
- task: :engine:invoke
|
|
133
|
+
vars:
|
|
134
|
+
ENGINE_CMD: 'github-body comment-edit {{.CLI_ARGS}}'
|
|
119
135
|
|
|
120
136
|
body:pr:edit:
|
|
121
137
|
desc: "[#1555] Safely edit a PR body from --body-file and live gh read-back"
|
|
122
138
|
dir: '{{.USER_WORKING_DIR}}'
|
|
123
139
|
deps:
|
|
124
|
-
- task: :
|
|
140
|
+
- task: :engine:_ts-build
|
|
125
141
|
cmds:
|
|
126
|
-
-
|
|
142
|
+
- task: :engine:invoke
|
|
143
|
+
vars:
|
|
144
|
+
ENGINE_CMD: 'github-body pr-edit {{.CLI_ARGS}}'
|
package/tasks/scope-undo.yml
CHANGED
|
@@ -33,4 +33,6 @@ tasks:
|
|
|
33
33
|
desc: "Reverse a scope-lifecycle audit entry (#1134). Single: `task scope:undo -- <decision_id>` / `task scope:undo -- --decision-id=<uuid>`. Batch: `task scope:undo -- --batch-id=<uuid>`. Optional `--dry-run`."
|
|
34
34
|
dir: '{{.USER_WORKING_DIR}}'
|
|
35
35
|
cmds:
|
|
36
|
-
-
|
|
36
|
+
- task: :engine:invoke
|
|
37
|
+
vars:
|
|
38
|
+
ENGINE_CMD: 'scope-undo {{.CLI_ARGS}} --project-root "{{.USER_WORKING_DIR}}"'
|