devrites 4.0.5 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/pack/.claude/agents/devrites-plan-reviewer.md +7 -2
  4. package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +12 -6
  5. package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +4 -2
  6. package/pack/.claude/skills/devrites-lib/reference/standards/README.md +1 -0
  7. package/pack/.claude/skills/devrites-lib/reference/standards/one-shot-actions.md +46 -0
  8. package/pack/.claude/skills/rite-prove/SKILL.md +9 -0
  9. package/pack/.claude/skills/rite-prove/reference/failure-triage.md +7 -2
  10. package/pack/.claude/skills/rite-vet/SKILL.md +7 -1
  11. package/pack/.claude/skills/rite-vet/reference/artifacts.md +6 -0
  12. package/pack/generated/claude/agents/devrites-plan-reviewer.md +7 -2
  13. package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +12 -6
  14. package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +4 -2
  15. package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +1 -0
  16. package/pack/generated/claude/skills/devrites-lib/reference/standards/one-shot-actions.md +46 -0
  17. package/pack/generated/claude/skills/rite-prove/SKILL.md +9 -0
  18. package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +7 -2
  19. package/pack/generated/claude/skills/rite-vet/SKILL.md +7 -1
  20. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +6 -0
  21. package/pack/generated/codex/agents/devrites-plan-reviewer.toml +7 -2
  22. package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +12 -6
  23. package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +4 -2
  24. package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +1 -0
  25. package/pack/generated/codex/skills/devrites-lib/reference/standards/one-shot-actions.md +46 -0
  26. package/pack/generated/codex/skills/rite-prove/SKILL.md +9 -0
  27. package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +7 -2
  28. package/pack/generated/codex/skills/rite-vet/SKILL.md +7 -1
  29. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +6 -0
  30. 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
