devrites 7.2.6 → 7.2.7

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.
Files changed (78) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/SECURITY.md +11 -7
  4. package/docs/engine/commands.md +3 -3
  5. package/engine/internal/lib/context.go +7 -4
  6. package/engine/internal/lib/dispatch.go +77 -21
  7. package/engine/internal/lib/taskgraph.go +94 -21
  8. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  9. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +3 -6
  10. package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +5 -6
  11. package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  12. package/pack/.claude/skills/rite-autocomplete/reference/lookahead.md +18 -35
  13. package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  14. package/pack/.claude/skills/rite-build/reference/parallel-batch.md +23 -13
  15. package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +5 -5
  16. package/pack/.claude/skills/rite-spec/SKILL.md +2 -2
  17. package/pack/.claude/skills/rite-temper/SKILL.md +4 -5
  18. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  19. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +3 -6
  20. package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +5 -6
  21. package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  22. package/pack/generated/claude/skills/rite-autocomplete/reference/lookahead.md +18 -35
  23. package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  24. package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +23 -13
  25. package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +5 -5
  26. package/pack/generated/claude/skills/rite-spec/SKILL.md +2 -2
  27. package/pack/generated/claude/skills/rite-temper/SKILL.md +4 -5
  28. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  29. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +3 -6
  30. package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +5 -6
  31. package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  32. package/pack/generated/codex/skills/rite-autocomplete/reference/lookahead.md +18 -35
  33. package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  34. package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +23 -13
  35. package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +5 -5
  36. package/pack/generated/codex/skills/rite-spec/SKILL.md +2 -2
  37. package/pack/generated/codex/skills/rite-temper/SKILL.md +4 -5
  38. package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  39. package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +3 -6
  40. package/pack/generated/devin/skills/devrites-lib/reference/standards/principles.md +5 -6
  41. package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  42. package/pack/generated/devin/skills/rite-autocomplete/reference/lookahead.md +18 -35
  43. package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  44. package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +23 -13
  45. package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +5 -5
  46. package/pack/generated/devin/skills/rite-spec/SKILL.md +2 -2
  47. package/pack/generated/devin/skills/rite-temper/SKILL.md +4 -5
  48. package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  49. package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +3 -6
  50. package/pack/generated/dsh/skills/devrites-lib/reference/standards/principles.md +5 -6
  51. package/pack/generated/dsh/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  52. package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +18 -35
  53. package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  54. package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +23 -13
  55. package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +5 -5
  56. package/pack/generated/dsh/skills/rite-spec/SKILL.md +2 -2
  57. package/pack/generated/dsh/skills/rite-temper/SKILL.md +4 -5
  58. package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  59. package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +3 -6
  60. package/pack/generated/omp/skills/devrites-lib/reference/standards/principles.md +5 -6
  61. package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  62. package/pack/generated/omp/skills/rite-autocomplete/reference/lookahead.md +18 -35
  63. package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  64. package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +23 -13
  65. package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +5 -5
  66. package/pack/generated/omp/skills/rite-spec/SKILL.md +2 -2
  67. package/pack/generated/omp/skills/rite-temper/SKILL.md +4 -5
  68. package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +3 -3
  69. package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +3 -6
  70. package/pack/generated/pi/skills/devrites-lib/reference/standards/principles.md +5 -6
  71. package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +3 -1
  72. package/pack/generated/pi/skills/rite-autocomplete/reference/lookahead.md +18 -35
  73. package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +7 -8
  74. package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +23 -13
  75. package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +5 -5
  76. package/pack/generated/pi/skills/rite-spec/SKILL.md +2 -2
  77. package/pack/generated/pi/skills/rite-temper/SKILL.md +4 -5
  78. package/package.json +3 -3
@@ -61,14 +61,13 @@ Without a safe seam, escalate or park; only a real human/risk/scope gate stops f
61
61
  ## Other stop classes
62
62
 
63
63
  - **Gate severity:** escalating always stops. Blocking with a ranked recommended
64
- option (`proposed` or option 1 labelled Recommended): auto-pick via
65
- `devrites-engine state resolve`, then continue internally (including Spec Drift
66
- Guard when the answer changes ownership or acceptance). Exception: a question whose answer
67
- would add acceptance or product scope is never auto-picked, even with a
68
- recommended option; it stops for a human. Blocking with no
69
- recommended option still stops. Validating: auto-pick the recommended option,
70
- close the question, continue — except Seal's judgment-only acceptance question
71
- (`slice: seal`), which only a human answers; it stops.
64
+ option (`proposed` or option 1 labelled Recommended) auto-picks via
65
+ `devrites-engine state resolve` and continues, Spec Drift Guard included when
66
+ the answer changes ownership or acceptance. Added acceptance or scope is never
67
+ auto-picked. No recommended option still stops. An avoidable principle conflict
68
+ complies: change the spec and resolve it. Re-read on entry. `continuation: clear`
69
+ with `awaiting_human` still folds resolved decisions. Do not report a stop from chat.
70
+ Validating auto-picks, except Seal `slice: seal`, which a human answers.
72
71
  - **Temper:** `expand` and extra acceptance stop: ask through `AskUserQuestion`, hold the
