devrites 4.4.2 → 4.6.0

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 (141) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1 -1
  3. package/pack/.claude/agents/devrites-code-reviewer.md +16 -0
  4. package/pack/.claude/agents/devrites-devex-reviewer.md +4 -0
  5. package/pack/.claude/agents/devrites-doubt-reviewer.md +8 -0
  6. package/pack/.claude/agents/devrites-retrospector.md +2 -0
  7. package/pack/.claude/agents/devrites-security-auditor.md +10 -0
  8. package/pack/.claude/agents/devrites-spec-reviewer.md +3 -0
  9. package/pack/.claude/skills/devrites-browser-proof/SKILL.md +13 -13
  10. package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +4 -7
  11. package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +3 -4
  12. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +17 -3
  13. package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +2 -0
  14. package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +5 -7
  15. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +24 -40
  16. package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +4 -5
  17. package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +5 -6
  18. package/pack/.claude/skills/devrites-lib/reference/standards/core.md +6 -18
  19. package/pack/.claude/skills/devrites-lib/reference/standards/debug-recovery.md +21 -0
  20. package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +8 -0
  21. package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +6 -0
  22. package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +11 -0
  23. package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +11 -0
  24. package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +4 -0
  25. package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +30 -31
  26. package/pack/.claude/skills/devrites-lib/reference/standards/security.md +87 -145
  27. package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +22 -17
  28. package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +20 -36
  29. package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +2 -2
  30. package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +59 -81
  31. package/pack/.claude/skills/devrites-lib/reference/visual-playbooks/index.md +11 -0
  32. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  33. package/pack/.claude/skills/rite-adopt/SKILL.md +10 -2
  34. package/pack/.claude/skills/rite-build/SKILL.md +12 -0
  35. package/pack/.claude/skills/rite-converge/SKILL.md +19 -0
  36. package/pack/.claude/skills/rite-define/reference/plan-template.md +15 -2
  37. package/pack/.claude/skills/rite-learn/SKILL.md +16 -16
  38. package/pack/.claude/skills/rite-polish/SKILL.md +13 -0
  39. package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +14 -53
  40. package/pack/.claude/skills/rite-pr-feedback/SKILL.md +7 -2
  41. package/pack/.claude/skills/rite-pressure-test/SKILL.md +6 -1
  42. package/pack/.claude/skills/rite-prove/SKILL.md +9 -0
  43. package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +10 -0
  44. package/pack/.claude/skills/rite-review/SKILL.md +9 -0
  45. package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +5 -1
  46. package/pack/.claude/skills/rite-spec/reference/spec-template.md +11 -4
  47. package/pack/.claude/skills/rite-status/SKILL.md +2 -0
  48. package/pack/.claude/skills/rite-vet/SKILL.md +14 -0
  49. package/pack/generated/claude/agents/devrites-code-reviewer.md +16 -0
  50. package/pack/generated/claude/agents/devrites-devex-reviewer.md +4 -0
  51. package/pack/generated/claude/agents/devrites-doubt-reviewer.md +8 -0
  52. package/pack/generated/claude/agents/devrites-retrospector.md +2 -0
  53. package/pack/generated/claude/agents/devrites-security-auditor.md +10 -0
  54. package/pack/generated/claude/agents/devrites-spec-reviewer.md +3 -0
  55. package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +13 -13
  56. package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +4 -7
  57. package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +3 -4
  58. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +17 -3
  59. package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +2 -0
  60. package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +5 -7
  61. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +24 -40
  62. package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +4 -5
  63. package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +5 -6
  64. package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +6 -18
  65. package/pack/generated/claude/skills/devrites-lib/reference/standards/debug-recovery.md +21 -0
  66. package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +8 -0
  67. package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +6 -0
  68. package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +11 -0
  69. package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +11 -0
  70. package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +4 -0
  71. package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +30 -31
  72. package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +87 -145
  73. package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +22 -17
  74. package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +20 -36
  75. package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +2 -2
  76. package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +59 -81
  77. package/pack/generated/claude/skills/devrites-lib/reference/visual-playbooks/index.md +11 -0
  78. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  79. package/pack/generated/claude/skills/rite-adopt/SKILL.md +10 -2
  80. package/pack/generated/claude/skills/rite-build/SKILL.md +12 -0
  81. package/pack/generated/claude/skills/rite-converge/SKILL.md +19 -0
  82. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +15 -2
  83. package/pack/generated/claude/skills/rite-learn/SKILL.md +16 -16
  84. package/pack/generated/claude/skills/rite-polish/SKILL.md +13 -0
  85. package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +14 -53
  86. package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +7 -2
  87. package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +6 -1
  88. package/pack/generated/claude/skills/rite-prove/SKILL.md +9 -0
  89. package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +10 -0
  90. package/pack/generated/claude/skills/rite-review/SKILL.md +9 -0
  91. package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +5 -1
  92. package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +11 -4
  93. package/pack/generated/claude/skills/rite-status/SKILL.md +2 -0
  94. package/pack/generated/claude/skills/rite-vet/SKILL.md +14 -0
  95. package/pack/generated/codex/agents/devrites-code-reviewer.toml +16 -0
  96. package/pack/generated/codex/agents/devrites-devex-reviewer.toml +4 -0
  97. package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +8 -0
  98. package/pack/generated/codex/agents/devrites-retrospector.toml +2 -0
  99. package/pack/generated/codex/agents/devrites-security-auditor.toml +10 -0
  100. package/pack/generated/codex/agents/devrites-spec-reviewer.toml +3 -0
  101. package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +13 -13
  102. package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +4 -7
  103. package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +3 -4
  104. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +17 -3
  105. package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +2 -0
  106. package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +5 -7
  107. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +24 -40
  108. package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +4 -5
  109. package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +5 -6
  110. package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +6 -18
  111. package/pack/generated/codex/skills/devrites-lib/reference/standards/debug-recovery.md +21 -0
  112. package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +8 -0
  113. package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +6 -0
  114. package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +11 -0
  115. package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +11 -0
  116. package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +4 -0
  117. package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +30 -31
  118. package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +87 -145
  119. package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +22 -17
  120. package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +20 -36
  121. package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +2 -2
  122. package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +59 -81
  123. package/pack/generated/codex/skills/devrites-lib/reference/visual-playbooks/index.md +11 -0
  124. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
  125. package/pack/generated/codex/skills/rite-adopt/SKILL.md +10 -2
  126. package/pack/generated/codex/skills/rite-build/SKILL.md +12 -0
  127. package/pack/generated/codex/skills/rite-converge/SKILL.md +19 -0
  128. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +15 -2
  129. package/pack/generated/codex/skills/rite-learn/SKILL.md +16 -16
  130. package/pack/generated/codex/skills/rite-polish/SKILL.md +13 -0
  131. package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +14 -53
  132. package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -2
  133. package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -1
  134. package/pack/generated/codex/skills/rite-prove/SKILL.md +9 -0
  135. package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +10 -0
  136. package/pack/generated/codex/skills/rite-review/SKILL.md +9 -0
  137. package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +5 -1
  138. package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +11 -4
  139. package/pack/generated/codex/skills/rite-status/SKILL.md +2 -0
  140. package/pack/generated/codex/skills/rite-vet/SKILL.md +14 -0
  141. package/package.json +1 -1
