devrites 3.0.7 → 3.1.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 +12 -0
- package/README.md +67 -47
- package/SECURITY.md +31 -29
- package/docs/adr/0001-go-engine-as-control-plane.md +1 -1
- package/docs/adr/0002-dual-host-harness.md +1 -1
- package/docs/adr/0004-state-schema-phases-sections.md +1 -2
- package/docs/adr/0006-clock-seam-and-engine-ci-gates.md +3 -4
- package/docs/adr/0009-prebuild-decision-coverage-and-readiness.md +67 -0
- package/docs/adr/0010-agent-first-fresh-context-orchestration.md +71 -0
- package/docs/adr/0011-define-plan-transition-rights.md +28 -0
- package/docs/adr/README.md +3 -0
- package/docs/agents/triage-labels.md +7 -7
- package/docs/architecture.md +157 -140
- package/docs/cli.md +41 -12
- package/docs/command-map.md +49 -35
- package/docs/engine/agent-contract.md +92 -15
- package/docs/engine/commands.md +242 -72
- package/docs/engine/state-schema.md +52 -23
- package/docs/engine/workspace-schema.md +94 -15
- package/docs/extensions.md +1 -1
- package/docs/flow.md +80 -50
- package/docs/harness-compliance.md +29 -5
- package/docs/orchestration.md +107 -79
- package/docs/quick-reference.md +7 -3
- package/docs/release.md +4 -3
- package/docs/skills.md +64 -38
- package/docs/usage.md +57 -38
- package/engine/cmd/releasepack/main.go +219 -0
- package/engine/cmd/releasepack/main_test.go +170 -0
- package/engine/commands.go +170 -23
- package/engine/git_guard.go +187 -0
- package/engine/git_guard_test.go +283 -0
- package/engine/hookpolicy.go +53 -55
- package/engine/hookpolicy_test.go +91 -1
- package/engine/hooks.go +296 -75
- package/engine/hooks_events_test.go +276 -6
- package/engine/hooks_workspace.go +640 -159
- package/engine/internal/devritespaths/paths.go +65 -10
- package/engine/internal/devritespaths/paths_test.go +110 -0
- package/engine/internal/doctor/doctor.go +153 -23
- package/engine/internal/doctor/doctor_test.go +74 -0
- package/engine/internal/forge/forge.go +940 -0
- package/engine/internal/forge/forge_test.go +576 -0
- package/engine/internal/forge/git.go +245 -0
- package/engine/internal/forge/liveness_unix.go +48 -0
- package/engine/internal/forge/liveness_windows.go +67 -0
- package/engine/internal/forge/manifest.go +402 -0
- package/engine/internal/gate/gate.go +90 -71
- package/engine/internal/gate/gate_test.go +71 -2
- package/engine/internal/harness/compliance.go +18 -24
- package/engine/internal/harness/harness.go +37 -44
- package/engine/internal/harness/harness_test.go +21 -5
- package/engine/internal/install/install.go +486 -38
- package/engine/internal/install/install_test.go +383 -10
- package/engine/internal/iohooks/iohooks.go +350 -59
- package/engine/internal/iohooks/iohooks_test.go +421 -1
- package/engine/internal/lib/buildreadiness.go +35 -18
- package/engine/internal/lib/clarifyreturn.go +91 -0
- package/engine/internal/lib/clarifyreturn_test.go +123 -0
- package/engine/internal/lib/context.go +54 -15
- package/engine/internal/lib/cursor_compat_test.go +8 -0
- package/engine/internal/lib/extensions.go +2 -3
- package/engine/internal/lib/gitauthority.go +601 -0
- package/engine/internal/lib/gitauthority_test.go +346 -0
- package/engine/internal/lib/jsonout.go +25 -11
- package/engine/internal/lib/jsonout_test.go +16 -0
- package/engine/internal/lib/lanes.go +14 -8
- package/engine/internal/lib/observability_test.go +358 -0
- package/engine/internal/lib/packageexistence.go +151 -35
- package/engine/internal/lib/packageexistence_test.go +163 -0
- package/engine/internal/lib/progress.go +11 -9
- package/engine/internal/lib/provenance.go +462 -0
- package/engine/internal/lib/provenance_test.go +154 -0
- package/engine/internal/lib/readiness_contract.json +111 -0
- package/engine/internal/lib/readinessartifact.go +510 -0
- package/engine/internal/lib/readinessartifact_test.go +321 -0
- package/engine/internal/lib/reconcile.go +712 -88
- package/engine/internal/lib/reconcile_test.go +335 -16
- package/engine/internal/lib/recoveryattempts.go +298 -0
- package/engine/internal/lib/recoveryattempts_test.go +215 -0
- package/engine/internal/lib/resolve.go +23 -19
- package/engine/internal/lib/runbook_context_test.go +20 -0
- package/engine/internal/lib/session.go +701 -9
- package/engine/internal/lib/session_test.go +80 -13
- package/engine/internal/lib/testintegrity.go +33 -37
- package/engine/internal/lib/testintegrity_test.go +63 -1
- package/engine/internal/migrate/migrate.go +81 -1
- package/engine/internal/migrate/migrate_test.go +22 -1
- package/engine/internal/reason/reason.go +180 -0
- package/engine/internal/reason/reason_test.go +35 -0
- package/engine/internal/rootfacts/facts.go +466 -0
- package/engine/internal/rootfacts/facts_test.go +306 -0
- package/engine/internal/safepath/safepath.go +55 -0
- package/engine/internal/safepath/safepath_test.go +69 -0
- package/engine/internal/safepath/safepath_windows_test.go +26 -0
- package/engine/internal/state/clarify_transition.go +165 -0
- package/engine/internal/state/clarify_transition_test.go +130 -0
- package/engine/internal/state/cmd/workflowmanifest/main.go +12 -8
- package/engine/internal/state/cursor.go +58 -0
- package/engine/internal/state/cursor_test.go +42 -1
- package/engine/internal/state/feature.go +35 -48
- package/engine/internal/state/schema.go +90 -37
- package/engine/internal/state/snapshot.go +18 -2
- package/engine/internal/state/state_test.go +187 -7
- package/engine/internal/state/status.go +48 -11
- package/engine/internal/state/workflow_manifest.json +231 -50
- package/engine/internal/toolpolicy/classifier.go +533 -0
- package/engine/internal/toolpolicy/classifier_test.go +424 -0
- package/engine/internal/toolpolicy/git.go +616 -0
- package/engine/internal/toolpolicy/scanner.go +382 -0
- package/engine/main.go +160 -77
- package/engine/observability_cli_test.go +52 -0
- package/engine/root_routing_test.go +277 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +1 -0
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
- package/engine/tests/adr_0011_define_plan_test.go +30 -0
- package/engine/tests/budget_test.go +19 -8
- package/engine/tests/concurrency_cli_test.go +7 -1
- package/engine/tests/doctor_cli_test.go +148 -2
- package/engine/tests/forge_cli_test.go +463 -0
- package/engine/tests/gate_test.go +63 -8
- package/engine/tests/hook_test.go +260 -8
- package/engine/tests/hooks_io_test.go +94 -3
- package/engine/tests/json_contract_test.go +127 -2
- package/engine/tests/migrate_cli_test.go +2 -2
- package/engine/tests/parity_buildreadiness_test.go +141 -10
- package/engine/tests/parity_learnings_test.go +16 -17
- package/engine/tests/parity_reconcile_test.go +20 -17
- package/engine/tests/parity_resolve_test.go +12 -11
- package/engine/tests/parity_test.go +21 -17
- package/pack/.claude/agents/devrites-code-reviewer.md +62 -48
- package/pack/.claude/agents/devrites-devex-reviewer.md +69 -53
- package/pack/.claude/agents/devrites-doubt-reviewer.md +29 -22
- package/pack/.claude/agents/devrites-evidence-scout.md +69 -0
- package/pack/.claude/agents/devrites-forge-judge.md +74 -61
- package/pack/.claude/agents/devrites-frontend-reviewer.md +48 -39
- package/pack/.claude/agents/devrites-performance-reviewer.md +49 -40
- package/pack/.claude/agents/devrites-plan-drafter.md +71 -0
- package/pack/.claude/agents/devrites-plan-reviewer.md +80 -47
- package/pack/.claude/agents/devrites-proof-runner.md +74 -0
- package/pack/.claude/agents/devrites-retrospector.md +48 -45
- package/pack/.claude/agents/devrites-security-auditor.md +46 -36
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +50 -46
- package/pack/.claude/agents/devrites-slice-wright.md +153 -165
- package/pack/.claude/agents/devrites-spec-reviewer.md +34 -32
- package/pack/.claude/agents/devrites-strategy-reviewer.md +63 -34
- package/pack/.claude/agents/devrites-test-analyst.md +40 -30
- package/pack/.claude/settings.json +2 -1
- package/pack/.claude/skills/devrites-audit/SKILL.md +40 -61
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +24 -13
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/.claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/.claude/skills/devrites-doubt/SKILL.md +25 -17
- package/pack/.claude/skills/devrites-interview/SKILL.md +53 -52
- package/pack/.claude/skills/devrites-lib/SKILL.md +11 -9
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +3 -2
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +198 -190
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +23 -10
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/.claude/skills/rite/SKILL.md +8 -6
- package/pack/.claude/skills/rite/reference/menu.md +8 -6
- package/pack/.claude/skills/rite-adopt/SKILL.md +33 -37
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +33 -28
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/.claude/skills/rite-build/SKILL.md +35 -30
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +38 -38
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/.claude/skills/rite-build/reference/forge.md +186 -156
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/.claude/skills/rite-clarify/SKILL.md +89 -0
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +59 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/.claude/skills/rite-define/SKILL.md +57 -32
- package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/.claude/skills/rite-define/reference/plan-template.md +16 -8
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +44 -16
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -0
- package/pack/.claude/skills/rite-polish/SKILL.md +27 -23
- package/pack/.claude/skills/rite-prototype/SKILL.md +25 -26
- package/pack/.claude/skills/rite-prove/SKILL.md +27 -17
- package/pack/.claude/skills/rite-resolve/SKILL.md +12 -11
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/.claude/skills/rite-review/SKILL.md +37 -28
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/.claude/skills/rite-spec/SKILL.md +84 -135
- package/pack/.claude/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/.claude/skills/rite-temper/SKILL.md +62 -47
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/.claude/skills/rite-vet/SKILL.md +110 -113
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +42 -9
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +39 -37
- package/pack/generated/claude/agents/devrites-code-reviewer.md +62 -48
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +69 -53
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +29 -22
- package/pack/generated/claude/agents/devrites-evidence-scout.md +69 -0
- package/pack/generated/claude/agents/devrites-forge-judge.md +74 -61
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +48 -39
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +49 -40
- package/pack/generated/claude/agents/devrites-plan-drafter.md +71 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +80 -47
- package/pack/generated/claude/agents/devrites-proof-runner.md +74 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +48 -45
- package/pack/generated/claude/agents/devrites-security-auditor.md +46 -36
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +50 -46
- package/pack/generated/claude/agents/devrites-slice-wright.md +153 -165
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +34 -32
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +63 -34
- package/pack/generated/claude/agents/devrites-test-analyst.md +40 -30
- package/pack/generated/claude/settings.json +2 -1
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +40 -61
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +24 -13
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +25 -17
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +53 -52
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +11 -9
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +3 -2
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +198 -190
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +23 -10
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/generated/claude/skills/rite/SKILL.md +8 -6
- package/pack/generated/claude/skills/rite/reference/menu.md +8 -6
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +33 -37
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +33 -28
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/generated/claude/skills/rite-build/SKILL.md +35 -30
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +38 -38
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/generated/claude/skills/rite-build/reference/forge.md +186 -156
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +89 -0
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +59 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/generated/claude/skills/rite-define/SKILL.md +57 -32
- package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +16 -8
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/claude/skills/rite-plan/SKILL.md +44 -16
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +27 -23
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +25 -26
- package/pack/generated/claude/skills/rite-prove/SKILL.md +27 -17
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +12 -11
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +37 -28
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/generated/claude/skills/rite-spec/SKILL.md +84 -135
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/generated/claude/skills/rite-temper/SKILL.md +62 -47
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/generated/claude/skills/rite-vet/SKILL.md +110 -113
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +42 -9
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +39 -37
- package/pack/generated/codex/AGENTS.md +5 -2
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +69 -47
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +75 -51
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +35 -20
- package/pack/generated/codex/agents/devrites-evidence-scout.toml +75 -0
- package/pack/generated/codex/agents/devrites-forge-judge.toml +80 -59
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +54 -37
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +55 -38
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +77 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +82 -47
- package/pack/generated/codex/agents/devrites-proof-runner.toml +80 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +54 -43
- package/pack/generated/codex/agents/devrites-security-auditor.toml +53 -35
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +56 -44
- package/pack/generated/codex/agents/devrites-slice-wright.toml +159 -163
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +40 -30
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +65 -34
- package/pack/generated/codex/agents/devrites-test-analyst.toml +46 -28
- package/pack/generated/codex/hooks.json +4 -14
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +47 -64
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +31 -16
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +32 -20
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +60 -55
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +18 -12
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +3 -2
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +198 -190
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +23 -10
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +29 -24
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite/SKILL.md +19 -13
- package/pack/generated/codex/skills/rite/reference/menu.md +8 -6
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +40 -40
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +40 -31
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/generated/codex/skills/rite-build/SKILL.md +42 -33
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +38 -38
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/generated/codex/skills/rite-build/reference/forge.md +186 -156
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +105 -0
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +59 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +42 -28
- package/pack/generated/codex/skills/rite-customize/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-define/SKILL.md +64 -35
- package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +16 -8
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-explain/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-frame/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-learn/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-plan/SKILL.md +51 -19
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +5 -1
- package/pack/generated/codex/skills/rite-polish/SKILL.md +34 -26
- package/pack/generated/codex/skills/rite-pov/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +32 -29
- package/pack/generated/codex/skills/rite-prove/SKILL.md +34 -20
- package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +19 -14
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +44 -31
- package/pack/generated/codex/skills/rite-seal/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/generated/codex/skills/rite-spec/SKILL.md +91 -138
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/generated/codex/skills/rite-status/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-temper/SKILL.md +69 -50
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/generated/codex/skills/rite-vet/SKILL.md +117 -116
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +42 -9
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +40 -38
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +7 -3
- package/package.json +1 -1
- package/scripts/build-release-tarball.sh +32 -15
- package/scripts/check-authority-drift.py +125 -0
- package/scripts/check-instruction-size-baseline.mjs +19 -11
- package/scripts/check-invocation-integrity.py +2 -0
- package/scripts/codex-generate.sh +69 -33
- package/scripts/grade-feature.sh +121 -40
- package/scripts/live-hosts/agent-result.schema.json +230 -0
- package/scripts/live-hosts/claude.sh +87 -0
- package/scripts/live-hosts/codex.sh +81 -0
- package/scripts/live-hosts/common.sh +113 -0
- package/scripts/live-hosts/fake-host.py +264 -0
- package/scripts/live-hosts/host-transport.py +287 -0
- package/scripts/release-check.sh +5 -1
- package/scripts/run-agent-contract-evals.py +1380 -0
- package/scripts/run-behavioral-evals.sh +24 -30
- package/scripts/run-evals.sh +1 -5
- package/scripts/run-live-behavioral-evals.py +1274 -144
- package/scripts/run-outcome-evals.sh +414 -88
- package/scripts/run-tests.mjs +30 -2
- package/scripts/skills-inventory.mjs +1 -1
- package/scripts/validate-workflow-security.py +39 -20
- package/scripts/validate-workspace-schema.py +362 -10
- package/scripts/validate.sh +21 -15
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +0 -1
- /package/engine/testdata/golden/{TestParityReconcile/check-no-claimed.golden → TestParityBuildReadiness/arg=clarifyopen.golden} +0 -0
package/docs/architecture.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# DevRites architecture
|
|
2
2
|
|
|
3
|
-
DevRites
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
DevRites combines project-local Claude Code and Codex skills with one Go control
|
|
4
|
+
plane. It gives AI coding agents a defined engineering process: frame → spec →
|
|
5
|
+
mandatory adaptive clarify → optional temper → define → mandatory vet → build
|
|
6
|
+
one verified slice → prove with evidence → polish → review → seal → ship.
|
|
7
|
+
`converge` is the recovery state for bringing live code and recorded intent
|
|
8
|
+
back into agreement.
|
|
9
9
|
|
|
10
10
|
For the `.devrites/` load order, file budgets, artifact schema, aliases,
|
|
11
11
|
traceability rules, and phase-relative completeness model, see
|
|
@@ -15,60 +15,56 @@ traceability rules, and phase-relative completeness model, see
|
|
|
15
15
|
|
|
16
16
|
1. **Public lifecycle and workspace skills**: `.claude/skills/rite-*`,
|
|
17
17
|
`user-invocable: true`. Each owns one bounded phase or workspace transition.
|
|
18
|
-
Sequence: `rite-spec`, optional `rite-temper`, `rite-define`, mandatory
|
|
18
|
+
Sequence: `rite-spec`, mandatory adaptive `rite-clarify`, optional `rite-temper`, `rite-define`, mandatory
|
|
19
19
|
`rite-vet`, `rite-build`, recovery `rite-converge`, `rite-prove`,
|
|
20
|
-
`rite-polish`, `rite-review`, `rite-seal`, `rite-ship
|
|
21
|
-
or reslices an active plan
|
|
22
|
-
|
|
23
|
-
`
|
|
24
|
-
the public utility layer below.
|
|
20
|
+
`rite-polish`, `rite-review`, `rite-seal`, and `rite-ship`. `rite-plan`
|
|
21
|
+
repairs or reslices an active plan. The resume verb `rite-resolve` answers a
|
|
22
|
+
HITL gate and clears `Awaiting human`. The thin `/rite` menu and read-only
|
|
23
|
+
`rite-status` live in the public utility layer below.
|
|
25
24
|
`/rite-seal` **decides** GO/NO-GO and writes the verdict to `seal.md`;
|
|
26
|
-
`/rite-ship` is the
|
|
27
|
-
irreversible git ladder and **closes** the task
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
`/rite-ship` is the final core lifecycle rite that **executes** the
|
|
26
|
+
irreversible git ladder and **closes** the task by archiving the workspace
|
|
27
|
+
and clearing `ACTIVE`. Separate steps let users audit the release decision
|
|
28
|
+
before any irreversible action.
|
|
30
29
|
2. **Public utility and on-ramp skills**: `rite-adopt`, `rite-quick`,
|
|
31
30
|
`rite-frame`, `rite-status`, `rite-doctor`, `rite-learn`, `rite-explain`,
|
|
32
31
|
`rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
|
|
33
32
|
`rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
|
|
34
33
|
`rite-autocomplete`. These are public commands. `rite-autocomplete` is the
|
|
35
|
-
unattended orchestrator
|
|
36
|
-
ship)
|
|
37
|
-
|
|
38
|
-
`devrites-` prefix
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
doesn't collide.
|
|
34
|
+
unattended orchestrator. It drives the whole lifecycle (spec → … → seal →
|
|
35
|
+
ship), chooses the recommended option at each soft gate, and pauses only for
|
|
36
|
+
hard irreversible-risk, blocking, or escalating gates, or a NO-GO. The
|
|
37
|
+
`devrites-` prefix prevents collisions with bundled Claude Code skill names
|
|
38
|
+
such as `prototype`, `handoff`, `triage`, and `diagnose`; it does not mark
|
|
39
|
+
visibility. `rite-pressure-test` needs no prefix because it does not collide.
|
|
42
40
|
3. **Internal specialist skills**: `.claude/skills/devrites-*` with
|
|
43
41
|
`user-invocable: false`: `devrites-interview`, `-source-driven`,
|
|
44
42
|
`-doubt`, `-ux-shape` (plans UX/UI into `design-brief.md` at `/rite-spec`),
|
|
45
43
|
`-frontend-craft`, `-browser-proof`, `-debug-recovery`,
|
|
46
44
|
`-api-interface`, `-audit` (dispatches the security / perf / simplify
|
|
47
|
-
reviewer
|
|
48
|
-
`-refresh-indexes`.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
prefix.
|
|
45
|
+
fresh-context reviewer on an axis argument), `-prose-craft`, and
|
|
46
|
+
`-refresh-indexes`. Public skills or host auto-selection invoke these 11
|
|
47
|
+
specialists. They do not appear in the menu. The `user-invocable:` flag,
|
|
48
|
+
rather than the name prefix, determines whether a skill is public.
|
|
52
49
|
|
|
53
50
|
Engineering rules live at `.claude/skills/devrites-lib/reference/standards/`.
|
|
54
|
-
Workspace-operating lifecycle rites load `core.md` first and
|
|
55
|
-
files on demand
|
|
51
|
+
Workspace-operating lifecycle rites load `core.md` first and read
|
|
52
|
+
phase-specific files on demand. Compact utilities keep a narrower local
|
|
53
|
+
contract. Parallel
|
|
56
54
|
reviewer fan-out at `/rite-seal` is the shared reference file
|
|
57
55
|
`devrites-lib/reference/parallel-dispatch.md`, not a skill.
|
|
58
56
|
4. **Supporting references**: `reference/*.md` inside each skill. Long checklists,
|
|
59
57
|
templates, and anti-rationalization tables loaded on demand (progressive
|
|
60
58
|
disclosure) so `SKILL.md` bodies stay small.
|
|
61
|
-
5. **Agents**: `.claude/agents/devrites-*`
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
dispatched by `/rite-build` to write one slice in a clean context (the write-side mirror of
|
|
71
|
-
the reviewers).
|
|
59
|
+
5. **Agents**: `.claude/agents/devrites-*` contains **17 flat depth-one roles**:
|
|
60
|
+
16 read-only leaves and the sole source/test writer,
|
|
61
|
+
`devrites-slice-wright`. The read-only set includes three bounded work
|
|
62
|
+
leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
|
|
63
|
+
`devrites-proof-runner`) plus the existing reviewers, auditors, judge, and
|
|
64
|
+
retrospector. Public rites remain authoritative: leaves return typed
|
|
65
|
+
evidence, never ask the human, change phase, or write canonical
|
|
66
|
+
`.devrites/**` state. See [`orchestration.md`](orchestration.md) for the
|
|
67
|
+
dispatch, fallback, identity, and reconciliation contract.
|
|
72
68
|
6. **Engineering rules**: DevRites' own stack-agnostic rules installed to
|
|
73
69
|
`.claude/skills/devrites-lib/reference/standards/`. Workspace-operating lifecycle
|
|
74
70
|
skills read `core.md` in step 0; compact utilities load only their local or conditional
|
|
@@ -85,37 +81,54 @@ traceability rules, and phase-relative completeness model, see
|
|
|
85
81
|
`test-proof-checklist.md` · `browser-proof-checklist.md` · `security-checklist.md`.
|
|
86
82
|
- **Index:** `README.md` (phase mapping, loading model).
|
|
87
83
|
|
|
88
|
-
State lives in `.devrites/` as human-readable Markdown so
|
|
89
|
-
|
|
90
|
-
the session-level run mode (see "Run modes" below). See `usage.md` for
|
|
91
|
-
workspace file list, [`command-map.md`](command-map.md) for the full
|
|
92
|
-
per-skill catalog with triggers
|
|
84
|
+
State lives in `.devrites/` as human-readable Markdown so later sessions can
|
|
85
|
+
reload it after context compaction. The optional `.devrites/AFK` sentinel
|
|
86
|
+
toggles the session-level run mode (see "Run modes" below). See `usage.md` for
|
|
87
|
+
the workspace file list, [`command-map.md`](command-map.md) for the full
|
|
88
|
+
per-skill catalog with triggers and I/O, and
|
|
93
89
|
[`capability-surface-selection.md`](capability-surface-selection.md) for where future
|
|
94
90
|
capabilities belong.
|
|
95
91
|
|
|
96
92
|
## Design rationale
|
|
97
93
|
|
|
98
94
|
### Why the engine owns shared orientation (`devrites-lib`)
|
|
99
|
-
Every workspace-operating skill
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
95
|
+
Every workspace-operating skill needs the active feature's slug, phase, present
|
|
96
|
+
artifacts, run mode, and open-question tally. Parsing raw Markdown in each skill
|
|
97
|
+
duplicated the same setup across about 20 skills. Counting open gates also meant
|
|
98
|
+
rereading the append-only `questions.md`, and a missed AFK sentinel or
|
|
99
|
+
miscounted gate could change behavior. The `devrites-engine` binary now computes
|
|
100
|
+
orientation once and prints a compact digest that each skill reads at step 0.
|
|
101
|
+
The same binary owns the read-only gates
|
|
106
102
|
(`build-readiness`, `evidence-fresh`, `check-acceptance`) and state mutators
|
|
107
103
|
(`tick-afk`, `resolve`, `close-out`), so Claude Code, Codex, CI, and humans
|
|
108
|
-
all exercise the same control plane. `devrites-lib` remains an internal library
|
|
109
|
-
(`user-invocable: false`, not a command) for shared references. The
|
|
110
|
-
|
|
104
|
+
all exercise the same control plane. `devrites-lib` remains an internal library
|
|
105
|
+
skill (`user-invocable: false`, not a command) for shared references. The
|
|
106
|
+
orientation command only reads state; dedicated engine subcommands handle
|
|
107
|
+
mutations.
|
|
111
108
|
|
|
112
109
|
### Why the engine owns install/update/uninstall semantics
|
|
113
|
-
|
|
114
|
-
and pruning, shared-file marker
|
|
115
|
-
binary lifecycle, and update flag replay
|
|
116
|
-
shell entrypoints
|
|
117
|
-
(`
|
|
118
|
-
|
|
110
|
+
`engine/internal/install` implements install, update, and uninstall behavior:
|
|
111
|
+
manifest writing and pruning, shared-file marker merging and removal, Codex hook
|
|
112
|
+
merging and removal, dry-run output, binary lifecycle, and update flag replay.
|
|
113
|
+
The shell entrypoints
|
|
114
|
+
(`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
|
|
115
|
+
(`bin/devrites.mjs`) remain bootstrap shims. They acquire a release bundle or
|
|
116
|
+
engine binary, then pass arguments through.
|
|
117
|
+
|
|
118
|
+
Directly managed manifest entries carry SHA-256 ownership records. Before the
|
|
119
|
+
first refresh, prune, or uninstall mutation, the engine classifies every
|
|
120
|
+
affected path. It preserves customized or legacy entries without hashes unless
|
|
121
|
+
`--force` is explicit, and it checks each path again immediately before a
|
|
122
|
+
destructive action. Marker-owned shared files retain their block or hook merge
|
|
123
|
+
policy. The engine rejects existing symlinks, junctions, and resolved target
|
|
124
|
+
escapes even under force.
|
|
125
|
+
|
|
126
|
+
Binary replacement is a separate transaction. Before replacement, the binary
|
|
127
|
+
at the exact staged path must report the requested release version. A backup in
|
|
128
|
+
the same directory remains until the binary at the installed path passes the
|
|
129
|
+
same check in a new process. On failure, the engine atomically restores the old
|
|
130
|
+
bytes and mode or removes a bad first install. It does not use `PATH` to
|
|
131
|
+
establish binary identity.
|
|
119
132
|
|
|
120
133
|
Some duplication is intentionally preserved at host boundaries. Raw `curl | bash`
|
|
121
134
|
install/uninstall must be self-contained enough to fetch the bundle before any sibling
|
|
@@ -126,30 +139,31 @@ different project-local conventions. Those generated host artifacts are delivere
|
|
|
126
139
|
npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
|
|
127
140
|
|
|
128
141
|
### Why `/engine` was rejected
|
|
129
|
-
A single `/engine` (or `/devrites`)
|
|
130
|
-
into one context
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
142
|
+
A single `/engine` (or `/devrites`) command would load every phase's
|
|
143
|
+
instructions into one context. That would increase context pressure, obscure
|
|
144
|
+
the purpose of each step, and make phase boundaries harder to enforce. Skill
|
|
145
|
+
bodies stay in context once loaded, so the recurring token cost would also
|
|
146
|
+
grow. Separate skills load only what the current phase needs.
|
|
134
147
|
|
|
135
148
|
### Why `rite-*` names
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
149
|
+
The team chose `rite-` because it is short, easy to remember, and matches the
|
|
150
|
+
product's use of "rites" for disciplined steps. The prefix also avoids
|
|
151
|
+
collisions. Built-in or bundled Claude Code commands include `/plan`, `/review`,
|
|
152
|
+
`/run`, `/verify`, `/code-review`, `/simplify`, `/security-review`, `/init`,
|
|
153
|
+
`/compact`, and `/debug`. (Collision audit:
|
|
154
|
+
`research/claude-code-skills-notes.md`.)
|
|
140
155
|
|
|
141
156
|
### Why a thin menu skill, not a mega-router
|
|
142
|
-
`/rite` is
|
|
157
|
+
`/rite` is an entrypoint. It shows a compact phase-grouped menu, prints
|
|
143
158
|
recommended-start guidance from `devrites-engine first-task`, and dispatches a
|
|
144
159
|
named verb to its owning skill. Menu mode does not read raw workspace state;
|
|
145
|
-
`/rite-status` owns detailed status. `/rite`
|
|
146
|
-
|
|
147
|
-
selection thin and lets each phase own its context.
|
|
160
|
+
`/rite-status` owns detailed status. `/rite` does not duplicate workflow logic,
|
|
161
|
+
which keeps selection small and leaves each phase in control of its context.
|
|
148
162
|
|
|
149
163
|
### Why internal skills exist
|
|
150
|
-
Specialist processes
|
|
151
|
-
are
|
|
152
|
-
skills they:
|
|
164
|
+
Specialist processes such as doubt, source-driven research, frontend craft,
|
|
165
|
+
browser proof, and audits are not direct user commands. As
|
|
166
|
+
`user-invocable: false` skills they:
|
|
153
167
|
- stay out of the command menu (less cognitive load);
|
|
154
168
|
- are invoked automatically by the host model or explicitly by a public skill when their
|
|
155
169
|
trigger conditions hit;
|
|
@@ -157,16 +171,23 @@ skills they:
|
|
|
157
171
|
|
|
158
172
|
### Why spec, architecture, plan, tasks, and traceability are separate artifacts
|
|
159
173
|
Combining investigation, specification, planning, and slicing makes it easier
|
|
160
|
-
to miss a question,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
what
|
|
164
|
-
|
|
174
|
+
to miss a question, choose the wrong placement, or omit a requirement from a
|
|
175
|
+
slice. Each concern therefore has its own artifact and gate. `/rite-spec`
|
|
176
|
+
investigates the request and codebase in depth, then writes `spec.md` with the
|
|
177
|
+
product what and why, requirements, acceptance criteria, non-goals, and
|
|
178
|
+
measurable success. The spec
|
|
179
|
+
must pass its readiness gate. `/rite-clarify` then audits the full actor,
|
|
180
|
+
journey, data, interface, and operations topology and writes
|
|
181
|
+
`decision-coverage.md`. A complete spec needs no questions.
|
|
182
|
+
`/rite-define` turns that **approved, clarified spec** into `architecture.md`
|
|
165
183
|
(technical map), `plan.md` (approach), `tasks.md` (vertical `SLICE-###` work), and
|
|
166
|
-
`traceability.md` (AC/REQ → slice → proof → evidence → files).
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
184
|
+
`traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet` then records
|
|
185
|
+
`Implementation readiness: READY` before build. Both verdict artifacts are
|
|
186
|
+
semantically validated and bound to their canonical inputs by SHA-256 digest;
|
|
187
|
+
marker text alone or a stale digest cannot pass. This checks the full spec
|
|
188
|
+
before Build without turning `spec.md` into a long technical document.
|
|
189
|
+
`/rite-plan` separately repairs, reslices, or reorders an active plan when it
|
|
190
|
+
goes stale or drifts.
|
|
170
191
|
|
|
171
192
|
### Why `/rite-polish` is one skill with two progressive-disclosure halves
|
|
172
193
|
Polish has two natural halves: **code** (simplify, dead code, naming, plus
|
|
@@ -189,37 +210,42 @@ to run Phase 4 before Phase 3 because detail work would otherwise reinforce
|
|
|
189
210
|
patterns that do not match the project's design system.
|
|
190
211
|
|
|
191
212
|
### Why seal and ship are separate phases (`/rite-seal`, `/rite-ship`)
|
|
192
|
-
Deciding
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
`.devrites/
|
|
201
|
-
|
|
202
|
-
decision and the irreversible action as two separately-auditable steps is the point.
|
|
213
|
+
Deciding whether a change is safe to ship has a smaller blast radius than
|
|
214
|
+
shipping it. `/rite-seal` checks acceptance against evidence, dispatches the
|
|
215
|
+
fresh-context reviewers, writes the GO or NO-GO verdict to `seal.md`, and runs
|
|
216
|
+
no git commands. On GO, it sets `state.md` to `Next step: /rite-ship` and stops.
|
|
217
|
+
`/rite-ship` refuses to run without a GO in `seal.md`. It renders the type-`GO`
|
|
218
|
+
prompt, runs the irreversible git ladder (commit → push → tag/PR under the
|
|
219
|
+
project's convention), and writes `ship.md`. It then sets phase `done`, moves
|
|
220
|
+
`.devrites/work/<slug>/` to `.devrites/archive/<slug>/` with every `.md` file
|
|
221
|
+
preserved, and clears `.devrites/ACTIVE`. The GO verdict does not authorize a
|
|
222
|
+
push; the separate Ship step does.
|
|
203
223
|
|
|
204
224
|
### Why `/rite-autocomplete` exists (the unattended orchestrator)
|
|
205
|
-
Some features are routine enough to run
|
|
206
|
-
`/rite-autocomplete` drives the whole lifecycle (spec → temper → define → vet →
|
|
225
|
+
Some features are routine enough to run without human input at every phase.
|
|
226
|
+
`/rite-autocomplete` drives the whole lifecycle (spec → clarify → temper → define → vet →
|
|
207
227
|
build×N → prove → polish → review → seal → ship) by reading each phase's
|
|
208
228
|
`SKILL.md` and executing its
|
|
209
|
-
workflow
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
229
|
+
workflow. It carries state through workspace files rather than chat. A vague
|
|
230
|
+
prompt starts `devrites-interview`; `/rite-spec` and `/rite-clarify` then
|
|
231
|
+
finish the only interactive window. After decision coverage is CLEAR it runs unattended,
|
|
232
|
+
choosing the recommended option at each soft gate and recording the rationale
|
|
233
|
+
in `decisions.md`. It does **not** weaken the safety gates: genuine
|
|
234
|
+
product/scope/policy decisions, irreversible risk, human-only access/actions,
|
|
235
|
+
an open human-owned gate, a NO-GO, exhausted `max_slices`, or low confidence
|
|
236
|
+
still pause. Agents use bounded recovery for red tests, runtime failures, and
|
|
237
|
+
missing technical coverage. By default the workflow stops at the final
|
|
238
|
+
type-`GO`; the `--ship` flag (alias `--yolo`) confirms it and pushes without
|
|
239
|
+
another prompt.
|
|
217
240
|
|
|
218
241
|
### Why persistent `.devrites/` state
|
|
219
242
|
Long features outlive a single context window. Durable Markdown for the spec,
|
|
220
243
|
plan, tasks, state, evidence, drift, and decisions lets any phase reload the
|
|
221
|
-
current position in any session, even after compaction.
|
|
222
|
-
|
|
244
|
+
current position in any session, even after compaction. Later-phase
|
|
245
|
+
clarification stores `return_phase` and `return_next_action` in `state.md`;
|
|
246
|
+
technical recovery stores a fingerprinted three-attempt budget in
|
|
247
|
+
`recovery-attempts.jsonl`. Session-scoped workflows cannot provide the same
|
|
248
|
+
resume behavior because they do not persist feature state.
|
|
223
249
|
|
|
224
250
|
### Run modes: HITL & AFK
|
|
225
251
|
|
|
@@ -238,38 +264,27 @@ an `Awaiting human` block to `state.md` and a question to `questions.md`, then s
|
|
|
238
264
|
`/rite-resolve` is the canonical resume verb. Restarting a session reads the workspace
|
|
239
265
|
back into a consistent state because the pause is durable Markdown, not chat memory.
|
|
240
266
|
|
|
241
|
-
Why a four-gate taxonomy (instead of a single "ask the user" pause): a single
|
|
242
|
-
becomes a queue under load.
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
267
|
+
Why a four-gate taxonomy (instead of a single "ask the user" pause): a single
|
|
268
|
+
gate becomes a queue under load. `advisory` writes only an audit log.
|
|
269
|
+
`validating` lets the build continue but blocks the merge. `blocking` stops
|
|
270
|
+
synchronously. This lets work continue when an answer can wait and pauses it
|
|
271
|
+
when the answer is required.
|
|
272
|
+
AFK always pauses for genuine product/scope/policy choices, irreversible risk,
|
|
273
|
+
and human-only access or actions, regardless of the sentinel. Objective test,
|
|
274
|
+
type, lint, runtime, and coverage failures stay inside bounded technical
|
|
275
|
+
recovery; exhaustion records a blocker without inventing a question. See
|
|
247
276
|
[`pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md) for the full
|
|
248
277
|
contract.
|
|
249
278
|
|
|
250
279
|
## Design choices at a glance
|
|
251
280
|
|
|
252
|
-
- **Surface**:
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
`
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
lessons) + `rite-status` + `rite-doctor` (install health) +
|
|
260
|
-
`rite-customize` (project-local overrides/extensions) +
|
|
261
|
-
`rite-explain` (grounded concept/diff/idea/recap explanation) +
|
|
262
|
-
`rite-pov` (external-option verdicts) + `rite-dogfood` (browser QA) +
|
|
263
|
-
`rite-pr-feedback` (review-thread closure) +
|
|
264
|
-
the `rite-plan` replan verb + `rite-converge` recovery + the `rite-resolve`
|
|
265
|
-
resume verb + 4 ideation /
|
|
266
|
-
handoff utilities (`rite-zoom-out`, `rite-prototype`, `rite-handoff`,
|
|
267
|
-
`rite-pressure-test`) + `rite-autocomplete` (the unattended full-lifecycle
|
|
268
|
-
orchestrator), plus 11 internal model-invoked `devrites-*` specialists and the
|
|
269
|
-
`devrites-lib` library, not one mega-command. The `devrites-` prefix is a
|
|
270
|
-
namespace (collision avoidance), not a public/internal marker.
|
|
271
|
-
`user-invocable:` is. The 11 specialists are model-invoked;
|
|
272
|
-
`devrites-lib` explicitly disables model invocation.
|
|
281
|
+
- **Surface**: 30 public `rite-*` skills (43 total), plus the thin `/rite`
|
|
282
|
+
menu: 31 public and 12 internal. The lifecycle
|
|
283
|
+
includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
|
|
284
|
+
Converge recovery; Seal **decides** and Ship **executes + closes**. Eleven
|
|
285
|
+
`devrites-*` specialists are model-invoked and `devrites-lib` is the shared
|
|
286
|
+
non-command library. Visibility comes from `user-invocable:`, not the
|
|
287
|
+
namespace prefix.
|
|
273
288
|
- **Selection**: the `/rite` menu skill carries the routing table; every
|
|
274
289
|
workflow skill enforces a "right skill, right time" rule in its body.
|
|
275
290
|
- **State**: durable `.devrites/` Markdown that survives compaction and new sessions.
|
|
@@ -281,13 +296,15 @@ contract.
|
|
|
281
296
|
- **Slice rule**: build **one vertical slice, then stop**. There is no automatic continuation.
|
|
282
297
|
- **Drift**: an explicit **Spec Drift Guard** in build/prove/polish/review/seal.
|
|
283
298
|
- **Design**: `devrites-frontend-craft` + a four-phase `/rite-polish` orchestrator (code + backend always; UI normalize + polish when UI is in scope).
|
|
284
|
-
- **
|
|
285
|
-
|
|
299
|
+
- **Agents**: 17 fresh-context roles at flat depth one: 16 read-only leaves and
|
|
300
|
+
one wright. Fallback order is named, generic, then labelled inline.
|
|
301
|
+
- **Review**: **feature-scoped** multi-axis review with severity labels and
|
|
302
|
+
fresh-context agents at the seal.
|
|
286
303
|
- **Scope**: clarify → seal (decide) → ship (commit → push → tag or PR,
|
|
287
304
|
following the project's convention) → close. The CI
|
|
288
305
|
pipeline stays with the project.
|
|
289
306
|
- **Install**: project-local, manifest-managed host artifacts; the optional
|
|
290
|
-
shared engine binary is the
|
|
307
|
+
shared engine binary is the only allowed global artifact.
|
|
291
308
|
|
|
292
309
|
## Deviations from the original build brief (and why)
|
|
293
310
|
|
package/docs/cli.md
CHANGED
|
@@ -7,21 +7,27 @@ deterministic gates from the project root.
|
|
|
7
7
|
|
|
8
8
|
## The `devrites-engine` CLI
|
|
9
9
|
|
|
10
|
-
Install DevRites normally, then run the engine from the project root
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
exhaustive current command and hook inventory.
|
|
10
|
+
Install DevRites normally, then run the engine from the project root. These
|
|
11
|
+
examples cover the common commands; `devrites-engine help` lists every current
|
|
12
|
+
command and hook.
|
|
14
13
|
|
|
15
14
|
```bash
|
|
16
15
|
devrites-engine preamble # workspace digest for the active feature
|
|
17
16
|
devrites-engine snapshot [slug] # machine-readable workspace/status snapshot
|
|
18
|
-
devrites-engine build-readiness [slug] #
|
|
17
|
+
devrites-engine build-readiness [slug] # semantic clarify + vet gate (exit 0 ready)
|
|
18
|
+
devrites-engine readiness-digest coverage|engineering [slug] # canonical input digest
|
|
19
|
+
devrites-engine clarify-return enter|restore [slug] # durable later-phase clarify cursor
|
|
20
|
+
devrites-engine recovery route <class> # typed owner/action; JSON recovery-route/v1
|
|
21
|
+
devrites-engine recovery check|record|clear ... # durable three-failure budget; record/clear accept --class
|
|
22
|
+
devrites-engine reconcile snapshot|check|close [slug] # retained writer baseline
|
|
23
|
+
devrites-engine test-integrity [slug] # reject weakened tests against that baseline
|
|
24
|
+
devrites-engine package-existence [slug] # verify new imports are declared
|
|
19
25
|
devrites-engine evidence-fresh [slug] # proof freshness gate (exit 0 fresh · 3 stale)
|
|
20
26
|
devrites-engine check-acceptance <dir> # acceptance gate (exit 0 proven · 1 gap)
|
|
21
27
|
devrites-engine ledger sync <dir> # fold a feature's spec deltas into the living capability ledger
|
|
22
28
|
devrites-engine ledger list|show <cap> # read the ledger: what the system already does
|
|
23
29
|
devrites-engine context show --json # report root, active workspace, and host command forms
|
|
24
|
-
devrites-engine timeline log|list
|
|
30
|
+
devrites-engine timeline log|list|report|purge # local typed trace, bounded report, exact retention
|
|
25
31
|
devrites-engine health run # run known project checks + record a code-health dashboard
|
|
26
32
|
devrites-engine health record|list # append/list manual or dashboard health history
|
|
27
33
|
devrites-engine review-fingerprints [slug] # stable IDs for review findings; --write saves JSONL
|
|
@@ -41,20 +47,43 @@ directly rather than wrapping human text. Snapshot consumers should read
|
|
|
41
47
|
`nextCommands.claude` or `nextCommands.codex` for the current host instead of
|
|
42
48
|
hardcoding a `/rite-*` or `$rite-*` command form. `context show --json` and
|
|
43
49
|
`reviewer-stats report --json` are also direct structured reports rather than
|
|
44
|
-
envelopes.
|
|
50
|
+
envelopes. The snapshot wire identifier is separate from the workspace-map
|
|
51
|
+
frontmatter `schemaVersion: 2`: schema v2 is additive, reads legacy layouts and
|
|
52
|
+
aliases, and rejects only declarations newer than the engine supports.
|
|
45
53
|
|
|
46
54
|
The npm `devrites` shim remains the installer/updater/uninstaller entry point and
|
|
47
55
|
proxies these engine subcommands when `devrites-engine` is installed. Install and
|
|
48
56
|
update DevRites through `npx devrites ...`; DevRites is not distributed through
|
|
49
57
|
Claude or Codex plugin stores.
|
|
50
58
|
|
|
51
|
-
|
|
59
|
+
Callers use the exit code as the gate result. `build-readiness` routes
|
|
60
|
+
objective gaps to their owner:
|
|
61
|
+
|
|
62
|
+
<!-- authority:readiness-reasons:start -->
|
|
63
|
+
| exit | reason | condition | remediation |
|
|
64
|
+
| --- | --- | --- | --- |
|
|
65
|
+
| `0` | `ready` | Ready to build | *(none)* |
|
|
66
|
+
| `2` | `plan-unapproved` | Plan is not approved | `/rite-define` |
|
|
67
|
+
| `3` | `awaiting-human` | A human-owned question is open | `/rite-resolve` |
|
|
68
|
+
| `4` | `plan-blocked` | Plan is blocked and needs repair | `/rite-plan` |
|
|
69
|
+
| `5` | `workspace-missing` | Workspace or state.md is missing | `/rite-spec` |
|
|
70
|
+
| `6` | `coverage-not-clear` | Decision coverage is not CLEAR and fresh | `/rite-clarify` |
|
|
71
|
+
| `7` | `engineering-not-ready` | Plan is not vetted or implementation readiness is not READY | `/rite-vet` |
|
|
72
|
+
<!-- authority:readiness-reasons:end -->
|
|
73
|
+
|
|
74
|
+
A non-zero `build-readiness`,
|
|
52
75
|
`evidence-fresh`, or `check-acceptance` result is a hard stop that can be used
|
|
53
76
|
in an agent loop, a local script, or pre-merge CI.
|
|
54
77
|
|
|
78
|
+
`build-readiness` does not trust `CLEAR` or `READY` text alone. It validates the
|
|
79
|
+
required sections, tables, ownership and test mappings, and compares each
|
|
80
|
+
artifact's SHA-256 field with the digest of its canonical inputs. Migration may
|
|
81
|
+
upgrade a workspace declaration to schema v2, but it never creates or blesses
|
|
82
|
+
clarification, vet, or proof evidence.
|
|
83
|
+
|
|
55
84
|
## Why this exists
|
|
56
85
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
workflow. CLI
|
|
60
|
-
|
|
86
|
+
The CLI exposes DevRites workspace data and standards to agent loops, local
|
|
87
|
+
scripts, CI, and human operators without requiring each caller to reimplement
|
|
88
|
+
the workflow. CLI and `rite-*` verdicts match because both use the same engine
|
|
89
|
+
gates.
|