devrites 3.0.3 → 3.0.5
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 +31 -0
- package/README.md +55 -43
- package/SECURITY.md +72 -58
- package/docs/adr/0001-go-engine-as-control-plane.md +43 -0
- package/docs/adr/0002-dual-host-harness.md +34 -0
- package/docs/adr/0003-gate-model-hitl-pause.md +38 -0
- package/docs/adr/0004-state-schema-phases-sections.md +6 -3
- package/docs/adr/0005-hooks-as-engine-subcommands.md +39 -0
- package/docs/adr/0006-clock-seam-and-engine-ci-gates.md +50 -0
- package/docs/adr/0007-canonical-live-workspace-filenames.md +36 -0
- package/docs/adr/0008-sanctioned-engine-network-boundary.md +33 -0
- package/docs/adr/README.md +58 -0
- package/docs/agents/issue-driven-rites.md +5 -5
- package/docs/architecture.md +61 -45
- package/docs/capability-surface-selection.md +3 -1
- package/docs/cli.md +9 -2
- package/docs/command-map.md +6 -2
- package/docs/engine/agent-contract.md +5 -3
- package/docs/engine/commands.md +27 -14
- package/docs/engine/state-schema.md +14 -9
- package/docs/engine/workspace-schema.md +5 -4
- package/docs/flow.md +18 -7
- package/docs/porting-to-a-new-harness.md +6 -2
- package/docs/release.md +10 -9
- package/docs/skills.md +1 -1
- package/docs/templates/CRITIC_REVIEW_PACKET_TEMPLATE.md +35 -0
- package/docs/usage.md +26 -16
- package/engine/internal/lib/packageexistence.go +729 -52
- package/engine/internal/lib/packageexistence_test.go +343 -0
- package/engine/internal/lib/util.go +1 -1
- package/engine/internal/migrate/migrate.go +16 -11
- package/engine/internal/migrate/migrate_test.go +26 -4
- package/engine/internal/state/feature.go +28 -14
- package/engine/internal/state/schema.go +20 -8
- package/engine/internal/state/state_test.go +6 -6
- package/engine/tests/budget_test.go +2 -2
- package/engine/tests/meta_test.go +3 -3
- package/engine/tests/migrate_cli_test.go +24 -22
- package/pack/.claude/skills/devrites-lib/SKILL.md +7 -9
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -3
- package/pack/.claude/skills/rite/SKILL.md +6 -7
- package/pack/.claude/skills/rite/reference/menu.md +5 -5
- package/pack/.claude/skills/rite-adopt/SKILL.md +2 -3
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +7 -9
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +2 -3
- package/pack/generated/claude/skills/rite/SKILL.md +6 -7
- package/pack/generated/claude/skills/rite/reference/menu.md +5 -5
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +2 -3
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +7 -9
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +2 -3
- package/pack/generated/codex/skills/rite/SKILL.md +6 -7
- package/pack/generated/codex/skills/rite/reference/menu.md +5 -5
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +2 -3
- package/package.json +2 -1
- package/scripts/skills-inventory.mjs +18 -0
- package/scripts/validate-workflow-security.py +3 -8
|
@@ -52,11 +52,13 @@ proven contract is shared, not per-clone. Grammar and delta rules:
|
|
|
52
52
|
|
|
53
53
|
Backward compatibility: `.devrites/features/<slug>/` remains readable as a legacy
|
|
54
54
|
workspace location. `feature.md` / `index.md` may stand in for `README.md`, and
|
|
55
|
-
`
|
|
55
|
+
`status.md` may stand in for `state.md`, while `proof.md` may stand in for
|
|
56
|
+
`evidence.md`.
|
|
56
57
|
|
|
57
|
-
###
|
|
58
|
+
### Workspace maps
|
|
58
59
|
|
|
59
|
-
The per-feature index.
|
|
60
|
+
The canonical per-feature index is `README.md`; `feature.md` and `index.md` are
|
|
61
|
+
readable aliases. A map may carry YAML frontmatter with:
|
|
60
62
|
|
|
61
63
|
| field | meaning |
|
|
62
64
|
| --------------- | ---------------------------------------------- |
|
|
@@ -65,9 +67,9 @@ The per-feature index. Its YAML frontmatter carries:
|
|
|
65
67
|
| `phase` | current workflow phase (see below) |
|
|
66
68
|
| `schemaVersion` | schema version the file was written against |
|
|
67
69
|
|
|
68
|
-
A feature exists when it has either a live `state.md` ledger or
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
A feature exists when it has either a live `state.md` ledger or a workspace map.
|
|
71
|
+
The mutable `state.md` cursor is authoritative when both declare a phase; an
|
|
72
|
+
unknown declared phase is an error.
|
|
71
73
|
|
|
72
74
|
## Sections
|
|
73
75
|
|
|
@@ -127,9 +129,12 @@ result: incomplete (missing: tasks)
|
|
|
127
129
|
does not gate — gating is issue 04).
|
|
128
130
|
- Unknown or missing slug → non-zero exit with a clear message on stderr.
|
|
129
131
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
`status` makes no model or network calls; it is a pure read of the files under
|
|
133
|
+
`DEVRITES_ROOT` (or the nearest `.devrites/` above the working directory). A
|
|
134
|
+
hand edit wins immediately because there is no status cache. Other workspace
|
|
135
|
+
control-plane commands share that deterministic boundary; explicit
|
|
136
|
+
install/update/source-cache I/O is isolated under `engine/internal/iohooks` as
|
|
137
|
+
defined by ADR-0008.
|
|
133
138
|
|
|
134
139
|
`.devrites/` is ignored **except** the capability ledger at `specs/`, which is
|
|
135
140
|
committed shared truth — the recommended pattern is `.devrites/*` +
|
|
@@ -34,7 +34,7 @@ Canonical live workspace:
|
|
|
34
34
|
plan.md # technical approach and slice strategy
|
|
35
35
|
tasks.md # vertical slices
|
|
36
36
|
traceability.md # AC/REQ -> slices -> tests/evidence/files matrix
|
|
37
|
-
state.md # compact cursor
|
|
37
|
+
state.md # compact cursor; status.md alias allowed
|
|
38
38
|
evidence.md # command/action proof; proof.md alias allowed
|
|
39
39
|
browser-evidence.md # optional UI/runtime browser proof
|
|
40
40
|
drift.md # optional spec/plan drift register
|
|
@@ -49,8 +49,9 @@ Canonical live workspace:
|
|
|
49
49
|
|
|
50
50
|
Backward compatibility: `.devrites/features/<slug>/` remains readable as an alias
|
|
51
51
|
for `.devrites/work/<slug>/`; `feature.md` and `index.md` remain valid workspace
|
|
52
|
-
maps; `
|
|
53
|
-
canonical files without
|
|
52
|
+
maps; `status.md` remains a cursor alias for `state.md`; `proof.md` remains a
|
|
53
|
+
proof alias for `evidence.md`. Migration should add the canonical files without
|
|
54
|
+
deleting aliases.
|
|
54
55
|
|
|
55
56
|
## Read Order
|
|
56
57
|
|
|
@@ -80,7 +81,7 @@ canonical files without deleting aliases.
|
|
|
80
81
|
| `plan.md` | required from plan | `/rite-define` | implementation approach | 220 lines | Approach, Slice strategy, Validation strategy, Rollback | HOW lives here, not in `spec.md`. `Validation strategy` names the Key links — cross-slice wiring `/rite-prove` walks (or `none` for single-slice features). |
|
|
81
82
|
| `tasks.md` | required from plan | `/rite-define` | build one slice | 280 lines | Slice index | Each `SLICE-###` has goal, AC IDs, likely files, tests/proof, mode, gate, dependencies, done condition. |
|
|
82
83
|
| `traceability.md` | required from plan | `/rite-define` | coverage/review/seal | 220 lines | Coverage matrix | Matrix maps AC/REQ ID, slice IDs, test/proof, evidence ID, touched files, status. |
|
|
83
|
-
| `state.md` | required | all phases | current cursor | 120 lines | Cursor | Compact table/key-value cursor; not an append-only narrative. |
|
|
84
|
+
| `state.md` / `status.md` | required | all phases | current cursor | 120 lines | Cursor | `state.md` is canonical; `status.md` is a compatibility alias. Compact table/key-value cursor; not an append-only narrative. |
|
|
84
85
|
| `evidence.md` / `proof.md` | required from prove | `/rite-build`, `/rite-prove` | proof and seal | 280 lines | Evidence log | `EVID-###`, command/action, result, related AC/slice IDs, limitations. Each acceptance criterion carries a proof class — `test` / `command` / `browser` / `judgment` (untagged reads `judgment`; `judgment` needs its one-line why). |
|
|
85
86
|
| `browser-evidence.md` | UI only | `/rite-prove`, `/rite-polish` | UI/browser proof | 220 lines | Browser evidence, Visual Verdict | Must reference real route/viewports/actions and related IDs. |
|
|
86
87
|
| `drift.md` | drift only | Spec Drift Guard | spec/plan reality mismatch | 160 lines | Drift register | `DRIFT-###`, status, evidence found, resolution, related IDs. |
|
package/docs/flow.md
CHANGED
|
@@ -10,22 +10,26 @@ For the full per-skill table, see [`command-map.md`](command-map.md). For the
|
|
|
10
10
|
|
|
11
11
|
The happy path. Every arrow assumes the readiness gate of the previous phase
|
|
12
12
|
passed; failures route through `/rite-plan repair` or `devrites-debug-recovery`.
|
|
13
|
-
|
|
13
|
+
`/rite-temper` is the optional strategic branch; `/rite-vet` runs on every
|
|
14
|
+
defined plan, with depth scaled to risk. HITL slices pause before code is
|
|
15
|
+
written; `/rite-resolve` is the resume verb.
|
|
14
16
|
|
|
15
17
|
```mermaid
|
|
16
18
|
flowchart LR
|
|
17
19
|
Start([user has an idea]) --> Spec[/rite-spec/]
|
|
18
20
|
Spec -.->|UI detected| Shape[devrites-ux-shape<br/>plan UX/UI → design-brief.md]
|
|
19
21
|
Shape -.->|brief confirmed| Spec
|
|
22
|
+
Spec -.->|big / risky| Temper[/rite-temper/] -.->|strategy.md| Define
|
|
20
23
|
Spec -->|spec.md ready| Define[/rite-define/]
|
|
21
|
-
Define -->|plan.md + tasks.md<br/>each slice tagged AFK/HITL|
|
|
24
|
+
Define -->|plan.md + tasks.md<br/>each slice tagged AFK/HITL| Vet[/rite-vet/]
|
|
25
|
+
Vet -->|every plan; light or full<br/>eng-review.md + test-plan.md| Build[/rite-build/]
|
|
22
26
|
Build -->|one slice done<br/>+ evidence| Build
|
|
23
27
|
Build -.->|"Forge: yes slice"| Forge[forge: K candidates<br/>→ devrites-forge-judge → 1 winner]
|
|
24
28
|
Forge -.->|winner lands<br/>forge-report.md| Build
|
|
25
29
|
Build -->|HITL gate fires| Await{{Awaiting human<br/>state.md + questions.md}}
|
|
26
30
|
Await -->|"/rite-resolve <qid> <answer>"| Build
|
|
27
31
|
Build -->|all slices built| Prove[/rite-prove/]
|
|
28
|
-
|
|
32
|
+
Build -.->|resumed / adopted / stalled<br/>code vs intent| Converge[/rite-converge/]
|
|
29
33
|
Converge -.->|appends remaining slices| Build
|
|
30
34
|
Prove -->|evidence captured| Polish[/rite-polish/]
|
|
31
35
|
Polish -->|polish-report.md| Review[/rite-review/]
|
|
@@ -45,7 +49,7 @@ flowchart LR
|
|
|
45
49
|
classDef repair fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
46
50
|
classDef gate fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
47
51
|
classDef internal fill:#0f172a,stroke:#9ca3af,color:#f9fafb
|
|
48
|
-
class Spec,Define,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
52
|
+
class Spec,Temper,Define,Vet,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
49
53
|
class Shipped done
|
|
50
54
|
class Repair repair
|
|
51
55
|
class Await gate
|
|
@@ -291,11 +295,12 @@ The exact list of files per workspace and what each holds is in
|
|
|
291
295
|
|
|
292
296
|
The `devrites-` prefix is collision-avoidance against bundled Claude Code
|
|
293
297
|
skills (`prototype`, `handoff`, `triage`, `diagnose`). Visibility is the
|
|
294
|
-
`user-invocable:` flag, not the prefix
|
|
298
|
+
`user-invocable:` flag, not the prefix; automatic model loading is controlled
|
|
299
|
+
separately by `disable-model-invocation`.
|
|
295
300
|
|
|
296
301
|
```mermaid
|
|
297
302
|
flowchart TB
|
|
298
|
-
subgraph Public["Public (user-invocable: true) —
|
|
303
|
+
subgraph Public["Public (user-invocable: true) — 30 skills"]
|
|
299
304
|
direction TB
|
|
300
305
|
R1[/rite/]
|
|
301
306
|
R2[/rite-spec/]
|
|
@@ -304,6 +309,7 @@ flowchart TB
|
|
|
304
309
|
RV[/rite-vet/]
|
|
305
310
|
R4[/rite-plan/]
|
|
306
311
|
R5[/rite-build/]
|
|
312
|
+
RC[/rite-converge/]
|
|
307
313
|
R6[/rite-prove/]
|
|
308
314
|
R7[/rite-polish/]
|
|
309
315
|
R8[/rite-review/]
|
|
@@ -317,6 +323,11 @@ flowchart TB
|
|
|
317
323
|
RA[/rite-adopt/]
|
|
318
324
|
RL[/rite-learn/]
|
|
319
325
|
RD[/rite-doctor/]
|
|
326
|
+
RE[/rite-explain/]
|
|
327
|
+
RCU[/rite-customize/]
|
|
328
|
+
RDO[/rite-dogfood/]
|
|
329
|
+
RPOV[/rite-pov/]
|
|
330
|
+
RPF[/rite-pr-feedback/]
|
|
320
331
|
IPT[/rite-pressure-test/]
|
|
321
332
|
D1[/rite-zoom-out/]
|
|
322
333
|
D2[/rite-prototype/]
|
|
@@ -340,7 +351,7 @@ flowchart TB
|
|
|
340
351
|
|
|
341
352
|
classDef pub fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
342
353
|
classDef int fill:#1f2937,stroke:#9ca3af,color:#f9fafb
|
|
343
|
-
class R1,R2,RT,R3,RV,R4,R5,R6,R7,R8,R9,R12,R13,R10,R11,RQ,RF,RA,RL,RD,IPT,D1,D2,D3 pub
|
|
354
|
+
class R1,R2,RT,R3,RV,R4,R5,RC,R6,R7,R8,R9,R12,R13,R10,R11,RQ,RF,RA,RL,RD,RE,RCU,RDO,RPOV,RPF,IPT,D1,D2,D3 pub
|
|
344
355
|
class I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12 int
|
|
345
356
|
```
|
|
346
357
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Porting DevRites to a new harness
|
|
2
2
|
|
|
3
|
-
DevRites
|
|
3
|
+
DevRites' canonical distribution path is `npx devrites` (with the documented
|
|
4
|
+
Bash bootstrap as a Node-free alternative), and host artifacts install into the
|
|
5
|
+
target project. Do not add a harness through a Claude/Codex plugin or marketplace path.
|
|
4
6
|
|
|
5
7
|
Before adding a host, add its thin adapter to `engine/internal/harness/harness.go`,
|
|
6
8
|
update the frozen matrix in `compliance.go`, and prove the host can run DevRites
|
|
@@ -20,7 +22,9 @@ The harness must invoke DevRites and route to `/rite-spec` (or the host's explic
|
|
|
20
22
|
- Session/project orientation runs automatically at startup/compact/resume, or the missing surface is recorded in `docs/harness-compliance.md`.
|
|
21
23
|
- `devrites-engine` hooks/gates are wired, or each degraded gate has an honest fallback and confidence label.
|
|
22
24
|
- Subagent support is mapped; if unavailable, reviewers/wrights use the documented inline fallback and label it.
|
|
23
|
-
-
|
|
25
|
+
- Skills, agents, standards, hooks, and harness guidance stay project-local;
|
|
26
|
+
the optional shared `devrites-engine` executable is the sole sanctioned
|
|
27
|
+
global artifact and must remain skippable with `--no-binary`.
|
|
24
28
|
- Generated artifacts and `docs/harness-compliance.md` are updated from the same source of truth.
|
|
25
29
|
- Routing eval includes the React todo-list acceptance prompt.
|
|
26
30
|
|
package/docs/release.md
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# Release pipeline
|
|
2
2
|
|
|
3
|
-
Releases are **fully automated** via [semantic-release](https://semantic-release.gitbook.io/): every push to `main` is analyzed; if the merged commits carry a `feat:`, `fix:`, `perf:`, `refactor:`, `build:`, `docs(README):` (or a `BREAKING CHANGE:` footer) the `.github/workflows/
|
|
3
|
+
Releases are **fully automated** via [semantic-release](https://semantic-release.gitbook.io/): every push to `main` is analyzed; if the merged commits carry a `feat:`, `fix:`, `perf:`, `refactor:`, `build:`, `docs(README):` (or a `BREAKING CHANGE:` footer), the `release` job in [`.github/workflows/ci.yml`](../.github/workflows/ci.yml) determines the next SemVer version and:
|
|
4
4
|
|
|
5
|
-
1.
|
|
6
|
-
2.
|
|
7
|
-
3.
|
|
8
|
-
4.
|
|
9
|
-
5.
|
|
10
|
-
6.
|
|
5
|
+
1. Waits for the workflow's validation, full shell suite, strict Go-engine checks, Linux cross-compile smoke, and Windows Go tests.
|
|
6
|
+
2. Regenerates `CHANGELOG.md` from the commits.
|
|
7
|
+
3. Syncs the new version into `package.json` and the README status line (`scripts/sync-version.sh`).
|
|
8
|
+
4. Builds `dist/devrites-v<version>.tar.gz` plus its SHA-256 sidecar via `scripts/build-release-tarball.sh`. The extractable bundle used by `curl | bash` includes host-native Claude/Codex artifacts regenerated from `pack/.claude/` into `pack/generated/`.
|
|
9
|
+
5. Cross-compiles five `devrites-engine` release binaries (macOS arm64/amd64, Linux arm64/amd64, Windows amd64) plus a SHA-256 sidecar for each.
|
|
10
|
+
6. Publishes the `devrites` package to npm (`@semantic-release/npm`, requiring `NPM_TOKEN`) — this is what `npx devrites@latest` resolves. `npm pack` regenerates the same `pack/generated/` artifacts during `prepack`; there is no `postpack` cleanup step.
|
|
11
|
+
7. Commits the version bump + changelog as `chore(release): <version> [skip ci]`, creates tag `v<version>`, and publishes a GitHub Release with the tarball, checksum, binaries, and binary checksum sidecars attached.
|
|
11
12
|
|
|
12
|
-
Local dry-run: `npm run release:dry` (shows the version
|
|
13
|
+
Local dry-run: `npm run release:dry` (shows the proposed version + notes without publishing). For a manual preflight, `bash scripts/release-check.sh` builds an evidence packet covering generated-pack freshness, tarball checksum presence, `npx-pack-smoke`, install/update/uninstall, `validate-pack`, behavioral-eval schema, and the documented npm distribution path. This preflight is available to maintainers but is not a hidden semantic-release step. DevRites is not shipped through Claude or Codex plugin stores. The release job is gated by passing CI — a broken `main` won't ship.
|
|
13
14
|
|
|
14
15
|
## Authoring commits that trigger releases
|
|
15
16
|
|
|
@@ -25,6 +26,6 @@ Husky + commitlint reject non-conventional messages at commit time, so you can't
|
|
|
25
26
|
|
|
26
27
|
## Dependency updates
|
|
27
28
|
|
|
28
|
-
Dependabot watches the `npm` and `github-actions` ecosystems and opens
|
|
29
|
+
Dependabot watches the `npm` and `github-actions` ecosystems and opens **weekly grouped PRs** for routine patch + minor bumps (see [`.github/dependabot.yml`](../.github/dependabot.yml)). The [`dependabot-auto-merge.yml`](../.github/workflows/dependabot-auto-merge.yml) workflow auto-approves + enables auto-merge (squash) on those PRs so they land when required checks are green. Major-version bumps stay open with a `needs-review` label so a human can scan the changelog before merging.
|
|
29
30
|
|
|
30
31
|
> GitHub does not allow Dependabot to push directly to `main` — a PR is always opened. Auto-merge is the closest equivalent. Required CI checks still gate the merge.
|
package/docs/skills.md
CHANGED
|
@@ -132,7 +132,7 @@ blocks obvious multi-command `Next:` wording.
|
|
|
132
132
|
|---|---|---|
|
|
133
133
|
| [`rite-review`](../pack/.claude/skills/rite-review/SKILL.md) | Multi-axis feature-scoped review. Parallel **Spec axis** (`devrites-spec-reviewer`) + **Standards axis** (`devrites-code-reviewer`) sub-agents; severity-labeled findings. | Polish done; ready for a final pass. |
|
|
134
134
|
| [`devrites-doubt`](../pack/.claude/skills/devrites-doubt/SKILL.md) | In-flight adversarial review of risky decisions — branching logic, boundaries, data/auth/API changes, migrations. | About to stand a "this is safe / scales / matches spec" claim. |
|
|
135
|
-
| [`devrites-audit`](../pack/.claude/skills/devrites-audit/SKILL.md) | Read-only audit dispatch — picks the right reviewer subagent on the requested axis (`security` / `perf` / `simplify`). Single-axis only; multi-axis parallel fan-out lives inline in `/rite-seal` (see
|
|
135
|
+
| [`devrites-audit`](../pack/.claude/skills/devrites-audit/SKILL.md) | Read-only audit dispatch — picks the right reviewer subagent on the requested axis (`security` / `perf` / `simplify`). Single-axis only; multi-axis parallel fan-out lives inline in `/rite-seal` (see the [shared dispatch contract](../pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md)). | Polish Phase 1 (`simplify`); review involves user input / auth / data / external integrations / secrets / permissions (`security`); performance is relevant or regression risk visible (`perf`). |
|
|
136
136
|
|
|
137
137
|
### Seal — GO / NO-GO decision
|
|
138
138
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Critic review packet
|
|
2
|
+
|
|
3
|
+
Use only when an independent critic review is requested. Keep the packet
|
|
4
|
+
bounded; omit conversation history, raw logs, abandoned approaches, secrets,
|
|
5
|
+
private data, and broad repository scans.
|
|
6
|
+
|
|
7
|
+
## Candidate
|
|
8
|
+
|
|
9
|
+
- Repository:
|
|
10
|
+
- Base commit:
|
|
11
|
+
- Candidate commit or immutable snapshot:
|
|
12
|
+
- Changed files:
|
|
13
|
+
|
|
14
|
+
## Purpose and boundaries
|
|
15
|
+
|
|
16
|
+
- Requested outcome:
|
|
17
|
+
- Explicit exclusions:
|
|
18
|
+
- Acceptance checklist:
|
|
19
|
+
- Direct authority files/sections:
|
|
20
|
+
|
|
21
|
+
## Evidence
|
|
22
|
+
|
|
23
|
+
- Focused tests and results:
|
|
24
|
+
- Known risks or unresolved questions:
|
|
25
|
+
|
|
26
|
+
## Requested report
|
|
27
|
+
|
|
28
|
+
Return one consolidated report containing:
|
|
29
|
+
|
|
30
|
+
1. Critical/high findings with exact file/line or reproducible evidence.
|
|
31
|
+
2. Impact and required correction for each finding.
|
|
32
|
+
3. Lower-severity observations separately.
|
|
33
|
+
4. Final disposition: accept, accept after listed corrections, or reject.
|
|
34
|
+
|
|
35
|
+
Do not edit the candidate and do not report style preferences as blocking.
|
package/docs/usage.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# DevRites — usage
|
|
2
2
|
|
|
3
|
-
Worked workflows.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Worked workflows. A full greenfield lifecycle starts with `/rite-spec`; a
|
|
4
|
+
brownfield codebase may enter through `/rite-adopt`, while `/rite-quick` and
|
|
5
|
+
`/rite-frame` deliberately handle bounded work outside the full feature arc.
|
|
6
|
+
Workspace-operating phases read the active workspace (`.devrites/ACTIVE` →
|
|
7
|
+
`.devrites/work/<slug>/`) first and report the appropriate on-ramp when none exists.
|
|
7
8
|
|
|
8
9
|
- **Full command reference** → [`command-map.md`](command-map.md)
|
|
9
10
|
- **Flow diagrams** → [`flow.md`](flow.md)
|
|
@@ -28,10 +29,10 @@ survives compaction and new sessions:
|
|
|
28
29
|
| `plan.md` | `/rite-define` | approach, dependency graph, checkpoints, rollback |
|
|
29
30
|
| `tasks.md` | `/rite-define` | ordered `SLICE-###` vertical slices, each mapped to `AC-###` and tagged `Mode: AFK \| HITL` + gate fields |
|
|
30
31
|
| `traceability.md` | `/rite-define` | AC/REQ → slices → tests/proofs → evidence → touched files matrix |
|
|
31
|
-
| `eng-review.md` | `/rite-vet` | engineering plan review
|
|
32
|
+
| `eng-review.md` | `/rite-vet` | mandatory engineering plan review, light or full by stakes: scope challenge, axis findings, failure modes, parallelization |
|
|
32
33
|
| `test-plan.md` | `/rite-vet` | build-readable coverage target: coverage diagram, per-gap test requirements, acceptance→test map (read by `/rite-build` + `/rite-prove`) |
|
|
33
|
-
| `status.md` | every phase | canonical status checkpoint |
|
|
34
34
|
| `state.md` | every phase | working ledger: phase, active slice + slice mode, risk, next step; plus `Awaiting human` block when paused (run mode is derived from `.devrites/AFK`, not stored here) |
|
|
35
|
+
| `status.md` | every phase | compatibility alias for the canonical `state.md` cursor |
|
|
35
36
|
| `questions.md` | every phase | append-only Q&A — qid, slice, gate, status (`open` / `answered` / `dropped`), proposed answer, raised/answered timestamps |
|
|
36
37
|
| `decisions.md` / `assumptions.md` | every phase | running logs |
|
|
37
38
|
| `drift.md` | Spec Drift Guard | drift events + resolutions |
|
|
@@ -53,7 +54,8 @@ on under `.devrites/archive/<slug>/`.
|
|
|
53
54
|
Backward compatibility: older `.devrites/features/<slug>/` workspaces remain
|
|
54
55
|
readable; migration should add the canonical `.devrites/work` shape without
|
|
55
56
|
deleting the old files. `feature.md`/`index.md` can still act as the workspace
|
|
56
|
-
map,
|
|
57
|
+
map, `status.md` as the cursor alias for `state.md`, and `proof.md` as the proof
|
|
58
|
+
alias for `evidence.md`.
|
|
57
59
|
|
|
58
60
|
Project-root sentinel (outside the workspace):
|
|
59
61
|
|
|
@@ -82,6 +84,10 @@ You: I want some kind of reporting thing for admins.
|
|
|
82
84
|
→ reads the approved spec
|
|
83
85
|
→ writes plan.md + vertical task slices + state
|
|
84
86
|
→ stops for confirmation
|
|
87
|
+
|
|
88
|
+
/rite-vet
|
|
89
|
+
→ reviews every defined plan; uses a light or full pass based on stakes
|
|
90
|
+
→ writes eng-review.md + test-plan.md before build
|
|
85
91
|
```
|
|
86
92
|
|
|
87
93
|
## 2) Normal feature — the build loop
|
|
@@ -89,6 +95,7 @@ You: I want some kind of reporting thing for admins.
|
|
|
89
95
|
```text
|
|
90
96
|
/rite-spec add-csv-export # investigate → spec.md
|
|
91
97
|
/rite-define # spec → plan + vertical slices + state
|
|
98
|
+
/rite-vet # mandatory plan review; light or full based on stakes
|
|
92
99
|
/rite-build # slice 1 ("export endpoint returns CSV"); stops with evidence
|
|
93
100
|
/rite-build # slice 2 ("download button + states"); repeat for each slice
|
|
94
101
|
/rite-prove # ONCE all slices built: full tests + browser proof
|
|
@@ -139,6 +146,9 @@ You: 2
|
|
|
139
146
|
/rite-define
|
|
140
147
|
→ spec → slices; UI slice marked frontend-craft + browser-proof
|
|
141
148
|
|
|
149
|
+
/rite-vet
|
|
150
|
+
→ hardens the UI plan + acceptance-to-test coverage before code
|
|
151
|
+
|
|
142
152
|
/rite-build
|
|
143
153
|
→ UI slice → devrites-frontend-craft: register = product surface, **match
|
|
144
154
|
the saved references**, shape the states (default/loading/empty/error/
|
|
@@ -167,6 +177,7 @@ with exact steps — the seal then weighs the UI risk.
|
|
|
167
177
|
```text
|
|
168
178
|
/rite-spec rate-limit-api # investigate → spec.md (no UI)
|
|
169
179
|
/rite-define # spec → plan + slices
|
|
180
|
+
/rite-vet # mandatory plan review; checks architecture, tests, perf
|
|
170
181
|
/rite-build # no UI → no frontend craft / browser proof
|
|
171
182
|
/rite-prove # targeted tests + build/typecheck; runtime check of the limiter
|
|
172
183
|
/rite-polish # reference/code.md only (no UI scope detected)
|
|
@@ -324,15 +335,14 @@ it stops. Args: `[idea] [--ship|--yolo] [--max-slices N]`.
|
|
|
324
335
|
read-only config: it toggles your local session mode and sets the initial
|
|
325
336
|
`max_slices` budget; nothing else. The mutable remaining-slice count lives
|
|
326
337
|
in `state.md` (`AFK slices remaining`), never in the sentinel.
|
|
327
|
-
- One feature active at a time (`ACTIVE`).
|
|
328
|
-
`/rite-spec <
|
|
329
|
-
spec).
|
|
338
|
+
- One feature active at a time (`ACTIVE`). Start a new workspace with
|
|
339
|
+
`/rite-spec <feature>`; switch to an existing one with `/rite use <slug>`.
|
|
330
340
|
- **Recommended AFK progression**: HITL first to refine the prompt and plan,
|
|
331
341
|
then drop the sentinel for the bulk stretch. Always cap iterations
|
|
332
342
|
(`max_slices: 10` is a reasonable default).
|
|
333
|
-
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
-
|
|
337
|
-
|
|
338
|
-
[`command-map.md`](command-map.md).
|
|
343
|
+
- Invoke public `rite` / `rite-*` skills directly; let the model-invocable
|
|
344
|
+
`devrites-*` specialists fire from their documented triggers. `devrites-lib`
|
|
345
|
+
is an internal reference library, not a workflow.
|
|
346
|
+
- Prefixes are namespaces, not invocation policy. `user-invocable` and
|
|
347
|
+
`disable-model-invocation` frontmatter are authoritative; the effective policy
|
|
348
|
+
for every skill is catalogued in [`command-map.md`](command-map.md).
|