@@ -52,13 +52,10 @@ match the neighbors.
52
52
  dots as set dressing.
53
53
 
54
54
  ### Copy & data realism
55
- Placeholder content is a tell even when the layout is clean:
56
- - **Fake-perfect numbers** — `99.99%`, `10,000+`, `$1M`. Real data is ragged: `47.2%`, `1,283`.
57
- - **Placeholder people/brands** "John Doe", "Acme", "Nexus". Invent specific, plausible ones.
58
- - **Filler verbs** Elevate / Seamless / Unleash / Supercharge / Next-Gen. Say what it does.
59
- - **Copy self-audit** — re-read every visible string before shipping; anything grammatically
60
- broken, referent-unclear, or "an LLM trying to sound thoughtful" gets rewritten. AI-cute
61
- copy is worse than boring copy.
55
+ Placeholder content is a tell even when the layout is clean: fake-perfect numbers
56
+ (`99.99%`, `10,000+` real data is ragged), placeholder people/brands ("John Doe",
57
+ "Acme"), filler verbs (Elevate / Seamless / Unleash). Re-read every visible string before
58
+ shipping; AI-cute copy is worse than boring copy.
62
59
 
63
60
  ### Category-reflex check — run at two altitudes
64
61
 
@@ -90,6 +87,8 @@ Each is pass/fail by counting or grep, not judgment:
90
87
  - **Layout families** (hero, image+text split, card grid, bento, table…): no family more