73
72
  fold, and continue only after a human resolves the qid (an ADR is not that answer).
74
73
  Irreversible-risk still pauses. `hold-rigor`, `reduce-to-MVP`, and a skip do not pause.
@@ -27,16 +27,21 @@ N_eff = min(
27
27
  cap -- this invocation's --parallel N (wins over leftover sentinel max_parallel)
28
28
  | else sentinel max_parallel | else 10 (autocomplete default)
29
29
  eligible set -- dependency-satisfied pending slices, pairwise path-disjoint
30
- AFK headroom -- remaining max_slices, max_agents, max_minutes, review queue
30
+ AFK headroom -- outside /rite-autocomplete only (max_slices, max_agents,
31
+ max_minutes, review queue). Autocomplete ignores those;
32
+ do not shrink this batch for them
31
33
  host capacity -- concurrent worktree writers + the runtime isolation table
32
34
  )
33
35
  ```
34
36
 
35
37
  Select **greedily in plan order** with
36
38
  `devrites-engine parallel select --slug <slug> --cap N --from-plan`: ready set
37
- (dependencies `built`, minus running-lease slices), Writer allowlist
39
+ (dependencies built — state.md checkbox, or an evidence.md heading that says that slice was checkpointed plus a `Checkpoint: <sha>` line — minus running-lease slices), Writer allowlist
38
40
  (else Files likely touched), plus manifest/lockfile when `External dependencies:`
39
- names a package (`none*`, existing, or no-new prose without a coordinate);
41
+ names a package (module path, npm scope, backticked name, or a non-toolchain version).
42
+ `context --phase build` with no `--slice` stays on `active_slice` unless AFK
43
+ `max_parallel` is at least 2 or a lease is running; a HITL `--parallel N` run
44
+ passes `--whole` so the other slices stay visible.
40
45
  `next` prints `eligible_now:`/`batch:`. `n_eff` counts new picks only.
41
46
  With a running lease, a single new pick still uses `parallel add`;
42
47
  `n_eff=0` with a running lease waits for siblings, not Prove. Without one:
@@ -76,10 +81,11 @@ snapshot directory, formatter sweep — and compare paths case-folded
76
81
  (`src/Api.ts` = `src/api.ts`); `--from-plan` adds the manifest/lockfile for a package.
77
82
  Slices colliding on either run serially; the rest
78
83
  stay eligible. Record `serial: <ids> — <surface>` in `evidence.md`. Under AFK
79
- with `max_parallel ≥ 2`, `dispatch open` refuses a first-round build wright wave
80
- narrower than the from-plan batch (printing batch and command) until the wave
81
- holds that batch or `serial:` names every skipped pick; repair rounds, lease
82
- siblings, and HITL runs are never refused. **Failing
84
+ with `max_parallel ≥ 2`, `dispatch open` refuses a build wright wave narrower
85
+ than the from-plan batch until that wave holds the other picks or `serial:`
86
+ names each skipped one. Repairing a slice, or a slice already in the lease,
87
+ does not waive them. A `serial:` reason that only says the skipped slice is
88
+ repairing, already started, or in a wave does not count. HITL is never refused. **Failing
83
89
  case:** two slices each add a dependency, run in parallel, and integrate fails or
84
90
  lands a broken lockfile.
85
91
 
@@ -106,8 +112,11 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
106
112
  `pre-dispatch <id>` preflight row; a malformed contract or non-zero
107
113
  precondition is dropped from the batch and recorded as a gap, not dispatched.
108
114
  2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
109
- 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`;
110
- one `--slice` per sibling on the wave). A linked worktree has no `.devrites`:
115
+ 3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`).
116
+ One wave, one role per sibling: `--role slice-wright.<SLICE-ID> --slice <SLICE-ID>`
117
+ for each. `start` every role before waiting on any. One shared `slice-wright`
118
+ role is refused: it has one handle, so the other slices never start.
119
+ A linked worktree has no `.devrites`:
111
120
  tell each wright to run `gates precheck` with `DEVRITES_ROOT=<control>/.devrites`.
112
121
  4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
113
122
  and required result fields against the immutable contract. Reject malformed,
@@ -122,10 +131,11 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
122
131
  A recheck round is one dispatch per changed surface, not one per checklist: the
123
132
  recheck agent carries every open checklist (code, test, doubt) for that diff and
124
133
  answers each by name. Merging cuts dispatches; dropping a checklist does not.
125
- Reviewer fan-out for a batch is itself batched under
126
- [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)
127
- (≈4 concurrent read-only reviewers, 8 only with disjoint paths), and `max_agents`
128
- headroom bounds the batch size — one batch never assumes unbounded reviewers.
134
+ Reviewer fan-out does not shrink the writer batch. Reviewers queue at the
135
+ same cap as writers (10; see
136
+ [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)).
137
+ `max_agents` does not shrink it under autocomplete. Past that cap, queue a
138
+ second pass — a batch never assumes unbounded reviewers.
129
139
  5. Non-green siblings → **repair round** (below) in the same worktrees; lease
130
140
  stays `running` — no abort while repair budget remains. A green sibling →
131
141
  `parallel record-green`, then step 6 for it alone.
@@ -129,11 +129,11 @@ open findings move to the new slice owning their paths), or record
129
129
  `## <DRIFT-ID> — <SLICE-ID> reslice review` with why no smaller split exists and
