@dzhechkov/harness-cli 0.8.16 → 0.8.18
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/.dz-manifest.json +16 -16
- package/README.md +86 -9
- package/dist/boolean-flags.d.ts.map +1 -1
- package/dist/boolean-flags.js +4 -0
- package/dist/boolean-flags.js.map +1 -1
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +470 -29
- package/dist/cli.js.map +1 -1
- package/dist/known-flags.d.ts.map +1 -1
- package/dist/known-flags.js +14 -0
- package/dist/known-flags.js.map +1 -1
- package/package.json +6 -6
- package/sbom.json +15 -15
- package/src/boolean-flags.ts +4 -0
- package/src/cli.ts +404 -29
- package/src/known-flags.ts +14 -0
package/.dz-manifest.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "README.md",
|
|
12
|
-
"sha256": "
|
|
12
|
+
"sha256": "7188b390d9105e8d440468cde453309ee5ac8e9b6505f3ebe609393224dd6926"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"path": "dist/bin.d.ts",
|
|
@@ -33,31 +33,31 @@
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"path": "dist/boolean-flags.d.ts.map",
|
|
36
|
-
"sha256": "
|
|
36
|
+
"sha256": "5d168189752313c0592f291f57187feab46445478bb3c6d1f6b9330de4205c83"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"path": "dist/boolean-flags.js",
|
|
40
|
-
"sha256": "
|
|
40
|
+
"sha256": "88ddbf29e0b97f22ad8c8cb65fae8202098627decf4f4d0bdbb24374be7e273c"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"path": "dist/boolean-flags.js.map",
|
|
44
|
-
"sha256": "
|
|
44
|
+
"sha256": "5a772e4d7d6c1515d31645b689e2bd92d1c1c42625ea0f439981c2d5b0f8dd0d"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"path": "dist/cli.d.ts",
|
|
48
|
-
"sha256": "
|
|
48
|
+
"sha256": "a4f6ad121c0e81336e517b10ba656af428cc07d9f41fdc00967d1cd0122be1ee"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"path": "dist/cli.d.ts.map",
|
|
52
|
-
"sha256": "
|
|
52
|
+
"sha256": "40ce13aec8fc6cb0beb1ed02f07bb22438f940d52ef59d02f6dc9352e67b8d79"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
"path": "dist/cli.js",
|
|
56
|
-
"sha256": "
|
|
56
|
+
"sha256": "b5b87557988b5ec5e58913f53068e35dd5a8f8aac6c62f409d13ab9d9b8202b7"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
"path": "dist/cli.js.map",
|
|
60
|
-
"sha256": "
|
|
60
|
+
"sha256": "4d0925b3047fc96233ddb1118b071a0a1eca35995a06f30cdfc8b2e613f1ec31"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"path": "dist/command-inventory.d.ts",
|
|
@@ -129,15 +129,15 @@
|
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
"path": "dist/known-flags.d.ts.map",
|
|
132
|
-
"sha256": "
|
|
132
|
+
"sha256": "703058c8bbf0307ab29f12f8355c8984508f38214c32ab85da790446f0cb9699"
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
"path": "dist/known-flags.js",
|
|
136
|
-
"sha256": "
|
|
136
|
+
"sha256": "6bae6e7f551b6024e3212655f4c5a8f9e426ae0858ff3e65f08d0539bb617028"
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
139
|
"path": "dist/known-flags.js.map",
|
|
140
|
-
"sha256": "
|
|
140
|
+
"sha256": "9edabc481a2545ac56ddfdfba82623cd3ac1cf8a37551b5ff43930bf5f2ef48f"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
143
|
"path": "keys/README.md",
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
"path": "package.json",
|
|
152
|
-
"sha256": "
|
|
152
|
+
"sha256": "9d2e42a35ece84729f572ffbf225665cf5ac9c815c88381dfbd79cd69b4661cd"
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
"path": "src/bin.ts",
|
|
@@ -157,11 +157,11 @@
|
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"path": "src/boolean-flags.ts",
|
|
160
|
-
"sha256": "
|
|
160
|
+
"sha256": "f8f029ad790f43d28fcc1e520c4f74ee39b3a9591d71619546165149a914b054"
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"path": "src/cli.ts",
|
|
164
|
-
"sha256": "
|
|
164
|
+
"sha256": "5ba834f5795e8d4208159aa6fbee738f38978ada811f49ba85f6798079970144"
|
|
165
165
|
},
|
|
166
166
|
{
|
|
167
167
|
"path": "src/command-inventory.ts",
|
|
@@ -181,9 +181,9 @@
|
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
"path": "src/known-flags.ts",
|
|
184
|
-
"sha256": "
|
|
184
|
+
"sha256": "f00496dde83db529d8dde54cf1a5a0048c4c08c49c085e035ad1c90d6a602b30"
|
|
185
185
|
}
|
|
186
186
|
]
|
|
187
187
|
},
|
|
188
|
-
"signature": "
|
|
188
|
+
"signature": "mNtrVxRpvSORGA3ncJqLRrOUsXWZpQT4VwrQPu/0Ev92RVXbvZQfa4JoJeBf/Rabd6cXdlc1Sq1S35KeVOSzDg=="
|
|
189
189
|
}
|
package/README.md
CHANGED
|
@@ -279,7 +279,7 @@ you know exactly which file is at fault, and you know whose defect it is.
|
|
|
279
279
|
|
|
280
280
|
## User Journey — from install to mastery
|
|
281
281
|
|
|
282
|
-
All
|
|
282
|
+
All 91 commands (MEASURED — reproducer: `node --input-type=module -e "import('./dist/index.js').then(m=>console.log(m.DZ_COMMANDS.length))"` from this package; rendered help documents 92 unique top-level names — the 91 plus the built-in `help` — pinned NAME-FOR-NAME by `test/command-inventory-parity.test.ts`) mapped to a real workflow:
|
|
283
283
|
|
|
284
284
|
```
|
|
285
285
|
DISCOVER → INSTALL → USE → CREATE → MAINTAIN → SHARE
|
|
@@ -651,6 +651,7 @@ Three surfaces, three strictness levels — and promotion is EARNED, never autom
|
|
|
651
651
|
|
|
652
652
|
```bash
|
|
653
653
|
dz teach "..." # → "⚠ quarantined: excluded from auto-inject, damped in recall"
|
|
654
|
+
dz teach "..." # the same normalized text reinforces the existing lesson instead of adding a duplicate; quarantine is preserved
|
|
654
655
|
dz recall "topic" # ⚠q hits are VISIBLE but marked + rank-damped (never hidden)
|
|
655
656
|
# the UserPromptSubmit auto-inject hook EXCLUDES ⚠q lessons entirely (logged, never silent)
|
|
656
657
|
|
|
@@ -1938,10 +1939,10 @@ runs a command that MEASURES the declared artifacts itself. It refuses a null re
|
|
|
1938
1939
|
never recorded as done), an absent or partially-present artifact set, and a stage that declares nothing
|
|
1939
1940
|
to witness — so a stage that did not happen can no longer be recorded, which the old mechanism allowed.
|
|
1940
1941
|
|
|
1941
|
-
## All Commands (
|
|
1942
|
+
## All Commands (91)
|
|
1942
1943
|
|
|
1943
|
-
*(
|
|
1944
|
-
top-level names — the
|
|
1944
|
+
*(91 MEASURED from the bounded command inventory below; rendered `dz --help` exposes 92 unique
|
|
1945
|
+
top-level names — the 91 plus the built-in `help`, which prints USAGE before the dispatch switch and
|
|
1945
1946
|
is therefore documented without being a command. Both numbers are COMPUTED, never typed: the name
|
|
1946
1947
|
sets of this section, the root README, the docs site and `DZ_COMMANDS` are pinned to each other by
|
|
1947
1948
|
`test/command-inventory-parity.test.ts`.)*
|
|
@@ -2006,7 +2007,11 @@ dz bto-optimize --split|--plan|--select|--scope-check|--diff [--json] # determ
|
|
|
2006
2007
|
dz discrimination-check --test <f[,f]> [--base <ref>] [--name <filter>] [--runner <cmd>] [--timeout <ms>] [--json] # §42 test-discrimination gate for feature-adr Step-8: run the ADR's property test in an isolated git worktree at pre-feature base — it MUST go red without the fix. SEVEN verdicts, each gated on EXECUTION evidence: DISCRIMINATES · DISCRIMINATES_VIA_ERROR · NON_DISCRIMINATING (false green) · TEST_FILE_ABSENT · LOAD_ERROR_AT_BOTH_REVS · FAILS_AT_TIP · CANNOT_ISOLATE (+ typed reason). Advisory, never auto-aborts
|
|
2007
2008
|
dz amendment-check --slug <slug> | --feature-dir <dir> | --all [--json] (every AM-N / AM-CP-N amendment row must resolve to a test found INSIDE the file the row names; the PLAN is authoritative when it carries rows, and an ideation amendment the plan drops is a failure; --all is a census that always exits 0; exit 0 pass/skip, 1 fail, 3 NOT-ESTABLISHED — ZERO parsed rows may skip only when the whole first paragraph or heading suffix is exactly "None"/"N/A"/"нет", optionally with a full stop; an optional CommonMark closing # sequence is heading furniture, qualified text is refused, and AM-like content beside the declaration is NOT-ESTABLISHED)
|
|
2008
2009
|
dz contract-check --slug <s> [--json] (read-only retrospective feature contract gate: canonical AC-N + ADR Confirmation → CC-N; every item needs one artifact-anchored met|unmet|not-testable verdict; A/B with unmet is refused; exit 0 pass / 1 readable violation / 2 invalid invocation or unreadable/not-established artifacts)
|
|
2010
|
+
dz journal add --kind decision|verdict|run|error|block "<text>" [--ref <trace>] [--at <ISO>] [--quote <file>] [--commit-quote]; show [--day|--week] [--at <date>] [--kind <kind>] [--json] # UTC day files, witnessed append; quotes local by default
|
|
2009
2011
|
dz feature-adr-record --kind ledger|training-pair --stage <s> [--slug <s>] [--row|--pair <json>] [--mark <n>] [--once] [--json] (the witnessed writer: payload as an ARGUMENT never as shell, refused before any write, timestamp stamped before serialising, append verified by re-reading the tail; exit 0 written|duplicate|skipped, 2 refused, 3 not-verified, never blocking)
|
|
2012
|
+
dz runs [--settle] [--stall-minutes N] [--json] [--project <dir>] (read the run registry: live / stalled / orphaned / inconclusive / finished)
|
|
2013
|
+
dz runs-record --event started|heartbeat|finished [--run-id <id>] [--kind <kind>] [--slug <slug>] [--pid <pid|host>] [--parent-run-id <id>] [--outcome <text>] [--project <dir>] [--json] (append one run event)
|
|
2014
|
+
dz runs-clean [--apply] [--retention-days N] [--project <dir>] [--json] (plan cleanup of old clean merged worktrees and dead/finished registry histories; apply explicitly)
|
|
2010
2015
|
dz mutation-gate [--package <dir>] [--registry <file>] [--test-cmd "<cmd>"] [--only <id[,id]>] [--timeout <ms>] [--rebaseline per-entry|final] [--keep-scratch] [--json] # the mutation gate: for each NAMED protection in a declarative registry, copy the package to a scratch dir (shadow-repo layout, node_modules symlinked, git-initialized), verify the baseline is green, apply the entry's exact {find, replace} mutation, run the suite, REQUIRE red, restore — and require the red to be ATTRIBUTABLE to the protection: a mutated file that no longer parses is MUTATION_UNPARSEABLE, a failing count far above the entry's bound (maxFailing, default from observed) is OVER_FAILING, and a restored tree that does not reproduce green makes the entry INCONCLUSIVE (flaky suite). A mutation that does not apply, a green suite, or an inconclusive run is a FAILURE — never a skip. exit 0 all proven / 1 gate failed / 2 setup error
|
|
2011
2016
|
dz delivery-check --slug <slug> [--context-only] [--findings <f.json>] [--strict] [--author <model>] [--json] # portable Step-10 Delivery Gate: the `manual` form that travels to every shell target — prints the 4-plane review brief (regressions ‖ security ‖ code-quality ‖ product-honesty) + artifact probes; --findings classifies a fed-back review into a fail-closed ready|blocked hand-off (only cross-validated BLOCKER/HIGH count) and writes features/<slug>/10_delivery_review.md; --strict exits 1 on blocked
|
|
2012
2017
|
dz skills-verify [--dir <project>] [--expect a,b] [--static] [--strict] [--timeout <s>] [--json] # does .claude/skills/ actually REGISTER? --static = instant layout scan (CI-safe, no session): flags dirs that can never register; default also starts a real session and reads the authoritative system/init listing. exit 0 pass / 1 fail / 2 inconclusive — an unobservable registration is NEVER a pass
|
|
@@ -2063,7 +2068,7 @@ dz import-ecc [--local-path <dir>] [--select id,id,...] [--limit N] [--out
|
|
|
2063
2068
|
```
|
|
2064
2069
|
|
|
2065
2070
|
Built-in, not a command: `dz help` prints this same USAGE and is handled before the dispatch switch,
|
|
2066
|
-
so `dz --help` lists
|
|
2071
|
+
so `dz --help` lists 92 names while the canonical inventory above holds 91 (ADR-001 of feature
|
|
2067
2072
|
`command-count-triad`).
|
|
2068
2073
|
|
|
2069
2074
|
**Adding a command — the whole checklist, in order.** It replaces the seven-place folklore that used
|
|
@@ -3075,6 +3080,15 @@ dz mcp-scan . --reconcile --fail-on-undergrant # CI: exit 1 if a skill declare
|
|
|
3075
3080
|
|
|
3076
3081
|
### dz publish — automated npm publish
|
|
3077
3082
|
|
|
3083
|
+
For a live publish, the CLI prints `published` only after npm answers with the exact new package
|
|
3084
|
+
version, followed by the receipt text `confirmed by registry after N probes`. A zero exit from
|
|
3085
|
+
`pnpm publish` alone is not success. The publisher tries up to 30 registry probes with 10-second
|
|
3086
|
+
pauses between misses; an unconfirmed version is an error and its local bump is restored.
|
|
3087
|
+
`--dry-run` and `--bump-only` do not probe for this receipt because neither performs a live publish.
|
|
3088
|
+
When the receipt never arrives, the CLI adds one line telling you what to check: `npm view <pkg>@<version>` —
|
|
3089
|
+
if the registry answers, the publish DID land and only the local bump was rolled back; re-apply it by hand.
|
|
3090
|
+
Registry probes run `npm view … --prefer-online`, because the publisher itself warms the packument cache before publishing (measured 2026-09-10: 30 misses on a landed package).
|
|
3091
|
+
|
|
3078
3092
|
```bash
|
|
3079
3093
|
dz publish --dry-run # preview what would publish
|
|
3080
3094
|
dz publish --filter skills-devops # publish specific package
|
|
@@ -4361,7 +4375,7 @@ The learned store round-trips across machines in **two** formats, and de-duplica
|
|
|
4361
4375
|
|
|
4362
4376
|
**`dz vector harmonize` — semantic merge.** `dz teach --from-json` only dedups by *exact* text, so paraphrases survive: *"use DataLoader to batch queries"* and *"batch DB round-trips with a dataloader"* are separate rows. Harmonize finds near-duplicate **clusters** by cosine similarity (θ default `0.92`, `--threshold`), keeps the **highest-reward** member of each (tie-break: longer/more-specific text, then newer `ts`), folds reinforcement signal into the keeper (`uses = Σ member uses + drops`, `avgReward` = honest mean of observed member rewards, `mergedFrom` = dropped ids), then removes the rest only on `--apply`. Dry-run previews and writes nothing; apply writes a restorable backup first. It **never** drops a unique pattern. With no vector engine it degrades to **exact-text dedup + an honest note** — never throws.
|
|
4363
4377
|
|
|
4364
|
-
**Learning signal seam.** Ranking reinforcement is behind `memory.learning.backend`: default `native` (bounded uses/recency/reward signal), kill switch `off`, and reserved `ruvector-gnn` (accepted by config with an honest fallback to native; no RuVector dependency is installed). `memory.learning.onRecallHits:false` disables the default recall-hit auto-bump. `dz teach --reinforce "<id-or-text>"` records an explicit use; `dz teach --guard` is opt-in and only reinforces near-duplicates at θ ≥ `0.95`, while a different reward still writes a new record. `dz recall --all --stats` shows store size, domains, top uses, duplicate groups, and re-teach/reinforce trend counters.
|
|
4378
|
+
**Learning signal seam.** Ranking reinforcement is behind `memory.learning.backend`: default `native` (bounded uses/recency/reward signal), kill switch `off`, and reserved `ruvector-gnn` (accepted by config with an honest fallback to native; no RuVector dependency is installed). `memory.learning.onRecallHits:false` disables the default recall-hit auto-bump. On the ordinary path, teaching the same normalized exact text in the same domain reinforces the existing lesson instead of writing a duplicate; a quarantined lesson stays quarantined. `dz teach --reinforce "<id-or-text>"` records an explicit use; `dz teach --guard` is opt-in and only reinforces near-duplicates at θ ≥ `0.95`, while a different reward still writes a new record. `dz recall --all --stats` shows store size, domains, top uses, duplicate groups, and re-teach/reinforce trend counters.
|
|
4365
4379
|
|
|
4366
4380
|
**Before → after** (one near-dup cluster):
|
|
4367
4381
|
|
|
@@ -4628,6 +4642,14 @@ repository-relative evidence paths declared by that report. It writes no feature
|
|
|
4628
4642
|
usage ledger, or checkpoint. Slug traversal, absolute/traversing evidence, symlink escape, and QE
|
|
4629
4643
|
self-citation are refused.
|
|
4630
4644
|
|
|
4645
|
+
When `features/<slug>/03_adr` is absent, the command reads
|
|
4646
|
+
`features/<slug>/00_complexity_assessment.md`. An unambiguous S tier establishes a requirements-only
|
|
4647
|
+
contract and adds the informational diagnostic `adr-not-required-for-tier` without changing the
|
|
4648
|
+
outcome. For M, L, or XL, the same missing directory remains NOT-ESTABLISHED with the distinct code
|
|
4649
|
+
`adr-directory-missing`; an unreadable or ambiguous tier keeps the fail-closed
|
|
4650
|
+
`adr-directory-unreadable` result. An existing but unreadable ADR directory is unchanged and remains
|
|
4651
|
+
an `adr-directory-unreadable` refusal.
|
|
4652
|
+
|
|
4631
4653
|
The source vocabulary is exact: `## Acceptance criteria`, one-line `AC-N: ...`, `## Confirmation`,
|
|
4632
4654
|
one-line `- Load-bearing property: ...`, and one-line `- Required automated check: ...`. The QE report
|
|
4633
4655
|
keeps its holistic Grade and adds one `## Contract checklist` fenced JSON payload:
|
|
@@ -4671,7 +4693,7 @@ refusal as the honest answer.
|
|
|
4671
4693
|
|
|
4672
4694
|
## Status
|
|
4673
4695
|
|
|
4674
|
-
`harness-core v0.8.
|
|
4696
|
+
`harness-core v0.8.25` · `harness-cli v0.8.18` — **this release: the instruments stopped lying in
|
|
4675
4697
|
four measured ways.** (1) A test run's exit code no longer conflates "a test failed" with "the runner
|
|
4676
4698
|
choked": `classifyRunFailure` names `runner-infrastructure` with the closed reason
|
|
4677
4699
|
`worker-rpc-timeout` when zero tests failed AND the runner's own worker-RPC pattern is present — an
|
|
@@ -4694,7 +4716,7 @@ exports (`commandInventory`, `declaredCommands`, `dispatchedCommands`, `document
|
|
|
4694
4716
|
`stripNonCode`, `validateExceptionList`, `INTERNAL_ENTRY_POINTS`, `PSEUDO_COMMANDS`) — instead of a
|
|
4695
4717
|
fourth private regex and a fourth number. Four hidden commands (`mr-rakes`, `retro`,
|
|
4696
4718
|
`feature-adr-setup`, `bto-optimize`) gained USAGE lines, so `--help` changed; `help` is a documented
|
|
4697
|
-
pseudo-command, not a `case` label. **
|
|
4719
|
+
pseudo-command, not a `case` label. **91 canonical commands, 92 names in rendered `--help`** (the 91
|
|
4698
4720
|
plus the built-in `help`) — both COMPUTED from `cli.ts`, neither typed into a test. Three cross-family QE rounds closed
|
|
4699
4721
|
six parser defects the naive version had: four that INVENTED a command (regex literals with a lone
|
|
4700
4722
|
`}`, `case` labels in comments or templates, sub-verb labels from nested switches, ` dz <name>` lines
|
|
@@ -4708,7 +4730,7 @@ the Russian-catalogue stemming, the fixed `discrimination-check` / `mutation-gat
|
|
|
4708
4730
|
`volume-shadow/v1` publish observations with structured human/JSON/audit parity. All four remain
|
|
4709
4731
|
SOFT-only; incomplete evidence is unknown, and source-comment justification is out of scope.
|
|
4710
4732
|
|
|
4711
|
-
`harness-core v0.8.10` · `skills-feature-adr v1.5.9` — **
|
|
4733
|
+
`harness-core v0.8.10` · `skills-feature-adr v1.5.9` — **published 2026-09-09:** the packaged
|
|
4712
4734
|
feature-adr workflow performs advisory top-3 micro-recall at the live Step 3 ADR choice and Step 6
|
|
4713
4735
|
plan-route choice. Every failure is fail-open; versioned `.fa-state/decision-recall.jsonl` rows make
|
|
4714
4736
|
receipt coverage and repeat-related outcomes derivable offline. The hypothesis is external `[SRC],
|
|
@@ -4909,3 +4931,58 @@ harness-core's `src/markdown-masker.ts`. It runs without a core build. Amendment
|
|
|
4909
4931
|
and K2 share the parser while retaining their existing unclosed-block and indentation policies.
|
|
4910
4932
|
The four-space indented-code gap remains open for amendment checks and K2; swarm briefs retain their
|
|
4911
4933
|
existing masking of indented code. Versions are unchanged in this staged change.
|
|
4934
|
+
|
|
4935
|
+
|
|
4936
|
+
### Run registry
|
|
4937
|
+
|
|
4938
|
+
`dz runs --project <repo> [--json]` reads `.dz/runs/registry.jsonl`. The feature-adr workflow
|
|
4939
|
+
appends `started`, a `heartbeat` at each phase boundary, and `finished` through `dz runs-record`.
|
|
4940
|
+
Each invocation allocates its own run ID. Pass Workflow `args.runPid` for an explicit host PID,
|
|
4941
|
+
and `args.parentRunId` when nesting runs; otherwise the writer resolves the Claude ancestor PID
|
|
4942
|
+
and refuses if it cannot establish one. The courier checks the write response. Registry failures
|
|
4943
|
+
log `run registry: <event> UNVERIFIED — <reason>` and mark the registry outcome `unverified`;
|
|
4944
|
+
the workflow continues. Finalization runs on normal returns and exceptions; host termination
|
|
4945
|
+
can leave a started run without finished.
|
|
4946
|
+
|
|
4947
|
+
`live` requires a responding PID. `orphaned` requires a recorded finish or confirmed absent PID;
|
|
4948
|
+
missing parents, inaccessible PID probes and unreadable registries remain `inconclusive`, with
|
|
4949
|
+
a reason. A confirmed live PID with a heartbeat older than `--stall-minutes` (default 120)
|
|
4950
|
+
is `stalled`; a missing heartbeat remains `live`. Stalled parents remain alive for their children. Completed runs display
|
|
4951
|
+
`finished`; a child of a finished parent is `orphaned`. An unreadable registry exits 1.
|
|
4952
|
+
Before the first run, an absent registry reports `нет реестра: .dz/runs/registry.jsonl ещё не создан (ни одного прогона)`
|
|
4953
|
+
and exits 0 (`status: "missing"` in JSON).
|
|
4954
|
+
|
|
4955
|
+
The core exports `appendRunEvent`, `readRunRegistry`, `probePid`, `liveness`, `liveParents`, and
|
|
4956
|
+
`runRecordCommand`. Appends preserve event identity and bound diagnostic `reason` text below
|
|
4957
|
+
PIPE_BUF with `truncated: true`; oversized identity fields are refused.
|
|
4958
|
+
|
|
4959
|
+
|
|
4960
|
+
### Run cleanup and settlement
|
|
4961
|
+
|
|
4962
|
+
`dz runs --settle` appends `finished` with outcome `died` only for confirmed absent PIDs.
|
|
4963
|
+
A second invocation reports `nothing to settle`. `inconclusive` is preserved. Use
|
|
4964
|
+
`dz runs --stall-minutes 150` to change the heartbeat threshold; `stalled` only changes the display.
|
|
4965
|
+
|
|
4966
|
+
```bash
|
|
4967
|
+
dz runs-clean --project /path/to/repo # inspect the plan first
|
|
4968
|
+
dz runs-clean --project /path/to/repo --retention-days 7 --json
|
|
4969
|
+
# After reviewing the plan, explicitly apply:
|
|
4970
|
+
dz runs-clean --project /path/to/repo --retention-days 7 --apply
|
|
4971
|
+
```
|
|
4972
|
+
|
|
4973
|
+
Only non-main worktrees merged into `main`, clean, and strictly older than the retention
|
|
4974
|
+
(default 2 days, measured from their latest commit) qualify. Detached worktrees use their HEAD's
|
|
4975
|
+
ancestry. Dirty worktrees stay, with the file count and first five paths printed. Unknown merge
|
|
4976
|
+
or commit-age facts stay; unreadable status refuses cleanup. Removal uses Git without force and
|
|
4977
|
+
is reported successful only after rereading the worktree list.
|
|
4978
|
+
|
|
4979
|
+
With `--apply`, whole finished or confirmed-dead run histories whose newest event exceeds retention
|
|
4980
|
+
move to `.dz/runs/registry.archive.jsonl`; live and inconclusive runs stay in `registry.jsonl`.
|
|
4981
|
+
CLI appends, settlement, and archive read/plan/rewrite share the named `run-registry-archive` lock
|
|
4982
|
+
under `.dz/runs`. Archive writes append before temp-file rename; a crash between those operations
|
|
4983
|
+
can duplicate archive events on retry. Direct API writers must coordinate with that same lock.
|
|
4984
|
+
|
|
4985
|
+
Core APIs: `settleDeadRuns` and `planRegistryArchive` are pure registry decisions;
|
|
4986
|
+
`planWorktreeCleanup` accepts injected `WorktreeFact` values and returns remove/keep decisions;
|
|
4987
|
+
`renderCleanupPlan` renders them. `worktreeRemovalsToApply` selects removals only when apply is true.
|
|
4988
|
+
No process is terminated and no branch is deleted.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-flags.d.ts","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"boolean-flags.d.ts","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAiGhD,CAAC;AAEH,gGAAgG;AAChG,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAc,CAAC;AAElE,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpE"}
|
package/dist/boolean-flags.js
CHANGED
|
@@ -35,7 +35,9 @@ export const BOOLEAN_CLI_FLAGS = new Set([
|
|
|
35
35
|
'by-stage',
|
|
36
36
|
'calibrate',
|
|
37
37
|
'check',
|
|
38
|
+
'commit-quote',
|
|
38
39
|
'confirm',
|
|
40
|
+
'day',
|
|
39
41
|
'context-only',
|
|
40
42
|
'deep',
|
|
41
43
|
'diff',
|
|
@@ -98,6 +100,7 @@ export const BOOLEAN_CLI_FLAGS = new Set([
|
|
|
98
100
|
'scope-check',
|
|
99
101
|
'semantic',
|
|
100
102
|
'send',
|
|
103
|
+
'settle',
|
|
101
104
|
'split',
|
|
102
105
|
'stages-json',
|
|
103
106
|
'static',
|
|
@@ -108,6 +111,7 @@ export const BOOLEAN_CLI_FLAGS = new Set([
|
|
|
108
111
|
'usage',
|
|
109
112
|
'validate',
|
|
110
113
|
'weak',
|
|
114
|
+
'week',
|
|
111
115
|
'with-pairs',
|
|
112
116
|
'with-references',
|
|
113
117
|
'yes',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boolean-flags.js","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,UAAU;IACV,UAAU;IACV,KAAK;IACL,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,KAAK;IACL,OAAO;IACP,WAAW;IACX,MAAM;IACN,OAAO;IACP,KAAK;IACL,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,SAAS;IACT,cAAc;IACd,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,WAAW;IACX,oBAAoB;IACpB,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,MAAM;IACN,eAAe;IACf,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,cAAc;IACd,QAAQ;IACR,SAAS;IACT,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,WAAW;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACb,UAAU;IACV,WAAW;IACX,MAAM;IACN,UAAU;IACV,SAAS;IACT,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,SAAS;IACT,WAAW;IACX,oBAAoB;IACpB,mBAAmB;IACnB,QAAQ;IACR,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,aAAa;IACb,UAAU;IACV,MAAM;IACN,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,KAAK;CACN,CAAC,CAAC;AAEH,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAsB,CAAC,OAAO,CAAC,CAAC;AAElE,iGAAiG;AACjG,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtE,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"boolean-flags.js","sourceRoot":"","sources":["../src/boolean-flags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,UAAU;IACV,UAAU;IACV,KAAK;IACL,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,KAAK;IACL,OAAO;IACP,WAAW;IACX,MAAM;IACN,OAAO;IACP,KAAK;IACL,WAAW;IACX,UAAU;IACV,WAAW;IACX,OAAO;IACP,cAAc;IACd,SAAS;IACT,KAAK;IACL,cAAc;IACd,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,QAAQ;IACR,WAAW;IACX,oBAAoB;IACpB,UAAU;IACV,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,MAAM;IACN,eAAe;IACf,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,cAAc;IACd,QAAQ;IACR,SAAS;IACT,MAAM;IACN,cAAc;IACd,MAAM;IACN,OAAO;IACP,YAAY;IACZ,UAAU;IACV,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,WAAW;IACX,eAAe;IACf,WAAW;IACX,aAAa;IACb,UAAU;IACV,WAAW;IACX,MAAM;IACN,UAAU;IACV,SAAS;IACT,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,SAAS;IACT,WAAW;IACX,oBAAoB;IACpB,mBAAmB;IACnB,QAAQ;IACR,OAAO;IACP,cAAc;IACd,iBAAiB;IACjB,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,aAAa;IACb,UAAU;IACV,MAAM;IACN,QAAQ;IACR,OAAO;IACP,aAAa;IACb,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,KAAK;CACN,CAAC,CAAC;AAEH,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAsB,CAAC,OAAO,CAAC,CAAC;AAElE,iGAAiG;AACjG,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACzD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtE,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
6
|
import { spawn, type ChildProcess } from 'node:child_process';
|
|
7
|
+
import { type JournalIo } from '@dzhechkov/harness-core';
|
|
7
8
|
import { runSyncCodexHooks, type CodexHooksSyncReport, type BridgeFamily } from '@dzhechkov/harness-core';
|
|
8
9
|
import type { RecallPatternsOptions, TeachGuardResult, IntegrationOutcome } from '@dzhechkov/harness-core';
|
|
9
10
|
/** Literal command inventory, pinned against the main dispatch switch by a layer-1 test. */
|
|
@@ -67,6 +68,8 @@ export interface CliIo {
|
|
|
67
68
|
readonly installRunner?: (command: string, cwd: string) => void;
|
|
68
69
|
/** Fault seam for proving mutation-gate catches and retries thrown runner internals. */
|
|
69
70
|
readonly mutationGateRunner?: MutationGateRunner;
|
|
71
|
+
/** Read-back fault seam; production uses the real filesystem. */
|
|
72
|
+
readonly journalIo?: JournalIo;
|
|
70
73
|
}
|
|
71
74
|
/** Injected subprocess runner used by `dz release` (see {@link CliIo.releaseRunner}). */
|
|
72
75
|
export type ReleaseExecRunner = (cmd: string, opts: {
|
|
@@ -78,6 +81,7 @@ export type ReleaseExecRunner = (cmd: string, opts: {
|
|
|
78
81
|
stderr: string;
|
|
79
82
|
timedOut?: boolean;
|
|
80
83
|
};
|
|
84
|
+
type Write = (line: string) => void;
|
|
81
85
|
/**
|
|
82
86
|
* Команда npm для установки пакета В ЦЕЛЕВОЙ КАТАЛОГ, а не куда решит npm.
|
|
83
87
|
*
|
|
@@ -166,6 +170,12 @@ export declare function __wfKillGroupTestSeam(): {
|
|
|
166
170
|
killAll: () => number[];
|
|
167
171
|
size: () => number;
|
|
168
172
|
};
|
|
173
|
+
/** Git effects are injected; the core owns eligibility and the explicit apply boundary. */
|
|
174
|
+
export declare function cmdRunsClean(options: Map<string, string>, flags: Set<string>, cwd: string, write: Write, exec?: (command: string, options: {
|
|
175
|
+
cwd: string;
|
|
176
|
+
encoding: 'utf8';
|
|
177
|
+
stdio: ['ignore', 'pipe', 'pipe'];
|
|
178
|
+
}) => string | Buffer): number;
|
|
169
179
|
export interface ClaudeBridgeRun {
|
|
170
180
|
stdout: string;
|
|
171
181
|
stderr: string;
|
|
@@ -221,4 +231,5 @@ export declare function runChildBridge(bin: string, argv: string[], opts: {
|
|
|
221
231
|
envExtra?: readonly string[];
|
|
222
232
|
}): Promise<ClaudeBridgeRun>;
|
|
223
233
|
export declare function runCli(argv: string[], io?: CliIo): Promise<number>;
|
|
234
|
+
export {};
|
|
224
235
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAoC,KAAK,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|