devrites 7.1.2 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +9 -4
- package/docs/dsh.md +46 -0
- package/engine/internal/devritespaths/paths.go +2 -0
- package/engine/internal/hostpack/hostpack.go +29 -5
- package/engine/internal/install/apply.go +14 -2
- package/engine/internal/install/install.go +7 -3
- package/engine/internal/install/merge.go +1 -0
- package/engine/internal/install/preflight.go +9 -2
- package/engine/internal/install/update.go +1 -1
- package/engine/internal/lib/dispatch_packet.go +1 -1
- package/pack/generated/README.md +3 -1
- package/pack/generated/dsh/AGENTS.md +20 -0
- package/pack/generated/dsh/agents/devrites-code-reviewer.md +180 -0
- package/pack/generated/dsh/agents/devrites-devex-reviewer.md +137 -0
- package/pack/generated/dsh/agents/devrites-doubt-reviewer.md +100 -0
- package/pack/generated/dsh/agents/devrites-evidence-scout.md +93 -0
- package/pack/generated/dsh/agents/devrites-frontend-reviewer.md +139 -0
- package/pack/generated/dsh/agents/devrites-performance-reviewer.md +142 -0
- package/pack/generated/dsh/agents/devrites-plan-drafter.md +113 -0
- package/pack/generated/dsh/agents/devrites-plan-reviewer.md +167 -0
- package/pack/generated/dsh/agents/devrites-proof-runner.md +101 -0
- package/pack/generated/dsh/agents/devrites-retrospector.md +82 -0
- package/pack/generated/dsh/agents/devrites-security-auditor.md +146 -0
- package/pack/generated/dsh/agents/devrites-simplifier-reviewer.md +113 -0
- package/pack/generated/dsh/agents/devrites-slice-wright.md +240 -0
- package/pack/generated/dsh/agents/devrites-spec-reviewer.md +105 -0
- package/pack/generated/dsh/agents/devrites-strategy-reviewer.md +109 -0
- package/pack/generated/dsh/agents/devrites-test-analyst.md +110 -0
- package/pack/generated/dsh/agents/devrites-upgrade-planner.md +107 -0
- package/pack/generated/dsh/agents/fast-builder.md +92 -0
- package/pack/generated/dsh/agents/fast-checker.md +61 -0
- package/pack/generated/dsh/agents/fast-critic.md +71 -0
- package/pack/generated/dsh/agents/fast-planner.md +95 -0
- package/pack/generated/dsh/agents/overhaul-backend-engineer.md +70 -0
- package/pack/generated/dsh/agents/overhaul-boundary.md +64 -0
- package/pack/generated/dsh/agents/overhaul-craft.md +85 -0
- package/pack/generated/dsh/agents/overhaul-frontend-engineer.md +73 -0
- package/pack/generated/dsh/agents/overhaul-implementer.md +72 -0
- package/pack/generated/dsh/agents/overhaul-recon.md +77 -0
- package/pack/generated/dsh/agents/overhaul-specialist.md +67 -0
- package/pack/generated/dsh/agents/overhaul-verifier.md +73 -0
- package/pack/generated/dsh/runtime/cordis.patch.yml +1450 -0
- package/pack/generated/dsh/runtime/specialist.mjs +62 -0
- package/pack/generated/dsh/skills/devrites-api-interface/SKILL.md +65 -0
- package/pack/generated/dsh/skills/devrites-audit/SKILL.md +60 -0
- package/pack/generated/dsh/skills/devrites-browser-proof/SKILL.md +109 -0
- package/pack/generated/dsh/skills/devrites-browser-proof/reference/browser-performance.md +19 -0
- package/pack/generated/dsh/skills/devrites-browser-proof/reference/visual-verdict.md +38 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/SKILL.md +119 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +41 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/hypotheses.md +23 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/regression-test.md +33 -0
- package/pack/generated/dsh/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/dsh/skills/devrites-doubt/SKILL.md +83 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/SKILL.md +89 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/craft.md +63 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/design-references.md +120 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/fullstack.md +46 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/quality-standards.md +286 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/reuse-first.md +53 -0
- package/pack/generated/dsh/skills/devrites-frontend-craft/reference/shape.md +61 -0
- package/pack/generated/dsh/skills/devrites-interview/SKILL.md +107 -0
- package/pack/generated/dsh/skills/devrites-lib/SKILL.md +98 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +59 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/intent-map.md +86 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/orchestration-profiles.md +48 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +184 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/reply-contract.md +123 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/README.md +70 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md +32 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +467 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +231 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/anti-patterns.md +50 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/architecture-health.md +64 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/assumption-checkpoints.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/audit-coverage.md +107 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/browser-proof-checklist.md +37 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-navigation.md +69 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/code-review.md +178 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/coding-style.md +53 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +136 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/core.md +202 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/data-integrity.md +144 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/debug-recovery.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/definition-of-done.md +25 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/deprecation.md +49 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/developer-experience.md +128 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/development-workflow.md +31 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/documentation.md +55 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/duplicate-code.md +129 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/edge-case-trace.md +94 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/elicitation.md +114 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/error-handling.md +49 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +159 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/git-workflow.md +51 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/glossary.md +40 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/hooks.md +41 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/integration-reliability.md +121 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/loop-operations.md +123 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/observability.md +90 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/one-shot-actions.md +105 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/patterns.md +70 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/performance.md +88 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/principles.md +56 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/prose-style.md +127 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/release/ship-checklist.md +12 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/repository-topology.md +82 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/README.md +28 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ci-workflows.md +50 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/default.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/go.md +47 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/python.md +46 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/react.md +55 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/shell.md +40 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/stack-profile.md +155 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review/ts-js.md +74 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/review-checklist.md +14 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/security-checklist.md +30 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/security.md +283 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/skill-authoring.md +269 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/spec-grammar.md +214 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/test-proof-checklist.md +18 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/testing.md +295 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/tooling.md +125 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/verification-methods.md +143 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/windows.md +60 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/workflow-artifacts.md +435 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/code.md +44 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/comparison.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/diagram.md +51 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/index.md +66 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/input.md +46 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/outline-template.md +106 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/plan.md +48 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/slides.md +40 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/visual-playbooks/table.md +42 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +312 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/SKILL.md +81 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/reference/banned-phrases.md +132 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/reference/examples.md +136 -0
- package/pack/generated/dsh/skills/devrites-prose-craft/reference/structures.md +196 -0
- package/pack/generated/dsh/skills/devrites-source-driven/SKILL.md +54 -0
- package/pack/generated/dsh/skills/devrites-ux-shape/SKILL.md +135 -0
- package/pack/generated/dsh/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/dsh/skills/devrites-ux-shape/reference/visual-direction-probe.md +50 -0
- package/pack/generated/dsh/skills/overhaul/SKILL.md +221 -0
- package/pack/generated/dsh/skills/overhaul/references/audit-domains.md +390 -0
- package/pack/generated/dsh/skills/overhaul/references/lifecycle.md +314 -0
- package/pack/generated/dsh/skills/overhaul/references/orchestration.md +291 -0
- package/pack/generated/dsh/skills/overhaul/references/records.md +203 -0
- package/pack/generated/dsh/skills/overhaul/references/repair-and-measurement.md +310 -0
- package/pack/generated/dsh/skills/overhaul/references/review-and-report.md +139 -0
- package/pack/generated/dsh/skills/overhaul/references/scope-and-safety.md +233 -0
- package/pack/generated/dsh/skills/overhaul/references/scoring.md +261 -0
- package/pack/generated/dsh/skills/overhaul/references/stack-profiles.md +316 -0
- package/pack/generated/dsh/skills/rite/SKILL.md +157 -0
- package/pack/generated/dsh/skills/rite/reference/menu.md +49 -0
- package/pack/generated/dsh/skills/rite-adopt/SKILL.md +64 -0
- package/pack/generated/dsh/skills/rite-adopt/reference/adoption.md +25 -0
- package/pack/generated/dsh/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +167 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/decision-policy.md +44 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +50 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +164 -0
- package/pack/generated/dsh/skills/rite-autocomplete/reference/stop-conditions.md +118 -0
- package/pack/generated/dsh/skills/rite-build/SKILL.md +126 -0
- package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +153 -0
- package/pack/generated/dsh/skills/rite-build/reference/anti-patterns.md +27 -0
- package/pack/generated/dsh/skills/rite-build/reference/checkpoint-protocol.md +115 -0
- package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +79 -0
- package/pack/generated/dsh/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/dsh/skills/rite-build/reference/one-slice-cycle.md +57 -0
- package/pack/generated/dsh/skills/rite-build/reference/output.md +29 -0
- package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +260 -0
- package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +130 -0
- package/pack/generated/dsh/skills/rite-build/reference/spec-drift-guard.md +91 -0
- package/pack/generated/dsh/skills/rite-build/reference/tdd.md +27 -0
- package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +198 -0
- package/pack/generated/dsh/skills/rite-clarify/SKILL.md +104 -0
- package/pack/generated/dsh/skills/rite-clarify/reference/anti-patterns.md +24 -0
- package/pack/generated/dsh/skills/rite-clarify/reference/decision-coverage.md +56 -0
- package/pack/generated/dsh/skills/rite-converge/SKILL.md +167 -0
- package/pack/generated/dsh/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/dsh/skills/rite-converge/reference/convergence-assessment.md +70 -0
- package/pack/generated/dsh/skills/rite-customize/SKILL.md +64 -0
- package/pack/generated/dsh/skills/rite-define/SKILL.md +203 -0
- package/pack/generated/dsh/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/dsh/skills/rite-define/reference/gates.md +160 -0
- package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +153 -0
- package/pack/generated/dsh/skills/rite-doctor/SKILL.md +107 -0
- package/pack/generated/dsh/skills/rite-dogfood/SKILL.md +57 -0
- package/pack/generated/dsh/skills/rite-explain/SKILL.md +154 -0
- package/pack/generated/dsh/skills/rite-explain/reference/intake.md +89 -0
- package/pack/generated/dsh/skills/rite-fast/SKILL.md +185 -0
- package/pack/generated/dsh/skills/rite-fast/reference/artifacts.md +107 -0
- package/pack/generated/dsh/skills/rite-fast/reference/check-and-triage.md +51 -0
- package/pack/generated/dsh/skills/rite-frame/SKILL.md +119 -0
- package/pack/generated/dsh/skills/rite-frame/reference/failure-modes.md +66 -0
- package/pack/generated/dsh/skills/rite-handoff/SKILL.md +117 -0
- package/pack/generated/dsh/skills/rite-handoff/reference/handoff-template.md +56 -0
- package/pack/generated/dsh/skills/rite-harness/SKILL.md +76 -0
- package/pack/generated/dsh/skills/rite-harness/reference/feature-map.md +60 -0
- package/pack/generated/dsh/skills/rite-learn/SKILL.md +107 -0
- package/pack/generated/dsh/skills/rite-plan/SKILL.md +215 -0
- package/pack/generated/dsh/skills/rite-plan/reference/anti-patterns.md +34 -0
- package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +48 -0
- package/pack/generated/dsh/skills/rite-plan/reference/replan-and-repair.md +114 -0
- package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +187 -0
- package/pack/generated/dsh/skills/rite-plan/reference/task-breakdown.md +50 -0
- package/pack/generated/dsh/skills/rite-polish/SKILL.md +128 -0
- package/pack/generated/dsh/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/generated/dsh/skills/rite-polish/reference/anti-ai-slop.md +210 -0
- package/pack/generated/dsh/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/dsh/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/dsh/skills/rite-polish/reference/browser-polish-evidence.md +33 -0
- package/pack/generated/dsh/skills/rite-polish/reference/code.md +87 -0
- package/pack/generated/dsh/skills/rite-polish/reference/design-memory.md +117 -0
- package/pack/generated/dsh/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/dsh/skills/rite-polish/reference/harden-checklist.md +110 -0
- package/pack/generated/dsh/skills/rite-polish/reference/ledger.md +67 -0
- package/pack/generated/dsh/skills/rite-polish/reference/ui.md +146 -0
- package/pack/generated/dsh/skills/rite-pov/SKILL.md +71 -0
- package/pack/generated/dsh/skills/rite-pr-feedback/SKILL.md +61 -0
- package/pack/generated/dsh/skills/rite-pressure-test/SKILL.md +76 -0
- package/pack/generated/dsh/skills/rite-prototype/SKILL.md +106 -0
- package/pack/generated/dsh/skills/rite-prove/SKILL.md +151 -0
- package/pack/generated/dsh/skills/rite-prove/reference/acceptance-proof.md +88 -0
- package/pack/generated/dsh/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/dsh/skills/rite-prove/reference/browser-proof.md +51 -0
- package/pack/generated/dsh/skills/rite-prove/reference/failure-triage.md +53 -0
- package/pack/generated/dsh/skills/rite-prove/reference/proof-ladder.md +39 -0
- package/pack/generated/dsh/skills/rite-prove/reference/test-command-discovery.md +36 -0
- package/pack/generated/dsh/skills/rite-quick/SKILL.md +97 -0
- package/pack/generated/dsh/skills/rite-resolve/SKILL.md +113 -0
- package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +129 -0
- package/pack/generated/dsh/skills/rite-review/SKILL.md +190 -0
- package/pack/generated/dsh/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/dsh/skills/rite-review/reference/cognitive-load.md +90 -0
- package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/dsh/skills/rite-review/reference/five-axis-review.md +66 -0
- package/pack/generated/dsh/skills/rite-review/reference/nielsen-heuristics.md +126 -0
- package/pack/generated/dsh/skills/rite-review/reference/performance-checklist.md +99 -0
- package/pack/generated/dsh/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/dsh/skills/rite-review/reference/security-review.md +44 -0
- package/pack/generated/dsh/skills/rite-seal/SKILL.md +99 -0
- package/pack/generated/dsh/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/dsh/skills/rite-seal/reference/final-evidence.md +41 -0
- package/pack/generated/dsh/skills/rite-seal/reference/go-no-go.md +32 -0
- package/pack/generated/dsh/skills/rite-seal/reference/output.md +5 -0
- package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +56 -0
- package/pack/generated/dsh/skills/rite-seal/reference/risk-and-rollback.md +56 -0
- package/pack/generated/dsh/skills/rite-seal/reference/seal-template.md +32 -0
- package/pack/generated/dsh/skills/rite-ship/SKILL.md +101 -0
- package/pack/generated/dsh/skills/rite-ship/reference/anti-patterns.md +28 -0
- package/pack/generated/dsh/skills/rite-ship/reference/close-out.md +69 -0
- package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +128 -0
- package/pack/generated/dsh/skills/rite-ship/reference/rollout.md +62 -0
- package/pack/generated/dsh/skills/rite-ship/reference/ship-template.md +40 -0
- package/pack/generated/dsh/skills/rite-spec/SKILL.md +169 -0
- package/pack/generated/dsh/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/dsh/skills/rite-spec/reference/ai-spec-template.md +40 -0
- package/pack/generated/dsh/skills/rite-spec/reference/anti-patterns.md +27 -0
- package/pack/generated/dsh/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/dsh/skills/rite-spec/reference/investigation.md +83 -0
- package/pack/generated/dsh/skills/rite-spec/reference/question-protocol.md +36 -0
- package/pack/generated/dsh/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/dsh/skills/rite-spec/reference/spec-checklists.md +89 -0
- package/pack/generated/dsh/skills/rite-spec/reference/spec-template.md +160 -0
- package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +240 -0
- package/pack/generated/dsh/skills/rite-status/SKILL.md +74 -0
- package/pack/generated/dsh/skills/rite-temper/SKILL.md +137 -0
- package/pack/generated/dsh/skills/rite-temper/reference/anti-patterns.md +30 -0
- package/pack/generated/dsh/skills/rite-temper/reference/review-dimensions.md +66 -0
- package/pack/generated/dsh/skills/rite-temper/reference/scope-modes.md +52 -0
- package/pack/generated/dsh/skills/rite-temper/reference/significance.md +55 -0
- package/pack/generated/dsh/skills/rite-temper/reference/strategy-template.md +101 -0
- package/pack/generated/dsh/skills/rite-upgrade/SKILL.md +142 -0
- package/pack/generated/dsh/skills/rite-vet/SKILL.md +242 -0
- package/pack/generated/dsh/skills/rite-vet/reference/anti-patterns.md +43 -0
- package/pack/generated/dsh/skills/rite-vet/reference/artifacts.md +248 -0
- package/pack/generated/dsh/skills/rite-vet/reference/cross-model.md +19 -0
- package/pack/generated/dsh/skills/rite-vet/reference/depth.md +59 -0
- package/pack/generated/dsh/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +210 -0
- package/pack/generated/dsh/skills/rite-watch-pr/SKILL.md +87 -0
- package/pack/generated/dsh/skills/rite-zoom-out/SKILL.md +76 -0
- package/package.json +3 -1
- package/scripts/build-host-artifacts.sh +6 -2
- package/scripts/dsh-generate.py +135 -0
- package/scripts/dsh-specialist.mjs +62 -0
- package/scripts/install-lib.sh +3 -1
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
# AFK & HITL: the pause/resume contract
|
|
2
|
+
|
|
3
|
+
> Root-only: not inlined in --role bundles.
|
|
4
|
+
|
|
5
|
+
> Applies when: any rite/devrites skill that can pause for a human or run unattended; irreversible-risk list, budgets, recovery accounting.
|
|
6
|
+
|
|
7
|
+
Two pause modes for `rite-*`/`devrites-*`, chiefly `/rite-build`, `/rite-status`,
|
|
8
|
+
`/rite-resolve`, `devrites-doubt`: one sentinel, queue, resume verb.
|
|
9
|
+
|
|
10
|
+
## Contents
|
|
11
|
+
|
|
12
|
+
- [Run modes](#run-modes)
|
|
13
|
+
- [The sentinel: `.devrites/AFK`](#the-sentinel-devritesafk)
|
|
14
|
+
- [Unattended resource envelope](#unattended-resource-envelope)
|
|
15
|
+
- [The four gates](#the-four-gates)
|
|
16
|
+
- [Option set: how every gap is presented](#option-set-how-every-gap-is-presented)
|
|
17
|
+
- [Decision ownership: search before asking](#decision-ownership-search-before-asking)
|
|
18
|
+
- [Irreversible-risk list (always pause)](#irreversible-risk-list-always-pause)
|
|
19
|
+
- [`questions.md` schema](#questionsmd-schema)
|
|
20
|
+
- [`state.md` `Awaiting human` block](#statemd-awaiting-human-block)
|
|
21
|
+
- [The resume verb: `/rite-resolve`](#the-resume-verb-riteresolve)
|
|
22
|
+
- [AFK exception for discretionary pauses](#afk-exception-for-discretionary-pauses)
|
|
23
|
+
- [Retry cap, no-progress loops, and self-resolve](#retry-cap-no-progress-loops-and-self-resolve)
|
|
24
|
+
- [What the rule does NOT cover](#what-the-rule-does-not-cover)
|
|
25
|
+
- [Cross-reference](#cross-reference)
|
|
26
|
+
|
|
27
|
+
## Run modes
|
|
28
|
+
|
|
29
|
+
- **HITL (default):** human is present. At a gap/checkpoint the skill **asks inline** via
|
|
30
|
+
the harness `ask_user_question` tool: a ranked **option set** (recommended first, each with
|
|
31
|
+
dimension-tagged rationale; see [Option set](#option-set-how-every-gap-is-presented)). The
|
|
32
|
+
human picks; the skill records the pick to `questions.md` (`answered`) + `decisions.md` and
|
|
33
|
+
**continues in place: no `/rite-resolve` round-trip**. `/rite-resolve` is only for answering
|
|
34
|
+
**async** (a pause that already stopped the session) or in **batch**.
|
|
35
|
+
**If the current surface has no interactive question tool** (Codex outside Plan mode:
|
|
36
|
+
`request_user_input` is Plan-mode-only.) Render the same option set as a plain numbered
|
|
37
|
+
list in chat and **end the turn**. The human's reply is the selection. Auto-picking an option
|
|
38
|
+
is **AFK's contract, gated by the `.devrites/AFK` sentinel**: a missing tool never
|
|
39
|
+
converts a HITL gap into a self-answered one.
|
|
40
|
+
- **AFK:** `.devrites/AFK` is present. For any gate AFK may auto-handle (severity in
|
|
41
|
+
`allow_gates`), the skill **auto-picks the recommended option** (option 1 of the set), records
|
|
42
|
+
it (`gate: advisory` + a `decisions.md` ADR), and continues unattended. Gates above the
|
|
43
|
+
ceiling (and every irreversible-risk item) pause and queue a `questions.md` entry for
|
|
44
|
+
`/rite-resolve`.
|
|
45
|
+
|
|
46
|
+
`.devrites/AFK` presence owns run mode; gate-deciding skills re-read it at decision
|
|
47
|
+
time. No `state.md` run-mode field can drift out of sync.
|
|
48
|
+
|
|
49
|
+
## The sentinel: `.devrites/AFK`
|
|
50
|
+
|
|
51
|
+
Presence = AFK active. The file body is optional YAML:
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
max_slices: 10 # whole-workspace writer budget; seeds state.md remaining count
|
|
55
|
+
max_agents: 32 # native agent dispatches in one host activation
|
|
56
|
+
max_minutes: 120 # min; /rite-autocomplete: not a ceiling
|
|
57
|
+
max_review_queue: 8 # unresolved review/gate items admitted before fan-out stops
|
|
58
|
+
# max_tokens: 200000 # optional stricter host-observed token cap
|
|
59
|
+
# max_cost_usd: 10 # optional stricter host-observed cost cap
|
|
60
|
+
notify: 'curl -fsS -m 10 -d "$DEVRITES_QID: $DEVRITES_QUESTION" ntfy.sh/my-topic' # shell command; examples: .dsh/skills/rite-build/reference/afk-discipline.md
|
|
61
|
+
allow_gates: [advisory, validating] # gate severities AFK auto-handles (auto-picks the recommended option)
|
|
62
|
+
continue_sequence: true # after Seal GO, open the next recorded continuation
|
|
63
|
+
max_workspaces: 5 # workspaces one armed sequence may open
|
|
64
|
+
max_parallel: 10 # unattended default cap; `--parallel N` on this invocation wins and may rewrite only this field
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The file is **read-only config**: never rewritten in place, except `/rite-autocomplete --parallel N` writes or replaces only `max_parallel: N`.
|
|
68
|
+
|
|
69
|
+
Outside active `/rite-autocomplete`, the following slice-budget rules apply:
|
|
70
|
+
`max_slices` seeds root-owned `state.md` cursor `afk_slices_remaining`
|
|
71
|
+
(released bullet alias: `AFK slices remaining: <n>`). Accept either spelling;
|
|
72
|
+
preserve table/bullet presentation. Before dispatch, require configured
|
|
73
|
+
`max_slices` and existing remaining values to be decimal nonnegative integers;
|
|
74
|
+
malformed or negative values fail closed. The pending → built state transition spends
|
|
75
|
+
exactly one slice: on the first green slice write `max_slices - 1`, otherwise
|
|
76
|
+
write `remaining - 1`, never below zero. Re-reading an already built slice does
|
|
77
|
+
not spend again. At zero, stop before the next dispatch.
|
|
78
|
+
|
|
79
|
+
A stricter post-planning budget may pre-seed `afk_slices_remaining` before first
|
|
80
|
+
dispatch, not rewrite the sentinel: use the minimum of pending work and all
|
|
81
|
+
configured/explicit caps. An existing counter may be lowered but never increased or reinitialized.
|
|
82
|
+
It remains effective even if the sentinel omits `max_slices`. Under active `/rite-autocomplete`, skip these slice-cap checks,
|
|
83
|
+
charges, zero stops, and minimum-cap seeding; use its
|
|
84
|
+
[post-Vet budget](../../../rite-autocomplete/reference/loop.md#derive-the-mutable-post-vet-budget).
|
|
85
|
+
|
|
86
|
+
### Sequence continuation (`continue_sequence`, `max_workspaces`)
|
|
87
|
+
|
|
88
|
+
`continue_sequence: true` opens the next **recorded** continuation after Seal GO.
|
|
89
|
+
Under `/rite-autocomplete`, absent means on, even in existing sentinels; `false` opts out.
|
|
90
|
+
`max_workspaces` (default 5): nonnegative decimal sequence budget, fail closed;
|
|
91
|
+
charge new workspaces only, never resumes. `max_slices`/`afk_slices_remaining` stay **per workspace** outside active
|
|
92
|
+
`/rite-autocomplete`, which uses its post-Vet pending count.
|
|
93
|
+
|
|
94
|
+
The chain lives in root-owned `state.md` cursor fields, not in chat:
|
|
95
|
+
`sequence_parent` (the immediately preceding workspace slug), `sequence_position`
|
|
96
|
+
(1-based ordinal), `sequence_workspaces_remaining` (slots the chain may still
|
|
97
|
+
open after this workspace), and — on the release milestone only —
|
|
98
|
+
`sequence_role: release`. Seed exactly once from the recorded parent and its counter at creation.
|
|
99
|
+
On resume, re-derive missing continuation fields from its `brief.md` parent/position
|
|
100
|
+
and parent counter — same values, never a second charge. No recorded parent/position means no sequence membership. Counter only decreases;
|
|
101
|
+
malformed values fail closed; `0` opens nothing.
|
|
102
|
+
`sequence_role: release` makes `check candidate` and `check seal` require the
|
|
103
|
+
candidate manifest to cover the whole recorded chain — run
|
|
104
|
+
`devrites-engine state merge-manifest <slug>` before Prove.
|
|
105
|
+
|
|
106
|
+
- Only continuations recorded in the parent's `decisions.md` sequence
|
|
107
|
+
([slicing.md § Continuation workspaces](../../../rite-plan/reference/slicing.md#continuation-workspaces))
|
|
108
|
+
qualify; no next entry or exhausted `max_workspaces` stops with that reason. The review-queue bound applies only outside active
|
|
109
|
+
`/rite-autocomplete`.
|
|
110
|
+
- Milestones are **not** shipped: they stay sealed and unarchived in `.devrites/work/`
|
|
111
|
+
with `Next step: /rite-ship` preserved. Local `WIP(<slug>):` checkpoints still
|
|
112
|
+
land ([checkpoint.md](../../../rite-build/reference/checkpoint.md)), so the tree
|
|
113
|
+
stays clean and crash-safe.
|
|
114
|
+
- Git stays human-gated. The release ship is one disclosed plan, one literal `GO`, and
|
|
115
|
+
one native approval; it collapses the sequence's `WIP` commits into the single
|
|
116
|
+
release commit and may archive the sealed predecessors.
|
|
117
|
+
- Human-owned, safety, access, and exhaustion stops remain. Active
|
|
118
|
+
`/rite-autocomplete` recovers agent-owned Seal `NO-GO` per
|
|
119
|
+
[stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md), not a handoff.
|
|
120
|
+
|
|
121
|
+
`max_parallel` is the unattended default batch cap only when this invocation does
|
|
122
|
+
not contain `--parallel N`; `1` forces the serial cycle only in that default
|
|
123
|
+
case. An exact `--parallel N` on `/rite-autocomplete` or `/rite-build` is the
|
|
124
|
+
batch cap for this run: do not consult leftover sentinel `max_parallel`, and do
|
|
125
|
+
not treat `max_parallel: 1` as serial. `/rite-autocomplete --parallel N` writes
|
|
126
|
+
or replaces only that field so later ticks keep the cap; `/rite-build --parallel N`
|
|
127
|
+
wins for that invocation without rewriting the sentinel. Never write `max_slices`
|
|
128
|
+
from `--max-slices`. **Failing case:** `/rite-autocomplete --parallel 5` honors a
|
|
129
|
+
leftover `max_parallel: 1` and stays serial.
|
|
130
|
+
Unattended runs take the largest eligible set ≤ that cap and recompute after
|
|
131
|
+
every completed round (serial slice or parallel integrate)
|
|
132
|
+
([parallel-batch.md § Dynamic selection and re-batching](../../../rite-build/reference/parallel-batch.md#dynamic-selection-and-re-batching)).
|
|
133
|
+
|
|
134
|
+
## Unattended resource envelope
|
|
135
|
+
|
|
136
|
+
Outside `/rite-autocomplete`, AFK writer admission needs a bounded input queue,
|
|
137
|
+
effective slice cap, and valid `max_agents`, `max_minutes`, and `max_review_queue`.
|
|
138
|
+
Existing sentinels that declare writer admission but miss/malform these fail closed
|
|
139
|
+
(Autocomplete's sentinel omits them as unlimited; see below); cold resume keeps the
|
|
140
|
+
state-owned slice counter. A leftover `expires_at` is ignored and never rewritten.
|
|
141
|
+
Read-only watchers use equivalent native caps from [`loop-operations.md`](loop-operations.md).
|
|
142
|
+
|
|
143
|
+
Outside active `/rite-autocomplete`, the following dispatch/queue limits apply:
|
|
144
|
+
`max_agents` counts every leaf in the native activation, including failures and
|
|
145
|
+
parallel branches; do not add dispatch telemetry to `.devrites/`. `max_review_queue`
|
|
146
|
+
counts open validating questions plus unresolved admitted Critical/Important findings.
|
|
147
|
+
Above it stop; at it run only reconciliation that reduces the queue.
|
|
148
|
+
|
|
149
|
+
Optional `max_tokens`/`max_cost_usd` lower native caps in all unattended modes; if declared but unobservable, stop.
|
|
150
|
+
`/rite-autocomplete` deliberately ignores `max_slices`, `max_agents`, `max_minutes` and
|
|
151
|
+
`max_review_queue` ([stop-conditions.md](../../../rite-autocomplete/reference/stop-conditions.md));
|
|
152
|
+
not ceilings there.
|
|
153
|
+
|
|
154
|
+
Numeric limits are nonnegative decimals. Before costly checks, fan-out, or writing,
|
|
155
|
+
run cheap readiness and reject overlap. Outside active `/rite-autocomplete`, count
|
|
156
|
+
queue and confirm agent/time headroom; under Autocomplete those ignored limits
|
|
157
|
+
never block admission. In both cases confirm declared token/cost and native safety
|
|
158
|
+
headroom; re-check after every result. Never start a call that can exceed an
|
|
159
|
+
applicable remaining limit. Agent/time/token/cost counters are per native activation and start fresh only
|
|
160
|
+
for a new activation. Slice/recovery state and review queue remain durable/recomputed across wakes.
|
|
161
|
+
Persist stops/checkpoints before notification.
|
|
162
|
+
|
|
163
|
+
New sentinels omit `expires_at` and notification/token/cost caps. Post-Vet pending
|
|
164
|
+
count may lower standalone slices. Never add missing defaults to existing files.
|
|
165
|
+
|
|
166
|
+
Delete the file to restore HITL on the next invocation.
|
|
167
|
+
|
|
168
|
+
## The four gates
|
|
169
|
+
|
|
170
|
+
Every `Mode: HITL` slice declares a `Gate:` and an `SLA:`. See
|
|
171
|
+
[`.dsh/skills/rite-define/reference/gates.md`](../../../rite-define/reference/gates.md)
|
|
172
|
+
for the full taxonomy. Summary:
|
|
173
|
+
|
|
174
|
+
| Gate | Stakes | Pause? | SLA | AFK auto-handle when in `allow_gates`? |
|
|
175
|
+
|---|---|---|---|---|
|
|
176
|
+
| advisory | low | no | none | yes (log + proceed) |
|
|
177
|
+
| validating | medium | async | 4h | yes (build + queue, no merge until resolved) |
|
|
178
|
+
| blocking | high | sync | 15m | **no** (always pauses) |
|
|
179
|
+
| escalating | novel pattern | sync to specialist | 24h | **no** (always pauses) |
|
|
180
|
+
|
|
181
|
+
`blocking` and `escalating` always pause for HITL and for AFK `/rite-build`,
|
|
182
|
+
regardless of `allow_gates`.
|
|
183
|
+
|
|
184
|
+
**Autocomplete exception.** While `/rite-autocomplete` is the controlling
|
|
185
|
+
caller, an open `gate: blocking` question that already carries a ranked
|
|
186
|
+
recommended option (`proposed:` or option 1 labelled `(Recommended)`) is not a
|
|
187
|
+
user handoff: the orchestrator auto-picks that option through
|
|
188
|
+
`devrites-engine state resolve` and continues, including internal Spec Drift
|
|
189
|
+
Guard when the answer changes ownership or acceptance. Escalating,
|
|
190
|
+
irreversible-risk, access, and blocking questions with no recommended option
|
|
191
|
+
still pause. Putting `blocking` in `allow_gates` does not replace this resolve
|
|
192
|
+
step: an unanswered blocking question still fails Seal.
|
|
193
|
+
|
|
194
|
+
An open `gate: validating` entry is **merge-blocking by definition**: at `/rite-seal` any
|
|
195
|
+
`questions.md` entry with `gate: validating` and `status: open` is a NO-GO, regardless of
|
|
196
|
+
its behavior impact. A slice marked `built (pending review)` is **not done** until that
|
|
197
|
+
validating gate resolves.
|
|
198
|
+
|
|
199
|
+
## Option set: how every gap is presented
|
|
200
|
+
|
|
201
|
+
Wherever a gap, checkpoint, or non-trivial decision surfaces (`/rite-spec`, `/rite-clarify`, `/rite-define`,
|
|
202
|
+
`/rite-build`, `/rite-temper`, `/rite-vet`, `devrites-doubt`, `devrites-interview`), present a
|
|
203
|
+
**ranked option set**, never a single bare guess:
|
|
204
|
+
|
|
205
|
+
- **2-4 concrete options**, the **recommended one first**, labelled `(Recommended)`.
|
|
206
|
+
- Each option has a **one-line, dimension-tagged rationale**: `logic · infra · business ·
|
|
207
|
+
architecture` (add `security` / `UX` / `risk` in scope) and trade-off.
|
|
208
|
+
- Always include an escape hatch (`Something else — describe it`).
|
|
209
|
+
- With more than four materially distinct choices, first ask a discriminating question or use
|
|
210
|
+
sequential packets, then obtain final confirmation. Materially distinct options MUST NOT
|
|
211
|
+
be silently dropped, merged, or preselected to fit the UI.
|
|
212
|
+
- Recommend for project conventions, stack, scale, and domain, not a generic default.
|
|
213
|
+
- **One visit per decision chain.** Ask the follow-ups an answer predictably triggers (a
|
|
214
|
+
dependency's lock lines, a rerun after a failed measurement) in the same entry or one
|
|
215
|
+
`--batch`; each link asked alone costs one human wait.
|
|
216
|
+
|
|
217
|
+
**HITL** renders the set via `ask_user_question`; the human's pick resolves the gate **in place**.
|
|
218
|
+
**AFK** auto-picks option 1 for gates it may auto-handle. Record the chosen option verbatim and
|
|
219
|
+
keep the **rejected options in `questions.md`**.
|
|
220
|
+
|
|
221
|
+
## Decision ownership: search before asking
|
|
222
|
+
|
|
223
|
+
First search live code, project/decision docs, and authoritative dependency sources;
|
|
224
|
+
make and record reversible implementation/test choices. Ask only human-owned
|
|
225
|
+
product, scope, acceptance, architecture-policy, irreversible-risk, or access/action choices.
|
|
226
|
+
|
|
227
|
+
Objective test/build/tool failure runs bounded `devrites-debug-recovery`; fix it, or escalate and
|
|
228
|
+
park it under the [retry contract](#retry-cap-no-progress-loops-and-self-resolve). Never ask
|
|
229
|
+
permission for another attempt, test, parser repair, or probe.
|
|
230
|
+
Close decisions at the earliest informed phase: product in spec, coverage in clarify,
|
|
231
|
+
scope/risk in temper, architecture/dependencies in define, and proof/toolchain in vet. Build
|
|
232
|
+
keeps only unavailable-pre-code or mandatory action-time checkpoints.
|
|
233
|
+
|
|
234
|
+
## Irreversible-risk list (always pause)
|
|
235
|
+
|
|
236
|
+
The following always invoke the checkpoint protocol, regardless of `Mode`, `Gate`, or
|
|
237
|
+
`allow_gates`:
|
|
238
|
+
|
|
239
|
+
- Destructive data migration (drop column, drop table, irreversible backfill).
|
|
240
|
+
- Auth / authz boundary change.
|
|
241
|
+
- Public API break (response shape, removed endpoint, changed status code semantics).
|
|
242
|
+
- External-service contract change.
|
|
243
|
+
- Filesystem destruction outside the workspace.
|
|
244
|
+
|
|
245
|
+
When a pause clears and you proceed with a destructive migration, a removal, or a
|
|
246
|
+
public-API break, take the **safe path** the gate stopped you for: expand→contract,
|
|
247
|
+
prove the old path unused before removing it, and a rollback for every destructive step
|
|
248
|
+
([`deprecation.md`](deprecation.md)). The gate requires the safe path; it does not
|
|
249
|
+
cancel the work.
|
|
250
|
+
|
|
251
|
+
A writer's overwrite or removal of a path outside the workspace that it created itself in
|
|
252
|
+
the same wave is not destruction. The root proves it with each path's birth time
|
|
253
|
+
(`stat -c %W`) at or after the wave's `started` time and the writer's ownership, records
|
|
254
|
+
that evidence, and continues without a question. Any path it cannot prove pauses as above.
|
|
255
|
+
|
|
256
|
+
By default, AFK widens what's *automatic*; it never widens what's *irreversible*.
|
|
257
|
+
|
|
258
|
+
Red checks remain hard non-advance build gates, but are not inherently irreversible or
|
|
259
|
+
human-owned; bounded recovery owns them.
|
|
260
|
+
|
|
261
|
+
## `questions.md` schema
|
|
262
|
+
|
|
263
|
+
Append-only. One entry per qid. Format:
|
|
264
|
+
|
|
265
|
+
```markdown
|
|
266
|
+
## q-YYYY-MM-DD-NNN
|
|
267
|
+
status: open | answered | dropped
|
|
268
|
+
slice: <slice id, e.g. 03-list-endpoint, or "spec" / "plan">
|
|
269
|
+
gate: advisory | validating | blocking | escalating
|
|
270
|
+
question: <one crisp sentence>
|
|
271
|
+
options: | # ranked option set; recommended FIRST (see "Option set")
|
|
272
|
+
1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
|
|
273
|
+
2. <alternative> — <dimension-tagged rationale + trade-off>
|
|
274
|
+
3. Something else — describe it
|
|
275
|
+
proposed: <the recommended option restated — the HITL default + the AFK auto-pick; omit with no (Recommended)>
|
|
276
|
+
raised_at: <full RFC 3339 timestamp, e.g. 2026-10-19T08:17:08Z>
|
|
277
|
+
answered_at: <iso, when status flips off "open">
|
|
278
|
+
answer: <chosen option (or human's verbatim reply / drop reason)>
|
|
279
|
+
answered_by: human # only when a human resolved it (`state resolve --human`)
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Rules:
|
|
283
|
+
- `NNN` is sequential per date: the next-available 3-digit integer.
|
|
284
|
+
- `state append` refuses a new open entry that breaks this schema (2-4 options plus the escape
|
|
285
|
+
hatch, `(Recommended)` only on option 1); length is advisory.
|
|
286
|
+
- `status: open` is the only state `/rite-resolve` can mutate; `answered` and `dropped`
|
|
287
|
+
are terminal.
|
|
288
|
+
- `answered_by: human` is written only by `state resolve --human`. HITL live picks and `/rite-resolve`
|
|
289
|
+
pass `--human`; an AFK or autocomplete run never does, and the writer removes any `answered_by:` line
|
|
290
|
+
(any indentation or case) from a qid it resolves without the flag. Only an unindented lowercase
|
|
291
|
+
`answered_by: human` line counts as human resolution.
|
|
292
|
+
- The file is the audit trail. Don't edit answered/dropped entries: open a new qid that
|
|
293
|
+
references the old one (`supersedes: q-...-OLD`) and resolve it.
|
|
294
|
+
|
|
295
|
+
AFK never authorizes destructive Git. The native host permission/sandbox
|
|
296
|
+
boundary owns any such request and requires explicit user approval.
|
|
297
|
+
|
|
298
|
+
## `state.md` `Awaiting human` block
|
|
299
|
+
|
|
300
|
+
When a HITL gate fires, `/rite-build` sets cursor `status` to `awaiting_human` and
|
|
301
|
+
`next_action` to `/rite-resolve <qid> "<answer>"` via `devrites-engine state set` (under AFK
|
|
302
|
+
it names questions the sentinel auto-picks: resolve those unless irreversible-risk), then writes the `Awaiting human` table
|
|
303
|
+
(`question_id`, `gate`, `blocking_slices`) owned by
|
|
304
|
+
[`state-workspace.md`](../../../rite-spec/reference/state-workspace.md#statemd-template) § state.md template.
|
|
305
|
+
The question text, `proposed` answer, and `raised_at` live in the `questions.md` entry.
|
|
306
|
+
Legacy `- Status:`/`- Next step:`/`- qid:` bullet keys are engine-accepted aliases, not
|
|
307
|
+
the authoring format.
|
|
308
|
+
|
|
309
|
+
`/rite-resolve` removes the block on success and sets cursor `status` to `running`.
|
|
310
|
+
|
|
311
|
+
## The resume verb: `/rite-resolve`
|
|
312
|
+
|
|
313
|
+
Three shapes:
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
/rite-resolve <qid> "<answer>"
|
|
317
|
+
/rite-resolve --drop <qid> ["<reason>"]
|
|
318
|
+
/rite-resolve --batch <plain-text-file>
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
`/rite-resolve` is the canonical writer for **async** resume: a gate that already paused and
|
|
322
|
+
stopped the session (an AFK blocking/escalating/irreversible queue, or a HITL pause the human
|
|
323
|
+
walked away from), plus `--batch`. In an **interactive HITL** session the skill resolves the
|
|
324
|
+
`ask_user_question` pick **in place** (the same `questions.md` `answered` write + `state.md`
|
|
325
|
+
clear), so you don't type `/rite-resolve` for gaps you answer live. Both paths flip
|
|
326
|
+
`status: open → answered` and clear `Awaiting human` through the **same `devrites-engine state resolve` writer**:
|
|
327
|
+
one source of truth, two entry points (live pick vs typed verb). Use the writer;
|
|
328
|
+
manual edits are never destructive-operation authority.
|
|
329
|
+
|
|
330
|
+
When `/rite-resolve` does resume a stopped session, the skill does **not** auto-run the next
|
|
331
|
+
`/rite-build`. The user types the next command explicitly so:
|
|
332
|
+
- A `/rite-plan repair` can land first if the answer changes scope.
|
|
333
|
+
- The user sees the workspace state before resuming.
|
|
334
|
+
- Each verb has one mutation; chaining is a hidden side-effect.
|
|
335
|
+
|
|
336
|
+
## AFK exception for discretionary pauses
|
|
337
|
+
|
|
338
|
+
With `.devrites/AFK`, apply decision ownership first. Accepted in-scope technical
|
|
339
|
+
corrections return to the caller for repair/verification; severity blocks acceptance,
|
|
340
|
+
not authorized repair. Never silently accept a defect or broaden existing approval.
|
|
341
|
+
|
|
342
|
+
Discretionary ceilings apply only to
|
|
343
|
+
human-owned trade-off/risk decisions; accepted technical corrections do not enter
|
|
344
|
+
these branches. Compare Suggestion/Nit/FYI→advisory, Important→validating,
|
|
345
|
+
Critical→blocking against advisory < validating < blocking < escalating:
|
|
346
|
+
|
|
347
|
+
- Within the slice's `Gate:` and `.devrites/AFK` `allow_gates`: record advisory in
|
|
348
|
+
`questions.md`, trade-off in `decisions.md`, proceed.
|
|
349
|
+
- Above ceiling, missing authority, or unapproved irreversible risk: record blocking
|
|
350
|
+
question, `Status: awaiting_human`, fire `notify:`, STOP.
|
|
351
|
+
|
|
352
|
+
Recovery uses only the [retry contract](#retry-cap-no-progress-loops-and-self-resolve).
|
|
353
|
+
|
|
354
|
+
## Retry cap, no-progress loops, and self-resolve
|
|
355
|
+
|
|
356
|
+
Owns all phase recovery, including Doubt/Vet/serial/parallel Build. Resource,
|
|
357
|
+
access, safety and irreversible-action boundaries independently stop work.
|
|
358
|
+
|
|
359
|
+
- **Fingerprint the failed invariant, not the review round.** Identify owning
|
|
360
|
+
invariant + defect mechanism + minimal reproduction/decisive failure signal.
|
|
361
|
+
DEC/DRIFT IDs, line numbers, wording and splitting one cause create no new budget.
|
|
362
|
+
- **Cap no-progress retries:** three no-progress attempts per exact causal fingerprint
|
|
363
|
+
and strategy across wright/recovery. Only a correction whose narrow recheck leaves that cause
|
|
364
|
+
open or reproduces its failure consumes an attempt.
|
|
365
|
+
Closing a prior finding with discriminating evidence is progress: resolve it,
|
|
366
|
+
do not charge. A new Critical or Important finding gets its own budget only for
|
|
367
|
+
a distinct evidenced cause. The same invariant with a different evidenced mechanism qualifies;
|
|
368
|
+
renaming/splitting an unchanged cause does not. Suggestion/Nit/FYI cannot extend
|
|
369
|
+
recovery. Initial discovery and expected test-first RED are not corrections;
|
|
370
|
+
total rounds, re-batches and distinct-finding counts never exhaust recovery.
|
|
371
|
+
Every 5 Build wright rounds on one slice, the next first needs a reslice review
|
|
372
|
+
([`wright-dispatch.md`](../../../rite-build/reference/wright-dispatch.md#run)).
|
|
373
|
+
- **Rechecks are scoped; late findings never reopen the round.** *Late* applies only
|
|
374
|
+
from a phase's **second** review pass (Vet 1b, Build's recheck after the first repair,
|
|
375
|
+
Review step 7); an initial pass has no late findings and every supported finding is
|
|
376
|
+
folded normally. A recheck packet
|
|
377
|
+
names the open fingerprints, the correction diff, and the dependents of each
|
|
378
|
+
changed clause/hunk; the owning reviewer's verdict covers exactly that. A finding
|
|
379
|
+
on text/code unchanged since that role's previous pass is *late*: Critical with a
|
|
380
|
+
concrete failure path → new fingerprint under this budget; otherwise recorded
|
|
381
|
+
(Plan/Vet: `eng-review.md` `## Deferred findings`; Build: `touched-files.md`
|
|
382
|
+
`## Review trail`) with severity · site · role · kind · round, and consumed by the
|
|
383
|
+
next full-inventory gate (Vet `mechanism` → one `test-plan.md` proof row; Build →
|
|
384
|
+
the `/rite-review` roster) — never by another repair round in this phase. Review
|
|
385
|
+
closes every deferred row with a labeled verdict; Seal blocks on any without one.
|
|
386
|
+
A Vet write-set closure row (plan-reviewer dimension 6) is never late: it names
|
|
387
|
+
an unbuilt slice's missing path and folds in this phase's one Plan repair, since
|
|
388
|
+
deferring it only reopens Plan at that slice's Build entry.
|
|
389
|
+
**Failing case:** round 4 finds three Important items on clauses untouched since
|
|
390
|
+
round 1 and dispatches another repair.
|
|
391
|
+
- **Recovery findings need a discriminator; recovery scope stays frozen.** While a
|
|
392
|
+
fingerprint is in recovery, a new Important finding keeps it open or opens another
|
|
393
|
+
only with an executed reproduction or a quoted AC/INV/PROH/accepted-DEC line whose
|
|
394
|
+
observable outcome fails; root turns it into a control the next wright must pass.
|
|
395
|
+
A static counterexample against plan-invented hardening goes to the Review trail or
|
|
396
|
+
`## Deferred findings` (Review gives it a verdict; Seal blocks without one). A
|
|
397
|
+
Critical with a concrete failure path always opens a fingerprint. A correction adds
|
|
398
|
+
no proof site or mechanism its fingerprint's closure does not need. No reviewer is skipped.
|
|
399
|
+
- **Separate consumptive authority from recovery.** Spent one-shot authorization
|
|
400
|
+
blocks another execution, not offline recovery. Retained evidence starts caller-owned
|
|
401
|
+
diagnosis/correction immediately; the next consumptive execution needs fresh authority.
|
|
402
|
+
- **Persist existing records.** Put fingerprint, reproduction, correction,
|
|
403
|
+
`progress: resolved|no-progress` and decisive result in `drift.md` and `evidence.md`.
|
|
404
|
+
Cold resume derives counts there; no new counter file/command.
|
|
405
|
+
- **Reconcile terminal cursors.** Retained distinct Critical/Important evidence below
|
|
406
|
+
cap resumes despite stale `Next step: none`; age/spent action authority is not exhaustion.
|
|
407
|
+
<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"unattended root reaches current admitted Workflow Artifact work","action":"invoke classifier; execute returned route without wright/slice charge","return":"saved lifecycle phase/action; no intermediate reply"} -->
|
|
408
|
+
- **Escalate a spent strategy; never stop on it.** Three no-progress attempts spend
|
|
409
|
+
the fingerprint's current *strategy*, not the work. Record that strategy and its
|
|
410
|
+
attempts under `## Dead ends`, then the controlling caller escalates inline in the
|
|
411
|
+
same invocation: re-diagnose from the reproduction and dead ends, take the first
|
|
412
|
+
class below that still has an untried strategy, and resume with a fresh
|
|
413
|
+
three-attempt budget. Re-plan only when the strategy must change a planning
|
|
414
|
+
input (writer allowlist, interface or contract, slice topology, or a
|
|
415
|
+
`test-plan.md` proof row): run `/rite-plan repair` plus narrow Vet for it. A
|
|
416
|
+
strategy that fits the vetted plan, with `devrites-engine check readiness <slug>`
|
|
417
|
+
still passing, goes straight to the wright with the dead ends in its contract;
|
|
418
|
+
Build's review and proof still gate it. Classes, in order, cheapest evidence
|
|
419
|
+
before costliest change: (1) **shared root cause**: fix the owner every failing
|
|
420
|
+
path routes through and enforce it across all callers instead of another local
|
|
421
|
+
guard; (2) **diagnostic amplification**: add discriminating probes or fixtures,
|
|
422
|
+
then correct from that evidence (last for a consumptive action, whose attempt
|
|
423
|
+
needs fresh authorization); (3) **boundary redesign**: acceptance-preserving
|
|
424
|
+
reslice or redesign of the failing seam, built on that evidence. A recorded strategy, or a rewording of one, never
|
|
425
|
+
repeats. Escalation never weakens tests, validators or acceptance. Each
|
|
426
|
+
fingerprint gets at most three escalations per activation; record each in
|
|
427
|
+
`drift.md` with its class and strategy.
|
|
428
|
+
- **Park, finish the rest, then stop once.** Human-owned contract/risk/access gaps
|
|
429
|
+
open their gate. Otherwise, with every escalation spent, mark the fingerprint
|
|
430
|
+
`parked` in `drift.md`, keep its reproduction and dead ends, and continue every
|
|
431
|
+
step that does not depend on it. Only when nothing runnable remains, set
|
|
432
|
+
`Status: blocked` and
|
|
433
|
+
`Next step: <invoking command> — technical recovery parked; reinvoke to reopen with fresh escalation`.
|
|
434
|
+
Emit no retry-permission question or `/rite-resolve`. A genuinely new
|
|
435
|
+
user-issued activation appends `reopened: <date>` to each parked fingerprint and
|
|
436
|
+
grants it three fresh escalations, counted from that line; wakes, compaction and
|
|
437
|
+
nested re-entry of the same run never reset counts.
|
|
438
|
+
- **Resolve agent-owned questions first** from code/docs/decisions. Human communication
|
|
439
|
+
is for blocked environment, handover, inaccessible critical information or missing
|
|
440
|
+
credentials/permission—not writing, testing or review. Blocking/escalating/
|
|
441
|
+
irreversible gates remain.
|
|
442
|
+
|
|
443
|
+
## What the rule does NOT cover
|
|
444
|
+
|
|
445
|
+
This contract is about **human pauses**. It does not weaken or replace:
|
|
446
|
+
|
|
447
|
+
- `/rite-prove`, `/rite-review`, `/rite-seal`: feature-scoped gates that always run.
|
|
448
|
+
- Spec Drift Guard: answer that changes acceptance criteria routes through
|
|
449
|
+
`/rite-plan repair`, not silently into the slice.
|
|
450
|
+
- `evidence.md` writes: every AFK iteration still records evidence; un-recorded passes
|
|
451
|
+
are unproven at `/rite-prove`.
|
|
452
|
+
- `/clear` / `/compact` advice: context-hygiene rules are unchanged.
|
|
453
|
+
|
|
454
|
+
AFK changes which decisions are automatic. It changes nothing else.
|
|
455
|
+
|
|
456
|
+
## Cross-reference
|
|
457
|
+
|
|
458
|
+
- Skill: `/rite-resolve` (`.dsh/skills/rite-resolve/SKILL.md`).
|
|
459
|
+
- Workflow integration: `/rite-build` (`.dsh/skills/rite-build/SKILL.md`),
|
|
460
|
+
the readiness / HITL pre-flight stages before dispatch, and the DOUBT → PROVE
|
|
461
|
+
(fail-on-red) → RECORD stages on the wright's return
|
|
462
|
+
([`one-slice-cycle.md`](../../../rite-build/reference/one-slice-cycle.md)).
|
|
463
|
+
- Render contract: `.dsh/skills/rite-build/reference/checkpoint-protocol.md`.
|
|
464
|
+
- Loop discipline: `.dsh/skills/rite-build/reference/afk-discipline.md`.
|
|
465
|
+
- Gate taxonomy: `.dsh/skills/rite-define/reference/gates.md`.
|
|
466
|
+
- Schema: `.dsh/skills/rite-spec/reference/state-workspace.md`.
|
|
467
|
+
- Doubt's AFK exception: `.dsh/skills/devrites-doubt/SKILL.md` (AFK exception section).
|