91
88
  than twice per page; never 3 consecutive image+text zigzags.
92
89
  - **Icons**: 0 emoji-as-icon; exactly one icon set imported.
90
+ - **State presence in code**: default+hover+focus-visible+active+disabled for every interactive element; loading/error/empty where data delays or fails — an unreachable state's screenshot proves nothing.
91
+ - **Form inputs**: no border-width shifts between states; focus ring from outline/ring (not border swap); consistent control height; reserved helper slot; disabled beyond opacity alone.
93
92
 
94
93
  ## Code anti-slop (UI **and** backend)
95
94
  - **Over-defensive checks** — `if (x && x.length > 0)` repeated, layered null guards,
@@ -158,49 +157,11 @@ Each is pass/fail by counting or grep, not judgment:
158
157
  Reuse → extend → build new (`coding-style.md`, `patterns.md`); duplication beats the *wrong*
159
158
  abstraction, but pasted clones are slop, not a deliberate AHA call.
160
159
 
161
- ### Comment density before / after
162
-
163
- ```js
164
- // Before (slop): a comment narrating almost every line
165
- function calculateTotal(items) {
166
- // initialize the total to zero
167
- let total = 0;
168
- // loop through each item in the items array
169
- for (const item of items) {
170
- // add the item price to the total
171
- total += item.price;
172
- }
173
- // return the final total
174
- return total;
175
- }
176
-
177
- // After: the names carry it; no comment needed
178
- function sumPrices(items) {
179
- return items.reduce((total, item) => total + item.price, 0);
180
- }
181
-
182
- // A comment that earns its place — it explains WHY, not what:
183
- // Prices are in minor units (cents); the gateway rejects fractional amounts.
184
- const total = sumPrices(items);
185
- ```
186
-
187
- ## Why these are banned
188
- They signal "a model generated this" rather than "this team designed/wrote this." They
189
- ignore the product's register and the project's idiom, add noise, hide bugs (defensive
190
- catches), bloat the diff (over-engineering, beyond-spec), and often fail accessibility
191
- or correctness review. They're cargo-cult, not craft.
192
-
193
- ## What to do instead
194
- - **UI**: project tokens / shared components / consistent type & spacing
195
- (`design-system-discovery.md`); content shapes layout; motion serves feedback;
196
- reserve modals for focused interrupting tasks.
197
- - **Code**: validate at trust boundaries (don't sprinkle null checks); catch narrow,
198
- recover or rethrow; one clear name per concept; one responsibility per function;
199
- reuse before write (`coding-style.md`); implement exactly the spec; let inherent
200
- complexity be — don't pad with ceremony.
201
- - If the project **does** use one of these intentionally, follow the project. Consistency
202
- beats the rule.
203
-
204
- ## When in doubt: ask
205
- A "robust" check or shiny abstraction you can't justify in one sentence is probably slop.
206
- Delete it; or ask the user if it should exist.
160
+ ## Why banned, what instead
161
+ They signal model-generated rather than team-designed work: they ignore register and
162
+ idiom, add noise, hide bugs (defensive catches), bloat diffs, and often fail a11y or
163
+ correctness review. Instead: project tokens/components, validate at trust boundaries,
164
+ catch narrow and rethrow, one clear name per concept, reuse first (`coding-style.md`),
165
+ implement exactly the spec. If the project intentionally uses one of these, follow the
166
+ project consistency beats the rule. A check or abstraction you can't justify in one
167
+ sentence is slop: delete it or ask.
@@ -24,8 +24,13 @@ Step 0: Read `.agents/skills/devrites-lib/reference/standards/core.md`, plus `gi
24
24
  2. **Fetch.** Use GitHub GraphQL/CLI to collect unresolved review threads with file, line, author, body, and thread id. Completion: every unresolved thread is represented once, or the fetch error is reported.
25
25
  3. **Legitimacy gate.** For each item, read the surrounding code and classify: `fix`, `not-addressing`, `declined`, `reply-only`, or `needs-human`. Deduplicate overlapping items.
26
26
  4. **Fix approved items.** Apply contained fixes, add/update tests when behavior changes, and run targeted checks. Larger product/API/security calls become `needs-human`.
27
- 5. **Commit/push.** Stage only touched files. Commit only if changes exist; push the branch.
28
- **Completion:** changed files are committed/pushed with SHA evidence, or no commit is created because the diff is empty.
27
+ 5. **Commit/push.** Stage only touched files; commit only if changes exist; push the branch.
28
+ Push rejected (protected branch, non-fast-forward, hooks): stop and report the exact
29
+ rejection — never force-push or rewrite a shared branch. Post-push checks fail: record
30
+ the failing check, choose fix-forward or revert, put the choice + reason in the thread
31
+ reply — never a silent red push.
32
+ **Completion:** committed/pushed with SHA evidence and green checks, or no commit (empty
33
+ diff), or the push failure reported verbatim.
29
34
  6. **Reply and resolve.** Reply to every thread with outcome and evidence. Resolve only `fix`, `not-addressing`, `declined`, and `reply-only`; leave `needs-human` open.
30
35
  **Completion:** every thread has one recorded outcome and only permitted terminal outcomes are resolved.
31
36
  7. **Verify.** Fetch unresolved threads again and report remaining intentional opens.
@@ -12,6 +12,7 @@ Use when the idea—not only requirements—is rough. Compare directions before
12
12
  first and write only workspace/ticket artifacts.
13
13
 
14
14
  ## Diverge (widen)
15
+
15
16
  - Search `decisions.md`, accepted ADRs, and relevant archives for rejected directions;
16
17
  revive one only with evidence that answers its recorded reason, citing both.
17
18
  - Generate 3-5 different shapes, including obvious, smaller, and different-boundary/data/
@@ -20,6 +21,7 @@ first and write only workspace/ticket artifacts.
20
21
  - For each, name concrete entities/flows/surfaces, optimization, rough cost, and main risk.
21
22
 
22
23
  ## Converge (commit)
24
+
23
25
  - Weigh options against the goal, constraints, and existing codebase conventions.
24
26
  - Prefer felt pain over nice-to-have. Rank differentiation: new capability > 10× gain >
25
27
  new audience > new context > better UX > cheaper; do not dress a vitamin as a painkiller.
@@ -33,10 +35,13 @@ If the hinge is an uncertain material fact, freeze at most three questions for
33
35
  `unavailable`, never support. Record claim, support, strongest contrary evidence, and
34
36
  `supported | assumption | refuted`. Refutation changes the recommendation; an assumption
35
37
  advances only when non-decisive with bounded downside. Weak/conflicting decisive evidence
36
- returns **Hold** with the resolving evidence, never `$rite-spec`. Do not research preferences
38
+ returns **Hold** with the resolving evidence, never `$rite-spec`. Tie-breaker:
39
+ see [`intent-map.md`](../devrites-lib/reference/intent-map.md) (`rite-pressure-test`
40
+ vs `rite-spec`). Do not research preferences
37
41
  or reversible implementation choices.
38
42
 
39
43
  ## Boundaries
44
+
40
45
  - This is exploration, not specification. Output a **direction**, not a finished spec:
41
46
  `$rite-spec` writes the spec.
42
47
  - Don't over-explore: 3-5 options, one pass of convergence. If the user already knows
@@ -111,3 +111,12 @@ test changes.
111
111
 
112
112
  > Do not claim an unobserved pass, skip browser proof, or proceed with pending
113
113
  > slices. Load `reference/anti-patterns.md` when tempted to do so.
114
+
115
+ ## Phase exit (observable)
116
+
117
+ **Complete when:** every criterion in `acceptance-proof.md` has discriminating
118
+ evidence bound to the current candidate digest, both independent validators admit
119
+ accounts, and `state.md` records Prove complete with no open `cannot_verify` rows.
120
+
121
+ **Failing case:** narrative "all tests passed" without `evidence.md` binding and
122
+ proof-runner admission → phase not complete; Seal blocks.
@@ -14,6 +14,16 @@ filtered, pending, zero-test, assertion-free, tautological, or unexecuted result
14
14
  do not count. Build/compile/typecheck/lint prove only their static criterion;
15
15
  discriminating shell assertions and golden/text comparisons may prove text/CLI.
16
16
 
17
+ ## Silent-failure probe
18
+
19
+ When tests pass but error paths, dropped results, or partial success could hide
20
+ failure, require at least one **discriminating** check that would fail if the silent
21
+ path regressed (assert the failure surface, not only the happy path).
22
+
23
+ **Failing case:** handler returns success while logging or swallowing internally; the
24
+ suite stays green → map `cannot_verify` unless a test asserts the user-visible or
25
+ contract failure outcome.
26
+
17
27
  ## Backstop disposition
18
28
 
19
29
  A `backstop` passes only on its spec-named independent held-out,
@@ -20,7 +20,9 @@ tell the user to run `$rite-spec <feature>`.
20
20
  all workflow-named roles remain mandatory at every depth.
21
21
 
22
22
  ## Rules consulted (read on demand from `.agents/skills/devrites-lib/reference/standards/`)
23
+
23
24
  Pull these via `Read` when the diff demands them:
25
+
24
26
  - `code-review.md`: small PRs, severity labels, tests-first review focus.
25
27
  - `review-checklist.md`: compact pass/fail sweep before reporting the verdict.
26
28
  - `principles.md`: declared project invariants (`.devrites/principles.md`); a diff that violates one with no recorded exception is a Critical, blocking finding.
@@ -33,9 +35,13 @@ Pull these via `Read` when the diff demands them:
33
35
  - `performance.md`: only when perf is relevant or a regression risk is visible.
34
36
 
35
37
  ## Operating rules
38
+
36
39
  - **Feature scope only.** Review touched files + the diff. **NO whole-project refactors,
37
40
  NO drive-by cleanup.** DO NOT delete suspected dead code outside this feature without
38
41
  asking. Spec Drift Guard applies.
42
+ - **Silent-failure hunt:** when the suite is green, require proof that error paths and
43
+ partial-success branches would fail tests if broken. **Failing case:** tests pass but
44
+ handler returns success on internal error → Critical until an asserting test exists.
39
45
  - **Review the finished product.** `$rite-polish` has already simplified code and
40
46
  normalized or polished UI. If review finds a remaining complexity issue, record it as
41
47
  a finding rather than rerunning a simplification pass.
@@ -49,6 +55,7 @@ Pull these via `Read` when the diff demands them:
49
55
  route to `devrites-slice-wright`.
50
56
 
51
57
  ## Workflow
58
+
52
59
  0. Read `.agents/skills/devrites-lib/reference/standards/core.md` first (the always-on operating rules); pull the
53
60
  on-demand rules above as the diff demands them.
54
61
  Then read the explicit or active workspace's `state.md` directly.
@@ -129,6 +136,7 @@ Pull these via `Read` when the diff demands them:
129
136
  correction has affected proof plus a fresh Review.
130
137
 
131
138
  ## Finding labels
139
+
132
140
  - **Critical:** must fix before seal (correctness/security/data loss).
133
141
  - **Important:** should fix before seal (likely bug, real maintainability risk).
134
142
  - **Suggestion:** worth doing, not blocking.
@@ -141,6 +149,7 @@ change is already small: a pure noise-economics lever). Only a **`blocking` Crit
141
149
  seal; a `non-blocking` / `if-minor` finding is recorded, not a stop.
142
150
 
143
151
  ## Confidence and signal-to-noise
152
+
144
153
  Apply [`agents.md` § Result admission](../devrites-lib/reference/standards/agents.md#result-admission).
145
154
  Suppress unverifiable ≤4 hypotheses, require 7+ plus exact proof for
146
155
  Critical/Important, and make every silent/unusable account a blocking gap. Roll
@@ -11,7 +11,7 @@ Emit `.devrites/work/<slug>/checklists/<domain>.md` per covered domain; skip
11
11
  `none`. Each domain maps gaps to a `devrites-interview` dimension:
12
12
 
13
13
  | Domain file | Tests the prose of |
14
- |---|---|
14
+ | --- | --- |
15
15
  | `functional.md` | Functional requirements + scenarios: is each capability stated, bounded, testable? |
16
16
  | `data-model.md` | Key entities / data model: shapes, fields, lifecycle, relationships (skip if "none"). |
17
17
  | `interaction.md` | API / UI impact + UX states: every screen state and contract named (skip if no UI/API). |
@@ -39,6 +39,7 @@ undefined stated-flow edge, or contradictory requirements. Other vague prose is
39
39
  ## Question bank
40
40
 
41
41
  Each question checks one requirement-prose failure mode:
42
+
42
43
  - **Measurability:** every "good / fast / prominent / simple / secure" carries a number, a budget,
43
44
  or a named reference. No adjective stands in for a threshold.
44
45
  - **Completeness:** every enumeration is closed (no "etc."); every requirement with a precondition
@@ -64,6 +65,8 @@ Each question checks one requirement-prose failure mode:
64
65
  - **Preservation:** each material brownfield outcome appears in `Existing behavior
65
66
  to preserve` with preserving REQ/AC and current evidence. Missing/vague “no
66
67
  regressions” or unjustified `none` is CRITICAL.
68
+ **Failing case:** brownfield login still works but the table has no evidence column
69
+ → CRITICAL until a test path, command, or observed contract is named.
67
70
  - **Backstops:** each row names an independent held-out, property/metamorphic, or
68
71
  direct behavioral check and the failure it discriminates; confidence/presence/self-review fail.
69
72
  - **Non-functional:** each NFR names affected REQ/AC IDs or a bounded `global` scope;
@@ -80,6 +83,7 @@ unchecked**. A spec without checklists is not yet checked, so define stops and r
80
83
  back here.
81
84
 
82
85
  ## Discipline
86
+
83
87
  - Score honestly. Do not soften a checklist question to pass a weak spec.
84
88
  - Don't pad. Five real questions that find one CRITICAL beat thirty rubber-stamped rows.
85
89
  - If a question needs a function name, it belongs in `$rite-vet`'s `test-plan.md`.
@@ -3,9 +3,10 @@
3
3
  Contract WHAT users get, WHY, success, and scope. HOW belongs in `plan.md`,
4
4
  topology in `architecture.md`/`flows.md`, coverage in `traceability.md`.
5
5
 
6
- Use `[NEEDS CLARIFICATION: <question>]` (blocking stops `$rite-clarify`) and
7
- stable `REQ-001`/`AC-001` IDs. Link, never duplicate, source artifacts. Over
8
- schema budget requires `Budget override: <reason>`.
6
+ Use `[NEEDS CLARIFICATION: <question>]` (blocking stops `$rite-clarify`); before readiness
7
+ every surviving marker converts to a gated `Q-###` open question (`spec-grammar.md` §
8
+ Unresolved-question markers fail closed). Stable `REQ-001`/`AC-001` IDs; link, never
9
+ duplicate, source artifacts; over-budget requires `Budget override: <reason>`.
9
10
 
