devrites 3.0.6 → 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 +18 -0
- package/README.md +67 -45
- 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 +575 -58
- package/engine/internal/install/install_test.go +490 -9
- 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
|
@@ -1,165 +1,110 @@
|
|
|
1
1
|
# Parallel review dispatch
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
This file defines reviewer rosters for `/rite-review` and `/rite-seal`. The shared
|
|
4
|
+
packet, result, capability ladder, concurrency limit, retry, and reconciliation rules live in
|
|
5
|
+
[`standards/agents.md`](standards/agents.md); do not restate them here.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
here: the roster table below names them under **Not in this fan-out** so the set is unambiguous.
|
|
7
|
+
All reviewers read the same **immutable candidate**, but no more than three run
|
|
8
|
+
concurrently. For a larger panel, use awaited batches of at most three; after resource
|
|
9
|
+
or process errors, reduce the batch or run serially. A batch boundary does not permit a
|
|
10
|
+
write.
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
them concurrently, reconcile on return.
|
|
12
|
+
## Roster
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
`/rite-seal` accounts for all seven roles. `/rite-review` runs the first two.
|
|
15
|
+
Conditional triggers use the listed signals.
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
plus each conditional, either dispatched or skip-recorded; `/rite-review` runs the two always-on
|
|
20
|
-
axes. Each trigger is a *checkable signal*, not a judgement call, so a conditional reviewer is
|
|
21
|
-
either fired or consciously skipped: never silently dropped.
|
|
22
|
-
|
|
23
|
-
| Reviewer | Fires | Trigger: the checkable signal |
|
|
17
|
+
| Reviewer | Fires | Trigger |
|
|
24
18
|
|---|---|---|
|
|
25
|
-
| `devrites-spec-reviewer` | always |
|
|
26
|
-
| `devrites-code-reviewer` | always |
|
|
27
|
-
| `devrites-test-analyst` | always
|
|
28
|
-
| `devrites-frontend-reviewer` | conditional |
|
|
29
|
-
| `devrites-security-auditor` | conditional |
|
|
30
|
-
| `devrites-performance-reviewer` | conditional |
|
|
31
|
-
| `devrites-devex-reviewer` | conditional |
|
|
32
|
-
|
|
33
|
-
### Hit-rate gating: consult before dispatching conditionals
|
|
34
|
-
|
|
35
|
-
Before dispatching, run `devrites-engine reviewer-stats report`. It grades each reviewer from the
|
|
36
|
-
cross-feature dispatch ledger (`.devrites/reviewer-stats.jsonl`):
|
|
37
|
-
|
|
38
|
-
- `run` / `run (always-on)` / `run (insurance — never gated)`: dispatch per the trigger table above.
|
|
39
|
-
- `gate-candidate`: this **conditional** reviewer produced zero surviving findings in its last 10+
|
|
40
|
-
dispatches on this project. Skip it as a *recorded* skip:
|
|
41
|
-
`devrites-engine footprint log <slug> skip devrites-<x>-reviewer` with the reason
|
|
42
|
-
`gated: zero surviving findings in <N> dispatches`. The roster gate stays satisfied: a gated
|
|
43
|
-
skip is a conscious skip.
|
|
44
|
-
|
|
45
|
-
The verdict is engine-owned and deterministic; never gate by your own judgement of a reviewer's
|
|
46
|
-
past usefulness. Two hard bounds: the always-on axes (`spec`, `code-review`, `test-analyst`) and
|
|
47
|
-
the insurance reviewers (`security-auditor`, `doubt-reviewer`) are **never** gated: the engine
|
|
48
|
-
never grades them `gate-candidate`, and a caller must not skip them on hit-rate grounds. The user
|
|
49
|
-
can override gating for one run by asking for a full panel (`--full`): then dispatch every
|
|
50
|
-
triggered reviewer regardless of verdict.
|
|
51
|
-
|
|
52
|
-
After reconciliation, close the loop: record each **dispatched** reviewer's outcome so the
|
|
53
|
-
ledger stays live:
|
|
19
|
+
| `devrites-spec-reviewer` | always | review Spec axis; seal may carry it forward only on the identical candidate |
|
|
20
|
+
| `devrites-code-reviewer` | always | review Code-review axis; seal may carry it forward only on the identical candidate |
|
|
21
|
+
| `devrites-test-analyst` | always at seal | completed feature |
|
|
22
|
+
| `devrites-frontend-reviewer` | conditional | diff touches a component, template, stylesheet, story, route, screen, or design token |
|
|
23
|
+
| `devrites-security-auditor` | conditional | input, auth/authz, data access/storage, external integration, permission, dependency, or secret |
|
|
24
|
+
| `devrites-performance-reviewer` | conditional | spec has a performance budget, or diff adds a query, growing-set loop, render/hot-path work, or material payload |
|
|
25
|
+
| `devrites-devex-reviewer` | conditional | public API, CLI, SDK/export, webhook, config/env, error message, docs, or getting-started path |
|
|
54
26
|
|
|
55
|
-
|
|
56
|
-
devrites-
|
|
57
|
-
|
|
27
|
+
Not in this roster: `devrites-simplifier-reviewer` (polish), `devrites-doubt-reviewer`
|
|
28
|
+
(doubt), `devrites-strategy-reviewer` (temper), `devrites-plan-reviewer` (vet),
|
|
29
|
+
`devrites-forge-judge` (build), and `devrites-retrospector` (ship).
|
|
58
30
|
|
|
59
|
-
|
|
60
|
-
false positive does not count. Record `0` honestly; dry streaks are the signal.
|
|
31
|
+
## Hit-rate gating
|
|
61
32
|
|
|
62
|
-
|
|
63
|
-
at `/rite-polish` Phase 1 (via `devrites-audit simplify`) and `devrites-doubt-reviewer` fires from
|
|
64
|
-
`devrites-doubt` when a decision is stood up: neither is a seal reviewer, so neither is part of
|
|
65
|
-
the seal accounting. `devrites-strategy-reviewer` (pre-plan, `/rite-temper`), `devrites-plan-reviewer`
|
|
66
|
-
(pre-build, `/rite-vet`), `devrites-forge-judge` (`/rite-build` forge), and `devrites-retrospector`
|
|
67
|
-
(`/rite-ship` close) are single-agent, phase-locked gates. They fire iff their phase runs, not here.
|
|
33
|
+
Before conditionals, run:
|
|
68
34
|
|
|
69
|
-
|
|
70
|
-
|
|
35
|
+
```bash
|
|
36
|
+
devrites-engine reviewer-stats report
|
|
37
|
+
```
|
|
71
38
|
|
|
72
|
-
|
|
39
|
+
- `run`, `run (always-on)`, or `run (insurance — never gated)`: apply the roster.
|
|
40
|
+
- `gate-candidate`: a conditional produced zero surviving findings in its last 10+
|
|
41
|
+
dispatches. Record a skip with `gated: zero surviving findings in <N> dispatches`.
|
|
42
|
+
- `--full`: dispatch every triggered reviewer despite gating.
|
|
73
43
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
44
|
+
Always-on reviewers and insurance reviewers (security and doubt) are never hit-rate
|
|
45
|
+
gated. After reconciliation, record each dispatched reviewer's surviving
|
|
46
|
+
Critical+Important count:
|
|
77
47
|
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
Workspace: .devrites/work/<slug>/
|
|
82
|
-
Read (yourself, fresh context):
|
|
83
|
-
- spec.md (+ acceptance criteria)
|
|
84
|
-
- touched-files.md
|
|
85
|
-
- the git diff
|
|
86
|
-
- <any axis-specific files: decisions.md, evidence.md, references/...>
|
|
87
|
-
|
|
88
|
-
Before judging the diff, derive the expected behaviour from the spec
|
|
89
|
-
yourself, then compare it against what the code does. Anchor every finding
|
|
90
|
-
to file:line plus the spec criterion or command output that proves it —
|
|
91
|
-
an unanchored finding is a Suggestion at most. The order or length of the
|
|
92
|
-
diff is not evidence.
|
|
93
|
-
|
|
94
|
-
Apply your documented discipline. Return labeled findings (Critical /
|
|
95
|
-
Important / Suggestion / Nit / FYI) using your documented output format,
|
|
96
|
-
ONE FINDING PER LINE, cite file:line.
|
|
97
|
-
|
|
98
|
-
Feature scope only. No edits. Do not summarize or re-rank — the caller
|
|
99
|
-
reconciles.
|
|
48
|
+
```bash
|
|
49
|
+
devrites-engine reviewer-stats record devrites-<x>-reviewer <count> <slug>
|
|
100
50
|
```
|
|
101
51
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
52
|
+
## Reviewer packet
|
|
53
|
+
|
|
54
|
+
Create `agent-packet/v1` per `standards/agents.md`. In addition to the common fields:
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
objective: Audit the active feature on <axis>; derive expected behavior independently.
|
|
58
|
+
inputs:
|
|
59
|
+
- path: .devrites/work/<slug>/spec.md
|
|
60
|
+
purpose: acceptance contract
|
|
61
|
+
- path: .devrites/work/<slug>/touched-files.md
|
|
62
|
+
purpose: feature boundary
|
|
63
|
+
- path: <scratch_root>/candidate.diff
|
|
64
|
+
purpose: reviewed candidate
|
|
65
|
+
scope:
|
|
66
|
+
in: [<axis-specific workspace paths>, <touched source/test paths>]
|
|
67
|
+
out: [author reasoning, sibling findings, unrelated repository debt]
|
|
68
|
+
allowed_repo_writes: []
|
|
69
|
+
```
|
|
115
70
|
|
|
116
|
-
|
|
71
|
+
Tell the role to apply its documented discipline and return `payload.type:
|
|
72
|
+
review-findings`, one finding per line, labeled Critical / Important / Suggestion /
|
|
73
|
+
Nit / FYI and anchored to `file:line` plus the spec criterion or observed command.
|
|
74
|
+
The exact result `CANNOT-VERIFY: <requirement> — <why>` is never a pass.
|
|
117
75
|
|
|
118
|
-
|
|
119
|
-
consciously skipped with a one-line reason. A conditional reviewer that genuinely does not apply
|
|
120
|
-
(no UI in the diff → `frontend-reviewer`) is a *recorded* skip, not a silent no-op. That record
|
|
121
|
-
is the difference between "reviewed" and "declared done after firing three of seven": the silent
|
|
122
|
-
skip is exactly how a needed reviewer never runs.
|
|
76
|
+
Dispatch rules:
|
|
123
77
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
78
|
+
- Fresh-context dispatch through the capability ladder; one packet per reviewer.
|
|
79
|
+
- No author context, sibling findings, severity coaching, or plan justification.
|
|
80
|
+
- Feature scope is `touched-files.md` plus the frozen diff.
|
|
81
|
+
- Await every required batch before any write or verdict. Never background/detach.
|
|
128
82
|
|
|
129
|
-
|
|
130
|
-
- skipped → `devrites-engine footprint log <slug> skip devrites-<x>-reviewer` # e.g. `skip devrites-frontend-reviewer`: no UI in the diff
|
|
83
|
+
## Account for every reviewer
|
|
131
84
|
|
|
132
|
-
|
|
85
|
+
Log exact agent names as decisions are made:
|
|
133
86
|
|
|
134
87
|
```bash
|
|
135
|
-
devrites-engine footprint
|
|
88
|
+
devrites-engine footprint log <slug> reviewer devrites-<x>-reviewer
|
|
89
|
+
devrites-engine footprint log <slug> skip devrites-<x>-reviewer
|
|
90
|
+
devrites-engine footprint roster <slug>
|
|
136
91
|
```
|
|
137
92
|
|
|
138
|
-
`rc=3
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
93
|
+
`roster` rc=3 means an unaccounted reviewer: dispatch or record why it does not apply.
|
|
94
|
+
rc=1 means an always-on skip; this is valid only for an unchanged-candidate carry-forward
|
|
95
|
+
or the explicit independence fallback in
|
|
96
|
+
[`../../rite-seal/reference/risk-and-rollback.md`](../../rite-seal/reference/risk-and-rollback.md).
|
|
142
97
|
|
|
143
98
|
## Reconciliation
|
|
144
99
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
by declaring no `model:` in the agent definition (see
|
|
157
|
-
[`model-tiers.md`](model-tiers.md)). Adversarial review is exactly where a cheaper model costs the
|
|
158
|
-
most: a missed Critical is far more expensive than the tokens saved. Do not downgrade a reviewer to
|
|
159
|
-
save cost. Extraction-tier savings belong to scouts (archive-search, footprint), not to the panel.
|
|
160
|
-
|
|
161
|
-
## Fallback
|
|
162
|
-
|
|
163
|
-
If the harness has **no subagent primitive at all** (neither Claude's `Task` nor Codex's
|
|
164
|
-
`spawn_agent`: an absent tool on one harness while the other's equivalent exists does NOT
|
|
165
|
-
qualify), the caller runs the relevant subagent discipline **inline** in its own context and flags the result as a fallback (not an independent review). The seal weighs the fallback differently: see [`../../rite-seal/reference/risk-and-rollback.md`](../../rite-seal/reference/risk-and-rollback.md). This is the [`model-tiers.md`](model-tiers.md) degradation rule applied to the review panel: no subagent primitive → run inline under the same discipline and budget.
|
|
100
|
+
1. Preserve each valid report verbatim under `## <axis>` in `review.md`/`seal.md`.
|
|
101
|
+
2. Surface contradictions explicitly; the root decides them.
|
|
102
|
+
3. Keep the shared five-label scale. The simplifier's Suggestion/Nit/FYI subset is valid.
|
|
103
|
+
4. Resolve every `CANNOT-VERIFY` before the gate or retain it as a gap.
|
|
104
|
+
5. Add a deduped roll-up only after the verbatim record. Mark matching `file:line`
|
|
105
|
+
findings from two or more axes as consensus; do not hide lone findings.
|
|
106
|
+
6. Apply the caller's gate; do not invent a composite score.
|
|
107
|
+
|
|
108
|
+
Every panel reviewer runs at the ceiling or inherited tier. If the named role is
|
|
109
|
+
unavailable, use the universal ladder. Record an inline fallback as non-independent
|
|
110
|
+
under the seal risk rule, never as a fresh-context pass.
|
|
@@ -9,7 +9,14 @@ Before the final reply, persist the phase event, then render the deterministic
|
|
|
9
9
|
progress chrome:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
devrites-engine timeline log
|
|
12
|
+
devrites-engine timeline log run-finished \
|
|
13
|
+
--slug "$(cat .devrites/ACTIVE 2>/dev/null)" \
|
|
14
|
+
--outcome "<passed|blocked>" \
|
|
15
|
+
--execution-mode named \
|
|
16
|
+
--guard-strength n/a \
|
|
17
|
+
--reason-id "<stable DRV-* reason for the result>" \
|
|
18
|
+
--host "<claude|codex>" \
|
|
19
|
+
--evidence "<project-relative primary artifact>"
|
|
13
20
|
devrites-engine budget
|
|
14
21
|
devrites-engine progress
|
|
15
22
|
```
|
|
@@ -1,61 +1,44 @@
|
|
|
1
1
|
# DevRites rules
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
the standards the DevRites workflow holds code to: quality, safety, testing, and review
|
|
5
|
-
discipline that apply in any language.
|
|
3
|
+
These stack-agnostic rules ship under `.claude/skills/devrites-lib/reference/standards/`. Project-specific conventions win where they exist.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
Project-specific conventions always win where they exist (DevRites reads the codebase and
|
|
9
|
-
prefers what's already there).
|
|
5
|
+
## Loading model
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
Every workspace-operating `rite-*` skill reads [`core.md`](core.md) first. Load the smallest topic file needed for the current step; each file owns its full rule.
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
skill Reads `.claude/skills/devrites-lib/reference/standards/core.md` as its first step;
|
|
15
|
-
the remaining rule files load on demand by the phase that needs them.
|
|
16
|
-
|
|
17
|
-
### Always-on (read by each `rite-*` skill as step 0)
|
|
18
|
-
|
|
19
|
-
| Rule | Covers |
|
|
9
|
+
| Rule | Load when |
|
|
20
10
|
|---|---|
|
|
21
|
-
| `core.md` |
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
|
26
|
-
|
|
27
|
-
| `
|
|
28
|
-
| `
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
38
|
-
| `
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
47
|
-
| `
|
|
48
|
-
| `
|
|
49
|
-
| `
|
|
50
|
-
| `
|
|
51
|
-
| `
|
|
52
|
-
| `
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
| `test-proof-checklist.md` | Proof-quality checklist for tests and evidence. | `/rite-prove`, `/rite-seal`. |
|
|
56
|
-
| `browser-proof-checklist.md` | Browser/UI proof checklist. | UI features in `/rite-prove`, `/rite-polish`, `/rite-seal`. |
|
|
57
|
-
| `security-checklist.md` | Security review checklist. | Auth/input/data/integration changes. |
|
|
58
|
-
|
|
59
|
-
How they're used: DevRites skills follow these rules; you and Claude can reference them
|
|
60
|
-
directly. They are guidance, not enforced gates: the enforced gates live in the
|
|
61
|
-
workflow skills (Spec Drift Guard, readiness gates, the seal).
|
|
11
|
+
| `core.md` | Every workflow phase: operating, persistence, evidence, and precedence rules. |
|
|
12
|
+
| `coding-style.md` | Writing or simplifying code. |
|
|
13
|
+
| `prose-style.md` | Writing prose artifacts or user replies. |
|
|
14
|
+
| `error-handling.md` | Adding or reviewing failure paths. |
|
|
15
|
+
| `testing.md` | Designing tests or judging proof quality. |
|
|
16
|
+
| `spec-grammar.md` | Structuring high-risk behavioral requirements or capability deltas. |
|
|
17
|
+
| `code-review.md` | Reviewing a change or sealing review findings. |
|
|
18
|
+
| `edge-case-trace.md` | Sweeping branches, boundaries, fixed-set siblings, or deletion contracts. |
|
|
19
|
+
| `security.md` | Handling input, auth, data, secrets, dependencies, or integrations. |
|
|
20
|
+
| `performance.md` | A measured performance concern is in scope. |
|
|
21
|
+
| `observability.md` | A changed runtime path must be diagnosed in production. |
|
|
22
|
+
| `developer-experience.md` | A public API, CLI, SDK, webhook, config, error, or getting-started surface changes. |
|
|
23
|
+
| `patterns.md` | Choosing or simplifying architecture. |
|
|
24
|
+
| `git-workflow.md` | Preparing commits, branches, tags, or changelog entries. |
|
|
25
|
+
| `hooks.md` | Creating or changing repository hooks. |
|
|
26
|
+
| `ci-cd.md` | Creating or changing a build/deploy pipeline. |
|
|
27
|
+
| `documentation.md` | Behavior, commands, contracts, or durable decisions change. |
|
|
28
|
+
| `elicitation.md` | Temper or Vet needs a sharper reasoning move for one section. |
|
|
29
|
+
| `development-workflow.md` | Planning batch size, integration, or the standing done bar. |
|
|
30
|
+
| `principles.md` | Authoring or checking project invariants and approved exceptions. |
|
|
31
|
+
| `deprecation.md` | Removing, replacing, or migrating behavior, code, APIs, or data. |
|
|
32
|
+
| `agents.md` | Dispatching, awaiting, validating, or reconciling fresh-context agents. |
|
|
33
|
+
| `context-hygiene.md` | Choosing `/clear`, `/compact`, or a handoff. |
|
|
34
|
+
| `anti-patterns.md` | A pack-wide rationalization or red flag appears. |
|
|
35
|
+
| `afk-hitl.md` | A pause, question, resume, or AFK decision is possible. |
|
|
36
|
+
| `tooling.md` | Structural lookup, current external facts, or architecture memory is needed. |
|
|
37
|
+
| `skill-authoring.md` | Creating, editing, routing, evaluating, or pruning a DevRites skill. |
|
|
38
|
+
| `definition-of-done.md` | Prove, Seal, Ship, or Quick must decide whether work is finished. |
|
|
39
|
+
| `review-checklist.md` | A compact review pass/fail sweep is enough. |
|
|
40
|
+
| `test-proof-checklist.md` | Test and evidence quality needs a compact sweep. |
|
|
41
|
+
| `browser-proof-checklist.md` | UI behavior needs browser proof. |
|
|
42
|
+
| `security-checklist.md` | Auth, input, data, or integration work needs a compact security sweep. |
|
|
43
|
+
|
|
44
|
+
These files guide judgment. Workflow skills and engine gates own enforcement.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# AFK & HITL: the pause/resume contract
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This file defines DevRites's two run modes. Every `rite-*` and `devrites-*` skill that
|
|
4
4
|
might pause for a human reads from this contract; `/rite-build`, `/rite-status`,
|
|
5
5
|
`/rite-resolve`, and `devrites-doubt` are the primary callers.
|
|
6
6
|
|
|
7
|
-
The contract
|
|
7
|
+
The contract uses one sentinel, one queue, and one resume verb.
|
|
8
8
|
|
|
9
9
|
## Run modes
|
|
10
10
|
|
|
@@ -14,9 +14,9 @@ The contract is intentionally small: one sentinel, one queue, one verb.
|
|
|
14
14
|
human picks; the skill records the pick to `questions.md` (`answered`) + `decisions.md` and
|
|
15
15
|
**continues in place: no `/rite-resolve` round-trip**. `/rite-resolve` is only for answering
|
|
16
16
|
**async** (a pause that already stopped the session) or in **batch**.
|
|
17
|
-
**
|
|
17
|
+
**If the current surface has no interactive question tool** (Codex outside Plan mode:
|
|
18
18
|
`request_user_input` is Plan-mode-only.) Render the same option set as a plain numbered
|
|
19
|
-
list in chat and **end the turn
|
|
19
|
+
list in chat and **end the turn**. The human's reply is the selection. Auto-picking an option
|
|
20
20
|
is **AFK's contract, gated by the `.devrites/AFK` sentinel**: a missing tool never
|
|
21
21
|
converts a HITL gap into a self-answered one.
|
|
22
22
|
- **AFK:** `.devrites/AFK` is present. For any gate AFK may auto-handle (severity in
|
|
@@ -67,8 +67,7 @@ for the full taxonomy. Summary:
|
|
|
67
67
|
| blocking | high | sync | 15m | **no** (always pauses) |
|
|
68
68
|
| escalating | novel pattern | sync to specialist | 24h | **no** (always pauses) |
|
|
69
69
|
|
|
70
|
-
`blocking` and `escalating` always pause regardless of `allow_gates`.
|
|
71
|
-
"AFK never silently accepts" guarantees in protocol form.
|
|
70
|
+
`blocking` and `escalating` always pause regardless of `allow_gates`.
|
|
72
71
|
|
|
73
72
|
An open `gate: validating` entry is **merge-blocking by definition**: at `/rite-seal` any
|
|
74
73
|
`questions.md` entry with `gate: validating` and `status: open` is a NO-GO, regardless of
|
|
@@ -77,14 +76,14 @@ validating gate resolves.
|
|
|
77
76
|
|
|
78
77
|
## Option set: how every gap is presented
|
|
79
78
|
|
|
80
|
-
Wherever a gap, checkpoint, or non-trivial decision surfaces (`/rite-spec`, `/rite-define`,
|
|
79
|
+
Wherever a gap, checkpoint, or non-trivial decision surfaces (`/rite-spec`, `/rite-clarify`, `/rite-define`,
|
|
81
80
|
`/rite-build`, `/rite-temper`, `/rite-vet`, `devrites-doubt`, `devrites-interview`), present a
|
|
82
81
|
**ranked option set**, never a single bare guess:
|
|
83
82
|
|
|
84
83
|
- **2-4 concrete options**, the **recommended one first**, labelled `(Recommended)`.
|
|
85
84
|
- Each option carries a **one-line rationale tagged by the dimensions that matter**:
|
|
86
85
|
`logic · infra · business · architecture` (add `security` / `UX` / `risk` when in scope).
|
|
87
|
-
Name the trade-off
|
|
86
|
+
Name the trade-off as well as the choice.
|
|
88
87
|
- Always include an escape hatch (`Something else — I'll describe it`).
|
|
89
88
|
- The recommendation reflects what's best for *this* project (its conventions, stack, scale,
|
|
90
89
|
domain), not a generic default.
|
|
@@ -92,8 +91,21 @@ Wherever a gap, checkpoint, or non-trivial decision surfaces (`/rite-spec`, `/ri
|
|
|
92
91
|
**HITL** renders the set via `AskUserQuestion` (recommended option first; rationale in each
|
|
93
92
|
option's description); the human's pick resolves the gate **in place**. **AFK** auto-picks
|
|
94
93
|
option 1 (the recommendation) for gates it may auto-handle. Either way the chosen option is
|
|
95
|
-
recorded verbatim
|
|
96
|
-
|
|
94
|
+
recorded verbatim. Keep the **rejected options in `questions.md`** so the record includes
|
|
95
|
+
the alternatives considered.
|
|
96
|
+
|
|
97
|
+
## Decision ownership: search before asking
|
|
98
|
+
|
|
99
|
+
A gate is human only when its remaining choice is human-owned. First search live code,
|
|
100
|
+
project/decision docs, and authoritative dependency sources; make and record reversible
|
|
101
|
+
implementation/test choices. Ask only about product, scope, acceptance, architecture policy,
|
|
102
|
+
irreversible risk, or human-only access/action.
|
|
103
|
+
|
|
104
|
+
Objective test/build/tool failure runs bounded `devrites-debug-recovery`; fix it or record a
|
|
105
|
+
technical blocker. Never ask permission for another attempt, test, parser repair, or probe.
|
|
106
|
+
Close decisions at the earliest informed phase: product in spec, coverage in clarify,
|
|
107
|
+
scope/risk in temper, architecture/dependencies in define, and proof/toolchain in vet. Build
|
|
108
|
+
keeps only unavailable-pre-code or mandatory action-time checkpoints.
|
|
97
109
|
|
|
98
110
|
## Irreversible-risk list (always pause)
|
|
99
111
|
|
|
@@ -105,16 +117,18 @@ The following always invoke the checkpoint protocol, regardless of `Mode`, `Gate
|
|
|
105
117
|
- Public API break (response shape, removed endpoint, changed status code semantics).
|
|
106
118
|
- External-service contract change.
|
|
107
119
|
- Filesystem destruction outside the workspace.
|
|
108
|
-
- Red tests / types / lint on slice completion (fail-on-red).
|
|
109
120
|
|
|
110
121
|
When a pause clears and you proceed with a destructive migration, a removal, or a
|
|
111
122
|
public-API break, take the **safe path** the gate stopped you for: expand→contract,
|
|
112
123
|
prove the old path unused before removing it, and a rollback for every destructive step
|
|
113
|
-
([`deprecation.md`](deprecation.md)). The gate
|
|
114
|
-
|
|
124
|
+
([`deprecation.md`](deprecation.md)). The gate requires the safe path; it does not
|
|
125
|
+
cancel the work.
|
|
115
126
|
|
|
116
127
|
By default, AFK widens what's *automatic*; it never widens what's *irreversible*.
|
|
117
128
|
|
|
129
|
+
Red checks remain hard non-advance build gates, but are not inherently irreversible or
|
|
130
|
+
human-owned; bounded recovery owns them.
|
|
131
|
+
|
|
118
132
|
## `questions.md` schema
|
|
119
133
|
|
|
120
134
|
Append-only. One entry per qid. Format:
|
|
@@ -142,6 +156,15 @@ Rules:
|
|
|
142
156
|
- The file is the audit trail. Don't edit answered/dropped entries: open a new qid that
|
|
143
157
|
references the old one (`supersedes: q-...-OLD`) and resolve it.
|
|
144
158
|
|
|
159
|
+
Destructive Git uses a narrower engine-owned question:
|
|
160
|
+
`schema: devrites-git-authority/v1`, `kind: destructive-git-once`, the exact
|
|
161
|
+
operation digest, sorted classifier reason IDs, `requested_at`, `expires_at`, and
|
|
162
|
+
`answer_contract: Authorize once`. Run `/rite-resolve <qid> "Authorize once"`;
|
|
163
|
+
then retry within 15 minutes. `git-guard` consumes the grant before the tool runs,
|
|
164
|
+
so a failed tool call still spends it. Never hand-edit, broaden, reuse, or copy
|
|
165
|
+
this authority record. Ambiguous shell forms cannot use it: rewrite them as a
|
|
166
|
+
direct literal Git command.
|
|
167
|
+
|
|
145
168
|
## `state.md` `Awaiting human` block
|
|
146
169
|
|
|
147
170
|
When a HITL gate fires, `/rite-build` writes:
|
|
@@ -177,8 +200,8 @@ walked away from), plus `--batch`. In an **interactive HITL** session the skill
|
|
|
177
200
|
`AskUserQuestion` pick **in place** (the same `questions.md` `answered` write + `state.md`
|
|
178
201
|
clear), so you don't type `/rite-resolve` for gaps you answer live. Both paths flip
|
|
179
202
|
`status: open → answered` and clear `Awaiting human` through the **same `devrites-engine resolve` writer**:
|
|
180
|
-
one source of truth, two entry points (live pick vs typed verb).
|
|
181
|
-
|
|
203
|
+
one source of truth, two entry points (live pick vs typed verb). Use the writer;
|
|
204
|
+
manual edits are never destructive-operation authority.
|
|
182
205
|
|
|
183
206
|
When `/rite-resolve` does resume a stopped session, the skill does **not** auto-run the next
|
|
184
207
|
`/rite-build`. The user types the next command explicitly so:
|
|
@@ -198,24 +221,27 @@ When `/rite-resolve` does resume a stopped session, the skill does **not** auto-
|
|
|
198
221
|
log to `questions.md` as `gate: blocking`, set `state.md` `Status: awaiting_human`,
|
|
199
222
|
fire `notify:`, STOP.
|
|
200
223
|
|
|
201
|
-
The loop limits of the calling skill still apply
|
|
202
|
-
|
|
224
|
+
The loop limits of the calling skill still apply. At the limit, classify the unresolved
|
|
225
|
+
finding by the decision-ownership rule above: human-owned uncertainty becomes a blocking
|
|
226
|
+
question; an objective technical finding becomes a recorded blocker with its required
|
|
227
|
+
changes, not a request for permission to retry.
|
|
203
228
|
|
|
204
229
|
## Retry cap, stuck loops, and self-resolve
|
|
205
230
|
|
|
206
|
-
- **Cap retries
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
231
|
+
- **Cap retries:** three total attempts per root cause across wright and recovery, carrying the
|
|
232
|
+
failure and dead ends; never rerun an unchanged check.
|
|
233
|
+
- **Classify exhaustion:** human-owned contract/risk/access gaps open their gate. Otherwise
|
|
234
|
+
preserve reproduction/dead ends, set `Status: blocked` and `Next step: /rite-plan unblock`,
|
|
235
|
+
with no question or `/rite-resolve`.
|
|
236
|
+
- **Stop loops even in AFK:** `devrites-engine stuck` ends the build and applies that same
|
|
237
|
+
classification regardless of `allow_gates`.
|
|
238
|
+
- **Resolve agent-owned questions first.** Before raising a question, try to answer it from the code, the docs,
|
|
213
239
|
or `decisions.md`. Communicate only for a blocked environment, a deliverable to hand over,
|
|
214
240
|
critical info you genuinely can't access, or a credential / permission you lack. This narrows
|
|
215
241
|
needless pauses and never weakens the blocking / escalating / irreversible gates.
|
|
216
|
-
- **
|
|
242
|
+
- **Use human intervention only for human-owned work.** A `human_intervention` pause is for what the agent
|
|
217
243
|
literally cannot do (create a cloud account, click a console button): never for writing code,
|
|
218
|
-
writing tests, or reviewing.
|
|
244
|
+
writing tests, or reviewing. The agent's own work is not a valid human gate.
|
|
219
245
|
|
|
220
246
|
## What the rule does NOT cover
|
|
221
247
|
|
|
@@ -228,7 +254,7 @@ This contract is about **human pauses**. It does not weaken or replace:
|
|
|
228
254
|
are unproven at `/rite-prove`.
|
|
229
255
|
- `/clear` / `/compact` advice: context-hygiene rules are unchanged.
|
|
230
256
|
|
|
231
|
-
AFK
|
|
257
|
+
AFK changes which decisions are automatic. It changes nothing else.
|
|
232
258
|
|
|
233
259
|
## Cross-reference
|
|
234
260
|
|