/rite-converge: compare live code with intent
Read spec.md, plan.md, and tasks.md as the sole source of intent (with
.devrites/principles.md as governing constraints), assess what the live codebase
implements, and append every unmet piece as a new traceable SLICE-### at the
bottom of tasks.md so /rite-build can finish it. Use this for a resumed half-built
feature, an adopted codebase that drifted from its derived spec, or a build that stalled
mid-slice. Read the active
workspace first; if there's no spec.md/plan.md/tasks.md, tell the user which
prerequisite skill to run.
This is not a diff tool. /rite-converge compares current code with intent. It
does not use git history or compare branches. For a change-scoped
review use /rite-review; to prove a finished feature use /rite-prove.
Rules consulted (read on demand from .omp/skills/devrites-lib/reference/standards/)
Pull on demand:
principles.md: the project invariants (.devrites/principles.md); code that violates a
MUST principle is the highest-severity gap and produces a remediation slice.
spec-grammar.md: buildable acceptance criteria vs ## Success metrics (outcome KPIs the
code can't make true and this pass never enqueues); structured ### Requirement: /
#### Scenario: blocks, each scenario one behavior to check as built / partial / absent.
tooling.md: use the primary available code index; cross-check only a named unresolved
predicate, then fall back to LSP/file search. Read live code, not artifact claims.
testing.md: a criterion with code but no covering test is partial, not done.
repository-topology.md, data-integrity.md, integration-reliability.md: only for
triggered applicability rows; missing failure/recovery behavior is partial or absent.
Operating rules
- APPEND-ONLY, never rewrite. The only write to
tasks.md is appending new
SLICE-### entries. Never rewrite, renumber, reorder, or delete an existing slice
(including slices a prior convergence appended). Never edit spec.md or plan.md. Never
touch application code: completing the appended slices is /rite-build's job, not this
skill's.
- Clean means byte-for-byte unchanged. When the code already satisfies everything, leave
tasks.md untouched (no empty convergence header) and report a clean result. Recommend
/rite-prove.
- Use artifacts as intent. The spec, plan, tasks, and principles are the
contract. If assessing reveals the spec is wrong (the code is right and the requirement is
stale), that's Spec Drift: stop and route it through the Spec Drift Guard
(
rite-build/reference/spec-drift-guard.md) + a recorded decision; never paper over a spec
bug by appending a task that changes correct code to match a wrong requirement.
- Partial is not done. Code that exists but is untested, half-wired, or covers only the
happy path is an unmet gap: enqueue the remainder, don't round it up.
- Principles are non-negotiable. A live violation of a declared invariant with no recorded
exception is the top-severity gap, walked first. Absent/empty principles file → none declared
→ skip the check gracefully, never block for its absence.
- Scout observes; root classifies and writes. Use
agents.md. The evidence scout returns
live-code citations only; the controlling chat owns built/partial/absent calls and append-only
workspace changes.
Workflow
- Read
.omp/skills/devrites-lib/reference/standards/core.md first (the always-on
operating rules), then resolve the active slug, require its state.md, and
read the cursor directly.
- Confirm the gate. Require
spec.md + plan.md + tasks.md in the active workspace. If
any is missing, STOP and name the prerequisite (/rite-spec for a missing spec,
/rite-define for a missing plan/tasks, /rite-adopt to onboard existing code). Do not
produce partial output.
Require decision-coverage.md with Decision coverage: CLEAR; otherwise STOP →
/rite-clarify.
- Load intent:
reference/convergence-assessment.md.
From spec.md: buildable AC-### / ### Requirement: scenarios (skip ## Success metrics);
from plan.md: architecture decisions + named touch-points (files/components the plan says
get built); from tasks.md: existing slices + their Satisfies:; from
.devrites/principles.md: the invariants.
Completion: every buildable criterion, touch-point, slice output, and principle is in the assessment inventory.
- Reconcile the map, then read the code. Compare
spec.md, tasks.md,
test-plan.md, and traceability.md directly: every buildable AC/REQ maps to an
existing slice, every slice maps back to real acceptance, every slice's recorded
proof still agrees with its test-plan.md row, and the mapped prose preserves the
requirement's meaning. Record orphaned, invented, duplicate, or contradictory
mappings as gaps. Then read the live code
(code-intelligence index per tooling.md); artifact mappings never prove implementation.
- Assess each unit as built / partial / absent against the live code (the rubric is in
reference/convergence-assessment.md): every
acceptance criterion / scenario, every plan touch-point, and every existing slice's stated
Produces. A principle violated in the current code is its own top-severity gap.
Dispatch up to three independent inventory partitions to devrites-evidence-scout on the
same live-code snapshot, await their dossiers, then reconcile the cited facts in the root
context. Completion: every inventory unit is classified once with live-code evidence.
- Enqueue the remainder as new slices. For each partial or absent unit, append a
## SLICE-### (continue the numbering after the highest existing id), each with a Satisfies: line tracing to the AC/REQ it closes and a
Convergence: <iso> marker line. Dependency-order them after the existing slices; a
principle-remediation slice sorts first. If every unit is built → append nothing.
Completion: every partial/absent unit has one traceable appended slice, or the file is byte-for-byte unchanged.
- Write append-only + bookkeeping. Append the slice batch to
tasks.md (nothing else in
that file changes); update traceability.md directly with rows for only the appended slices,
preserving every existing row. Appending a slice changes the plan input, so invalidate the prior vet:
update state.md to Phase: plan, Next step: /rite-vet, and set an existing
eng-review.md field to Implementation readiness: NEEDS REPLAN. When nothing was unmet,
leave the plan/vet verdict untouched and set Next step: /rite-prove. Append
decisions.md for any material call.
- STOP. Report units assessed, built / partial / absent counts, slices appended, and any
principle violation found; recommend
/rite-vet when slices were appended (or
/rite-prove if the code already
converged).
Completion evidence (fail-closed)
Before reporting "clean" or recommending /rite-prove, confirm:
Failing case: all units marked built but one AC lacks a test or runtime citation →
report partial, append slice, route /rite-vet.
Appended slice format
Use the complete
canonical slice grammar
with one added Convergence: field after Satisfies::
<!-- Convergence 2026-07-07: slices below appended by /rite-converge — live code assessed against intent. -->
## SLICE-014 <name of the unmet capability>
Satisfies: AC-007 # the criterion / scenario this closes
Convergence: 2026-07-07 # marks this as a convergence-appended slice, not an original
<all remaining canonical slice fields>
Mid-flight discipline. Do not rewrite an existing slice, edit source, mark a
happy-path-only implementation as built, or add work for a spec you suspect is wrong.
See reference/anti-patterns.md.
1---2name: rite-converge-23description: Converge intent and live code. Use when resuming a half-built feature, after `/rite-adopt` drift, or the user asks "what's left to build". Not for initial planning.4---56# /rite-converge: compare live code with intent78Read `spec.md`, `plan.md`, and `tasks.md` as the **sole source of intent** (with9`.devrites/principles.md` as governing constraints), assess what the **live codebase**10implements, and **append every unmet piece as a new traceable `SLICE-###`** at the11bottom of `tasks.md` so `/rite-build` can finish it. Use this for a resumed half-built12feature, an adopted codebase that drifted from its derived spec, or a build that stalled13mid-slice. **Read the active14workspace first**; if there's no `spec.md`/`plan.md`/`tasks.md`, tell the user which15prerequisite skill to run.1617> **This is not a diff tool.** `/rite-converge` compares current code with intent. It18> does not use git history or compare branches. For a change-scoped19> review use `/rite-review`; to prove a finished feature use `/rite-prove`.2021## Rules consulted (read on demand from `.omp/skills/devrites-lib/reference/standards/`)2223Pull on demand:2425- `principles.md`: the project invariants (`.devrites/principles.md`); code that violates a26 MUST principle is the highest-severity gap and produces a remediation slice.27- `spec-grammar.md`: buildable acceptance criteria vs `## Success metrics` (outcome KPIs the28 code can't make true and this pass never enqueues); structured `### Requirement:` /29 `#### Scenario:` blocks, each scenario one behavior to check as built / partial / absent.30- `tooling.md`: use the primary available code index; cross-check only a named unresolved31 predicate, then fall back to LSP/file search. Read live code, not artifact claims.32- `testing.md`: a criterion with code but no covering test is *partial*, not done.33- `repository-topology.md`, `data-integrity.md`, `integration-reliability.md`: only for34 triggered applicability rows; missing failure/recovery behavior is partial or absent.3536## Operating rules3738- **APPEND-ONLY, never rewrite.** The only write to `tasks.md` is **appending** new39 `SLICE-###` entries. Never rewrite, renumber, reorder, or delete an existing slice40 (including slices a prior convergence appended). Never edit `spec.md` or `plan.md`. Never41 touch application code: completing the appended slices is `/rite-build`'s job, not this42 skill's.43- **Clean means byte-for-byte unchanged.** When the code already satisfies everything, leave44 `tasks.md` untouched (no empty convergence header) and report a clean result. Recommend45 `/rite-prove`.46- **Use artifacts as intent.** The spec, plan, tasks, and principles are the47 contract. If assessing reveals the *spec* is wrong (the code is right and the requirement is48 stale), that's **Spec Drift**: stop and route it through the Spec Drift Guard49 (`rite-build/reference/spec-drift-guard.md`) + a recorded decision; never paper over a spec50 bug by appending a task that changes correct code to match a wrong requirement.51- **Partial is not done.** Code that exists but is untested, half-wired, or covers only the52 happy path is an unmet gap: enqueue the remainder, don't round it up.53- **Principles are non-negotiable.** A live violation of a declared invariant with no recorded54 exception is the top-severity gap, walked first. Absent/empty principles file → none declared55 → skip the check gracefully, never block for its absence.56- **Scout observes; root classifies and writes.** Use57 [`agents.md`](../devrites-lib/reference/standards/agents.md). The evidence scout returns58 live-code citations only; the controlling chat owns built/partial/absent calls and append-only59 workspace changes.6061## Workflow62630. **Read `.omp/skills/devrites-lib/reference/standards/core.md`** first (the always-on64 operating rules), then resolve the active slug, require its `state.md`, and65 read the cursor directly.661. **Confirm the gate.** Require `spec.md` + `plan.md` + `tasks.md` in the active workspace. If67 any is missing, **STOP** and name the prerequisite (`/rite-spec` for a missing spec,68 `/rite-define` for a missing plan/tasks, `/rite-adopt` to onboard existing code). Do not69 produce partial output.70 Require `decision-coverage.md` with `Decision coverage: CLEAR`; otherwise STOP →71 `/rite-clarify`.722. **Load intent:** [`reference/convergence-assessment.md`](reference/convergence-assessment.md).73 From `spec.md`: buildable `AC-###` / `### Requirement:` scenarios (skip `## Success metrics`);74 from `plan.md`: architecture decisions + named touch-points (files/components the plan says75 get built); from `tasks.md`: existing slices + their `Satisfies:`; from76 `.devrites/principles.md`: the invariants.77 **Completion:** every buildable criterion, touch-point, slice output, and principle is in the assessment inventory.783. **Reconcile the map, then read the code.** Compare `spec.md`, `tasks.md`,79 `test-plan.md`, and `traceability.md` directly: every buildable AC/REQ maps to an80 existing slice, every slice maps back to real acceptance, every slice's recorded81 proof still agrees with its `test-plan.md` row, and the mapped prose preserves the82 requirement's meaning. Record orphaned, invented, duplicate, or contradictory83 mappings as gaps. Then read the live code84 (code-intelligence index per `tooling.md`); artifact mappings never prove implementation.854. **Assess each unit as built / partial / absent** against the live code (the rubric is in86 [`reference/convergence-assessment.md`](reference/convergence-assessment.md)): every87 acceptance criterion / scenario, every plan touch-point, and every existing slice's stated88 Produces. A principle violated in the current code is its own top-severity gap.89 Dispatch up to three independent inventory partitions to `devrites-evidence-scout` on the90 same live-code snapshot, await their dossiers, then reconcile the cited facts in the root91 context. **Completion:** every inventory unit is classified once with live-code evidence.925. **Enqueue the remainder as new slices.** For each *partial* or *absent* unit, append a93 `## SLICE-###` (continue the numbering after the highest existing id), each with a `Satisfies:` line tracing to the AC/REQ it closes and a94 `Convergence: <iso>` marker line. Dependency-order them after the existing slices; a95 principle-remediation slice sorts first. **If every unit is built → append nothing.**96 **Completion:** every partial/absent unit has one traceable appended slice, or the file is byte-for-byte unchanged.976. **Write append-only + bookkeeping.** Append the slice batch to `tasks.md` (nothing else in98 that file changes); update `traceability.md` directly with rows for only the appended slices,99 preserving every existing row. Appending a slice changes the plan input, so invalidate the prior vet:100 update `state.md` to `Phase: plan`, `Next step: /rite-vet`, and set an existing101 `eng-review.md` field to `Implementation readiness: NEEDS REPLAN`. When nothing was unmet,102 leave the plan/vet verdict untouched and set `Next step: /rite-prove`. Append103 `decisions.md` for any material call.1047. **STOP.** Report units assessed, built / partial / absent counts, slices appended, and any105 principle violation found; recommend `/rite-vet` when slices were appended (or106 `/rite-prove` if the code already107 converged).108109## Completion evidence (fail-closed)110111Before reporting "clean" or recommending `/rite-prove`, confirm:112113- [ ] Every buildable AC/REQ in the assessment inventory has a built/partial/absent114 classification with live-code citation115- [ ] `tasks.md` is byte-for-byte unchanged when clean, or append-only when gaps exist116- [ ] `traceability.md` updated only for appended slices117- [ ] No narrative "done" without the checklist above118119**Failing case:** all units marked built but one AC lacks a test or runtime citation →120report partial, append slice, route `/rite-vet`.121122## Appended slice format123124Use the complete125[`canonical slice grammar`](../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar)126with one added `Convergence:` field after `Satisfies:`:127128```markdown129<!-- Convergence 2026-07-07: slices below appended by /rite-converge — live code assessed against intent. -->130## SLICE-014 <name of the unmet capability>131Satisfies: AC-007 # the criterion / scenario this closes132Convergence: 2026-07-07 # marks this as a convergence-appended slice, not an original133<all remaining canonical slice fields>134```135136> **Mid-flight discipline.** Do not rewrite an existing slice, edit source, mark a137> happy-path-only implementation as built, or add work for a spec you suspect is wrong.138> See [`reference/anti-patterns.md`](reference/anti-patterns.md).