10
11
  ```markdown
11
12
  # Spec: <Feature>
@@ -33,6 +34,12 @@ No implementation detail. True greenfield: `none — no existing behavior in the
33
34
  | --- | --- | --- |
34
35
  | <outcome that must not regress> | REQ-001 / AC-001 | <current evidence> |
35
36
 
37
+ Each preservation row **must** cite current evidence (test, runtime, contract, or
38
+ observed behavior). An empty or vague evidence cell blocks Spec readiness.
39
+
40
+ **Failing case:** row lists REQ-001 with evidence "none" or "TBD" → readiness gate
41
+ fails until evidence is named or the outcome is removed from scope.
42
+
36
43
  ## Stakeholders and priorities
37
44
  | Actor/stakeholder | Observable outcome | Conflict / priority rule |
38
45
  | --- | --- | --- |
@@ -104,7 +111,7 @@ status routes Define/Vet/Build/Prove to the named standard without copying it he
104
111
  - Model/RAG/agent/eval/LLM-output scope: `ai-spec.md` from `ai-spec-template.md`.
105
112
  - Otherwise: not applicable.
106
113
 
107
- ## Measurable success
114
+ ## Success metrics
108
115
  - <Metric or observable proof.>
109
116
 
110
117
  ## Scope boundaries
@@ -18,6 +18,8 @@ artifacts only as needed. Never infer lifecycle state from `README.md` or chat.
18
18
 
