devrites 5.10.2 → 5.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +24 -10
- package/bin/devrites.mjs +2 -0
- package/docs/command-map.md +5 -4
- package/docs/skills.md +10 -4
- package/engine/internal/devritespaths/paths.go +2 -0
- package/engine/internal/hostpack/hostpack.go +39 -5
- package/engine/internal/hostpack/hostpack_test.go +27 -13
- package/engine/internal/install/apply.go +17 -4
- package/engine/internal/install/install.go +9 -2
- package/engine/internal/install/install_test.go +15 -2
- package/engine/internal/install/preflight.go +8 -2
- package/engine/internal/install/update.go +1 -1
- package/install.sh +4 -1
- package/pack/generated/README.md +4 -2
- package/pack/generated/devin/AGENTS.md +23 -0
- package/pack/generated/devin/agents/devrites-code-reviewer.md +145 -0
- package/pack/generated/devin/agents/devrites-devex-reviewer.md +126 -0
- package/pack/generated/devin/agents/devrites-doubt-reviewer.md +91 -0
- package/pack/generated/devin/agents/devrites-evidence-scout.md +77 -0
- package/pack/generated/devin/agents/devrites-frontend-reviewer.md +119 -0
- package/pack/generated/devin/agents/devrites-performance-reviewer.md +117 -0
- package/pack/generated/devin/agents/devrites-plan-drafter.md +102 -0
- package/pack/generated/devin/agents/devrites-plan-reviewer.md +144 -0
- package/pack/generated/devin/agents/devrites-proof-runner.md +76 -0
- package/pack/generated/devin/agents/devrites-retrospector.md +64 -0
- package/pack/generated/devin/agents/devrites-security-auditor.md +112 -0
- package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +97 -0
- package/pack/generated/devin/agents/devrites-slice-wright.md +219 -0
- package/pack/generated/devin/agents/devrites-spec-reviewer.md +99 -0
- package/pack/generated/devin/agents/devrites-strategy-reviewer.md +102 -0
- package/pack/generated/devin/agents/devrites-test-analyst.md +97 -0
- package/pack/generated/devin/agents/devrites-upgrade-planner.md +91 -0
- package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +64 -0
- package/pack/generated/devin/skills/devrites-audit/SKILL.md +51 -0
- package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +77 -0
- package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/devin/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +97 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/devin/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/devin/skills/devrites-doubt/SKILL.md +80 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/SKILL.md +87 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/craft.md +63 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +294 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/shape.md +56 -0
- package/pack/generated/devin/skills/devrites-interview/SKILL.md +103 -0
- package/pack/generated/devin/skills/devrites-lib/SKILL.md +57 -0
- package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/intent-map.md +64 -0
- package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +27 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +73 -0
- package/pack/generated/devin/skills/devrites-lib/reference/reply-contract.md +88 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +60 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +415 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +99 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/anti-patterns.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/browser-proof-checklist.md +24 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/ci-cd.md +50 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +43 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-review.md +108 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/coding-style.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +109 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +167 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/data-integrity.md +118 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/debug-recovery.md +28 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/definition-of-done.md +19 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +31 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/development-workflow.md +29 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/documentation.md +43 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/edge-case-trace.md +92 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/elicitation.md +85 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/error-handling.md +47 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/git-workflow.md +49 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/hooks.md +25 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/integration-reliability.md +102 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/observability.md +88 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/one-shot-actions.md +97 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/patterns.md +68 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/performance.md +51 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/principles.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/prose-style.md +123 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/release/ship-checklist.md +8 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/repository-topology.md +80 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/review-checklist.md +12 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security-checklist.md +25 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +202 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/skill-authoring.md +209 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +197 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/test-proof-checklist.md +13 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +212 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +92 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +427 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +267 -0
- package/pack/generated/devin/skills/devrites-prose-craft/SKILL.md +74 -0
- package/pack/generated/devin/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
- package/pack/generated/devin/skills/devrites-prose-craft/reference/examples.md +131 -0
- package/pack/generated/devin/skills/devrites-prose-craft/reference/structures.md +196 -0
- package/pack/generated/devin/skills/devrites-source-driven/SKILL.md +53 -0
- package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +135 -0
- package/pack/generated/devin/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/devin/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/devin/skills/rite/SKILL.md +148 -0
- package/pack/generated/devin/skills/rite/reference/menu.md +48 -0
- package/pack/generated/devin/skills/rite-adopt/SKILL.md +51 -0
- package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +19 -0
- package/pack/generated/devin/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +142 -0
- package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +43 -0
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +151 -0
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +97 -0
- package/pack/generated/devin/skills/rite-build/SKILL.md +102 -0
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +148 -0
- package/pack/generated/devin/skills/rite-build/reference/anti-patterns.md +27 -0
- package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +120 -0
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +56 -0
- package/pack/generated/devin/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +51 -0
- package/pack/generated/devin/skills/rite-build/reference/output.md +33 -0
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +214 -0
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +89 -0
- package/pack/generated/devin/skills/rite-build/reference/spec-drift-guard.md +84 -0
- package/pack/generated/devin/skills/rite-build/reference/tdd.md +27 -0
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +96 -0
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +98 -0
- package/pack/generated/devin/skills/rite-clarify/reference/anti-patterns.md +24 -0
- package/pack/generated/devin/skills/rite-clarify/reference/decision-coverage.md +55 -0
- package/pack/generated/devin/skills/rite-converge/SKILL.md +144 -0
- package/pack/generated/devin/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +65 -0
- package/pack/generated/devin/skills/rite-customize/SKILL.md +60 -0
- package/pack/generated/devin/skills/rite-define/SKILL.md +168 -0
- package/pack/generated/devin/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/devin/skills/rite-define/reference/gates.md +159 -0
- package/pack/generated/devin/skills/rite-define/reference/plan-template.md +149 -0
- package/pack/generated/devin/skills/rite-doctor/SKILL.md +68 -0
- package/pack/generated/devin/skills/rite-dogfood/SKILL.md +55 -0
- package/pack/generated/devin/skills/rite-explain/SKILL.md +152 -0
- package/pack/generated/devin/skills/rite-explain/reference/intake.md +89 -0
- package/pack/generated/devin/skills/rite-frame/SKILL.md +114 -0
- package/pack/generated/devin/skills/rite-frame/reference/failure-modes.md +66 -0
- package/pack/generated/devin/skills/rite-handoff/SKILL.md +97 -0
- package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/devin/skills/rite-learn/SKILL.md +72 -0
- package/pack/generated/devin/skills/rite-plan/SKILL.md +185 -0
- package/pack/generated/devin/skills/rite-plan/reference/anti-patterns.md +34 -0
- package/pack/generated/devin/skills/rite-plan/reference/dependency-graph.md +48 -0
- package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +105 -0
- package/pack/generated/devin/skills/rite-plan/reference/slicing.md +168 -0
- package/pack/generated/devin/skills/rite-plan/reference/task-breakdown.md +42 -0
- package/pack/generated/devin/skills/rite-polish/SKILL.md +105 -0
- package/pack/generated/devin/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +187 -0
- package/pack/generated/devin/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/devin/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/devin/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
- package/pack/generated/devin/skills/rite-polish/reference/code.md +82 -0
- package/pack/generated/devin/skills/rite-polish/reference/design-memory.md +117 -0
- package/pack/generated/devin/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/devin/skills/rite-polish/reference/ledger.md +65 -0
- package/pack/generated/devin/skills/rite-polish/reference/ui.md +137 -0
- package/pack/generated/devin/skills/rite-pov/SKILL.md +57 -0
- package/pack/generated/devin/skills/rite-pr-feedback/SKILL.md +54 -0
- package/pack/generated/devin/skills/rite-pressure-test/SKILL.md +66 -0
- package/pack/generated/devin/skills/rite-prototype/SKILL.md +104 -0
- package/pack/generated/devin/skills/rite-prove/SKILL.md +122 -0
- package/pack/generated/devin/skills/rite-prove/reference/acceptance-proof.md +88 -0
- package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/devin/skills/rite-prove/reference/browser-proof.md +51 -0
- package/pack/generated/devin/skills/rite-prove/reference/failure-triage.md +43 -0
- package/pack/generated/devin/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/devin/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/devin/skills/rite-quick/SKILL.md +81 -0
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +98 -0
- package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +118 -0
- package/pack/generated/devin/skills/rite-review/SKILL.md +171 -0
- package/pack/generated/devin/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/devin/skills/rite-review/reference/cognitive-load.md +90 -0
- package/pack/generated/devin/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/devin/skills/rite-review/reference/five-axis-review.md +66 -0
- package/pack/generated/devin/skills/rite-review/reference/nielsen-heuristics.md +126 -0
- package/pack/generated/devin/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/devin/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/devin/skills/rite-review/reference/security-review.md +42 -0
- package/pack/generated/devin/skills/rite-seal/SKILL.md +74 -0
- package/pack/generated/devin/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/devin/skills/rite-seal/reference/final-evidence.md +41 -0
- package/pack/generated/devin/skills/rite-seal/reference/go-no-go.md +29 -0
- package/pack/generated/devin/skills/rite-seal/reference/output.md +5 -0
- package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +47 -0
- package/pack/generated/devin/skills/rite-seal/reference/risk-and-rollback.md +56 -0
- package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +27 -0
- package/pack/generated/devin/skills/rite-ship/SKILL.md +87 -0
- package/pack/generated/devin/skills/rite-ship/reference/anti-patterns.md +28 -0
- package/pack/generated/devin/skills/rite-ship/reference/close-out.md +68 -0
- package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +120 -0
- package/pack/generated/devin/skills/rite-ship/reference/rollout.md +62 -0
- package/pack/generated/devin/skills/rite-ship/reference/ship-template.md +39 -0
- package/pack/generated/devin/skills/rite-spec/SKILL.md +149 -0
- package/pack/generated/devin/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/devin/skills/rite-spec/reference/ai-spec-template.md +40 -0
- package/pack/generated/devin/skills/rite-spec/reference/anti-patterns.md +27 -0
- package/pack/generated/devin/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/devin/skills/rite-spec/reference/investigation.md +83 -0
- package/pack/generated/devin/skills/rite-spec/reference/question-protocol.md +36 -0
- package/pack/generated/devin/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/devin/skills/rite-spec/reference/spec-checklists.md +89 -0
- package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +154 -0
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +227 -0
- package/pack/generated/devin/skills/rite-status/SKILL.md +57 -0
- package/pack/generated/devin/skills/rite-temper/SKILL.md +129 -0
- package/pack/generated/devin/skills/rite-temper/reference/anti-patterns.md +30 -0
- package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +66 -0
- package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/devin/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/devin/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/devin/skills/rite-upgrade/SKILL.md +121 -0
- package/pack/generated/devin/skills/rite-vet/SKILL.md +192 -0
- package/pack/generated/devin/skills/rite-vet/reference/anti-patterns.md +43 -0
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +202 -0
- package/pack/generated/devin/skills/rite-vet/reference/cross-model.md +19 -0
- package/pack/generated/devin/skills/rite-vet/reference/depth.md +59 -0
- package/pack/generated/devin/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +201 -0
- package/pack/generated/devin/skills/rite-watch-pr/SKILL.md +84 -0
- package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +69 -0
- package/package.json +4 -2
- package/scripts/build-host-artifacts.sh +48 -5
- package/scripts/devin-generate.sh +222 -0
- package/update.sh +2 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-plan
|
|
3
|
+
description: "Re-plan existing work when reality invalidates the plan: reslice a slice that is too big, repair drift, reorder dependencies, split boundaries, or unblock work. Not first-pass decomposition."
|
|
4
|
+
argument-hint: "[mode: decompose|reslice|repair|reorder|split|unblock|course-correct|revise]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /rite-plan: (re)plan an active feature
|
|
8
|
+
|
|
9
|
+
Update a plan invalidated by evidence, drift, or user decision. **Read the active workspace
|
|
10
|
+
first.** Missing `.devrites/ACTIVE`/workspace stops to `/rite-spec <feature>`. **Revise is
|
|
11
|
+
artifact-only**: reconcile
|
|
12
|
+
`spec.md` / `architecture.md` / `plan.md` / `tasks.md` / `traceability.md` without
|
|
13
|
+
editing source code.
|
|
14
|
+
|
|
15
|
+
## Rules consulted (read on demand from `.devin/skills/devrites-lib/reference/standards/`)
|
|
16
|
+
Pull [`development-workflow.md`](../devrites-lib/reference/standards/development-workflow.md) via `Read` when reshaping slice cadence or DoD
|
|
17
|
+
criteria.
|
|
18
|
+
Load [`repository-topology.md`](../devrites-lib/reference/standards/repository-topology.md), [`data-integrity.md`](../devrites-lib/reference/standards/data-integrity.md), or [`integration-reliability.md`](../devrites-lib/reference/standards/integration-reliability.md)
|
|
19
|
+
when the spec applicability map or observed drift triggers them.
|
|
20
|
+
Before classifying any Reslice, read `.devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
|
|
21
|
+
|
|
22
|
+
<!-- BEGIN RESLICE ROUTE-TO-ACTION -->
|
|
23
|
+
- `FOLD` → reconcile `architecture.md`, `plan.md`, `tasks.md`, and `traceability.md` atomically; invalidate Vet/readiness; Vet.
|
|
24
|
+
- `GUARD_AND_REPAIR` → no planning writes; Spec Drift Guard → Clarify → Plan repair → Vet.
|
|
25
|
+
- `BLOCKED_INPUT` → no planning writes; exact diagnostic; recover input; reclassify.
|
|
26
|
+
<!-- END RESLICE ROUTE-TO-ACTION -->
|
|
27
|
+
|
|
28
|
+
## Operating rules
|
|
29
|
+
- Update the spec when needed, but never plan around a known-wrong assumption.
|
|
30
|
+
- Keep each slice small enough for one focused build → prove cycle.
|
|
31
|
+
- **Derive slice count:** reslice when work cannot build+prove in one cycle, not to hit a
|
|
32
|
+
requested tally. Treat counts as hints and explain honest differences; see
|
|
33
|
+
[`slicing.md`](reference/slicing.md).
|
|
34
|
+
- **Size by complexity, order by dependency.** A slice carries a `Complexity: N/5` score (from
|
|
35
|
+
`/rite-define`); a slice scoring **>3** is a reslice trigger unless its inline reason justifies
|
|
36
|
+
the irreducible complexity. Honor each slice's `depends_on:`: the next *buildable* slice is the
|
|
37
|
+
lowest pending one whose dependencies are all built. This preserves one-slice-at-a-time execution.
|
|
38
|
+
- **Root writes; drafter proposes.** Follow
|
|
39
|
+
[`agents.md`](../devrites-lib/reference/standards/agents.md). The controlling chat owns
|
|
40
|
+
human questions, decisions, reconciliation, and planning writes.
|
|
41
|
+
- **Nested repair preserves its caller.** When `state.md` contains a valid
|
|
42
|
+
technical-backtracking return cursor, preserve any valid return cursor
|
|
43
|
+
byte-for-byte. `/rite-vet` is the next internal prerequisite, not a command to
|
|
44
|
+
hand back to the human.
|
|
45
|
+
|
|
46
|
+
## Workflow
|
|
47
|
+
0. Read `.devin/skills/devrites-lib/reference/standards/core.md` (operating rules) before reshaping anything.
|
|
48
|
+
Then resolve the explicit or active slug, require its `state.md`, and read
|
|
49
|
+
the cursor directly.
|
|
50
|
+
1. Read `spec.md`, `decision-coverage.md`, `plan.md`, `tasks.md`, `state.md`, `drift.md`,
|
|
51
|
+
`eng-review.md`, and the current `git diff` (if a repo). Read `decisions.md` and
|
|
52
|
+
`assumptions.md`. Require `Decision coverage: CLEAR`; otherwise STOP → `/rite-clarify`.
|
|
53
|
+
Apply `.devin/skills/devrites-lib/reference/standards/tooling.md`: use the
|
|
54
|
+
primary available structural index, and cross-check only for a named unresolved
|
|
55
|
+
predicate rather than reassurance. For an external
|
|
56
|
+
dependency's current API surface, consult context7 if available.
|
|
57
|
+
2. **Pick the mode** (`$ARGUMENTS` or infer): Apply the marked action before writes and
|
|
58
|
+
retain its decision/coverage evidence.
|
|
59
|
+
- **decompose:** first/again break the feature into vertical slices.
|
|
60
|
+
- **reslice:** a slice is too large; split into thinner end-to-end slices.
|
|
61
|
+
- **repair:** a Spec Drift Guard event; fold the resolution into plan + tasks.
|
|
62
|
+
- **reorder:** fix the dependency order.
|
|
63
|
+
- **split:** separate backend/frontend contracts (see `devrites-api-interface`).
|
|
64
|
+
- **unblock:** a verification failed; re-route around the blocker.
|
|
65
|
+
- **course-correct:** mid-build user pivot; apply the marked action, choose
|
|
66
|
+
rollback/forward-fix, and update permitted artifacts atomically (`MVP cut` is the named retreat).
|
|
67
|
+
- **revise:** reconcile a requested artifact revision; propose/confirm its file set and
|
|
68
|
+
**never edit source**. Only explicit `/rite-upgrade` with a `repairable` assessment naming
|
|
69
|
+
rule, evidence, gate, paths, and delta can authorize its neutral workspace edit—not source/history.
|
|
70
|
+
**Revise or new?** Same intent? >50% scope survives? Original not completable without it?
|
|
71
|
+
Two “no” answers mean new work: seal/ship current scope (`MVP cut` if named), then
|
|
72
|
+
`/rite-spec`, and stop.
|
|
73
|
+
See [replan-and-repair](reference/replan-and-repair.md) for each mode's steps.
|
|
74
|
+
2a. **Draft fresh.** Dispatch `devrites-plan-drafter` in `repair` mode with frozen mode,
|
|
75
|
+
affected artifacts, settled contract, and failure/drift. Await one atomic, read-only
|
|
76
|
+
the drafter's `candidate_files` bundle; human choices return separately.
|
|
77
|
+
When the observed failure is missing or ambiguous consumptive-action evidence,
|
|
78
|
+
require the drafter to apply [`one-shot-actions.md`](../devrites-lib/reference/standards/one-shot-actions.md) and return the bounded
|
|
79
|
+
diagnostic-amplification design, injective boundary map, per-seam fixtures, and
|
|
80
|
+
collision mutant. Past evidence loss is not terminal. The drafter supplies no bodies.
|
|
81
|
+
A repair candidate carries a delta self-check scoped to what the patch
|
|
82
|
+
touches: which intersected invariants it re-verified, with evidence of no
|
|
83
|
+
correction-created regression. Global re-derivation (ID/edge/HZN counts,
|
|
84
|
+
acyclicity) runs on materialized artifacts at the step-7 gate — the drafter
|
|
85
|
+
never re-derives them by exhaustive search. It also carries a bounded
|
|
86
|
+
self-attack over the delta (`self_attack_exposures`), catching the shallow
|
|
87
|
+
next-round findings before Vet's dispatch rather than after a full loop.
|
|
88
|
+
Root dispositions every exposure — fold as a finding, accept as a declared
|
|
89
|
+
residual, or reject with reason; none silently drops.
|
|
90
|
+
Packet mechanics: dedupe at assembly — findings with an identical
|
|
91
|
+
required-fix and site set merge into one entry that closes all their
|
|
92
|
+
fingerprints. The packet may carry digest-pinned site excerpts so the
|
|
93
|
+
drafter spot-verifies anchors instead of re-scanning whole files, and root
|
|
94
|
+
may partition findings into anchor-disjoint clusters with one drafter per
|
|
95
|
+
cluster in parallel — findings sharing any anchor or mirrored clause stay
|
|
96
|
+
in one cluster, and each bundle applies independently. A `partial`-
|
|
97
|
+
continuation re-dispatch continues the same packet; it does not advance the
|
|
98
|
+
same-seam counter. Count consecutive repair packets whose findings' cited clause sets overlap
|
|
99
|
+
the immediately previous packet's — the overlap is the seam. Carry it as an explicit
|
|
100
|
+
integer `same_seam_count` in every packet (previous value + 1 when the seam repeats,
|
|
101
|
+
else 1) so the threshold is counted rather than judged; a packet that reports the same
|
|
102
|
+
seam without the counter is malformed. At the third
|
|
103
|
+
same-seam packet, mark it `convergence_pressure: true` with the seam named.
|
|
104
|
+
Under pressure the drafter may close a finding marked as a refinement of an
|
|
105
|
+
already-pinned clause by folding an explicit, bounded declared
|
|
106
|
+
residual/limitation into the contract text instead of another precision
|
|
107
|
+
pin — never for a `new_failure_mode` finding. Every finding still gets one
|
|
108
|
+
disposition; none is skipped. A fourth same-seam packet that still carries
|
|
109
|
+
`new_failure_mode` findings means the seam is under-specified, not
|
|
110
|
+
under-repaired: route a declare-limitation-or-continue choice to
|
|
111
|
+
`/rite-clarify`. AFK records the suspect seam in `state.md` and continues
|
|
112
|
+
within budgets — a coverage limitation is a product decision and is never
|
|
113
|
+
auto-declared.
|
|
114
|
+
Bind exact active `.devrites/work/<slug>/` targets and executable contract; after Vet READY, root
|
|
115
|
+
materializes the exact vetted workflow-artifact paths under
|
|
116
|
+
[`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md)
|
|
117
|
+
without dispatching the product wright.
|
|
118
|
+
3. Reason about dependencies: [dependency-graph](reference/dependency-graph.md).
|
|
119
|
+
Reconcile the horizon register against `../rite-define/reference/plan-template.md`.
|
|
120
|
+
Preserve every `HZN-###` and unresolved item. Cite evidence when reclassifying the earliest
|
|
121
|
+
honest decision point; resolution or supersession also needs evidence. Never silently delete
|
|
122
|
+
an item. Planning choices resolve from source evidence or become bounded risk spikes with
|
|
123
|
+
discriminating criteria and fallback branches; local/checkpoint entries retain their owner,
|
|
124
|
+
trigger, bounds/fallback, and proof. A new human-owned blocker stops to `/rite-clarify`.
|
|
125
|
+
Reconcile `plan.md`'s canonical `Shared contract proof`: changed provider/consumer
|
|
126
|
+
boundaries keep one reused contract artifact ahead of both asserting tests, and unaffected
|
|
127
|
+
plans retain the specific no-impact statement. Missing, one-sided, duplicated-contract, vague, or
|
|
128
|
+
non-consuming proof routes to `/rite-vet` only after repair.
|
|
129
|
+
Reconcile the spec applicability map and retain every applicable standard's required
|
|
130
|
+
topology/data/integration owner, failure/recovery, deployment order, and proof output.
|
|
131
|
+
**Completion:** the slice graph is cycle-free and every dependency names an existing slice.
|
|
132
|
+
4. Re-slice using vertical-slice rules: [slicing](reference/slicing.md) and
|
|
133
|
+
[task-breakdown](reference/task-breakdown.md). Prefer thin, shippable, verifiable.
|
|
134
|
+
**Completion:** every slice is independently shippable/provable or carries an irreducibility reason.
|
|
135
|
+
5. Reconcile the candidate against steps 3 and 4, then the root updates `plan.md`, `tasks.md`,
|
|
136
|
+
`state.md`, and appends rationale to `decisions.md`. A rejected candidate
|
|
137
|
+
(malformed bundle, stale or non-unique anchor) or a drafter `Outcome: gap`
|
|
138
|
+
is one no-progress outcome on every open fingerprint in the fold; the
|
|
139
|
+
re-dispatch packet must name the rejection so the same hunks don't recur.
|
|
140
|
+
A gap naming genuinely human-owned information routes to `/rite-clarify`.
|
|
141
|
+
A drafter `Outcome: partial` is progress: materialize its complete findings,
|
|
142
|
+
then re-dispatch a narrowed packet for `remaining_findings` with anchors
|
|
143
|
+
re-derived from the just-updated files — same repair pass, fresh context.
|
|
144
|
+
A partial covering zero findings counts as no-progress. Findings in
|
|
145
|
+
`blocked_findings` route to `/rite-clarify`, never the re-dispatch.
|
|
146
|
+
Any change to `architecture.md`, `plan.md`, `tasks.md`, or `traceability.md` invalidates
|
|
147
|
+
the previous vet verdict: set `Phase: plan`, `Next step: /rite-vet`, and, when
|
|
148
|
+
`eng-review.md` exists, set `Implementation readiness: NEEDS REPLAN`. Never retain READY
|
|
149
|
+
across changed planning inputs. Preserve `Plan approved` only for behavior/acceptance-neutral
|
|
150
|
+
technical repair; clear it for a contract-changing or newly blocking horizon item and
|
|
151
|
+
reconfirm only after Clarify and Vet close it. If you stopped for drift,
|
|
152
|
+
mark the `drift.md` entry resolved. Never remove or overwrite a valid caller
|
|
153
|
+
return cursor while writing the Plan checkpoint.
|
|
154
|
+
6. After editing `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or `questions.md`,
|
|
155
|
+
re-scan affected coverage, assumptions, uncertainty, and gates. Partial/Missing, unowned
|
|
156
|
+
material assumption, or open blocking/escalating question routes `/rite-clarify`/HITL.
|
|
157
|
+
Restore `CLEAR` only from current evidence.
|
|
158
|
+
7. **Done when:** every slice is sized (builds + proves in one cycle; no slice scoring >3
|
|
159
|
+
left unjustified), the dependency order is acyclic, every open `drift.md` entry
|
|
160
|
+
was folded in one pass and marked resolved, the delta self-check is recorded,
|
|
161
|
+
revised artifacts agree with each other, no source files changed in
|
|
162
|
+
`revise` mode, the marked action is complete, and every changed
|
|
163
|
+
plan ends at `/rite-vet` rather than returning directly to build; horizon IDs stay stable,
|
|
164
|
+
reclassifications cite evidence, and no unresolved item vanished. The `Shared contract proof`
|
|
165
|
+
table or justified no-impact statement must still match the revised boundary set.
|
|
166
|
+
If any check fails, loop back: don't hand off a half-reshaped plan.
|
|
167
|
+
|
|
168
|
+
When invoked inline by a controlling rite, return the completed Plan checkpoint
|
|
169
|
+
to that caller so it can invoke Vet immediately. The phase boundary is not a
|
|
170
|
+
user-facing stop unless a genuine HITL, safety/access, or exhausted-recovery
|
|
171
|
+
condition was recorded.
|
|
172
|
+
|
|
173
|
+
When invoked directly with no controlling caller and a planning artifact
|
|
174
|
+
changed, become the caller for the mandated next step: save a return cursor
|
|
175
|
+
(`return_phase`/`return_next_action`) naming this Plan pass as the caller —
|
|
176
|
+
a direct Plan has no caller above it, so without the saved cursor Vet reads
|
|
177
|
+
itself as top-level and its verdict becomes a user-facing command. Invoke
|
|
178
|
+
`/rite-vet` inline and consume its results — `NEEDS REPLAN` re-enters repair
|
|
179
|
+
internally under the fingerprint caps and is never emitted as a user-facing
|
|
180
|
+
command; `NEEDS CLARIFICATION` and human-owned gates still reach the user.
|
|
181
|
+
Stop only at Vet's boundary (READY readback; next step `/rite-build`). An
|
|
182
|
+
unchanged plan keeps its recorded next step.
|
|
183
|
+
|
|
184
|
+
> **Mid-flight discipline.** Do not change product behavior without confirmation or
|
|
185
|
+
> absorb drift silently. See [`anti-patterns`](reference/anti-patterns.md).
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# rite-plan: anti-patterns
|
|
2
|
+
|
|
3
|
+
Load this when standing a non-trivial re-plan decision, or when the agent
|
|
4
|
+
feels reluctance toward asking the user before a behavior change.
|
|
5
|
+
|
|
6
|
+
Pack-wide rationalizations + red flags: see [standards/anti-patterns.md](../../devrites-lib/reference/standards/anti-patterns.md).
|
|
7
|
+
|
|
8
|
+
Authority: `.devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
|
|
9
|
+
|
|
10
|
+
<!-- BEGIN RESLICE ROUTE-TO-ACTION -->
|
|
11
|
+
- `FOLD` → reconcile `architecture.md`, `plan.md`, `tasks.md`, and `traceability.md` atomically; invalidate Vet/readiness; Vet.
|
|
12
|
+
- `GUARD_AND_REPAIR` → no planning writes; Spec Drift Guard → Clarify → Plan repair → Vet.
|
|
13
|
+
- `BLOCKED_INPUT` → no planning writes; exact diagnostic; recover input; reclassify.
|
|
14
|
+
<!-- END RESLICE ROUTE-TO-ACTION -->
|
|
15
|
+
|
|
16
|
+
## Phase-specific rationalizations
|
|
17
|
+
|
|
18
|
+
| Excuse | Rebuttal |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| "User didn't ask for a re-plan." | A Spec Drift Guard event *is* a re-plan trigger: ask is courtesy, the route is automatic. |
|
|
21
|
+
| "I can fix the slice mid-build, no need to update tasks." | `tasks.md` is the contract `/rite-build` reads. A fix that isn't there isn't visible to the next phase. |
|
|
22
|
+
| "Reordering slices is cosmetic." | Dependency order controls risk discovery; risk-first wins because it surfaces blockers early. |
|
|
23
|
+
| "This drift is small enough to absorb silently." | Silent drift = unrecorded decision = future "why does this work?" debugging session. |
|
|
24
|
+
| "I can change product behavior to make the plan fit." | **RSLICE-PLAN-001** — Implementation convenience cannot rewrite product behavior. |
|
|
25
|
+
| "Topology or a small criterion delta decides the route." | **RSLICE-PLAN-002** — Topology/count and “small” never override the canonical classifier; sufficient authoritative contract delta follows its mapped action. |
|
|
26
|
+
| "Chat, stale material, or the convenient map is enough." | **RSLICE-PLAN-003** — Exact current byte-bound directives are authority; cached, remembered, summarized, paraphrased, or inferred chat and stale material are not. |
|
|
27
|
+
|
|
28
|
+
## Red Flags
|
|
29
|
+
|
|
30
|
+
- About to change product behavior, acceptance, or scope without asking the user.
|
|
31
|
+
- `drift.md` entry unresolved while planning the next slice.
|
|
32
|
+
- A "mode" invented that isn't one of `decompose / reslice / repair / reorder / split / unblock / course-correct / revise`.
|
|
33
|
+
- Slices reordered without updating dependency notes: order changed, rationale didn't.
|
|
34
|
+
- Repairing a drift event by silently widening the spec rather than narrowing the plan.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Dependency graph
|
|
2
|
+
|
|
3
|
+
Order slices by what must exist before what. Keep it in `plan.md` as plain text.
|
|
4
|
+
|
|
5
|
+
## Build the graph
|
|
6
|
+
1. For each slice, list its hard prerequisites (a model it queries, an endpoint it
|
|
7
|
+
calls, a component it composes, a contract/schema/config it consumes, or a deployable
|
|
8
|
+
version that must already tolerate the change).
|
|
9
|
+
2. Draw edges prerequisite → dependent.
|
|
10
|
+
3. Topologically sort. Independent slices can be built in any order (or noted as
|
|
11
|
+
parallelizable for the user).
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
SLICE-001 (schema) -> SLICE-002 (write API) -> SLICE-003 (UI form)
|
|
15
|
+
\-> SLICE-004 (read API) -> SLICE-005 (UI list)
|
|
16
|
+
SLICE-006 (config) -> independent
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Within a tier: risk-first
|
|
20
|
+
Among slices that are equally unblocked, do the **riskiest** first: the one most
|
|
21
|
+
likely to invalidate the plan (new integration, uncertain library behavior, migration).
|
|
22
|
+
Finding drift early is cheap; finding it at seal time is not.
|
|
23
|
+
|
|
24
|
+
## Smells
|
|
25
|
+
- A slice with many prerequisites → probably too big; reslice for a thinner cut that
|
|
26
|
+
stands alone.
|
|
27
|
+
- A cycle (A needs B needs A) → the boundary is wrong; split the contract
|
|
28
|
+
(`devrites-api-interface`) so one side can land against one canonical contract.
|
|
29
|
+
Do not hide the cycle with duplicated types, a service locator, or an unowned stub.
|
|
30
|
+
- Everything depends on slice 1 → slice 1 is doing too much.
|
|
31
|
+
- File-disjoint slices share a database migration chain, generated contract, lockfile,
|
|
32
|
+
queue/port, environment, or deployable → serialize that resource or isolate it explicitly.
|
|
33
|
+
|
|
34
|
+
## Cross-boundary edges
|
|
35
|
+
Mark edges that cross a frontend/backend or service boundary. Those slices should
|
|
36
|
+
define the contract first (so both sides can proceed) and trigger `devrites-doubt`
|
|
37
|
+
before standing the interface.
|
|
38
|
+
|
|
39
|
+
After editing `tasks.md`, run `devrites-engine check task-graph <slug>` before Vet.
|
|
40
|
+
`check readiness` and `check seal` also reject cycles, unknown dependencies,
|
|
41
|
+
malformed tokens, duplicate slice IDs, a missing `Dependencies`/`depends_on`
|
|
42
|
+
line, and a `depends_on` set that disagrees with `Dependencies`. Cycles or
|
|
43
|
+
unknown dependencies block readiness.
|
|
44
|
+
|
|
45
|
+
For monorepos/multiple repositories, annotate the proven root and deployable on each node.
|
|
46
|
+
For data/integration changes, include recovery ordering: expand before new writers,
|
|
47
|
+
backfill before contract, consumer compatibility before provider exposure, and monitoring
|
|
48
|
+
before rollout. The graph is incomplete if code order is safe but deploy order is not.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Re-plan & repair modes
|
|
2
|
+
|
|
3
|
+
`/rite-plan` runs in one of these modes. Pick from `$ARGUMENTS` or infer from state.
|
|
4
|
+
|
|
5
|
+
Authority: `.devin/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
|
|
6
|
+
|
|
7
|
+
<!-- BEGIN RESLICE ROUTE-TO-ACTION -->
|
|
8
|
+
- `FOLD` → reconcile `architecture.md`, `plan.md`, `tasks.md`, and `traceability.md` atomically; invalidate Vet/readiness; Vet.
|
|
9
|
+
- `GUARD_AND_REPAIR` → no planning writes; Spec Drift Guard → Clarify → Plan repair → Vet.
|
|
10
|
+
- `BLOCKED_INPUT` → no planning writes; exact diagnostic; recover input; reclassify.
|
|
11
|
+
<!-- END RESLICE ROUTE-TO-ACTION -->
|
|
12
|
+
|
|
13
|
+
## decompose
|
|
14
|
+
|
|
15
|
+
First (or fresh) breakdown into vertical slices. Use `task-breakdown.md` +
|
|
16
|
+
`slicing.md`. Output: a populated `tasks.md` and an ordered `plan.md` graph.
|
|
17
|
+
|
|
18
|
+
## reslice
|
|
19
|
+
|
|
20
|
+
A slice proved too large (couldn't build+prove in one cycle, or its goal has multiple
|
|
21
|
+
"and"s). Split into thinner end-to-end slices, preserving acceptance coverage: split
|
|
22
|
+
**by the sizing rule, not to a target count**. Update `tasks.md`; renumber; fix
|
|
23
|
+
dependency edges.
|
|
24
|
+
|
|
25
|
+
## repair (after Spec Drift Guard)
|
|
26
|
+
|
|
27
|
+
A drift event stopped the build. Steps:
|
|
28
|
+
|
|
29
|
+
1. Read the `drift.md` entries and their classifications. Fold EVERY open entry
|
|
30
|
+
and accepted finding for the affected artifacts in ONE pass, never serially.
|
|
31
|
+
2. If the user answered a drift question, encode that decision in `decisions.md`.
|
|
32
|
+
3. Update `spec.md` (only the affected sections) and `plan.md`/`tasks.md` to match
|
|
33
|
+
reality. Adjust acceptance criteria if they were wrong.
|
|
34
|
+
**Write the pointer, not the history.** Name the findings a fold closes by ID, one line
|
|
35
|
+
of meaning each; never restate prior folds, prior DEC lists, or closed-round narrative in
|
|
36
|
+
`architecture.md`/`plan.md`/`tasks.md`/`traceability.md`. That text belongs in
|
|
37
|
+
`decisions.md`, or in `history/` via [Budget relocation](#revise) once closed, so each
|
|
38
|
+
fold appends a bounded line. A banner that grows with the round count is the defect.
|
|
39
|
+
4. Mark each `drift.md` entry **resolved** with the resolution + date.
|
|
40
|
+
5. **Self-check and self-attack the repaired candidate on the delta before
|
|
41
|
+
handoff** — re-verify every invariant the correction touched (acyclic
|
|
42
|
+
dependency graph, bidirectional traceability, Shared contract proof vs
|
|
43
|
+
boundary set, sizing, no correction-created regression), then probe the
|
|
44
|
+
delta against the reviewers' attack classes (race/observation windows,
|
|
45
|
+
alias escapes, ordering gaps, capability gaps, unbounded blocking,
|
|
46
|
+
happy-path-only coverage); fold a fix or a named bounded residual into
|
|
47
|
+
the same pass. Record both in the Plan
|
|
48
|
+
checkpoint; Vet's recheck verifies it rather than rediscovering the defect a
|
|
49
|
+
loop later.
|
|
50
|
+
6. Resume at the corrected slice.
|
|
51
|
+
Never quietly delete a requirement; use the marked action before contract edits.
|
|
52
|
+
|
|
53
|
+
## reorder
|
|
54
|
+
|
|
55
|
+
Dependency order is wrong or suboptimal. Recompute the graph (`dependency-graph.md`),
|
|
56
|
+
re-sort risk-first within tiers, update `plan.md`'s implementation order.
|
|
57
|
+
|
|
58
|
+
## split (backend/frontend contract)
|
|
59
|
+
|
|
60
|
+
A slice couples two sides too tightly. Define the contract first (shape, status codes,
|
|
61
|
+
errors: `devrites-api-interface`), then split into a backend slice (can land with a
|
|
62
|
+
stub consumer) and a frontend slice (can land against a mock/real contract).
|
|
63
|
+
|
|
64
|
+
## unblock
|
|
65
|
+
|
|
66
|
+
An exhausted fingerprint blocks diagnosis, not symptom. Route around/reslice; escalate
|
|
67
|
+
only for scope change. If proof removed that cause but symptom remains, keep the dead
|
|
68
|
+
end and plan a new diagnosis/proof fingerprint. Never clear/reuse old one.
|
|
69
|
+
|
|
70
|
+
## course-correct
|
|
71
|
+
|
|
72
|
+
Mid-build user pivot. Apply the marked action, choose rollback or forward-fix, and
|
|
73
|
+
update permitted artifacts atomically (`MVP cut` is the named retreat). Invalidate
|
|
74
|
+
Vet/readiness when contract or topology changes.
|
|
75
|
+
|
|
76
|
+
**Feature-ceiling cut.** When unbuilt slices exceed the
|
|
77
|
+
[feature ceiling](slicing.md#feature-ceiling-split-an-epic-never-override-the-budget),
|
|
78
|
+
`MVP cut` keeps the built slices plus the thinnest shippable unbuilt subset here; the
|
|
79
|
+
remaining slices, their REQ/AC IDs and proof rows move verbatim into a named
|
|
80
|
+
continuation list (spec `Non-goals` → future `/rite-spec <slug>-2`, `-3`, …) through
|
|
81
|
+
the Spec Drift Guard. IDs never renumber; each ID is owned by exactly one workspace.
|
|
82
|
+
Record the sequence once in `decisions.md`.
|
|
83
|
+
|
|
84
|
+
## revise
|
|
85
|
+
|
|
86
|
+
Artifact-only reconciliation of `spec.md`, `architecture.md`, `plan.md`, `tasks.md`,
|
|
87
|
+
or `traceability.md` — never source. Propose/confirm the file set first. Only explicit
|
|
88
|
+
`/rite-upgrade` with a `repairable` assessment may authorize neutral workspace edits.
|
|
89
|
+
|
|
90
|
+
Unchanged acceptance/behavior with non-equivalent `proposed_coverage` is a
|
|
91
|
+
contradictory input: the canonical classifier blocks it — there is no fourth
|
|
92
|
+
route (see [`acceptance-preserving-reslice.md`](../../devrites-lib/reference/standards/acceptance-preserving-reslice.md)).
|
|
93
|
+
|
|
94
|
+
**Budget relocation** (admitted by `/rite-upgrade`, or by the phase owner when
|
|
95
|
+
`orient` reports `over: true`): move checkpoint narrative, historical fold text and
|
|
96
|
+
closed-round accounts verbatim from `state.md`/`tasks.md`/`plan.md`/`architecture.md`/
|
|
97
|
+
`eng-review.md` into `history/<file>-<YYYYMMDD>.md`, packets/accounts from the root
|
|
98
|
+
into `packets/`, leaving a one-line pointer. Cursor, live slices, open findings, IDs,
|
|
99
|
+
answers, decisions and bindings stay unchanged; nothing is deleted or reworded.
|
|
100
|
+
Re-emit the readiness binding when a readiness input moved.
|
|
101
|
+
|
|
102
|
+
## Always
|
|
103
|
+
|
|
104
|
+
Update `state.md` (phase, next step) and append a dated line to `decisions.md`
|
|
105
|
+
explaining *why* the plan changed. Preserve mapped-action decisions.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Slicing
|
|
2
|
+
|
|
3
|
+
DevRites builds in **thin vertical slices**: each slice cuts through every layer it
|
|
4
|
+
needs (data → logic → API → UI) and leaves the system in a working, testable state.
|
|
5
|
+
|
|
6
|
+
## Vertical, not horizontal
|
|
7
|
+
Horizontal layering delays integration feedback. Vertical slicing delivers a usable path:
|
|
8
|
+
```
|
|
9
|
+
SLICE-001: Create a task (DB + API + minimal UI) -> user can create + test passes
|
|
10
|
+
SLICE-002: List tasks (query + API + UI) -> user can see them
|
|
11
|
+
SLICE-003: Edit a task (update + API + UI) -> user can modify
|
|
12
|
+
SLICE-004: Delete a task (delete + API + UI + confirm) -> full CRUD
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Sizing a slice
|
|
16
|
+
A slice is the right size when it:
|
|
17
|
+
- delivers one observable capability end-to-end;
|
|
18
|
+
- can finish its writer, independent review, and slice proof within `/rite-build`;
|
|
19
|
+
- has acceptance criteria you can verify with evidence;
|
|
20
|
+
- can be rolled back on its own;
|
|
21
|
+
- is worth its own review gate: a reviewer could meaningfully reject *this* slice while
|
|
22
|
+
approving its neighbor. If two slices can only pass or fail together, they're one slice.
|
|
23
|
+
|
|
24
|
+
Size by independent invariants, failure modes, and proof seams, not file count or
|
|
25
|
+
the word "and". Split independently acceptable/provable responsibilities; several
|
|
26
|
+
files may serve one inseparable capability. Full feature `/rite-prove` follows all
|
|
27
|
+
slices; slice proof never replaces final integration or acceptance proof.
|
|
28
|
+
|
|
29
|
+
For `Complexity` and irreducible boundaries, use the canonical
|
|
30
|
+
[`tasks.md` slice grammar](../../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar).
|
|
31
|
+
Keep the smallest cut that stands alone end-to-end; do not add slices or gates for
|
|
32
|
+
fragments that can only pass together. No slice size guarantees first-pass correctness.
|
|
33
|
+
|
|
34
|
+
## How many slices?: derive, don't dictate
|
|
35
|
+
The slice **count is an output, not an input.** It falls out of the work: one slice per
|
|
36
|
+
independently-shippable vertical increment that satisfies one (or a tight group of)
|
|
37
|
+
acceptance criteria and passes the sizing test above. A 2-criterion feature is 1-2 slices;
|
|
38
|
+
a 12-criterion feature is however many thin end-to-end cuts those 12 need.
|
|
39
|
+
|
|
40
|
+
- **Never slice to a target number.** Don't pad a small feature into "5 slices" or
|
|
41
|
+
compress a large one into "3" because a figure was named.
|
|
42
|
+
- **A user-supplied count is a hint at most.** If the user says "do it in 4", slice the
|
|
43
|
+
work logically first; if your honest decomposition differs, present the logical count
|
|
44
|
+
and *why*, then let them redirect: don't silently force their number.
|
|
45
|
+
- **Re-size by the rule, not the tally** (`/rite-plan reslice`): split a slice because it
|
|
46
|
+
failed the sizing test, not to hit a count.
|
|
47
|
+
|
|
48
|
+
`.devrites/AFK` `max_slices` limits unattended execution, never plan decomposition.
|
|
49
|
+
|
|
50
|
+
## Feature ceiling: split an epic, never override the budget
|
|
51
|
+
|
|
52
|
+
The derived count is also a size signal. A decomposition that cannot fit the
|
|
53
|
+
`tasks.md` / `plan.md` / `traceability.md` budgets in
|
|
54
|
+
[`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md)
|
|
55
|
+
(about ten canonical slices) is an epic: every Vet/Doubt/Build review re-reads the
|
|
56
|
+
whole surface, each round finds new material, and the loop never converges.
|
|
57
|
+
`Budget override` never covers slice or acceptance-criteria count.
|
|
58
|
+
|
|
59
|
+
- Keep the thinnest independently shippable subset here; the rest becomes spec
|
|
60
|
+
`Non-goals` (via the Spec Drift Guard), each continuation a named future `/rite-spec`
|
|
61
|
+
workspace. Record the sequence once in `decisions.md`.
|
|
62
|
+
- Acceptance-preserving: every REQ/AC keeps its ID, owned by exactly one workspace.
|
|
63
|
+
- Earliest owner wins: Temper's one-sentence test → Define/Plan decomposition → Vet §0
|
|
64
|
+
scope finding → `/rite-plan course-correct` (`MVP cut`). Mid-build, unbuilt slices
|
|
65
|
+
beyond the ceiling move; built slices stay.
|
|
66
|
+
- The ceiling bounds one **workspace**, never the product: the sequence delivers every
|
|
67
|
+
slice, in order, each with its own Vet/Build/Review loop. A human may still accept a
|
|
68
|
+
single larger workspace by recording the decision in `decisions.md` and a structural
|
|
69
|
+
`Budget override:` in the affected artifacts; the extra review rounds on the whole
|
|
70
|
+
surface are then the accepted, named cost. The deterministic gate
|
|
71
|
+
(`check readiness`/`check seal`) blocks only a material overshoot without such an
|
|
72
|
+
override, so the choice stays explicit rather than accidental.
|
|
73
|
+
|
|
74
|
+
### Continuation workspaces
|
|
75
|
+
|
|
76
|
+
Granularity is a real cost choice, not a formality: a workspace costs ~8–12 fixed
|
|
77
|
+
dispatches (drafter, plan reviewer, proof runner, spec/code reviewers, seal roster;
|
|
78
|
+
Temper is skippable when the parent's `strategy.md` already covers the scope) plus
|
|
79
|
+
~3–5 per slice. The split does not remove per-slice cost; it bounds each round's
|
|
80
|
+
context, stops the non-convergent whole-surface loop, isolates a plan defect's blast
|
|
81
|
+
radius to its own workspace, and lets independent continuations run in parallel.
|
|
82
|
+
|
|
83
|
+
Make each continuation cheap and drift-free:
|
|
84
|
+
|
|
85
|
+
- `brief.md` names the parent slug and the sequence position; `decisions.md` holds the
|
|
86
|
+
sequence once (in the parent).
|
|
87
|
+
- The child's `state.md` seeds the durable cursor at creation — `sequence_parent` =
|
|
88
|
+
parent slug, `sequence_position` = parent position + 1,
|
|
89
|
+
`sequence_workspaces_remaining` = parent remaining − 1, and `sequence_role:
|
|
90
|
+
release` only when the recorded entry is the sequence's release milestone.
|
|
91
|
+
Values derive from the parent's `state.md` and its `decisions.md` record,
|
|
92
|
+
exactly once; resume re-derives the same values rather than charging again.
|
|
93
|
+
A workspace that is not a recorded continuation leaves all four rows absent.
|
|
94
|
+
This is what `state merge-manifest` walks and what the release-union gate reads,
|
|
95
|
+
so a manually opened continuation needs the same seeding as an armed run.
|
|
96
|
+
- Read the parent's `architecture.md`, `plan.md`, `decisions.md` (or its archived copy)
|
|
97
|
+
as **design input** — never re-derive settled architecture, dependency choices, or
|
|
98
|
+
interfaces. Proof is always fresh for the new candidate; parent evidence is cited as
|
|
99
|
+
input, never as proof for this workspace.
|
|
100
|
+
- Shared interfaces, data shapes, and contracts are pinned **once**, in the workspace
|
|
101
|
+
that introduces them, and referenced afterwards. A continuation that must change a
|
|
102
|
+
pinned contract does so through its own `plan.md` shared-contract proof and an ADR
|
|
103
|
+
that names the superseded owner — never by silently re-deciding it.
|
|
104
|
+
- A request that names a recorded continuation is a new workspace, not
|
|
105
|
+
`/rite-plan revise` on the parent.
|
|
106
|
+
- Phases chain automatically only **inside** one workspace (`/rite-autocomplete`
|
|
107
|
+
drives spec → clarify → temper → define → vet → build × slices → prove → polish →
|
|
108
|
+
review → seal; plain HITL chains plan↔vet inline and stops at each other boundary).
|
|
109
|
+
Next continuation is a new invocation by default. Same-run chaining is
|
|
110
|
+
`continue_sequence: true` (Deferred-ship).
|
|
111
|
+
|
|
112
|
+
### Release milestone (full-picture gate)
|
|
113
|
+
|
|
114
|
+
Milestone gates are feature-scoped: `prove` proves *that* workspace's acceptance,
|
|
115
|
+
`review`/`seal` judge *that* candidate. A product release therefore needs one more
|
|
116
|
+
workspace — the **release milestone** — planned last, whose subject is the assembled
|
|
117
|
+
product:
|
|
118
|
+
|
|
119
|
+
- Its ACs are product-level: cross-milestone integration, end-to-end journeys,
|
|
120
|
+
performance/release budgets, docs/rollout. Milestone ACs stay owned by their
|
|
121
|
+
milestones and are **referenced** here, never re-owned.
|
|
122
|
+
- Its candidate manifest lists the union of shipped surfaces, so one `prove` → `review`
|
|
123
|
+
→ `seal` binds the whole product, and one `ship` commits/pushes/tags the release.
|
|
124
|
+
Its `state.md` cursor carries `sequence_role: release` (seeded when the recorded
|
|
125
|
+
continuation is the sequence's release entry); `check candidate`/`check seal`
|
|
126
|
+
then require the manifest to cover the whole recorded chain. Build that union
|
|
127
|
+
deterministically: `devrites-engine state merge-manifest <release-slug>` walks
|
|
128
|
+
the recorded `sequence_parent` chain (live `work/` first, then `archive/`) and
|
|
129
|
+
folds every predecessor's manifest into the release `## Candidate manifest`;
|
|
130
|
+
on a path collision the later sequence position's row wins. An explicit
|
|
131
|
+
ordered `<pred>...` argument exists for chains recorded before the sequence
|
|
132
|
+
cursor fields.
|
|
133
|
+
- Earlier milestones keep their own slice-level proof and their own prove/review/seal;
|
|
134
|
+
that is what stops a late defect from invalidating 170 slices of work. Skipping a
|
|
135
|
+
milestone's proof is allowed only by recording the decision — the release milestone
|
|
136
|
+
then carries the full acceptance burden, and that cost is the named trade-off.
|
|
137
|
+
- The capability ledger (`.devrites/specs/<capability>/spec.md`) accumulates the
|
|
138
|
+
product picture across milestones; Polish folds each milestone's deltas.
|
|
139
|
+
- **Deferred-ship sequence** (`.devrites/AFK` `continue_sequence: true`, `max_workspaces: N`):
|
|
140
|
+
milestones are sealed but not shipped, and the armed run opens the next recorded
|
|
141
|
+
continuation automatically; local `WIP(<slug>):` checkpoints still land with
|
|
142
|
+
human summaries (never a slice id),
|
|
143
|
+
so the tree stays clean. One release ship at the end collapses the sequence's
|
|
144
|
+
checkpoints into the single release commit, pushes/tags it, and may archive the
|
|
145
|
+
sealed predecessors. Because no milestone boundary was shipped, later work can touch
|
|
146
|
+
an earlier milestone's surfaces without an affected-re-proof trigger — so the release
|
|
147
|
+
milestone re-proves the union acceptance map, and that full re-proof is this mode's
|
|
148
|
+
named cost. Trade-off against per-milestone ship: no shared-history rollback point
|
|
149
|
+
per increment, one Git approval at the end.
|
|
150
|
+
- What is full-surface here is the **review**: reviewers see the whole product diff.
|
|
151
|
+
Re-proof stays targeted — this milestone's product ACs, everything a later milestone
|
|
152
|
+
touched, and any uncertain closure. Milestone evidence is cited only under
|
|
153
|
+
[evidence validity](../../devrites-lib/reference/candidate-integrity.md#evidence-validity)
|
|
154
|
+
with explicit unchanged-input/dependency justification and a link to the original
|
|
155
|
+
account; a blind re-proof of every milestone AC is a recorded decision, not a default.
|
|
156
|
+
|
|
157
|
+
## First slice
|
|
158
|
+
Make slice 1 the **thinnest useful end-to-end path**. It flushes out integration and
|
|
159
|
+
convention surprises early, while changes are cheap.
|
|
160
|
+
|
|
161
|
+
**Risk-first exception.** When the biggest risk is a technical *unknown*: "will this library
|
|
162
|
+
even do X?", "can we hit the latency target?": let slice 1 (or a throwaway spike ahead of it)
|
|
163
|
+
prove that unknown, even if it isn't the thinnest user-facing path. Fail the risky bet first,
|
|
164
|
+
while pivoting is still cheap.
|
|
165
|
+
|
|
166
|
+
## Slice independence
|
|
167
|
+
Order by dependency, but minimize coupling. A slice that needs three other slices first
|
|
168
|
+
is a smell: look for a thinner cut that stands alone.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Work-item breakdown
|
|
2
|
+
|
|
3
|
+
How to turn a spec into ordered, vertical slices in `tasks.md`.
|
|
4
|
+
|
|
5
|
+
## Each slice is one task
|
|
6
|
+
|
|
7
|
+
Use the complete canonical grammar in
|
|
8
|
+
[`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar).
|
|
9
|
+
This reference owns decomposition; the shared schema owns field names and meanings.
|
|
10
|
+
|
|
11
|
+
## Process
|
|
12
|
+
1. List the capabilities the spec promises.
|
|
13
|
+
2. Map each to a vertical slice (thinnest end-to-end cut).
|
|
14
|
+
3. Order by dependency; risk-first within a tier (do the scary slice early while it's
|
|
15
|
+
cheap to change).
|
|
16
|
+
4. Mark which slices touch UI (→ frontend craft + browser proof), map each to the design
|
|
17
|
+
brief states, and give each a binary visual acceptance target. Mark which slices cross
|
|
18
|
+
a module/service boundary (→ `devrites-api-interface`, `devrites-doubt`). For a changed
|
|
19
|
+
provider/consumer boundary, map the plan's `Shared contract proof` artifact before its
|
|
20
|
+
provider- and consumer-side asserting tests; both tests consume that same artifact and
|
|
21
|
+
their slice dependencies preserve the order. Do not duplicate the contract in each slice.
|
|
22
|
+
For each applicable topology/data/integration row, assign its owner, failure/recovery
|
|
23
|
+
case, and proof to a slice; preserve deployment/resource ordering from the plan.
|
|
24
|
+
5. Write or update `traceability.md` so every `AC-###` maps to ≥1 `SLICE-###`, a
|
|
25
|
+
planned proof, evidence status, and likely touched files.
|
|
26
|
+
6. Sanity check: every acceptance criterion in `spec.md` maps to ≥1 slice; no slice has
|
|
27
|
+
an unowned criterion.
|
|
28
|
+
7. Resolve every foreseeable human-owned checkpoint now. Keep a build-time checkpoint only
|
|
29
|
+
when it needs evidence unavailable before code or mandatory action-time approval, and say why.
|
|
30
|
+
8. Make every `Tests/proof` entry executable: exact command, working directory, prerequisites,
|
|
31
|
+
expected signal, and mutable inputs whose provenance evidence must bind.
|
|
32
|
+
|
|
33
|
+
## Keep it honest
|
|
34
|
+
- **Interfaces prevent cross-slice drift.** A slice-wright sees only its own contract; the
|
|
35
|
+
`Interfaces` line is how it learns the names and types neighboring slices use. A function
|
|
36
|
+
called `clearLayers()` in slice 3 and `clearFullLayers()` in slice 7 is a planning bug:
|
|
37
|
+
name shared symbols once, here.
|
|
38
|
+
- Don't pre-write code in the task: describe the outcome, not the implementation.
|
|
39
|
+
- Don't bundle "while we're here" work into a slice. That's scope creep; log it as a
|
|
40
|
+
follow-up instead.
|
|
41
|
+
- Don't slice to a target number: the count comes from the capabilities + the sizing
|
|
42
|
+
rule (`slicing.md`), not a figure anyone named.
|