devrites 3.2.26 → 3.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [3.2.27](https://github.com/ViktorsBaikers/DevRites/compare/v3.2.26...v3.2.27) (2026-07-29)
6
+
7
+ ### Fixed
8
+
9
+ * **rite:** separate recovery causes from symptoms ([c01f516](https://github.com/ViktorsBaikers/DevRites/commit/c01f5164ce349e5caad6ce450cfa6d76c7ce522b))
10
+
5
11
  ## [3.2.26](https://github.com/ViktorsBaikers/DevRites/compare/v3.2.25...v3.2.26) (2026-07-29)
6
12
 
7
13
  ### Fixed
package/README.md CHANGED
@@ -25,7 +25,7 @@ final commit, push, and tag, and it requires a typed `GO` confirmation.
25
25
  Unattended runs may create local WIP checkpoint commits along the way, but only
26
26
  Ship collapses and pushes them.
27
27
 
28
- **Status:** [`v3.2.26`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v3.2.26): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
28
+ **Status:** [`v3.2.27`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v3.2.27): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
29
29
 
30
30
  ## Quick start
31
31
 
@@ -2,8 +2,10 @@
2
2
 
3
3
  ## Classify one causal fingerprint
4
4
 
5
- Use one class per normalized root cause. A class changes only when new evidence changes
6
- the diagnosis:
5
+ Fingerprint the causal diagnosis, never the failing test or symptom. Reuse it while
6
+ plausible. If a discriminating fix proves the cause absent but the symptom remains,
7
+ preserve that diagnosis as a dead end and classify a new fingerprint. Failure alone
8
+ never resets a budget.
7
9
 
8
10
  - `intent_gap`: desired behavior, scope, policy, or risk choice is unsettled.
9
11
  - `spec_gap`: an acceptance outcome or product decision is missing.
@@ -20,11 +22,9 @@ Ask the engine for the canonical owner and action:
20
22
  devrites-engine recovery route <class>
21
23
  ```
22
24
 
23
- Follow the `recovery-route/v1` result. `humanPause: true` routes an unresolved intent or
24
- spec choice through Clarify. Technical routes stay agent-owned: repair the implementation
25
- or proof tool, normalize the environment, or repair the plan without asking permission to
26
- retry. A credential, external quota, irreversible action, or user-owned process that only
27
- the human can handle gets an exact human-intervention gate; it is not retry authorization.
25
+ Follow `recovery-route/v1`. `humanPause: true` routes unresolved intent/spec through
26
+ Clarify. Technical routes stay agent-owned. Gate only an exact human credential, quota,
27
+ irreversible action, or user-owned process—never retry authorization.
28
28
 
29
29
  Record the class with every new failed attempt and green clear:
30
30
 
@@ -33,9 +33,9 @@ errors: `devrites-api-interface`), then split into a backend slice (can land wit
33
33
  stub consumer) and a frontend slice (can land against a mock/real contract).
34
34
 
35
35
  ## unblock
36
- A `/rite-prove` failure can't be fixed inside the current slice. Capture the blocker in
37
- `state.md`, decide: route around it (reorder), shrink the slice (reslice), or escalate
38
- to the user (if it changes scope). Don't loop on the same failing approach.
36
+ An exhausted fingerprint blocks diagnosis, not symptom. Route around/reslice; escalate
37
+ only for scope change. If proof removed that cause but symptom remains, keep the dead
38
+ end and plan a new diagnosis/proof fingerprint. Never clear/reuse old one.
39
39
 
40
40
  ## Always
41
41
  Update `state.md` (phase, next step) and append a dated line to `decisions.md`
@@ -2,8 +2,10 @@
2
2
 
3
3
  ## Classify one causal fingerprint
4
4
 
5
- Use one class per normalized root cause. A class changes only when new evidence changes
6
- the diagnosis:
5
+ Fingerprint the causal diagnosis, never the failing test or symptom. Reuse it while
6
+ plausible. If a discriminating fix proves the cause absent but the symptom remains,
7
+ preserve that diagnosis as a dead end and classify a new fingerprint. Failure alone
8
+ never resets a budget.
7
9
 
8
10
  - `intent_gap`: desired behavior, scope, policy, or risk choice is unsettled.
9
11
  - `spec_gap`: an acceptance outcome or product decision is missing.
@@ -20,11 +22,9 @@ Ask the engine for the canonical owner and action:
20
22
  devrites-engine recovery route <class>
21
23
  ```
22
24
 
23
- Follow the `recovery-route/v1` result. `humanPause: true` routes an unresolved intent or
24
- spec choice through Clarify. Technical routes stay agent-owned: repair the implementation
25
- or proof tool, normalize the environment, or repair the plan without asking permission to
26
- retry. A credential, external quota, irreversible action, or user-owned process that only
27
- the human can handle gets an exact human-intervention gate; it is not retry authorization.
25
+ Follow `recovery-route/v1`. `humanPause: true` routes unresolved intent/spec through
26
+ Clarify. Technical routes stay agent-owned. Gate only an exact human credential, quota,
27
+ irreversible action, or user-owned process—never retry authorization.
28
28
 
29
29
  Record the class with every new failed attempt and green clear:
30
30
 
@@ -33,9 +33,9 @@ errors: `devrites-api-interface`), then split into a backend slice (can land wit
33
33
  stub consumer) and a frontend slice (can land against a mock/real contract).
34
34
 
35
35
  ## unblock
36
- A `/rite-prove` failure can't be fixed inside the current slice. Capture the blocker in
37
- `state.md`, decide: route around it (reorder), shrink the slice (reslice), or escalate
38
- to the user (if it changes scope). Don't loop on the same failing approach.
36
+ An exhausted fingerprint blocks diagnosis, not symptom. Route around/reslice; escalate
37
+ only for scope change. If proof removed that cause but symptom remains, keep the dead
38
+ end and plan a new diagnosis/proof fingerprint. Never clear/reuse old one.
39
39
 
40
40
  ## Always
41
41
  Update `state.md` (phase, next step) and append a dated line to `decisions.md`
@@ -2,8 +2,10 @@
2
2
 
3
3
  ## Classify one causal fingerprint
4
4
 
5
- Use one class per normalized root cause. A class changes only when new evidence changes
6
- the diagnosis:
5
+ Fingerprint the causal diagnosis, never the failing test or symptom. Reuse it while
6
+ plausible. If a discriminating fix proves the cause absent but the symptom remains,
7
+ preserve that diagnosis as a dead end and classify a new fingerprint. Failure alone
8
+ never resets a budget.
7
9
 
8
10
  - `intent_gap`: desired behavior, scope, policy, or risk choice is unsettled.
9
11
  - `spec_gap`: an acceptance outcome or product decision is missing.
@@ -20,11 +22,9 @@ Ask the engine for the canonical owner and action:
20
22
  devrites-engine recovery route <class>
21
23
  ```
22
24
 
23
- Follow the `recovery-route/v1` result. `humanPause: true` routes an unresolved intent or
24
- spec choice through Clarify. Technical routes stay agent-owned: repair the implementation
25
- or proof tool, normalize the environment, or repair the plan without asking permission to
26
- retry. A credential, external quota, irreversible action, or user-owned process that only
27
- the human can handle gets an exact human-intervention gate; it is not retry authorization.
25
+ Follow `recovery-route/v1`. `humanPause: true` routes unresolved intent/spec through
26
+ Clarify. Technical routes stay agent-owned. Gate only an exact human credential, quota,
27
+ irreversible action, or user-owned process—never retry authorization.
28
28
 
29
29
  Record the class with every new failed attempt and green clear:
30
30
 
@@ -33,9 +33,9 @@ errors: `devrites-api-interface`), then split into a backend slice (can land wit
33
33
  stub consumer) and a frontend slice (can land against a mock/real contract).
34
34
 
35
35
  ## unblock
36
- A `$rite-prove` failure can't be fixed inside the current slice. Capture the blocker in
37
- `state.md`, decide: route around it (reorder), shrink the slice (reslice), or escalate
38
- to the user (if it changes scope). Don't loop on the same failing approach.
36
+ An exhausted fingerprint blocks diagnosis, not symptom. Route around/reslice; escalate
37
+ only for scope change. If proof removed that cause but symptom remains, keep the dead
38
+ end and plan a new diagnosis/proof fingerprint. Never clear/reuse old one.
39
39
 
40
40
  ## Always
41
41
  Update `state.md` (phase, next step) and append a dated line to `decisions.md`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "3.2.26",
3
+ "version": "3.2.27",
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",