devrites 5.2.3 → 5.2.4
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 +6 -0
- package/README.md +1 -1
- package/pack/.claude/agents/devrites-plan-drafter.md +9 -0
- package/pack/.claude/agents/devrites-plan-reviewer.md +4 -1
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +3 -1
- package/pack/.claude/skills/devrites-doubt/SKILL.md +3 -2
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +8 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +26 -1
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +8 -4
- package/pack/.claude/skills/rite-review/SKILL.md +10 -6
- package/pack/.claude/skills/rite-seal/SKILL.md +3 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +19 -5
- package/pack/generated/claude/agents/devrites-plan-drafter.md +9 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +4 -1
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +3 -1
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +3 -2
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +8 -1
- package/pack/generated/claude/skills/rite-plan/SKILL.md +26 -1
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +8 -4
- package/pack/generated/claude/skills/rite-review/SKILL.md +10 -6
- package/pack/generated/claude/skills/rite-seal/SKILL.md +3 -1
- package/pack/generated/claude/skills/rite-vet/SKILL.md +19 -5
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +9 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +4 -1
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +3 -1
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +3 -2
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +8 -1
- package/pack/generated/codex/skills/rite-plan/SKILL.md +26 -1
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +8 -4
- package/pack/generated/codex/skills/rite-review/SKILL.md +10 -6
- package/pack/generated/codex/skills/rite-seal/SKILL.md +3 -1
- package/pack/generated/codex/skills/rite-vet/SKILL.md +19 -5
- package/pack/generated/omp/agents/devrites-plan-drafter.md +9 -0
- package/pack/generated/omp/agents/devrites-plan-reviewer.md +4 -1
- package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +3 -1
- package/pack/generated/omp/skills/devrites-doubt/SKILL.md +3 -2
- package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/generated/omp/skills/rite-build/reference/spec-drift-guard.md +8 -1
- package/pack/generated/omp/skills/rite-plan/SKILL.md +26 -1
- package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +8 -4
- package/pack/generated/omp/skills/rite-review/SKILL.md +10 -6
- package/pack/generated/omp/skills/rite-seal/SKILL.md +3 -1
- package/pack/generated/omp/skills/rite-vet/SKILL.md +19 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
|
|
4
4
|
|
|
5
|
+
## [5.2.4](https://github.com/ViktorsBaikers/DevRites/compare/v5.2.3...v5.2.4) (2026-09-12)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
* **skills:** bound repair-vet rounds via self-attack + convergence pressure ([#65](https://github.com/ViktorsBaikers/DevRites/issues/65)) ([a6e7410](https://github.com/ViktorsBaikers/DevRites/commit/a6e74104b94f91fbb67e0bf4e8d8b1a2242740f0))
|
|
10
|
+
|
|
5
11
|
## [5.2.3](https://github.com/ViktorsBaikers/DevRites/compare/v5.2.2...v5.2.3) (2026-09-12)
|
|
6
12
|
|
|
7
13
|
### Fixed
|
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
|
|
|
33
33
|
Unattended runs may create local WIP checkpoint commits along the way, but they
|
|
34
34
|
remain local unless Ship's disclosed plan includes an approved remote action.
|
|
35
35
|
|
|
36
|
-
**Status:** [`v5.2.
|
|
36
|
+
**Status:** [`v5.2.4`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v5.2.4): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
|
|
37
37
|
|
|
38
38
|
This is the latest published release; `main` may contain unreleased work.
|
|
39
39
|
|
|
@@ -60,6 +60,14 @@ principle-exception questions. List them for the root.
|
|
|
60
60
|
re-dispatches the rest. A finding blocked on human-owned information goes in
|
|
61
61
|
`blocked_findings` with the needed input named — never `remaining_findings`,
|
|
62
62
|
which is reserved for what another dispatch can complete.
|
|
63
|
+
- In `repair`, before returning, self-attack the delta: probe every clause the
|
|
64
|
+
hunks touch for the attack classes Vet's reviewers hunt — race/observation
|
|
65
|
+
windows, identity/alias escapes, durability/ordering gaps,
|
|
66
|
+
platform-capability gaps, unbounded blocking, happy-path-only coverage.
|
|
67
|
+
Close each real exposure inside the same delta or return it in
|
|
68
|
+
`self_attack_exposures` with its bound; never silently drop one. This
|
|
69
|
+
narrows the next Vet round; it never replaces independent review and never
|
|
70
|
+
self-approves the repair.
|
|
63
71
|
|
|
64
72
|
## Output format
|
|
65
73
|
|
|
@@ -77,6 +85,7 @@ technical_decisions: []
|
|
|
77
85
|
human_owned_choices: []
|
|
78
86
|
validation_commands: []
|
|
79
87
|
applicability_disposition: []
|
|
88
|
+
self_attack_exposures: []
|
|
80
89
|
```
|
|
81
90
|
|
|
82
91
|
The root validates the cross-file bundle and persists accepted content.
|
|
@@ -104,7 +104,10 @@ criterion, slice, or proof.
|
|
|
104
104
|
- `/rite-vet` may request one initial pass and one narrow recheck per correction/fingerprint.
|
|
105
105
|
- Label each finding **Critical / Important / Suggestion / Nit / FYI** and include
|
|
106
106
|
the relevant plan or task section, confidence score, and a concrete fix. Do not
|
|
107
|
-
pad the report with praise.
|
|
107
|
+
pad the report with praise. In a recheck, also mark each finding
|
|
108
|
+
`new_failure_mode` or name the already-pinned clause/fingerprint it refines —
|
|
109
|
+
the packet lists prior repairs; the mark makes alias-detection and
|
|
110
|
+
`convergence_pressure` eligibility mechanical.
|
|
108
111
|
- When a dimension has no issue, say "strong: <why>" instead of inventing a
|
|
109
112
|
finding.
|
|
110
113
|
- If a claim cannot be verified, such as blast radius without an index, say so and
|
|
@@ -51,7 +51,9 @@ Before standing the interface, run `devrites-doubt`.
|
|
|
51
51
|
## Done when
|
|
52
52
|
The contract is complete only when **every** field carries a type + optionality + unit,
|
|
53
53
|
**every** success and error status code is enumerated with its error-body shape, the
|
|
54
|
-
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt
|
|
54
|
+
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt under
|
|
55
|
+
`devrites-doubt`'s per-fingerprint bounds and distinct-findings ceiling — a contract
|
|
56
|
+
that resists repair becomes a blocker or human gate, not an endless revise loop), and the
|
|
55
57
|
contract + rationale are recorded in `decisions.md`. A contract that pins only the
|
|
56
58
|
happy-path shape is not done.
|
|
57
59
|
|
|
@@ -27,7 +27,7 @@ code · claiming "this is safe", "this scales", or "this matches the spec".
|
|
|
27
27
|
issues but classify **zero** as actionable, the review is too agreeable. Sharpen the
|
|
28
28
|
prompt or use a fresh reviewer. Accept a clean pass only after a genuine attempt to
|
|
29
29
|
disprove the claim.
|
|
30
|
-
- [ ] **5. STOP**: met a stop condition (only trivial findings,
|
|
30
|
+
- [ ] **5. STOP**: met a stop condition (only trivial findings, no open fingerprint has budget left, the distinct-findings ceiling, or user override). Emit a **binary gate verdict** the orchestrator must clear: **accept** (no valid-&-actionable findings remain) or **reject + the specific required changes**. On reject, the orchestrator loops the wright on those changes before the slice is accepted. Account per finding, not per round: a reject citing a genuinely new defect is progress and the loop continues; a reject re-citing a fingerprint the wright already failed on is no-progress and burns that fingerprint's budget. A finding that only refines a clause a prior cycle already pinned may close as an explicit bounded declared residual. Ceiling: three distinct actionable findings on one decision mean the decision resists repair — classify by decision ownership: human-owned product/risk uncertainty escalates; objective required changes become a technical blocker, never a retry-authorization question.
|
|
31
31
|
|
|
32
32
|
## Deletion-test lens (for "is this abstraction load-bearing?" doubts)
|
|
33
33
|
|
|
@@ -72,7 +72,8 @@ real time. Map the verdict to a `questions.md` entry instead of a synchronous pr
|
|
|
72
72
|
`questions.md` entry with `gate: blocking`, set `state.md` `Status: awaiting_human`,
|
|
73
73
|
fire the `notify:` hook, and STOP. AFK never silently accepts irreversible risk.
|
|
74
74
|
|
|
75
|
-
The
|
|
75
|
+
The same bounds apply in AFK. Once no open fingerprint has budget left or the
|
|
76
|
+
distinct-findings ceiling trips, human-owned uncertainty becomes a blocking
|
|
76
77
|
question; an unresolved objective technical finding becomes `Status: blocked` with its exact
|
|
77
78
|
required changes and `/rite-plan unblock`, regardless of AFK config.
|
|
78
79
|
|
|
@@ -19,6 +19,8 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
19
19
|
IMPLEMENT → smallest complete version; match conventions; devrites-frontend-craft for UI
|
|
20
20
|
VERIFY → writer-safe tests/types/lint; return code + tests
|
|
21
21
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
22
|
+
— dispatch the initial read-only reviews of distinct decisions in parallel
|
|
23
|
+
(independent claims, fresh contexts); wright fixes stay serial — writers share files
|
|
22
24
|
PROVE → root: required build/browser/E2E, then returned-diff/path review; fail-on-red
|
|
23
25
|
RECORD → orchestrator: after green verification, update state.md/evidence.md and
|
|
24
26
|
upsert the authoritative candidate manifest from the actual scoped diff
|
|
@@ -44,7 +44,14 @@ A durable-plan drift abort never repairs the first gap alone:
|
|
|
44
44
|
2. Record each violation as its own `drift.md` entry/fingerprint; one folded
|
|
45
45
|
repair + one batched recheck resolves the set.
|
|
46
46
|
3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
|
|
47
|
-
internally, never hand an intermediate command to the human.
|
|
47
|
+
internally, never hand an intermediate command to the human. When
|
|
48
|
+
consecutive folded repairs keep landing on the same clause set, the
|
|
49
|
+
repair packet's `convergence_pressure` marking applies (see `/rite-plan`
|
|
50
|
+
repair): bounded declared residuals may close refinements of
|
|
51
|
+
already-pinned clauses; a newly surfaced failure mode is never
|
|
52
|
+
residual-eligible. A suspect seam's declare-limitation-or-continue choice
|
|
53
|
+
routes to `/rite-clarify` like any human-owned gate — it is not an
|
|
54
|
+
intermediate command.
|
|
48
55
|
4. Nothing skips or defers silently: every entry ends resolved, human-escalated,
|
|
49
56
|
or fingerprint-exhausted. Execution-only gaps (tests, UX, evidence) get the
|
|
50
57
|
identical path when they surface.
|
|
@@ -83,7 +83,32 @@ Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/stan
|
|
|
83
83
|
touches: which intersected invariants it re-verified, with evidence of no
|
|
84
84
|
correction-created regression. Global re-derivation (ID/edge/HZN counts,
|
|
85
85
|
acyclicity) runs on materialized artifacts at the step-7 gate — the drafter
|
|
86
|
-
never re-derives them by exhaustive search.
|
|
86
|
+
never re-derives them by exhaustive search. It also carries a bounded
|
|
87
|
+
self-attack over the delta (`self_attack_exposures`), catching the shallow
|
|
88
|
+
next-round findings before Vet's dispatch rather than after a full loop.
|
|
89
|
+
Root dispositions every exposure — fold as a finding, accept as a declared
|
|
90
|
+
residual, or reject with reason; none silently drops.
|
|
91
|
+
Packet mechanics: dedupe at assembly — findings with an identical
|
|
92
|
+
required-fix and site set merge into one entry that closes all their
|
|
93
|
+
fingerprints. The packet may carry digest-pinned site excerpts so the
|
|
94
|
+
drafter spot-verifies anchors instead of re-scanning whole files, and root
|
|
95
|
+
may partition findings into anchor-disjoint clusters with one drafter per
|
|
96
|
+
cluster in parallel — findings sharing any anchor or mirrored clause stay
|
|
97
|
+
in one cluster, and each bundle applies independently. A `partial`-
|
|
98
|
+
continuation re-dispatch continues the same packet; it does not advance the
|
|
99
|
+
same-seam counter. Count consecutive repair packets whose findings' cited clause sets overlap
|
|
100
|
+
the immediately previous packet's — the overlap is the seam. At the third
|
|
101
|
+
same-seam packet, mark it `convergence_pressure: true` with the seam named.
|
|
102
|
+
Under pressure the drafter may close a finding marked as a refinement of an
|
|
103
|
+
already-pinned clause by folding an explicit, bounded declared
|
|
104
|
+
residual/limitation into the contract text instead of another precision
|
|
105
|
+
pin — never for a `new_failure_mode` finding. Every finding still gets one
|
|
106
|
+
disposition; none is skipped. A fourth same-seam packet that still carries
|
|
107
|
+
`new_failure_mode` findings means the seam is under-specified, not
|
|
108
|
+
under-repaired: route a declare-limitation-or-continue choice to
|
|
109
|
+
`/rite-clarify`. AFK records the suspect seam in `state.md` and continues
|
|
110
|
+
within budgets — a coverage limitation is a product decision and is never
|
|
111
|
+
auto-declared.
|
|
87
112
|
Bind exact active `.devrites/work/<slug>/` targets and executable contract; after Vet READY, root
|
|
88
113
|
materializes the exact vetted workflow-artifact paths under
|
|
89
114
|
[`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md)
|
|
@@ -32,10 +32,14 @@ A drift event stopped the build. Steps:
|
|
|
32
32
|
3. Update `spec.md` (only the affected sections) and `plan.md`/`tasks.md` to match
|
|
33
33
|
reality. Adjust acceptance criteria if they were wrong.
|
|
34
34
|
4. Mark each `drift.md` entry **resolved** with the resolution + date.
|
|
35
|
-
5. **Self-check the repaired candidate on the delta before
|
|
36
|
-
every invariant the correction touched (acyclic
|
|
37
|
-
bidirectional traceability, Shared contract proof vs
|
|
38
|
-
no correction-created regression)
|
|
35
|
+
5. **Self-check and self-attack the repaired candidate on the delta before
|
|
36
|
+
handoff** — re-verify every invariant the correction touched (acyclic
|
|
37
|
+
dependency graph, bidirectional traceability, Shared contract proof vs
|
|
38
|
+
boundary set, sizing, no correction-created regression), then probe the
|
|
39
|
+
delta against the reviewers' attack classes (race/observation windows,
|
|
40
|
+
alias escapes, ordering gaps, capability gaps, unbounded blocking,
|
|
41
|
+
happy-path-only coverage); fold a fix or a named bounded residual into
|
|
42
|
+
the same pass. Record both in the Plan
|
|
39
43
|
checkpoint; Vet's recheck verifies it rather than rediscovering the defect a
|
|
40
44
|
loop later.
|
|
41
45
|
6. Resume at the corrected slice.
|
|
@@ -77,7 +77,9 @@ Pull these via `Read` when the diff demands them:
|
|
|
77
77
|
Separate contexts prevent one axis from masking the other:
|
|
78
78
|
- Freeze that closed digest and give the same digest to **two** read-only reviewers in
|
|
79
79
|
parallel, each with its own narrow brief and no
|
|
80
|
-
cross-pollination
|
|
80
|
+
cross-pollination — and evaluate the frontend (step 4), security (step 5),
|
|
81
|
+
and performance (step 6) dispatch conditions from this same diff now,
|
|
82
|
+
joining the cohort when applicable rather than dispatching later waves:
|
|
81
83
|
- **Spec axis** → `devrites-spec-reviewer`: "Apply your documented discipline on
|
|
82
84
|
the active feature workspace + diff. Report (a) criteria the spec asked for that
|
|
83
85
|
are missing or partial, (b) behaviour in the diff the spec did not ask for
|
|
@@ -112,17 +114,19 @@ Pull these via `Read` when the diff demands them:
|
|
|
112
114
|
Add only what the dispatched agents could not, then resolve overlaps and
|
|
113
115
|
contradictions before labeling. ([five-axis-review.md](reference/five-axis-review.md)
|
|
114
116
|
documents the axes the code-review agent applies.)
|
|
115
|
-
- **UI feature?**
|
|
117
|
+
- **UI feature?** `devrites-frontend-reviewer` joins the step-3 cohort; apply the **UX rubric**
|
|
116
118
|
([nielsen-heuristics](reference/nielsen-heuristics.md)) and the
|
|
117
119
|
**cognitive-load lens** ([cognitive-load](reference/cognitive-load.md),
|
|
118
120
|
[performance-checklist](reference/performance-checklist.md)). No UI/route/style
|
|
119
121
|
paths: record `Not-applicable: no relevant paths in diff`.
|
|
120
|
-
5. **Security:**
|
|
121
|
-
([security-review](reference/security-review.md))
|
|
122
|
+
5. **Security:** `devrites-security-auditor`
|
|
123
|
+
([security-review](reference/security-review.md)) joins the step-3 cohort when
|
|
124
|
+
input, auth, data,
|
|
122
125
|
secrets, or permissions are in the diff; else `Not-applicable: no relevant paths in diff`.
|
|
123
|
-
6. **Performance:**
|
|
126
|
+
6. **Performance:** `devrites-performance-reviewer`
|
|
124
127
|
([performance-review](reference/performance-review.md),
|
|
125
|
-
[performance-checklist](reference/performance-checklist.md))
|
|
128
|
+
[performance-checklist](reference/performance-checklist.md)) joins the step-3 cohort
|
|
129
|
+
only on a budget or
|
|
126
130
|
hot path; else `Not-applicable: no relevant paths in diff`.
|
|
127
131
|
7. Reconcile and accept only in-scope fixes. Consolidate them into one bounded
|
|
128
132
|
wright correction; never edit source in the reviewing context. Any correction
|
|
@@ -52,7 +52,9 @@ Follow [`reference/phase-contract.md`](reference/phase-contract.md)
|
|
|
52
52
|
|
|
53
53
|
1. read workspace and final diff;
|
|
54
54
|
2. recheck the canonical candidate/bindings and approved repository/CI proof;
|
|
55
|
-
3. dispatch exact proof, spec, test, doubt, and applicable review agents
|
|
55
|
+
3. dispatch exact proof, spec, test, doubt, and applicable review agents in
|
|
56
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md` — independent
|
|
57
|
+
read-only verdicts on one frozen candidate;
|
|
56
58
|
4. reconcile their read-only verdicts against source and immutable evidence;
|
|
57
59
|
5. draft GO/NO-GO `seal.md` with acceptance, tests, decisions, and seven accounts;
|
|
58
60
|
6. write exactly one candidate binding, then run
|
|
@@ -73,9 +73,11 @@ plan declares a root-authored executable workflow file, read
|
|
|
73
73
|
1. **Select depth.** Apply `reference/depth.md` exactly; never skip. Every initial
|
|
74
74
|
pass records an engineering verdict and test-plan coverage. A valid Recovery
|
|
75
75
|
recheck retains prior depth and enters 1b.
|
|
76
|
-
1a. **Independent initial pass.** Freeze candidate and dispatch exact fresh
|
|
77
|
-
read-only plan reviewer
|
|
78
|
-
surfaces and current strategy reviewer after significant Temper
|
|
76
|
+
1a. **Independent initial pass.** Freeze candidate and dispatch the exact fresh
|
|
77
|
+
read-only plan reviewer — plus developer-experience reviewer for developer
|
|
78
|
+
surfaces and the current strategy reviewer after significant Temper — in
|
|
79
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md`; they are
|
|
80
|
+
independent read-only passes on one frozen candidate. Missing
|
|
79
81
|
required account blocks.
|
|
80
82
|
1b. **Recovery recheck.** Require valid return cursor, accepted prior finding,
|
|
81
83
|
exact fingerprint/reproduction, repaired candidate identity, changed
|
|
@@ -89,7 +91,16 @@ plan declares a root-authored executable workflow file, read
|
|
|
89
91
|
changed clause — enumerate dependents via the dep graph and traceability
|
|
90
92
|
refs, not only patched sites. Otherwise record one no-progress outcome. A
|
|
91
93
|
different Critical/Important invariant needs exact evidence and a new
|
|
92
|
-
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open.
|
|
94
|
+
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open. A packet
|
|
95
|
+
marked `convergence_pressure` accepts an explicit, bounded declared
|
|
96
|
+
residual/limitation folded into the contract text as closure for a finding
|
|
97
|
+
marked as a refinement of an already-pinned clause; the recheck may re-raise
|
|
98
|
+
it only by naming a concrete failure path the declaration omits. A
|
|
99
|
+
`new_failure_mode` finding is never residual-eligible. A fold whose
|
|
100
|
+
findings are all Suggestion-or-lower rechecks mechanically at the
|
|
101
|
+
materialization gate — anchors applied, mirrors consistent, invariants
|
|
102
|
+
pass — without a dispatched reviewer; sub-Important findings already
|
|
103
|
+
cannot keep recovery open. Reconcile
|
|
93
104
|
shared artifact/readiness gates and return to caller or next repair.
|
|
94
105
|
2. **Challenge scope.** Apply review-axes §0 and search accepted decisions.
|
|
95
106
|
Harden to the smallest contract-complete plan, using marked topology action.
|
|
@@ -119,7 +130,10 @@ plan declares a root-authored executable workflow file, read
|
|
|
119
130
|
consumer seam, or an explicit no-impact statement. Missing, one-sided,
|
|
120
131
|
duplicated-contract, vague, or non-consuming proof fails closed.
|
|
121
132
|
|
|
122
|
-
Technical gaps are `NEEDS REPLAN` and Plan repair
|
|
133
|
+
Technical gaps are `NEEDS REPLAN` and Plan repair — each finding marks
|
|
134
|
+
itself `new_failure_mode` or names the already-pinned clause/fingerprint
|
|
135
|
+
it refines, making alias-detection and `convergence_pressure` eligibility
|
|
136
|
+
mechanical. Product/risk gaps are
|
|
123
137
|
`NEEDS CLARIFICATION` and Clarify. Neither becomes a Build qid.
|
|
124
138
|
5. **Review axes.** Apply `review-axes.md` through `eng-lenses.md`. Fold verified
|
|
125
139
|
behavior-preserving technical findings; walk only human-owned decisions.
|
|
@@ -60,6 +60,14 @@ principle-exception questions. List them for the root.
|
|
|
60
60
|
re-dispatches the rest. A finding blocked on human-owned information goes in
|
|
61
61
|
`blocked_findings` with the needed input named — never `remaining_findings`,
|
|
62
62
|
which is reserved for what another dispatch can complete.
|
|
63
|
+
- In `repair`, before returning, self-attack the delta: probe every clause the
|
|
64
|
+
hunks touch for the attack classes Vet's reviewers hunt — race/observation
|
|
65
|
+
windows, identity/alias escapes, durability/ordering gaps,
|
|
66
|
+
platform-capability gaps, unbounded blocking, happy-path-only coverage.
|
|
67
|
+
Close each real exposure inside the same delta or return it in
|
|
68
|
+
`self_attack_exposures` with its bound; never silently drop one. This
|
|
69
|
+
narrows the next Vet round; it never replaces independent review and never
|
|
70
|
+
self-approves the repair.
|
|
63
71
|
|
|
64
72
|
## Output format
|
|
65
73
|
|
|
@@ -77,6 +85,7 @@ technical_decisions: []
|
|
|
77
85
|
human_owned_choices: []
|
|
78
86
|
validation_commands: []
|
|
79
87
|
applicability_disposition: []
|
|
88
|
+
self_attack_exposures: []
|
|
80
89
|
```
|
|
81
90
|
|
|
82
91
|
The root validates the cross-file bundle and persists accepted content.
|
|
@@ -104,7 +104,10 @@ criterion, slice, or proof.
|
|
|
104
104
|
- `/rite-vet` may request one initial pass and one narrow recheck per correction/fingerprint.
|
|
105
105
|
- Label each finding **Critical / Important / Suggestion / Nit / FYI** and include
|
|
106
106
|
the relevant plan or task section, confidence score, and a concrete fix. Do not
|
|
107
|
-
pad the report with praise.
|
|
107
|
+
pad the report with praise. In a recheck, also mark each finding
|
|
108
|
+
`new_failure_mode` or name the already-pinned clause/fingerprint it refines —
|
|
109
|
+
the packet lists prior repairs; the mark makes alias-detection and
|
|
110
|
+
`convergence_pressure` eligibility mechanical.
|
|
108
111
|
- When a dimension has no issue, say "strong: <why>" instead of inventing a
|
|
109
112
|
finding.
|
|
110
113
|
- If a claim cannot be verified, such as blast radius without an index, say so and
|
|
@@ -51,7 +51,9 @@ Before standing the interface, run `devrites-doubt`.
|
|
|
51
51
|
## Done when
|
|
52
52
|
The contract is complete only when **every** field carries a type + optionality + unit,
|
|
53
53
|
**every** success and error status code is enumerated with its error-body shape, the
|
|
54
|
-
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt
|
|
54
|
+
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt under
|
|
55
|
+
`devrites-doubt`'s per-fingerprint bounds and distinct-findings ceiling — a contract
|
|
56
|
+
that resists repair becomes a blocker or human gate, not an endless revise loop), and the
|
|
55
57
|
contract + rationale are recorded in `decisions.md`. A contract that pins only the
|
|
56
58
|
happy-path shape is not done.
|
|
57
59
|
|
|
@@ -27,7 +27,7 @@ code · claiming "this is safe", "this scales", or "this matches the spec".
|
|
|
27
27
|
issues but classify **zero** as actionable, the review is too agreeable. Sharpen the
|
|
28
28
|
prompt or use a fresh reviewer. Accept a clean pass only after a genuine attempt to
|
|
29
29
|
disprove the claim.
|
|
30
|
-
- [ ] **5. STOP**: met a stop condition (only trivial findings,
|
|
30
|
+
- [ ] **5. STOP**: met a stop condition (only trivial findings, no open fingerprint has budget left, the distinct-findings ceiling, or user override). Emit a **binary gate verdict** the orchestrator must clear: **accept** (no valid-&-actionable findings remain) or **reject + the specific required changes**. On reject, the orchestrator loops the wright on those changes before the slice is accepted. Account per finding, not per round: a reject citing a genuinely new defect is progress and the loop continues; a reject re-citing a fingerprint the wright already failed on is no-progress and burns that fingerprint's budget. A finding that only refines a clause a prior cycle already pinned may close as an explicit bounded declared residual. Ceiling: three distinct actionable findings on one decision mean the decision resists repair — classify by decision ownership: human-owned product/risk uncertainty escalates; objective required changes become a technical blocker, never a retry-authorization question.
|
|
31
31
|
|
|
32
32
|
## Deletion-test lens (for "is this abstraction load-bearing?" doubts)
|
|
33
33
|
|
|
@@ -72,7 +72,8 @@ real time. Map the verdict to a `questions.md` entry instead of a synchronous pr
|
|
|
72
72
|
`questions.md` entry with `gate: blocking`, set `state.md` `Status: awaiting_human`,
|
|
73
73
|
fire the `notify:` hook, and STOP. AFK never silently accepts irreversible risk.
|
|
74
74
|
|
|
75
|
-
The
|
|
75
|
+
The same bounds apply in AFK. Once no open fingerprint has budget left or the
|
|
76
|
+
distinct-findings ceiling trips, human-owned uncertainty becomes a blocking
|
|
76
77
|
question; an unresolved objective technical finding becomes `Status: blocked` with its exact
|
|
77
78
|
required changes and `/rite-plan unblock`, regardless of AFK config.
|
|
78
79
|
|
|
@@ -19,6 +19,8 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
19
19
|
IMPLEMENT → smallest complete version; match conventions; devrites-frontend-craft for UI
|
|
20
20
|
VERIFY → writer-safe tests/types/lint; return code + tests
|
|
21
21
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
22
|
+
— dispatch the initial read-only reviews of distinct decisions in parallel
|
|
23
|
+
(independent claims, fresh contexts); wright fixes stay serial — writers share files
|
|
22
24
|
PROVE → root: required build/browser/E2E, then returned-diff/path review; fail-on-red
|
|
23
25
|
RECORD → orchestrator: after green verification, update state.md/evidence.md and
|
|
24
26
|
upsert the authoritative candidate manifest from the actual scoped diff
|
|
@@ -44,7 +44,14 @@ A durable-plan drift abort never repairs the first gap alone:
|
|
|
44
44
|
2. Record each violation as its own `drift.md` entry/fingerprint; one folded
|
|
45
45
|
repair + one batched recheck resolves the set.
|
|
46
46
|
3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
|
|
47
|
-
internally, never hand an intermediate command to the human.
|
|
47
|
+
internally, never hand an intermediate command to the human. When
|
|
48
|
+
consecutive folded repairs keep landing on the same clause set, the
|
|
49
|
+
repair packet's `convergence_pressure` marking applies (see `/rite-plan`
|
|
50
|
+
repair): bounded declared residuals may close refinements of
|
|
51
|
+
already-pinned clauses; a newly surfaced failure mode is never
|
|
52
|
+
residual-eligible. A suspect seam's declare-limitation-or-continue choice
|
|
53
|
+
routes to `/rite-clarify` like any human-owned gate — it is not an
|
|
54
|
+
intermediate command.
|
|
48
55
|
4. Nothing skips or defers silently: every entry ends resolved, human-escalated,
|
|
49
56
|
or fingerprint-exhausted. Execution-only gaps (tests, UX, evidence) get the
|
|
50
57
|
identical path when they surface.
|
|
@@ -83,7 +83,32 @@ Before classifying any Reslice, read `.claude/skills/devrites-lib/reference/stan
|
|
|
83
83
|
touches: which intersected invariants it re-verified, with evidence of no
|
|
84
84
|
correction-created regression. Global re-derivation (ID/edge/HZN counts,
|
|
85
85
|
acyclicity) runs on materialized artifacts at the step-7 gate — the drafter
|
|
86
|
-
never re-derives them by exhaustive search.
|
|
86
|
+
never re-derives them by exhaustive search. It also carries a bounded
|
|
87
|
+
self-attack over the delta (`self_attack_exposures`), catching the shallow
|
|
88
|
+
next-round findings before Vet's dispatch rather than after a full loop.
|
|
89
|
+
Root dispositions every exposure — fold as a finding, accept as a declared
|
|
90
|
+
residual, or reject with reason; none silently drops.
|
|
91
|
+
Packet mechanics: dedupe at assembly — findings with an identical
|
|
92
|
+
required-fix and site set merge into one entry that closes all their
|
|
93
|
+
fingerprints. The packet may carry digest-pinned site excerpts so the
|
|
94
|
+
drafter spot-verifies anchors instead of re-scanning whole files, and root
|
|
95
|
+
may partition findings into anchor-disjoint clusters with one drafter per
|
|
96
|
+
cluster in parallel — findings sharing any anchor or mirrored clause stay
|
|
97
|
+
in one cluster, and each bundle applies independently. A `partial`-
|
|
98
|
+
continuation re-dispatch continues the same packet; it does not advance the
|
|
99
|
+
same-seam counter. Count consecutive repair packets whose findings' cited clause sets overlap
|
|
100
|
+
the immediately previous packet's — the overlap is the seam. At the third
|
|
101
|
+
same-seam packet, mark it `convergence_pressure: true` with the seam named.
|
|
102
|
+
Under pressure the drafter may close a finding marked as a refinement of an
|
|
103
|
+
already-pinned clause by folding an explicit, bounded declared
|
|
104
|
+
residual/limitation into the contract text instead of another precision
|
|
105
|
+
pin — never for a `new_failure_mode` finding. Every finding still gets one
|
|
106
|
+
disposition; none is skipped. A fourth same-seam packet that still carries
|
|
107
|
+
`new_failure_mode` findings means the seam is under-specified, not
|
|
108
|
+
under-repaired: route a declare-limitation-or-continue choice to
|
|
109
|
+
`/rite-clarify`. AFK records the suspect seam in `state.md` and continues
|
|
110
|
+
within budgets — a coverage limitation is a product decision and is never
|
|
111
|
+
auto-declared.
|
|
87
112
|
Bind exact active `.devrites/work/<slug>/` targets and executable contract; after Vet READY, root
|
|
88
113
|
materializes the exact vetted workflow-artifact paths under
|
|
89
114
|
[`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md)
|
|
@@ -32,10 +32,14 @@ A drift event stopped the build. Steps:
|
|
|
32
32
|
3. Update `spec.md` (only the affected sections) and `plan.md`/`tasks.md` to match
|
|
33
33
|
reality. Adjust acceptance criteria if they were wrong.
|
|
34
34
|
4. Mark each `drift.md` entry **resolved** with the resolution + date.
|
|
35
|
-
5. **Self-check the repaired candidate on the delta before
|
|
36
|
-
every invariant the correction touched (acyclic
|
|
37
|
-
bidirectional traceability, Shared contract proof vs
|
|
38
|
-
no correction-created regression)
|
|
35
|
+
5. **Self-check and self-attack the repaired candidate on the delta before
|
|
36
|
+
handoff** — re-verify every invariant the correction touched (acyclic
|
|
37
|
+
dependency graph, bidirectional traceability, Shared contract proof vs
|
|
38
|
+
boundary set, sizing, no correction-created regression), then probe the
|
|
39
|
+
delta against the reviewers' attack classes (race/observation windows,
|
|
40
|
+
alias escapes, ordering gaps, capability gaps, unbounded blocking,
|
|
41
|
+
happy-path-only coverage); fold a fix or a named bounded residual into
|
|
42
|
+
the same pass. Record both in the Plan
|
|
39
43
|
checkpoint; Vet's recheck verifies it rather than rediscovering the defect a
|
|
40
44
|
loop later.
|
|
41
45
|
6. Resume at the corrected slice.
|
|
@@ -77,7 +77,9 @@ Pull these via `Read` when the diff demands them:
|
|
|
77
77
|
Separate contexts prevent one axis from masking the other:
|
|
78
78
|
- Freeze that closed digest and give the same digest to **two** read-only reviewers in
|
|
79
79
|
parallel, each with its own narrow brief and no
|
|
80
|
-
cross-pollination
|
|
80
|
+
cross-pollination — and evaluate the frontend (step 4), security (step 5),
|
|
81
|
+
and performance (step 6) dispatch conditions from this same diff now,
|
|
82
|
+
joining the cohort when applicable rather than dispatching later waves:
|
|
81
83
|
- **Spec axis** → `devrites-spec-reviewer`: "Apply your documented discipline on
|
|
82
84
|
the active feature workspace + diff. Report (a) criteria the spec asked for that
|
|
83
85
|
are missing or partial, (b) behaviour in the diff the spec did not ask for
|
|
@@ -112,17 +114,19 @@ Pull these via `Read` when the diff demands them:
|
|
|
112
114
|
Add only what the dispatched agents could not, then resolve overlaps and
|
|
113
115
|
contradictions before labeling. ([five-axis-review.md](reference/five-axis-review.md)
|
|
114
116
|
documents the axes the code-review agent applies.)
|
|
115
|
-
- **UI feature?**
|
|
117
|
+
- **UI feature?** `devrites-frontend-reviewer` joins the step-3 cohort; apply the **UX rubric**
|
|
116
118
|
([nielsen-heuristics](reference/nielsen-heuristics.md)) and the
|
|
117
119
|
**cognitive-load lens** ([cognitive-load](reference/cognitive-load.md),
|
|
118
120
|
[performance-checklist](reference/performance-checklist.md)). No UI/route/style
|
|
119
121
|
paths: record `Not-applicable: no relevant paths in diff`.
|
|
120
|
-
5. **Security:**
|
|
121
|
-
([security-review](reference/security-review.md))
|
|
122
|
+
5. **Security:** `devrites-security-auditor`
|
|
123
|
+
([security-review](reference/security-review.md)) joins the step-3 cohort when
|
|
124
|
+
input, auth, data,
|
|
122
125
|
secrets, or permissions are in the diff; else `Not-applicable: no relevant paths in diff`.
|
|
123
|
-
6. **Performance:**
|
|
126
|
+
6. **Performance:** `devrites-performance-reviewer`
|
|
124
127
|
([performance-review](reference/performance-review.md),
|
|
125
|
-
[performance-checklist](reference/performance-checklist.md))
|
|
128
|
+
[performance-checklist](reference/performance-checklist.md)) joins the step-3 cohort
|
|
129
|
+
only on a budget or
|
|
126
130
|
hot path; else `Not-applicable: no relevant paths in diff`.
|
|
127
131
|
7. Reconcile and accept only in-scope fixes. Consolidate them into one bounded
|
|
128
132
|
wright correction; never edit source in the reviewing context. Any correction
|
|
@@ -52,7 +52,9 @@ Follow [`reference/phase-contract.md`](reference/phase-contract.md)
|
|
|
52
52
|
|
|
53
53
|
1. read workspace and final diff;
|
|
54
54
|
2. recheck the canonical candidate/bindings and approved repository/CI proof;
|
|
55
|
-
3. dispatch exact proof, spec, test, doubt, and applicable review agents
|
|
55
|
+
3. dispatch exact proof, spec, test, doubt, and applicable review agents in
|
|
56
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md` — independent
|
|
57
|
+
read-only verdicts on one frozen candidate;
|
|
56
58
|
4. reconcile their read-only verdicts against source and immutable evidence;
|
|
57
59
|
5. draft GO/NO-GO `seal.md` with acceptance, tests, decisions, and seven accounts;
|
|
58
60
|
6. write exactly one candidate binding, then run
|
|
@@ -73,9 +73,11 @@ plan declares a root-authored executable workflow file, read
|
|
|
73
73
|
1. **Select depth.** Apply `reference/depth.md` exactly; never skip. Every initial
|
|
74
74
|
pass records an engineering verdict and test-plan coverage. A valid Recovery
|
|
75
75
|
recheck retains prior depth and enters 1b.
|
|
76
|
-
1a. **Independent initial pass.** Freeze candidate and dispatch exact fresh
|
|
77
|
-
read-only plan reviewer
|
|
78
|
-
surfaces and current strategy reviewer after significant Temper
|
|
76
|
+
1a. **Independent initial pass.** Freeze candidate and dispatch the exact fresh
|
|
77
|
+
read-only plan reviewer — plus developer-experience reviewer for developer
|
|
78
|
+
surfaces and the current strategy reviewer after significant Temper — in
|
|
79
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md`; they are
|
|
80
|
+
independent read-only passes on one frozen candidate. Missing
|
|
79
81
|
required account blocks.
|
|
80
82
|
1b. **Recovery recheck.** Require valid return cursor, accepted prior finding,
|
|
81
83
|
exact fingerprint/reproduction, repaired candidate identity, changed
|
|
@@ -89,7 +91,16 @@ plan declares a root-authored executable workflow file, read
|
|
|
89
91
|
changed clause — enumerate dependents via the dep graph and traceability
|
|
90
92
|
refs, not only patched sites. Otherwise record one no-progress outcome. A
|
|
91
93
|
different Critical/Important invariant needs exact evidence and a new
|
|
92
|
-
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open.
|
|
94
|
+
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open. A packet
|
|
95
|
+
marked `convergence_pressure` accepts an explicit, bounded declared
|
|
96
|
+
residual/limitation folded into the contract text as closure for a finding
|
|
97
|
+
marked as a refinement of an already-pinned clause; the recheck may re-raise
|
|
98
|
+
it only by naming a concrete failure path the declaration omits. A
|
|
99
|
+
`new_failure_mode` finding is never residual-eligible. A fold whose
|
|
100
|
+
findings are all Suggestion-or-lower rechecks mechanically at the
|
|
101
|
+
materialization gate — anchors applied, mirrors consistent, invariants
|
|
102
|
+
pass — without a dispatched reviewer; sub-Important findings already
|
|
103
|
+
cannot keep recovery open. Reconcile
|
|
93
104
|
shared artifact/readiness gates and return to caller or next repair.
|
|
94
105
|
2. **Challenge scope.** Apply review-axes §0 and search accepted decisions.
|
|
95
106
|
Harden to the smallest contract-complete plan, using marked topology action.
|
|
@@ -119,7 +130,10 @@ plan declares a root-authored executable workflow file, read
|
|
|
119
130
|
consumer seam, or an explicit no-impact statement. Missing, one-sided,
|
|
120
131
|
duplicated-contract, vague, or non-consuming proof fails closed.
|
|
121
132
|
|
|
122
|
-
Technical gaps are `NEEDS REPLAN` and Plan repair
|
|
133
|
+
Technical gaps are `NEEDS REPLAN` and Plan repair — each finding marks
|
|
134
|
+
itself `new_failure_mode` or names the already-pinned clause/fingerprint
|
|
135
|
+
it refines, making alias-detection and `convergence_pressure` eligibility
|
|
136
|
+
mechanical. Product/risk gaps are
|
|
123
137
|
`NEEDS CLARIFICATION` and Clarify. Neither becomes a Build qid.
|
|
124
138
|
5. **Review axes.** Apply `review-axes.md` through `eng-lenses.md`. Fold verified
|
|
125
139
|
behavior-preserving technical findings; walk only human-owned decisions.
|
|
@@ -58,6 +58,14 @@ principle-exception questions. List them for the root.
|
|
|
58
58
|
re-dispatches the rest. A finding blocked on human-owned information goes in
|
|
59
59
|
`blocked_findings` with the needed input named — never `remaining_findings`,
|
|
60
60
|
which is reserved for what another dispatch can complete.
|
|
61
|
+
- In `repair`, before returning, self-attack the delta: probe every clause the
|
|
62
|
+
hunks touch for the attack classes Vet's reviewers hunt — race/observation
|
|
63
|
+
windows, identity/alias escapes, durability/ordering gaps,
|
|
64
|
+
platform-capability gaps, unbounded blocking, happy-path-only coverage.
|
|
65
|
+
Close each real exposure inside the same delta or return it in
|
|
66
|
+
`self_attack_exposures` with its bound; never silently drop one. This
|
|
67
|
+
narrows the next Vet round; it never replaces independent review and never
|
|
68
|
+
self-approves the repair.
|
|
61
69
|
|
|
62
70
|
## Output format
|
|
63
71
|
|
|
@@ -75,6 +83,7 @@ technical_decisions: []
|
|
|
75
83
|
human_owned_choices: []
|
|
76
84
|
validation_commands: []
|
|
77
85
|
applicability_disposition: []
|
|
86
|
+
self_attack_exposures: []
|
|
78
87
|
```
|
|
79
88
|
|
|
80
89
|
The root validates the cross-file bundle and persists accepted content.
|
|
@@ -102,7 +102,10 @@ criterion, slice, or proof.
|
|
|
102
102
|
- `$rite-vet` may request one initial pass and one narrow recheck per correction/fingerprint.
|
|
103
103
|
- Label each finding **Critical / Important / Suggestion / Nit / FYI** and include
|
|
104
104
|
the relevant plan or task section, confidence score, and a concrete fix. Do not
|
|
105
|
-
pad the report with praise.
|
|
105
|
+
pad the report with praise. In a recheck, also mark each finding
|
|
106
|
+
`new_failure_mode` or name the already-pinned clause/fingerprint it refines —
|
|
107
|
+
the packet lists prior repairs; the mark makes alias-detection and
|
|
108
|
+
`convergence_pressure` eligibility mechanical.
|
|
106
109
|
- When a dimension has no issue, say "strong: <why>" instead of inventing a
|
|
107
110
|
finding.
|
|
108
111
|
- If a claim cannot be verified, such as blast radius without an index, say so and
|
|
@@ -51,7 +51,9 @@ Before standing the interface, run `devrites-doubt`.
|
|
|
51
51
|
## Done when
|
|
52
52
|
The contract is complete only when **every** field carries a type + optionality + unit,
|
|
53
53
|
**every** success and error status code is enumerated with its error-body shape, the
|
|
54
|
-
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt
|
|
54
|
+
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt under
|
|
55
|
+
`devrites-doubt`'s per-fingerprint bounds and distinct-findings ceiling — a contract
|
|
56
|
+
that resists repair becomes a blocker or human gate, not an endless revise loop), and the
|
|
55
57
|
contract + rationale are recorded in `decisions.md`. A contract that pins only the
|
|
56
58
|
happy-path shape is not done.
|
|
57
59
|
|
|
@@ -27,7 +27,7 @@ code · claiming "this is safe", "this scales", or "this matches the spec".
|
|
|
27
27
|
issues but classify **zero** as actionable, the review is too agreeable. Sharpen the
|
|
28
28
|
prompt or use a fresh reviewer. Accept a clean pass only after a genuine attempt to
|
|
29
29
|
disprove the claim.
|
|
30
|
-
- [ ] **5. STOP**: met a stop condition (only trivial findings,
|
|
30
|
+
- [ ] **5. STOP**: met a stop condition (only trivial findings, no open fingerprint has budget left, the distinct-findings ceiling, or user override). Emit a **binary gate verdict** the orchestrator must clear: **accept** (no valid-&-actionable findings remain) or **reject + the specific required changes**. On reject, the orchestrator loops the wright on those changes before the slice is accepted. Account per finding, not per round: a reject citing a genuinely new defect is progress and the loop continues; a reject re-citing a fingerprint the wright already failed on is no-progress and burns that fingerprint's budget. A finding that only refines a clause a prior cycle already pinned may close as an explicit bounded declared residual. Ceiling: three distinct actionable findings on one decision mean the decision resists repair — classify by decision ownership: human-owned product/risk uncertainty escalates; objective required changes become a technical blocker, never a retry-authorization question.
|
|
31
31
|
|
|
32
32
|
## Deletion-test lens (for "is this abstraction load-bearing?" doubts)
|
|
33
33
|
|
|
@@ -72,7 +72,8 @@ real time. Map the verdict to a `questions.md` entry instead of a synchronous pr
|
|
|
72
72
|
`questions.md` entry with `gate: blocking`, set `state.md` `Status: awaiting_human`,
|
|
73
73
|
fire the `notify:` hook, and STOP. AFK never silently accepts irreversible risk.
|
|
74
74
|
|
|
75
|
-
The
|
|
75
|
+
The same bounds apply in AFK. Once no open fingerprint has budget left or the
|
|
76
|
+
distinct-findings ceiling trips, human-owned uncertainty becomes a blocking
|
|
76
77
|
question; an unresolved objective technical finding becomes `Status: blocked` with its exact
|
|
77
78
|
required changes and `$rite-plan unblock`, regardless of AFK config.
|
|
78
79
|
|
|
@@ -19,6 +19,8 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
19
19
|
IMPLEMENT → smallest complete version; match conventions; devrites-frontend-craft for UI
|
|
20
20
|
VERIFY → writer-safe tests/types/lint; return code + tests
|
|
21
21
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
22
|
+
— dispatch the initial read-only reviews of distinct decisions in parallel
|
|
23
|
+
(independent claims, fresh contexts); wright fixes stay serial — writers share files
|
|
22
24
|
PROVE → root: required build/browser/E2E, then returned-diff/path review; fail-on-red
|
|
23
25
|
RECORD → orchestrator: after green verification, update state.md/evidence.md and
|
|
24
26
|
upsert the authoritative candidate manifest from the actual scoped diff
|
|
@@ -44,7 +44,14 @@ A durable-plan drift abort never repairs the first gap alone:
|
|
|
44
44
|
2. Record each violation as its own `drift.md` entry/fingerprint; one folded
|
|
45
45
|
repair + one batched recheck resolves the set.
|
|
46
46
|
3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
|
|
47
|
-
internally, never hand an intermediate command to the human.
|
|
47
|
+
internally, never hand an intermediate command to the human. When
|
|
48
|
+
consecutive folded repairs keep landing on the same clause set, the
|
|
49
|
+
repair packet's `convergence_pressure` marking applies (see `$rite-plan`
|
|
50
|
+
repair): bounded declared residuals may close refinements of
|
|
51
|
+
already-pinned clauses; a newly surfaced failure mode is never
|
|
52
|
+
residual-eligible. A suspect seam's declare-limitation-or-continue choice
|
|
53
|
+
routes to `$rite-clarify` like any human-owned gate — it is not an
|
|
54
|
+
intermediate command.
|
|
48
55
|
4. Nothing skips or defers silently: every entry ends resolved, human-escalated,
|
|
49
56
|
or fingerprint-exhausted. Execution-only gaps (tests, UX, evidence) get the
|
|
50
57
|
identical path when they surface.
|
|
@@ -83,7 +83,32 @@ Before classifying any Reslice, read `.agents/skills/devrites-lib/reference/stan
|
|
|
83
83
|
touches: which intersected invariants it re-verified, with evidence of no
|
|
84
84
|
correction-created regression. Global re-derivation (ID/edge/HZN counts,
|
|
85
85
|
acyclicity) runs on materialized artifacts at the step-7 gate — the drafter
|
|
86
|
-
never re-derives them by exhaustive search.
|
|
86
|
+
never re-derives them by exhaustive search. It also carries a bounded
|
|
87
|
+
self-attack over the delta (`self_attack_exposures`), catching the shallow
|
|
88
|
+
next-round findings before Vet's dispatch rather than after a full loop.
|
|
89
|
+
Root dispositions every exposure — fold as a finding, accept as a declared
|
|
90
|
+
residual, or reject with reason; none silently drops.
|
|
91
|
+
Packet mechanics: dedupe at assembly — findings with an identical
|
|
92
|
+
required-fix and site set merge into one entry that closes all their
|
|
93
|
+
fingerprints. The packet may carry digest-pinned site excerpts so the
|
|
94
|
+
drafter spot-verifies anchors instead of re-scanning whole files, and root
|
|
95
|
+
may partition findings into anchor-disjoint clusters with one drafter per
|
|
96
|
+
cluster in parallel — findings sharing any anchor or mirrored clause stay
|
|
97
|
+
in one cluster, and each bundle applies independently. A `partial`-
|
|
98
|
+
continuation re-dispatch continues the same packet; it does not advance the
|
|
99
|
+
same-seam counter. Count consecutive repair packets whose findings' cited clause sets overlap
|
|
100
|
+
the immediately previous packet's — the overlap is the seam. At the third
|
|
101
|
+
same-seam packet, mark it `convergence_pressure: true` with the seam named.
|
|
102
|
+
Under pressure the drafter may close a finding marked as a refinement of an
|
|
103
|
+
already-pinned clause by folding an explicit, bounded declared
|
|
104
|
+
residual/limitation into the contract text instead of another precision
|
|
105
|
+
pin — never for a `new_failure_mode` finding. Every finding still gets one
|
|
106
|
+
disposition; none is skipped. A fourth same-seam packet that still carries
|
|
107
|
+
`new_failure_mode` findings means the seam is under-specified, not
|
|
108
|
+
under-repaired: route a declare-limitation-or-continue choice to
|
|
109
|
+
`$rite-clarify`. AFK records the suspect seam in `state.md` and continues
|
|
110
|
+
within budgets — a coverage limitation is a product decision and is never
|
|
111
|
+
auto-declared.
|
|
87
112
|
Bind exact active `.devrites/work/<slug>/` targets and executable contract; after Vet READY, root
|
|
88
113
|
materializes the exact vetted workflow-artifact paths under
|
|
89
114
|
[`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md)
|
|
@@ -32,10 +32,14 @@ A drift event stopped the build. Steps:
|
|
|
32
32
|
3. Update `spec.md` (only the affected sections) and `plan.md`/`tasks.md` to match
|
|
33
33
|
reality. Adjust acceptance criteria if they were wrong.
|
|
34
34
|
4. Mark each `drift.md` entry **resolved** with the resolution + date.
|
|
35
|
-
5. **Self-check the repaired candidate on the delta before
|
|
36
|
-
every invariant the correction touched (acyclic
|
|
37
|
-
bidirectional traceability, Shared contract proof vs
|
|
38
|
-
no correction-created regression)
|
|
35
|
+
5. **Self-check and self-attack the repaired candidate on the delta before
|
|
36
|
+
handoff** — re-verify every invariant the correction touched (acyclic
|
|
37
|
+
dependency graph, bidirectional traceability, Shared contract proof vs
|
|
38
|
+
boundary set, sizing, no correction-created regression), then probe the
|
|
39
|
+
delta against the reviewers' attack classes (race/observation windows,
|
|
40
|
+
alias escapes, ordering gaps, capability gaps, unbounded blocking,
|
|
41
|
+
happy-path-only coverage); fold a fix or a named bounded residual into
|
|
42
|
+
the same pass. Record both in the Plan
|
|
39
43
|
checkpoint; Vet's recheck verifies it rather than rediscovering the defect a
|
|
40
44
|
loop later.
|
|
41
45
|
6. Resume at the corrected slice.
|
|
@@ -77,7 +77,9 @@ Pull these via `Read` when the diff demands them:
|
|
|
77
77
|
Separate contexts prevent one axis from masking the other:
|
|
78
78
|
- Freeze that closed digest and give the same digest to **two** read-only reviewers in
|
|
79
79
|
parallel, each with its own narrow brief and no
|
|
80
|
-
cross-pollination
|
|
80
|
+
cross-pollination — and evaluate the frontend (step 4), security (step 5),
|
|
81
|
+
and performance (step 6) dispatch conditions from this same diff now,
|
|
82
|
+
joining the cohort when applicable rather than dispatching later waves:
|
|
81
83
|
- **Spec axis** → `devrites-spec-reviewer`: "Apply your documented discipline on
|
|
82
84
|
the active feature workspace + diff. Report (a) criteria the spec asked for that
|
|
83
85
|
are missing or partial, (b) behaviour in the diff the spec did not ask for
|
|
@@ -112,17 +114,19 @@ Pull these via `Read` when the diff demands them:
|
|
|
112
114
|
Add only what the dispatched agents could not, then resolve overlaps and
|
|
113
115
|
contradictions before labeling. ([five-axis-review.md](reference/five-axis-review.md)
|
|
114
116
|
documents the axes the code-review agent applies.)
|
|
115
|
-
- **UI feature?**
|
|
117
|
+
- **UI feature?** `devrites-frontend-reviewer` joins the step-3 cohort; apply the **UX rubric**
|
|
116
118
|
([nielsen-heuristics](reference/nielsen-heuristics.md)) and the
|
|
117
119
|
**cognitive-load lens** ([cognitive-load](reference/cognitive-load.md),
|
|
118
120
|
[performance-checklist](reference/performance-checklist.md)). No UI/route/style
|
|
119
121
|
paths: record `Not-applicable: no relevant paths in diff`.
|
|
120
|
-
5. **Security:**
|
|
121
|
-
([security-review](reference/security-review.md))
|
|
122
|
+
5. **Security:** `devrites-security-auditor`
|
|
123
|
+
([security-review](reference/security-review.md)) joins the step-3 cohort when
|
|
124
|
+
input, auth, data,
|
|
122
125
|
secrets, or permissions are in the diff; else `Not-applicable: no relevant paths in diff`.
|
|
123
|
-
6. **Performance:**
|
|
126
|
+
6. **Performance:** `devrites-performance-reviewer`
|
|
124
127
|
([performance-review](reference/performance-review.md),
|
|
125
|
-
[performance-checklist](reference/performance-checklist.md))
|
|
128
|
+
[performance-checklist](reference/performance-checklist.md)) joins the step-3 cohort
|
|
129
|
+
only on a budget or
|
|
126
130
|
hot path; else `Not-applicable: no relevant paths in diff`.
|
|
127
131
|
7. Reconcile and accept only in-scope fixes. Consolidate them into one bounded
|
|
128
132
|
wright correction; never edit source in the reviewing context. Any correction
|
|
@@ -52,7 +52,9 @@ Follow [`reference/phase-contract.md`](reference/phase-contract.md)
|
|
|
52
52
|
|
|
53
53
|
1. read workspace and final diff;
|
|
54
54
|
2. recheck the canonical candidate/bindings and approved repository/CI proof;
|
|
55
|
-
3. dispatch exact proof, spec, test, doubt, and applicable review agents
|
|
55
|
+
3. dispatch exact proof, spec, test, doubt, and applicable review agents in
|
|
56
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md` — independent
|
|
57
|
+
read-only verdicts on one frozen candidate;
|
|
56
58
|
4. reconcile their read-only verdicts against source and immutable evidence;
|
|
57
59
|
5. draft GO/NO-GO `seal.md` with acceptance, tests, decisions, and seven accounts;
|
|
58
60
|
6. write exactly one candidate binding, then run
|
|
@@ -73,9 +73,11 @@ plan declares a root-authored executable workflow file, read
|
|
|
73
73
|
1. **Select depth.** Apply `reference/depth.md` exactly; never skip. Every initial
|
|
74
74
|
pass records an engineering verdict and test-plan coverage. A valid Recovery
|
|
75
75
|
recheck retains prior depth and enters 1b.
|
|
76
|
-
1a. **Independent initial pass.** Freeze candidate and dispatch exact fresh
|
|
77
|
-
read-only plan reviewer
|
|
78
|
-
surfaces and current strategy reviewer after significant Temper
|
|
76
|
+
1a. **Independent initial pass.** Freeze candidate and dispatch the exact fresh
|
|
77
|
+
read-only plan reviewer — plus developer-experience reviewer for developer
|
|
78
|
+
surfaces and the current strategy reviewer after significant Temper — in
|
|
79
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md`; they are
|
|
80
|
+
independent read-only passes on one frozen candidate. Missing
|
|
79
81
|
required account blocks.
|
|
80
82
|
1b. **Recovery recheck.** Require valid return cursor, accepted prior finding,
|
|
81
83
|
exact fingerprint/reproduction, repaired candidate identity, changed
|
|
@@ -89,7 +91,16 @@ plan declares a root-authored executable workflow file, read
|
|
|
89
91
|
changed clause — enumerate dependents via the dep graph and traceability
|
|
90
92
|
refs, not only patched sites. Otherwise record one no-progress outcome. A
|
|
91
93
|
different Critical/Important invariant needs exact evidence and a new
|
|
92
|
-
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open.
|
|
94
|
+
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open. A packet
|
|
95
|
+
marked `convergence_pressure` accepts an explicit, bounded declared
|
|
96
|
+
residual/limitation folded into the contract text as closure for a finding
|
|
97
|
+
marked as a refinement of an already-pinned clause; the recheck may re-raise
|
|
98
|
+
it only by naming a concrete failure path the declaration omits. A
|
|
99
|
+
`new_failure_mode` finding is never residual-eligible. A fold whose
|
|
100
|
+
findings are all Suggestion-or-lower rechecks mechanically at the
|
|
101
|
+
materialization gate — anchors applied, mirrors consistent, invariants
|
|
102
|
+
pass — without a dispatched reviewer; sub-Important findings already
|
|
103
|
+
cannot keep recovery open. Reconcile
|
|
93
104
|
shared artifact/readiness gates and return to caller or next repair.
|
|
94
105
|
2. **Challenge scope.** Apply review-axes §0 and search accepted decisions.
|
|
95
106
|
Harden to the smallest contract-complete plan, using marked topology action.
|
|
@@ -119,7 +130,10 @@ plan declares a root-authored executable workflow file, read
|
|
|
119
130
|
consumer seam, or an explicit no-impact statement. Missing, one-sided,
|
|
120
131
|
duplicated-contract, vague, or non-consuming proof fails closed.
|
|
121
132
|
|
|
122
|
-
Technical gaps are `NEEDS REPLAN` and Plan repair
|
|
133
|
+
Technical gaps are `NEEDS REPLAN` and Plan repair — each finding marks
|
|
134
|
+
itself `new_failure_mode` or names the already-pinned clause/fingerprint
|
|
135
|
+
it refines, making alias-detection and `convergence_pressure` eligibility
|
|
136
|
+
mechanical. Product/risk gaps are
|
|
123
137
|
`NEEDS CLARIFICATION` and Clarify. Neither becomes a Build qid.
|
|
124
138
|
5. **Review axes.** Apply `review-axes.md` through `eng-lenses.md`. Fold verified
|
|
125
139
|
behavior-preserving technical findings; walk only human-owned decisions.
|
|
@@ -59,6 +59,14 @@ principle-exception questions. List them for the root.
|
|
|
59
59
|
re-dispatches the rest. A finding blocked on human-owned information goes in
|
|
60
60
|
`blocked_findings` with the needed input named — never `remaining_findings`,
|
|
61
61
|
which is reserved for what another dispatch can complete.
|
|
62
|
+
- In `repair`, before returning, self-attack the delta: probe every clause the
|
|
63
|
+
hunks touch for the attack classes Vet's reviewers hunt — race/observation
|
|
64
|
+
windows, identity/alias escapes, durability/ordering gaps,
|
|
65
|
+
platform-capability gaps, unbounded blocking, happy-path-only coverage.
|
|
66
|
+
Close each real exposure inside the same delta or return it in
|
|
67
|
+
`self_attack_exposures` with its bound; never silently drop one. This
|
|
68
|
+
narrows the next Vet round; it never replaces independent review and never
|
|
69
|
+
self-approves the repair.
|
|
62
70
|
|
|
63
71
|
## Output format
|
|
64
72
|
|
|
@@ -76,6 +84,7 @@ technical_decisions: []
|
|
|
76
84
|
human_owned_choices: []
|
|
77
85
|
validation_commands: []
|
|
78
86
|
applicability_disposition: []
|
|
87
|
+
self_attack_exposures: []
|
|
79
88
|
```
|
|
80
89
|
|
|
81
90
|
The root validates the cross-file bundle and persists accepted content.
|
|
@@ -102,7 +102,10 @@ criterion, slice, or proof.
|
|
|
102
102
|
- `/rite-vet` may request one initial pass and one narrow recheck per correction/fingerprint.
|
|
103
103
|
- Label each finding **Critical / Important / Suggestion / Nit / FYI** and include
|
|
104
104
|
the relevant plan or task section, confidence score, and a concrete fix. Do not
|
|
105
|
-
pad the report with praise.
|
|
105
|
+
pad the report with praise. In a recheck, also mark each finding
|
|
106
|
+
`new_failure_mode` or name the already-pinned clause/fingerprint it refines —
|
|
107
|
+
the packet lists prior repairs; the mark makes alias-detection and
|
|
108
|
+
`convergence_pressure` eligibility mechanical.
|
|
106
109
|
- When a dimension has no issue, say "strong: <why>" instead of inventing a
|
|
107
110
|
finding.
|
|
108
111
|
- If a claim cannot be verified, such as blast radius without an index, say so and
|
|
@@ -51,7 +51,9 @@ Before standing the interface, run `devrites-doubt`.
|
|
|
51
51
|
## Done when
|
|
52
52
|
The contract is complete only when **every** field carries a type + optionality + unit,
|
|
53
53
|
**every** success and error status code is enumerated with its error-body shape, the
|
|
54
|
-
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt
|
|
54
|
+
`devrites-doubt` verdict is accept (on reject: revise the contract and re-doubt under
|
|
55
|
+
`devrites-doubt`'s per-fingerprint bounds and distinct-findings ceiling — a contract
|
|
56
|
+
that resists repair becomes a blocker or human gate, not an endless revise loop), and the
|
|
55
57
|
contract + rationale are recorded in `decisions.md`. A contract that pins only the
|
|
56
58
|
happy-path shape is not done.
|
|
57
59
|
|
|
@@ -27,7 +27,7 @@ code · claiming "this is safe", "this scales", or "this matches the spec".
|
|
|
27
27
|
issues but classify **zero** as actionable, the review is too agreeable. Sharpen the
|
|
28
28
|
prompt or use a fresh reviewer. Accept a clean pass only after a genuine attempt to
|
|
29
29
|
disprove the claim.
|
|
30
|
-
- [ ] **5. STOP**: met a stop condition (only trivial findings,
|
|
30
|
+
- [ ] **5. STOP**: met a stop condition (only trivial findings, no open fingerprint has budget left, the distinct-findings ceiling, or user override). Emit a **binary gate verdict** the orchestrator must clear: **accept** (no valid-&-actionable findings remain) or **reject + the specific required changes**. On reject, the orchestrator loops the wright on those changes before the slice is accepted. Account per finding, not per round: a reject citing a genuinely new defect is progress and the loop continues; a reject re-citing a fingerprint the wright already failed on is no-progress and burns that fingerprint's budget. A finding that only refines a clause a prior cycle already pinned may close as an explicit bounded declared residual. Ceiling: three distinct actionable findings on one decision mean the decision resists repair — classify by decision ownership: human-owned product/risk uncertainty escalates; objective required changes become a technical blocker, never a retry-authorization question.
|
|
31
31
|
|
|
32
32
|
## Deletion-test lens (for "is this abstraction load-bearing?" doubts)
|
|
33
33
|
|
|
@@ -72,7 +72,8 @@ real time. Map the verdict to a `questions.md` entry instead of a synchronous pr
|
|
|
72
72
|
`questions.md` entry with `gate: blocking`, set `state.md` `Status: awaiting_human`,
|
|
73
73
|
fire the `notify:` hook, and STOP. AFK never silently accepts irreversible risk.
|
|
74
74
|
|
|
75
|
-
The
|
|
75
|
+
The same bounds apply in AFK. Once no open fingerprint has budget left or the
|
|
76
|
+
distinct-findings ceiling trips, human-owned uncertainty becomes a blocking
|
|
76
77
|
question; an unresolved objective technical finding becomes `Status: blocked` with its exact
|
|
77
78
|
required changes and `/rite-plan unblock`, regardless of AFK config.
|
|
78
79
|
|
|
@@ -19,6 +19,8 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
19
19
|
IMPLEMENT → smallest complete version; match conventions; devrites-frontend-craft for UI
|
|
20
20
|
VERIFY → writer-safe tests/types/lint; return code + tests
|
|
21
21
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
22
|
+
— dispatch the initial read-only reviews of distinct decisions in parallel
|
|
23
|
+
(independent claims, fresh contexts); wright fixes stay serial — writers share files
|
|
22
24
|
PROVE → root: required build/browser/E2E, then returned-diff/path review; fail-on-red
|
|
23
25
|
RECORD → orchestrator: after green verification, update state.md/evidence.md and
|
|
24
26
|
upsert the authoritative candidate manifest from the actual scoped diff
|
|
@@ -44,7 +44,14 @@ A durable-plan drift abort never repairs the first gap alone:
|
|
|
44
44
|
2. Record each violation as its own `drift.md` entry/fingerprint; one folded
|
|
45
45
|
repair + one batched recheck resolves the set.
|
|
46
46
|
3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
|
|
47
|
-
internally, never hand an intermediate command to the human.
|
|
47
|
+
internally, never hand an intermediate command to the human. When
|
|
48
|
+
consecutive folded repairs keep landing on the same clause set, the
|
|
49
|
+
repair packet's `convergence_pressure` marking applies (see `/rite-plan`
|
|
50
|
+
repair): bounded declared residuals may close refinements of
|
|
51
|
+
already-pinned clauses; a newly surfaced failure mode is never
|
|
52
|
+
residual-eligible. A suspect seam's declare-limitation-or-continue choice
|
|
53
|
+
routes to `/rite-clarify` like any human-owned gate — it is not an
|
|
54
|
+
intermediate command.
|
|
48
55
|
4. Nothing skips or defers silently: every entry ends resolved, human-escalated,
|
|
49
56
|
or fingerprint-exhausted. Execution-only gaps (tests, UX, evidence) get the
|
|
50
57
|
identical path when they surface.
|
|
@@ -83,7 +83,32 @@ Before classifying any Reslice, read `.omp/skills/devrites-lib/reference/standar
|
|
|
83
83
|
touches: which intersected invariants it re-verified, with evidence of no
|
|
84
84
|
correction-created regression. Global re-derivation (ID/edge/HZN counts,
|
|
85
85
|
acyclicity) runs on materialized artifacts at the step-7 gate — the drafter
|
|
86
|
-
never re-derives them by exhaustive search.
|
|
86
|
+
never re-derives them by exhaustive search. It also carries a bounded
|
|
87
|
+
self-attack over the delta (`self_attack_exposures`), catching the shallow
|
|
88
|
+
next-round findings before Vet's dispatch rather than after a full loop.
|
|
89
|
+
Root dispositions every exposure — fold as a finding, accept as a declared
|
|
90
|
+
residual, or reject with reason; none silently drops.
|
|
91
|
+
Packet mechanics: dedupe at assembly — findings with an identical
|
|
92
|
+
required-fix and site set merge into one entry that closes all their
|
|
93
|
+
fingerprints. The packet may carry digest-pinned site excerpts so the
|
|
94
|
+
drafter spot-verifies anchors instead of re-scanning whole files, and root
|
|
95
|
+
may partition findings into anchor-disjoint clusters with one drafter per
|
|
96
|
+
cluster in parallel — findings sharing any anchor or mirrored clause stay
|
|
97
|
+
in one cluster, and each bundle applies independently. A `partial`-
|
|
98
|
+
continuation re-dispatch continues the same packet; it does not advance the
|
|
99
|
+
same-seam counter. Count consecutive repair packets whose findings' cited clause sets overlap
|
|
100
|
+
the immediately previous packet's — the overlap is the seam. At the third
|
|
101
|
+
same-seam packet, mark it `convergence_pressure: true` with the seam named.
|
|
102
|
+
Under pressure the drafter may close a finding marked as a refinement of an
|
|
103
|
+
already-pinned clause by folding an explicit, bounded declared
|
|
104
|
+
residual/limitation into the contract text instead of another precision
|
|
105
|
+
pin — never for a `new_failure_mode` finding. Every finding still gets one
|
|
106
|
+
disposition; none is skipped. A fourth same-seam packet that still carries
|
|
107
|
+
`new_failure_mode` findings means the seam is under-specified, not
|
|
108
|
+
under-repaired: route a declare-limitation-or-continue choice to
|
|
109
|
+
`/rite-clarify`. AFK records the suspect seam in `state.md` and continues
|
|
110
|
+
within budgets — a coverage limitation is a product decision and is never
|
|
111
|
+
auto-declared.
|
|
87
112
|
Bind exact active `.devrites/work/<slug>/` targets and executable contract; after Vet READY, root
|
|
88
113
|
materializes the exact vetted workflow-artifact paths under
|
|
89
114
|
[`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md)
|
|
@@ -32,10 +32,14 @@ A drift event stopped the build. Steps:
|
|
|
32
32
|
3. Update `spec.md` (only the affected sections) and `plan.md`/`tasks.md` to match
|
|
33
33
|
reality. Adjust acceptance criteria if they were wrong.
|
|
34
34
|
4. Mark each `drift.md` entry **resolved** with the resolution + date.
|
|
35
|
-
5. **Self-check the repaired candidate on the delta before
|
|
36
|
-
every invariant the correction touched (acyclic
|
|
37
|
-
bidirectional traceability, Shared contract proof vs
|
|
38
|
-
no correction-created regression)
|
|
35
|
+
5. **Self-check and self-attack the repaired candidate on the delta before
|
|
36
|
+
handoff** — re-verify every invariant the correction touched (acyclic
|
|
37
|
+
dependency graph, bidirectional traceability, Shared contract proof vs
|
|
38
|
+
boundary set, sizing, no correction-created regression), then probe the
|
|
39
|
+
delta against the reviewers' attack classes (race/observation windows,
|
|
40
|
+
alias escapes, ordering gaps, capability gaps, unbounded blocking,
|
|
41
|
+
happy-path-only coverage); fold a fix or a named bounded residual into
|
|
42
|
+
the same pass. Record both in the Plan
|
|
39
43
|
checkpoint; Vet's recheck verifies it rather than rediscovering the defect a
|
|
40
44
|
loop later.
|
|
41
45
|
6. Resume at the corrected slice.
|
|
@@ -77,7 +77,9 @@ Pull these via `Read` when the diff demands them:
|
|
|
77
77
|
Separate contexts prevent one axis from masking the other:
|
|
78
78
|
- Freeze that closed digest and give the same digest to **two** read-only reviewers in
|
|
79
79
|
parallel, each with its own narrow brief and no
|
|
80
|
-
cross-pollination
|
|
80
|
+
cross-pollination — and evaluate the frontend (step 4), security (step 5),
|
|
81
|
+
and performance (step 6) dispatch conditions from this same diff now,
|
|
82
|
+
joining the cohort when applicable rather than dispatching later waves:
|
|
81
83
|
- **Spec axis** → `devrites-spec-reviewer`: "Apply your documented discipline on
|
|
82
84
|
the active feature workspace + diff. Report (a) criteria the spec asked for that
|
|
83
85
|
are missing or partial, (b) behaviour in the diff the spec did not ask for
|
|
@@ -112,17 +114,19 @@ Pull these via `Read` when the diff demands them:
|
|
|
112
114
|
Add only what the dispatched agents could not, then resolve overlaps and
|
|
113
115
|
contradictions before labeling. ([five-axis-review.md](reference/five-axis-review.md)
|
|
114
116
|
documents the axes the code-review agent applies.)
|
|
115
|
-
- **UI feature?**
|
|
117
|
+
- **UI feature?** `devrites-frontend-reviewer` joins the step-3 cohort; apply the **UX rubric**
|
|
116
118
|
([nielsen-heuristics](reference/nielsen-heuristics.md)) and the
|
|
117
119
|
**cognitive-load lens** ([cognitive-load](reference/cognitive-load.md),
|
|
118
120
|
[performance-checklist](reference/performance-checklist.md)). No UI/route/style
|
|
119
121
|
paths: record `Not-applicable: no relevant paths in diff`.
|
|
120
|
-
5. **Security:**
|
|
121
|
-
([security-review](reference/security-review.md))
|
|
122
|
+
5. **Security:** `devrites-security-auditor`
|
|
123
|
+
([security-review](reference/security-review.md)) joins the step-3 cohort when
|
|
124
|
+
input, auth, data,
|
|
122
125
|
secrets, or permissions are in the diff; else `Not-applicable: no relevant paths in diff`.
|
|
123
|
-
6. **Performance:**
|
|
126
|
+
6. **Performance:** `devrites-performance-reviewer`
|
|
124
127
|
([performance-review](reference/performance-review.md),
|
|
125
|
-
[performance-checklist](reference/performance-checklist.md))
|
|
128
|
+
[performance-checklist](reference/performance-checklist.md)) joins the step-3 cohort
|
|
129
|
+
only on a budget or
|
|
126
130
|
hot path; else `Not-applicable: no relevant paths in diff`.
|
|
127
131
|
7. Reconcile and accept only in-scope fixes. Consolidate them into one bounded
|
|
128
132
|
wright correction; never edit source in the reviewing context. Any correction
|
|
@@ -52,7 +52,9 @@ Follow [`reference/phase-contract.md`](reference/phase-contract.md)
|
|
|
52
52
|
|
|
53
53
|
1. read workspace and final diff;
|
|
54
54
|
2. recheck the canonical candidate/bindings and approved repository/CI proof;
|
|
55
|
-
3. dispatch exact proof, spec, test, doubt, and applicable review agents
|
|
55
|
+
3. dispatch exact proof, spec, test, doubt, and applicable review agents in
|
|
56
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md` — independent
|
|
57
|
+
read-only verdicts on one frozen candidate;
|
|
56
58
|
4. reconcile their read-only verdicts against source and immutable evidence;
|
|
57
59
|
5. draft GO/NO-GO `seal.md` with acceptance, tests, decisions, and seven accounts;
|
|
58
60
|
6. write exactly one candidate binding, then run
|
|
@@ -73,9 +73,11 @@ plan declares a root-authored executable workflow file, read
|
|
|
73
73
|
1. **Select depth.** Apply `reference/depth.md` exactly; never skip. Every initial
|
|
74
74
|
pass records an engineering verdict and test-plan coverage. A valid Recovery
|
|
75
75
|
recheck retains prior depth and enters 1b.
|
|
76
|
-
1a. **Independent initial pass.** Freeze candidate and dispatch exact fresh
|
|
77
|
-
read-only plan reviewer
|
|
78
|
-
surfaces and current strategy reviewer after significant Temper
|
|
76
|
+
1a. **Independent initial pass.** Freeze candidate and dispatch the exact fresh
|
|
77
|
+
read-only plan reviewer — plus developer-experience reviewer for developer
|
|
78
|
+
surfaces and the current strategy reviewer after significant Temper — in
|
|
79
|
+
parallel under `../devrites-lib/reference/parallel-dispatch.md`; they are
|
|
80
|
+
independent read-only passes on one frozen candidate. Missing
|
|
79
81
|
required account blocks.
|
|
80
82
|
1b. **Recovery recheck.** Require valid return cursor, accepted prior finding,
|
|
81
83
|
exact fingerprint/reproduction, repaired candidate identity, changed
|
|
@@ -89,7 +91,16 @@ plan declares a root-authored executable workflow file, read
|
|
|
89
91
|
changed clause — enumerate dependents via the dep graph and traceability
|
|
90
92
|
refs, not only patched sites. Otherwise record one no-progress outcome. A
|
|
91
93
|
different Critical/Important invariant needs exact evidence and a new
|
|
92
|
-
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open.
|
|
94
|
+
fingerprint; a Suggestion, Nit, or FYI cannot keep recovery open. A packet
|
|
95
|
+
marked `convergence_pressure` accepts an explicit, bounded declared
|
|
96
|
+
residual/limitation folded into the contract text as closure for a finding
|
|
97
|
+
marked as a refinement of an already-pinned clause; the recheck may re-raise
|
|
98
|
+
it only by naming a concrete failure path the declaration omits. A
|
|
99
|
+
`new_failure_mode` finding is never residual-eligible. A fold whose
|
|
100
|
+
findings are all Suggestion-or-lower rechecks mechanically at the
|
|
101
|
+
materialization gate — anchors applied, mirrors consistent, invariants
|
|
102
|
+
pass — without a dispatched reviewer; sub-Important findings already
|
|
103
|
+
cannot keep recovery open. Reconcile
|
|
93
104
|
shared artifact/readiness gates and return to caller or next repair.
|
|
94
105
|
2. **Challenge scope.** Apply review-axes §0 and search accepted decisions.
|
|
95
106
|
Harden to the smallest contract-complete plan, using marked topology action.
|
|
@@ -119,7 +130,10 @@ plan declares a root-authored executable workflow file, read
|
|
|
119
130
|
consumer seam, or an explicit no-impact statement. Missing, one-sided,
|
|
120
131
|
duplicated-contract, vague, or non-consuming proof fails closed.
|
|
121
132
|
|
|
122
|
-
Technical gaps are `NEEDS REPLAN` and Plan repair
|
|
133
|
+
Technical gaps are `NEEDS REPLAN` and Plan repair — each finding marks
|
|
134
|
+
itself `new_failure_mode` or names the already-pinned clause/fingerprint
|
|
135
|
+
it refines, making alias-detection and `convergence_pressure` eligibility
|
|
136
|
+
mechanical. Product/risk gaps are
|
|
123
137
|
`NEEDS CLARIFICATION` and Clarify. Neither becomes a Build qid.
|
|
124
138
|
5. **Review axes.** Apply `review-axes.md` through `eng-lenses.md`. Fold verified
|
|
125
139
|
behavior-preserving technical findings; walk only human-owned decisions.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devrites",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.4",
|
|
4
4
|
"description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code and Codex",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://github.com/ViktorsBaikers/DevRites#readme",
|