19
19
  If no workspace exists, recommend `$rite-spec <feature>` and stop.
20
20
 
21
+ If `state.md` is unreadable/malformed: report a gap with the defect and stop — never infer the phase from other files; `$rite-doctor`/`$rite-upgrade` own repair.
22
+
21
23
  ## Report
22
24
 
23
25
  1. feature and one-line objective;
@@ -40,6 +40,12 @@ plan declares a root-authored executable workflow file, read
40
40
  unverified or confidence ≤4 findings under `review-axes.md`.
41
41
  - Auth, migration, public API, and data-model changes use maximum caution and the
42
42
  irreversible-risk stop. Project principles never become trade-offs.
43
+ - **Governance-protected paths** (`.devrites/**`, pack skill/agent trees,
44
+ `NOTICE.md` generator regions, CI/hook config named in repo docs) require explicit
45
+ human approval before plan slices may edit them. A slice touching a protected path
46
+ without approval → Vet **NEEDS CLARIFICATION**.
47
+ **Failing case:** plan edits another feature's `state.md` without recorded approval →
48
+ fail closed.
43
49
  - Use the lowest axis band; never average or round thin to ready. Search before
44
50
  asking and resolve reversible technical choices. Ask only human-owned choices.
45
51
  - Preserve a valid technical return cursor. Agent-owned `NEEDS REPLAN` returns
@@ -138,3 +144,11 @@ plan declares a root-authored executable workflow file, read
138
144
 
139
145
  > Do not replace interactive review with artifacts, change acceptance through
140
146
  > hardening, score without source evidence, or ignore unexplained complexity.
147
+
148
+ ## Phase exit (observable)
149
+
150
+ **Complete when:** `eng-review.md` records exactly one readiness verdict, readiness
151
+ binding SHA-256 passes, and every required reviewer account is admitted.
152
+
153
+ **Failing case:** READY written while a required reviewer returned `Outcome: gap` →
154
+ not complete; restore NEEDS REPLAN or dispatch missing reviewer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "4.4.2",
3
+ "version": "4.6.0",
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",