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.
- package/CHANGELOG.md +28 -0
- package/README.md +1 -1
- package/pack/.claude/agents/devrites-code-reviewer.md +16 -0
- package/pack/.claude/agents/devrites-devex-reviewer.md +4 -0
- package/pack/.claude/agents/devrites-doubt-reviewer.md +8 -0
- package/pack/.claude/agents/devrites-retrospector.md +2 -0
- package/pack/.claude/agents/devrites-security-auditor.md +10 -0
- package/pack/.claude/agents/devrites-spec-reviewer.md +3 -0
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +13 -13
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +4 -7
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +3 -4
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +17 -3
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +5 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +24 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +4 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +5 -6
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +6 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/debug-recovery.md +21 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +8 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +6 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +11 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +11 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +4 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +30 -31
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +87 -145
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +22 -17
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +20 -36
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +2 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +59 -81
- package/pack/.claude/skills/devrites-lib/reference/visual-playbooks/index.md +11 -0
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +10 -2
- package/pack/.claude/skills/rite-build/SKILL.md +12 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +19 -0
- package/pack/.claude/skills/rite-define/reference/plan-template.md +15 -2
- package/pack/.claude/skills/rite-learn/SKILL.md +16 -16
- package/pack/.claude/skills/rite-polish/SKILL.md +13 -0
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +14 -53
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +7 -2
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +6 -1
- package/pack/.claude/skills/rite-prove/SKILL.md +9 -0
- package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +10 -0
- package/pack/.claude/skills/rite-review/SKILL.md +9 -0
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +5 -1
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +11 -4
- package/pack/.claude/skills/rite-status/SKILL.md +2 -0
- package/pack/.claude/skills/rite-vet/SKILL.md +14 -0
- package/pack/generated/claude/agents/devrites-code-reviewer.md +16 -0
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +4 -0
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +8 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +2 -0
- package/pack/generated/claude/agents/devrites-security-auditor.md +10 -0
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +3 -0
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +13 -13
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +4 -7
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +3 -4
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +17 -3
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +5 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +24 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +4 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +5 -6
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +6 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/debug-recovery.md +21 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +8 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +6 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +11 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +11 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +4 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +30 -31
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +87 -145
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +22 -17
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +20 -36
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +2 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +59 -81
- package/pack/generated/claude/skills/devrites-lib/reference/visual-playbooks/index.md +11 -0
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +10 -2
- package/pack/generated/claude/skills/rite-build/SKILL.md +12 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +19 -0
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +15 -2
- package/pack/generated/claude/skills/rite-learn/SKILL.md +16 -16
- package/pack/generated/claude/skills/rite-polish/SKILL.md +13 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +14 -53
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +7 -2
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +6 -1
- package/pack/generated/claude/skills/rite-prove/SKILL.md +9 -0
- package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +10 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +9 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +5 -1
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +11 -4
- package/pack/generated/claude/skills/rite-status/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +14 -0
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +16 -0
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +4 -0
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +8 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +2 -0
- package/pack/generated/codex/agents/devrites-security-auditor.toml +10 -0
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +3 -0
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +13 -13
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +4 -7
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +3 -4
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +17 -3
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +5 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +24 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +4 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +5 -6
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +6 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/debug-recovery.md +21 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +8 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +6 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +11 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +11 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +4 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +30 -31
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +87 -145
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +22 -17
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +20 -36
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +2 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +59 -81
- package/pack/generated/codex/skills/devrites-lib/reference/visual-playbooks/index.md +11 -0
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +1 -1
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +10 -2
- package/pack/generated/codex/skills/rite-build/SKILL.md +12 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +19 -0
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +15 -2
- package/pack/generated/codex/skills/rite-learn/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-polish/SKILL.md +13 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +14 -53
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -2
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -1
- package/pack/generated/codex/skills/rite-prove/SKILL.md +9 -0
- package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +10 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +9 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +5 -1
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +11 -4
- package/pack/generated/codex/skills/rite-status/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +14 -0
- package/package.json +1 -1
|
@@ -4,22 +4,15 @@ Follow DevRites policy and [`depth profiles`](../orchestration-profiles.md).
|
|
|
4
4
|
|
|
5
5
|
## Authority
|
|
6
6
|
|
|
7
|
-
- Root owns scope, questions/decisions/results, `.devrites/**`,
|
|
8
|
-
|
|
9
|
-
follow [`workflow-artifacts.md`](workflow-artifacts.md).
|
|
10
|
-
- Only bounded wright writes product source/tests; others inspect an immutable
|
|
11
|
-
candidate.
|
|
7
|
+
- Root owns scope, questions/decisions/results, `.devrites/**`, phase transitions — not product source/tests; vetted executable workflow artifacts follow [`workflow-artifacts.md`](workflow-artifacts.md).
|
|
8
|
+
- Only bounded wright writes product source/tests; others inspect an immutable candidate.
|
|
12
9
|
- Every named role runs; unavailable → HITL, never skip/substitute.
|
|
13
|
-
- Leaves never invoke agents, ask humans, change phase, push, install/deploy,
|
|
14
|
-
migrate live data, or act irreversibly; return evidence/proposals for root
|
|
15
|
-
acceptance. The sole exception is one local, unpushed transfer commit by an
|
|
16
|
-
eligible native-worktree `devrites-slice-wright`; it is transport, not shipping
|
|
17
|
-
authority or a project checkpoint.
|
|
10
|
+
- Leaves never invoke agents, ask humans, change phase, push, install/deploy, migrate live data, or act irreversibly; they return evidence/proposals for root acceptance. Sole exception: one local unpushed transfer commit by an eligible native-worktree `devrites-slice-wright` — transport, not shipping authority or a checkpoint.
|
|
18
11
|
|
|
19
12
|
## Agents
|
|
20
13
|
|
|
21
14
|
| Agent |
|
|
22
|
-
|
|
15
|
+
| --- |
|
|
23
16
|
| `devrites-evidence-scout` |
|
|
24
17
|
| `devrites-plan-drafter` |
|
|
25
18
|
| `devrites-upgrade-planner` |
|
|
@@ -42,48 +35,39 @@ Files own briefs; [`parallel-dispatch.md`](../parallel-dispatch.md) owns rosters
|
|
|
42
35
|
|
|
43
36
|
## Native invocation
|
|
44
37
|
|
|
45
|
-
Skills name exact fresh roles, omit native fields;
|
|
46
|
-
Root MUST NOT advance/claim completion before admitting required results
|
|
47
|
-
|
|
38
|
+
Skills name exact fresh roles, omit native fields;
|
|
39
|
+
hosts spawn/wait/deliver. Root MUST NOT advance/claim completion before admitting required results;
|
|
40
|
+
running/orphaned/unavailable = `gap` — no root/generic substitute.
|
|
48
41
|
|
|
49
42
|
## Source-writing boundary
|
|
50
43
|
|
|
51
|
-
Claude grants only wright `acceptEdits`; Codex root is workspace-capable
|
|
52
|
-
children cannot elevate. Wright alone is `:workspace`; others are `:read-only`.
|
|
44
|
+
Claude grants only wright `acceptEdits`; Codex root is workspace-capable (children cannot elevate). Wright alone `:workspace`; others `:read-only`. Wright gets the smallest exact project-relative source/test list — no directories/globs, traversal, or `.devrites/**`; no scope widening; root rejects `git diff --name-only` extras. Never patch product source/tests in root, bypass/substitute wright, accept drift, or recreate a dispatch bridge.
|
|
53
45
|
|
|
54
|
-
|
|
55
|
-
directories/globs, traversal/`.devrites/**`. No scope widening. Root rejects
|
|
56
|
-
`git diff --name-only` extras. Never patch product source/tests in root, bypass/substitute wright,
|
|
57
|
-
accept drift, or recreate a dispatch bridge.
|
|
46
|
+
Isolated-worktree pilot only under [`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#isolated-writer-worktree-pilot): one writer, committed/clean baseline, non-submodule parent, exact transfer commit, candidate reconciliation — never parallel writers nor weaker exact-path admission. Root may materialize only exact Vet-ready workflow-artifact paths per [`workflow-artifacts.md`](workflow-artifacts.md) — not a writer dispatch or candidate mutation.
|
|
58
47
|
|
|
59
|
-
|
|
60
|
-
[`rite-build/reference/wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#isolated-writer-worktree-pilot):
|
|
61
|
-
one writer at a time, committed/clean baseline, no submodule parent, exact transfer
|
|
62
|
-
commit, and candidate reconciliation before deletion. Isolation never enables
|
|
63
|
-
parallel writers or weakens exact-path admission.
|
|
48
|
+
Each job gets objective/exclusions, exact paths/immutable candidate, rubric/result shape, a **stop condition** (when to return), and the exact result shape; a dispatch missing them is malformed and re-issued. Briefs MUST NOT seed verdict/severity cap/conclusion/suppression. Results state status/scope, outcome, commands/escalation; wright adds paths, changed files, gates, stood decisions; results never widen scope.
|
|
64
49
|
|
|
65
|
-
|
|
66
|
-
artifact paths under the active `.devrites/work/<slug>/` using
|
|
67
|
-
[`workflow-artifacts.md`](workflow-artifacts.md). This is not a writer dispatch,
|
|
68
|
-
product slice, candidate mutation, or exception to the source-writing boundary.
|
|
50
|
+
## Independence
|
|
69
51
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Results state status/scope,
|
|
75
|
-
outcome, commands/escalation; wright adds paths, changed files, gates, stood
|
|
76
|
-
decisions. Results never widen scope.
|
|
52
|
+
- A fresh result sees scope/paths-diff/rubric only — never another result's or the root's conclusions, severities, expected verdicts, or edited context; seeding voids the packet.
|
|
53
|
+
- A parent-context pass contributes attributed evidence but is not independent: exclude it from independent accounting and name the lost coverage.
|
|
54
|
+
- Final severity is set at reconciliation after re-verifying the claimed consequence at the cited site (reviewer severity advisory); dismissals record a reason, and true facts about neighboring code route elsewhere instead of being dismissed.
|
|
55
|
+
- Conflicting required results are arbitrated by re-verifying evidence at the site; the deciding evidence is recorded, truly unresolved conflicts stay open blockers.
|
|
77
56
|
|
|
78
57
|
## Result admission
|
|
79
58
|
|
|
80
59
|
Each required reviewer/analyst/auditor starts with exactly one:
|
|
81
60
|
`Outcome: findings`, `Outcome: no-findings`, or `Outcome: gap`.
|
|
82
61
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
62
|
+
**Canonical finding shape (C2 — all `devrites-*-reviewer` / auditor agents):**
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
Outcome: <findings | no-findings | gap>
|
|
66
|
+
Finding: <severity> | <file:line or artifact section> | <observed quote/result> | <impact> | <minimum fix>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- **`findings`:** each row uses the shape above; confidence 1–10 on Critical/Important.
|
|
70
|
+
Critical/Important requires 7+, exact evidence, and concrete impact.
|
|
87
71
|
- **`no-findings`:** `No-findings:` names checks and inspected evidence. Bare
|
|
88
72
|
pass, empty list, or “looks good” is malformed.
|
|
89
73
|
- **`gap`:** names missing/unreadable/stale input; skipped/failed required check;
|
package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# Browser proof checklist
|
|
2
2
|
|
|
3
|
-
- Open the real UI
|
|
4
|
-
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
- If MCP/browser tooling is unavailable, record the lower-rung fallback and limitation.
|
|
3
|
+
- Open the real UI (never screenshot-only); check console and network for errors.
|
|
4
|
+
- Interactive slices capture each relevant state (default/hover/focus-visible/active/disabled/loading/empty/error) at 320 + 768 px, +1024/1440 when adaptive; state floor: [`../../../devrites-frontend-craft/reference/quality-standards.md`](../../../devrites-frontend-craft/reference/quality-standards.md). Omission needs a one-line `not-needed` reason; states must exist in source — an unreachable state's capture proves nothing.
|
|
5
|
+
- Review browser-default surfaces once per slice (selection, caret, scrollbars, focus ring); no horizontal overflow at captured widths; 200% zoom spot-check; compare to `design-brief.md` → Visual Verdict.
|
|
6
|
+
- Tooling unavailable ⇒ record fallback + limitation. Backend-only changes record that disposition instead of capturing quietly; UI copy follows `devrites-frontend-craft`, long-form prose follows [`prose-style.md`](prose-style.md).
|
|
8
7
|
|
|
9
8
|
Detailed skill: `devrites-browser-proof`.
|
|
@@ -59,17 +59,16 @@ correctness bug, a failing case, a measured number) > **the project's stated sty
|
|
|
59
59
|
objection bottoms out at the last tier, it's a Suggestion at most: say so, and don't block on it.
|
|
60
60
|
An author who is factually right wins over a reviewer's taste.
|
|
61
61
|
|
|
62
|
+
## Reviewer-vs-reviewer adjudication
|
|
63
|
+
|
|
64
|
+
Root re-verifies each claimed consequence at the cited site, keeps the surviving evidence, sets final severity itself (reviewer severity advisory), records what decided ([agents.md § Independence](agents.md#independence)); unresolved conflicts stay open blockers.
|
|
65
|
+
|
|
62
66
|
## Scope discipline
|
|
63
67
|
Review the change, not the whole project. Out-of-scope problems become follow-ups, not
|
|
64
68
|
drive-by edits that balloon the diff.
|
|
65
69
|
|
|
66
70
|
## Receiving review feedback
|
|
67
|
-
Treat external review as claims to verify, not orders
|
|
68
|
-
partial fix; check each claim against the live code; push back with evidence when it is wrong;
|
|
69
|
-
then implement blocking → simple → complex items one at a time and test each fix. Technical
|
|
70
|
-
replies state the evidence and next action: no performative agreement, no gratitude theater:
|
|
71
|
-
"Fixed: <what> in <where>" beats "Great catch, thanks!". About to write "Thanks"? Delete it
|
|
72
|
-
and state the fix.
|
|
71
|
+
Treat external review as claims to verify, not orders. Clarify unclear feedback first; check claims against live code; push back with evidence when wrong; implement blocking → simple → complex items one at a time with tests. State evidence and next action — "Fixed: <what> in <where>" beats gratitude theater.
|
|
73
72
|
|
|
74
73
|
## Principles and charter are pass/fail gates
|
|
75
74
|
Two project layers are evaluated at `/rite-vet` and re-checked against the diff
|
|
@@ -39,27 +39,15 @@ Repository conventions follow [Precedence](#precedence).
|
|
|
39
39
|
|
|
40
40
|
## Lifecycle rest points
|
|
41
41
|
|
|
42
|
-
Before advancing a phase, run `devrites-engine check readiness <slug>` for
|
|
43
|
-
structure; exact agents/checklists own semantics. Standalone rites persist and stop
|
|
44
|
-
on block. Under an active controlling caller, an agent-owned technical block is a
|
|
45
|
-
persisted backward edge: return it to that caller instead of producing a
|
|
46
|
-
user-facing stop.
|
|
47
|
-
After native proof/review, `/rite-seal` runs `devrites-engine check seal <slug>`
|
|
48
|
-
for structure/freshness, not prose. HITL/blocked stops follow
|
|
49
|
-
[Persistence before stopping](#persistence-before-stopping-handoff-discipline).
|
|
42
|
+
Before advancing a phase, run `devrites-engine check readiness <slug>` for structure (semantics belong to exact agents/checklists). Standalone rites persist and stop on block; under a controlling caller, agent-owned technical blocks return backward as a nested phase boundary, not a user-facing handoff. `/rite-seal` runs `devrites-engine check seal <slug>` for structure/freshness, not prose. HITL/blocked stops follow [Persistence before stopping](#persistence-before-stopping-handoff-discipline).
|
|
50
43
|
|
|
51
|
-
|
|
44
|
+
### Gate contract
|
|
45
|
+
|
|
46
|
+
Each gate is declared as **Name · Precondition · Satisfying observation (exact command/artifact state) · Pass/Fail · What failure blocks**, with one type: `preflight`, `revision`, `escalation` (human-only), `abort`. Engine gates keep exit codes; semantic gates are judged by their owner against this contract. A gate whose failure consequence cannot be named is decoration — sharpen or delete it. A mechanical gate's satisfying observation is a command or artifact state a reviewer can re-run or re-read — narrative-only passes are unproven.
|
|
52
47
|
|
|
53
|
-
|
|
54
|
-
technical gap, the original rite remains the controlling caller. A nested
|
|
55
|
-
rite's `STOP` is a nested phase boundary, not a user-facing handoff. The caller
|
|
56
|
-
re-reads `state.md`, follows the durable return cursor and intermediate
|
|
57
|
-
`next_action`, and resumes its originating phase while no human-owned, safety,
|
|
58
|
-
access, budget, or exhausted-recovery stop is active.
|
|
48
|
+
## Caller-owned technical backtracking
|
|
59
49
|
|
|
60
|
-
Derive `exhausted-recovery` from the
|
|
61
|
-
attempts, not from a stale `state.md` label. A consumed authorization for one
|
|
62
|
-
real action does not exhaust offline recovery from its retained new evidence.
|
|
50
|
+
When a rite invokes an earlier rite inline to repair an agent-owned technical gap, the original rite stays the controlling caller: a nested `STOP` is a phase boundary, not user-facing. The caller re-reads `state.md`, follows the return cursor/`next_action`, and resumes unless a human-owned, safety, access, budget, or exhausted-recovery stop is active ([Persistence before stopping](#persistence-before-stopping-handoff-discipline)). Derive `exhausted-recovery` from the fingerprint's recorded no-progress attempts, not from a stale `state.md` label; one consumed authorization doesn't exhaust offline recovery from retained new evidence.
|
|
63
51
|
|
|
64
52
|
An intermediate `Next step` is cold-resume metadata. Do not ask the human to
|
|
65
53
|
copy routine `/rite-plan repair`, `/rite-vet`, `/rite-build`, or proof-rerun
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Debug recovery (async wait discipline)
|
|
2
|
+
|
|
3
|
+
Triggered standard for polling async readiness without blind sleep. Skill owner:
|
|
4
|
+
[`devrites-debug-recovery`](../../../devrites-debug-recovery/SKILL.md).
|
|
5
|
+
|
|
6
|
+
## Condition-based wait (bounded)
|
|
7
|
+
|
|
8
|
+
When waiting for async readiness (server start, job completion, browser signal):
|
|
9
|
+
|
|
10
|
+
1. Set `max_wait_ms` (default 30_000 unless artifact specifies otherwise).
|
|
11
|
+
2. Poll with **condition check** — never fixed sleep as the primary strategy.
|
|
12
|
+
3. Capture **last signal** (last log line, HTTP status, DOM state) on timeout.
|
|
13
|
+
4. Record artifact: `{ condition, max_wait_ms, last_signal, outcome }`.
|
|
14
|
+
|
|
15
|
+
**Failing case:** `sleep(5)` loop with no captured last signal → recovery incomplete;
|
|
16
|
+
treat as flaky/unproven.
|
|
17
|
+
|
|
18
|
+
## Relationship to debug-recovery skill
|
|
19
|
+
|
|
20
|
+
The seven-step recovery cycle owns reproduction and fix. This standard owns the
|
|
21
|
+
**wait recipe** only; do not duplicate the full cycle here.
|
package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md
CHANGED
|
@@ -10,9 +10,17 @@ Ship small, integrate often, and keep the main branch releasable. Workflow phase
|
|
|
10
10
|
- Prefer short-lived branches off the main branch.
|
|
11
11
|
- The main branch is **always in a releasable state**. Validate every change through a
|
|
12
12
|
**fast, reliable CI pipeline** (tests + build) before it merges.
|
|
13
|
+
- **Trunk broken?** Revert first (default repair); fix forward only when revert is harder. Red trunk blocks all merges.
|
|
13
14
|
- Hide incomplete work behind a **feature flag / toggle** rather than a long branch, so
|
|
14
15
|
partial work can land without blocking releases or breaking the trunk.
|
|
15
16
|
|
|
17
|
+
## Feature-flag lifecycle
|
|
18
|
+
|
|
19
|
+
- Name the **removal trigger** at flag creation; delete the flag once the work ships — a
|
|
20
|
+
flag past its trigger is **flag debt**, a review finding. Prove **both states**
|
|
21
|
+
([`testing.md`](testing.md)); widen rollout only with the rollback path recorded
|
|
22
|
+
([`data-integrity.md`](data-integrity.md)).
|
|
23
|
+
|
|
16
24
|
## Review gate
|
|
17
25
|
- A human reviews every change before merge; `code-review.md` owns review scope and evidence.
|
|
18
26
|
|
|
@@ -4,6 +4,12 @@ Document intent/decisions; public inputs, outputs, errors, and gotchas; non-obvi
|
|
|
4
4
|
constraints; and real build/test/run commands. Update with behavior; prefer one runnable
|
|
5
5
|
example. Do not restate code or types.
|
|
6
6
|
|
|
7
|
+
## Drift check (docs describe what runs)
|
|
8
|
+
|
|
9
|
+
A documented command/example that no longer runs is a **documentation-drift finding** at
|
|
10
|
+
review/polish: run it — failure plus output is the evidence. A behavior change updates the
|
|
11
|
+
doc or records the divergence; doc and code never hold contradictory "truths".
|
|
12
|
+
|
|
7
13
|
## Record decisions
|
|
8
14
|
|
|
9
15
|
- Capture significant context, decision, consequences, accepted trade-off, change trigger,
|
|
@@ -64,6 +64,17 @@ Judgment may dismiss a demonstrably irrelevant case; it cannot prove behavior. W
|
|
|
64
64
|
case is not inferable from available evidence, say `unresolved`/`cannot_verify` rather
|
|
65
65
|
than estimating confidence upward.
|
|
66
66
|
|
|
67
|
+
## Backstop honesty (fail-closed)
|
|
68
|
+
|
|
69
|
+
A row marked `covered` or `backstop` **must** name an evidence class: test path,
|
|
70
|
+
command output, observed runtime, or an independent held-out/property check. A row
|
|
71
|
+
with disposition but **no** evidence class is **`cannot_verify`** at Prove/Seal — not
|
|
72
|
+
a pass.
|
|
73
|
+
|
|
74
|
+
**Failing case:** the happy-path suite is green, the trace lists "error path handled"
|
|
75
|
+
with no test or runtime proof → Prove blocks until the row gains a discriminating
|
|
76
|
+
surface or moves to `unresolved`.
|
|
77
|
+
|
|
67
78
|
## Outputs
|
|
68
79
|
|
|
69
80
|
Spec records relevant cases in **Edge Coverage** and bespoke negative intent in
|
|
@@ -16,6 +16,17 @@ recoverable.
|
|
|
16
16
|
- If you catch, either recover meaningfully, or rethrow/wrap with added context. Don't
|
|
17
17
|
log-and-continue past an error you didn't handle.
|
|
18
18
|
|
|
19
|
+
## Classify the outcome before retrying
|
|
20
|
+
|
|
21
|
+
Never retry blind — match the outcome first:
|
|
22
|
+
|
|
23
|
+
- **Rejected** (refused: validation/authz/conflict): fix input; unchanged retry fails again.
|
|
24
|
+
- **Unknown** (timed out mid-call): check state at the source before any retry.
|
|
25
|
+
- **Partial** (half-committed): [`data-integrity.md`](data-integrity.md) § partial failure — reconcile or roll back, never resume blind.
|
|
26
|
+
- **Clean failure** (not started / fully rolled back): safe to retry after fixing the cause.
|
|
27
|
+
|
|
28
|
+
**Failing case:** an **Unknown** outcome retried unchanged double-applies (duplicate charge). Idempotency: [`data-integrity.md`](data-integrity.md); outcome taxonomies: [`integration-reliability.md`](integration-reliability.md). Not provable → `cannot_verify` and stop.
|
|
29
|
+
|
|
19
30
|
## Meaningful messages
|
|
20
31
|
- Error messages state what failed, the relevant context (ids, inputs, not secrets),
|
|
21
32
|
and ideally how to recover. Cryptic messages cost hours.
|
|
@@ -11,6 +11,10 @@ Measure first. An optimization without a measurement is a guess that adds comple
|
|
|
11
11
|
## Optimize responsibly
|
|
12
12
|
- Fix the **measured** bottleneck, then **re-measure** to prove the win (before/after).
|
|
13
13
|
An optimization that doesn't move the number is just added complexity: revert it.
|
|
14
|
+
- **Measurement not reproducible in CI** (noisy host, external dependency): label the claim
|
|
15
|
+
`Lab (<named command/environment>)` — never an elapsed-time assertion in shared CI (a
|
|
16
|
+
flaking wall-clock test is a flaky test, [`testing.md`](testing.md)). Budget regression:
|
|
17
|
+
re-measure; fix to budget or record the accepted regression with reason and owner.
|
|
14
18
|
|
|
15
19
|
## Frontend: Core Web Vitals
|
|
16
20
|
For UI work, measure-first means LCP / INP / CLS judged against real numbers, each labeled
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# Prose style: write like a human, not a model
|
|
2
2
|
|
|
3
3
|
Every chat reply and artifact DevRites writes (`spec.md`, `plan.md`, `decisions.md`,
|
|
4
|
-
`review.md`, `seal.md`, commit bodies,
|
|
4
|
+
`review.md`, `seal.md`, commit bodies, PR descriptions) should read like a senior engineer
|
|
5
5
|
wrote it for a teammate. The default LLM voice (filler openers,
|
|
6
6
|
manufactured contrast, fake profundity, hedging, em-dash tics) is a tell; strip it.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
Prose counterpart to [`coding-style.md`](coding-style.md). The heavier banned-phrase and
|
|
9
|
+
structure lists live in `devrites-prose-craft`; this file is the always-available core
|
|
10
|
+
the text-generating phases read.
|
|
11
11
|
|
|
12
12
|
## Two registers: calibrate, don't flatten
|
|
13
13
|
|
|
14
|
-
DevRites writes in two voices
|
|
14
|
+
DevRites writes in two voices; anti-slop rules apply to both, precision rules differ.
|
|
15
15
|
|
|
16
16
|
- **Prose:** chat replies, and the narrative sections of artifacts (spec overview, plan
|
|
17
17
|
rationale, decision notes, review summaries, ship notes). Optimize for a human voice:
|
|
@@ -20,8 +20,8 @@ DevRites writes in two voices. The anti-slop rules apply to both, but precision
|
|
|
20
20
|
names. Optimize for **precision**: exact domain terms, numbered criteria, and complete
|
|
21
21
|
enumerations are correct here and must stay. Don't "humanize" a spec into vagueness.
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
Shared rule: cut what carries no information;
|
|
24
|
+
keep what a reader needs — kill filler in prose, keep the precise list in technical writing.
|
|
25
25
|
|
|
26
26
|
## Preservation contract: fidelity before polish
|
|
27
27
|
|
|
@@ -47,7 +47,7 @@ the same decisions from it.
|
|
|
47
47
|
| False binary contrast. "It's not X, it's Y", "The question isn't X. It's Y", "not just X but Y" | State Y directly. Drop the negation. |
|
|
48
48
|
| Fake profundity. "Let that sink in", "This is the deepest problem", "make no mistake" | Show the thing; trust the reader to weigh it. |
|
|
49
49
|
| Vague declaratives. "The implications are significant", "the reasons are structural" | Name the specific implication or reason. |
|
|
50
|
-
| Marketing adjectives *selling* the work: "a robust, scalable, seamless, production-ready solution" | Say what it does and what proves it. (Calibrated: "robust"
|
|
50
|
+
| Marketing adjectives *selling* the work: "a robust, scalable, seamless, production-ready solution" | Say what it does and what proves it. (Calibrated: "robust"/"scalable"/"comprehensive" are legitimate in a precise technical claim ("robust to a dropped connection, see `evidence.md`"); slop only when they sell. Canonical tiering: `devrites-prose-craft/reference/banned-phrases.md` § AI vocabulary.) |
|
|
51
51
|
| Hedging stacks. "It's important to note that, generally, in most cases" | Make the claim, or cut it. |
|
|
52
52
|
| False agency: "the data tells us", "the complaint becomes a fix", "the decision emerges" | Name who did it. "The grader reads X and returns Y." |
|
|
53
53
|
| Meta-narration, "In this section we'll…", "Let me walk you through…", "as we'll see" | Let the text move; delete the announcement. |
|
|
@@ -58,11 +58,10 @@ the same decisions from it.
|
|
|
58
58
|
returned". Passive hides who acts.
|
|
59
59
|
- **Be specific.** Replace "every / always / never / a lot" with the actual number, file, or
|
|
60
60
|
case when you know it.
|
|
61
|
-
- **Vary rhythm.** Don't stack three
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
[`rite-polish/reference/anti-ai-slop.md`](../../../rite-polish/reference/anti-ai-slop.md)).
|
|
61
|
+
- **Vary rhythm.** Don't stack three staccato fragments or three same-length sentences in a row.
|
|
62
|
+
- **Skip em and en dashes** — a repeated AI tell (matches
|
|
63
|
+
[`rite-polish/reference/anti-ai-slop.md`](../../../rite-polish/reference/anti-ai-slop.md));
|
|
64
|
+
use a comma, period, colon, or parentheses instead.
|
|
66
65
|
- **Trust the reader.** Skip the softening preamble and the recap of what you just said.
|
|
67
66
|
|
|
68
67
|
## Keep these (technical register: do NOT strip)
|
|
@@ -78,9 +77,8 @@ the same decisions from it.
|
|
|
78
77
|
|
|
79
78
|
## Code prose (comments & names)
|
|
80
79
|
|
|
81
|
-
Comments and identifiers are prose too
|
|
82
|
-
[`coding-style.md`](coding-style.md)
|
|
83
|
-
and the code section of
|
|
80
|
+
Comments and identifiers are prose too; the comment-noise / generic-naming tells live in
|
|
81
|
+
[`coding-style.md`](coding-style.md) and the code section of
|
|
84
82
|
[`rite-polish/reference/anti-ai-slop.md`](../../../rite-polish/reference/anti-ai-slop.md).
|
|
85
83
|
The one-line rule: **a comment must justify its existence in one sentence (intent, trade-off,
|
|
86
84
|
non-obvious constraint, or a dragon warning). If it restates the code, delete it and let the
|
|
@@ -88,30 +86,31 @@ name carry the meaning.**
|
|
|
88
86
|
|
|
89
87
|
## Specificity is the antidote
|
|
90
88
|
|
|
91
|
-
The cut-list removes tells; specificity prevents them.
|
|
89
|
+
The cut-list removes tells; specificity prevents them. Fast tests before delivering:
|
|
92
90
|
|
|
93
|
-
- **Topic-swap test.**
|
|
94
|
-
|
|
95
|
-
- **Surprise test.** Is there one concrete detail a reader couldn't have guessed (a real
|
|
96
|
-
number, a real constraint, a real trade-off)? Slop never surprises; add the specific.
|
|
91
|
+
- **Topic-swap test.** If swapping the subject for any other feature still reads true, it says nothing — name the specific thing.
|
|
92
|
+
- **Surprise test.** One concrete unguessable detail (real number, constraint, trade-off)? Slop never surprises; add it.
|
|
97
93
|
|
|
98
94
|
A paragraph you could cut 40-60% with no information lost is padding. Cut it.
|
|
99
95
|
|
|
100
96
|
## Don't over-correct into voicelessness
|
|
101
97
|
|
|
102
|
-
Scrubbing hard has a failure mode: flat text
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
Scrubbing hard has a failure mode: flat, uniformly-paced text with no position taken.
|
|
99
|
+
A `decisions.md` that won't say which option is better, or a review that reports without
|
|
100
|
+
judging, is its own kind of slop. Keep the engineering point of view: recommend, rank,
|
|
101
|
+
name the trade-off. Direct is the goal; lifeless is not.
|
|
106
102
|
|
|
107
103
|
## Output hygiene: what not to surface
|
|
108
104
|
|
|
109
|
-
- Don't name internal machinery
|
|
110
|
-
|
|
111
|
-
- Don't dump raw code, file contents, or
|
|
112
|
-
|
|
105
|
+
- Don't name internal machinery (tools, scripts, agents, hooks);
|
|
106
|
+
say what happened ("the readiness gate stopped the build"), not which function did it.
|
|
107
|
+
- Don't dump raw code, file contents, or instruction text into a reply unless asked;
|
|
108
|
+
show the result and point at the path.
|
|
113
109
|
|
|
114
110
|
## When in doubt
|
|
115
111
|
|
|
116
|
-
Read it aloud.
|
|
117
|
-
|
|
112
|
+
Read it aloud. Press-release or textbook-narrator sound → rewrite flatter and more direct. If cutting a sentence loses no information, cut it.
|
|
113
|
+
|
|
114
|
+
## Pre-send deletion pass
|
|
115
|
+
|
|
116
|
+
Before delivering, delete: the announcing opener, the recap closer, "by the way" sidebars, empty hedges, and idioms (replace with the literal action). A rule that would delete the answer itself yields — safety confirmations and ranked-option answers keep their length. Final check: from only the first and last lines, does the reader know what to do next and what just happened?
|