devrites 3.1.0 → 3.2.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 (80) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +20 -8
  3. package/docs/adr/0012-semantic-workspace-upgrades.md +77 -0
  4. package/docs/adr/README.md +1 -0
  5. package/docs/architecture.md +31 -10
  6. package/docs/cli.md +10 -4
  7. package/docs/command-map.md +15 -6
  8. package/docs/engine/commands.md +6 -0
  9. package/docs/engine/workspace-schema.md +10 -1
  10. package/docs/flow.md +12 -7
  11. package/docs/orchestration.md +2 -2
  12. package/docs/quick-reference.md +4 -0
  13. package/docs/skills.md +8 -5
  14. package/docs/usage.md +31 -5
  15. package/engine/internal/lib/buildreadiness.go +9 -1
  16. package/engine/internal/lib/readiness_contract.json +8 -1
  17. package/engine/internal/lib/readinessartifact.go +28 -5
  18. package/engine/internal/lib/readinessartifact_test.go +105 -4
  19. package/engine/testdata/golden/TestParityBuildReadiness/arg=legacycontract.golden +1 -0
  20. package/engine/tests/parity_buildreadiness_test.go +27 -1
  21. package/pack/.claude/agents/devrites-plan-drafter.md +3 -1
  22. package/pack/.claude/agents/devrites-upgrade-planner.md +100 -0
  23. package/pack/.claude/skills/devrites-lib/SKILL.md +2 -1
  24. package/pack/.claude/skills/devrites-lib/reference/intent-map.md +1 -0
  25. package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +3 -1
  26. package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +17 -0
  27. package/pack/.claude/skills/rite/SKILL.md +2 -0
  28. package/pack/.claude/skills/rite/reference/menu.md +5 -1
  29. package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -1
  30. package/pack/.claude/skills/rite-build/reference/phase-contract.md +3 -3
  31. package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
  32. package/pack/.claude/skills/rite-clarify/SKILL.md +2 -1
  33. package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +3 -1
  34. package/pack/.claude/skills/rite-define/SKILL.md +2 -1
  35. package/pack/.claude/skills/rite-define/reference/plan-template.md +3 -1
  36. package/pack/.claude/skills/rite-plan/SKILL.md +4 -1
  37. package/pack/.claude/skills/rite-upgrade/SKILL.md +125 -0
  38. package/pack/.claude/skills/rite-vet/SKILL.md +6 -2
  39. package/pack/.claude/skills/rite-vet/reference/artifacts.md +9 -1
  40. package/pack/generated/claude/agents/devrites-plan-drafter.md +3 -1
  41. package/pack/generated/claude/agents/devrites-upgrade-planner.md +100 -0
  42. package/pack/generated/claude/skills/devrites-lib/SKILL.md +2 -1
  43. package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +1 -0
  44. package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +3 -1
  45. package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +17 -0
  46. package/pack/generated/claude/skills/rite/SKILL.md +2 -0
  47. package/pack/generated/claude/skills/rite/reference/menu.md +5 -1
  48. package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +3 -1
  49. package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +3 -3
  50. package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
  51. package/pack/generated/claude/skills/rite-clarify/SKILL.md +2 -1
  52. package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +3 -1
  53. package/pack/generated/claude/skills/rite-define/SKILL.md +2 -1
  54. package/pack/generated/claude/skills/rite-define/reference/plan-template.md +3 -1
  55. package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -1
  56. package/pack/generated/claude/skills/rite-upgrade/SKILL.md +125 -0
  57. package/pack/generated/claude/skills/rite-vet/SKILL.md +6 -2
  58. package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +9 -1
  59. package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -1
  60. package/pack/generated/codex/agents/devrites-upgrade-planner.toml +106 -0
  61. package/pack/generated/codex/skills/devrites-lib/SKILL.md +2 -1
  62. package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +1 -0
  63. package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +3 -1
  64. package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +17 -0
  65. package/pack/generated/codex/skills/rite/SKILL.md +2 -0
  66. package/pack/generated/codex/skills/rite/reference/menu.md +5 -1
  67. package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +3 -1
  68. package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +3 -3
  69. package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +10 -4
  70. package/pack/generated/codex/skills/rite-clarify/SKILL.md +2 -1
  71. package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +3 -1
  72. package/pack/generated/codex/skills/rite-define/SKILL.md +2 -1
  73. package/pack/generated/codex/skills/rite-define/reference/plan-template.md +3 -1
  74. package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -1
  75. package/pack/generated/codex/skills/rite-upgrade/SKILL.md +141 -0
  76. package/pack/generated/codex/skills/rite-upgrade/agents/openai.yaml +2 -0
  77. package/pack/generated/codex/skills/rite-vet/SKILL.md +6 -2
  78. package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +9 -1
  79. package/package.json +1 -1
  80. package/scripts/run-outcome-evals.sh +33 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [3.2.0](https://github.com/ViktorsBaikers/DevRites/compare/v3.1.0...v3.2.0) (2026-07-24)
6
+
7
+ ### Added
8
+
9
+ * **rite:** add semantic workspace upgrades ([3a7e51d](https://github.com/ViktorsBaikers/DevRites/commit/3a7e51d478fe9ed19c4de1ee4988e43d63ecf9a2))
10
+
5
11
  ## [3.1.0](https://github.com/ViktorsBaikers/DevRites/compare/v3.0.7...v3.1.0) (2026-07-24)
6
12
 
7
13
  ### Added
package/README.md CHANGED
@@ -25,7 +25,7 @@ final commit, push, and tag, and it requires a typed `GO` confirmation.
25
25
  Unattended runs may create local WIP checkpoint commits along the way, but only
26
26
  Ship collapses and pushes them.
27
27
 
28
- **Status:** [`v3.1.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v3.1.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
28
+ **Status:** [`v3.2.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v3.2.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
29
29
 
30
30
  ## Quick start
31
31
 
@@ -85,6 +85,7 @@ the same skill.
85
85
  | 10 | Review | [`/rite-review`](pack/.claude/skills/rite-review/SKILL.md) | Reviews the completed feature against its spec and engineering standards. |
86
86
  | 11 | Seal | [`/rite-seal`](pack/.claude/skills/rite-seal/SKILL.md) | Writes the final `GO` or `NO-GO` decision without changing git. |
87
87
  | 12 | Ship | [`/rite-ship`](pack/.claude/skills/rite-ship/SKILL.md) | On `GO`, asks for typed confirmation, performs the approved git actions, and archives the workspace. |
88
+ | n/a | Upgrade *(conditional)* | [`/rite-upgrade [slug]`](pack/.claude/skills/rite-upgrade/SKILL.md) | Brings an active unfinished workspace onto the current planning contract without rewriting completed work or evidence. Build readiness sends stale workspaces here automatically. |
88
89
 
89
90
  Some work needs a different route:
90
91
 
@@ -93,8 +94,16 @@ Some work needs a different route:
93
94
  - [`/rite-autocomplete`](pack/.claude/skills/rite-autocomplete/SKILL.md) runs
94
95
  the lifecycle unattended. With `--ship`, it auto-confirms the final typed
95
96
  `GO`; without that flag, it stops and waits for you.
97
+ - [`/rite-upgrade [slug]`](pack/.claude/skills/rite-upgrade/SKILL.md) is a
98
+ maintenance route for an active workspace planned under older DevRites
99
+ rules. It is not a mandatory lifecycle phase.
96
100
  - [`/rite`](pack/.claude/skills/rite/SKILL.md) shows the command menu.
97
101
 
102
+ `devrites-engine update` refreshes the installed engine and pack.
103
+ `devrites-engine migrate` normalizes workspace layout and structural state.
104
+ Neither replaces `/rite-upgrade`, which reconciles unfinished planning
105
+ semantics while preserving completed work.
106
+
98
107
  The [command map](docs/command-map.md) covers every command, trigger, input, and
99
108
  output. The [worked examples](docs/usage.md) show normal features, plan drift,
100
109
  UI work, backend work, and mid-flight handoffs.
@@ -146,9 +155,11 @@ Some phases add focused artifacts such as `strategy.md`, `design-brief.md`,
146
155
  its proof before returning control. Before dispatching the sole writer, the
147
156
  root writes an exact `.wright-allowlist`. Reconciliation and integrity gates
148
157
  use the same pre-slice baseline.
149
- - **Stop on drift.** If implementation no longer matches the plan, the Spec
150
- Drift Guard records the mismatch in `drift.md` and routes through
151
- [`/rite-plan repair`](pack/.claude/skills/rite-plan/SKILL.md).
158
+ - **Classify drift before routing.** The Spec Drift Guard records the mismatch
159
+ in `drift.md`. Build handles objective implementation and tool failures with
160
+ bounded recovery; it uses
161
+ [`/rite-plan repair`](pack/.claude/skills/rite-plan/SKILL.md) only when the
162
+ durable plan is wrong, and asks you only for a real product or risk decision.
152
163
  - **Prove claims.** Tests, commands, output, and opened screenshots support
153
164
  completion claims. A screenshot path by itself is not proof.
154
165
  - **Separate the decision from the action.** Seal makes the release decision.
@@ -275,14 +286,15 @@ through Claude Code or Codex plugin stores.
275
286
 
276
287
  ## Skills and agents
277
288
 
278
- The pack ships 43 skills: 31 public and 12 internal. The public surface contains
279
- the `rite` menu and 30 `rite-*` workflows and utilities. Eleven `devrites-*`
289
+ The pack ships 44 skills: 32 public and 12 internal. The public surface contains
290
+ the `rite` menu and 31 `rite-*` workflows and utilities. Eleven `devrites-*`
280
291
  specialists load when a matching task needs them; `devrites-lib` carries the
281
292
  shared contracts and engineering standards.
282
293
 
283
- Seventeen fresh-context agents ship with the pack. Sixteen are read-only,
294
+ Eighteen fresh-context agents ship with the pack. Seventeen are read-only,
284
295
  including the evidence scout, plan drafter, proof runner, reviewers, judges,
285
- and retrospector. `devrites-slice-wright` is the only source/test writer.
296
+ upgrade planner, and retrospector. `devrites-slice-wright` is the only
297
+ source/test writer.
286
298
 
287
299
  The authoritative [skills catalogue](docs/skills.md) lists every skill and
288
300
  agent. The [flow diagrams](docs/flow.md) show routing, reviewer fan-out, and
@@ -0,0 +1,77 @@
1
+ # ADR-0012: Separate semantic workspace upgrades from structural migration
2
+
3
+ - **Status:** Accepted
4
+ - **Date:** 2026-07-24
5
+
6
+ ## Context
7
+
8
+ Updating DevRites replaces the installed engine, skills, agents, and hooks. It
9
+ does not prove that an active workspace was planned under the rules shipped by
10
+ that update.
11
+
12
+ The existing `devrites-engine migrate` command has a narrower job: it repairs
13
+ workspace layout, aliases, and state schema. Extending it to rewrite plans would
14
+ mix structural storage changes with product decisions and could damage completed
15
+ work.
16
+
17
+ This distinction matters most for long-running workspaces. A plan may still be
18
+ internally consistent while carrying an obsolete proof recipe, a local command
19
+ wrapper, or readiness evidence produced by an older workflow. Byte hashes alone
20
+ cannot tell us that those instructions remain valid.
21
+
22
+ ## Decision
23
+
24
+ DevRites will keep three upgrade operations separate:
25
+
26
+ | Operation | Responsibility |
27
+ | --- | --- |
28
+ | `devrites-engine update` | Update the installed engine and workflow pack. |
29
+ | `devrites-engine migrate` | Normalize workspace layout and structural state schema. |
30
+ | `/rite-upgrade [slug]` | Reconcile an active workspace with the current semantic planning contract. |
31
+
32
+ Semantic compatibility is versioned by the readiness-artifact contract, not by
33
+ the DevRites release number or workspace state schema. The current contract is
34
+ `devrites.readiness-artifacts.v2`.
35
+
36
+ `decision-coverage.md`, `eng-review.md`, and `test-plan.md` declare the semantic
37
+ contract that produced them. Build readiness returns code `8`
38
+ (`upgrade-required`) when existing readiness artifacts use an older, missing,
39
+ or incompatible contract, and routes the workspace to `/rite-upgrade`.
40
+
41
+ `/rite-upgrade` is desired-state reconciliation, not a replay of historical
42
+ migrations. It:
43
+
44
+ - works only on the active unfinished planning surface;
45
+ - preserves product source, completed slice bodies, proof, evidence, and
46
+ accepted decisions;
47
+ - removes obsolete engine-repair recipes and machine-local command wrappers
48
+ from active canonical plans;
49
+ - reruns current coverage, planning, and engineering-readiness checks;
50
+ - asks the user only when the current contract exposes a real product or risk
51
+ decision; and
52
+ - makes no changes when the workspace is already current and ready, completed,
53
+ or archived.
54
+
55
+ A fresh read-only `devrites-upgrade-planner` classifies the gap before any
56
+ mutation. The public skill remains the sole writer and verifies the resulting
57
+ workspace before build resumes.
58
+
59
+ ## Alternatives considered
60
+
61
+ | Option | Why not |
62
+ | --- | --- |
63
+ | Treat the installed DevRites release as the workspace contract | Release numbers describe the whole product and do not say which planning semantics produced an artifact. |
64
+ | Extend `devrites-engine migrate` to rewrite planning artifacts | Structural migration cannot safely make product judgments or distinguish completed evidence from unfinished instructions. |
65
+ | Replay one migration for every historical release | It would preserve obsolete intermediate mechanics and make long-lived workspaces depend on an ever-growing migration chain. Desired-state reconciliation is smaller and safer. |
66
+ | Force users to restart old workspaces | It discards trustworthy completed work and evidence without improving the unfinished plan. |
67
+
68
+ ## Consequences
69
+
70
+ - Updating DevRites cannot silently certify an old plan as current.
71
+ - Structural migration stays deterministic and safe to run independently.
72
+ - Active work can move forward without discarding trustworthy completed
73
+ evidence or recreating an old engine.
74
+ - New semantic rules require a readiness-contract revision and a bounded
75
+ desired-state upgrade path.
76
+ - Archived workspaces remain historical records rather than being rewritten to
77
+ match current conventions.
@@ -57,3 +57,4 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
57
57
  | [0009](0009-prebuild-decision-coverage-and-readiness.md) | Pre-build decision coverage and implementation readiness | Accepted | `internal/state/state_test.go`, `tests/parity_buildreadiness_test.go` |
58
58
  | [0010](0010-agent-first-fresh-context-orchestration.md) | Agent-first fresh-context orchestration | Accepted | `tests/hook_test.go`, `tests/codex-agent-generation-test.sh` |
59
59
  | [0011](0011-define-plan-transition-rights.md) | Separate Define authoring from the Plan checkpoint | Accepted | `internal/state/state_test.go`, `tests/adr_0011_define_plan_test.go` |
60
+ | [0012](0012-semantic-workspace-upgrades.md) | Separate semantic workspace upgrades from structural migration | Accepted | `tests/parity_buildreadiness_test.go` |
@@ -19,15 +19,17 @@ traceability rules, and phase-relative completeness model, see
19
19
  `rite-vet`, `rite-build`, recovery `rite-converge`, `rite-prove`,
20
20
  `rite-polish`, `rite-review`, `rite-seal`, and `rite-ship`. `rite-plan`
21
21
  repairs or reslices an active plan. The resume verb `rite-resolve` answers a
22
- HITL gate and clears `Awaiting human`. The thin `/rite` menu and read-only
23
- `rite-status` live in the public utility layer below.
22
+ HITL gate and clears `Awaiting human`. `rite-upgrade` is a conditional
23
+ maintenance route for semantically stale active workspaces, not a lifecycle
24
+ phase. The thin `/rite` menu and read-only `rite-status` live in the public
25
+ utility layer below.
24
26
  `/rite-seal` **decides** GO/NO-GO and writes the verdict to `seal.md`;
25
27
  `/rite-ship` is the final core lifecycle rite that **executes** the
26
28
  irreversible git ladder and **closes** the task by archiving the workspace
27
29
  and clearing `ACTIVE`. Separate steps let users audit the release decision
28
30
  before any irreversible action.
29
31
  2. **Public utility and on-ramp skills**: `rite-adopt`, `rite-quick`,
30
- `rite-frame`, `rite-status`, `rite-doctor`, `rite-learn`, `rite-explain`,
32
+ `rite-frame`, `rite-status`, `rite-doctor`, `rite-upgrade`, `rite-learn`, `rite-explain`,
31
33
  `rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
32
34
  `rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
33
35
  `rite-autocomplete`. These are public commands. `rite-autocomplete` is the
@@ -56,12 +58,13 @@ traceability rules, and phase-relative completeness model, see
56
58
  4. **Supporting references**: `reference/*.md` inside each skill. Long checklists,
57
59
  templates, and anti-rationalization tables loaded on demand (progressive
58
60
  disclosure) so `SKILL.md` bodies stay small.
59
- 5. **Agents**: `.claude/agents/devrites-*` contains **17 flat depth-one roles**:
60
- 16 read-only leaves and the sole source/test writer,
61
+ 5. **Agents**: `.claude/agents/devrites-*` contains **18 flat depth-one roles**:
62
+ 17 read-only leaves and the sole source/test writer,
61
63
  `devrites-slice-wright`. The read-only set includes three bounded work
62
64
  leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
63
- `devrites-proof-runner`) plus the existing reviewers, auditors, judge, and
64
- retrospector. Public rites remain authoritative: leaves return typed
65
+ `devrites-proof-runner`), the fresh `devrites-upgrade-planner`, plus the
66
+ existing reviewers, auditors, judge, and retrospector. Public rites remain
67
+ authoritative: leaves return typed
65
68
  evidence, never ask the human, change phase, or write canonical
66
69
  `.devrites/**` state. See [`orchestration.md`](orchestration.md) for the
67
70
  dispatch, fallback, identity, and reconciliation contract.
@@ -138,6 +141,24 @@ generated into `pack/generated/**` and installed to `.agents/skills`, `.codex/ag
138
141
  different project-local conventions. Those generated host artifacts are delivered by the
139
142
  npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
140
143
 
144
+ ### Why semantic upgrade is separate from update and migration
145
+
146
+ Three operations solve different problems. `devrites-engine update` refreshes
147
+ the installed binary and pack. `devrites-engine migrate` normalizes workspace
148
+ layout and structural state schema. Neither one can claim that an active plan
149
+ still follows the current planning rules.
150
+
151
+ `/rite-upgrade [slug]` owns that semantic reconciliation. Build readiness uses
152
+ the `devrites.readiness-artifacts.v2` contract declared by
153
+ `decision-coverage.md`, `eng-review.md`, and `test-plan.md`; it returns code `8`
154
+ when those existing artifacts are stale. The rite then asks a fresh read-only
155
+ `devrites-upgrade-planner` to classify the gap before the root changes anything.
156
+ It preserves completed source, slice bodies, decisions, and evidence, repairs
157
+ only active unfinished planning, removes obsolete proof recipes and local
158
+ wrappers, and reruns the current readiness gates. Already-current workspaces
159
+ that pass readiness, completed workspaces, and archives remain untouched. See
160
+ [ADR-0012](adr/0012-semantic-workspace-upgrades.md).
161
+
141
162
  ### Why `/engine` was rejected
142
163
  A single `/engine` (or `/devrites`) command would load every phase's
143
164
  instructions into one context. That would increase context pressure, obscure
@@ -278,8 +299,8 @@ contract.
278
299
 
279
300
  ## Design choices at a glance
280
301
 
281
- - **Surface**: 30 public `rite-*` skills (43 total), plus the thin `/rite`
282
- menu: 31 public and 12 internal. The lifecycle
302
+ - **Surface**: 31 public `rite-*` skills (44 total), plus the thin `/rite`
303
+ menu: 32 public and 12 internal. The lifecycle
283
304
  includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
284
305
  Converge recovery; Seal **decides** and Ship **executes + closes**. Eleven
285
306
  `devrites-*` specialists are model-invoked and `devrites-lib` is the shared
@@ -296,7 +317,7 @@ contract.
296
317
  - **Slice rule**: build **one vertical slice, then stop**. There is no automatic continuation.
297
318
  - **Drift**: an explicit **Spec Drift Guard** in build/prove/polish/review/seal.
298
319
  - **Design**: `devrites-frontend-craft` + a four-phase `/rite-polish` orchestrator (code + backend always; UI normalize + polish when UI is in scope).
299
- - **Agents**: 17 fresh-context roles at flat depth one: 16 read-only leaves and
320
+ - **Agents**: 18 fresh-context roles at flat depth one: 17 read-only leaves and
300
321
  one wright. Fallback order is named, generic, then labelled inline.
301
322
  - **Review**: **feature-scoped** multi-axis review with severity labels and
302
323
  fresh-context agents at the seal.
package/docs/cli.md CHANGED
@@ -69,6 +69,7 @@ objective gaps to their owner:
69
69
  | `5` | `workspace-missing` | Workspace or state.md is missing | `/rite-spec` |
70
70
  | `6` | `coverage-not-clear` | Decision coverage is not CLEAR and fresh | `/rite-clarify` |
71
71
  | `7` | `engineering-not-ready` | Plan is not vetted or implementation readiness is not READY | `/rite-vet` |
72
+ | `8` | `upgrade-required` | Planning artifacts use an older or unknown DevRites contract | `/rite-upgrade` |
72
73
  <!-- authority:readiness-reasons:end -->
73
74
 
74
75
  A non-zero `build-readiness`,
@@ -76,10 +77,15 @@ A non-zero `build-readiness`,
76
77
  in an agent loop, a local script, or pre-merge CI.
77
78
 
78
79
  `build-readiness` does not trust `CLEAR` or `READY` text alone. It validates the
79
- required sections, tables, ownership and test mappings, and compares each
80
- artifact's SHA-256 field with the digest of its canonical inputs. Migration may
81
- upgrade a workspace declaration to schema v2, but it never creates or blesses
82
- clarification, vet, or proof evidence.
80
+ required sections, tables, ownership and test mappings, requires the current
81
+ `devrites.readiness-artifacts.v2` declaration, and compares each artifact's
82
+ SHA-256 field with the digest of its canonical inputs.
83
+
84
+ `devrites-engine update` refreshes the installed binary and pack.
85
+ `devrites-engine migrate` may upgrade a workspace declaration to structural
86
+ schema v2, but it never creates or blesses clarification, vet, or proof
87
+ evidence. `/rite-upgrade [slug]` is the separate semantic reconciliation route
88
+ for an active unfinished workspace.
83
89
 
84
90
  ## Why this exists
85
91
 
@@ -20,8 +20,9 @@ visibility. Public utilities use the `rite-*` prefix: `rite-quick`,
20
20
  `rite-frame`, `rite-adopt`, `rite-learn`, `rite-doctor`, `rite-customize`,
21
21
  `rite-zoom-out`, `rite-prototype`, `rite-handoff`, `rite-pressure-test`,
22
22
  `rite-autocomplete`, `rite-explain`, `rite-pov`, `rite-dogfood`, and
23
- `rite-pr-feedback`. The host may invoke `devrites-*` specialists through the
24
- model. `devrites-lib` is the non-workflow library exception.
23
+ `rite-pr-feedback`, plus the semantic workspace maintenance command
24
+ `rite-upgrade`. The host may invoke `devrites-*` specialists through the model.
25
+ `devrites-lib` is the non-workflow library exception.
25
26
 
26
27
  ## Surface lifecycle
27
28
 
@@ -49,6 +50,11 @@ Workflow-owned commands should have a concrete call site in a `rite-*` skill,
49
50
  phase contract, shared reply contract, or installed hook. Operator-owned commands
50
51
  must say who runs them.
51
52
 
53
+ These similarly named operations have separate owners: `devrites-engine update`
54
+ replaces the installed engine and pack, `devrites-engine migrate` normalizes
55
+ workspace layout and structural state schema, and `/rite-upgrade` reconciles an
56
+ active workspace with the current semantic planning contract.
57
+
52
58
  ## Public commands (`user-invocable: true`)
53
59
 
54
60
  | Command | Phase | Argument | What it does | Reads | Writes |
@@ -62,6 +68,7 @@ must say who runs them.
62
68
  | [`/rite-plan`](../pack/.claude/skills/rite-plan/SKILL.md) | repair → plan | `[mode]` | Reslice / repair / re-order / split / unblock an active plan and return to the `plan` checkpoint; `revise` is artifact-only and `/rite-vet` is the normal resume. | spec/plan/tasks/state/drift + diff | `plan.md`, `tasks.md`, `state.md`, `decisions.md` |
63
69
  | [`/rite-build`](../pack/.claude/skills/rite-build/SKILL.md) | build | `[slice]` | Orchestrate **exactly one** vertical slice through the sole wright. The root writes an exact `.wright-allowlist`, retains the original slice baseline through snapshot → reconcile check → test/package integrity → close, and refreshes only the dispatch boundary on bounded retries. Objective failures stay agent-owned; only product/scope/policy choices, irreversible risk, or human-only access/actions become questions. | workspace + diff + `.devrites/CHECKPOINT` | code + `.wright-allowlist`, `recovery-attempts.jsonl`, `state.md`, `evidence.md`, `traceability.md`, `touched-files.md` (+ local `WIP(<slug>)` commit in checkpoint mode) |
64
70
  | [`/rite-converge`](../pack/.claude/skills/rite-converge/SKILL.md) | converge | `[slug]` | **Recovery.** Compare live code with clarified intent, append each unmet piece as a traceable `SLICE-###`, and invalidate the old vet verdict so changed work returns through `/rite-vet`. `tasks.md` stays byte-identical when already converged. | clarified spec + plan/tasks + principles + live code | `tasks.md` (appended), `traceability.md`, `state.md`, `eng-review.md` (invalidated), `decisions.md` |
71
+ | [`/rite-upgrade`](../pack/.claude/skills/rite-upgrade/SKILL.md) | maintenance | `[slug]` | **Conditional recovery.** Bring an active unfinished workspace onto `devrites.readiness-artifacts.v2`. A fresh read-only planner identifies the smallest change; the rite preserves completed source, slices, decisions, and evidence, removes stale engine-proof recipes and machine-local wrappers from active plans, then reruns current readiness gates. Already-current workspaces that pass readiness, completed workspaces, and archives are no-ops. | active workspace + current readiness contract | active unfinished planning artifacts only |
65
72
  | [`/rite-prove`](../pack/.claude/skills/rite-prove/SKILL.md) | prove | `[scope]` | Tests + build + runtime + browser proof of the completed feature. | `traceability.md` + workspace + diff | `evidence.md`, `browser-evidence.md`, `traceability.md`, `state.md` |
66
73
  | [`/rite-polish`](../pack/.claude/skills/rite-polish/SKILL.md) | polish | `[target \| mode]` | Orchestrator. Reads `reference/code.md` always (Phase 1 + 2); reads `reference/ui.md` when UI is touched (Phase 3 + 4). Mode tokens: `bolder \| quieter \| distill \| harden \| normalize-only`. | workspace + design system + diff | `polish-report.md`, `browser-evidence.md` |
67
74
  | [`/rite-review`](../pack/.claude/skills/rite-review/SKILL.md) | review | `[scope]` | Feature-scoped multi-axis review. Parallel fresh-context Spec + Standards agents (`devrites-spec-reviewer`, `devrites-code-reviewer`). | workspace + diff | `review.md`, `evidence.md`, `state.md` |
@@ -110,7 +117,7 @@ the shared reference library.
110
117
 
111
118
  ## Agents (`.claude/agents/devrites-*`, fresh-context leaves)
112
119
 
113
- **Seventeen roles:** 16 read-only leaves plus one source/test writer,
120
+ **Eighteen roles:** 17 read-only leaves plus one source/test writer,
114
121
  `devrites-slice-wright`.
115
122
 
116
123
  | Agent | Spawned by | Purpose |
@@ -118,6 +125,7 @@ the shared reference library.
118
125
  | [`devrites-evidence-scout`](../pack/.claude/agents/devrites-evidence-scout.md) | `/rite-spec`, `/rite-clarify`, `/rite-converge` | Read-only bounded evidence dossier from live code, project records, or cited external facts |
119
126
  | [`devrites-plan-drafter`](../pack/.claude/agents/devrites-plan-drafter.md) | `/rite-define`, `/rite-plan repair` | Read-only planning candidate; the root makes decisions and writes planning artifacts |
120
127
  | [`devrites-proof-runner`](../pack/.claude/agents/devrites-proof-runner.md) | `/rite-prove`, affected re-proof | Read-only tree plus non-destructive command execution; returns a proof report, never the verdict |
128
+ | [`devrites-upgrade-planner`](../pack/.claude/agents/devrites-upgrade-planner.md) | `/rite-upgrade` | Fresh read-only assessment of semantic contract gaps; returns a bounded preservation-first upgrade plan |
121
129
  | [`devrites-slice-wright`](../pack/.claude/agents/devrites-slice-wright.md) | `/rite-build` (the build core) | **Sole source/test writer**: implement one exact allowlisted slice (orient → TDD → verify); returns a typed artifact and writes no bookkeeping |
122
130
  | [`devrites-strategy-reviewer`](../pack/.claude/agents/devrites-strategy-reviewer.md) | `/rite-temper` (pre-plan) | Spec-vs-rubric strategic review (ambition / scope / premise / pre-mortem / YAGNI / testability / irreversibility / cross-cutting / convention); read-only; **not** part of the seal fan-out |
123
131
  | [`devrites-plan-reviewer`](../pack/.claude/agents/devrites-plan-reviewer.md) | `/rite-vet` (pre-build) | Plan-vs-rubric engineering review (architecture / scope-reuse / plan code-quality / test-coverage design / performance / reversibility / failure-mode coverage), confidence-banded with a quote-the-source verification gate; read-only; **not** part of the seal fan-out |
@@ -196,9 +204,10 @@ See [`flow.md`](flow.md) for the Mermaid diagrams. The text form is:
196
204
 
197
205
  - Every phase **reads the active workspace first**; if none, it stops and tells
198
206
  the user to run `/rite-spec <feature>`.
199
- - **Spec Drift Guard** lives in build/prove/polish/review/seal: on drift,
200
- stop, record in `drift.md`, classify, ask the user if product behavior
201
- changes, then `/rite-plan repair` before resuming.
207
+ - **Spec Drift Guard** lives in build/prove/polish/review/seal: on drift, stop,
208
+ record in `drift.md`, and classify. Objective implementation and tool defects
209
+ use bounded recovery; a wrong durable plan uses `/rite-plan repair`; only a
210
+ product, policy, or irreversible-risk choice asks the user.
202
211
  - `/rite-seal` fans out to `.claude/agents/devrites-*` reviewers **in
203
212
  parallel** for independent, fresh-context judgment, then writes the GO /
204
213
  NO-GO verdict: it runs no git. On GO it hands off to `/rite-ship`, which
@@ -127,6 +127,12 @@ Migration is:
127
127
  The phase is derived from the legacy `state.md`, defaulting to `build` when it
128
128
  can't be read.
129
129
 
130
+ `devrites-engine update` refreshes the installed binary and pack. Migration
131
+ stops at structural compatibility and does not certify old planning artifacts
132
+ against current workflow rules. Build readiness routes an active workspace with
133
+ stale semantic artifacts to `/rite-upgrade [slug]`; that public rite preserves
134
+ completed work and reconciles only unfinished planning.
135
+
130
136
  ## Hooks: `hook <name> --harness=claude|codex`
131
137
 
132
138
  One binary serves Claude Code and Codex through thin per-harness adapters.
@@ -33,6 +33,10 @@ engine reads missing/v1 declarations and legacy aliases additively, refuses a
33
33
  version newer than it supports, and keeps the snapshot wire schema separate.
34
34
  `devrites-engine migrate` upgrades the declaration and layout metadata; it does
35
35
  not manufacture decision coverage, vet readiness, test plans, or proof.
36
+ Semantic planning compatibility uses a separate readiness-artifact contract.
37
+ The current value is `devrites.readiness-artifacts.v2`; `/rite-upgrade [slug]`
38
+ reconciles an active unfinished workspace when build readiness reports an older
39
+ or unknown contract.
36
40
 
37
41
  Canonical live workspace:
38
42
 
@@ -141,6 +145,8 @@ Files may exceed budgets only with a visible `Budget override: <reason>` line.
141
145
 
142
146
  The typed verdict is necessary but not sufficient:
143
147
 
148
+ - `decision-coverage.md`, `eng-review.md`, and `test-plan.md` declare
149
+ `DevRites contract: devrites.readiness-artifacts.v2`.
144
150
  - `Coverage inputs SHA-256` binds `decision-coverage.md` to `brief.md`,
145
151
  `spec.md`, `decisions.md`, `assumptions.md`, and `questions.md`.
146
152
  - `Readiness inputs SHA-256` binds `eng-review.md` to `spec.md`,
@@ -149,7 +155,10 @@ The typed verdict is necessary but not sufficient:
149
155
 
150
156
  `devrites-engine readiness-digest coverage|engineering [slug]` emits the
151
157
  canonical field line. `build-readiness` rejects stale digests, malformed or
152
- contradictory content, and missing markers. A later-phase clarification
158
+ contradictory content, missing markers, and older or unknown semantic contracts.
159
+ Contract failures use code `8` and route to `/rite-upgrade`; missing coverage or
160
+ vet artifacts keep their existing `/rite-clarify` and `/rite-vet` routes. A
161
+ later-phase clarification
153
162
  retrofit uses `clarify-return enter|restore`; restore requires fresh `CLEAR`
154
163
  coverage, while an acceptance-changing result keeps the cursor for plan repair.
155
164
 
package/docs/flow.md CHANGED
@@ -10,10 +10,12 @@ For the full per-skill table, see [`command-map.md`](command-map.md). For the
10
10
 
11
11
  This diagram shows the normal path. Each arrow assumes that the previous
12
12
  phase's readiness gate passed. Failures route through `/rite-clarify`,
13
- `/rite-plan repair`, or `devrites-debug-recovery`. `/rite-clarify` always runs
14
- but may ask zero questions; `/rite-temper` is the optional strategic branch;
15
- `/rite-vet` runs on every defined plan, with depth scaled to risk. Build asks
16
- the human only for genuine
13
+ `/rite-plan repair`, `/rite-upgrade`, or `devrites-debug-recovery`.
14
+ `/rite-upgrade` is conditional maintenance rather than a lifecycle phase: build
15
+ readiness uses it only when existing semantic artifacts are stale.
16
+ `/rite-clarify` always runs but may ask zero questions; `/rite-temper` is the
17
+ optional strategic branch; `/rite-vet` runs on every defined plan, with depth
18
+ scaled to risk. Build asks the human only for genuine
17
19
  product/scope/policy decisions, irreversible risk, or human-only access/actions;
18
20
  `/rite-resolve` is the resume verb.
19
21
 
@@ -28,6 +30,8 @@ flowchart LR
28
30
  Define -->|plan.md + tasks.md<br/>approved| Plan[(plan checkpoint)]
29
31
  Plan -->|normal resume| Vet[/rite-vet/]
30
32
  Vet -->|fresh digest-bound READY<br/>+ test-plan.md| Build[/rite-build/]
33
+ Build -.->|build-readiness code 8<br/>stale semantic contract| Upgrade[/rite-upgrade/]
34
+ Upgrade -.->|contract v2<br/>current gates pass| Build
31
35
  Build -.->|exact .wright-allowlist<br/>retained baseline| Wright[devrites-slice-wright]
32
36
  Wright -.->|typed result| Build
33
37
  Build -->|one slice done<br/>+ evidence| Build
@@ -59,7 +63,7 @@ flowchart LR
59
63
  classDef internal fill:#0f172a,stroke:#9ca3af,color:#f9fafb
60
64
  class Spec,Clarify,Temper,Define,Plan,Vet,Build,Prove,Polish,Review,Seal,Ship2 phase
61
65
  class Shipped done
62
- class Repair repair
66
+ class Repair,Upgrade repair
63
67
  class Await gate
64
68
  class Shape,Forge,Wright internal
65
69
  ```
@@ -325,7 +329,7 @@ separately by `disable-model-invocation`.
325
329
 
326
330
  ```mermaid
327
331
  flowchart TB
328
- subgraph Public["Public (user-invocable: true): 31 skills"]
332
+ subgraph Public["Public (user-invocable: true): 32 skills"]
329
333
  direction TB
330
334
  R1[/rite/]
331
335
  R2[/rite-spec/]
@@ -349,6 +353,7 @@ flowchart TB
349
353
  RA[/rite-adopt/]
350
354
  RL[/rite-learn/]
351
355
  RD[/rite-doctor/]
356
+ RU[/rite-upgrade/]
352
357
  RE[/rite-explain/]
353
358
  RCU[/rite-customize/]
354
359
  RDO[/rite-dogfood/]
@@ -377,7 +382,7 @@ flowchart TB
377
382
 
378
383
  classDef pub fill:#064e3b,stroke:#34d399,color:#ecfdf5
379
384
  classDef int fill:#1f2937,stroke:#9ca3af,color:#f9fafb
380
- class R1,R2,RCL,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
385
+ class R1,R2,RCL,RT,R3,RV,R4,R5,RC,R6,R7,R8,R9,R12,R13,R10,R11,RQ,RF,RA,RL,RD,RU,RE,RCU,RDO,RPOV,RPF,IPT,D1,D2,D3 pub
381
386
  class I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12 int
382
387
  ```
383
388
 
@@ -14,12 +14,12 @@ this page summarizes that model.
14
14
  dispatch leaves.
15
15
  - Normally at most three read-only leaves run concurrently against one frozen
16
16
  candidate. The root awaits every required return before mutation.
17
- - There are **17 named roles**: 16 read-only leaves and one source/test writer,
17
+ - There are **18 named roles**: 17 read-only leaves and one source/test writer,
18
18
  `devrites-slice-wright`.
19
19
 
20
20
  | Group | Roles |
21
21
  |---|---|
22
- | Bounded work leaves | `devrites-evidence-scout`, `devrites-plan-drafter`, `devrites-proof-runner` |
22
+ | Bounded work leaves | `devrites-evidence-scout`, `devrites-plan-drafter`, `devrites-proof-runner`, `devrites-upgrade-planner` |
23
23
  | Strategic/claim challenge | `devrites-strategy-reviewer`, `devrites-plan-reviewer`, `devrites-doubt-reviewer` |
24
24
  | Review/audit | `devrites-spec-reviewer`, `devrites-code-reviewer`, `devrites-test-analyst`, `devrites-frontend-reviewer`, `devrites-security-auditor`, `devrites-performance-reviewer`, `devrites-devex-reviewer`, `devrites-simplifier-reviewer` |
25
25
  | Comparison/history | `devrites-forge-judge`, `devrites-retrospector` |
@@ -12,6 +12,10 @@ Claude Code and Codex artifacts; plugin stores do not distribute them.
12
12
  Seal makes the release decision, Ship mutates git, Build handles one slice per
13
13
  run, and Autocomplete is opt-in.
14
14
 
15
+ Conditional maintenance: `/rite-upgrade [slug]` reconciles an active unfinished
16
+ workspace with the current semantic planning contract when build readiness
17
+ returns code `8`. It is not a lifecycle phase.
18
+
15
19
  ## Standing checklists
16
20
 
17
21
  - Definition of Done: `pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md`
package/docs/skills.md CHANGED
@@ -1,6 +1,6 @@
1
- # All 43 skills
1
+ # All 44 skills
2
2
 
3
- The pack contains 43 skills: the `rite` menu, 30 user-invocable `rite-*`
3
+ The pack contains 44 skills: the `rite` menu, 31 user-invocable `rite-*`
4
4
  workflow and utility skills, 11 model-invoked `devrites-*` specialists, and the
5
5
  internal `devrites-lib` library. `devrites-lib` is not a command. It holds shared
6
6
  references and the few explicit script exceptions.
@@ -23,7 +23,8 @@ only when needed; small utilities keep their narrower contract local. The npm
23
23
  `rite-*` is the namespace for lifecycle and utility commands. Its utilities are
24
24
  `rite-quick`, `rite-frame`, `rite-adopt`, `rite-learn`, `rite-customize`,
25
25
  `rite-explain`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, `rite-doctor`,
26
- `rite-prototype`, `rite-handoff`, `rite-zoom-out`, and `rite-pressure-test`.
26
+ `rite-upgrade`, `rite-prototype`, `rite-handoff`, `rite-zoom-out`, and
27
+ `rite-pressure-test`.
27
28
  Some specialized utilities set `disable-model-invocation: true` and run only
28
29
  when explicitly invoked, which keeps the always-loaded skill surface small.
29
30
  `devrites-*` is the specialist and library namespace used to avoid collisions.
@@ -89,6 +90,7 @@ blocks obvious multi-command `Next:` wording.
89
90
  | [`rite-status`](../pack/.claude/skills/rite-status/SKILL.md) | Read-only report: phase, run mode (AFK/HITL), status, active slice, next action, evidence, open questions by gate, drift, risks. | Explicit-only: type `/rite-status` / `/rite status`. |
90
91
  | [`rite-resolve`](../pack/.claude/skills/rite-resolve/SKILL.md) | Answer / drop / batch-resolve open `questions.md` entries; clears `state.md` `Awaiting human` and resumes the workflow. | Explicit-only: type `/rite-resolve <qid> "<answer>"`. |
91
92
  | [`rite-doctor`](../pack/.claude/skills/rite-doctor/SKILL.md) | Diagnose DevRites install, workspace, and optional index health. `--reindex` runs the internal synchronous refresh. | "rite doctor", "is DevRites healthy", "reindex". |
93
+ | [`rite-upgrade`](../pack/.claude/skills/rite-upgrade/SKILL.md) | Reconcile an active unfinished workspace with the current semantic planning contract while preserving completed source, slices, decisions, and evidence. | Explicit-only: build readiness returns code `8`, or you need to continue a workspace planned under older DevRites rules. |
92
94
  | [`rite-customize`](../pack/.claude/skills/rite-customize/SKILL.md) | Guided authoring for project-local reviewer overrides and extensions; validates before stopping. | Explicit-only: `/rite-customize` / `/rite customize`. |
93
95
 
94
96
  ### Express and ad hoc: small or unguarded work
@@ -203,8 +205,8 @@ blocks obvious multi-command `Next:` wording.
203
205
 
204
206
  ## Fresh-context agents
205
207
 
206
- DevRites ships 17 roles at depth one: 16 read-only leaves and one source/test
207
- writer. Three read-only roles handle bounded work while the root keeps
208
+ DevRites ships 18 roles at depth one: 17 read-only leaves and one source/test
209
+ writer. Four read-only roles handle bounded work while the root keeps
208
210
  authority:
209
211
 
210
212
  | Agent | Purpose |
@@ -212,6 +214,7 @@ authority:
212
214
  | [`devrites-evidence-scout`](../pack/.claude/agents/devrites-evidence-scout.md) | Build a bounded evidence dossier for spec, clarify, converge, or cited external facts. |
213
215
  | [`devrites-plan-drafter`](../pack/.claude/agents/devrites-plan-drafter.md) | Draft a planning candidate for define or plan repair; the root decides and writes artifacts. |
214
216
  | [`devrites-proof-runner`](../pack/.claude/agents/devrites-proof-runner.md) | Run non-destructive proof commands against a read-only tree and return a proof report. |
217
+ | [`devrites-upgrade-planner`](../pack/.claude/agents/devrites-upgrade-planner.md) | Read an old workspace from scratch, classify semantic contract gaps, and return a bounded upgrade plan without changing files. |
215
218
  | [`devrites-strategy-reviewer`](../pack/.claude/agents/devrites-strategy-reviewer.md) | **Pre-plan** spec-vs-rubric strategic review (ambition / scope / premise / pre-mortem / YAGNI / testability / irreversibility / cross-cutting / convention). Used by `/rite-temper`, not the seal fan-out. |
216
219
  | [`devrites-plan-reviewer`](../pack/.claude/agents/devrites-plan-reviewer.md) | **Pre-build** plan-vs-rubric engineering review (architecture / scope-reuse / plan code-quality / test-coverage design / performance / reversibility / failure-mode coverage), confidence-banded with a quote-the-source verification gate. Used by `/rite-vet`, not the seal fan-out. |
217
220
  | [`devrites-forge-judge`](../pack/.claude/agents/devrites-forge-judge.md) | **Build-time** comparative judge of two or three candidate builds of one slice (acceptance / test strength / principle fit / simplicity / reuse / anti-slop). Used by `/rite-build` on a `Forge: yes` slice; picks the single winner to land and names grafts. |
package/docs/usage.md CHANGED
@@ -5,7 +5,9 @@ These examples cover the common DevRites workflows. Start a new feature with
5
5
  `/rite-quick` and `/rite-frame` handle bounded work outside the full feature
6
6
  lifecycle. Workspace phases first read the active workspace from
7
7
  `.devrites/ACTIVE` and `.devrites/work/<slug>/`. If none exists, they report the
8
- command that can create or select one.
8
+ command that can create or select one. `/rite-upgrade [slug]` is the
9
+ conditional maintenance route for an active workspace planned under older
10
+ DevRites rules.
9
11
 
10
12
  - **Full command reference** → [`command-map.md`](command-map.md)
11
13
  - **Flow diagrams** → [`flow.md`](flow.md)
@@ -24,7 +26,7 @@ the work across compaction and new sessions:
24
26
  | `README.md` / `index.md` / `feature.md` | `/rite-spec` | compact workspace map: phase, status, next action, artifact map, read-next table, gates |
25
27
  | `brief.md` | `/rite-spec` | one-line objective + definition of done |
26
28
  | `spec.md` | `/rite-spec` | product WHAT/WHY, requirements, acceptance, boundaries, measurable success |
27
- | `decision-coverage.md` | `/rite-clarify` | topology-first coverage plus semantic `CLEAR` verdict bound to all decision inputs |
29
+ | `decision-coverage.md` | `/rite-clarify` | topology-first coverage plus semantic `CLEAR` verdict bound to all decision inputs and the current readiness-artifact contract |
28
30
  | `architecture.md` | `/rite-define` | owning module/layer, integration points, data/API/events, dependencies, risks |
29
31
  | `flows.md` | `/rite-spec` or `/rite-define` | optional Mermaid diagrams when sequence/state/data flow clarifies behavior |
30
32
  | `references/` + `references.md` | `/rite-spec` | saved design refs: screenshots, Figma, video, links |
@@ -32,8 +34,8 @@ the work across compaction and new sessions:
32
34
  | `plan.md` | `/rite-define` | approach, dependency graph, checkpoints, rollback |
33
35
  | `tasks.md` | `/rite-define` | ordered `SLICE-###` vertical slices, each mapped to `AC-###` and tagged `Mode: AFK \| HITL` + gate fields |
34
36
  | `traceability.md` | `/rite-define` | AC/REQ → slices → tests/proofs → evidence → touched files matrix |
35
- | `eng-review.md` | `/rite-vet` | mandatory engineering review with semantic, input-digest-bound readiness verdict |
36
- | `test-plan.md` | `/rite-vet` | build-readable coverage target: coverage diagram, per-gap test requirements, acceptance→test map (read by `/rite-build` + `/rite-prove`) |
37
+ | `eng-review.md` | `/rite-vet` | mandatory engineering review with semantic, input-digest-bound readiness verdict and readiness-artifact contract |
38
+ | `test-plan.md` | `/rite-vet` | build-readable coverage target and readiness-artifact contract: coverage diagram, per-gap test requirements, acceptance→test map (read by `/rite-build` + `/rite-prove`) |
37
39
  | `state.md` | every phase | working cursor: phase, status, next action, slice, AFK budget, durable clarification return fields, and `Awaiting human` only when paused |
38
40
  | `recovery-attempts.jsonl` | technical recovery | durable three-failure budget per root-cause fingerprint |
39
41
  | `.wright-allowlist` | `/rite-build` root | exact normalized source/test paths the sole wright may change |
@@ -62,7 +64,10 @@ deleting the old files. `feature.md`/`index.md` can still act as the workspace
62
64
  map, `status.md` as the cursor alias for `state.md`, and `proof.md` as the proof
63
65
  alias for `evidence.md`. Workspace maps use schema v2; migration upgrades
64
66
  compatible declarations but never fabricates clarification, readiness, or proof
65
- evidence.
67
+ evidence. That structural schema is separate from the semantic planning
68
+ contract. `/rite-upgrade` reconciles active unfinished planning with
69
+ `devrites.readiness-artifacts.v2`; it does not rewrite current, completed, or
70
+ archived workspaces.
66
71
 
67
72
  Project-root sentinel (outside the workspace):
68
73
 
@@ -124,6 +129,27 @@ original baseline. A retry snapshot refreshes only the dispatch boundary.
124
129
  `/rite-seal` **decides**; `/rite-ship` **executes + closes**. To run the whole
125
130
  sequence unattended, see `/rite-autocomplete` (§11).
126
131
 
132
+ ## 2a) Continue a workspace planned under older rules
133
+
134
+ Run the upgrade after updating DevRites when build readiness reports code `8`,
135
+ or invoke it directly for an older active workspace:
136
+
137
+ ```text
138
+ /rite-upgrade ark-panda-redesign
139
+ → a fresh read-only devrites-upgrade-planner compares the active unfinished
140
+ planning surface with devrites.readiness-artifacts.v2
141
+ → completed source, slices, decisions, and evidence stay unchanged
142
+ → stale old-engine proof recipes and machine-local command wrappers leave the
143
+ active canonical plan
144
+ → current coverage and engineering-readiness gates run again
145
+ → an already-current workspace that passes readiness is a no-op; completed
146
+ workspaces and archives are also left alone
147
+ ```
148
+
149
+ This is not the same as `devrites-engine update`, which refreshes the installed
150
+ engine and pack, or `devrites-engine migrate`, which normalizes workspace layout
151
+ and structural state schema.
152
+
127
153
  ## 3) Spec drift mid-build
128
154
 
129
155
  ```text