devrites 6.0.1 → 6.0.3
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 +16 -0
- package/README.md +15 -64
- package/SECURITY.md +7 -11
- package/bin/devrites.mjs +0 -8
- package/docs/adr/0034-workflow-artifact-byte-corrections-get-code-review.md +60 -0
- package/docs/adr/README.md +2 -1
- package/docs/architecture.md +2 -5
- package/docs/cli.md +4 -11
- package/docs/command-map.md +1 -2
- package/docs/engine/commands.md +6 -6
- package/docs/release.md +5 -6
- package/engine/help.go +12 -7
- package/engine/help_test.go +1 -0
- package/engine/internal/gate/readiness_binding.go +19 -0
- package/engine/internal/lib/cli_observe.go +16 -0
- package/engine/internal/lib/context.go +191 -19
- package/engine/internal/lib/context_next_test.go +186 -0
- package/engine/internal/lib/dispatch.go +146 -11
- package/engine/internal/lib/drift.go +10 -2
- package/engine/internal/lib/drift_test.go +29 -0
- package/engine/internal/lib/slicecheck.go +19 -0
- package/engine/internal/lib/slicecheck_test.go +41 -0
- package/engine/internal/lib/windows.go +109 -13
- package/engine/internal/lib/windows_test.go +85 -0
- package/engine/internal/release/release.go +3 -13
- package/engine/internal/release/release_test.go +6 -197
- package/engine/main.go +2 -2
- package/install.sh +1 -116
- package/pack/.claude/agents/devrites-slice-wright.md +3 -1
- package/pack/.claude/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +3 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/glossary.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +1 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +11 -3
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
- package/pack/.claude/skills/rite-build/SKILL.md +1 -1
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +3 -2
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +5 -3
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +5 -3
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +3 -1
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +23 -9
- package/pack/.claude/skills/rite-define/SKILL.md +2 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +2 -1
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +6 -3
- package/pack/.claude/skills/rite-vet/SKILL.md +9 -1
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +6 -2
- package/pack/generated/claude/agents/devrites-slice-wright.md +3 -1
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +3 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/glossary.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +1 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +11 -3
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
- package/pack/generated/claude/skills/rite-build/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +3 -2
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +5 -3
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +5 -3
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +3 -1
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +23 -9
- package/pack/generated/claude/skills/rite-define/SKILL.md +2 -1
- package/pack/generated/claude/skills/rite-plan/SKILL.md +2 -1
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +6 -3
- package/pack/generated/claude/skills/rite-vet/SKILL.md +9 -1
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +6 -2
- package/pack/generated/codex/agents/devrites-slice-wright.toml +3 -1
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +3 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/glossary.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +1 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +11 -3
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
- package/pack/generated/codex/skills/rite-build/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +3 -2
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +5 -3
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +5 -3
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +3 -1
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +23 -9
- package/pack/generated/codex/skills/rite-define/SKILL.md +2 -1
- package/pack/generated/codex/skills/rite-plan/SKILL.md +2 -1
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -3
- package/pack/generated/codex/skills/rite-vet/SKILL.md +9 -1
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +6 -2
- package/pack/generated/devin/agents/devrites-slice-wright.md +3 -1
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +3 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/glossary.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +1 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +11 -3
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
- package/pack/generated/devin/skills/rite-build/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +3 -2
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +5 -3
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +5 -3
- package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +3 -1
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +23 -9
- package/pack/generated/devin/skills/rite-define/SKILL.md +2 -1
- package/pack/generated/devin/skills/rite-plan/SKILL.md +2 -1
- package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +6 -3
- package/pack/generated/devin/skills/rite-vet/SKILL.md +9 -1
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +6 -2
- package/pack/generated/omp/agents/devrites-slice-wright.md +3 -1
- package/pack/generated/omp/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/code-review.md +3 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/glossary.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +1 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +11 -3
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
- package/pack/generated/omp/skills/rite-build/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +3 -2
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +5 -3
- package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +5 -3
- package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +3 -1
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +23 -9
- package/pack/generated/omp/skills/rite-define/SKILL.md +2 -1
- package/pack/generated/omp/skills/rite-plan/SKILL.md +2 -1
- package/pack/generated/omp/skills/rite-pressure-test/SKILL.md +6 -3
- package/pack/generated/omp/skills/rite-vet/SKILL.md +9 -1
- package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +6 -2
- package/pack/generated/pi/agents/devrites-slice-wright.md +3 -1
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/hypotheses.md +6 -0
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +1 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +3 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/glossary.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +1 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +11 -3
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +5 -2
- package/pack/generated/pi/skills/rite-build/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +3 -2
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +5 -3
- package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +5 -3
- package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +3 -1
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +23 -9
- package/pack/generated/pi/skills/rite-define/SKILL.md +2 -1
- package/pack/generated/pi/skills/rite-plan/SKILL.md +2 -1
- package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +6 -3
- package/pack/generated/pi/skills/rite-vet/SKILL.md +9 -1
- package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +6 -2
- package/package.json +1 -1
- package/scripts/install-lib.sh +0 -16
|
@@ -29,7 +29,8 @@ Before implementation review, check for work beyond the settled spec.
|
|
|
29
29
|
[feature ceiling](../../rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget)
|
|
30
30
|
(over-budget `tasks.md`/`plan.md` from slice or AC count) is a scope finding, not a
|
|
31
31
|
`Budget override`: route to `/rite-plan course-correct` (`MVP cut`) with the
|
|
32
|
-
continuation sequence named; do not vet the whole epic.
|
|
32
|
+
continuation sequence named; do not vet the whole epic. An `ADVISORY size:`
|
|
33
|
+
slice without `Size rationale:` is a non-blocking Suggestion to split it.
|
|
33
34
|
4. **Built-in check.** For each new pattern/infra/concurrency approach, invoke
|
|
34
35
|
`devrites-source-driven` inline to verify current framework/runtime support and cite it. Custom
|
|
35
36
|
work where a built-in suffices is a scope-reduction finding.
|
|
@@ -197,7 +198,10 @@ Use standard `ask`:
|
|
|
197
198
|
recovery owner, test, handling, and user-visible/silent result. No test + no handling +
|
|
198
199
|
silent = **Critical** (`artifacts.md`).
|
|
199
200
|
4. **Dependency safety:** verify graph/order and shared file/state/contract/lock/port/queue/env
|
|
200
|
-
conflicts.
|
|
201
|
+
conflicts. Each `Dependencies` edge must genuinely gate its slice (consumes an
|
|
202
|
+
output, interface, or state the predecessor produces); remove an ordering-only
|
|
203
|
+
edge, since it silently shrinks the parallel set. Correct the plan; native host
|
|
204
|
+
scheduling needs no lane artifact.
|
|
201
205
|
5. **Build-entry preflight:** commands/cwds, tools, package state, parser/browser smoke,
|
|
202
206
|
prerequisites, and provenance ([`artifacts.md`](artifacts.md)).
|
|
203
207
|
6. **Implementation readiness:** goal-backward coverage, wiring, dependency simulation,
|
|
@@ -137,7 +137,9 @@ Stay inside the exact project-relative paths listed in the dispatch task.
|
|
|
137
137
|
return an `Escalation`** when:
|
|
138
138
|
- the slice is **underspecified**, the **plan looks wrong**, or requirements, code,
|
|
139
139
|
and tests conflict;
|
|
140
|
-
- the slice needs a **new dependency** or a **second design system
|
|
140
|
+
- the slice needs a **new dependency** or a **second design system**, or a planned
|
|
141
|
+
package fails to install or resolve (report the failure; never retry under a
|
|
142
|
+
similar or alternative package name);
|
|
141
143
|
- the work requires an unapproved product/security-policy choice, public API break,
|
|
142
144
|
external-service contract change, destructive live migration, or filesystem
|
|
143
145
|
destruction outside the workspace. A path allowlist alone does not approve those
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Generate **3-5 ranked hypotheses** *before* testing any of them.
|
|
4
4
|
Single-hypothesis generation anchors on the first plausible idea.
|
|
5
5
|
|
|
6
|
+
**Check past root causes first.** Search `.devrites/archive/*/evidence.md` with
|
|
7
|
+
native file search for the failure's error text, symbol, and file names. A hit
|
|
8
|
+
whose recorded correct hypothesis matches enters the ranked list with its
|
|
9
|
+
recurrence noted; it is still tested, never assumed. No archive or no hit →
|
|
10
|
+
skip silently.
|
|
11
|
+
|
|
6
12
|
Each hypothesis must be **falsifiable**: state the prediction it makes.
|
|
7
13
|
|
|
8
14
|
> Format: *"If <X> is the cause, then <changing Y> will make the failure
|
|
@@ -36,6 +36,7 @@ If the candidate diff has no matching surfaces, record
|
|
|
36
36
|
2. Build each reviewer's read-set once with
|
|
37
37
|
`devrites-engine context <slug> --phase <p> --role <role> --trigger <set>` and
|
|
38
38
|
hand the bundle path as the packet's source list instead of a file roster.
|
|
39
|
+
Build roles add `--slice <SLICE-ID>` (slice-scoped, slice-named bundle).
|
|
39
40
|
Evaluate the skill's trigger conditions and pass each that fires — a role's
|
|
40
41
|
Trigger column maps to manifest names: `security-auditor` → `security`,
|
|
41
42
|
`frontend-reviewer` → `ui`/`frontend`, `performance-reviewer` → `performance`.
|
|
@@ -59,7 +59,7 @@ topic's owner.
|
|
|
59
59
|
| `architecture-health.md` | An audit needs a whole-codebase structural score from a code index — coupling, cohesion, cycles, god files, orphans, depth. |
|
|
60
60
|
| `assumption-checkpoints.md` | Scope generalizes an existing boundary: a second case, a newly optional field, or a constant turned parameter. |
|
|
61
61
|
| `debug-recovery.md` | Waiting on async readiness (server start, job completion, browser signal) needs a bounded condition-based poll. |
|
|
62
|
-
| `windows.md` | A deferral marker (TODO/FIXME/skipped test/stub) is introduced or waived — the `check windows` ledger and grammar. |
|
|
62
|
+
| `windows.md` | A deferral or bar-lowering marker (TODO/FIXME/skipped test/stub/suppression/removed test) is introduced or waived — the `check windows` ledger and grammar. |
|
|
63
63
|
| `glossary.md` | A DevRites term is unclear; resolve it once here instead of inferring. |
|
|
64
64
|
|
|
65
65
|
The table is a load trigger, not an exemption. [`core.md` § Rule summary](core.md#rule-summary-load-the-full-file-when-in-scope)
|
|
@@ -357,6 +357,8 @@ access, safety and irreversible-action boundaries independently stop work.
|
|
|
357
357
|
renaming/splitting an unchanged cause does not. Suggestion/Nit/FYI cannot extend
|
|
358
358
|
recovery. Initial discovery and expected test-first RED are not corrections;
|
|
359
359
|
total rounds, re-batches and distinct-finding counts never exhaust recovery.
|
|
360
|
+
Every 5 Build wright rounds on one slice, the next first needs a reslice review
|
|
361
|
+
([`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#run)).
|
|
360
362
|
- **Rechecks are scoped; late findings never reopen the round.** *Late* applies only
|
|
361
363
|
from a phase's **second** review pass (Vet 1b, Build's recheck after the first repair,
|
|
362
364
|
Review step 7); an initial pass has no late findings and every supported finding is
|
|
@@ -30,6 +30,9 @@ If it does not, do not merge it.
|
|
|
30
30
|
no justification), stripped assertions, deleted or skipped tests, and new
|
|
31
31
|
unimplemented stubs or `throw`-only placeholders. Each names what it lowers and
|
|
32
32
|
needs a recorded reason in the diff or `decisions.md`; unexplained is a finding.
|
|
33
|
+
`devrites-engine check windows` flags the mechanical subset (suppressions,
|
|
34
|
+
skip/focus, stubs, empty catch, deleted tests, stripped assertions) against
|
|
35
|
+
`windows.md` waivers; loosened thresholds remain this sweep's judgment.
|
|
33
36
|
3. **Correctness:** logic, edge cases, error paths, race conditions, wrong assumptions. For branching or boundary changes, run the [`edge-case trace`](edge-case-trace.md): relevant probe classes, fixed-set siblings, real wiring, negative intent, and deletion contracts with an evidence disposition.
|
|
34
37
|
4. **Readability:** names, function size, control flow, intent obvious without the author.
|
|
35
38
|
5. **Architecture:** right seam, coupling/cohesion, fits existing patterns, no premature
|
|
@@ -35,6 +35,6 @@
|
|
|
35
35
|
| Standards | The rule files in this directory; `core.md` is always-on, the rest load on trigger (`README.md` table). |
|
|
36
36
|
| Transfer commit | The isolated wright's local unpushed `WIP(<slug>):` transport commit; never the control-branch checkpoint. |
|
|
37
37
|
| Trigger | A named conditional read-set in a `loads:` manifest (e.g. `tdd`, `applicability`, `ui`); engine fails closed on unknown names. |
|
|
38
|
-
| Windows ledger | `windows.md`: one waiver row per deferral marker the change introduces; `check windows` fails on unwaived hits. [`windows.md`](windows.md). |
|
|
38
|
+
| Windows ledger | `windows.md`: one waiver row per deferral or bar-lowering marker the change introduces; `check windows` fails on unwaived hits. [`windows.md`](windows.md). |
|
|
39
39
|
| Workflow Artifact | A Vet-ready, root-authored executable file under `.devrites/work/<slug>/`; [`workflow-artifacts.md`](workflow-artifacts.md). |
|
|
40
40
|
| Wright | `devrites-slice-wright`: the sole product source/test writer under a path-bounded contract. |
|
|
@@ -96,6 +96,7 @@ On any security-relevant error: deny, roll back; never default to allow or half-
|
|
|
96
96
|
- Install reproducibly from a committed lockfile (`npm ci` / frozen); never resolving installs in CI. Hand-editing lockfiles bypasses review.
|
|
97
97
|
- Distrust install scripts (`postinstall` runs arbitrary code) — review before adding; prefer `--ignore-scripts`.
|
|
98
98
|
- Typosquats are a delivery vector: confirm exact name/publisher, not install success.
|
|
99
|
+
After a failed install, never try a similarly named package; report the failure.
|
|
99
100
|
- A CI/release change names the SLSA build provenance level it claims and where the build runs; a claimed level with no verified provenance attestation is `cannot_verify`, not a pass.
|
|
100
101
|
|
|
101
102
|
## Trust boundary (three tiers)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# Windows — the deferral ledger
|
|
2
2
|
|
|
3
3
|
> Applies when: a change introduces a deferral marker (TODO, FIXME, XXX, HACK,
|
|
4
|
-
> a skipped test, a stub body)
|
|
4
|
+
> a skipped or focused test, a stub body), lowers the bar (a checker
|
|
5
|
+
> suppression, an empty catch, a deleted test file, stripped assertions), or
|
|
6
|
+
> `windows.md` waivers are authored or judged.
|
|
5
7
|
|
|
6
8
|
`windows.md` is the broken-windows ledger. A review finding can describe a new
|
|
7
9
|
`TODO`, a skipped test, or a stubbed body; this artifact makes the register
|
|
@@ -24,7 +26,8 @@ Optional until a marker is introduced: a feature with no new markers needs no
|
|
|
24
26
|
that marker. Five new TODOs in one file need five rows — a blanket row
|
|
25
27
|
cannot cover them.
|
|
26
28
|
- `marker token` is the literal marker the checker reported (`TODO`, `t.Skip(`,
|
|
27
|
-
`NotImplementedError`, `panic("TODO`,
|
|
29
|
+
`NotImplementedError`, `panic("TODO`, `it.only(`, `eslint-disable`, `noqa`,
|
|
30
|
+
`nolint`, `#nosec`, `empty-catch`, `deleted-test`, `removed-assertion`, …).
|
|
28
31
|
- `reason` must be non-empty and should name the follow-up owner or slice; a
|
|
29
32
|
row with an empty reason warns and waives nothing.
|
|
30
33
|
- Rows never suppress coverage — they explain it. Reviewers still judge
|
|
@@ -39,8 +42,13 @@ devrites-engine check windows <slug> [--worktree|--staged|--base <ref>]
|
|
|
39
42
|
Exit `0` when no marker is introduced or every hit is waived; `3` when any
|
|
40
43
|
introduced marker lacks a waiver or the workspace/ledger is unreadable; `2`
|
|
41
44
|
on usage errors. It parses the unified diff (`-U0`), treats untracked files as
|
|
42
|
-
wholly new in `--worktree`, and ignores binary files, deletions, and
|
|
45
|
+
wholly new in `--worktree`, and ignores binary files, non-test deletions, and
|
|
43
46
|
`.devrites/` paths; `--staged` and `--base` cover the tracked diff only.
|
|
47
|
+
Removals are file-level hits: a deleted test file is `deleted-test`, and a test
|
|
48
|
+
file that remains but loses assertion lines on net is `removed-assertion`
|
|
49
|
+
(moving an assertion within the file is not a loss; a git-detected rename is
|
|
50
|
+
not a deletion). Loosened thresholds have no deterministic signal and stay a
|
|
51
|
+
review judgment ([`code-review.md`](code-review.md) § Bar integrity).
|
|
44
52
|
|
|
45
53
|
## Reviewer posture
|
|
46
54
|
|
|
@@ -64,7 +64,7 @@ accept safe legacy basenames. Ordinary phases never rename them.
|
|
|
64
64
|
| `review.md` | reconciled Review verdict: `## Spec` and `## Code review` accounts, deferred-finding labels/actions, drift | 240 lines |
|
|
65
65
|
| `seal.md` | seal preflight, exact reviewer roster accounts, GO/NO-GO verdict and disclosures | 200 lines |
|
|
66
66
|
| `ai-spec.md` | model/RAG/agent/eval/LLM-output scope for AI surfaces | 160 lines |
|
|
67
|
-
| `windows.md` | deferral-
|
|
67
|
+
| `windows.md` | deferral/bar-lowering waiver ledger: one `- path | marker | reason` row per introduced marker; `check windows` fails on unwaived hits | 120 lines |
|
|
68
68
|
| `notes.md` | `NOTE-###` anchored notes — rationale/warnings bound to a verbatim quote in one repository file; `note check` regrades anchors and drift blocks seal | 160 lines |
|
|
69
69
|
|
|
70
70
|
For visual pairs load only matching [playbooks](visual-playbooks/index.md); use
|
|
@@ -230,7 +230,10 @@ Done condition: <checkable, exhaustive completion criterion>
|
|
|
230
230
|
`depends_on` is the machine-readable mirror of `Dependencies`; keep the sets
|
|
231
231
|
identical and cycle-free. `Gate`, `SLA`, and `Checkpoint` are required for HITL
|
|
232
232
|
slices; use `none` when they do not apply. Complexity above 3 triggers reslicing
|
|
233
|
-
unless the stated reason makes the boundary irreducible.
|
|
233
|
+
unless the stated reason makes the boundary irreducible. A Writer allowlist of 12+
|
|
234
|
+
files prints an engine `ADVISORY size:` line (`check task-graph`, `check slice`;
|
|
235
|
+
never blocking): split it acceptance-preserving, or add `Size rationale:` naming
|
|
236
|
+
the inseparable capability.
|
|
234
237
|
|
|
235
238
|
## Read next by phase
|
|
236
239
|
|
|
@@ -5,7 +5,7 @@ argument-hint: "[--parallel N] [slice number or name]"
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
<!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
|
|
8
|
+
<!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/agents.md","rite-build/reference/phase-contract.md","rite-build/reference/one-slice-cycle.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/spec-drift-guard.md","rite-build/reference/output.md","rite-build/reference/anti-patterns.md"],"rootOnly":["rite-build/reference/phase-contract.md","rite-build/reference/wright-dispatch.md","rite-build/reference/checkpoint.md","rite-build/reference/output.md","rite-build/reference/afk-discipline.md","rite-build/reference/checkpoint-protocol.md","rite-build/reference/parallel-batch.md","devrites-lib/reference/standards/afk-hitl.md","devrites-lib/reference/standards/workflow-artifacts.md"],"triggers":{"afk":["rite-build/reference/afk-discipline.md","devrites-lib/reference/standards/afk-hitl.md","rite-build/reference/checkpoint-protocol.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"coding":["devrites-lib/reference/standards/coding-style.md"],"debug-recovery":["devrites-lib/reference/standards/debug-recovery.md"],"dod":["devrites-lib/reference/standards/definition-of-done.md"],"errors":["devrites-lib/reference/standards/error-handling.md"],"frontend":["rite-build/reference/frontend-trigger.md"],"parallel":["rite-build/reference/parallel-batch.md"],"patterns":["devrites-lib/reference/standards/patterns.md"],"principles":["devrites-lib/reference/standards/principles.md"],"security":["devrites-lib/reference/standards/security.md"],"tdd":["rite-build/reference/tdd.md","devrites-lib/reference/standards/testing.md"],"workflow-artifacts":["devrites-lib/reference/standards/workflow-artifacts.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","architecture.md","plan.md","tasks.md","traceability.md","eng-review.md","test-plan.md","gates.md","strategy.md"],"workspaceByRole":{"code-reviewer":["spec.md","plan.md","tasks.md","test-plan.md","architecture.md","decisions.md","state.md"],"doubt-reviewer":["spec.md","plan.md","tasks.md","state.md","decisions.md"],"slice-wright":["brief.md","spec.md","architecture.md","plan.md","tasks.md","test-plan.md","state.md","decisions.md","assumptions.md","questions.md"],"test-analyst":["spec.md","tasks.md","test-plan.md","state.md"]}} -->
|
|
9
9
|
> Read-set manifest: `devrites-engine context <slug> --phase build` bundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
|
|
10
10
|
|
|
11
11
|
|
|
@@ -21,8 +21,9 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
21
21
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
22
22
|
— dispatch the initial read-only reviews of distinct decisions in parallel
|
|
23
23
|
(independent claims, fresh contexts); wright fixes stay serial — writers share files
|
|
24
|
-
PROVE → root
|
|
25
|
-
|
|
24
|
+
PROVE → root, concurrent with the reviews on the same frozen candidate:
|
|
25
|
+
required build/browser/E2E, then returned-diff/path recheck; fail-on-red
|
|
26
|
+
(red/gap → repair wright, then re-review and re-prove; do not commit yet)
|
|
26
27
|
RECORD → orchestrator: after green verification, update state.md/evidence.md and
|
|
27
28
|
upsert the authoritative candidate manifest from the actual scoped diff
|
|
28
29
|
(CHECKPOINT) → only now, with review+proof green: local WIP(<slug>): <imperative summary>
|
|
@@ -94,13 +94,15 @@ Lease: `batch_id`, `created_at`, `base_sha`, `n`,
|
|
|
94
94
|
<id>`; a malformed contract is dropped from the batch and recorded as a
|
|
95
95
|
gap, not dispatched.
|
|
96
96
|
2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
|
|
97
|
-
3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B
|
|
97
|
+
3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`;
|
|
98
|
+
one `--slice` per sibling on the wave).
|
|
98
99
|
4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
|
|
99
100
|
and required result fields against the immutable contract. Reject malformed,
|
|
100
101
|
stale, or out-of-scope work. Apply
|
|
101
102
|
[independent Build review](phase-contract.md#independent-build-review): first
|
|
102
|
-
full inventory, then bounded owning-role rechecks after repairs.
|
|
103
|
-
|
|
103
|
+
full inventory, then bounded owning-role rechecks after repairs. Run approved
|
|
104
|
+
proof in the same window as that review. Gap or Critical/Important → `gap`;
|
|
105
|
+
else proof → `green|red|gap`.
|
|
104
106
|
Reviewer fan-out for a batch is itself batched under
|
|
105
107
|
[`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)
|
|
106
108
|
(≈4 concurrent read-only reviewers, 8 only with disjoint paths), and `max_agents`
|
|
@@ -33,11 +33,13 @@ Spec Drift Guard still applies.
|
|
|
33
33
|
spending review. Then compare returned paths and `git diff --name-only` with the
|
|
34
34
|
contract for semantics diff-scope cannot judge (stale/partial/malformed work;
|
|
35
35
|
preserved user work). Restoration uses the bounded wright.
|
|
36
|
-
5. **Review.** Apply [Independent Build review](#independent-build-review).
|
|
36
|
+
5. **Review.** Apply [Independent Build review](#independent-build-review). Run step 6
|
|
37
|
+
proof in the same window on the same frozen candidate; both gate step 7, and a
|
|
38
|
+
repair or source-mutating proof voids both.
|
|
37
39
|
Missing verdicts, principle breaches and open Critical/Important block acceptance.
|
|
38
40
|
6. **Prove.** Against the frozen pre-slice candidate inspect
|
|
39
41
|
test hunks for deletion, skipping/focus, tautology, or weaker expectations.
|
|
40
|
-
|
|
42
|
+
Wait for step 5's exact test-analyst account; missing/adverse criterion verdict is
|
|
41
43
|
Critical. Run only `test-plan.md` repository/CI commands, record output, recheck
|
|
42
44
|
`git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
|
|
43
45
|
Pre-existing/environment-specific claims need a predating same-command,
|
|
@@ -70,7 +72,7 @@ inventory: one full-diff `devrites-code-reviewer`, one `devrites-test-analyst`,
|
|
|
70
72
|
and one exact `devrites-doubt-reviewer` per stood decision that meets
|
|
71
73
|
`devrites-doubt` § When to use (boundary, data model, auth, public API, migration,
|
|
72
74
|
user flow, assumption tests cannot prove); other stood decisions are recorded in
|
|
73
|
-
`decisions.md` without dispatch. Dispatch fresh,
|
|
75
|
+
`decisions.md` without dispatch. Bundles take `--slice <SLICE-ID>`. Dispatch fresh,
|
|
74
76
|
read-only under [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
|
|
75
77
|
Wait for every required account to become terminal; missing/gap needs a valid result.
|
|
76
78
|
Fold supported in-scope Critical/Important findings by cause into one inventory.
|
|
@@ -22,7 +22,9 @@ phases. Never silently code against a known-wrong plan.
|
|
|
22
22
|
4. Local repair that preserves behavior/scope/architecture/data/UX/security/migration?
|
|
23
23
|
YES, active-slice technical/tool failure → log it and use Build's bounded debug
|
|
24
24
|
recovery. Do not ask for retry authorization and do not re-plan unless the
|
|
25
|
-
durable remaining-work instructions are wrong.
|
|
25
|
+
durable remaining-work instructions are wrong. A Workflow Artifact byte fix
|
|
26
|
+
that keeps every admission row is this case: `OFFLINE_RECOVERY`, then
|
|
27
|
+
`/rite-vet`'s bytes-only recheck — never `/rite-plan repair`.
|
|
26
28
|
YES, durable plan is wrong → run the batch sweep below, log every
|
|
27
29
|
violation, save the caller's return cursor, then invoke `/rite-plan repair` and `/rite-vet` inline
|
|
28
30
|
without a question — ONE folded repair for all open entries, ONE
|
|
@@ -55,8 +55,9 @@ worktrees stay forbidden.
|
|
|
55
55
|
2. Include goal, verbatim acceptance, exclusions, context,
|
|
56
56
|
`test-plan.md` proof commands, applicable standards, and the exact
|
|
57
57
|
`WIP(<slug>):` subject (no slice id). Build the wright's read-set with
|
|
58
|
-
`devrites-engine context <slug> --phase build --role slice-wright --trigger <set>`
|
|
59
|
-
and hand it the bundle path
|
|
58
|
+
`devrites-engine context <slug> --phase build --role slice-wright --slice <SLICE-ID> --trigger <set>`
|
|
59
|
+
and hand it the bundle path (over-budget artifacts arrive as anchor indexes;
|
|
60
|
+
read owning sections live). Evaluate each trigger condition and pass those
|
|
60
61
|
that fire (TDD slice → `tdd`, AFK run → `afk`, UI work → `frontend`, …).
|
|
61
62
|
The command prints `unselected=[...]`; an omitted applicable trigger is a gap.
|
|
62
63
|
For each triggered
|
|
@@ -80,8 +81,14 @@ is never a task path; see [Workflow Artifact admission](../../devrites-lib/refer
|
|
|
80
81
|
Ask the host
|
|
81
82
|
for the exact writer in fresh context and wait. Track it through the
|
|
82
83
|
launch barrier — `devrites-engine dispatch <slug> open --phase build --wave
|
|
83
|
-
<slice-id> --role slice-wright
|
|
84
|
-
`return` on completion (auto-records dispatch/return metrics).
|
|
84
|
+
<slice-id> --role slice-wright --slice <SLICE-ID>`, then `start` with the host handle, `seal`, and
|
|
85
|
+
`return` on completion (auto-records dispatch/return metrics). Every 5 wright
|
|
86
|
+
rounds on one slice, `open` blocks for a reslice review: propose an
|
|
87
|
+
acceptance-preserving split (`root_no_change_analysis` → `FOLD` per
|
|
88
|
+
[acceptance-preserving-reslice](../../devrites-lib/reference/standards/acceptance-preserving-reslice.md);
|
|
89
|
+
open findings move to the new slice owning their paths), or record
|
|
90
|
+
`## <DRIFT-ID> — <SLICE-ID> reslice review` with why no smaller split exists and
|
|
91
|
+
reopen with `--reslice-review <DRIFT-ID>`. Use
|
|
85
92
|
at most one writer across all linked worktrees for this workspace. Never run two
|
|
86
93
|
writers in one worktree, run isolated and same-worktree writers concurrently, or
|
|
87
94
|
substitute a generic agent. Opt-in `/rite-build --parallel N` fans out only under
|
|
@@ -106,17 +113,24 @@ TTL is crash recovery, not normal cleanup.
|
|
|
106
113
|
Reject a result that omits any required key — the bookkeeping arrays count
|
|
107
114
|
whether empty or filled — or adds a path. Root never widens scope or edits
|
|
108
115
|
source.
|
|
109
|
-
2.
|
|
116
|
+
2. Run `devrites-engine check windows <slug>` on the wright's diff (`--worktree`
|
|
117
|
+
in the same tree; `--base <B> --cwd <worktree>` for a parallel transfer
|
|
118
|
+
commit). Each unwaived hit is repaired through the bounded wright or gets a
|
|
119
|
+
reasoned `windows.md` row before review; never waive to reach green. Then
|
|
120
|
+
inspect the test diff for deletion, skipping, focus markers, or loosened
|
|
110
121
|
assertions. Dedicated test analysis treats weakening as Critical.
|
|
111
122
|
Confirm a test for a data/integration/topology risk can actually exhibit that risk;
|
|
112
123
|
mocks that erase it and one-root proof offered for another root are unproven.
|
|
113
124
|
3. Apply [independent Build review](phase-contract.md#independent-build-review)
|
|
114
|
-
|
|
125
|
+
and, in the same window, run only repository proof already approved by
|
|
126
|
+
`test-plan.md` against the same frozen candidate; neither waits for the
|
|
127
|
+
other. Human choices return; technical failures follow
|
|
115
128
|
[the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
|
|
116
129
|
Derive accounting from recorded reproductions, corrections, and decisive rechecks.
|
|
117
|
-
4.
|
|
118
|
-
|
|
119
|
-
|
|
130
|
+
4. After proof, inspect `git diff --name-only` again in case a proof tool changed
|
|
131
|
+
source; a change rejects that candidate and voids the concurrent review. A
|
|
132
|
+
repair wright voids both; rerun both on the new candidate.
|
|
133
|
+
**Do not land on control until review and proof are both green.** Isolated
|
|
120
134
|
`transfer_commit` stays on the worker branch; same-worktree diffs stay
|
|
121
135
|
uncommitted. Serial: [`checkpoint.md`](checkpoint.md), then host may remove the
|
|
122
136
|
worktree. Parallel: `record-green` only; land with `parallel integrate
|
|
@@ -158,7 +158,8 @@ Pull these via `Read` when shaping the plan:
|
|
|
158
158
|
acceptance, and names/prose agree. Missing, duplicate, contradictory, or
|
|
159
159
|
meaning-changing mappings block. Then run
|
|
160
160
|
`devrites-engine check task-graph <slug>`; a malformed dependency graph blocks
|
|
161
|
-
before Vet rather than spending a reviewer context on invalid tasks.
|
|
161
|
+
before Vet rather than spending a reviewer context on invalid tasks. Resolve each
|
|
162
|
+
`ADVISORY size:` line now (split, or `Size rationale:`); it never blocks.
|
|
162
163
|
7. **Readiness gate** (`plan-template.md`): require CLEAR coverage; complete acceptance,
|
|
163
164
|
wiring, shared-contract proof, applicable outputs, and rollback; risk-first acyclic order;
|
|
164
165
|
justified deviations; and every horizon item present, with blockers resolved, planning
|
|
@@ -81,7 +81,8 @@ Before classifying any Reslice, read `.pi/skills/devrites-lib/reference/standard
|
|
|
81
81
|
`/rite-spec`, and stop.
|
|
82
82
|
See [replan-and-repair](reference/replan-and-repair.md) for each mode's steps.
|
|
83
83
|
2a. **Draft fresh.** Dispatch `devrites-plan-drafter` in `repair` mode with frozen mode,
|
|
84
|
-
affected artifacts, settled contract, and failure/drift
|
|
84
|
+
affected artifacts, settled contract, and failure/drift; a slice-bound repair
|
|
85
|
+
builds its bundle with `--slice <SLICE-ID>` per affected slice. Await one atomic, read-only
|
|
85
86
|
the drafter's `candidate_files` bundle; human choices return separately.
|
|
86
87
|
When the observed failure is missing or ambiguous consumptive-action evidence,
|
|
87
88
|
require the drafter to apply [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md) and return the bounded
|
|
@@ -18,7 +18,8 @@ first and write only workspace/ticket artifacts.
|
|
|
18
18
|
- Search `decisions.md`, accepted ADRs, and relevant archives for rejected directions;
|
|
19
19
|
revive one only with evidence that answers its recorded reason, citing both.
|
|
20
20
|
- Generate 3-5 different shapes, including obvious, smaller, and different-boundary/data/
|
|
21
|
-
flow options
|
|
21
|
+
flow options, plus a **do-nothing baseline** (cost of not building) that every option
|
|
22
|
+
must beat. Use named lenses— inversion, constraint removal, audience shift, 10×, or
|
|
22
23
|
expert practice—without padding. Borrow analogous mechanisms, not branding.
|
|
23
24
|
- For each, name concrete entities/flows/surfaces, optimization, rough cost, and main risk.
|
|
24
25
|
|
|
@@ -27,7 +28,9 @@ first and write only workspace/ticket artifacts.
|
|
|
27
28
|
- Weigh options against the goal, constraints, and existing codebase conventions.
|
|
28
29
|
- Prefer felt pain over nice-to-have. Rank differentiation: new capability > 10× gain >
|
|
29
30
|
new audience > new context > better UX > cheaper; do not dress a vitamin as a painkiller.
|
|
30
|
-
- Recommend one, with the reason and the key trade-off accepted.
|
|
31
|
+
- Recommend one, with the reason and the key trade-off accepted. When no option beats
|
|
32
|
+
the do-nothing baseline, recommend **Kill**: record the reason in `decisions.md` and
|
|
33
|
+
do not route to `/rite-spec`.
|
|
31
34
|
- Note what would change the recommendation (the decision's hinge).
|
|
32
35
|
|
|
33
36
|
## Premise evidence floor
|
|
@@ -65,7 +68,7 @@ Done: pressure test complete for <goal>.
|
|
|
65
68
|
Changed: workspace only
|
|
66
69
|
Evidence: options compared <n>; recommendation <option>; hinge <condition>; premises <supported/assumption/refuted + sources>
|
|
67
70
|
Open: <none | unresolved premise and resolving evidence>
|
|
68
|
-
Next: <when supported: /rite-spec <feature>; when Hold: none — requires <resolving evidence>>
|
|
71
|
+
Next: <when supported: /rite-spec <feature>; when Hold: none — requires <resolving evidence>; when Kill: none — not building: <reason>>
|
|
69
72
|
Record: <investigation-map.md path | questions.md id (Hold) | not applicable>
|
|
70
73
|
↻ Hygiene: /clear before starting the lifecycle
|
|
71
74
|
```
|
|
@@ -173,7 +173,15 @@ plan declares a root-authored executable workflow file, read
|
|
|
173
173
|
`devrites-engine gates lint <slug> --strict` and resolve every finding before
|
|
174
174
|
READY; the readiness check refuses a missing or malformed ledger but does not
|
|
175
175
|
replace this oracle-quality gate.
|
|
176
|
-
7. **Narrow recheck after edits.**
|
|
176
|
+
7. **Narrow recheck after edits.** A slice-bound recheck builds its bundle and
|
|
177
|
+
opens its wave with `--slice <SLICE-ID>` per affected slice (every 5 rechecks
|
|
178
|
+
per slice need a reslice review, as in Build). **Workflow Artifact bytes-only:**
|
|
179
|
+
after `OFFLINE_RECOVERY`, a correction leaving every admission/`WA-*` row
|
|
180
|
+
unchanged records `Workflow Artifact reviewed identity: <re-preflight identity
|
|
181
|
+
digest>` below the admission block; when `check drift` reports only
|
|
182
|
+
`reviewed-identity-only`, the reviewer is one fresh `devrites-code-reviewer` on
|
|
183
|
+
the prior-source→re-preflight diff against those rows (no drafter or plan
|
|
184
|
+
reviewer); green proceeds to step 8. Otherwise dispatch the exact plan reviewer once per
|
|
177
185
|
fold — one dispatch covering every open fingerprint, preserving
|
|
178
186
|
per correction/fingerprint accounting (each checked individually with its
|
|
179
187
|
accepted findings, changed paths/criteria, new identity, and recorded delta
|
|
@@ -29,7 +29,8 @@ Before implementation review, check for work beyond the settled spec.
|
|
|
29
29
|
[feature ceiling](../../rite-plan/reference/slicing.md#feature-ceiling-split-an-epic-never-override-the-budget)
|
|
30
30
|
(over-budget `tasks.md`/`plan.md` from slice or AC count) is a scope finding, not a
|
|
31
31
|
`Budget override`: route to `/rite-plan course-correct` (`MVP cut`) with the
|
|
32
|
-
continuation sequence named; do not vet the whole epic.
|
|
32
|
+
continuation sequence named; do not vet the whole epic. An `ADVISORY size:`
|
|
33
|
+
slice without `Size rationale:` is a non-blocking Suggestion to split it.
|
|
33
34
|
4. **Built-in check.** For each new pattern/infra/concurrency approach, invoke
|
|
34
35
|
`devrites-source-driven` inline to verify current framework/runtime support and cite it. Custom
|
|
35
36
|
work where a built-in suffices is a scope-reduction finding.
|
|
@@ -197,7 +198,10 @@ Use standard `AskUserQuestion`:
|
|
|
197
198
|
recovery owner, test, handling, and user-visible/silent result. No test + no handling +
|
|
198
199
|
silent = **Critical** (`artifacts.md`).
|
|
199
200
|
4. **Dependency safety:** verify graph/order and shared file/state/contract/lock/port/queue/env
|
|
200
|
-
conflicts.
|
|
201
|
+
conflicts. Each `Dependencies` edge must genuinely gate its slice (consumes an
|
|
202
|
+
output, interface, or state the predecessor produces); remove an ordering-only
|
|
203
|
+
edge, since it silently shrinks the parallel set. Correct the plan; native host
|
|
204
|
+
scheduling needs no lane artifact.
|
|
201
205
|
5. **Build-entry preflight:** commands/cwds, tools, package state, parser/browser smoke,
|
|
202
206
|
prerequisites, and provenance ([`artifacts.md`](artifacts.md)).
|
|
203
207
|
6. **Implementation readiness:** goal-backward coverage, wiring, dependency simulation,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devrites",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.3",
|
|
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",
|
package/scripts/install-lib.sh
CHANGED
|
@@ -100,20 +100,6 @@ dr_verify_checksum() {
|
|
|
100
100
|
[ "$_dr_got" = "$_dr_want" ]
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
# Runs a command for at most $1 seconds with output discarded; a timeout is a failure.
|
|
104
|
-
dr_run_bounded() {
|
|
105
|
-
_dr_limit="$1"; shift
|
|
106
|
-
"$@" >/dev/null 2>&1 </dev/null &
|
|
107
|
-
_dr_job=$!
|
|
108
|
-
{ trap 'kill "$_dr_nap"; exit 0' TERM; sleep "$_dr_limit" & _dr_nap=$!; wait "$_dr_nap" && kill "$_dr_job"; } >/dev/null 2>&1 </dev/null &
|
|
109
|
-
_dr_watch=$!
|
|
110
|
-
wait "$_dr_job" 2>/dev/null
|
|
111
|
-
_dr_rc=$?
|
|
112
|
-
kill "$_dr_watch" >/dev/null 2>&1
|
|
113
|
-
wait "$_dr_watch" 2>/dev/null
|
|
114
|
-
return "$_dr_rc"
|
|
115
|
-
}
|
|
116
|
-
|
|
117
103
|
dr_download_engine() {
|
|
118
104
|
_dr_source_dir="$1"
|
|
119
105
|
_dr_repo="$2"
|
|
@@ -138,8 +124,6 @@ dr_download_engine() {
|
|
|
138
124
|
dr_bounded_download "$_dr_url" "$_dr_engine_out" 67108864 || { DR_ACQUIRE_FAILURE="release $_dr_tag asset $_dr_asset: ${DR_DOWNLOAD_FAILURE:-download} failed"; return 1; }
|
|
139
125
|
dr_bounded_download "$_dr_url.sha256" "$_dr_engine_out.sha256" 4096 || { DR_ACQUIRE_FAILURE="release $_dr_tag asset $_dr_asset.sha256: ${DR_DOWNLOAD_FAILURE:-download} failed"; rm -f "$_dr_engine_out"; return 1; }
|
|
140
126
|
dr_verify_checksum "$_dr_engine_out" "$_dr_engine_out.sha256" "$_dr_asset" || { DR_ACQUIRE_FAILURE="release $_dr_tag asset $_dr_asset: checksum failed"; rm -f "$_dr_engine_out" "$_dr_engine_out.sha256"; return 1; }
|
|
141
|
-
_dr_signer="$_dr_repo/.github/workflows/ci.yml@refs/heads/main"
|
|
142
|
-
command -v gh >/dev/null 2>&1 && dr_run_bounded "${DR_ATTEST_TIMEOUT:-120}" gh attestation verify "$_dr_engine_out" --repo "$_dr_repo" --signer-workflow "$_dr_signer" || { DR_ACQUIRE_FAILURE="release $_dr_tag asset $_dr_asset: attestation verification failed (gh must be installed and authenticated)"; rm -f "$_dr_engine_out" "$_dr_engine_out.sha256"; return 1; }
|
|
143
127
|
chmod +x "$_dr_engine_out" || { DR_ACQUIRE_FAILURE="release $_dr_tag asset $_dr_asset: executable preparation failed"; rm -f "$_dr_engine_out" "$_dr_engine_out.sha256"; return 1; }
|
|
144
128
|
}
|
|
145
129
|
|