devrites 5.5.0 → 5.6.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 +8 -6
- package/engine/internal/devritespaths/paths.go +3 -0
- package/engine/internal/hostpack/hostpack.go +45 -6
- package/engine/internal/hostpack/hostpack_test.go +29 -13
- package/engine/internal/install/apply.go +14 -5
- package/engine/internal/install/install.go +8 -2
- package/engine/internal/install/install_test.go +12 -5
- package/engine/internal/install/merge.go +5 -0
- package/engine/internal/install/preflight.go +20 -2
- package/engine/internal/install/uninstall.go +5 -0
- package/engine/internal/install/update.go +1 -1
- package/install.sh +4 -1
- package/pack/generated/README.md +5 -1
- package/pack/generated/pi/AGENTS.md +22 -0
- package/pack/generated/pi/agents/devrites-code-reviewer.md +142 -0
- package/pack/generated/pi/agents/devrites-devex-reviewer.md +124 -0
- package/pack/generated/pi/agents/devrites-doubt-reviewer.md +88 -0
- package/pack/generated/pi/agents/devrites-evidence-scout.md +72 -0
- package/pack/generated/pi/agents/devrites-frontend-reviewer.md +116 -0
- package/pack/generated/pi/agents/devrites-performance-reviewer.md +115 -0
- package/pack/generated/pi/agents/devrites-plan-drafter.md +99 -0
- package/pack/generated/pi/agents/devrites-plan-reviewer.md +142 -0
- package/pack/generated/pi/agents/devrites-proof-runner.md +74 -0
- package/pack/generated/pi/agents/devrites-retrospector.md +61 -0
- package/pack/generated/pi/agents/devrites-security-auditor.md +109 -0
- package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +94 -0
- package/pack/generated/pi/agents/devrites-slice-wright.md +204 -0
- package/pack/generated/pi/agents/devrites-spec-reviewer.md +96 -0
- package/pack/generated/pi/agents/devrites-strategy-reviewer.md +100 -0
- package/pack/generated/pi/agents/devrites-test-analyst.md +94 -0
- package/pack/generated/pi/agents/devrites-upgrade-planner.md +89 -0
- package/pack/generated/pi/prompts/rite-adopt.md +5 -0
- package/pack/generated/pi/prompts/rite-autocomplete.md +5 -0
- package/pack/generated/pi/prompts/rite-build.md +5 -0
- package/pack/generated/pi/prompts/rite-clarify.md +5 -0
- package/pack/generated/pi/prompts/rite-converge.md +5 -0
- package/pack/generated/pi/prompts/rite-customize.md +5 -0
- package/pack/generated/pi/prompts/rite-define.md +5 -0
- package/pack/generated/pi/prompts/rite-doctor.md +5 -0
- package/pack/generated/pi/prompts/rite-dogfood.md +5 -0
- package/pack/generated/pi/prompts/rite-explain.md +5 -0
- package/pack/generated/pi/prompts/rite-frame.md +5 -0
- package/pack/generated/pi/prompts/rite-handoff.md +5 -0
- package/pack/generated/pi/prompts/rite-learn.md +5 -0
- package/pack/generated/pi/prompts/rite-plan.md +5 -0
- package/pack/generated/pi/prompts/rite-polish.md +5 -0
- package/pack/generated/pi/prompts/rite-pov.md +5 -0
- package/pack/generated/pi/prompts/rite-pr-feedback.md +5 -0
- package/pack/generated/pi/prompts/rite-pressure-test.md +5 -0
- package/pack/generated/pi/prompts/rite-prototype.md +5 -0
- package/pack/generated/pi/prompts/rite-prove.md +5 -0
- package/pack/generated/pi/prompts/rite-quick.md +5 -0
- package/pack/generated/pi/prompts/rite-resolve.md +5 -0
- package/pack/generated/pi/prompts/rite-review.md +5 -0
- package/pack/generated/pi/prompts/rite-seal.md +5 -0
- package/pack/generated/pi/prompts/rite-ship.md +5 -0
- package/pack/generated/pi/prompts/rite-spec.md +5 -0
- package/pack/generated/pi/prompts/rite-status.md +5 -0
- package/pack/generated/pi/prompts/rite-temper.md +5 -0
- package/pack/generated/pi/prompts/rite-upgrade.md +5 -0
- package/pack/generated/pi/prompts/rite-vet.md +5 -0
- package/pack/generated/pi/prompts/rite-watch-pr.md +5 -0
- package/pack/generated/pi/prompts/rite-zoom-out.md +5 -0
- package/pack/generated/pi/prompts/rite.md +5 -0
- package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +63 -0
- package/pack/generated/pi/skills/devrites-audit/SKILL.md +50 -0
- package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +76 -0
- package/pack/generated/pi/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/pi/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +96 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/pi/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/pi/skills/devrites-doubt/SKILL.md +79 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/SKILL.md +86 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/craft.md +63 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +294 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/shape.md +56 -0
- package/pack/generated/pi/skills/devrites-interview/SKILL.md +102 -0
- package/pack/generated/pi/skills/devrites-lib/SKILL.md +58 -0
- package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +42 -0
- package/pack/generated/pi/skills/devrites-lib/reference/intent-map.md +64 -0
- package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +27 -0
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +73 -0
- package/pack/generated/pi/skills/devrites-lib/reference/reply-contract.md +88 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +60 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +30 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +398 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +99 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/anti-patterns.md +48 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/browser-proof-checklist.md +24 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/ci-cd.md +50 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +43 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-review.md +108 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/coding-style.md +48 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +109 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +167 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/data-integrity.md +118 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/debug-recovery.md +28 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/definition-of-done.md +19 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +31 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/development-workflow.md +29 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/documentation.md +43 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/edge-case-trace.md +92 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/elicitation.md +85 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/error-handling.md +47 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/git-workflow.md +49 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/hooks.md +25 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/integration-reliability.md +102 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/loop-operations.md +85 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/observability.md +88 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/one-shot-actions.md +97 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/patterns.md +68 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/performance.md +51 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/principles.md +42 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/prose-style.md +123 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/release/ship-checklist.md +8 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/repository-topology.md +80 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/review-checklist.md +12 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/security-checklist.md +25 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +202 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/skill-authoring.md +209 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +197 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/test-proof-checklist.md +13 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +212 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +92 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +427 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +267 -0
- package/pack/generated/pi/skills/devrites-prose-craft/SKILL.md +73 -0
- package/pack/generated/pi/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
- package/pack/generated/pi/skills/devrites-prose-craft/reference/examples.md +131 -0
- package/pack/generated/pi/skills/devrites-prose-craft/reference/structures.md +196 -0
- package/pack/generated/pi/skills/devrites-source-driven/SKILL.md +52 -0
- package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +134 -0
- package/pack/generated/pi/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/pi/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/pi/skills/rite/SKILL.md +148 -0
- package/pack/generated/pi/skills/rite/reference/menu.md +48 -0
- package/pack/generated/pi/skills/rite-adopt/SKILL.md +52 -0
- package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +19 -0
- package/pack/generated/pi/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +132 -0
- package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +41 -0
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +148 -0
- package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +92 -0
- package/pack/generated/pi/skills/rite-build/SKILL.md +96 -0
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/pi/skills/rite-build/reference/anti-patterns.md +23 -0
- package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +120 -0
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/pi/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +50 -0
- package/pack/generated/pi/skills/rite-build/reference/output.md +33 -0
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +205 -0
- package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +87 -0
- package/pack/generated/pi/skills/rite-build/reference/spec-drift-guard.md +84 -0
- package/pack/generated/pi/skills/rite-build/reference/tdd.md +27 -0
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +89 -0
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +99 -0
- package/pack/generated/pi/skills/rite-clarify/reference/anti-patterns.md +24 -0
- package/pack/generated/pi/skills/rite-clarify/reference/decision-coverage.md +55 -0
- package/pack/generated/pi/skills/rite-converge/SKILL.md +145 -0
- package/pack/generated/pi/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +65 -0
- package/pack/generated/pi/skills/rite-customize/SKILL.md +60 -0
- package/pack/generated/pi/skills/rite-define/SKILL.md +169 -0
- package/pack/generated/pi/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/pi/skills/rite-define/reference/gates.md +154 -0
- package/pack/generated/pi/skills/rite-define/reference/plan-template.md +149 -0
- package/pack/generated/pi/skills/rite-doctor/SKILL.md +69 -0
- package/pack/generated/pi/skills/rite-dogfood/SKILL.md +55 -0
- package/pack/generated/pi/skills/rite-explain/SKILL.md +152 -0
- package/pack/generated/pi/skills/rite-explain/reference/intake.md +89 -0
- package/pack/generated/pi/skills/rite-frame/SKILL.md +115 -0
- package/pack/generated/pi/skills/rite-frame/reference/failure-modes.md +66 -0
- package/pack/generated/pi/skills/rite-handoff/SKILL.md +97 -0
- package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/pi/skills/rite-learn/SKILL.md +72 -0
- package/pack/generated/pi/skills/rite-plan/SKILL.md +186 -0
- package/pack/generated/pi/skills/rite-plan/reference/anti-patterns.md +34 -0
- package/pack/generated/pi/skills/rite-plan/reference/dependency-graph.md +48 -0
- package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +105 -0
- package/pack/generated/pi/skills/rite-plan/reference/slicing.md +167 -0
- package/pack/generated/pi/skills/rite-plan/reference/task-breakdown.md +42 -0
- package/pack/generated/pi/skills/rite-polish/SKILL.md +104 -0
- package/pack/generated/pi/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +187 -0
- package/pack/generated/pi/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/pi/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/pi/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
- package/pack/generated/pi/skills/rite-polish/reference/code.md +82 -0
- package/pack/generated/pi/skills/rite-polish/reference/design-memory.md +117 -0
- package/pack/generated/pi/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/pi/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/pi/skills/rite-polish/reference/ledger.md +65 -0
- package/pack/generated/pi/skills/rite-polish/reference/ui.md +137 -0
- package/pack/generated/pi/skills/rite-pov/SKILL.md +58 -0
- package/pack/generated/pi/skills/rite-pr-feedback/SKILL.md +54 -0
- package/pack/generated/pi/skills/rite-pressure-test/SKILL.md +67 -0
- package/pack/generated/pi/skills/rite-prototype/SKILL.md +104 -0
- package/pack/generated/pi/skills/rite-prove/SKILL.md +120 -0
- package/pack/generated/pi/skills/rite-prove/reference/acceptance-proof.md +88 -0
- package/pack/generated/pi/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/pi/skills/rite-prove/reference/browser-proof.md +51 -0
- package/pack/generated/pi/skills/rite-prove/reference/failure-triage.md +43 -0
- package/pack/generated/pi/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/pi/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/pi/skills/rite-quick/SKILL.md +82 -0
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +95 -0
- package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +118 -0
- package/pack/generated/pi/skills/rite-review/SKILL.md +170 -0
- package/pack/generated/pi/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/pi/skills/rite-review/reference/cognitive-load.md +90 -0
- package/pack/generated/pi/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/pi/skills/rite-review/reference/five-axis-review.md +66 -0
- package/pack/generated/pi/skills/rite-review/reference/nielsen-heuristics.md +126 -0
- package/pack/generated/pi/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/pi/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/pi/skills/rite-review/reference/security-review.md +42 -0
- package/pack/generated/pi/skills/rite-seal/SKILL.md +75 -0
- package/pack/generated/pi/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/pi/skills/rite-seal/reference/final-evidence.md +41 -0
- package/pack/generated/pi/skills/rite-seal/reference/go-no-go.md +29 -0
- package/pack/generated/pi/skills/rite-seal/reference/output.md +5 -0
- package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +47 -0
- package/pack/generated/pi/skills/rite-seal/reference/risk-and-rollback.md +56 -0
- package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +27 -0
- package/pack/generated/pi/skills/rite-ship/SKILL.md +88 -0
- package/pack/generated/pi/skills/rite-ship/reference/anti-patterns.md +28 -0
- package/pack/generated/pi/skills/rite-ship/reference/close-out.md +68 -0
- package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +120 -0
- package/pack/generated/pi/skills/rite-ship/reference/rollout.md +62 -0
- package/pack/generated/pi/skills/rite-ship/reference/ship-template.md +39 -0
- package/pack/generated/pi/skills/rite-spec/SKILL.md +150 -0
- package/pack/generated/pi/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/pi/skills/rite-spec/reference/ai-spec-template.md +40 -0
- package/pack/generated/pi/skills/rite-spec/reference/anti-patterns.md +27 -0
- package/pack/generated/pi/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/pi/skills/rite-spec/reference/investigation.md +83 -0
- package/pack/generated/pi/skills/rite-spec/reference/question-protocol.md +36 -0
- package/pack/generated/pi/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/pi/skills/rite-spec/reference/spec-checklists.md +89 -0
- package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +154 -0
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +227 -0
- package/pack/generated/pi/skills/rite-status/SKILL.md +57 -0
- package/pack/generated/pi/skills/rite-temper/SKILL.md +130 -0
- package/pack/generated/pi/skills/rite-temper/reference/anti-patterns.md +30 -0
- package/pack/generated/pi/skills/rite-temper/reference/review-dimensions.md +66 -0
- package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/pi/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/pi/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/pi/skills/rite-upgrade/SKILL.md +121 -0
- package/pack/generated/pi/skills/rite-vet/SKILL.md +193 -0
- package/pack/generated/pi/skills/rite-vet/reference/anti-patterns.md +43 -0
- package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +202 -0
- package/pack/generated/pi/skills/rite-vet/reference/cross-model.md +19 -0
- package/pack/generated/pi/skills/rite-vet/reference/depth.md +59 -0
- package/pack/generated/pi/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +201 -0
- package/pack/generated/pi/skills/rite-watch-pr/SKILL.md +85 -0
- package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +69 -0
- package/package.json +3 -2
- package/scripts/build-host-artifacts.sh +54 -4
- package/scripts/pi-generate.sh +198 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# The autocomplete loop: arm AFK, drive every phase
|
|
2
|
+
|
|
3
|
+
Autocomplete sequences existing `/rite-*` workflows without pausing between
|
|
4
|
+
routine phases. Acceptance-preserving Reslice authority is
|
|
5
|
+
`.pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
|
|
6
|
+
|
|
7
|
+
<!-- BEGIN RESLICE ROUTE-TO-ACTION -->
|
|
8
|
+
- `FOLD` → keep Plan repair/affected Vet internal; no stop solely for topology/count.
|
|
9
|
+
- `GUARD_AND_REPAIR` → enter Spec Drift Guard/Clarify; pause only at an existing human-owned gate; resume Plan/Vet internally.
|
|
10
|
+
- `BLOCKED_INPUT` → no planning writes; stop internal branch; exact diagnostic; recover authority; reclassify.
|
|
11
|
+
<!-- END RESLICE ROUTE-TO-ACTION -->
|
|
12
|
+
|
|
13
|
+
## Arm AFK once
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
allow_gates: [advisory]
|
|
17
|
+
max_slices: 10
|
|
18
|
+
max_agents: 32
|
|
19
|
+
max_minutes: 120
|
|
20
|
+
max_review_queue: 8
|
|
21
|
+
expires_at: "<now + 4 hours>"
|
|
22
|
+
# continue_sequence: true # opt-in: chain recorded continuations after Seal GO
|
|
23
|
+
# max_workspaces: 5 # sequence budget when chaining
|
|
24
|
+
# max_parallel: 10 # Build batch cap; 1 = serial (default: eligible, cap 10)
|
|
25
|
+
# max_tokens: <N>
|
|
26
|
+
# max_cost_usd: <amount>
|
|
27
|
+
# notify: "<cmd>"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Read an existing sentinel first. Preserve it byte-for-byte when valid; stop if
|
|
31
|
+
its gate ceiling exceeds advisory, required envelope is malformed/expired, or
|
|
32
|
+
`max_slices` conflicts with the invocation. If absent, write it once after
|
|
33
|
+
clarity, replacing the safe slice default only for explicit `--max-slices N`
|
|
34
|
+
and resolving one absolute UTC expiry. It is read-only: never rewrite it after
|
|
35
|
+
Vet or reset it on resume.
|
|
36
|
+
|
|
37
|
+
### Derive the mutable post-vet budget
|
|
38
|
+
|
|
39
|
+
After Vet, count pending slices and take the minimum of that count, explicit
|
|
40
|
+
flag, and sentinel cap. Before first Build, seed absent state-owned
|
|
41
|
+
`afk_slices_remaining`; retain the lower valid existing value and never increase
|
|
42
|
+
or reinitialize it. AFK configuration itself stays unchanged.
|
|
43
|
+
|
|
44
|
+
### Admit each unattended cycle
|
|
45
|
+
|
|
46
|
+
Before every phase, review fan-out, recovery, or writer dispatch, apply
|
|
47
|
+
`afk-hitl.md#unattended-resource-envelope`: cheapest current-state/readiness
|
|
48
|
+
check first; reject overlap; count unresolved review; check expiry and native
|
|
49
|
+
agent/token/cost/time headroom. Count every leaf result. At the review cap, only
|
|
50
|
+
reconciliation that reduces the queue may run. Any reached or unobservable
|
|
51
|
+
bound stops before more work and persists the winning reason. A new activation
|
|
52
|
+
gets fresh activation-local counters but retains durable slice/recovery state,
|
|
53
|
+
expiry, and recomputed queue.
|
|
54
|
+
|
|
55
|
+
`allow_gates: [advisory]` means validating gates pause now rather than becoming
|
|
56
|
+
Seal NO-GO. Only explicit human configuration outside Autocomplete may widen it.
|
|
57
|
+
|
|
58
|
+
## Phase arc
|
|
59
|
+
|
|
60
|
+
Workspace files carry state; chat does not. Read and execute each phase skill:
|
|
61
|
+
|
|
62
|
+
| Step | Phase | Completion / edge |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| 1 | `/rite-spec` | investigate and write testable intent |
|
|
65
|
+
| 2 | `/rite-clarify` | topology-first scan; require `Decision coverage: CLEAR`, then arm AFK |
|
|
66
|
+
| 3 | `/rite-temper` | harden or reduce; expansion and irreversible risk pause |
|
|
67
|
+
| 4 | `/rite-define` | approved plan/tasks/traceability |
|
|
68
|
+
| 5 | `/rite-vet` | every plan; derive mutable budget after READY |
|
|
69
|
+
| 6 | `/rite-build` batch loop | largest eligible path-disjoint set (cap 10; serial when <2 eligible); recompute after each integrate; charge once per green built slice |
|
|
70
|
+
| 7 | `/rite-prove` | all slices built; approved proof; recovery on red |
|
|
71
|
+
| 8 | `/rite-polish` | re-prove after code edits |
|
|
72
|
+
| 9 | `/rite-review` | in-scope correction then fresh proof |
|
|
73
|
+
| 10 | `/rite-seal` | GO/NO-GO; no Git |
|
|
74
|
+
| 11 | `/rite-ship` | only after GO; `--ship` never authorizes Git; stop at literal-GO/native approval |
|
|
75
|
+
|
|
76
|
+
Before advancing, check resource admission and
|
|
77
|
+
[stop-conditions.md](stop-conditions.md). After source edits, discard stale pass
|
|
78
|
+
evidence. Re-read the active workspace before each phase.
|
|
79
|
+
|
|
80
|
+
## Sequence continuation
|
|
81
|
+
|
|
82
|
+
With `continue_sequence: true` and sequence budget remaining
|
|
83
|
+
([sentinel](../../devrites-lib/reference/standards/afk-hitl.md#sequence-continuation-continue_sequence-max_workspaces)),
|
|
84
|
+
step 10 does not end the run: leave the sealed workspace unshipped with its
|
|
85
|
+
`Next step: /rite-ship`, then invoke the next recorded continuation
|
|
86
|
+
(`/rite-spec <parent>-<n> "<objective>"` from the parent's `decisions.md` sequence)
|
|
87
|
+
and re-enter step 1. Spend one workspace per opened continuation.
|
|
88
|
+
|
|
89
|
+
Spend accounting is durable in `state.md` cursors, not chat. Before invoking the
|
|
90
|
+
continuation, ensure the current workspace's `sequence_workspaces_remaining` is
|
|
91
|
+
set — absent, write `max_workspaces - 1` and `sequence_position: 1` first — and
|
|
92
|
+
`> 0`. `/rite-spec` seeds the child's sequence cursor at creation per the
|
|
93
|
+
[continuation contract](../../rite-plan/reference/slicing.md#continuation-workspaces);
|
|
94
|
+
after the child's `state.md` exists, verify it — `sequence_parent` = the current
|
|
95
|
+
slug, `sequence_position` = parent position + 1,
|
|
96
|
+
`sequence_workspaces_remaining` = parent remaining − 1, and — when the recorded
|
|
97
|
+
entry is the sequence's release milestone — `sequence_role: release` (gates then
|
|
98
|
+
require the union manifest). On resume, a child whose
|
|
99
|
+
fields are missing is re-seeded from its `brief.md` parent/position and the
|
|
100
|
+
parent's counter (same values, never a second charge); a child with no recorded
|
|
101
|
+
parent/position is not a sequence member and the chain stops.
|
|
102
|
+
|
|
103
|
+
Stop instead when: no recorded next entry; the cap, expiry, or review-queue bound is
|
|
104
|
+
reached; a human-owned, safety, access, or exhaustion condition fires; or Seal returns
|
|
105
|
+
`NO-GO`. On stop, report the sequence position, the sealed-but-unshipped workspaces, and
|
|
106
|
+
the single release command (`/rite-autocomplete <release milestone> --ship`, or
|
|
107
|
+
`/rite-ship` for the current sealed workspace when the sequence is complete).
|
|
108
|
+
|
|
109
|
+
## Backtrack without handing off
|
|
110
|
+
|
|
111
|
+
The active Autocomplete root remains caller whenever a later phase exposes an
|
|
112
|
+
agent-owned earlier-phase gap:
|
|
113
|
+
|
|
114
|
+
1. Save the originating phase/action unless a valid native return cursor exists.
|
|
115
|
+
2. On cold resume, reconcile the terminal cursor against durable fingerprint
|
|
116
|
+
accounting. Restore `return_next_action` only from the approved
|
|
117
|
+
`test-plan.md`/evidence action; ambiguity returns to Vet and never licenses
|
|
118
|
+
execution.
|
|
119
|
+
3. Invoke required Plan repair, affected Vet, remediation, and proof inline.
|
|
120
|
+
Recovery Vet is a narrow Vet recheck of prior findings, changed paths/criteria,
|
|
121
|
+
and affected evidence; it never restarts unaffected axes. A nested `STOP`
|
|
122
|
+
ends that phase only; do not hand the intermediate command to the user.
|
|
123
|
+
4. Re-read state after each nested phase. Reconcile exact causal fingerprints
|
|
124
|
+
from `drift.md`/`evidence.md`. A closed reproduction is progress. A different
|
|
125
|
+
Critical/Important invariant gets a separate budget; Suggestion/Nit/FYI does
|
|
126
|
+
not prolong the chain. Only a no-progress result charges the same fingerprint.
|
|
127
|
+
5. For failed consumptive action, spent authorization blocks only another real
|
|
128
|
+
execution. Use retained evidence for offline diagnosis, repair, and narrow
|
|
129
|
+
Vet; after READY, pause for fresh authorization.
|
|
130
|
+
6. Restore and consume the original cursor when prerequisites are green.
|
|
131
|
+
|
|
132
|
+
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"loop tick sees Workflow Artifact trigger/state","action":"invoke classifier once under owner lock; no actor-history migration","return":"same loop cursor; no budget charge for verify/rerun"} -->
|
|
133
|
+
Ask only for a human-owned decision or mandatory safety/access action. Three
|
|
134
|
+
no-progress corrections of one exact fingerprint exhaust; preserve its
|
|
135
|
+
reproduction and dead ends without another Plan/Vet command.
|
|
136
|
+
|
|
137
|
+
## Continuous caller obligation
|
|
138
|
+
|
|
139
|
+
No user-facing reply is permitted while durable state contains agent-owned
|
|
140
|
+
`NEEDS_REPLAN`, an intermediate Plan/Vet action, or a distinct retained
|
|
141
|
+
Critical/Important fingerprint below its cap. Invoke the next internal repair
|
|
142
|
+
immediately. A narrow reviewer closing one finding and exposing another
|
|
143
|
+
Critical/Important invariant is progress, not exhaustion.
|
|
144
|
+
|
|
145
|
+
The number of completed repair/Vet cycles is not a stop condition. Context
|
|
146
|
+
pressure, compaction, session duration, and nested completion do not convert an
|
|
147
|
+
internal checkpoint into a handoff. Persist it and resume until the requested
|
|
148
|
+
rest point or a shared human/safety/access/exhaustion condition.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Stop conditions: when autocomplete pauses
|
|
2
|
+
|
|
3
|
+
On a real stop, write `state.md` as `awaiting_human` or `blocked`, persist the
|
|
4
|
+
reason, and include one resume command only when an actual human/safety/access
|
|
5
|
+
action can change it. Exhausted agent-owned recovery records terminal
|
|
6
|
+
`Next step: none` and no runnable recovery command. `--ship` never bypasses a
|
|
7
|
+
stop.
|
|
8
|
+
|
|
9
|
+
Authority: `.pi/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.
|
|
10
|
+
|
|
11
|
+
<!-- BEGIN RESLICE ROUTE-TO-ACTION -->
|
|
12
|
+
- `FOLD` → keep Plan repair/affected Vet internal; no stop solely for topology/count.
|
|
13
|
+
- `GUARD_AND_REPAIR` → enter Spec Drift Guard/Clarify; pause only at an existing human-owned gate; resume Plan/Vet internally.
|
|
14
|
+
- `BLOCKED_INPUT` → no planning writes; stop internal branch; exact diagnostic; recover authority; reclassify.
|
|
15
|
+
<!-- END RESLICE ROUTE-TO-ACTION -->
|
|
16
|
+
|
|
17
|
+
## Always stop
|
|
18
|
+
|
|
19
|
+
Regardless of flags or AFK ceiling:
|
|
20
|
+
|
|
21
|
+
- destructive data migration;
|
|
22
|
+
- auth/authz boundary change;
|
|
23
|
+
- public API break;
|
|
24
|
+
- external-service contract change; or
|
|
25
|
+
- filesystem destruction outside the workspace.
|
|
26
|
+
|
|
27
|
+
Red proof cannot advance. Run bounded Debug Recovery; stop after proven
|
|
28
|
+
exhaustion unless the remaining owner is human.
|
|
29
|
+
|
|
30
|
+
## Not stops: internal technical routing
|
|
31
|
+
|
|
32
|
+
`NEEDS_REPLAN` is not a stop condition under active Autocomplete. It blocks
|
|
33
|
+
forward work, persists the return cursor, and invokes Plan repair plus Recovery
|
|
34
|
+
Vet inline. The same applies to nested `STOP`/`Next step` when its decision is
|
|
35
|
+
agent-owned.
|
|
36
|
+
|
|
37
|
+
Agent-owned backtracking is not a stop condition while the exact causal
|
|
38
|
+
fingerprint has budget. Invoke the earlier phase, affected Vet, remediation, and
|
|
39
|
+
proof; then resume the origin. Stop only after three no-progress corrections of
|
|
40
|
+
that exact fingerprint or a real human/safety/access gate. Preserve reproduction,
|
|
41
|
+
attempts, and dead ends; never offer `/rite-plan unblock` or another routine
|
|
42
|
+
phase command. Reinvocation with unchanged evidence does not reset the cap.
|
|
43
|
+
`unchanged` means the same fingerprint already has three recorded no-progress
|
|
44
|
+
corrections. Closure is progress; a separately evidenced Critical/Important
|
|
45
|
+
invariant starts its own cap and cannot extend the closed one.
|
|
46
|
+
|
|
47
|
+
Spent consumptive-action authorization is not technical-recovery exhaustion.
|
|
48
|
+
It blocks another execution; retained new Critical/Important evidence still
|
|
49
|
+
enters offline recovery. After affected Vet is READY, pause for fresh action
|
|
50
|
+
authorization and never reuse old GO.
|
|
51
|
+
|
|
52
|
+
Past evidence being irretrievable is not by itself terminal. If an in-scope
|
|
53
|
+
trusted seam can uniquely discriminate the next failure, run diagnostic-
|
|
54
|
+
amplification Plan repair and narrow Vet inline, then pause for fresh GO before
|
|
55
|
+
one evidence-acquisition attempt. Use terminal none only when no safe in-scope
|
|
56
|
+
seam exists, a real human/risk/scope gate owns it, or bounded recovery is
|
|
57
|
+
exhausted.
|
|
58
|
+
|
|
59
|
+
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"stop on exact WAIT_ACTIVE_OWNER, BLOCKED_EXHAUSTED, or BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
|
|
60
|
+
## Other stop classes
|
|
61
|
+
|
|
62
|
+
- **Gate severity:** blocking or escalating gate; any open validating question.
|
|
63
|
+
- **Temper:** any `expand` or added acceptance criterion. `hold-rigor`,
|
|
64
|
+
`reduce-to-MVP`, and a justified skip do not pause.
|
|
65
|
+
- **Clarify:** material Partial/Missing/unowned decision coverage or a
|
|
66
|
+
low-confidence high-consequence assumption. Continue the initial interview;
|
|
67
|
+
never arm AFK early.
|
|
68
|
+
- **Seal:** NO-GO, with every blocker and fix direction. Never round up to GO.
|
|
69
|
+
- **Reslice:** execute its marked action before deciding continue/stop.
|
|
70
|
+
- **Slice budget:** any validated root-owned remaining value of zero stops before the next dispatch
|
|
71
|
+
when slices remain; malformed state also stops. Report whether the winning
|
|
72
|
+
bound was the pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count.
|
|
73
|
+
Zero with no pending slices is normal completion and proceeds to Prove.
|
|
74
|
+
- **Resource envelope:** missing/malformed/expired AFK, overlapping run,
|
|
75
|
+
exhausted/unobservable declared agent/token/cost/time headroom, or review queue
|
|
76
|
+
above cap. At cap, only queue-reducing reconciliation may run. Persist winning
|
|
77
|
+
bound and observed usage; a new activation does not reset durable budgets or
|
|
78
|
+
expiry.
|
|
79
|
+
- **Confidence:** intent still cannot become testable acceptance after interview.
|
|
80
|
+
- **Repeated failure:** the exact fingerprint's bounded recovery is exhausted.
|
|
81
|
+
|
|
82
|
+
## Final GO and durable stop
|
|
83
|
+
|
|
84
|
+
`--ship`/`--yolo` never authorizes Git. With a flag, complete Ship preflight,
|
|
85
|
+
disclose the exact plan, and stop for literal `GO` plus native approval. Without
|
|
86
|
+
one, stop at Seal GO with `/rite-ship`. Seal GO, AFK, prior approval, and flags
|
|
87
|
+
never satisfy Ship approval.
|
|
88
|
+
|
|
89
|
+
A cold-resumable stop records `state.md` status, exact reason, and either one
|
|
90
|
+
human-owned resume action or `none — technical recovery exhausted`; the owning
|
|
91
|
+
question/drift/seal entry explains it. The user-facing line says what stopped
|
|
92
|
+
and, only when applicable, what human action resumes it.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-build
|
|
3
|
+
description: Build the next approved vertical slice with evidence. HITL one-slice default; AFK/autocomplete chain serially or in eligible path-disjoint batches (dynamic size, cap 10); `--parallel N` caps a batch.
|
|
4
|
+
argument-hint: "[--parallel N] [slice number or name]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /rite-build: one verified slice
|
|
9
|
+
|
|
10
|
+
HITL stops; a later user invocation starts the next slice.
|
|
11
|
+
Explicit `.devrites/AFK` alone lets the controlling root chain under green proof,
|
|
12
|
+
caps and pause rules. Every wright returns after one slice.
|
|
13
|
+
**Opt-in:** `/rite-build --parallel N` (2≤N≤10; N=1≡serial) follows
|
|
14
|
+
[`reference/parallel-batch.md`](reference/parallel-batch.md)
|
|
15
|
+
([`one-slice-cycle.md`](reference/one-slice-cycle.md)).
|
|
16
|
+
|
|
17
|
+
Root owns gates/bookkeeping; fresh
|
|
18
|
+
[`devrites-slice-wright`](.pi/agents/devrites-slice-wright.md) writes source/tests.
|
|
19
|
+
Workflow Artifacts use
|
|
20
|
+
[`workflow-artifacts.md`](../devrites-lib/reference/standards/workflow-artifacts.md).
|
|
21
|
+
Execute [`reference/phase-contract.md`](reference/phase-contract.md)
|
|
22
|
+
([`one-slice-cycle.md`](reference/one-slice-cycle.md),
|
|
23
|
+
[`afk-discipline.md`](reference/afk-discipline.md)); dispatch uses
|
|
24
|
+
[`reference/wright-dispatch.md`](reference/wright-dispatch.md).
|
|
25
|
+
|
|
26
|
+
## Required rules
|
|
27
|
+
|
|
28
|
+
Read `.pi/skills/devrites-lib/reference/standards/core.md` first. Load only triggered rules:
|
|
29
|
+
coding/error/testing/[`tdd.md`](reference/tdd.md)/patterns/DoD; binding
|
|
30
|
+
`.devrites/principles.md`; security; topology; data integrity; integration reliability.
|
|
31
|
+
Wright applies anti-slop; root verifies returns and never patches source.
|
|
32
|
+
|
|
33
|
+
## Invariants
|
|
34
|
+
|
|
35
|
+
- Default: one slice; writers serial on control. Parallel only via `--parallel N`
|
|
36
|
+
under [`reference/parallel-batch.md`](reference/parallel-batch.md). Same-worktree
|
|
37
|
+
multi-writer / root-emulated concurrency forbidden. Native-worktree pilot =
|
|
38
|
+
single-slice isolation when `wright-dispatch.md` preflight + reconcile hold.
|
|
39
|
+
- Exact feature scope only; reject out-of-allowlist diffs; record adjacent issues.
|
|
40
|
+
- Re-prove affected behavior after edits; reuse observations only under
|
|
41
|
+
[evidence validity](../devrites-lib/reference/candidate-integrity.md#evidence-validity).
|
|
42
|
+
- Unplanned dependency/design-system/gap/repair → Vet/Spec Drift Guard batch
|
|
43
|
+
sweep: every contract-assumption violation recorded before one folded
|
|
44
|
+
repair+vet. Ask only for licensing/cost/security/product or explicit
|
|
45
|
+
architecture-policy decisions.
|
|
46
|
+
- Root never edits product source/tests (`.devrites/` + Workflow Artifact only).
|
|
47
|
+
Wright is sole product writer; extras in returned paths/`git diff --name-only` hard-stop.
|
|
48
|
+
- Principles bind; irreversible conflict needs human exception or stop.
|
|
49
|
+
- Evidence beats confidence. Never weaken tests, skip TDD, widen writers, or
|
|
50
|
+
self-approve. Drift → [`spec-drift-guard.md`](reference/spec-drift-guard.md);
|
|
51
|
+
checkpoint → [`checkpoint.md`](reference/checkpoint.md).
|
|
52
|
+
- Async readiness waits during slice work follow
|
|
53
|
+
[`debug-recovery.md`](../devrites-lib/reference/standards/debug-recovery.md)
|
|
54
|
+
(bounded poll + last-signal artifact; no blind sleep as primary strategy).
|
|
55
|
+
|
|
56
|
+
## Workflow Artifact branch
|
|
57
|
+
|
|
58
|
+
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"Vet-ready admitted bytes require root authorship outside product wright","action":"ROOT_TRANSACTION; root writes only admitted .devrites/** targets","return":"saved Build slice cursor; wright product allowlist unchanged"} -->
|
|
59
|
+
## `--parallel N` (opt-in)
|
|
60
|
+
|
|
61
|
+
Omitted/`1` ≡ serial; `2`–`10` is a **cap** — the root runs the largest eligible
|
|
62
|
+
path-disjoint set it can start now (`N_eff`), takes fewer when the cap cannot be
|
|
63
|
+
filled, and recomputes after every integrate until no pending slice remains
|
|
64
|
+
([`parallel-batch.md` § Dynamic selection](reference/parallel-batch.md#dynamic-selection-and-re-batching)).
|
|
65
|
+
Unattended runs (`/rite-autocomplete`, `.devrites/AFK` `max_parallel`) repeat batches
|
|
66
|
+
inside the same run; HITL stops after each batch. Non-integer/`N≤0`/`N>10` hard refuse.
|
|
67
|
+
All-green serial integrate; a red/gap sibling gets a bounded repair round in
|
|
68
|
+
its own worktree — never rebuilt from scratch while budget remains.
|
|
69
|
+
Post-writer inventory and affected rechecks follow `phase-contract.md` § Independent
|
|
70
|
+
Build review; fold accounts before one repair-all wright.
|
|
71
|
+
Plan-owned gaps still route through Spec Drift Guard
|
|
72
|
+
(batch sweep, one folded plan repair + one vet recheck inline); do not emit
|
|
73
|
+
a human `Fix`. Exhausted repair blocks and preserves everything;
|
|
74
|
+
`cleanup --force` salvages slice branches before removing worktrees —
|
|
75
|
+
human-gated to abandon a batch, orchestrator-emitted only as the salvage
|
|
76
|
+
step of an automatic frozen-lease re-batch.
|
|
77
|
+
AFK charges after integrate only. Running lease blocks another
|
|
78
|
+
`/rite-build`. Details: `parallel-batch.md`.
|
|
79
|
+
|
|
80
|
+
## Execute and reply
|
|
81
|
+
|
|
82
|
+
Run every step in `reference/phase-contract.md`: readiness, one target, dispatch
|
|
83
|
+
or canonical transaction, return inspection, independent code/doubt/test analysis,
|
|
84
|
+
approved fail-on-red proof, record, AFK accounting, and stop. Use
|
|
85
|
+
[`reference/output.md`](reference/output.md) plus the shared
|
|
86
|
+
[`reply contract`](../devrites-lib/reference/reply-contract.md). HITL never starts
|
|
87
|
+
the next slice automatically; AFK obeys remaining budget; Prove requires all slices built.
|
|
88
|
+
|
|
89
|
+
## Phase exit
|
|
90
|
+
|
|
91
|
+
**Complete when:** the dispatched wright returns green proof for the slice,
|
|
92
|
+
`git diff --name-only` ⊆ allowlist, independent test analysis admits no Critical
|
|
93
|
+
gap, and `state.md` cursor advances with recorded evidence paths.
|
|
94
|
+
|
|
95
|
+
**Failing case:** wright reports "done" but proof command was not executed or
|
|
96
|
+
failed → slice incomplete; do not advance cursor.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# AFK discipline for unattended `/rite-build`
|
|
2
|
+
|
|
3
|
+
AFK mode is active when `.devrites/AFK` exists. It lets `/rite-build` chain slices
|
|
4
|
+
without per-slice user input. The rules below limit that unattended work.
|
|
5
|
+
|
|
6
|
+
Load the shared
|
|
7
|
+
[`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md#the-sentinel-devritesafk)
|
|
8
|
+
contract for the sentinel schema, defaults, gate ceiling, and mutable-counter
|
|
9
|
+
ownership. This file owns only Build's dispatch, charging, and red-path behavior.
|
|
10
|
+
|
|
11
|
+
Rules: green before `built`; hard `max_slices` cap; gates before the action they
|
|
12
|
+
control; irreversible work (destructive/auth/public API) always pauses.
|
|
13
|
+
|
|
14
|
+
## Iteration cap
|
|
15
|
+
|
|
16
|
+
The controlling root owns the cap:
|
|
17
|
+
|
|
18
|
+
1. **Before every dispatch**, re-read `.devrites/AFK`, `state.md`, and the
|
|
19
|
+
selected slice. A configured `max_slices` and any existing
|
|
20
|
+
`afk_slices_remaining` value, including its released bullet form, must each
|
|
21
|
+
be a decimal nonnegative integer. A missing
|
|
22
|
+
`state.md` or malformed configured value fails closed; an omitted cap is the
|
|
23
|
+
documented unlimited default only when no remaining counter exists. If the
|
|
24
|
+
effective remaining value is zero, stop before dispatching another slice.
|
|
25
|
+
2. **After proof is green**, combine the pending → built record and budget
|
|
26
|
+
charge in one `state.md` rewrite. If the remaining field is absent, add
|
|
27
|
+
`afk_slices_remaining` to a cursor table or `AFK slices remaining` to a
|
|
28
|
+
legacy bullet cursor, seed it from `max_slices`, and write
|
|
29
|
+
`max_slices - 1`; otherwise preserve its spelling and write `remaining - 1`.
|
|
30
|
+
The counter is never below zero: a value that would go negative is an invariant failure and
|
|
31
|
+
stops. A missing `max_slices` means unlimited and no remaining field is
|
|
32
|
+
created.
|
|
33
|
+
A controlling orchestrator may pre-seed the remaining field from a validated
|
|
34
|
+
post-plan budget before the first dispatch; never increase or reinitialize an
|
|
35
|
+
existing value.
|
|
36
|
+
3. **Charge exactly once after each green built slice.** On the control tree, a slice
|
|
37
|
+
already marked built is not charged again after retry, resume, or
|
|
38
|
+
compaction. Re-read the saved cursor; if it is zero, report the cap and stop
|
|
39
|
+
before the next dispatch.
|
|
40
|
+
- **Serial:** charge when fail-on-red is green and the built record is written
|
|
41
|
+
(same rewrite as step 2).
|
|
42
|
+
- **Parallel `--parallel`:** charge only after **successful serial integrate**
|
|
43
|
+
— once per integrated green sibling. Abort / integrate-failed → charge **0**.
|
|
44
|
+
Do not charge on worktree-green before integrate. See
|
|
45
|
+
[`parallel-batch.md`](parallel-batch.md).
|
|
46
|
+
|
|
47
|
+
Use this stop message:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
AFK cap reached. Raise `state.md` `afk_slices_remaining`/`AFK slices remaining` or remove the sentinel to continue.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`max_slices` itself is read-only and never rewritten. No exit-code command
|
|
54
|
+
enforces this policy.
|
|
55
|
+
|
|
56
|
+
Choose caps deliberately (≈5–10 small, ≈30–50 larger). Avoid `unlimited` until HITL
|
|
57
|
+
has succeeded for the work.
|
|
58
|
+
|
|
59
|
+
## Fail-on-red
|
|
60
|
+
|
|
61
|
+
The **fail-on-red step** refuses `built` when targeted tests/types/lint are red. Red means
|
|
62
|
+
wrong contract or proof path — agent-owned recovery; never advance on broken state.
|
|
63
|
+
|
|
64
|
+
The fail-on-red path:
|
|
65
|
+
|
|
66
|
+
1. Continue the same wright under `devrites-debug-recovery`, carrying exact output and dead
|
|
67
|
+
ends; cap writer + recovery at three no-progress attempts per exact causal fingerprint.
|
|
68
|
+
A correction that closes the reproduction is progress; a different evidenced
|
|
69
|
+
Critical/Important invariant starts a separate fingerprint.
|
|
70
|
+
2. Green → record the slice. Product-contract/irreversible ambiguity → write the genuine
|
|
71
|
+
human gate. Missing human-only credential/permission → write a human-intervention gate.
|
|
72
|
+
3. Any other exhausted objective failure → set `Status: blocked`, preserve the reproduction,
|
|
73
|
+
set `Next step: none — technical recovery exhausted for <causal fingerprint>; requires new evidence or changed failure conditions`, and STOP without a qid or runnable phase command. Reinvocation with the unchanged fingerprint remains blocked and does not reset the cap.
|
|
74
|
+
4. Fire `notify:` only for an actual `awaiting_human` transition.
|
|
75
|
+
|
|
76
|
+
AFK never starts the next slice while checks are red and never asks the human to approve
|
|
77
|
+
agent-owned diagnosis or parser/test repair.
|
|
78
|
+
|
|
79
|
+
## Irreversible-risk list (always pause)
|
|
80
|
+
|
|
81
|
+
Regardless of `allow_gates`, AFK invokes the checkpoint protocol when the slice touches
|
|
82
|
+
any of:
|
|
83
|
+
|
|
84
|
+
- Destructive data migration (drop column, drop table, irreversible backfill).
|
|
85
|
+
- Auth / authz boundary change (new role, changed permission check, new public auth endpoint).
|
|
86
|
+
- Public API break (response shape change, removed endpoint, changed status code semantics).
|
|
87
|
+
- External-service contract change (webhook payload, partner-facing schema).
|
|
88
|
+
- Filesystem destructive operation outside the workspace (`rm -rf` of project paths,
|
|
89
|
+
rewriting `.gitignore`-listed paths, deleting fixtures).
|
|
90
|
+
- Anything the slice's `Gate: blocking` plus its `Checkpoint:` line in `tasks.md` flags as irreversible.
|
|
91
|
+
|
|
92
|
+
This is the Claude Code auto-mode transcript classifier list adapted to the DevRites
|
|
93
|
+
workspace.
|
|
94
|
+
|
|
95
|
+
## The `notify:` hook contract
|
|
96
|
+
|
|
97
|
+
The hook is a single shell command run on the `awaiting_human` transition. Environment
|
|
98
|
+
the hook receives:
|
|
99
|
+
|
|
100
|
+
| Var | Value |
|
|
101
|
+
| --- | --- |
|
|
102
|
+
| `DEVRITES_QID` | the new qid (e.g. `q-2026-05-28-001`) |
|
|
103
|
+
| `DEVRITES_GATE` | `advisory` / `validating` / `blocking` / `escalating` |
|
|
104
|
+
| `DEVRITES_SLICE` | `<N — name>` |
|
|
105
|
+
| `DEVRITES_SLUG` | active feature slug |
|
|
106
|
+
| `DEVRITES_QUESTION` | the checkpoint text |
|
|
107
|
+
| `DEVRITES_PROPOSED` | the proposed answer |
|
|
108
|
+
|
|
109
|
+
The hook is best effort: a non-zero exit does **not** roll back the pause. Failures are
|
|
110
|
+
logged to `evidence.md` so the user sees them on return.
|
|
111
|
+
|
|
112
|
+
Example targets:
|
|
113
|
+
|
|
114
|
+
- `curl -d "$DEVRITES_QID: $DEVRITES_QUESTION" ntfy.sh/my-topic`
|
|
115
|
+
- `osascript -e "display notification \"$DEVRITES_QUESTION\" with title \"DevRites: $DEVRITES_GATE\""`
|
|
116
|
+
- `pb push "$DEVRITES_SLUG: $DEVRITES_QUESTION"` (via pushbullet CLI)
|
|
117
|
+
|
|
118
|
+
DevRites does not implement notifications; the configured hook does.
|
|
119
|
+
|
|
120
|
+
## When to leave AFK
|
|
121
|
+
|
|
122
|
+
Drop the sentinel before:
|
|
123
|
+
|
|
124
|
+
- A new feature when `/rite-build` has not yet completed successfully on this codebase
|
|
125
|
+
in HITL.
|
|
126
|
+
- A risky slice you marked `Mode: HITL` and want to walk through interactively even if
|
|
127
|
+
the gate is technically `validating`.
|
|
128
|
+
- Any time you'd rather review per-slice than batch-resolve afterwards.
|
|
129
|
+
|
|
130
|
+
AFK allows routine work to continue automatically. Re-enable it for another batch of
|
|
131
|
+
low-stakes work.
|
|
132
|
+
|
|
133
|
+
## What AFK does NOT do
|
|
134
|
+
|
|
135
|
+
- It does not bypass `/rite-prove`, `/rite-review`, or `/rite-seal`. Those gates are
|
|
136
|
+
feature-scoped and always run when their phase runs.
|
|
137
|
+
- It does not skip `/rite-plan repair` when the Spec Drift Guard finds that the
|
|
138
|
+
durable plan is wrong. Objective implementation and tool failures stay in
|
|
139
|
+
bounded recovery instead.
|
|
140
|
+
- It does not skip `devrites-source-driven` checks. Uncertain framework behavior still
|
|
141
|
+
triggers the doc lookup.
|
|
142
|
+
- It does not skip `evidence.md` writes. AFK runs that don't record evidence are
|
|
143
|
+
unproven and get rejected at `/rite-prove` regardless.
|
|
144
|
+
|
|
145
|
+
The sentinel widens *human pauses*, nothing else.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# rite-build: anti-patterns
|
|
2
|
+
|
|
3
|
+
Load when a non-trivial decision stands or stopping, TDD, or doubt discipline
|
|
4
|
+
feels inconvenient.
|
|
5
|
+
|
|
6
|
+
Pack-wide rationalizations and red flags live in
|
|
7
|
+
[standards/anti-patterns.md](../../devrites-lib/reference/standards/anti-patterns.md).
|
|
8
|
+
|
|
9
|
+
## Phase-specific rationalizations
|
|
10
|
+
|
|
11
|
+
| Excuse | Rebuttal |
|
|
12
|
+
|---|---|
|
|
13
|
+
| "Slices 1 and 2 are related; let me do both." | HITL needs a later user invocation. Explicit `.devrites/AFK` may let the root chain only after green proof and cap/pause gates; each wright still returns after one. |
|
|
14
|
+
| "It's faster to skip `devrites-doubt` for this small change." | Doubt is cheapest *before* the decision is standing. After is debugging. |
|
|
15
|
+
|
|
16
|
+
## Red Flags
|
|
17
|
+
|
|
18
|
+
- About to start slice N+1 outside explicit AFK or before its green-proof/cap/pause gates.
|
|
19
|
+
- Skipping `devrites-doubt` on a branching, boundary, data-model, auth, public-API, or migration decision.
|
|
20
|
+
- Adding a dependency or a second design system without recording rationale in `decisions.md`.
|
|
21
|
+
- Writing a `try/catch` block wider than what you handle.
|
|
22
|
+
- A comment that restates what the next line does.
|
|
23
|
+
- Touching files that aren't in `touched-files.md` for "tidiness".
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Checkpoint protocol: what `/rite-build` does when a slice is HITL
|
|
2
|
+
|
|
3
|
+
HITL slices pause **pre-action** as a ranked **option set** before any code:
|
|
4
|
+
|
|
5
|
+
- **Interactive:** `AskUserQuestion`; record to `questions.md`/`decisions.md`; clear gate;
|
|
6
|
+
continue in place (no `/rite-resolve` round-trip).
|
|
7
|
+
- **Absent / AFK / notify-only:** persist open question + `Awaiting human`, notify, **stop**.
|
|
8
|
+
Resume via `/rite-resolve` (or `--batch`).
|
|
9
|
+
|
|
10
|
+
## Render contract
|
|
11
|
+
|
|
12
|
+
Render the checkpoint in user-facing output **and** persist it for the next session / AFK
|
|
13
|
+
observer.
|
|
14
|
+
|
|
15
|
+
### User-facing render: the option set
|
|
16
|
+
|
|
17
|
+
Present as `AskUserQuestion` ranked **option set** (`afk-hitl.md`): 2–4 options,
|
|
18
|
+
recommended first + `(Recommended)`, dimension-tagged trade-offs, plus escape hatch.
|
|
19
|
+
Header names slice + gate:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Slice <N — name> — HITL (<gate>, SLA <SLA>). <Checkpoint text from tasks.md>
|
|
23
|
+
|
|
24
|
+
▸ 1. <recommended> (Recommended)
|
|
25
|
+
logic: … · infra: … · business: … · architecture: … (+ security/UX/risk if in scope)
|
|
26
|
+
2. <alternative> — <rationale + the trade-off it accepts>
|
|
27
|
+
3. <alternative> — <rationale>
|
|
28
|
+
4. Something else — I'll describe it
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Option #1 (recommended) is **required** and must reflect *this* project. Interactive pick →
|
|
32
|
+
resolve in place; pause → persist the same set to `questions.md` `options:` with resume
|
|
33
|
+
`/rite-resolve <qid> "<answer>"` (or `--drop <qid> "<reason>"`).
|
|
34
|
+
|
|
35
|
+
### Workspace mutations
|
|
36
|
+
|
|
37
|
+
In one bounded root-owned update (one `questions.md` append and one `state.md`
|
|
38
|
+
rewrite; do not claim cross-file atomicity):
|
|
39
|
+
|
|
40
|
+
1. **`questions.md` append:**
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
## q-<YYYY-MM-DD>-<NNN>
|
|
44
|
+
status: open
|
|
45
|
+
slice: <N — name>
|
|
46
|
+
gate: <gate from tasks.md>
|
|
47
|
+
question: <Checkpoint text from tasks.md>
|
|
48
|
+
options: | # the ranked set, recommended first (matches the render)
|
|
49
|
+
1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
|
|
50
|
+
2. <alternative> — <rationale>
|
|
51
|
+
proposed: <the recommended option restated; matches option 1>
|
|
52
|
+
raised_at: <iso>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
2. **`state.md` updates:**
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
- Status: awaiting_human
|
|
59
|
+
- Active slice: <N — name>
|
|
60
|
+
- Slice mode: HITL
|
|
61
|
+
- Next step: /rite-resolve <qid> "<answer>"
|
|
62
|
+
|
|
63
|
+
## Awaiting human
|
|
64
|
+
- qid: <q-...-NNN>
|
|
65
|
+
- gate: <gate>
|
|
66
|
+
- question: <Checkpoint text>
|
|
67
|
+
- proposed: <one-paragraph best-guess>
|
|
68
|
+
- raised_at: <iso>
|
|
69
|
+
- blocking_slices: [<list, from `Blocked by` lookups>]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
3. **`notify:` hook (if `.devrites/AFK` defines one):** export all six env vars from the
|
|
73
|
+
canonical contract in [`afk-discipline.md`](afk-discipline.md) (the `notify:` hook
|
|
74
|
+
contract table is the source of truth):
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
DEVRITES_QID="$qid" \
|
|
78
|
+
DEVRITES_GATE="$gate" \
|
|
79
|
+
DEVRITES_SLICE="$slice_id" \
|
|
80
|
+
DEVRITES_SLUG="$slug" \
|
|
81
|
+
DEVRITES_QUESTION="$question" \
|
|
82
|
+
DEVRITES_PROPOSED="$proposed" \
|
|
83
|
+
sh -c "$notify_cmd"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Fire after workspace write. Hook failure does **not** roll back the pause (best-effort).
|
|
87
|
+
|
|
88
|
+
## qid generation
|
|
89
|
+
|
|
90
|
+
Format: `q-YYYY-MM-DD-NNN`, where `NNN` is the next sequential integer for that date in
|
|
91
|
+
`questions.md`. The controlling root must scan every question header matching
|
|
92
|
+
today's prefix, collect its numeric suffixes, and select one above the highest
|
|
93
|
+
observed suffix (or `001` when none exist), advancing until it is unused. Then
|
|
94
|
+
re-read `questions.md` immediately before the append and repeat the scan. Append only if
|
|
95
|
+
the same candidate is still the next unused id; otherwise recompute. There is no
|
|
96
|
+
reservation or engine command for qids.
|
|
97
|
+
|
|
98
|
+
## When AFK is active
|
|
99
|
+
|
|
100
|
+
If `.devrites/AFK` exists and the slice `Gate` is in `allow_gates`, skip this protocol and
|
|
101
|
+
auto-pick recommended option 1:
|
|
102
|
+
|
|
103
|
+
- `advisory`: log `gate: advisory` + `decisions.md`, then dispatch wright.
|
|
104
|
+
- `validating` (only if allowed): dispatch wright; on return log `gate: validating`, mark
|
|
105
|
+
`built (pending review)`, continue. Slice states remain `pending|built`; feature
|
|
106
|
+
acceptance is `/rite-prove`. Open `validating` is NO-GO at seal until `/rite-resolve`.
|
|
107
|
+
|
|
108
|
+
`blocking` / `escalating` / irreversible-risk always use this protocol (`afk-discipline.md`).
|
|
109
|
+
|
|
110
|
+
## Multi-question pauses
|
|
111
|
+
|
|
112
|
+
**One question per pause.** Multiple HITL checkpoints → `/rite-plan reslice`.
|
|
113
|
+
|
|
114
|
+
## What NOT to do
|
|
115
|
+
|
|
116
|
+
- Don't write code then pause — pre-action only.
|
|
117
|
+
- Don't render without persisting `state.md` + `questions.md`.
|
|
118
|
+
- Don't self-answer a human pause via `proposed:` — `/rite-resolve` needs an explicit
|
|
119
|
+
answer (distinct from interactive pick / AFK auto-pick on `allow_gates`).
|
|
120
|
+
- Don't put `notify:` output in chat; don't fire `notify:` on advisory-only entries.
|