devrites 5.3.0 → 5.4.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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [5.4.0](https://github.com/ViktorsBaikers/DevRites/compare/v5.3.0...v5.4.0) (2026-09-13)
6
+
7
+ ### Added
8
+
9
+ * **rite:** auto re-batch on frozen-lease scope defect ([#67](https://github.com/ViktorsBaikers/DevRites/issues/67)) ([6728385](https://github.com/ViktorsBaikers/DevRites/commit/6728385b522a5b34bebacb89a5855e81d54c0f68))
10
+
5
11
  ## [5.3.0](https://github.com/ViktorsBaikers/DevRites/compare/v5.2.4...v5.3.0) (2026-09-13)
6
12
 
7
13
  ### Added
package/README.md CHANGED
@@ -33,7 +33,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
33
33
  Unattended runs may create local WIP checkpoint commits along the way, but they
34
34
  remain local unless Ship's disclosed plan includes an approved remote action.
35
35
 
36
- **Status:** [`v5.3.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.3.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
36
+ **Status:** [`v5.4.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.4.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
37
37
 
38
38
  This is the latest published release; `main` may contain unreleased work.
39
39
 
@@ -62,8 +62,10 @@ All-green serial integrate; a red/gap sibling gets a bounded repair round in
62
62
  its own worktree — never rebuilt from scratch while budget remains.
63
63
  Plan-owned gaps still route through Spec Drift Guard (batch sweep, one folded
64
64
  plan repair + one vet recheck inline); do not emit a human `Fix`. Exhausted
65
- repair blocks and preserves everything; `cleanup --force` (human discard
66
- path only) salvages slice branches before removing worktrees.
65
+ repair blocks and preserves everything; `cleanup --force` salvages slice
66
+ branches before removing worktrees human-gated to abandon a batch,
67
+ orchestrator-emitted only as the salvage step of an automatic frozen-lease
68
+ re-batch.
67
69
  AFK charges after integrate only. Running lease blocks another
68
70
  `/rite-build`. Details: `parallel-batch.md`.
69
71
 
@@ -59,12 +59,13 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
59
59
  landed in control, so `parallel cleanup` removes worktrees/branches.
60
60
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
61
61
  removed while the batch may resume. `parallel abort` + `cleanup --force`
62
- is the explicit human discard path, never orchestrator-emitted; it
63
- salvages each sibling first (uncommitted allowlisted changes slice-branch
64
- commit; branches past `B` kept; a failed salvage keeps the worktree) and
65
- prints retained refs for the abort record. `abort` marks the lease only
66
- never rewinds control: a moved HEAD is external work, reported not reset.
67
- Never integrate a rejected transfer commit.
62
+ abandons the batch — the explicit human discard path; the single
63
+ orchestrator-emitted use is the automatic re-batch under Repair rounds,
64
+ where it acts as the salvage step only (uncommitted allowlisted changes
65
+ slice-branch commit; branches past `B` kept; a failed salvage keeps the
66
+ worktree) and prints retained refs for the record. `abort` marks the lease
67
+ only never rewinds control: a moved HEAD is external work, reported not
68
+ reset. Never integrate a rejected transfer commit.
68
69
 
69
70
  ## Repair rounds
70
71
 
@@ -79,9 +80,19 @@ while budget remains.
79
80
  [`spec-drift-guard.md`](spec-drift-guard.md): batch-sweep contract
80
81
  assumptions, one folded `/rite-plan repair` + one `/rite-vet` recheck
81
82
  inline, resume repair in the same worktrees under the amended contract;
82
- never emit `Fix:`. **Reviewer stall/cancel or missing verdict**
83
- re-dispatch the reviewer, not the wright. **Product/policy/irreversible**
84
- stops for the human.
83
+ never emit `Fix:`. **Frozen-lease scope defect** the amended contract or
84
+ a review requirement needs paths outside a slice's allowlist, or re-slices
85
+ the plan (a lease is immutable once written: its allowlists are the
86
+ disjointness guarantee) → **automatic re-batch, no human gate**:
87
+ `parallel cleanup --force` as the salvage step, record the retained refs in
88
+ the repair-round artifact, `parallel create` a fresh batch from control
89
+ `HEAD` under the corrected decomposition. Prior attempts stay reachable —
90
+ hand each new wright the salvaged branch ref
91
+ (`devrites/parallel/<slug>/<old-batch>/<slice>`) so it builds on what worked
92
+ instead of starting blind. If no corrected decomposition exists, that is
93
+ exhaustion → blocked, preserve, STOP. **Reviewer stall/cancel or missing
94
+ verdict** → re-dispatch the reviewer, not the wright. **Product/policy/
95
+ irreversible** → stops for the human.
85
96
  - Dispatch a fresh `devrites-slice-wright` (cwd = the sibling's worktree, same
86
97
  allowlist and host rules as step 3 — siblings may repair in parallel) with
87
98
  the original contract + verbatim findings + "preserve what works; fix the
@@ -107,7 +118,8 @@ devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> -
107
118
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
108
119
  devrites-engine parallel status --root <repo> --slug <slug>
109
120
  devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
110
- # human discard only, never orchestrator-emitted:
121
+ # abandoning the batch is human discard only; a frozen-lease re-batch may emit
122
+ # cleanup --force as its salvage step (see Repair rounds):
111
123
  # parallel abort --root <repo> --slug <slug>
112
124
  # parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
113
125
  ```
@@ -62,8 +62,10 @@ All-green serial integrate; a red/gap sibling gets a bounded repair round in
62
62
  its own worktree — never rebuilt from scratch while budget remains.
63
63
  Plan-owned gaps still route through Spec Drift Guard (batch sweep, one folded
64
64
  plan repair + one vet recheck inline); do not emit a human `Fix`. Exhausted
65
- repair blocks and preserves everything; `cleanup --force` (human discard
66
- path only) salvages slice branches before removing worktrees.
65
+ repair blocks and preserves everything; `cleanup --force` salvages slice
66
+ branches before removing worktrees human-gated to abandon a batch,
67
+ orchestrator-emitted only as the salvage step of an automatic frozen-lease
68
+ re-batch.
67
69
  AFK charges after integrate only. Running lease blocks another
68
70
  `/rite-build`. Details: `parallel-batch.md`.
69
71
 
@@ -59,12 +59,13 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
59
59
  landed in control, so `parallel cleanup` removes worktrees/branches.
60
60
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
61
61
  removed while the batch may resume. `parallel abort` + `cleanup --force`
62
- is the explicit human discard path, never orchestrator-emitted; it
63
- salvages each sibling first (uncommitted allowlisted changes slice-branch
64
- commit; branches past `B` kept; a failed salvage keeps the worktree) and
65
- prints retained refs for the abort record. `abort` marks the lease only
66
- never rewinds control: a moved HEAD is external work, reported not reset.
67
- Never integrate a rejected transfer commit.
62
+ abandons the batch — the explicit human discard path; the single
63
+ orchestrator-emitted use is the automatic re-batch under Repair rounds,
64
+ where it acts as the salvage step only (uncommitted allowlisted changes
65
+ slice-branch commit; branches past `B` kept; a failed salvage keeps the
66
+ worktree) and prints retained refs for the record. `abort` marks the lease
67
+ only never rewinds control: a moved HEAD is external work, reported not
68
+ reset. Never integrate a rejected transfer commit.
68
69
 
69
70
  ## Repair rounds
70
71
 
@@ -79,9 +80,19 @@ while budget remains.
79
80
  [`spec-drift-guard.md`](spec-drift-guard.md): batch-sweep contract
80
81
  assumptions, one folded `/rite-plan repair` + one `/rite-vet` recheck
81
82
  inline, resume repair in the same worktrees under the amended contract;
82
- never emit `Fix:`. **Reviewer stall/cancel or missing verdict**
83
- re-dispatch the reviewer, not the wright. **Product/policy/irreversible**
84
- stops for the human.
83
+ never emit `Fix:`. **Frozen-lease scope defect** the amended contract or
84
+ a review requirement needs paths outside a slice's allowlist, or re-slices
85
+ the plan (a lease is immutable once written: its allowlists are the
86
+ disjointness guarantee) → **automatic re-batch, no human gate**:
87
+ `parallel cleanup --force` as the salvage step, record the retained refs in
88
+ the repair-round artifact, `parallel create` a fresh batch from control
89
+ `HEAD` under the corrected decomposition. Prior attempts stay reachable —
90
+ hand each new wright the salvaged branch ref
91
+ (`devrites/parallel/<slug>/<old-batch>/<slice>`) so it builds on what worked
92
+ instead of starting blind. If no corrected decomposition exists, that is
93
+ exhaustion → blocked, preserve, STOP. **Reviewer stall/cancel or missing
94
+ verdict** → re-dispatch the reviewer, not the wright. **Product/policy/
95
+ irreversible** → stops for the human.
85
96
  - Dispatch a fresh `devrites-slice-wright` (cwd = the sibling's worktree, same
86
97
  allowlist and host rules as step 3 — siblings may repair in parallel) with
87
98
  the original contract + verbatim findings + "preserve what works; fix the
@@ -107,7 +118,8 @@ devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> -
107
118
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
108
119
  devrites-engine parallel status --root <repo> --slug <slug>
109
120
  devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
110
- # human discard only, never orchestrator-emitted:
121
+ # abandoning the batch is human discard only; a frozen-lease re-batch may emit
122
+ # cleanup --force as its salvage step (see Repair rounds):
111
123
  # parallel abort --root <repo> --slug <slug>
112
124
  # parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
113
125
  ```
@@ -62,8 +62,10 @@ All-green serial integrate; a red/gap sibling gets a bounded repair round in
62
62
  its own worktree — never rebuilt from scratch while budget remains.
63
63
  Plan-owned gaps still route through Spec Drift Guard (batch sweep, one folded
64
64
  plan repair + one vet recheck inline); do not emit a human `Fix`. Exhausted
65
- repair blocks and preserves everything; `cleanup --force` (human discard
66
- path only) salvages slice branches before removing worktrees.
65
+ repair blocks and preserves everything; `cleanup --force` salvages slice
66
+ branches before removing worktrees human-gated to abandon a batch,
67
+ orchestrator-emitted only as the salvage step of an automatic frozen-lease
68
+ re-batch.
67
69
  AFK charges after integrate only. Running lease blocks another
68
70
  `$rite-build`. Details: `parallel-batch.md`.
69
71
 
@@ -59,12 +59,13 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
59
59
  landed in control, so `parallel cleanup` removes worktrees/branches.
60
60
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
61
61
  removed while the batch may resume. `parallel abort` + `cleanup --force`
62
- is the explicit human discard path, never orchestrator-emitted; it
63
- salvages each sibling first (uncommitted allowlisted changes slice-branch
64
- commit; branches past `B` kept; a failed salvage keeps the worktree) and
65
- prints retained refs for the abort record. `abort` marks the lease only
66
- never rewinds control: a moved HEAD is external work, reported not reset.
67
- Never integrate a rejected transfer commit.
62
+ abandons the batch — the explicit human discard path; the single
63
+ orchestrator-emitted use is the automatic re-batch under Repair rounds,
64
+ where it acts as the salvage step only (uncommitted allowlisted changes
65
+ slice-branch commit; branches past `B` kept; a failed salvage keeps the
66
+ worktree) and prints retained refs for the record. `abort` marks the lease
67
+ only never rewinds control: a moved HEAD is external work, reported not
68
+ reset. Never integrate a rejected transfer commit.
68
69
 
69
70
  ## Repair rounds
70
71
 
@@ -79,9 +80,19 @@ while budget remains.
79
80
  [`spec-drift-guard.md`](spec-drift-guard.md): batch-sweep contract
80
81
  assumptions, one folded `$rite-plan repair` + one `$rite-vet` recheck
81
82
  inline, resume repair in the same worktrees under the amended contract;
82
- never emit `Fix:`. **Reviewer stall/cancel or missing verdict**
83
- re-dispatch the reviewer, not the wright. **Product/policy/irreversible**
84
- stops for the human.
83
+ never emit `Fix:`. **Frozen-lease scope defect** the amended contract or
84
+ a review requirement needs paths outside a slice's allowlist, or re-slices
85
+ the plan (a lease is immutable once written: its allowlists are the
86
+ disjointness guarantee) → **automatic re-batch, no human gate**:
87
+ `parallel cleanup --force` as the salvage step, record the retained refs in
88
+ the repair-round artifact, `parallel create` a fresh batch from control
89
+ `HEAD` under the corrected decomposition. Prior attempts stay reachable —
90
+ hand each new wright the salvaged branch ref
91
+ (`devrites/parallel/<slug>/<old-batch>/<slice>`) so it builds on what worked
92
+ instead of starting blind. If no corrected decomposition exists, that is
93
+ exhaustion → blocked, preserve, STOP. **Reviewer stall/cancel or missing
94
+ verdict** → re-dispatch the reviewer, not the wright. **Product/policy/
95
+ irreversible** → stops for the human.
85
96
  - Dispatch a fresh `devrites-slice-wright` (cwd = the sibling's worktree, same
86
97
  allowlist and host rules as step 3 — siblings may repair in parallel) with
87
98
  the original contract + verbatim findings + "preserve what works; fix the
@@ -107,7 +118,8 @@ devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> -
107
118
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
108
119
  devrites-engine parallel status --root <repo> --slug <slug>
109
120
  devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
110
- # human discard only, never orchestrator-emitted:
121
+ # abandoning the batch is human discard only; a frozen-lease re-batch may emit
122
+ # cleanup --force as its salvage step (see Repair rounds):
111
123
  # parallel abort --root <repo> --slug <slug>
112
124
  # parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
113
125
  ```
@@ -62,8 +62,10 @@ All-green serial integrate; a red/gap sibling gets a bounded repair round in
62
62
  its own worktree — never rebuilt from scratch while budget remains.
63
63
  Plan-owned gaps still route through Spec Drift Guard (batch sweep, one folded
64
64
  plan repair + one vet recheck inline); do not emit a human `Fix`. Exhausted
65
- repair blocks and preserves everything; `cleanup --force` (human discard
66
- path only) salvages slice branches before removing worktrees.
65
+ repair blocks and preserves everything; `cleanup --force` salvages slice
66
+ branches before removing worktrees human-gated to abandon a batch,
67
+ orchestrator-emitted only as the salvage step of an automatic frozen-lease
68
+ re-batch.
67
69
  AFK charges after integrate only. Running lease blocks another
68
70
  `/rite-build`. Details: `parallel-batch.md`.
69
71
 
@@ -59,12 +59,13 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
59
59
  landed in control, so `parallel cleanup` removes worktrees/branches.
60
60
  Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
61
61
  removed while the batch may resume. `parallel abort` + `cleanup --force`
62
- is the explicit human discard path, never orchestrator-emitted; it
63
- salvages each sibling first (uncommitted allowlisted changes slice-branch
64
- commit; branches past `B` kept; a failed salvage keeps the worktree) and
65
- prints retained refs for the abort record. `abort` marks the lease only
66
- never rewinds control: a moved HEAD is external work, reported not reset.
67
- Never integrate a rejected transfer commit.
62
+ abandons the batch — the explicit human discard path; the single
63
+ orchestrator-emitted use is the automatic re-batch under Repair rounds,
64
+ where it acts as the salvage step only (uncommitted allowlisted changes
65
+ slice-branch commit; branches past `B` kept; a failed salvage keeps the
66
+ worktree) and prints retained refs for the record. `abort` marks the lease
67
+ only never rewinds control: a moved HEAD is external work, reported not
68
+ reset. Never integrate a rejected transfer commit.
68
69
 
69
70
  ## Repair rounds
70
71
 
@@ -79,9 +80,19 @@ while budget remains.
79
80
  [`spec-drift-guard.md`](spec-drift-guard.md): batch-sweep contract
80
81
  assumptions, one folded `/rite-plan repair` + one `/rite-vet` recheck
81
82
  inline, resume repair in the same worktrees under the amended contract;
82
- never emit `Fix:`. **Reviewer stall/cancel or missing verdict**
83
- re-dispatch the reviewer, not the wright. **Product/policy/irreversible**
84
- stops for the human.
83
+ never emit `Fix:`. **Frozen-lease scope defect** the amended contract or
84
+ a review requirement needs paths outside a slice's allowlist, or re-slices
85
+ the plan (a lease is immutable once written: its allowlists are the
86
+ disjointness guarantee) → **automatic re-batch, no human gate**:
87
+ `parallel cleanup --force` as the salvage step, record the retained refs in
88
+ the repair-round artifact, `parallel create` a fresh batch from control
89
+ `HEAD` under the corrected decomposition. Prior attempts stay reachable —
90
+ hand each new wright the salvaged branch ref
91
+ (`devrites/parallel/<slug>/<old-batch>/<slice>`) so it builds on what worked
92
+ instead of starting blind. If no corrected decomposition exists, that is
93
+ exhaustion → blocked, preserve, STOP. **Reviewer stall/cancel or missing
94
+ verdict** → re-dispatch the reviewer, not the wright. **Product/policy/
95
+ irreversible** → stops for the human.
85
96
  - Dispatch a fresh `devrites-slice-wright` (cwd = the sibling's worktree, same
86
97
  allowlist and host rules as step 3 — siblings may repair in parallel) with
87
98
  the original contract + verbatim findings + "preserve what works; fix the
@@ -107,7 +118,8 @@ devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> -
107
118
  devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
108
119
  devrites-engine parallel status --root <repo> --slug <slug>
109
120
  devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
110
- # human discard only, never orchestrator-emitted:
121
+ # abandoning the batch is human discard only; a frozen-lease re-batch may emit
122
+ # cleanup --force as its salvage step (see Repair rounds):
111
123
  # parallel abort --root <repo> --slug <slug>
112
124
  # parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
113
125
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "5.3.0",
3
+ "version": "5.4.0",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code and Codex",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",