devrites 5.10.1 → 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 +13 -0
- package/README.md +24 -10
- package/bin/devrites.mjs +2 -0
- package/docs/cli.md +4 -1
- package/docs/command-map.md +7 -5
- package/docs/engine/commands.md +7 -5
- package/docs/orchestration.md +5 -2
- package/docs/skills.md +10 -4
- package/docs/usage.md +3 -1
- package/engine/commands.go +3 -0
- package/engine/help.go +190 -0
- package/engine/help_test.go +98 -0
- 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/engine/internal/parallel/cli.go +90 -32
- package/engine/internal/parallel/cli_test.go +32 -0
- package/engine/main.go +15 -8
- package/engine/root_routing_test.go +4 -0
- package/install.sh +4 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/.claude/skills/rite-build/SKILL.md +3 -1
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/.claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/README.md +4 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/claude/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/codex/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +1 -1
- 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/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/omp/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/omp/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +15 -8
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +10 -5
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +12 -7
- package/pack/generated/pi/skills/rite-build/SKILL.md +3 -1
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +4 -3
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +3 -1
- package/pack/generated/pi/skills/rite-define/reference/plan-template.md +1 -1
- 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,33 @@
|
|
|
1
|
+
# rite-build output
|
|
2
|
+
|
|
3
|
+
**Slices remain:**
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
Done: built slice <n> — <name>.
|
|
7
|
+
Changed: <files>; state.md, touched-files.md, evidence.md
|
|
8
|
+
Evidence: acceptance met; tests <cmd> → pass; browser <summary|n/a>; drift <none|handled>
|
|
9
|
+
Open: <none|blockers|questions>
|
|
10
|
+
Next: /rite-build
|
|
11
|
+
Record: .devrites/work/<slug>/evidence.md
|
|
12
|
+
↻ Hygiene: /clear between slices; /rite-handoff if away > a few hours
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**All built:**
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
Done: built slice <n> — <name>; all slices built.
|
|
19
|
+
Changed: <files>; state.md, touched-files.md, evidence.md
|
|
20
|
+
Evidence: acceptance met; tests <cmd> → pass; browser <summary|n/a>; drift <none|handled>
|
|
21
|
+
Open: <none|blockers|questions>
|
|
22
|
+
Next: /rite-prove
|
|
23
|
+
Record: .devrites/work/<slug>/evidence.md
|
|
24
|
+
↻ Hygiene: /clear before /rite-prove; /rite-handoff if away > a few hours
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
HITL returns after one green slice. Only explicit `.devrites/AFK` lets the
|
|
28
|
+
controlling root chain another pending slice after green-proof, cap, and pause
|
|
29
|
+
gates. Every `devrites-slice-wright` returns after exactly one slice.
|
|
30
|
+
|
|
31
|
+
At all built, Build never enters `/rite-prove` automatically; a higher-level
|
|
32
|
+
orchestrator may invoke it only under its own contract. Awaiting-human or
|
|
33
|
+
stopped states use the shared reply contract.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Parallel batch (`--parallel N`)
|
|
2
|
+
|
|
3
|
+
Opt-in only. Default `/rite-build` stays [`one-slice-cycle.md`](one-slice-cycle.md).
|
|
4
|
+
|
|
5
|
+
## Entry
|
|
6
|
+
|
|
7
|
+
| Input | Behavior |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| omitted / `--parallel 1` | Serial one-slice |
|
|
10
|
+
| `--parallel N` (**2≤N≤10**) | N is a **cap**, not a quota: run the largest eligible set ≤ N |
|
|
11
|
+
| non-integer / `N≤0` / `N>10` | Hard refuse (no silent clamp) |
|
|
12
|
+
| Autocomplete `--parallel N` | N is the cap for this run; leftover sentinel `max_parallel` is ignored, then `/rite-autocomplete` writes or replaces only `max_parallel: N` |
|
|
13
|
+
| Autocomplete, no flag | Same path, cap from sentinel `max_parallel` else 10; serial only when ineligible |
|
|
14
|
+
|
|
15
|
+
AFK caps `N`. Charge green siblings once after integrate; abort /
|
|
16
|
+
integrate-failed → **0**. `parallel create` refuses while a lease exists.
|
|
17
|
+
Reconcile retained repair-round artifacts by exact causal fingerprint before honoring a stored blocked status/verdict. Blocked status, round count, or distinct finding alone cannot stop cold resume: establish missing or stale review coverage under step 4; repair unless a stop condition remains evidenced.
|
|
18
|
+
|
|
19
|
+
## Dynamic selection and re-batching
|
|
20
|
+
|
|
21
|
+
Size each batch by what is runnable **now**, never by the requested number:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
N_eff = min(
|
|
25
|
+
cap -- this invocation's --parallel N (wins over leftover sentinel max_parallel)
|
|
26
|
+
| else sentinel max_parallel | else 10 (autocomplete default)
|
|
27
|
+
eligible set -- dependency-satisfied pending slices, pairwise path-disjoint
|
|
28
|
+
AFK headroom -- remaining max_slices, max_agents, max_minutes, review queue
|
|
29
|
+
host capacity -- concurrent worktree writers + the runtime isolation table
|
|
30
|
+
)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Select **greedily in plan order**: pass every currently dependency-ready pending slice
|
|
34
|
+
(plan order, `Files likely touched`) to
|
|
35
|
+
`devrites-engine parallel select --cap N [--root <dir>]`. `N_eff ≥ 2` → parallel batch;
|
|
36
|
+
`N_eff = 1` → one serial round; nothing pending → Prove. A cap that cannot be filled
|
|
37
|
+
is normal: take fewer. Serial is this round's size, not the rest of the run.
|
|
38
|
+
|
|
39
|
+
**Re-batch automatically after every completed round** (parallel integrate+cleanup or
|
|
40
|
+
a serial slice). Re-read `state.md`, pending slices, and the tree, then run
|
|
41
|
+
`parallel select` again: finished work leaves the pending set, and satisfied
|
|
42
|
+
dependencies unlock new slices. Under `.devrites/AFK` and `/rite-autocomplete` the
|
|
43
|
+
repeat is the same run — HITL stops after each batch. `--parallel 5` with one eligible
|
|
44
|
+
slice runs that one; when two to five then become eligible, the next round takes that
|
|
45
|
+
many. **Failing case:** the run stays one-by-one after a serial round even though more
|
|
46
|
+
slices are now eligible under the same cap.
|
|
47
|
+
|
|
48
|
+
## Path-disjoint
|
|
49
|
+
|
|
50
|
+
Exact project-relative source/test paths only. Normalize `\`→`/`. Reject `..`,
|
|
51
|
+
duplicates, absolutes, `.devrites/**`. Empty pairwise intersection required.
|
|
52
|
+
|
|
53
|
+
**SSOT:** `devrites-engine check path-disjoint [--root <dir>] [<json-file>|-]`
|
|
54
|
+
(N≥2 only; pass `--root`). Input is `{"slices":[{"id":"SLICE-002","paths":["src/policy.rs","src/policy/mod.rs"]}]}`
|
|
55
|
+
(or a top-level array) built from each candidate's `Files likely touched`.
|
|
56
|
+
Exit `0` → fan-out; else force serial. Inspect-time
|
|
57
|
+
overlap → sibling **gap** (a shared path is a contract defect). **Failing
|
|
58
|
+
case:** two parallel wrights share a path and fan-out proceeds without that
|
|
59
|
+
check.
|
|
60
|
+
|
|
61
|
+
## Control vs workers
|
|
62
|
+
|
|
63
|
+
Control owns `.devrites/work/<slug>/` (lease + bookkeeping).
|
|
64
|
+
Workers: `.scratch/parallel-wt/<batch>/<slice>/` on
|
|
65
|
+
`devrites/parallel/<slug>/<batch>/<slice>` @ base `B`. Wrights never write
|
|
66
|
+
`.devrites/**`.
|
|
67
|
+
|
|
68
|
+
Lease: `batch_id`, `created_at`, `base_sha`, `n`,
|
|
69
|
+
`status` (`running|aborted|integrate-failed|complete`), `control_pid_or_session`,
|
|
70
|
+
`slices[]` (`id`, `paths`, `worktree_path`, `branch`, `wright_status`,
|
|
71
|
+
`transfer_commit`).
|
|
72
|
+
|
|
73
|
+
## Lifecycle
|
|
74
|
+
|
|
75
|
+
1. Orient/gate; parse the cap; compute `N_eff` and select the eligible set
|
|
76
|
+
([Dynamic selection and re-batching](#dynamic-selection-and-re-batching)) —
|
|
77
|
+
candidates from `orient` `task_graph.slices` + built list, each candidate's
|
|
78
|
+
`Files likely touched` via `observe slice`, then
|
|
79
|
+
`parallel select --cap N` (pairwise disjointness is inside that verb).
|
|
80
|
+
2. Write lease; freeze `B=HEAD`; `parallel create` worktrees.
|
|
81
|
+
3. Dispatch ≤10 wrights in parallel (cwd=worktree; allowlist; prove `HEAD==B`).
|
|
82
|
+
4. Inspect each returned path list, cumulative diff from `B`, transfer identity,
|
|
83
|
+
and required result fields against the immutable contract. Reject malformed,
|
|
84
|
+
stale, or out-of-scope work. Apply
|
|
85
|
+
[independent Build review](phase-contract.md#independent-build-review): first
|
|
86
|
+
full inventory, then bounded owning-role rechecks after repairs. Gap or
|
|
87
|
+
Critical/Important → `gap`; else approved proof → `green|red|gap`.
|
|
88
|
+
Reviewer fan-out for a batch is itself batched under
|
|
89
|
+
[`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md#scale-limits)
|
|
90
|
+
(≈4 concurrent read-only reviewers, 8 only with disjoint paths), and `max_agents`
|
|
91
|
+
headroom bounds the batch size — one batch never assumes unbounded reviewers.
|
|
92
|
+
5. Non-green siblings → **repair round** (below) in the same worktrees; lease
|
|
93
|
+
stays `running` — no abort while repair budget remains. A green sibling →
|
|
94
|
+
`parallel record-green`. No partial integrate. All green → integrate.
|
|
95
|
+
A recoverable RED blocks integration but does not cancel independent safe running siblings.
|
|
96
|
+
Expected test-first RED is not a terminal gate failure. Cancel only for a shared
|
|
97
|
+
invalid foundation, safety/access failure, resource boundary, or explicit stop;
|
|
98
|
+
preserve completed and in-progress recoverable work and classify each result.
|
|
99
|
+
6. `parallel integrate --apply-to-control` **only after steps 4–5 are green**:
|
|
100
|
+
each `transfer_commit` descends from `B` and diffs path-exact vs
|
|
101
|
+
`B`; apply each in plan order as its own local `WIP(<slug>):` commit
|
|
102
|
+
(imperative summary, never a slice id). Staging branch, then FF. Conflict →
|
|
103
|
+
reset to `B`, `integrate-failed`; classify under repair rounds (siblings stay
|
|
104
|
+
in place). Never integrate because a wright returned.
|
|
105
|
+
7. Success: FF control (the branch that held `HEAD` when the batch started —
|
|
106
|
+
often `main`/`master`, otherwise whatever the user was on) to the integrate
|
|
107
|
+
tip: N local commits, never pushed; union `touched-files.md`; update
|
|
108
|
+
state/evidence; AFK +1 per integrated sibling; optional `check candidate`.
|
|
109
|
+
8. Cleanup runs only after `integrate` marks the lease `complete` — work
|
|
110
|
+
landed in control, so `parallel cleanup` removes worktrees/branches.
|
|
111
|
+
Blocked/human-stopped batches keep lease, worktrees, branches — nothing is
|
|
112
|
+
removed while the batch may resume. `parallel abort` + `cleanup --force`
|
|
113
|
+
abandons the batch — the explicit human discard path; the single
|
|
114
|
+
orchestrator-emitted use is the automatic re-batch under Repair rounds,
|
|
115
|
+
where it acts as the salvage step only (uncommitted allowlisted changes →
|
|
116
|
+
slice-branch commit; branches past `B` kept; a failed salvage keeps the
|
|
117
|
+
worktree) and prints retained refs for the record. `abort` marks the lease
|
|
118
|
+
only — never rewinds control: a moved HEAD is external work, reported not
|
|
119
|
+
reset. Never integrate a rejected transfer commit.
|
|
120
|
+
|
|
121
|
+
## Repair rounds
|
|
122
|
+
|
|
123
|
+
Repair rejected work in place; never discard/rebuild while budget remains.
|
|
124
|
+
|
|
125
|
+
- Record each round as `build-parallel-<batch>-repair-<round>.json`: each
|
|
126
|
+
non-green sibling's status, verbatim findings, transfer_commit/null.
|
|
127
|
+
- Use step 4's initial inventory or affected recheck as appropriate; never start
|
|
128
|
+
a correction from an early reviewer result while required accounts are pending.
|
|
129
|
+
- Classify the complete inventory: **implementation defect** (review
|
|
130
|
+
Critical/Important on the diff, red wright/proof) → one repair-all wright in
|
|
131
|
+
the same worktree with the full inventory. **Durable-plan defect**
|
|
132
|
+
(falsified contract assumption, AC unchanged) →
|
|
133
|
+
[`spec-drift-guard.md`](spec-drift-guard.md): batch-sweep contract
|
|
134
|
+
assumptions, one folded `/rite-plan repair` + one `/rite-vet` recheck
|
|
135
|
+
inline, resume repair in the same worktrees under the amended contract;
|
|
136
|
+
never emit `Fix:`. **Frozen-lease scope defect** (correction needs
|
|
137
|
+
out-of-allowlist paths or re-slicing; lease allowlists are immutable) →
|
|
138
|
+
**automatic re-batch, no human gate**: `parallel cleanup --force` salvages
|
|
139
|
+
and records refs; `parallel create` starts from control `HEAD` under the
|
|
140
|
+
corrected decomposition. Give each new wright its salvaged
|
|
141
|
+
`devrites/parallel/<slug>/<old-batch>/<slice>` ref. If the inventory proves the accepted
|
|
142
|
+
approach unsound and no corrected decomposition exists, that is exhaustion
|
|
143
|
+
→ blocked, preserve, STOP. **Reviewer stall/cancel or missing
|
|
144
|
+
verdict** → re-dispatch the reviewer, not the wright. **Product/policy/
|
|
145
|
+
irreversible** → stops for the human.
|
|
146
|
+
- Dispatch one fresh repair-all `devrites-slice-wright` (cwd=worktree; step 3
|
|
147
|
+
rules) with the original contract + complete inventory +
|
|
148
|
+
"preserve what works; fix every finding; **then attack your own correction** —
|
|
149
|
+
probe the changed hunks for defects the fix itself introduced (adjacent cases of
|
|
150
|
+
the same rule, new observation/ordering windows, alias or boundary escapes) and
|
|
151
|
+
fold them in before returning; return a new `transfer_commit`". A correction whose
|
|
152
|
+
own diff is unexamined is not ready: a green writer gate plus an unexamined fix is
|
|
153
|
+
how the same defect family reappears one case deeper each round. Never reset
|
|
154
|
+
to `B` — that destroys the work under repair. The commit must still descend
|
|
155
|
+
from `B` and diff path-exact vs `B`.
|
|
156
|
+
- Budget and exhaustion follow only
|
|
157
|
+
[the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
|
|
158
|
+
Record one failed invariant, mechanism, reproduction, correction, and decisive
|
|
159
|
+
recheck per fingerprint; never use an umbrella like "covering" or "review is red again".
|
|
160
|
+
- A distinct post-repair Critical/Important gets a new fingerprint: refresh the
|
|
161
|
+
inventory and affected owning-role rechecks. It proves neither plan defect nor
|
|
162
|
+
exhaustion. Use plan path only if inventory proves the approach unsound.
|
|
163
|
+
- Stop under the canonical retry/authority/resource conditions, or when evidence
|
|
164
|
+
proves the approach unsound and no in-scope corrected decomposition exists.
|
|
165
|
+
- Exhaustion is not abort: record one technical blocker (`Status: blocked`;
|
|
166
|
+
`Next step: none — technical recovery exhausted; requires new evidence or changed failure conditions`), preserve
|
|
167
|
+
lease/worktrees/branches, STOP — same fingerprint stays blocked on
|
|
168
|
+
reinvoke; new evidence resumes repair in place. Human-owned decisions use
|
|
169
|
+
the drift-guard question and wait.
|
|
170
|
+
|
|
171
|
+
## Engine verbs
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
devrites-engine parallel select --cap <1-10> [--root <dir>] [<json-file>|-]
|
|
175
|
+
devrites-engine parallel create --root <repo> --slug <slug> --batch <id> --base <B> --json <file>|-
|
|
176
|
+
devrites-engine parallel record-green --root <repo> --slug <slug> --slice <id> --commit <sha>
|
|
177
|
+
devrites-engine parallel integrate --root <repo> --slug <slug> --apply-to-control
|
|
178
|
+
devrites-engine parallel status --root <repo> --slug <slug>
|
|
179
|
+
devrites-engine parallel lease-write|lease-read|lease-clear --root <repo> --slug <slug>
|
|
180
|
+
# abandoning the batch is human discard only; a frozen-lease re-batch may emit
|
|
181
|
+
# cleanup --force as its salvage step (see Repair rounds):
|
|
182
|
+
# parallel abort --root <repo> --slug <slug>
|
|
183
|
+
# parallel cleanup --root <repo> --slug <slug> --force (salvages, prints retained refs)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
`integrate` without `--apply-to-control` stages the per-sibling commits, leaves
|
|
187
|
+
the lease `running` and control at `B`; cleanup still refuses — the commits
|
|
188
|
+
cannot be lost. `record-green` and `integrate` also accept an `integrate-failed`
|
|
189
|
+
lease, so a failed integrate retries after repair. `--apply-to-control`
|
|
190
|
+
refuses when control moved past `B` or holds uncommitted changes on slice
|
|
191
|
+
paths — commit/stash and retry; the batch is untouched. Go is SSOT; never
|
|
192
|
+
ad-hoc git/bash orchestration.
|
|
193
|
+
|
|
194
|
+
## Runtime isolation
|
|
195
|
+
|
|
196
|
+
Each parallel worktree must own isolated runtime resources. Before fan-out,
|
|
197
|
+
assign per-slice env (document in the lease or worktree README):
|
|
198
|
+
|
|
199
|
+
| Resource | Pattern |
|
|
200
|
+
| --- | --- |
|
|
201
|
+
| HTTP port | `PORT=<base+N>` or `DEVRITES_PARALLEL_PORT_<slice>` |
|
|
202
|
+
| Compose | `COMPOSE_PROJECT_NAME=devrites-<slug>-<batch>-<slice>` |
|
|
203
|
+
| SQLite/DB file | separate path under the worktree or `/tmp` |
|
|
204
|
+
| Dev server | one process per worktree; never share a listener |
|
|
205
|
+
|
|
206
|
+
Reusing the control worktree's running server, DB, or compose stack across
|
|
207
|
+
siblings causes cross-slice pollution and flaky proof. Force serial if
|
|
208
|
+
isolation cannot be established.
|
|
209
|
+
|
|
210
|
+
## Host
|
|
211
|
+
|
|
212
|
+
Devin: N concurrent `run_subagent` wrights (`acceptEdits`, cwd=worktree). Codex: require
|
|
213
|
+
host-explicit concurrent worktree writers + native reconcile; else force serial.
|
|
214
|
+
Never two writers in one worktree; never root-emulated concurrency.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# rite-build phase contract
|
|
2
|
+
|
|
3
|
+
Apply [`one-slice-cycle.md`](one-slice-cycle.md) and
|
|
4
|
+
[`candidate-integrity.md`](../../devrites-lib/reference/candidate-integrity.md).
|
|
5
|
+
Opt-in `--parallel N` replaces steps 2–8 with [`parallel-batch.md`](parallel-batch.md);
|
|
6
|
+
Spec Drift Guard still applies.
|
|
7
|
+
|
|
8
|
+
1. **Gate.** Read core, `.devrites/ACTIVE`, then `devrites-engine orient <slug>`
|
|
9
|
+
and the Build read-next in
|
|
10
|
+
[`workspace-artifact-schema.md`](../../devrites-lib/reference/workspace-artifact-schema.md#read-next-by-phase):
|
|
11
|
+
the selected slice via `devrites-engine observe slice <slug> <SLICE-ID>`, not whole
|
|
12
|
+
`tasks.md`; over-budget or `bulk_files` artifacts are read by anchor only. Require
|
|
13
|
+
`Implementation readiness: READY`, current `Readiness inputs SHA-256`, exact
|
|
14
|
+
required accounts, ID/meaning traceability and green proof preflight.
|
|
15
|
+
Run `devrites-engine check readiness <slug>`; any miss/nonzero blocks.
|
|
16
|
+
2. **Select.** Pick the lowest pending slice whose `depends_on` are all built, using
|
|
17
|
+
`orient` `task_graph.slices` plus the `state.md` built list — never by scanning
|
|
18
|
+
`tasks.md`; then `observe slice` it. Restate its goal, ACs, exclusions and exact paths. Include
|
|
19
|
+
applicable topology/data/integration invariants and failure/recovery/proof cases.
|
|
20
|
+
Verify relevant assumptions live; falsified acceptance/architecture/scope/proof
|
|
21
|
+
routes through Spec Drift Guard. Resolve human-owned/irreversible gates before
|
|
22
|
+
source work; AFK follows its ceiling. Vet-ready Workflow Artifacts use
|
|
23
|
+
[`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
24
|
+
3. **Dispatch.** Apply [`wright-dispatch.md`](wright-dispatch.md). Put the smallest
|
|
25
|
+
exact project-relative source/test path list directly in the task;
|
|
26
|
+
dispatch the exact `devrites-slice-wright` fresh. Root never writes product
|
|
27
|
+
paths; wright cannot widen scope; missing profile blocks.
|
|
28
|
+
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Build gate enters or resumes transaction","action":"invoke canonical operation table; reconcile exact result","return":"same slice/checkpoint cursor or Plan/Vet route"} -->
|
|
29
|
+
4. **Inspect.** Wait; compare returned paths and `git diff --name-only` with the
|
|
30
|
+
contract. Reject stale/partial/malformed/out-of-scope work; preserve user work.
|
|
31
|
+
Restoration uses the bounded wright.
|
|
32
|
+
5. **Review.** Apply [Independent Build review](#independent-build-review).
|
|
33
|
+
Missing verdicts, principle breaches and open Critical/Important block acceptance.
|
|
34
|
+
6. **Prove.** Against the frozen pre-slice candidate inspect
|
|
35
|
+
test hunks for deletion, skipping/focus, tautology, or weaker expectations.
|
|
36
|
+
Use step 5's exact test-analyst account; missing/adverse criterion verdict is
|
|
37
|
+
Critical. Run only `test-plan.md` repository/CI commands, record output, recheck
|
|
38
|
+
`git diff --name-only`. Missing/weakened/red/source-mutating proof cannot pass.
|
|
39
|
+
Pre-existing/environment-specific claims need a predating same-command,
|
|
40
|
+
same-environment baseline; otherwise unresolved.
|
|
41
|
+
|
|
42
|
+
Technical failure uses `devrites-debug-recovery` and
|
|
43
|
+
[canonical recovery](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
|
|
44
|
+
Reapply host admission before correction; affected proof/evidence follows candidate
|
|
45
|
+
integrity. Human gates remain product/irreversible/access decisions.
|
|
46
|
+
7. **Record green.** Upsert actual scoped `present`/`deleted` rows in `touched-files.md`;
|
|
47
|
+
update state, evidence and applicable UI/browser proof. Checkpoint per
|
|
48
|
+
[`checkpoint.md`](checkpoint.md) only after steps 5–6 are green and every
|
|
49
|
+
repair wright has been re-reviewed and re-proved; never on wright return.
|
|
50
|
+
Manifest stays mutable until Polish. For a release milestone, after the last slice's rows run
|
|
51
|
+
`devrites-engine state merge-manifest <slug>` to fold the recorded
|
|
52
|
+
predecessor chain into the union manifest before Prove. Record stood
|
|
53
|
+
decisions/dead ends; refresh verified/falsified
|
|
54
|
+
assumptions. Propose reviewed durable project rules in the nearest guidance.
|
|
55
|
+
8. **Account/reply.** Apply `afk-discipline.md`: charge
|
|
56
|
+
exactly once after each green built slice; never negative, stop at zero,
|
|
57
|
+
malformed budget fails closed. Reply names next pending slice or `/rite-prove`
|
|
58
|
+
only when all built; no decorative renderer/dispatch telemetry.
|
|
59
|
+
|
|
60
|
+
One contract builds one slice: preserve TDD, exact paths and independent judgment.
|
|
61
|
+
|
|
62
|
+
## Independent Build review
|
|
63
|
+
|
|
64
|
+
After inspection, freeze full slice scope and cumulative baseline diff. Initial
|
|
65
|
+
inventory: one full-diff `devrites-code-reviewer`, one `devrites-test-analyst`,
|
|
66
|
+
and one exact `devrites-doubt-reviewer` per stood decision that meets
|
|
67
|
+
`devrites-doubt` § When to use (boundary, data model, auth, public API, migration,
|
|
68
|
+
user flow, assumption tests cannot prove); other stood decisions are recorded in
|
|
69
|
+
`decisions.md` without dispatch. Dispatch fresh,
|
|
70
|
+
read-only under [`parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
|
|
71
|
+
Wait for every required account to become terminal; missing/gap needs a valid result.
|
|
72
|
+
Fold supported in-scope Critical/Important findings by cause into one inventory.
|
|
73
|
+
Dispatch one repair-all wright instructed to fix every finding, then attack its own
|
|
74
|
+
correction for fix-introduced defects before returning; durable contract defects use Spec
|
|
75
|
+
Drift Guard.
|
|
76
|
+
Suggestion/Nit/FYI cannot prolong recovery.
|
|
77
|
+
|
|
78
|
+
Rechecks use Vet's bounded pattern: each exact responsible reviewer checks
|
|
79
|
+
all open findings owned by that role and affected dependency/regression closure
|
|
80
|
+
in one fresh dispatch. Supply new candidate, inventory, correction diff, tests
|
|
81
|
+
and unchanged-coverage evidence under candidate integrity; include newly triggered
|
|
82
|
+
roles. A changed contract or uncertain impact requires the full inventory.
|
|
83
|
+
Collect all required rechecks before another folded correction. Canonical recovery
|
|
84
|
+
owns fingerprints/budget and the
|
|
85
|
+
[late-finding rule](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve):
|
|
86
|
+
a recheck's `Late:` rows on hunks unchanged since that role's previous pass go to
|
|
87
|
+
`touched-files.md` `## Review trail` for `/rite-review`, not into another slice
|
|
88
|
+
repair, unless Critical with a failure path. Evidenced scope coverage never
|
|
89
|
+
guarantees no later defect; the feature-level Review and Seal gates still run.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Spec Drift Guard (build phase)
|
|
2
|
+
|
|
3
|
+
Canonical Spec Drift Guard, active in `/rite-build` and referenced by other
|
|
4
|
+
phases. Never silently code against a known-wrong plan.
|
|
5
|
+
|
|
6
|
+
## Drift has occurred when
|
|
7
|
+
- the spec says X but the code makes X impossible/wrong;
|
|
8
|
+
- the plan assumes a file/API/component/route/model/command that doesn't exist;
|
|
9
|
+
- tests show the acceptance criteria are incomplete or wrong;
|
|
10
|
+
- browser evidence shows the intended UX doesn't work as described;
|
|
11
|
+
- an official doc contradicts the planned approach;
|
|
12
|
+
- the design system / existing UX pattern contradicts the planned UI;
|
|
13
|
+
- a missing user decision that affects product behavior surfaces.
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
```
|
|
17
|
+
1. STOP coding.
|
|
18
|
+
2. Record drift.md (assumed vs observed, when).
|
|
19
|
+
3. Classify: requirement ambiguity | implementation-plan error | codebase reality
|
|
20
|
+
mismatch | design-system mismatch | test/evidence mismatch | external-doc mismatch
|
|
21
|
+
| user-decision required.
|
|
22
|
+
4. Local repair that preserves behavior/scope/architecture/data/UX/security/migration?
|
|
23
|
+
YES, active-slice technical/tool failure → log it and use Build's bounded debug
|
|
24
|
+
recovery. Do not ask for retry authorization and do not re-plan unless the
|
|
25
|
+
durable remaining-work instructions are wrong.
|
|
26
|
+
YES, durable plan is wrong → run the batch sweep below, log every
|
|
27
|
+
violation, save the caller's return cursor, then invoke `/rite-plan repair` and `/rite-vet` inline
|
|
28
|
+
without a question — ONE folded repair for all open entries, ONE
|
|
29
|
+
recheck for every open fingerprint — and resume.
|
|
30
|
+
NO, product/policy/irreversible-risk decision → ask the user (format below).
|
|
31
|
+
5. Never continue on a known-wrong durable plan. A repaired active-slice implementation
|
|
32
|
+
may continue only after bounded recovery, returned-diff review, and proof gates pass.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Batch sweep (before repair)
|
|
36
|
+
|
|
37
|
+
Repair durable-plan drift as a folded set:
|
|
38
|
+
|
|
39
|
+
1. Trace the falsified assumption's full dependency/consumer closure and affected
|
|
40
|
+
frontier, including dependent future slices. Verify unchecked paths, symbols/APIs/
|
|
41
|
+
signatures, routes, commands, versions, and artifacts there against live source.
|
|
42
|
+
Reuse the wright inventory and unchanged evidence; deterministic existence checks
|
|
43
|
+
need no dispatch. Do not rescan unrelated slices. Broaden unknown closure or shared
|
|
44
|
+
contract changes until coverage is justified; retain every known gap.
|
|
45
|
+
2. Record each violation as its own `drift.md` entry/fingerprint; one folded
|
|
46
|
+
repair + one batched recheck resolves the set.
|
|
47
|
+
3. A recheck-surfaced gap is a new fingerprint with its own budget — loop
|
|
48
|
+
internally, never hand an intermediate command to the human. When
|
|
49
|
+
consecutive folded repairs keep landing on the same clause set, the
|
|
50
|
+
repair packet's `convergence_pressure` marking applies (see `/rite-plan`
|
|
51
|
+
repair): bounded declared residuals may close refinements of
|
|
52
|
+
already-pinned clauses; a newly surfaced failure mode is never
|
|
53
|
+
residual-eligible. A suspect seam's declare-limitation-or-continue choice
|
|
54
|
+
routes to `/rite-clarify` like any human-owned gate — it is not an
|
|
55
|
+
intermediate command.
|
|
56
|
+
4. Nothing skips or defers silently: every entry ends resolved, human-escalated,
|
|
57
|
+
or fingerprint-exhausted. Execution-only gaps (tests, UX, evidence) get the
|
|
58
|
+
identical path when they surface.
|
|
59
|
+
|
|
60
|
+
## User question format
|
|
61
|
+
```
|
|
62
|
+
I hit spec drift:
|
|
63
|
+
- Spec/plan assumed: ...
|
|
64
|
+
- Code/evidence shows: ...
|
|
65
|
+
- Why it matters: ...
|
|
66
|
+
|
|
67
|
+
Which direction should DevRites take?
|
|
68
|
+
1. Keep the requirement, change architecture by ...
|
|
69
|
+
2. Adjust the requirement to match existing behavior ...
|
|
70
|
+
3. Split into a follow-up feature ...
|
|
71
|
+
4. Custom: describe the intended behavior
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Never turn an objective defect, environment repair, tool bug, or proof rerun into a
|
|
75
|
+
human permission question. Re-plan only when the durable plan changed.
|
|
76
|
+
|
|
77
|
+
## Inline return contract
|
|
78
|
+
|
|
79
|
+
The detecting phase owns backtracking and the batch sweep. Save
|
|
80
|
+
`return_phase`/`return_next_action`; consume nested Plan/Vet `STOP` internally, complete
|
|
81
|
+
vetted acceptance-preserving remediation, then restore the cursor and failed step.
|
|
82
|
+
Never hand the human an intermediate command. The shared three-attempt causal-fingerprint
|
|
83
|
+
cap still applies: exhaustion produces one technical blocker, while a genuinely
|
|
84
|
+
human-owned decision uses the question format below.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# TDD / Prove-It pattern
|
|
2
|
+
|
|
3
|
+
When a slice changes behavior, prove the change with a test that fails first, so you
|
|
4
|
+
know the test can fail, and that your code is what makes it pass.
|
|
5
|
+
|
|
6
|
+
## Red → Green → Refactor
|
|
7
|
+
1. **Red:** write the smallest test that expresses the new behavior. Run it; watch it
|
|
8
|
+
fail for the *expected* reason (not a typo/import error).
|
|
9
|
+
2. **Green:** write the minimum code to pass. Resist gold-plating.
|
|
10
|
+
3. **Refactor:** clean up with the test as a safety net. Re-run; stay green.
|
|
11
|
+
|
|
12
|
+
## Prove-It (when strict TDD doesn't fit)
|
|
13
|
+
For code where a test-first flow is awkward (exploratory glue, config, some UI), still
|
|
14
|
+
produce evidence:
|
|
15
|
+
- Capture the current (wrong/absent) behavior: a failing assertion, a screenshot, a
|
|
16
|
+
log line.
|
|
17
|
+
- Make the change.
|
|
18
|
+
- Capture the new behavior the same way. The before/after pair *is* the proof.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
- Use the project's existing test framework and commands (per the discovery contract
|
|
22
|
+
[`test-command-discovery.md`](../../rite-prove/reference/test-command-discovery.md)). Don't introduce a new test runner
|
|
23
|
+
to prove a slice.
|
|
24
|
+
- One behavior per test; name it for the behavior, not the function.
|
|
25
|
+
- A green test you never saw fail proves nothing: always see red first.
|
|
26
|
+
- Don't delete or weaken a failing test to "pass". If it's wrong, that may be drift.
|
|
27
|
+
- Record the test command + result in `evidence.md`.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Slice-wright dispatch
|
|
2
|
+
|
|
3
|
+
`/rite-build` gives one bounded task to exact `devrites-slice-wright`.
|
|
4
|
+
Root owns scope/artifacts/inspection; never writes source/tests.
|
|
5
|
+
Wright alone writes; no agents.
|
|
6
|
+
|
|
7
|
+
## Host gate
|
|
8
|
+
|
|
9
|
+
Apply [source-writing boundary](../../devrites-lib/reference/standards/agents.md#source-writing-boundary):
|
|
10
|
+
Claude grants only the exact wright `acceptEdits`; Codex uses its workspace root,
|
|
11
|
+
the exact `:workspace` wright, and read-only specialists. Never bypass/substitute
|
|
12
|
+
the wright or recreate an engine bridge.
|
|
13
|
+
|
|
14
|
+
## Isolated writer-worktree pilot
|
|
15
|
+
|
|
16
|
+
Use native isolation only when the current host exposes an explicit named-writer
|
|
17
|
+
worktree plus result reconciliation; separate agent threads or inherited sandboxes do
|
|
18
|
+
not qualify. Codex CLI custom subagents therefore use `same-worktree` unless a future
|
|
19
|
+
supported interface passes this capability gate—never create a manual worktree from the
|
|
20
|
+
read-only root to imitate it. Also require `git rev-parse
|
|
21
|
+
--show-superproject-working-tree` to be empty; resolved git/common dirs; committed,
|
|
22
|
+
clean candidate/index; all inputs at `HEAD`; no other writer; and green cheap isolated
|
|
23
|
+
baseline proof. Otherwise use serial same-worktree dispatch—never stash, commit, or
|
|
24
|
+
discard user work to qualify. Ask host for an explicit current-`HEAD` base when
|
|
25
|
+
supported. Regardless of host defaults, the wright's first command must prove actual `git rev-parse HEAD` equals supplied
|
|
26
|
+
`worktree_base`. Mismatch returns a gap with no write before project reads or baseline proof.
|
|
27
|
+
|
|
28
|
+
The isolated wright returns one local unpushed `transfer_commit` (contract
|
|
29
|
+
`WIP(<slug>):` subject, no slice id), its `worktree_base`, and exact files.
|
|
30
|
+
That commit is worker-branch transport, not the control-branch checkpoint. Root proves descendant base, exact `git diff --name-only`
|
|
31
|
+
`` `<base>..<transfer>` ``, no `.devrites/**`/submodule/symlink/unrelated delta, unchanged
|
|
32
|
+
source base, and no user-work overwrite. Use only host-native explicit reconciliation;
|
|
33
|
+
never ad hoc copy, cherry-pick, or merge from read-only root. Land on control
|
|
34
|
+
only per [`checkpoint.md`](checkpoint.md).
|
|
35
|
+
|
|
36
|
+
Conflict, extra/missing commit, moved base, or cleanup failure is `gap`/STOP:
|
|
37
|
+
preserve the worktree and commit. Without explicit reconciliation, use same-worktree serial.
|
|
38
|
+
Parallel isolated-writer worktrees remain forbidden until this serial pilot measures
|
|
39
|
+
transfer, conflict, proof, and review outcomes on both hosts; opt-in `/rite-build --parallel N`
|
|
40
|
+
(2≤N≤10) path-disjoint fan-out is the only sanctioned parallel mode. Same-worktree multi-writer / root-emulated
|
|
41
|
+
worktrees stay forbidden.
|
|
42
|
+
|
|
43
|
+
## Prepare
|
|
44
|
+
|
|
45
|
+
1. Derive the smallest exact project-relative source/test path list; reject
|
|
46
|
+
directories/globs, traversal, symlink escapes, duplicates, and `.devrites/**`.
|
|
47
|
+
A target composed only of vetted executable workflow artifacts routes to the
|
|
48
|
+
controlling root under
|
|
49
|
+
[`workflow-artifacts.md`](../../devrites-lib/reference/standards/workflow-artifacts.md);
|
|
50
|
+
its rejection here is not a blocker.
|
|
51
|
+
2. Include goal, verbatim acceptance, exclusions, context,
|
|
52
|
+
`test-plan.md` proof commands, applicable standards, and the exact
|
|
53
|
+
`WIP(<slug>):` subject (no slice id). For each triggered
|
|
54
|
+
topology/data/integration standard, include only the feature-specific owner/invariant,
|
|
55
|
+
failure or partial-state case, recovery rule, and required proof from the vetted plan.
|
|
56
|
+
Do not paste the whole standard or silently omit an applicable risk.
|
|
57
|
+
A new path requires a new bounded contract; the wright cannot widen the task.
|
|
58
|
+
3. Record `git diff --name-only` before dispatch so unrelated work remains
|
|
59
|
+
distinguishable. For an isolated pilot, also record committed base SHA and exact
|
|
60
|
+
baseline status before asking the host for isolation. **Failing case:** paths that
|
|
61
|
+
were dirty at that baseline are listed as slice-owned after dispatch.
|
|
62
|
+
|
|
63
|
+
## Run
|
|
64
|
+
|
|
65
|
+
Ask the host for the exact writer in fresh context and wait. Use at most one writer
|
|
66
|
+
across all linked worktrees for this workspace. Never run two writers in one worktree,
|
|
67
|
+
run isolated and same-worktree writers concurrently, or substitute a generic agent.
|
|
68
|
+
Opt-in `/rite-build --parallel N` fans out only under [`parallel-batch.md`](parallel-batch.md).
|
|
69
|
+
|
|
70
|
+
## Inspect and prove
|
|
71
|
+
|
|
72
|
+
1. Compare the returned file list and `git diff --name-only` with task paths.
|
|
73
|
+
Reject a result that omits any required key — the bookkeeping arrays count
|
|
74
|
+
whether empty or filled — or adds a path. Restore only through the same bounded
|
|
75
|
+
wright; root never widens scope or edits source.
|
|
76
|
+
2. Inspect the test diff for deletion, skipping, focus markers, or loosened
|
|
77
|
+
assertions. Dedicated test analysis treats weakening as Critical.
|
|
78
|
+
Confirm a test for a data/integration/topology risk can actually exhibit that risk;
|
|
79
|
+
mocks that erase it and one-root proof offered for another root are unproven.
|
|
80
|
+
3. Apply [independent Build review](phase-contract.md#independent-build-review)
|
|
81
|
+
before proof. Human choices return; technical failures follow
|
|
82
|
+
[the canonical retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve).
|
|
83
|
+
Derive accounting from recorded reproductions, corrections, and decisive rechecks.
|
|
84
|
+
4. Run only repository proof already approved by `test-plan.md`, then inspect
|
|
85
|
+
`git diff --name-only` again in case a proof tool changed source.
|
|
86
|
+
**Do not land on control until review and proof are green.** Isolated
|
|
87
|
+
`transfer_commit` stays on the worker branch; same-worktree diffs stay
|
|
88
|
+
uncommitted. Serial: [`checkpoint.md`](checkpoint.md), then host may remove the
|
|
89
|
+
worktree. Parallel: `record-green` only; land with `parallel integrate
|
|
90
|
+
--apply-to-control` after the batch; `parallel cleanup` removes worktrees.
|
|
91
|
+
5. Reconcile returned reuse, conventions, principles, sources, assumptions,
|
|
92
|
+
decisions, dead ends, follow-ups, gates, and touched files. Persist the
|
|
93
|
+
relevant facts in canonical artifacts, not the wholesale report. A plan-gap
|
|
94
|
+
escalation without the checked-assumption list (verified|falsified) is
|
|
95
|
+
malformed; root sweeps the unchecked remainder per
|
|
96
|
+
[`spec-drift-guard.md`](spec-drift-guard.md) before repair.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-clarify
|
|
3
|
+
description: Audit a completed spec for missing decisions before strategy or architecture. Use after /rite-spec when coverage is incomplete or stale; not for spec writing.
|
|
4
|
+
argument-hint: "[feature-slug]"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /rite-clarify: resolve product decisions
|
|
8
|
+
|
|
9
|
+
Run this required pass between spec and strategy. If the spec covers every material
|
|
10
|
+
decision, ask no questions. Otherwise stay until each material decision has an
|
|
11
|
+
owner. This phase settles behavior and constraints; `/rite-define` settles
|
|
12
|
+
implementation.
|
|
13
|
+
|
|
14
|
+
Reuse [`devrites-interview`](../devrites-interview/SKILL.md) in `/clarify mode`. Write
|
|
15
|
+
`decision-coverage.md` as scan evidence, not an interview transcript.
|
|
16
|
+
|
|
17
|
+
## Rules consulted
|
|
18
|
+
|
|
19
|
+
Read [`core.md`](../devrites-lib/reference/standards/core.md), its [`afk-hitl.md`](../devrites-lib/reference/standards/afk-hitl.md), and
|
|
20
|
+
[`reference/decision-coverage.md`](reference/decision-coverage.md). Fresh evidence
|
|
21
|
+
dispatch uses
|
|
22
|
+
[`agents.md`](../devrites-lib/reference/standards/agents.md).
|
|
23
|
+
|
|
24
|
+
## Rules
|
|
25
|
+
|
|
26
|
+
- Search code/docs/contracts first. Facts and reversible implementation/test choices
|
|
27
|
+
are agent-owned; ask only about product, scope, policy, irreversible risk, or human-only access.
|
|
28
|
+
- Enumerate the full topology before details so no sibling surface is omitted.
|
|
29
|
+
- Ask one coherent human-owned decision packet at a time. One packet may close several rows
|
|
30
|
+
only when owner and trade-off match; never ask permission for routine repair/retry.
|
|
31
|
+
- One scan may cap at five packets for cognitive load, but readiness has no question cap:
|
|
32
|
+
re-scan until clear.
|
|
33
|
+
- Material assumptions carry evidence, confidence, owner, validation, and consequence.
|
|
34
|
+
|
|
35
|
+
## Workflow
|
|
36
|
+
|
|
37
|
+
1. **Orient.** Read `.devrites/ACTIVE`, `state.md`, and `spec.md`. Require
|
|
38
|
+
`Spec gate: passed`; otherwise stop at `/rite-spec`. Apply the native cursor
|
|
39
|
+
protocol below before changing workspace artifacts.
|
|
40
|
+
2. **Enumerate the topology.** From the spec, live code, contracts, references,
|
|
41
|
+
and recorded decisions, list every material stakeholder/priority, invariant, actor,
|
|
42
|
+
journey/component, state, data lifecycle, integration, failure/recovery path,
|
|
43
|
+
operation, proof surface, applicability row, and must-NOT boundary.
|
|
44
|
+
3. **Scan coverage.** Apply `devrites-interview` in clarify mode and mark each
|
|
45
|
+
material surface Clear, Partial, Missing, not-applicable, or justified
|
|
46
|
+
deferred-nonblocking with evidence and an owner. Use native repository search
|
|
47
|
+
first. Ask the host to run `devrites-evidence-scout` only for a bounded missing
|
|
48
|
+
fact, then reconcile its cited result.
|
|
49
|
+
4. **Close decisions.** Record facts and reversible technical choices directly.
|
|
50
|
+
Ask one coherent option packet only for product, scope, policy, irreversible
|
|
51
|
+
risk, or human-only access. Persist answers in the owning artifacts and repeat
|
|
52
|
+
the scan until no blocking Partial/Missing row or unowned material assumption
|
|
53
|
+
remains.
|
|
54
|
+
5. **Write the verdict.** Write `Decision coverage: CLEAR` only after re-reading all inputs and confirming
|
|
55
|
+
every material row has current evidence and an owner. Normal flow sets `phase=clarify` and
|
|
56
|
+
`next_action=/rite-temper`. A low-stakes spec — the significance trigger temper itself
|
|
57
|
+
skips (rite-temper step 1) — sets `next_action=/rite-define` instead. A contract-neutral later-phase return uses
|
|
58
|
+
the native restore below; changed behavior or acceptance routes to
|
|
59
|
+
`/rite-plan repair` instead. Stop without starting the next phase.
|
|
60
|
+
|
|
61
|
+
## Native clarify cursor protocol
|
|
62
|
+
|
|
63
|
+
The controlling root edits only cursor rows in `state.md`; it must preserve unrelated Markdown and the file's existing table/bullet presentation.
|
|
64
|
+
|
|
65
|
+
- **Normal entry from Spec:** set `phase=clarify`, `status=running`, and
|
|
66
|
+
`next_action=/rite-clarify <slug>`; omit both return fields.
|
|
67
|
+
- **Already in Clarify:** no-op. Do not overwrite an existing valid return
|
|
68
|
+
cursor.
|
|
69
|
+
- **Later-phase entry:** only `temper`, `define`, `plan`, `vet`, `build`,
|
|
70
|
+
`converge`, `prove`, `polish`, `review`, `seal`, or `ship` may return. First
|
|
71
|
+
copy the current `phase` and non-empty `next_action` to `return_phase` and
|
|
72
|
+
`return_next_action`; then set `phase=clarify`, `status=running`, and
|
|
73
|
+
`next_action=/rite-clarify <slug>`. Missing/unknown cursor values fail closed
|
|
74
|
+
before any write.
|
|
75
|
+
- **Contract-neutral restore:** after a fresh `Decision coverage: CLEAR`, require
|
|
76
|
+
`phase=clarify`, both return fields, a recognized later `return_phase`, and a
|
|
77
|
+
non-empty `return_next_action`. Restore those values to `phase` and
|
|
78
|
+
`next_action`, set `status=running`, and remove both return fields in the same
|
|
79
|
+
rewrite. Re-read the cursor and confirm the return rows are absent.
|
|
80
|
+
- **Contract changed:** do not restore the saved cursor. Record drift and route
|
|
81
|
+
through `/rite-plan repair`, which owns the changed plan and next action.
|
|
82
|
+
|
|
83
|
+
Never normalize or rewrite the rest of `state.md` while applying this protocol.
|
|
84
|
+
|
|
85
|
+
## Output
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
Done: decision coverage closed for <slug>; <n> topology surfaces scanned.
|
|
89
|
+
Changed: decision-coverage.md, spec.md, decisions.md, assumptions.md, questions.md
|
|
90
|
+
Evidence: Decision coverage: CLEAR; human packets <n>; agent-owned facts <n>
|
|
91
|
+
Open: none blocking; deferred-nonblocking <n>
|
|
92
|
+
Next: /rite-temper (or /rite-define for a low-stakes spec temper skips)
|
|
93
|
+
Record: .devrites/work/<slug>/decision-coverage.md
|
|
94
|
+
↻ Hygiene: /clear before /rite-temper (or /rite-define)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
If not clear, name the exact rows and next genuine decision packet. An objective spec defect
|
|
98
|
+
or factual search task never routes through `/rite-resolve`.
|