130
130
  a spec trace of the slice's obligations (hardening no AC/INV/PROH requires moves to
131
131
  a sibling slice dependents do not need, still gated before Seal), and
132
- reopen with `--reslice-review <DRIFT-ID>`. Use
133
- at most one writer across all linked worktrees for this workspace. Never run two
134
- writers in one worktree, run isolated and same-worktree writers concurrently, or
135
- substitute a generic agent. Opt-in `/rite-build --parallel N` fans out only under
136
- [`parallel-batch.md`](parallel-batch.md).
132
+ reopen with `--reslice-review <DRIFT-ID>`. Same-worktree stays one writer.
133
+ Never run two writers in one worktree, mix isolated and same-worktree writers,
134
+ or substitute a generic agent. Opt-in `/rite-build --parallel N` is the
135
+ exception: one wright per worktree, each its own `slice-wright.<SLICE-ID>` role
136
+ on one wave ([`parallel-batch.md`](parallel-batch.md)).
137
137
 
138
138
  The `return` that completes the wave releases its claim; `dispatch abandon --release`
139
139
  releases it on any other host-confirmed terminal path (a stop, a launch refused with no
@@ -117,8 +117,8 @@ load a routed standard to discover required behavior, not to prescribe implement
117
117
  and [`interview-patterns.md`](reference/interview-patterns.md) for a vague ask. Every
118
118
  material dimension is resolved by a human pick or explicitly deferred as non-blocking;
119
119
  only genuinely reversible, low-impact details go to `assumptions.md`. A paper-only
120
- uncertainty may take one scoped `/rite-prototype` detour. A declared-principle conflict
121
- remains blocking until the human approves a recorded, scoped exception.
120
+ uncertainty may take one scoped `/rite-prototype` detour. A principle conflict
121
+ complies by changing the spec. Only an unavoidable violation blocks for a human.
122
122
  4a. **Build-interruption forecast.** Search first, then list and close foreseeable human needs:
123
123
  product/acceptance ambiguity, irreversible/external approval, or human-only access. Record
124
124
  owned prerequisites. Keep a build checkpoint only for unavailable pre-code evidence or a
@@ -123,12 +123,11 @@ the spec applicability map triggers that risk family.
123
123
  [`devrites-strategy-reviewer`](../../agents/devrites-strategy-reviewer.md)
124
124
  through the native fresh-context contract in
125
125
  [`agents.md`](../devrites-lib/reference/standards/agents.md), with **only** its `--role strategy-reviewer` read-set
126
- (hardened spec, `strategy.md`, claim-check artifacts) + rubric, no authoring reasoning. Fold technical findings into one correction;
127
- exact strategy reviewer rechecks open findings and affected coverage/regressions under
126
+ (hardened spec, `strategy.md`, claim-check artifacts) + rubric, no authoring reasoning. Fold findings once and recheck them under
128
127
  [the canonical retry contract](../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve):
129
- Product/scope choices and unapproved irreversible risk remain human gates;
130
- technical exhaustion preserves blocker/reproduction.
131
- If the named agent is unavailable, stop for HITL. After an accepted edit to a
128
+ Product/scope and unapproved irreversible risk stay human gates;
129
+ exhaustion keeps the blocker.
130
+ If the named agent is unavailable, stop for HITL. Except `sequence_lookahead: yes` and no spawn tool: record the review pending, stay `running`, continue Define. Not access. After an accepted edit to a
132
131
  coverage-bound input, repeat step 6's native coverage revalidation before handoff.
133
132
  8. **STOP.** Report the mode, the scope deltas, and the floor verdict; recommend `/rite-define`.
134
133
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "7.2.6",
3
+ "version": "7.2.7",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",
@@ -76,7 +76,7 @@
76
76
  "release:dry": "semantic-release --dry-run --no-ci"
77
77
  },
78
78
  "devDependencies": {
79
- "@commitlint/cli": "^21.2.3",
79
+ "@commitlint/cli": "^21.2.4",
80
80
  "@commitlint/config-conventional": "^21.2.3",
81
81
  "@semantic-release/changelog": "^7.0.0",
82
82
  "@semantic-release/commit-analyzer": "14.0.0-beta.4",
@@ -84,7 +84,7 @@
84
84
  "@semantic-release/git": "^11.0.1",
85
85
  "@semantic-release/npm": "^13.2.0",
86
86
  "@semantic-release/release-notes-generator": "15.0.0-beta.3",
87
- "conventional-changelog-conventionalcommits": "^10.4.0",
87
+ "conventional-changelog-conventionalcommits": "^10.4.1",
88
88
  "husky": "^9.1.7",
89
89
  "semantic-release": "^25.0.9"
90
90
  },