+ ## [4.0.6](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.5...v4.0.6) (2026-08-07)
6
+
7
+ ### Fixed
8
+
9
+ * **rite:** gate one-shot evidence retention ([621a549](https://github.com/ViktorsBaikers/DevRites/commit/621a549acdf9ec2a0d427b829b0df8852502380d))
10
+
5
11
  ## [4.0.5](https://github.com/ViktorsBaikers/DevRites/compare/v4.0.4...v4.0.5) (2026-08-07)
6
12
 
7
13
  ### Fixed
package/README.md CHANGED
@@ -28,7 +28,7 @@ project-conventional push, tag, or PR action, and archive the workspace.
28
28
  Unattended runs may create local WIP checkpoint commits along the way, but they
29
29
  remain local unless Ship's disclosed plan includes an approved remote action.
30
30
 
31
- **Status:** [`v4.0.5`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.0.5): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
31
+ **Status:** [`v4.0.6`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v4.0.6): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
32
32
 
33
33
  This is the latest published release; `main` may contain unreleased work.
34
34
 
@@ -55,7 +55,11 @@ line, and then assign the band. Do not choose a score and justify it afterward:
55
55
  model changes conservatively. Every destructive step needs a rollback.
56
56
  7. **Failure-mode coverage:** for each new codepath, find a realistic failure such
57
57
  as a timeout, nil value, race, or stale state. A silent failure with **no test AND
58
- no error handling** is a critical gap.
58
+ no error handling** is a critical gap. For every consumptive action under
59
+ `one-shot-actions.md`, require durable bounded trust-safe evidence for every
60
+ terminal path plus unknown-well-formed, malformed/hostile, and cleanup-survival
61
+ fixtures. Missing evidence completeness is `broken`: the plan must not consume
62
+ the action to discover diagnostics that cleanup can erase.
59
63
 
60
64
  ## Confidence calibration + verification gate (mandatory)
61
65
  Give every finding a **confidence score from 1 to 10** and a quoted source:
@@ -73,7 +77,8 @@ Band each dimension `strong` / `adequate` / `thin` / `broken` (`broken` means
73
77
  Critical; `thin` means Important). For a borderline dimension, sample twice and
74
78
  take the **lower** band. The verdict uses the weakest dimension, not an average.
75
79
  Pass only when every dimension is at least `adequate`, no critical failure-mode gap
76
- remains, the shared-contract check passes, and the ID-and-meaning map contains no orphaned
80
+ remains, every consumptive action passes one-shot evidence completeness, the
81
+ shared-contract check passes, and the ID-and-meaning map contains no orphaned
77
82
  criterion, slice, or proof.
78
83
 
79
84
  ## Rules
@@ -18,10 +18,14 @@ has no clear next move.
18
18
  1. **Build the feedback loop:** create a fast, deterministic, agent-runnable pass/fail
19
19
  signal. Spend most of the investigation here.
20
20
  See [build-the-loop.md](reference/build-the-loop.md).
21
- 2. **Reproduce:** run the loop. Confirm the failure matches the user's report
22
- (not a nearby failure); capture the **exact error text**; confirm
23
- reproducibility (or a high enough repro rate for flaky bugs). Do not proceed
24
- without reproduction.
21
+ 2. **Reproduce:** run the loop for a repeatable action. Confirm the failure matches
22
+ the user's report (not a nearby failure); capture the **exact error text**;
23
+ confirm reproducibility (or a high enough repro rate for flaky bugs). For a
24
+ consumptive action under
25
+ [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md),
26
+ the retained bounded artifact
27
+ is the reproduction input and the action MUST NOT be rerun during diagnosis.
28
+ Do not proceed without one of those reproduction inputs.
25
29
  3. **Ranked hypotheses (3-5, falsifiable):** generate the list before testing
26
30
  any of them. Each must state a prediction.
27
31
  **Completion:** 3-5 distinct hypotheses each state an observable prediction.
@@ -51,8 +55,10 @@ has no clear next move.
51
55
  - **Do NOT loosen / delete a failing assertion** to get green: check whether
52
56
  it's drift first (route via `/rite-plan repair`).
53
57
  - **Do NOT hide flakiness** with sleeps / retries: characterize it.
54
- - **Re-run the original loop after the fix.** The minimized regression test is not
55
- enough; prove the user-visible failure no longer reproduces.
58
+ - **Re-run the original loop after the fix when it is repeatable.** For a
59
+ consumptive action, first re-vet evidence completeness and obtain any required
60
+ fresh authorization; offline fixtures remain mandatory but cannot authorize the
61
+ real attempt.
56
62
  - **Classify before routing** with
57
63
  [cleanup-and-classify.md](reference/cleanup-and-classify.md).
58
64
  - **Durably record class and rationale** in `decisions.md` and the applicable
@@ -14,7 +14,8 @@ record the dead end and classify anew. Failure alone never resets the budget.
14
14
  - `preexisting`: the same failure exists outside the candidate delta. Record the baseline and fix it only when it blocks acceptance.
15
15
  - `not_a_defect`: the observation matches current accepted authority. Record that authority and continue.
16
16
 
17
- Only human credentials/quotas/actions or irreversible work pause; never ask to retry.
17
+ Only human credentials/quotas/actions, irreversible work, or fresh authorization
18
+ required by a consumptive action pause; never ask for a blind retry.
18
19
 
19
20
  Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
20
21
  or `## Dead ends`. Use one stable causal fingerprint shaped as `<affected
@@ -30,7 +31,8 @@ file or command.
30
31
 
31
32
  ## Cleanup checklist: required before declaring done
32
33
 
33
- - [ ] Original repro no longer reproduces (re-run the Phase 1 loop).
34
+ - [ ] Original repeatable repro no longer reproduces, or the consumptive action's
35
+ offline regression and evidence-completeness fixtures pass without a rerun.
34
36
  - [ ] Regression test passes (or absence of seam is documented).
35
37
  - [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix).
36
38
  - [ ] Throwaway harnesses deleted (or moved to a clearly marked debug location).
@@ -36,6 +36,7 @@ topic's owner.
36
36
  | `context-hygiene.md` | Choosing `/clear`, `/compact`, or a handoff. |
37
37
  | `anti-patterns.md` | A pack-wide rationalization or red flag appears. |
38
38
  | `afk-hitl.md` | A pause, question, resume, or AFK decision is possible. |
39
+ | `one-shot-actions.md` | A proof/action may be attempted once, needs fresh retry authorization, consumes external state/quota, or can delete its own failure evidence. |
39
40
  | `tooling.md` | Structural lookup, current external facts, or architecture memory is needed. |
40
41
  | `skill-authoring.md` | Creating, editing, routing, evaluating, or pruning a DevRites skill. |
41
42
  | `definition-of-done.md` | Prove, Seal, Ship, or Quick must decide whether work is finished. |
@@ -0,0 +1,46 @@
1
+ # One-shot evidence completeness
2
+
3
+ An action is **consumptive** when a failed attempt is not safely equivalent to a
4
+ normal rerun. This includes commands limited to one attempt, commands whose retry
5
+ needs fresh human authorization, actions that spend external quota or mutate
6
+ privileged/external state so a rerun is not equivalent, and actions whose cleanup
7
+ can destroy the failure state needed for diagnosis. Successful cleanup does not
8
+ make a consumptive action repeatable.
9
+
10
+ ## Pre-attempt gate
11
+
12
+ Before Vet can emit READY, and again immediately before Prove executes the action,
13
+ the approved `test-plan.md` must bind all of the following:
14
+
15
+ 1. **Durable retention:** an operator-controlled evidence artifact outside the
16
+ disposable runtime/cleanup tree, created before the first side effect, written
17
+ durably before cleanup, least-privilege, and bounded by schema, size, and
18
+ cardinality.
19
+ 2. **Trust-safe diagnostics:** known semantic values use the normal validator;
20
+ unknown but lexically well-formed non-secret values survive in bounded sanitized
21
+ fields; malformed, hostile, or secret-bearing values become fixed reason codes
22
+ rather than retained raw input.
23
+ 3. **Terminal completeness:** every success, nonzero exit, rejection, timeout,
24
+ signal, and cleanup failure either names the retained artifact or proves that
25
+ no diagnostic state exists. Failure retention preserves the original safe
26
+ failure family and cause through clean convergence.
27
+ 4. **Discriminating proof:** fixtures cover success, a known failure, an unknown
28
+ well-formed failure, malformed/hostile input, and cleanup after failure. They
29
+ prove cleanup cannot delete or overwrite the retained failure evidence.
30
+ 5. **Recovery sufficiency:** the retained bounded evidence is enough to choose an
31
+ offline correction or a truthful terminal classification without consuming
32
+ another attempt.
33
+
34
+ Missing or stale evidence is an agent-owned technical plan gap: Vet returns
35
+ `NEEDS REPLAN`, and Prove returns to Vet inline without executing the action. Never
36
+ weaken the trust validator or spend the attempt merely to discover what the
37
+ retention design should have preserved.
38
+
39
+ ## Failure handling
40
+
41
+ After a consumptive action fails, its retained artifact is the reproduction input.
42
+ Do not rerun the action during triage. A new attempt is admissible only after the
43
+ evidence identifies a changed invariant or external condition, the affected plan
44
+ and fixtures are re-vetted, and any required fresh authorization is obtained. If
45
+ the attempt ran without complete retention, stop with the observed technical
46
+ blocker; a blind retry cannot manufacture the destroyed evidence.
@@ -38,6 +38,8 @@ Pull these via `Read` when relevant:
38
38
  webhook / config / error messages / getting-started): **measure** the DX scorecard (run the flow,
39
39
  measure time-to-hello-world, and capture verbatim error text), rather than asserting it.
40
40
  - `definition-of-done.md`: acceptance, proof, gates, scope, rollback/docs.
41
+ - `one-shot-actions.md`: pre-attempt evidence completeness and no-rerun handling for
42
+ consumptive proof actions.
41
43
 
42
44
 
43
45
  ## Operating rules
@@ -107,6 +109,13 @@ failure is a blocker; this Upgrade admission never authorizes source or test cha
107
109
  substituted commands, malformed manifests, zero-test/skipped/filtered results used as
108
110
  behavioral proof, success inferred only from exit status, and any source drift. Static
109
111
  gates prove only their named static criterion.
112
+ Immediately before any consumptive action, apply `one-shot-actions.md` to the
113
+ live candidate: require the vetted retained-artifact identity, bounds,
114
+ sanitization, terminal-path fixtures, and cleanup-survival proof. A missing,
115
+ stale, or disposable-only evidence surface returns to Vet inline and consumes
116
+ no attempt. Record the admitted artifact identity before execution. After a
117
+ failed consumptive action, triage from that artifact; never reproduce it by
118
+ rerunning the action.
110
119
  4. **UI feature?** The root applies the browser proof ladder with
111
120
  `design-brief.md`, `references.md`, the requested routes, browser harness, and
112
121
  allowed scratch path:
@@ -4,7 +4,10 @@ When a test/build/runtime/browser check fails, triage before fixing. Delegates t
4
4
  loop to `devrites-debug-recovery`.
5
5
 
6
6
  ## Triage ladder
7
- 1. **Reproduce:** run the failing command again; capture the exact error (quote it).
7
+ 1. **Reproduce:** for a repeatable command, run it again and capture the exact
8
+ error (quote it). For a consumptive action under
9
+ [`one-shot-actions.md`](../../devrites-lib/reference/standards/one-shot-actions.md),
10
+ never rerun it: use the retained bounded artifact as the reproduction input.
8
11
  2. **Classify** the failure:
9
12
  - test is right, code is wrong → fix the code (in scope).
10
13
  - test is wrong/outdated → that may be **spec drift** (acceptance criteria wrong).
@@ -14,7 +17,9 @@ loop to `devrites-debug-recovery`.
14
17
  3. **Isolate:** minimize to the smallest failing case; bisect the diff if needed.
15
18
  4. **Fix within scope:** the current slice/feature only. If the fix reaches outside
16
19
  scope, stop and record a blocker in `state.md` (then `/rite-plan unblock`).
17
- 5. **Re-run** the same command; confirm green; record both attempts in `evidence.md`.
20
+ 5. **Re-run** the same command when it is repeatable; confirm green and record both
21
+ attempts in `evidence.md`. A consumptive action needs re-vetted evidence
22
+ completeness and any fresh authorization before a new attempt.
18
23
 
19
24
  ## Rules
20
25
  - Quote the real error text; don't paraphrase it away.
@@ -20,7 +20,8 @@ but every profile keeps the exact plan-reviewer gate.
20
20
  Pull the standard named by the active axis: `principles.md`, `patterns.md`,
21
21
  `coding-style.md`, `testing.md`, `spec-grammar.md`, `performance.md`,
22
22
  `error-handling.md`, `development-workflow.md`, `afk-hitl.md`,
23
- `developer-experience.md`, `elicitation.md`, and `definition-of-done.md`.
23
+ `one-shot-actions.md`, `developer-experience.md`, `elicitation.md`, and
24
+ `definition-of-done.md`.
24
25
 
25
26
 
26
27
  ## Operating rules
@@ -97,6 +98,11 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
97
98
  unmeasurable conflict = gap. Record complete SHA-256 provenance inputs. Require
98
99
  every behavioral mapping to name a positive,
99
100
  discriminating assertion and decisive signal, not merely a command or expected exit zero.
101
+ Identify every consumptive action under `one-shot-actions.md`. Before admitting
102
+ it, require the exact durable retention surface, trust-safe diagnostic schema,
103
+ cleanup ordering, terminal-path coverage, and discriminating fixtures in
104
+ `test-plan.md`. Missing or stale one-shot evidence completeness is a technical
105
+ preflight gap; do not spend the action to learn what cleanup would erase.
100
106
  Preflight observes; it need not make future behavior pass.
101
107
  2c. **Implementation-readiness audit.** Goal-backward map every REQ/AC/NFR, interaction,
102
108
  edge/prohibition, and decision-coverage row to a slice and executable proof. Verify
@@ -35,6 +35,7 @@ Inventory/currentness: <pass/gaps> · slice order/independence: <pass/gaps> ·
35
35
  UX/spec/architecture: <pass/n-a/gaps> · operations/rollout/rollback: <pass/n-a/gaps>
36
36
 
37
37
  Shared contract proof: <pass | gap: missing/one-sided/duplicated-contract/vague/non-consuming>
38
+ One-shot evidence completeness: <n/a | pass: action + retained artifact + bounds/sanitization + cleanup-survival fixtures | gap: exact missing proof>
38
39
 
39
40
  ## 3. Axis findings (floor-gated)
40
41
  | Axis | Floor band | Findings (sev · confidence) |
@@ -94,6 +95,11 @@ Commands in this durable artifact are portable repository commands: no RTK or lo
94
95
  aliases, user-specific absolute paths, or temporary proof trees. Evidence records
95
96
  the command actually executed.
96
97
 
98
+ ## Consumptive action gates
99
+ | Action | Why one-shot/consumptive | Retained artifact | Bounds + sanitization | Terminal-path fixtures | Cleanup survival | Retry authority |
100
+ |---|---|---|---|---|---|---|
101
+ | <exact approved action or n/a> | <one attempt/quota/state/evidence deletion> | <durable operator-controlled path/schema> | <size/cardinality + known/unknown/malformed handling> | <success/known/unknown/hostile> | <assertion> | <none/fresh human authorization> |
102
+
97
103
  Every behavioral row names a positive, discriminating assertion and the decisive output it
98
104
  produces. A command or expected exit zero alone is not a behavioral assertion; static gates
99
105
  prove only their named static criterion.
@@ -55,7 +55,11 @@ line, and then assign the band. Do not choose a score and justify it afterward:
55
55
  model changes conservatively. Every destructive step needs a rollback.
56
56
  7. **Failure-mode coverage:** for each new codepath, find a realistic failure such
57
57
  as a timeout, nil value, race, or stale state. A silent failure with **no test AND
58
- no error handling** is a critical gap.
58
+ no error handling** is a critical gap. For every consumptive action under
59
+ `one-shot-actions.md`, require durable bounded trust-safe evidence for every
60
+ terminal path plus unknown-well-formed, malformed/hostile, and cleanup-survival
61
+ fixtures. Missing evidence completeness is `broken`: the plan must not consume
62
+ the action to discover diagnostics that cleanup can erase.
59
63
 
60
64
  ## Confidence calibration + verification gate (mandatory)
61
65
  Give every finding a **confidence score from 1 to 10** and a quoted source:
@@ -73,7 +77,8 @@ Band each dimension `strong` / `adequate` / `thin` / `broken` (`broken` means
73
77
  Critical; `thin` means Important). For a borderline dimension, sample twice and
74
78
  take the **lower** band. The verdict uses the weakest dimension, not an average.
75
79
  Pass only when every dimension is at least `adequate`, no critical failure-mode gap
76
- remains, the shared-contract check passes, and the ID-and-meaning map contains no orphaned
80
+ remains, every consumptive action passes one-shot evidence completeness, the
81
+ shared-contract check passes, and the ID-and-meaning map contains no orphaned
77
82
  criterion, slice, or proof.
78
83
 
79
84
  ## Rules
@@ -18,10 +18,14 @@ has no clear next move.
18
18
  1. **Build the feedback loop:** create a fast, deterministic, agent-runnable pass/fail
19
19
  signal. Spend most of the investigation here.
20
20
  See [build-the-loop.md](reference/build-the-loop.md).
21
- 2. **Reproduce:** run the loop. Confirm the failure matches the user's report
22
- (not a nearby failure); capture the **exact error text**; confirm
23
- reproducibility (or a high enough repro rate for flaky bugs). Do not proceed
24
- without reproduction.
21
+ 2. **Reproduce:** run the loop for a repeatable action. Confirm the failure matches
22
+ the user's report (not a nearby failure); capture the **exact error text**;
23
+ confirm reproducibility (or a high enough repro rate for flaky bugs). For a
24
+ consumptive action under
25
+ [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md),
26
+ the retained bounded artifact
27
+ is the reproduction input and the action MUST NOT be rerun during diagnosis.
28
+ Do not proceed without one of those reproduction inputs.
25
29
  3. **Ranked hypotheses (3-5, falsifiable):** generate the list before testing
26
30
  any of them. Each must state a prediction.
27
31
  **Completion:** 3-5 distinct hypotheses each state an observable prediction.
@@ -51,8 +55,10 @@ has no clear next move.
51
55
  - **Do NOT loosen / delete a failing assertion** to get green: check whether
52
56
  it's drift first (route via `/rite-plan repair`).
53
57
  - **Do NOT hide flakiness** with sleeps / retries: characterize it.
54
- - **Re-run the original loop after the fix.** The minimized regression test is not
55
- enough; prove the user-visible failure no longer reproduces.
58
+ - **Re-run the original loop after the fix when it is repeatable.** For a
59
+ consumptive action, first re-vet evidence completeness and obtain any required
60
+ fresh authorization; offline fixtures remain mandatory but cannot authorize the
61
+ real attempt.
56
62
  - **Classify before routing** with
57
63
  [cleanup-and-classify.md](reference/cleanup-and-classify.md).
58
64
  - **Durably record class and rationale** in `decisions.md` and the applicable
@@ -14,7 +14,8 @@ record the dead end and classify anew. Failure alone never resets the budget.
14
14
  - `preexisting`: the same failure exists outside the candidate delta. Record the baseline and fix it only when it blocks acceptance.
15
15
  - `not_a_defect`: the observation matches current accepted authority. Record that authority and continue.
16
16
 
17
- Only human credentials/quotas/actions or irreversible work pause; never ask to retry.
17
+ Only human credentials/quotas/actions, irreversible work, or fresh authorization
18
+ required by a consumptive action pause; never ask for a blind retry.
18
19
 
19
20
  Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
20
21
  or `## Dead ends`. Use one stable causal fingerprint shaped as `<affected
@@ -30,7 +31,8 @@ file or command.
30
31
 
31
32
  ## Cleanup checklist: required before declaring done
32
33
 
33
- - [ ] Original repro no longer reproduces (re-run the Phase 1 loop).
34
+ - [ ] Original repeatable repro no longer reproduces, or the consumptive action's
35
+ offline regression and evidence-completeness fixtures pass without a rerun.
34
36
  - [ ] Regression test passes (or absence of seam is documented).
35
37
  - [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix).
36
38
  - [ ] Throwaway harnesses deleted (or moved to a clearly marked debug location).
@@ -36,6 +36,7 @@ topic's owner.
36
36
  | `context-hygiene.md` | Choosing `/clear`, `/compact`, or a handoff. |
37
37
  | `anti-patterns.md` | A pack-wide rationalization or red flag appears. |
38
38
  | `afk-hitl.md` | A pause, question, resume, or AFK decision is possible. |
39
+ | `one-shot-actions.md` | A proof/action may be attempted once, needs fresh retry authorization, consumes external state/quota, or can delete its own failure evidence. |
39
40
  | `tooling.md` | Structural lookup, current external facts, or architecture memory is needed. |
40
41
  | `skill-authoring.md` | Creating, editing, routing, evaluating, or pruning a DevRites skill. |
41
42
  | `definition-of-done.md` | Prove, Seal, Ship, or Quick must decide whether work is finished. |
@@ -0,0 +1,46 @@
1
+ # One-shot evidence completeness
2
+
3
+ An action is **consumptive** when a failed attempt is not safely equivalent to a
4
+ normal rerun. This includes commands limited to one attempt, commands whose retry
5
+ needs fresh human authorization, actions that spend external quota or mutate
6
+ privileged/external state so a rerun is not equivalent, and actions whose cleanup
7
+ can destroy the failure state needed for diagnosis. Successful cleanup does not
8
+ make a consumptive action repeatable.
9
+
10
+ ## Pre-attempt gate
11
+
12
+ Before Vet can emit READY, and again immediately before Prove executes the action,
13
+ the approved `test-plan.md` must bind all of the following:
14
+
15
+ 1. **Durable retention:** an operator-controlled evidence artifact outside the
16
+ disposable runtime/cleanup tree, created before the first side effect, written
17
+ durably before cleanup, least-privilege, and bounded by schema, size, and
18
+ cardinality.
19
+ 2. **Trust-safe diagnostics:** known semantic values use the normal validator;
20
+ unknown but lexically well-formed non-secret values survive in bounded sanitized
21
+ fields; malformed, hostile, or secret-bearing values become fixed reason codes
22
+ rather than retained raw input.
23
+ 3. **Terminal completeness:** every success, nonzero exit, rejection, timeout,
24
+ signal, and cleanup failure either names the retained artifact or proves that
25
+ no diagnostic state exists. Failure retention preserves the original safe
26
+ failure family and cause through clean convergence.
27
+ 4. **Discriminating proof:** fixtures cover success, a known failure, an unknown
28
+ well-formed failure, malformed/hostile input, and cleanup after failure. They
29
+ prove cleanup cannot delete or overwrite the retained failure evidence.
30
+ 5. **Recovery sufficiency:** the retained bounded evidence is enough to choose an
31
+ offline correction or a truthful terminal classification without consuming
32
+ another attempt.
33
+
34
+ Missing or stale evidence is an agent-owned technical plan gap: Vet returns
35
+ `NEEDS REPLAN`, and Prove returns to Vet inline without executing the action. Never
36
+ weaken the trust validator or spend the attempt merely to discover what the
37
+ retention design should have preserved.
38
+
39
+ ## Failure handling
40
+
41
+ After a consumptive action fails, its retained artifact is the reproduction input.
42
+ Do not rerun the action during triage. A new attempt is admissible only after the
43
+ evidence identifies a changed invariant or external condition, the affected plan
44
+ and fixtures are re-vetted, and any required fresh authorization is obtained. If
45
+ the attempt ran without complete retention, stop with the observed technical
46
+ blocker; a blind retry cannot manufacture the destroyed evidence.
@@ -38,6 +38,8 @@ Pull these via `Read` when relevant:
38
38
  webhook / config / error messages / getting-started): **measure** the DX scorecard (run the flow,
39
39
  measure time-to-hello-world, and capture verbatim error text), rather than asserting it.
40
40
  - `definition-of-done.md`: acceptance, proof, gates, scope, rollback/docs.
41
+ - `one-shot-actions.md`: pre-attempt evidence completeness and no-rerun handling for
42
+ consumptive proof actions.
41
43
 
42
44
 
43
45
  ## Operating rules
@@ -107,6 +109,13 @@ failure is a blocker; this Upgrade admission never authorizes source or test cha
107
109
  substituted commands, malformed manifests, zero-test/skipped/filtered results used as
108
110
  behavioral proof, success inferred only from exit status, and any source drift. Static
109
111
  gates prove only their named static criterion.
112
+ Immediately before any consumptive action, apply `one-shot-actions.md` to the
113
+ live candidate: require the vetted retained-artifact identity, bounds,
114
+ sanitization, terminal-path fixtures, and cleanup-survival proof. A missing,
115
+ stale, or disposable-only evidence surface returns to Vet inline and consumes
116
+ no attempt. Record the admitted artifact identity before execution. After a
117
+ failed consumptive action, triage from that artifact; never reproduce it by
118
+ rerunning the action.
110
119
  4. **UI feature?** The root applies the browser proof ladder with
111
120
  `design-brief.md`, `references.md`, the requested routes, browser harness, and
112
121
  allowed scratch path:
@@ -4,7 +4,10 @@ When a test/build/runtime/browser check fails, triage before fixing. Delegates t
4
4
  loop to `devrites-debug-recovery`.
5
5
 
6
6
  ## Triage ladder
7
- 1. **Reproduce:** run the failing command again; capture the exact error (quote it).
7
+ 1. **Reproduce:** for a repeatable command, run it again and capture the exact
8
+ error (quote it). For a consumptive action under
9
+ [`one-shot-actions.md`](../../devrites-lib/reference/standards/one-shot-actions.md),
10
+ never rerun it: use the retained bounded artifact as the reproduction input.
8
11
  2. **Classify** the failure:
9
12
  - test is right, code is wrong → fix the code (in scope).
10
13
  - test is wrong/outdated → that may be **spec drift** (acceptance criteria wrong).
@@ -14,7 +17,9 @@ loop to `devrites-debug-recovery`.
14
17
  3. **Isolate:** minimize to the smallest failing case; bisect the diff if needed.
15
18
  4. **Fix within scope:** the current slice/feature only. If the fix reaches outside
16
19
  scope, stop and record a blocker in `state.md` (then `/rite-plan unblock`).
17
- 5. **Re-run** the same command; confirm green; record both attempts in `evidence.md`.
20
+ 5. **Re-run** the same command when it is repeatable; confirm green and record both
21
+ attempts in `evidence.md`. A consumptive action needs re-vetted evidence
22
+ completeness and any fresh authorization before a new attempt.
18
23
 
19
24
  ## Rules
20
25
  - Quote the real error text; don't paraphrase it away.
@@ -20,7 +20,8 @@ but every profile keeps the exact plan-reviewer gate.
20
20
  Pull the standard named by the active axis: `principles.md`, `patterns.md`,
21
21
  `coding-style.md`, `testing.md`, `spec-grammar.md`, `performance.md`,
22
22
  `error-handling.md`, `development-workflow.md`, `afk-hitl.md`,
23
- `developer-experience.md`, `elicitation.md`, and `definition-of-done.md`.
23
+ `one-shot-actions.md`, `developer-experience.md`, `elicitation.md`, and
24
+ `definition-of-done.md`.
24
25
 
25
26
 
26
27
  ## Operating rules
@@ -97,6 +98,11 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
97
98
  unmeasurable conflict = gap. Record complete SHA-256 provenance inputs. Require
98
99
  every behavioral mapping to name a positive,
99
100
  discriminating assertion and decisive signal, not merely a command or expected exit zero.
101
+ Identify every consumptive action under `one-shot-actions.md`. Before admitting
102
+ it, require the exact durable retention surface, trust-safe diagnostic schema,
103
+ cleanup ordering, terminal-path coverage, and discriminating fixtures in
104
+ `test-plan.md`. Missing or stale one-shot evidence completeness is a technical
105
+ preflight gap; do not spend the action to learn what cleanup would erase.
100
106
  Preflight observes; it need not make future behavior pass.
101
107
  2c. **Implementation-readiness audit.** Goal-backward map every REQ/AC/NFR, interaction,
102
108
  edge/prohibition, and decision-coverage row to a slice and executable proof. Verify
@@ -35,6 +35,7 @@ Inventory/currentness: <pass/gaps> · slice order/independence: <pass/gaps> ·
35
35
  UX/spec/architecture: <pass/n-a/gaps> · operations/rollout/rollback: <pass/n-a/gaps>
36
36
 
37
37
  Shared contract proof: <pass | gap: missing/one-sided/duplicated-contract/vague/non-consuming>
38
+ One-shot evidence completeness: <n/a | pass: action + retained artifact + bounds/sanitization + cleanup-survival fixtures | gap: exact missing proof>
38
39
 
39
40
  ## 3. Axis findings (floor-gated)
40
41
  | Axis | Floor band | Findings (sev · confidence) |
@@ -94,6 +95,11 @@ Commands in this durable artifact are portable repository commands: no RTK or lo
94
95
  aliases, user-specific absolute paths, or temporary proof trees. Evidence records
95
96
  the command actually executed.
96
97
 
98
+ ## Consumptive action gates
99
+ | Action | Why one-shot/consumptive | Retained artifact | Bounds + sanitization | Terminal-path fixtures | Cleanup survival | Retry authority |
100
+ |---|---|---|---|---|---|---|
101
+ | <exact approved action or n/a> | <one attempt/quota/state/evidence deletion> | <durable operator-controlled path/schema> | <size/cardinality + known/unknown/malformed handling> | <success/known/unknown/hostile> | <assertion> | <none/fresh human authorization> |
102
+
97
103
  Every behavioral row names a positive, discriminating assertion and the decisive output it
98
104
  produces. A command or expected exit zero alone is not a behavioral assertion; static gates
99
105
  prove only their named static criterion.
@@ -53,7 +53,11 @@ line, and then assign the band. Do not choose a score and justify it afterward:
53
53
  model changes conservatively. Every destructive step needs a rollback.
54
54
  7. **Failure-mode coverage:** for each new codepath, find a realistic failure such
55
55
  as a timeout, nil value, race, or stale state. A silent failure with **no test AND
56
- no error handling** is a critical gap.
56
+ no error handling** is a critical gap. For every consumptive action under
57
+ `one-shot-actions.md`, require durable bounded trust-safe evidence for every
58
+ terminal path plus unknown-well-formed, malformed/hostile, and cleanup-survival
59
+ fixtures. Missing evidence completeness is `broken`: the plan must not consume
60
+ the action to discover diagnostics that cleanup can erase.
57
61
 
58
62
  ## Confidence calibration + verification gate (mandatory)
59
63
  Give every finding a **confidence score from 1 to 10** and a quoted source:
@@ -71,7 +75,8 @@ Band each dimension `strong` / `adequate` / `thin` / `broken` (`broken` means
71
75
  Critical; `thin` means Important). For a borderline dimension, sample twice and
72
76
  take the **lower** band. The verdict uses the weakest dimension, not an average.
73
77
  Pass only when every dimension is at least `adequate`, no critical failure-mode gap
74
- remains, the shared-contract check passes, and the ID-and-meaning map contains no orphaned
78
+ remains, every consumptive action passes one-shot evidence completeness, the
79
+ shared-contract check passes, and the ID-and-meaning map contains no orphaned
75
80
  criterion, slice, or proof.
76
81
 
77
82
  ## Rules
@@ -18,10 +18,14 @@ has no clear next move.
18
18
  1. **Build the feedback loop:** create a fast, deterministic, agent-runnable pass/fail
19
19
  signal. Spend most of the investigation here.
20
20
  See [build-the-loop.md](reference/build-the-loop.md).
21
- 2. **Reproduce:** run the loop. Confirm the failure matches the user's report
22
- (not a nearby failure); capture the **exact error text**; confirm
23
- reproducibility (or a high enough repro rate for flaky bugs). Do not proceed
24
- without reproduction.
21
+ 2. **Reproduce:** run the loop for a repeatable action. Confirm the failure matches
22
+ the user's report (not a nearby failure); capture the **exact error text**;
23
+ confirm reproducibility (or a high enough repro rate for flaky bugs). For a
24
+ consumptive action under
25
+ [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md),
26
+ the retained bounded artifact
27
+ is the reproduction input and the action MUST NOT be rerun during diagnosis.
28
+ Do not proceed without one of those reproduction inputs.
25
29
  3. **Ranked hypotheses (3-5, falsifiable):** generate the list before testing
26
30
  any of them. Each must state a prediction.
27
31
  **Completion:** 3-5 distinct hypotheses each state an observable prediction.
@@ -51,8 +55,10 @@ has no clear next move.
51
55
  - **Do NOT loosen / delete a failing assertion** to get green: check whether
52
56
  it's drift first (route via `$rite-plan repair`).
53
57
  - **Do NOT hide flakiness** with sleeps / retries: characterize it.
54
- - **Re-run the original loop after the fix.** The minimized regression test is not
55
- enough; prove the user-visible failure no longer reproduces.
58
+ - **Re-run the original loop after the fix when it is repeatable.** For a
59
+ consumptive action, first re-vet evidence completeness and obtain any required
60
+ fresh authorization; offline fixtures remain mandatory but cannot authorize the
61
+ real attempt.
56
62
  - **Classify before routing** with
57
63
  [cleanup-and-classify.md](reference/cleanup-and-classify.md).
58
64
  - **Durably record class and rationale** in `decisions.md` and the applicable
@@ -14,7 +14,8 @@ record the dead end and classify anew. Failure alone never resets the budget.
14
14
  - `preexisting`: the same failure exists outside the candidate delta. Record the baseline and fix it only when it blocks acceptance.
15
15
  - `not_a_defect`: the observation matches current accepted authority. Record that authority and continue.
16
16
 
17
- Only human credentials/quotas/actions or irreversible work pause; never ask to retry.
17
+ Only human credentials/quotas/actions, irreversible work, or fresh authorization
18
+ required by a consumptive action pause; never ask for a blind retry.
18
19
 
19
20
  Record class/routing in `decisions.md` and each failed attempt in `evidence.md`
20
21
  or `## Dead ends`. Use one stable causal fingerprint shaped as `<affected
@@ -30,7 +31,8 @@ file or command.
30
31
 
31
32
  ## Cleanup checklist: required before declaring done
32
33
 
33
- - [ ] Original repro no longer reproduces (re-run the Phase 1 loop).
34
+ - [ ] Original repeatable repro no longer reproduces, or the consumptive action's
35
+ offline regression and evidence-completeness fixtures pass without a rerun.
34
36
  - [ ] Regression test passes (or absence of seam is documented).
35
37
  - [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix).
36
38
  - [ ] Throwaway harnesses deleted (or moved to a clearly marked debug location).
@@ -36,6 +36,7 @@ topic's owner.
36
36
  | `context-hygiene.md` | Choosing `/clear`, `/compact`, or a handoff. |
37
37
  | `anti-patterns.md` | A pack-wide rationalization or red flag appears. |
38
38
  | `afk-hitl.md` | A pause, question, resume, or AFK decision is possible. |
39
+ | `one-shot-actions.md` | A proof/action may be attempted once, needs fresh retry authorization, consumes external state/quota, or can delete its own failure evidence. |
39
40
  | `tooling.md` | Structural lookup, current external facts, or architecture memory is needed. |
40
41
  | `skill-authoring.md` | Creating, editing, routing, evaluating, or pruning a DevRites skill. |
41
42
  | `definition-of-done.md` | Prove, Seal, Ship, or Quick must decide whether work is finished. |
@@ -0,0 +1,46 @@
1
+ # One-shot evidence completeness
2
+
3
+ An action is **consumptive** when a failed attempt is not safely equivalent to a
4
+ normal rerun. This includes commands limited to one attempt, commands whose retry
5
+ needs fresh human authorization, actions that spend external quota or mutate
6
+ privileged/external state so a rerun is not equivalent, and actions whose cleanup
7
+ can destroy the failure state needed for diagnosis. Successful cleanup does not
8
+ make a consumptive action repeatable.
9
+
10
+ ## Pre-attempt gate
11
+
12
+ Before Vet can emit READY, and again immediately before Prove executes the action,
13
+ the approved `test-plan.md` must bind all of the following:
14
+
15
+ 1. **Durable retention:** an operator-controlled evidence artifact outside the
16
+ disposable runtime/cleanup tree, created before the first side effect, written
17
+ durably before cleanup, least-privilege, and bounded by schema, size, and
18
+ cardinality.
19
+ 2. **Trust-safe diagnostics:** known semantic values use the normal validator;
20
+ unknown but lexically well-formed non-secret values survive in bounded sanitized
21
+ fields; malformed, hostile, or secret-bearing values become fixed reason codes
22
+ rather than retained raw input.
23
+ 3. **Terminal completeness:** every success, nonzero exit, rejection, timeout,
24
+ signal, and cleanup failure either names the retained artifact or proves that
25
+ no diagnostic state exists. Failure retention preserves the original safe
26
+ failure family and cause through clean convergence.
27
+ 4. **Discriminating proof:** fixtures cover success, a known failure, an unknown
28
+ well-formed failure, malformed/hostile input, and cleanup after failure. They
29
+ prove cleanup cannot delete or overwrite the retained failure evidence.
30
+ 5. **Recovery sufficiency:** the retained bounded evidence is enough to choose an
31
+ offline correction or a truthful terminal classification without consuming
32
+ another attempt.
33
+
34
+ Missing or stale evidence is an agent-owned technical plan gap: Vet returns
35
+ `NEEDS REPLAN`, and Prove returns to Vet inline without executing the action. Never
36
+ weaken the trust validator or spend the attempt merely to discover what the
37
+ retention design should have preserved.
38
+
39
+ ## Failure handling
40
+
41
+ After a consumptive action fails, its retained artifact is the reproduction input.
42
+ Do not rerun the action during triage. A new attempt is admissible only after the
43
+ evidence identifies a changed invariant or external condition, the affected plan
44
+ and fixtures are re-vetted, and any required fresh authorization is obtained. If
45
+ the attempt ran without complete retention, stop with the observed technical
46
+ blocker; a blind retry cannot manufacture the destroyed evidence.
@@ -38,6 +38,8 @@ Pull these via `Read` when relevant:
38
38
  webhook / config / error messages / getting-started): **measure** the DX scorecard (run the flow,
39
39
  measure time-to-hello-world, and capture verbatim error text), rather than asserting it.
40
40
  - `definition-of-done.md`: acceptance, proof, gates, scope, rollback/docs.
41
+ - `one-shot-actions.md`: pre-attempt evidence completeness and no-rerun handling for
42
+ consumptive proof actions.
41
43
 
42
44
 
43
45
  ## Operating rules
@@ -107,6 +109,13 @@ failure is a blocker; this Upgrade admission never authorizes source or test cha
107
109
  substituted commands, malformed manifests, zero-test/skipped/filtered results used as
108
110
  behavioral proof, success inferred only from exit status, and any source drift. Static
109
111
  gates prove only their named static criterion.
112
+ Immediately before any consumptive action, apply `one-shot-actions.md` to the
113
+ live candidate: require the vetted retained-artifact identity, bounds,
114
+ sanitization, terminal-path fixtures, and cleanup-survival proof. A missing,
115
+ stale, or disposable-only evidence surface returns to Vet inline and consumes
116
+ no attempt. Record the admitted artifact identity before execution. After a
117
+ failed consumptive action, triage from that artifact; never reproduce it by
118
+ rerunning the action.
110
119
  4. **UI feature?** The root applies the browser proof ladder with
111
120
  `design-brief.md`, `references.md`, the requested routes, browser harness, and
112
121
  allowed scratch path:
@@ -4,7 +4,10 @@ When a test/build/runtime/browser check fails, triage before fixing. Delegates t
4
4
  loop to `devrites-debug-recovery`.
5
5
 
6
6
  ## Triage ladder
7
- 1. **Reproduce:** run the failing command again; capture the exact error (quote it).
7
+ 1. **Reproduce:** for a repeatable command, run it again and capture the exact
8
+ error (quote it). For a consumptive action under
9
+ [`one-shot-actions.md`](../../devrites-lib/reference/standards/one-shot-actions.md),
10
+ never rerun it: use the retained bounded artifact as the reproduction input.
8
11
  2. **Classify** the failure:
9
12
  - test is right, code is wrong → fix the code (in scope).
10
13
  - test is wrong/outdated → that may be **spec drift** (acceptance criteria wrong).
@@ -14,7 +17,9 @@ loop to `devrites-debug-recovery`.
14
17
  3. **Isolate:** minimize to the smallest failing case; bisect the diff if needed.
15
18
  4. **Fix within scope:** the current slice/feature only. If the fix reaches outside
16
19
  scope, stop and record a blocker in `state.md` (then `$rite-plan unblock`).
17
- 5. **Re-run** the same command; confirm green; record both attempts in `evidence.md`.
20
+ 5. **Re-run** the same command when it is repeatable; confirm green and record both
21
+ attempts in `evidence.md`. A consumptive action needs re-vetted evidence
22
+ completeness and any fresh authorization before a new attempt.
18
23
 
19
24
  ## Rules
20
25
  - Quote the real error text; don't paraphrase it away.
@@ -20,7 +20,8 @@ but every profile keeps the exact plan-reviewer gate.
20
20
  Pull the standard named by the active axis: `principles.md`, `patterns.md`,
21
21
  `coding-style.md`, `testing.md`, `spec-grammar.md`, `performance.md`,
22
22
  `error-handling.md`, `development-workflow.md`, `afk-hitl.md`,
23
- `developer-experience.md`, `elicitation.md`, and `definition-of-done.md`.
23
+ `one-shot-actions.md`, `developer-experience.md`, `elicitation.md`, and
24
+ `definition-of-done.md`.
24
25
 
25
26
 
26
27
  ## Operating rules
@@ -97,6 +98,11 @@ Pull the standard named by the active axis: `principles.md`, `patterns.md`,
97
98
  unmeasurable conflict = gap. Record complete SHA-256 provenance inputs. Require
98
99
  every behavioral mapping to name a positive,
99
100
  discriminating assertion and decisive signal, not merely a command or expected exit zero.
101
+ Identify every consumptive action under `one-shot-actions.md`. Before admitting
102
+ it, require the exact durable retention surface, trust-safe diagnostic schema,
103
+ cleanup ordering, terminal-path coverage, and discriminating fixtures in
104
+ `test-plan.md`. Missing or stale one-shot evidence completeness is a technical
105
+ preflight gap; do not spend the action to learn what cleanup would erase.
100
106
  Preflight observes; it need not make future behavior pass.
101
107
  2c. **Implementation-readiness audit.** Goal-backward map every REQ/AC/NFR, interaction,
102
108
  edge/prohibition, and decision-coverage row to a slice and executable proof. Verify
@@ -35,6 +35,7 @@ Inventory/currentness: <pass/gaps> · slice order/independence: <pass/gaps> ·
35
35
  UX/spec/architecture: <pass/n-a/gaps> · operations/rollout/rollback: <pass/n-a/gaps>
36
36
 
37
37
  Shared contract proof: <pass | gap: missing/one-sided/duplicated-contract/vague/non-consuming>
38
+ One-shot evidence completeness: <n/a | pass: action + retained artifact + bounds/sanitization + cleanup-survival fixtures | gap: exact missing proof>
38
39
 
39
40
  ## 3. Axis findings (floor-gated)
40
41
  | Axis | Floor band | Findings (sev · confidence) |
@@ -94,6 +95,11 @@ Commands in this durable artifact are portable repository commands: no RTK or lo
94
95
  aliases, user-specific absolute paths, or temporary proof trees. Evidence records
95
96
  the command actually executed.
96
97
 
98
+ ## Consumptive action gates
99
+ | Action | Why one-shot/consumptive | Retained artifact | Bounds + sanitization | Terminal-path fixtures | Cleanup survival | Retry authority |
100
+ |---|---|---|---|---|---|---|
101
+ | <exact approved action or n/a> | <one attempt/quota/state/evidence deletion> | <durable operator-controlled path/schema> | <size/cardinality + known/unknown/malformed handling> | <success/known/unknown/hostile> | <assertion> | <none/fresh human authorization> |
102
+
97
103
  Every behavioral row names a positive, discriminating assertion and the decisive output it
98
104
  produces. A command or expected exit zero alone is not a behavioral assertion; static gates
99
105
  prove only their named static criterion.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "4.0.5",
3
+ "version": "4.0.6",
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",