devrites 7.0.7 → 7.0.8
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 +7 -0
- package/README.md +1 -1
- package/docs/engine/commands.md +1 -1
- package/engine/internal/lib/packet.go +37 -20
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +6 -6
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +6 -6
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +6 -6
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +6 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
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
|
+
## [7.0.8](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.7...v7.0.8) (2026-10-22)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
* **devrites:** wright contract lists the slice's tests/proof ([#162](https://github.com/ViktorsBaikers/DevRites/issues/162)) ([ce38f3c](https://github.com/ViktorsBaikers/DevRites/commit/ce38f3c850d32f9f614945dd9d6869dade85cf20))
|
|
10
|
+
* **no-release:** except bundled npm ip-address advisory to 11-29 ([#163](https://github.com/ViktorsBaikers/DevRites/issues/163)) ([d558f28](https://github.com/ViktorsBaikers/DevRites/commit/d558f28cdacbdcd796e84e05589642c4485e0bb3))
|
|
11
|
+
|
|
5
12
|
## [7.0.7](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.6...v7.0.7) (2026-10-22)
|
|
6
13
|
|
|
7
14
|
### Fixed
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
|
|
|
31
31
|
the feature to another engineer, the next session reads the same plan,
|
|
32
32
|
decisions, and evidence before it continues.
|
|
33
33
|
|
|
34
|
-
**Status:** [`v7.0.
|
|
34
|
+
**Status:** [`v7.0.8`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.8): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
|
|
35
35
|
|
|
36
36
|
This is the latest published release; `main` may contain unreleased work.
|
|
37
37
|
|
package/docs/engine/commands.md
CHANGED
|
@@ -39,7 +39,7 @@ workflow strategy.
|
|
|
39
39
|
| `context [slug] (--phase <p>\|--skill <name>) [--role <r>] [--slice <SLICE-ID>] [--recheck <inventory>] [--trigger a,b] [--inline-contract] [--whole]` | Emit one deduplicated read-set bundle per phase/role/skill from each skill's `loads:` manifest; `--skill` works without a workspace when `--out` is given. A root `--phase build\|autocomplete` bundle (no `--role`, no `--slice`) defaults to `--slice <active_slice>` while the state.md cursor phase is `build` and active_slice names a slice present in tasks.md (prints `scope: slice SLICE-### (auto from state.md) ...`); `--whole` opts out. Every bundle opens, after its header comments, with a table of contents: one `L<start>-<end> <section label>` line per `===== label =====` section, giving its exact line range in the bundle file. A bundle without `--role` (the root's own read) gives over-budget artifacts as by-reference indexes; a `--role` bundle leads with the role's agent contract and names the manifest's `rootOnly` paths instead of inlining them. When the contract resolves under `.claude/agents`, `.omp/agents`, or `.codex/agents` (the host loads it as the agent's system prompt), the bundle writes one header line naming its path, size, and SHA-256 instead of the body; other layouts (pi, devin, unknown) and `--inline-contract` (only with `--role`) inline the body, and a missing contract still exits `3`. Inside inlined files, a `--role` bundle replaces each `<!-- root-only -->`…`<!-- /root-only -->` block with a one-line stub naming the omitted heading, and does the same for each `<!-- model-surface -->` block unless the role is `security-auditor`, the feature has an `ai-spec.md`, or `spec.md`/`plan.md`/`tasks.md`/`design-brief.md` are absent or (outside the spec template's `AI-SPEC annex`) name a model, agent, RAG, or tool surface; an unbalanced or headingless marker exits `2`. `--slice` inlines that slice's `tasks.md` block and turns each over-budget artifact, and each artifact over 16 KiB except `spec.md`, into a by-reference index (path, SHA-256, headings, line hits for every ID the block cites); repeat `--slice` for several slices; an unknown slice exits `3`. In phase `build`, a `--role` bundle other than `slice-wright` without `--slice` exits `3` (`unscoped build reviewer bundle`). `--recheck <inventory>` (phase `build`, with `--role` and `--slice`; path relative to the workspace) writes `<phase>-<role>.<slice>.recheck.bundle.md`: the inventory file and `core.md` inline whole, every other non-`rootOnly` pack file becomes a by-reference index (path, SHA-256, headings with line numbers) followed by each section the inventory cites as `<file>.md § <heading>`; workspace handling matches `--slice`. A missing or empty inventory exits `2`. First reviews, full-inventory rechecks, Vet, `/rite-review`, and Seal do not use it. |
|
|
40
40
|
| `dispatch <slug> <open\|start\|seal\|return\|status\|abandon\|attribute>` | Launch-wave barrier for parallel dispatch: seal needs a handle per role, return needs seal; the start that gives the last role its handle seals the wave, and an explicit seal on a sealed wave is a no-op; `open --claim-session <id> --claim <path>... [--claim-ttl <minutes>]` records one file claim for the wave in claims.jsonl and exits `3`, creating no wave and no claim, while a live foreign session holds an overlapping path; the return that completes the wave releases that claim; `abandon --release` releases it on any other host-confirmed terminal path (a stop or a refused launch); re-opening an abandoned wave inherits its kept claim or, with new claim flags, replaces and releases it; claim flags apply to open only and `--release` to abandon only; start/return auto-record metrics, `return --outcome findings|no-findings|gap` records the role's Outcome line, and `abandon` records its reason, so `metrics summary` shows per-role yield and lost waves. Bare `status` prints every open, sealed, or abandoned wave and folds complete waves into one `N complete wave(s) (use --all)` line; `--all` lists every wave; it still exits nonzero while any wave is open or sealed. For a reviewer, auditor, or test-analyst role, `return --result <file>` stores the return verbatim as `packets/<wave>-<role>.return.md` (exit `3` if that file exists), derives the outcome from its `Outcome:`/`Counts:` head (a malformed or inconsistent head records `gap` with a warning, never `no-findings`), exits `3` when an explicit `--outcome` disagrees, and records each `Finding:` row's `role|slice|file|section|severity` key, so `metrics summary` adds per-role `resolution: resolved re-raised open late` counts. A `--result` file that already is that `packets/` path is kept as the stored return. A build wave with a wright role needs `--slice <SLICE-ID>` per slice, and a slice-bound vet wave takes it too; a reviewer-only wave (for example a Build slice review) may take it, uncapped, so its `Finding:` keys name that slice; a reviewer, auditor, or test-analyst wave needs `--packet <file>` and `open` exits `3` on a packet that seeds a conclusion (gate `*-PASS` token, `no-findings`, an `Outcome:`/`Counts:` line, an "already passed" claim, or zero Critical/Important counts) or tells the agent to read an installed `agents/devrites-*.md`/`.toml` role contract (on the line or under a "Read …" heading or label; canonical `pack/` paths excepted), and a wright wave's `--contract` gets the same role-contract check; a Review or Seal reviewer wave also exits `3` unless the packet names an existing non-empty `.diff`/`.patch` file and the manifest covers every checkpointed path; every 5 rounds of either kind on one slice, `open` exits `3` until `--reslice-review <DRIFT-ID>` names an unused `drift.md` `## <DRIFT-ID>` heading for that slice. `open` also warns when an earlier wave for the same slice never returned. Under `.devrites/AFK` max_parallel >= 2, a first-round build wright wave narrower than the `parallel select --from-plan` batch exits `3` (printing the batch, the command and the parallel-batch lifecycle) until evidence.md records `serial: <skipped ids> — <reason>`; repair rounds, lease siblings and HITL runs are never refused. A build wright `--contract` must name `gates precheck` under `Writer-safe checks:` when gates.md has a `RUN: writer` gate. `open` exits `3` when a `--role` names no pack agent in a project-level install (a `.<lane>` suffix is allowed), and lints a reviewer packet against the wave's roles, so a recheck may name its own role's fingerprint. Root-edit tripwire (ADR-0038): the first `open` records `<feature>/tree-baseline.json`, which maps dirty product paths outside `.devrites/` and `.scratch/` to their mode plus SHA-256, accepted as user work. The return that completes a wright wave (any phase) adds its slice write sets and claim paths. `open` exits `3` with `unattributed root edit: <paths>` while a dirty product path differs from that baseline and no live claim or in-flight wright wave covers it, unless the new wright wave covers the path through `--claim` or a slice write set. `attribute --reason <evidence> --path <path>...` records owner work, gate output, a standalone wright, or a sanctioned root write for flagged paths only. Each finding writes an `unattributed-edit` metrics row. The engine never reverts a file, and a workspace without the baseline is never blocked. |
|
|
41
41
|
| `candidate freeze <slug> --wave <w> (--slice <SLICE-ID> \| --paths <path>...) [--base <ref>] [--worktree <path>]` | Writes packets/<w>.diff (tracked changes vs base, default HEAD, plus untracked files as /dev/null diffs) and packets/<w>.sha256 (base, diff digest, per-file sha256, aggregate check-candidate digest); never replaces a wave's frozen candidate with a different one. `--worktree <path>` (requires `--base`) reads the same path set from a parallel sibling's linked worktree before it lands: the path must be a symlink-free worktree top level that `git worktree list` names, shares the control repository, and is neither a submodule nor the control checkout. It exits `3` on uncommitted path-set changes there and adds a `head <sha>` row naming the worktree HEAD (the transfer commit); packets stay in the control workspace. |
|
|
42
|
-
| `packet <slug> --wave <w> --phase <p> --role <r> [--slice <SLICE-ID>] [--recheck] [--checks <G-ID,...>] [--focus <file>]` | Renders one reviewer/auditor/test-analyst or same-worktree slice-wright by-reference packet (packets/<w>.<role>.md, or packets/<w>.contract.md for a wright) naming the context bundle (the .recheck bundle with `--recheck`) and frozen diff. It copies packets/<w>.sha256 (header rows only when large), resolves `--checks` through gates.md and approved preflight rows (adding `gates precheck` for `RUN: writer` gates), and accepts only anchored `--focus` rows (a doubt-reviewer's 1-3 row claim is required). It runs the dispatch open lints on a draft and never replaces a prior packet with a refused one (exit `3`). |
|
|
42
|
+
| `packet <slug> --wave <w> --phase <p> --role <r> [--slice <SLICE-ID>] [--recheck] [--checks <G-ID,...>] [--focus <file>]` | Renders one reviewer/auditor/test-analyst or same-worktree slice-wright by-reference packet (packets/<w>.<role>.md, or packets/<w>.contract.md for a wright) naming the context bundle (the .recheck bundle with `--recheck`) and frozen diff. It copies packets/<w>.sha256 (header rows only when large), lists a wright slice's tasks.md `Tests/proof` as its first writer-safe check, resolves `--checks` through gates.md and approved preflight rows (adding `gates precheck` for `RUN: writer` gates), and accepts only anchored `--focus` rows (a doubt-reviewer's 1-3 row claim is required). It runs the dispatch open lints on a draft and never replaces a prior packet with a refused one (exit `3`). |
|
|
43
43
|
| `metrics record <slug> --phase <p> --event <e> [--role r] [--bytes n] [--note s]` | Append an event to the workspace's `metrics.jsonl` ledger. |
|
|
44
44
|
| `metrics summary [slug] [--by-slice]` | Reduce `metrics.jsonl` into a per-phase roll-up. `--by-slice` reads `dispatch.json` instead: per slice, build wright rounds, slice-bound Vet rechecks, and agent-minutes (role start to `returned_at`; abandoned waves excluded). When the ledger has `resume` events it adds `resumes count=N minutes_to_dispatch=...` (each resume timed to the next `dispatch` event; `none` when another resume came first, `open` when none followed). |
|
|
45
45
|
| `claim <add\|release\|list\|check>` | Advisory session-scoped file claims in `.devrites/claims.jsonl` (append-only). `add` records intent to write a path set with a TTL (1–240 min, default 30); a live claim by another session exits `3` and names the holder. `release` appends a release event owned by the claiming session. `list` shows every unreleased claim (live, expired, dead) plus one `N released (use --all)` count; `--all` includes released rows; a claim whose holding session has provably exited on this host shows `dead` and no longer conflicts. `check` is the read-only preflight for a path set. Coordination aid only — never a substitute for one-writer-per-worktree. |
|
|
@@ -19,10 +19,11 @@ const PacketUsage = `usage: devrites-engine packet <slug> --wave <w> --phase <p>
|
|
|
19
19
|
|
|
20
20
|
Renders one role's by-reference dispatch packet and runs the lints dispatch
|
|
21
21
|
open runs on it; a refused packet is removed and the command exits 3. A
|
|
22
|
-
wright role (needs --slice
|
|
23
|
-
|
|
24
|
-
gates.md gate's CHECK, which must be an approved
|
|
25
|
-
preflight row; a native-worktree pilot keeps its own
|
|
22
|
+
wright role (needs --slice) writes a same-worktree packets/<w>.contract.md
|
|
23
|
+
with the slice's Writer allowlist, its tasks.md Tests/proof as a writer-safe
|
|
24
|
+
check, and each --checks gates.md gate's CHECK, which must be an approved
|
|
25
|
+
test-plan.md Build-entry preflight row; a native-worktree pilot keeps its own
|
|
26
|
+
contract. A reviewer
|
|
26
27
|
role (*-reviewer, *-auditor, test-analyst) writes packets/<w>.<role>.md with
|
|
27
28
|
its Outcome/Counts return head. Read first names the role's context bundle
|
|
28
29
|
(run context first; --recheck names the build --recheck bundle) and
|
|
@@ -136,13 +137,11 @@ func RunPacket(root string, args []string, stdout, stderr io.Writer) int {
|
|
|
136
137
|
for _, p := range writes[slice] {
|
|
137
138
|
fmt.Fprintf(&b, "- %s\n", p)
|
|
138
139
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return fail(err)
|
|
143
|
-
}
|
|
144
|
-
b.WriteString("\n" + lines)
|
|
140
|
+
lines, err := writerSafeChecks(root, slug, slice, raw, checks)
|
|
141
|
+
if err != nil {
|
|
142
|
+
return fail(err)
|
|
145
143
|
}
|
|
144
|
+
b.WriteString("\n" + lines)
|
|
146
145
|
}
|
|
147
146
|
if candidate != "" {
|
|
148
147
|
source := "verbatim from"
|
|
@@ -247,24 +246,42 @@ func frozenCandidate(workspace, wave string) (sums string, partial bool, err err
|
|
|
247
246
|
return head.String(), true, nil
|
|
248
247
|
}
|
|
249
248
|
|
|
250
|
-
// writerSafeChecks
|
|
251
|
-
//
|
|
252
|
-
//
|
|
253
|
-
|
|
249
|
+
// writerSafeChecks lists the slice's own tasks.md Tests/proof first, so a
|
|
250
|
+
// narrow package check never has to borrow a root-owned acceptance gate. It
|
|
251
|
+
// then resolves each named gates.md gate to its CHECK, refusing an unknown gate
|
|
252
|
+
// or a CHECK no approved test-plan.md preflight row vets, and adds `gates
|
|
253
|
+
// precheck --slice <slice>` when the ledger marks a gate `RUN: writer`.
|
|
254
|
+
func writerSafeChecks(root, slug, slice string, tasks []byte, ids string) (string, error) {
|
|
255
|
+
var names []string
|
|
256
|
+
var rows strings.Builder
|
|
257
|
+
block, _ := state.ExtractTaskSlice(tasks, slice)
|
|
258
|
+
if proof, _ := fieldValue(sliceFields(block), "tests/proof", "tests", "proof"); proof != "" {
|
|
259
|
+
names = append(names, slice+" Tests/proof")
|
|
260
|
+
fmt.Fprintf(&rows, "- %s Tests/proof (tasks.md): %s\n", slice, proof)
|
|
261
|
+
} else if ids == "" {
|
|
262
|
+
return "", fmt.Errorf("slice %s names no Tests/proof in tasks.md and --checks names no gate", slice)
|
|
263
|
+
}
|
|
254
264
|
ledger, err := readWorkspaceArtifact(root, slug, acceptance.GatesFile)
|
|
255
|
-
if err
|
|
256
|
-
return ""
|
|
265
|
+
if ids == "" && errors.Is(err, os.ErrNotExist) {
|
|
266
|
+
return "Writer-safe checks: " + strings.Join(names, ", ") + "\n" + rows.String(), nil
|
|
257
267
|
}
|
|
258
|
-
plan, err := readWorkspaceArtifact(root, slug, "test-plan.md")
|
|
259
268
|
if err != nil {
|
|
260
269
|
return "", fmt.Errorf("--checks: %w", err)
|
|
261
270
|
}
|
|
262
271
|
doc := acceptance.ParseLedger(string(ledger))
|
|
263
|
-
approved
|
|
264
|
-
|
|
265
|
-
|
|
272
|
+
var approved []acceptance.ApprovedCommand
|
|
273
|
+
if ids != "" {
|
|
274
|
+
plan, err := readWorkspaceArtifact(root, slug, "test-plan.md")
|
|
275
|
+
if err != nil {
|
|
276
|
+
return "", fmt.Errorf("--checks: %w", err)
|
|
277
|
+
}
|
|
278
|
+
approved = acceptance.ApprovedCommands(plan)
|
|
279
|
+
}
|
|
266
280
|
for _, id := range strings.Split(ids, ",") {
|
|
267
281
|
id = strings.TrimSpace(id)
|
|
282
|
+
if id == "" {
|
|
283
|
+
continue
|
|
284
|
+
}
|
|
268
285
|
var gate *acceptance.Gate
|
|
269
286
|
for _, g := range doc.Gates {
|
|
270
287
|
if g.ID == id {
|
|
@@ -84,11 +84,11 @@ worktrees stay forbidden.
|
|
|
84
84
|
Quote, as a `--focus` row, every active `decisions.md` carry-forward constraint whose `Files:`
|
|
85
85
|
overlap the task paths (or that names no files).
|
|
86
86
|
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
87
|
-
|
|
88
|
-
self-check suites, a narrow
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
The contract lists the slice's `Tests/proof` as writer-safe checks (syntax/type/lint,
|
|
88
|
+
unit and self-check suites, a narrow smoke of the changed path); `--checks` adds
|
|
89
|
+
gate IDs. Never forbid them: a blind wright's failures surface a review
|
|
90
|
+
round later. Artifact-producing, consumptive, or full canonical feature
|
|
91
|
+
gates stay root-owned, never in `--checks`; when `gates.md` has a `RUN: writer`
|
|
92
92
|
gate, the checks include `devrites-engine gates precheck <slug> --worktree <path> --slice <SLICE-ID>`
|
|
93
93
|
(those gates, minus ones only other unbuilt slices own, plus `check windows`;
|
|
94
94
|
never evidence, root still runs every gate).
|
|
@@ -107,7 +107,7 @@ open with no wave and no claim and stops the dispatch, per
|
|
|
107
107
|
[`agents.md`](../../devrites-lib/reference/standards/agents.md). `.devrites/**`
|
|
108
108
|
is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
109
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
|
-
--role slice-wright --slice <SLICE-ID> --checks <G-ID,...> [--focus <file>]` (it
|
|
110
|
+
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
111
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
112
|
writes its own contract with `Isolation`, `worktree_base`, and subject) and hand the wright that text verbatim. Reviewers read
|
|
113
113
|
that file, so `--focus` rows state each defect to fix with its anchor, never a reviewer's verdict,
|
|
@@ -84,11 +84,11 @@ worktrees stay forbidden.
|
|
|
84
84
|
Quote, as a `--focus` row, every active `decisions.md` carry-forward constraint whose `Files:`
|
|
85
85
|
overlap the task paths (or that names no files).
|
|
86
86
|
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
87
|
-
|
|
88
|
-
self-check suites, a narrow
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
The contract lists the slice's `Tests/proof` as writer-safe checks (syntax/type/lint,
|
|
88
|
+
unit and self-check suites, a narrow smoke of the changed path); `--checks` adds
|
|
89
|
+
gate IDs. Never forbid them: a blind wright's failures surface a review
|
|
90
|
+
round later. Artifact-producing, consumptive, or full canonical feature
|
|
91
|
+
gates stay root-owned, never in `--checks`; when `gates.md` has a `RUN: writer`
|
|
92
92
|
gate, the checks include `devrites-engine gates precheck <slug> --worktree <path> --slice <SLICE-ID>`
|
|
93
93
|
(those gates, minus ones only other unbuilt slices own, plus `check windows`;
|
|
94
94
|
never evidence, root still runs every gate).
|
|
@@ -107,7 +107,7 @@ open with no wave and no claim and stops the dispatch, per
|
|
|
107
107
|
[`agents.md`](../../devrites-lib/reference/standards/agents.md). `.devrites/**`
|
|
108
108
|
is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
109
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
|
-
--role slice-wright --slice <SLICE-ID> --checks <G-ID,...> [--focus <file>]` (it
|
|
110
|
+
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
111
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
112
|
writes its own contract with `Isolation`, `worktree_base`, and subject) and hand the wright that text verbatim. Reviewers read
|
|
113
113
|
that file, so `--focus` rows state each defect to fix with its anchor, never a reviewer's verdict,
|
|
@@ -84,11 +84,11 @@ worktrees stay forbidden.
|
|
|
84
84
|
Quote, as a `--focus` row, every active `decisions.md` carry-forward constraint whose `Files:`
|
|
85
85
|
overlap the task paths (or that names no files).
|
|
86
86
|
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
87
|
-
|
|
88
|
-
self-check suites, a narrow
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
The contract lists the slice's `Tests/proof` as writer-safe checks (syntax/type/lint,
|
|
88
|
+
unit and self-check suites, a narrow smoke of the changed path); `--checks` adds
|
|
89
|
+
gate IDs. Never forbid them: a blind wright's failures surface a review
|
|
90
|
+
round later. Artifact-producing, consumptive, or full canonical feature
|
|
91
|
+
gates stay root-owned, never in `--checks`; when `gates.md` has a `RUN: writer`
|
|
92
92
|
gate, the checks include `devrites-engine gates precheck <slug> --worktree <path> --slice <SLICE-ID>`
|
|
93
93
|
(those gates, minus ones only other unbuilt slices own, plus `check windows`;
|
|
94
94
|
never evidence, root still runs every gate).
|
|
@@ -107,7 +107,7 @@ open with no wave and no claim and stops the dispatch, per
|
|
|
107
107
|
[`agents.md`](../../devrites-lib/reference/standards/agents.md). `.devrites/**`
|
|
108
108
|
is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
109
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
|
-
--role slice-wright --slice <SLICE-ID> --checks <G-ID,...> [--focus <file>]` (it
|
|
110
|
+
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
111
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
112
|
writes its own contract with `Isolation`, `worktree_base`, and subject) and hand the wright that text verbatim. Reviewers read
|
|
113
113
|
that file, so `--focus` rows state each defect to fix with its anchor, never a reviewer's verdict,
|
|
@@ -84,11 +84,11 @@ worktrees stay forbidden.
|
|
|
84
84
|
Quote, as a `--focus` row, every active `decisions.md` carry-forward constraint whose `Files:`
|
|
85
85
|
overlap the task paths (or that names no files).
|
|
86
86
|
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
87
|
-
|
|
88
|
-
self-check suites, a narrow
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
The contract lists the slice's `Tests/proof` as writer-safe checks (syntax/type/lint,
|
|
88
|
+
unit and self-check suites, a narrow smoke of the changed path); `--checks` adds
|
|
89
|
+
gate IDs. Never forbid them: a blind wright's failures surface a review
|
|
90
|
+
round later. Artifact-producing, consumptive, or full canonical feature
|
|
91
|
+
gates stay root-owned, never in `--checks`; when `gates.md` has a `RUN: writer`
|
|
92
92
|
gate, the checks include `devrites-engine gates precheck <slug> --worktree <path> --slice <SLICE-ID>`
|
|
93
93
|
(those gates, minus ones only other unbuilt slices own, plus `check windows`;
|
|
94
94
|
never evidence, root still runs every gate).
|
|
@@ -107,7 +107,7 @@ open with no wave and no claim and stops the dispatch, per
|
|
|
107
107
|
[`agents.md`](../../devrites-lib/reference/standards/agents.md). `.devrites/**`
|
|
108
108
|
is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
109
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
|
-
--role slice-wright --slice <SLICE-ID> --checks <G-ID,...> [--focus <file>]` (it
|
|
110
|
+
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
111
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
112
|
writes its own contract with `Isolation`, `worktree_base`, and subject) and hand the wright that text verbatim. Reviewers read
|
|
113
113
|
that file, so `--focus` rows state each defect to fix with its anchor, never a reviewer's verdict,
|
|
@@ -84,11 +84,11 @@ worktrees stay forbidden.
|
|
|
84
84
|
Quote, as a `--focus` row, every active `decisions.md` carry-forward constraint whose `Files:`
|
|
85
85
|
overlap the task paths (or that names no files).
|
|
86
86
|
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
87
|
-
|
|
88
|
-
self-check suites, a narrow
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
The contract lists the slice's `Tests/proof` as writer-safe checks (syntax/type/lint,
|
|
88
|
+
unit and self-check suites, a narrow smoke of the changed path); `--checks` adds
|
|
89
|
+
gate IDs. Never forbid them: a blind wright's failures surface a review
|
|
90
|
+
round later. Artifact-producing, consumptive, or full canonical feature
|
|
91
|
+
gates stay root-owned, never in `--checks`; when `gates.md` has a `RUN: writer`
|
|
92
92
|
gate, the checks include `devrites-engine gates precheck <slug> --worktree <path> --slice <SLICE-ID>`
|
|
93
93
|
(those gates, minus ones only other unbuilt slices own, plus `check windows`;
|
|
94
94
|
never evidence, root still runs every gate).
|
|
@@ -107,7 +107,7 @@ open with no wave and no claim and stops the dispatch, per
|
|
|
107
107
|
[`agents.md`](skill://devrites-lib/reference/standards/agents.md). `.devrites/**`
|
|
108
108
|
is never a task path; see [Workflow Artifact admission](skill://devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
109
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
|
-
--role slice-wright --slice <SLICE-ID> --checks <G-ID,...> [--focus <file>]` (it
|
|
110
|
+
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
111
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
112
|
writes its own contract with `Isolation`, `worktree_base`, and subject) and hand the wright that text verbatim. Reviewers read
|
|
113
113
|
that file, so `--focus` rows state each defect to fix with its anchor, never a reviewer's verdict,
|
|
@@ -84,11 +84,11 @@ worktrees stay forbidden.
|
|
|
84
84
|
Quote, as a `--focus` row, every active `decisions.md` carry-forward constraint whose `Files:`
|
|
85
85
|
overlap the task paths (or that names no files).
|
|
86
86
|
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
87
|
-
|
|
88
|
-
self-check suites, a narrow
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
The contract lists the slice's `Tests/proof` as writer-safe checks (syntax/type/lint,
|
|
88
|
+
unit and self-check suites, a narrow smoke of the changed path); `--checks` adds
|
|
89
|
+
gate IDs. Never forbid them: a blind wright's failures surface a review
|
|
90
|
+
round later. Artifact-producing, consumptive, or full canonical feature
|
|
91
|
+
gates stay root-owned, never in `--checks`; when `gates.md` has a `RUN: writer`
|
|
92
92
|
gate, the checks include `devrites-engine gates precheck <slug> --worktree <path> --slice <SLICE-ID>`
|
|
93
93
|
(those gates, minus ones only other unbuilt slices own, plus `check windows`;
|
|
94
94
|
never evidence, root still runs every gate).
|
|
@@ -107,7 +107,7 @@ open with no wave and no claim and stops the dispatch, per
|
|
|
107
107
|
[`agents.md`](../../devrites-lib/reference/standards/agents.md). `.devrites/**`
|
|
108
108
|
is never a task path; see [Workflow Artifact admission](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
109
109
|
Render the contract with `devrites-engine packet <slug> --wave <wave> --phase build
|
|
110
|
-
--role slice-wright --slice <SLICE-ID> --checks <G-ID,...> [--focus <file>]` (it
|
|
110
|
+
--role slice-wright --slice <SLICE-ID> [--checks <G-ID,...>] [--focus <file>]` (it
|
|
111
111
|
writes the linted same-worktree `packets/<wave>.contract.md`; a native-worktree pilot
|
|
112
112
|
writes its own contract with `Isolation`, `worktree_base`, and subject) and hand the wright that text verbatim. Reviewers read
|
|
113
113
|
that file, so `--focus` rows state each defect to fix with its anchor, never a reviewer's verdict,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devrites",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.8",
|
|
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",
|