@deftai/directive-content 0.62.0 → 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/Taskfile.yml +3 -25
- package/package.json +1 -1
- package/tasks/core.yml +9 -123
- package/tasks/ts.yml +2 -293
- package/tasks/ci.yml +0 -57
package/Taskfile.yml
CHANGED
|
@@ -313,10 +313,6 @@ includes:
|
|
|
313
313
|
taskfile: ./tasks/core.yml
|
|
314
314
|
optional: true
|
|
315
315
|
internal: true
|
|
316
|
-
ci:
|
|
317
|
-
taskfile: ./tasks/ci.yml
|
|
318
|
-
optional: true
|
|
319
|
-
internal: true
|
|
320
316
|
# npm consumer deposits resolve verbs through global `deft` when the vendored
|
|
321
317
|
# packages/cli/dist/bin.js is absent (#2022 Phase 3).
|
|
322
318
|
engine:
|
|
@@ -342,12 +338,8 @@ tasks:
|
|
|
342
338
|
ENGINE_CMD: 'check --framework-root "{{.TASKFILE_DIR}}" --project-root "{{.USER_WORKING_DIR}}"'
|
|
343
339
|
|
|
344
340
|
check:framework-source:
|
|
345
|
-
desc: "Run all framework source-repo pre-commit checks
|
|
341
|
+
desc: "Run all framework source-repo pre-commit checks (TS-only after #1860). Sole wired consumer of maintainer-only core:build / core:clean."
|
|
346
342
|
deps:
|
|
347
|
-
# Maintainer-only Python lanes (tasks/core.yml) — not on check:consumer.
|
|
348
|
-
- core:validate
|
|
349
|
-
- core:lint
|
|
350
|
-
- core:test
|
|
351
343
|
- ts:check-lane
|
|
352
344
|
- toolchain:check
|
|
353
345
|
- verify:stubs
|
|
@@ -442,22 +434,8 @@ tasks:
|
|
|
442
434
|
# Oracle/fallback (parity): scripts/verify_no_task_runtime.py (#1854 s3).
|
|
443
435
|
- node "{{.TASKFILE_DIR}}/packages/cli/dist/bin.js" verify-no-task-runtime
|
|
444
436
|
|
|
445
|
-
#
|
|
446
|
-
#
|
|
447
|
-
# triage_bootstrap watchdog regression suite (5 of the 6 marked tests),
|
|
448
|
-
# which burns ~5.85s on real time.sleep / thread joins -- the proper
|
|
449
|
-
# monkeypatch refactor is tracked as a follow-up to #975. The `-o
|
|
450
|
-
# addopts=` reset overrides the pyproject default of `-m 'not slow'`
|
|
451
|
-
# so the `-m slow` selector here actually picks up the marked tests.
|
|
452
|
-
check:slow:
|
|
453
|
-
desc: "Run the @pytest.mark.slow test lane (watchdog regression suite excluded from `task check` by default, #975). Maintainer-only Python lane — not part of `check:consumer`."
|
|
454
|
-
cmds:
|
|
455
|
-
# `--project` pins uv to the framework root so ancestor pyproject.toml
|
|
456
|
-
# files cannot hijack the resolver via uv's upward walk (#1011).
|
|
457
|
-
- uv --project "{{.TASKFILE_DIR}}" run pytest tests/ -o addopts= -m slow
|
|
458
|
-
|
|
459
|
-
# Maintainer-only packaging aliases (#2022 Phase 2). `core:*` is internal;
|
|
460
|
-
# these root aliases remain callable for release Step 6 (`task build`) and
|
|
437
|
+
# Maintainer-only packaging aliases (#1860). `core:*` is internal;
|
|
438
|
+
# these root aliases remain callable for release Step 8 (`task build`) and
|
|
461
439
|
# local maintainer workflows. Not wired into `check:consumer`.
|
|
462
440
|
build:
|
|
463
441
|
desc: Package framework for distribution (maintainer-only; alias for core:build)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deftai/directive-content",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.63.0",
|
|
4
4
|
"description": "Shippable Directive framework content in the consumer .deft/core/ layout (C1 flatten), plus the engine surfaces (.githooks/, Taskfile.yml, tasks/) the deposit wires. Python-free per #2022 Phase 3. Refs #11, #1669, #1967.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
package/tasks/core.yml
CHANGED
|
@@ -1,136 +1,22 @@
|
|
|
1
1
|
version: '3'
|
|
2
2
|
|
|
3
|
-
# Maintainer-only
|
|
4
|
-
#
|
|
5
|
-
# pytest, ruff, black, and mypy run here via `uv run` for framework-source-repo
|
|
6
|
-
# pre-commit checks. This fragment is included from the root Taskfile with
|
|
7
|
-
# `internal: true` so `core:*` tasks are NOT listed or callable from the CLI on
|
|
8
|
-
# consumer installs — only `task check:framework-source` wires them as deps.
|
|
9
|
-
#
|
|
10
|
-
# Consumer `task check` dispatches to `check:consumer` (TS / deft verbs only).
|
|
11
|
-
# Do NOT add these tasks to the consumer check aggregate.
|
|
3
|
+
# Maintainer-only packaging lane (#1860). Build/clean dispatch the native
|
|
4
|
+
# TypeScript build-dist helper; Python/uv paths removed.
|
|
12
5
|
|
|
13
6
|
vars:
|
|
14
7
|
DEFT_ROOT: '{{joinPath .TASKFILE_DIR ".."}}'
|
|
15
8
|
|
|
16
9
|
tasks:
|
|
17
|
-
validate:
|
|
18
|
-
desc: Validate all markdown files
|
|
19
|
-
env:
|
|
20
|
-
PYTHONUTF8: "1"
|
|
21
|
-
cmds:
|
|
22
|
-
- cmd: >-
|
|
23
|
-
uv --project "{{.DEFT_ROOT}}" run python -c "from pathlib import Path;
|
|
24
|
-
files=[f for f in sorted(Path('.').rglob('*.md')) if '.git' not in f.parts and 'backup' not in f.parts];
|
|
25
|
-
[print(f'\u2713 {f}') for f in files];
|
|
26
|
-
print(f'\u2713 All {len(files)} markdown files validated')"
|
|
27
|
-
|
|
28
|
-
test:
|
|
29
|
-
desc: Run test suite
|
|
30
|
-
cmds:
|
|
31
|
-
# #1474: tolerate a missing tests/ directory. The installer (#1482)
|
|
32
|
-
# prunes the vendored .deft/core/tests/ from the consumer deposit, so in
|
|
33
|
-
# a vendored consumer `task deft:check` -> framework check -> core:test
|
|
34
|
-
# would otherwise run `pytest tests/` against a now-absent directory and
|
|
35
|
-
# exit with a path error instead of 0 (blocking #1474 acceptance a1).
|
|
36
|
-
# A cross-platform pathlib guard (no bare shell conditional, per the
|
|
37
|
-
# AGENTS.md Windows rules) skips the run with a clear notice when tests/
|
|
38
|
-
# is absent; the framework's own repo (tests/ present) still runs the
|
|
39
|
-
# full suite unchanged. The check targets the same CWD-relative `tests`
|
|
40
|
-
# path pytest would run against, so it is correct regardless of CWD.
|
|
41
|
-
- cmd: >-
|
|
42
|
-
uv --project "{{.DEFT_ROOT}}" run python -c "import sys, subprocess;
|
|
43
|
-
from pathlib import Path;
|
|
44
|
-
_exists = Path('tests').exists();
|
|
45
|
-
print('no tests/ (vendored consumer) -- skipping') if not _exists else None;
|
|
46
|
-
sys.exit(subprocess.run([sys.executable, '-m', 'pytest', 'tests']).returncode if _exists else 0)"
|
|
47
|
-
|
|
48
|
-
test:coverage:
|
|
49
|
-
desc: Run tests with coverage (fails if < 85%)
|
|
50
|
-
cmds:
|
|
51
|
-
- uv --project "{{.DEFT_ROOT}}" run pytest tests/ --cov --cov-report=html
|
|
52
|
-
|
|
53
|
-
fmt:
|
|
54
|
-
desc: Format Python code
|
|
55
|
-
cmds:
|
|
56
|
-
- uv --project "{{.DEFT_ROOT}}" run ruff format .
|
|
57
|
-
- uv --project "{{.DEFT_ROOT}}" run black .
|
|
58
|
-
|
|
59
|
-
lint:
|
|
60
|
-
desc: Lint and type-check Python code
|
|
61
|
-
cmds:
|
|
62
|
-
- uv --project "{{.DEFT_ROOT}}" run ruff check .
|
|
63
|
-
# #1475: bring the local type-check gate to parity with CI. The CI
|
|
64
|
-
# Python job (.github/workflows/ci.yml) runs `mypy tests/`, but this
|
|
65
|
-
# local gate previously checked only run.py -- so a type error under
|
|
66
|
-
# tests/ shipped green locally (task check -> core:lint) and reddened
|
|
67
|
-
# master after merge. The tests/ tree is now part of the gate; run.py
|
|
68
|
-
# is retained for its pre-existing local-only coverage. Both surfaces
|
|
69
|
-
# share the [tool.mypy] config in pyproject.toml, including the
|
|
70
|
-
# tests.* override that relaxes disallow_untyped_defs while still
|
|
71
|
-
# failing on real type mismatches under tests/.
|
|
72
|
-
#
|
|
73
|
-
# #1474: the same vendored-consumer guard core:test uses. The installer
|
|
74
|
-
# (#1482) prunes the vendored .deft/core/tests/, and `task deft:check`
|
|
75
|
-
# runs core:lint too, so an unconditional `mypy run.py tests/` would
|
|
76
|
-
# fail on the now-absent tests/ path. The cross-platform pathlib guard
|
|
77
|
-
# (no bare shell conditional, per the AGENTS.md Windows rules) appends
|
|
78
|
-
# tests/ to the mypy target list only when it exists; run.py (always in
|
|
79
|
-
# the payload) stays checked either way.
|
|
80
|
-
- cmd: >-
|
|
81
|
-
uv --project "{{.DEFT_ROOT}}" run python -c "import sys, subprocess;
|
|
82
|
-
from pathlib import Path;
|
|
83
|
-
targets = ['run.py'] + (['tests'] if Path('tests').exists() else []);
|
|
84
|
-
sys.exit(subprocess.run([sys.executable, '-m', 'mypy', *targets]).returncode)"
|
|
85
|
-
|
|
86
|
-
|
|
87
10
|
build:
|
|
88
|
-
desc: Package framework for distribution (cross-platform via
|
|
89
|
-
|
|
90
|
-
|
|
11
|
+
desc: Package framework for distribution (cross-platform via TypeScript build-dist, #736 / #1860)
|
|
12
|
+
deps:
|
|
13
|
+
- task: :ts:build
|
|
91
14
|
cmds:
|
|
92
|
-
|
|
93
|
-
# stdlib tarfile / zipfile with a canonical exclude list and
|
|
94
|
-
# auto-selects tar.gz on Linux/macOS, zip on Windows. The previous
|
|
95
|
-
# platform-split shape had the Windows branch missing the exclude
|
|
96
|
-
# list, ingesting .git history and the prior dist/ artifact.
|
|
97
|
-
# Regression-guarded by tests/content/test_taskfile_zip_parity.py.
|
|
98
|
-
- uv --project "{{.DEFT_ROOT}}" run python "{{.DEFT_ROOT}}/scripts/build_dist.py" --version "{{.VERSION}}"
|
|
15
|
+
- node "{{.DEFT_ROOT}}/packages/core/dist/release/build-dist-runner.js" "{{.VERSION}}" "{{.DEFT_ROOT}}"
|
|
99
16
|
|
|
100
17
|
clean:
|
|
101
|
-
desc: Clean generated artifacts (cross-platform
|
|
102
|
-
env:
|
|
103
|
-
PYTHONUTF8: "1"
|
|
104
|
-
cmds:
|
|
105
|
-
# Single cross-platform dispatch (#736) -- mirrors the build target's
|
|
106
|
-
# simplification. Python's pathlib + shutil.rmtree handles the dist/
|
|
107
|
-
# directory removal identically on POSIX and Windows, replacing the
|
|
108
|
-
# prior rm -rf / Remove-Item duplication.
|
|
109
|
-
#
|
|
110
|
-
# The dist/ path is anchored at {{.DEFT_ROOT}} so `task clean` works
|
|
111
|
-
# the same way regardless of the operator's current working directory.
|
|
112
|
-
# The previous shape relied on `pathlib.Path('dist')` resolving against
|
|
113
|
-
# the inherited CWD, which silently no-ops when the operator runs
|
|
114
|
-
# `task -t tasks/core.yml clean` from a subdirectory (Greptile P2 on
|
|
115
|
-
# PR #773).
|
|
116
|
-
- cmd: >-
|
|
117
|
-
uv --project "{{.DEFT_ROOT}}" run python -c "import shutil, pathlib;
|
|
118
|
-
d = pathlib.Path(r'{{.DEFT_ROOT}}') / 'dist';
|
|
119
|
-
shutil.rmtree(d) if d.exists() else None;
|
|
120
|
-
print(f'Cleaned {d}')"
|
|
121
|
-
|
|
122
|
-
stats:
|
|
123
|
-
desc: Show framework statistics
|
|
18
|
+
desc: Clean generated dist/ artifacts (cross-platform, #736 / #1860)
|
|
124
19
|
cmds:
|
|
125
20
|
- cmd: >-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
sep='='*42;
|
|
129
|
-
dirs=[('Core files','core'),('Languages','languages'),('Interfaces','interfaces'),('Tools','tools'),('Templates','templates')];
|
|
130
|
-
counts=[(n,len(list(Path(d).glob('*.md')))) for n,d in dirs];
|
|
131
|
-
total=len([f for f in Path('.').rglob('*.md') if '.git' not in str(f) and 'backup' not in str(f)]);
|
|
132
|
-
print(f'Deft Framework v{v} Statistics:');
|
|
133
|
-
print(sep);
|
|
134
|
-
[print(f'{n}: {c}') for n,c in counts];
|
|
135
|
-
print(f'Total files: {total}');
|
|
136
|
-
print(sep)"
|
|
21
|
+
node -e "const fs=require('node:fs');const path=require('node:path');const d=path.join(process.argv[1],'dist');if(fs.existsSync(d))fs.rmSync(d,{recursive:true,force:true});console.log('Cleaned '+d);"
|
|
22
|
+
"{{.DEFT_ROOT}}"
|
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"
|
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}}
|