devrites 3.0.7 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +82 -50
- 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/0012-semantic-workspace-upgrades.md +77 -0
- package/docs/adr/README.md +4 -0
- package/docs/agents/triage-labels.md +7 -7
- package/docs/architecture.md +179 -141
- package/docs/cli.md +47 -12
- package/docs/command-map.md +61 -38
- package/docs/engine/agent-contract.md +92 -15
- package/docs/engine/commands.md +248 -72
- package/docs/engine/state-schema.md +52 -23
- package/docs/engine/workspace-schema.md +103 -15
- package/docs/extensions.md +1 -1
- package/docs/flow.md +86 -51
- package/docs/harness-compliance.md +29 -5
- package/docs/orchestration.md +107 -79
- package/docs/quick-reference.md +11 -3
- package/docs/release.md +4 -3
- package/docs/skills.md +67 -38
- package/docs/usage.md +84 -39
- 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 +43 -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 +118 -0
- package/engine/internal/lib/readinessartifact.go +533 -0
- package/engine/internal/lib/readinessartifact_test.go +422 -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=legacycontract.golden +1 -0
- 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 +167 -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 +73 -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/agents/devrites-upgrade-planner.md +100 -0
- 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 +12 -9
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +4 -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 +200 -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 +40 -10
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/.claude/skills/rite/SKILL.md +10 -6
- package/pack/.claude/skills/rite/reference/menu.md +13 -7
- 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 +41 -39
- 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/spec-drift-guard.md +10 -4
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/.claude/skills/rite-clarify/SKILL.md +90 -0
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/.claude/skills/rite-define/SKILL.md +58 -32
- package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/.claude/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +47 -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-upgrade/SKILL.md +125 -0
- package/pack/.claude/skills/rite-vet/SKILL.md +114 -113
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +50 -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 +73 -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/agents/devrites-upgrade-planner.md +100 -0
- 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 +12 -9
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +4 -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 +200 -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 +40 -10
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/generated/claude/skills/rite/SKILL.md +10 -6
- package/pack/generated/claude/skills/rite/reference/menu.md +13 -7
- 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 +41 -39
- 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/spec-drift-guard.md +10 -4
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +90 -0
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/generated/claude/skills/rite-define/SKILL.md +58 -32
- package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/claude/skills/rite-plan/SKILL.md +47 -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-upgrade/SKILL.md +125 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +114 -113
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +50 -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 +79 -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/agents/devrites-upgrade-planner.toml +106 -0
- 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 +19 -12
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +4 -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 +200 -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 +40 -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 +21 -13
- package/pack/generated/codex/skills/rite/reference/menu.md +13 -7
- 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 +41 -39
- 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/spec-drift-guard.md +10 -4
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +106 -0
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +61 -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 +65 -35
- package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +18 -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 +54 -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-upgrade/SKILL.md +141 -0
- package/pack/generated/codex/skills/rite-upgrade/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +121 -116
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +50 -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 +445 -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/engine/commands.md
CHANGED
|
@@ -15,19 +15,21 @@ exhaustive current command and hook inventory; see
|
|
|
15
15
|
| code | meaning |
|
|
16
16
|
| ---- | ------------------------------------------------------------- |
|
|
17
17
|
| `0` | ok / gate passed |
|
|
18
|
+
| `1` | command ran but could not complete its requested operation |
|
|
18
19
|
| `2` | usage error (bad args, unknown command, unknown `--harness`) |
|
|
19
|
-
| `3` | blocked: a gate pause or a
|
|
20
|
+
| `3` | blocked: a gate pause or a safety refuse (`doctor`) |
|
|
20
21
|
|
|
21
|
-
Exit `3`
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
Exit `3` means the engine paused or refused an unsafe action; it does not mean
|
|
23
|
+
the process crashed. It prints a structured message that names exactly what to
|
|
24
|
+
resolve before retrying. Both a completeness gate (`readiness` or `seal`) and a
|
|
25
|
+
`doctor` refusal for newer state or unsafe root selection use this code. AFK
|
|
26
|
+
treats it as a pause.
|
|
26
27
|
|
|
27
28
|
## Gates: `readiness` / `seal`
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
**gate-scoped
|
|
30
|
+
These deterministic completeness gates are **phase-relative** and
|
|
31
|
+
**gate-scoped**. Each command checks only the sections required for that gate
|
|
32
|
+
when it runs.
|
|
31
33
|
|
|
32
34
|
- `devrites-engine readiness <slug>` asks whether the sections required to **leave the
|
|
33
35
|
feature's current phase** are complete. A section that is not yet required (e.g.
|
|
@@ -46,18 +48,29 @@ $ echo $?
|
|
|
46
48
|
3
|
|
47
49
|
```
|
|
48
50
|
|
|
49
|
-
## `doctor`: version triangle
|
|
51
|
+
## `doctor`: root facts and version triangle
|
|
50
52
|
|
|
51
|
-
`devrites-engine doctor`
|
|
52
|
-
|
|
53
|
+
`devrites-engine doctor` is read-only. It reports the canonical action root,
|
|
54
|
+
why that root was selected, Git's physical topology, and the three versions that
|
|
55
|
+
can drift:
|
|
53
56
|
|
|
54
57
|
```
|
|
58
|
+
project: /work/example
|
|
59
|
+
root: /work/example/.devrites
|
|
60
|
+
root-selection: git-ancestor
|
|
61
|
+
git: top=/work/example dir=/work/example/.git common=/work/example/.git linked-worktree=false submodule=false
|
|
55
62
|
binary: X.Y.Z
|
|
56
63
|
pack: X.Y.Z
|
|
57
|
-
state-schema:
|
|
64
|
+
state-schema: v2 (binary supports v2)
|
|
58
65
|
verdict: ok: binary, pack, and state schema are compatible
|
|
66
|
+
hazards: ok
|
|
59
67
|
```
|
|
60
68
|
|
|
69
|
+
- **Parent `.devrites` beyond the current Git root, a physical path escape, or
|
|
70
|
+
an external `DEVRITES_WORKSPACE`** → a named hazard and `REFUSE` (exit `3`).
|
|
71
|
+
The report includes one pasteable `fix:` command.
|
|
72
|
+
- **Stale `ACTIVE` or canonical/generated residue** → a named warning (exit
|
|
73
|
+
`0`) with its repair command.
|
|
61
74
|
- **Binary older than the pack** → a `WARN` (exit `0`): an older binary still
|
|
62
75
|
runs; update it when convenient.
|
|
63
76
|
- **State schema a newer major than the binary supports** → a `REFUSE` (exit
|
|
@@ -66,8 +79,23 @@ verdict: ok: binary, pack, and state schema are compatible
|
|
|
66
79
|
|
|
67
80
|
The pack version is discovered from `.claude/devrites.version` or the project
|
|
68
81
|
`package.json`; when neither exists the pack is reported `unknown` and no skew is
|
|
69
|
-
asserted. Doctor also
|
|
70
|
-
|
|
82
|
+
asserted. Doctor also reports linked-worktree/submodule identity, merge/rebase
|
|
83
|
+
state, host-artifact drift, and project extensions that have artifacts but no
|
|
84
|
+
optional `provenance.json`.
|
|
85
|
+
|
|
86
|
+
### Root safety at command dispatch
|
|
87
|
+
|
|
88
|
+
For commands on the shared workspace router, the engine resolves the action
|
|
89
|
+
root once before the command body runs. Read-only and diagnostic forms can still
|
|
90
|
+
degrade cleanly outside a workspace. A form that writes workspace or Git state
|
|
91
|
+
preserves every unsafe-root refusal and exits `3` before its command body runs.
|
|
92
|
+
|
|
93
|
+
Strict forms include `footprint log`, `stuck log`, `recovery record|clear`,
|
|
94
|
+
`clarify-return`, `reconcile`, mutating `resolve` forms, `close-out`,
|
|
95
|
+
`decisions index`, `ledger sync`, `learnings add`, `timeline log|purge`,
|
|
96
|
+
`health run|check|record`, `review-fingerprints --write`,
|
|
97
|
+
`reviewer-stats record`, every `forge` verb, `extensions sync`, `context sync`,
|
|
98
|
+
and `runbook run|resume`. `resolve next-qid` stays read-only.
|
|
71
99
|
|
|
72
100
|
## `snapshot`: workspace status JSON
|
|
73
101
|
|
|
@@ -84,9 +112,9 @@ The cache lives under `/tmp/compound-engineering/devrites/repo-profile` by defau
|
|
|
84
112
|
|
|
85
113
|
## `migrate`: legacy aliases and old layouts
|
|
86
114
|
|
|
87
|
-
`devrites-engine migrate`
|
|
88
|
-
|
|
89
|
-
|
|
115
|
+
`devrites-engine migrate` keeps older `.devrites/features/<slug>/` workspaces
|
|
116
|
+
readable while using `.devrites/work/<slug>/` as the canonical live location.
|
|
117
|
+
Migration is:
|
|
90
118
|
|
|
91
119
|
- **idempotent**: a second run is a no-op (`already up to date`);
|
|
92
120
|
- **backed up**: the pre-migration `work/` and `ACTIVE` are snapshotted to a
|
|
@@ -99,10 +127,16 @@ readable, and the migration path is:
|
|
|
99
127
|
The phase is derived from the legacy `state.md`, defaulting to `build` when it
|
|
100
128
|
can't be read.
|
|
101
129
|
|
|
130
|
+
`devrites-engine update` refreshes the installed binary and pack. Migration
|
|
131
|
+
stops at structural compatibility and does not certify old planning artifacts
|
|
132
|
+
against current workflow rules. Build readiness routes an active workspace with
|
|
133
|
+
stale semantic artifacts to `/rite-upgrade [slug]`; that public rite preserves
|
|
134
|
+
completed work and reconciles only unfinished planning.
|
|
135
|
+
|
|
102
136
|
## Hooks: `hook <name> --harness=claude|codex`
|
|
103
137
|
|
|
104
|
-
One binary serves
|
|
105
|
-
|
|
138
|
+
One binary serves Claude Code and Codex through thin per-harness adapters.
|
|
139
|
+
Hooks are **fail-open and read-only unless they explicitly gate**.
|
|
106
140
|
|
|
107
141
|
- `devrites-engine hook orient --harness=H` emits the SessionStart orientation for the
|
|
108
142
|
active feature (named by `.devrites/ACTIVE`) as the harness's
|
|
@@ -112,28 +146,40 @@ Every hook is **fail-open and read-only unless it explicitly gates**.
|
|
|
112
146
|
brownfield → `/rite-adopt`, …); the `.devrites/.first-run-shown` marker keeps
|
|
113
147
|
it from repeating. Silent (exit `0`, no output) outside a workspace or once
|
|
114
148
|
the marker exists.
|
|
115
|
-
- `devrites-engine hook auq`
|
|
116
|
-
|
|
117
|
-
and
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
149
|
+
- `devrites-engine hook auq` observes a completed `AskUserQuestion` call. It
|
|
150
|
+
appends one metadata-only `human-wait-resumed` v1 row per question to the root
|
|
151
|
+
and feature event logs. Canonical workflow answers stay in `questions.md`;
|
|
152
|
+
telemetry stores neither the prompt nor the answer. It never tunes, blocks,
|
|
153
|
+
or replies and stays silent outside an active workspace. This is Claude-only
|
|
154
|
+
because the Codex host exposes no equivalent post-user-input hook.
|
|
155
|
+
- `devrites-engine hook git-guard --harness=H` silently passes ordinary Git,
|
|
156
|
+
denies ambiguous high-impact shell forms with a direct-literal remediation,
|
|
157
|
+
and gates an unambiguous destructive operation on one exact digest. With no
|
|
158
|
+
grant it opens one idempotent escalating question. The exact answer
|
|
159
|
+
`Authorize once` is valid for 15 minutes and is atomically consumed before
|
|
160
|
+
the tool runs, so a failed tool call still spends it. Questions, the private
|
|
161
|
+
consumption ledger, events, and diagnostics never retain the raw command,
|
|
162
|
+
normalized tokens, paths, or refs.
|
|
123
163
|
- `devrites-engine hook stop-gate --harness=H` refuses to end a turn at a provably
|
|
124
164
|
inconsistent **rest point**, such as a feature in phase `seal` or `ship` with
|
|
125
165
|
empty `evidence.md` or `proof.md`. It does not check whole-feature completeness,
|
|
126
|
-
so normal in-progress work is never blocked.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
session.
|
|
166
|
+
so normal in-progress work is never blocked. By default, it records a
|
|
167
|
+
would-be block in the feature's `.stop-gate.log` (mirroring
|
|
168
|
+
`devrites-engine hook stop-gate`) and allows the stop. Set
|
|
169
|
+
`DEVRITES_STOP_GATE=enforce` to block. The harness's `stop_hook_active` loop
|
|
170
|
+
guard prevents the hook from wedging a session.
|
|
171
|
+
|
|
172
|
+
When a guard makes a real decision, it appends a metadata-only
|
|
173
|
+
`devrites-event/v1` row. The row says which stable rule fired, whether the guard
|
|
174
|
+
was enforced, observed, unavailable, or bypassed, and which host delivered it.
|
|
175
|
+
It never copies the command, tool payload, fetched content, denial prose, or an
|
|
176
|
+
absolute path. Event-write failure stays fail-open and cannot change the hook's
|
|
177
|
+
decision.
|
|
131
178
|
|
|
132
179
|
### Fail-open guard
|
|
133
180
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
blocked):
|
|
181
|
+
An inline POSIX guard makes a missing binary a no-op, so a teammate without
|
|
182
|
+
`devrites-engine` installed is not blocked:
|
|
137
183
|
|
|
138
184
|
```sh
|
|
139
185
|
command -v devrites-engine >/dev/null 2>&1 && devrites-engine hook orient --harness=claude || exit 0
|
|
@@ -160,9 +206,10 @@ Prohibitions tables as a blocking spec-gate check.
|
|
|
160
206
|
|
|
161
207
|
## `analyze`: cross-artifact coverage & consistency
|
|
162
208
|
|
|
163
|
-
`devrites-engine analyze [slug]`
|
|
164
|
-
|
|
165
|
-
|
|
209
|
+
Before code is written, `devrites-engine analyze [slug]` compares a feature's
|
|
210
|
+
`spec.md` with its `tasks.md`. This catches coverage gaps while they still need
|
|
211
|
+
only a one-line plan edit instead of a mid-build reslice. The Markdown report
|
|
212
|
+
has four passes:
|
|
166
213
|
|
|
167
214
|
- **Coverage**: a spec `AC-###` that no slice `Satisfies:` (**CRITICAL**; legacy `[ACn]` remains supported).
|
|
168
215
|
- **Consistency**: a slice that `Satisfies:` an AC the spec never defines (**CRITICAL**).
|
|
@@ -178,31 +225,77 @@ duplicated or conflicting requirements on top of this deterministic floor.
|
|
|
178
225
|
|
|
179
226
|
## `review-integrity`: the silent-reviewer gate
|
|
180
227
|
|
|
181
|
-
`devrites-engine review-integrity [slug]`
|
|
182
|
-
|
|
183
|
-
sections and flags any
|
|
184
|
-
A zero-count summary
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
228
|
+
`devrites-engine review-integrity [slug]` catches reviews that return only
|
|
229
|
+
"looks good, nothing found." It parses the `## Spec` and `## Code review`
|
|
230
|
+
sections of `review.md` and flags any section with neither a bold severity label
|
|
231
|
+
nor a `No-findings:` justification. A zero-count summary does not count as a
|
|
232
|
+
finding, and an all-zero tally is treated as a rubber stamp. Exit `0` means
|
|
233
|
+
every axis is accounted for, or that `review.md` is absent or freeform. Exit
|
|
234
|
+
`1` means an axis is silent and unjustified.
|
|
235
|
+
`/rite-review` runs this check after writing `review.md`; `/rite-seal` treats
|
|
236
|
+
`rc=1` as an Important finding about review completeness. Like
|
|
237
|
+
`doubt-coverage` and the footprint roster, this command checks that the account
|
|
238
|
+
exists, not whether its judgment is correct.
|
|
239
|
+
|
|
240
|
+
## `timeline`: local, privacy-bounded workflow trace
|
|
241
|
+
|
|
242
|
+
`timeline log` accepts only validated `devrites-event/v1` facts. Legacy
|
|
243
|
+
free-text `--skill`, `--decision`, and `--note` writes are refused; `list`
|
|
244
|
+
continues to print old rows unchanged for compatibility. Canonical traces use a
|
|
245
|
+
stable `DEVRITES_RUN_ID` across related calls and the small event vocabulary
|
|
246
|
+
`run-started`, phase/gate events, `run-interrupted`, `run-resumed`, and
|
|
247
|
+
`run-finished`:
|
|
196
248
|
|
|
197
249
|
```bash
|
|
198
|
-
devrites-engine timeline log
|
|
199
|
-
|
|
200
|
-
|
|
250
|
+
devrites-engine timeline log run-started \
|
|
251
|
+
--slug auth-tokens \
|
|
252
|
+
--execution-mode named \
|
|
253
|
+
--guard-strength n/a \
|
|
254
|
+
--reason-id DRV-ROOT-SELECTED \
|
|
255
|
+
--host codex
|
|
256
|
+
|
|
257
|
+
devrites-engine timeline log run-finished \
|
|
258
|
+
--slug auth-tokens \
|
|
259
|
+
--outcome passed \
|
|
260
|
+
--execution-mode named \
|
|
261
|
+
--guard-strength n/a \
|
|
262
|
+
--reason-id DRV-GATE-SEAL-PASSED \
|
|
263
|
+
--host codex \
|
|
264
|
+
--evidence .devrites/work/auth-tokens/seal.md
|
|
201
265
|
```
|
|
202
266
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
267
|
+
`--execution-mode`, `--guard-strength`, and `--reason-id` are required. Rows may
|
|
268
|
+
also carry phase IDs, rule IDs, project-relative evidence paths, and a host ID.
|
|
269
|
+
They never retain prompts, question/answer text, source or diff bodies, model
|
|
270
|
+
prose, absolute paths, user/external identifiers, auth/config/secrets, or token
|
|
271
|
+
estimates. The current v1 contract exposes host but not model, token, or cost
|
|
272
|
+
fields, so the engine does not infer them.
|
|
273
|
+
|
|
274
|
+
`timeline report [--run <opaque-id>] [--json]` reads at most the last 4 MiB and
|
|
275
|
+
4,096 valid v1 rows. It reports observed run and phase duration, retry and
|
|
276
|
+
human-wait counts, interruption/resume linkage, active execution/guard mode,
|
|
277
|
+
the last failed gate reason, stale-evidence/degradation counts, and final
|
|
278
|
+
outcome. Missing, corrupt, oversized, legacy, or truncated input degrades the
|
|
279
|
+
report only. Legacy and corrupt rows are counted as ignored and never
|
|
280
|
+
interpreted as v1. The statusline and `progress` reuse these display facts but
|
|
281
|
+
never treat them as lifecycle authority.
|
|
282
|
+
|
|
283
|
+
Each telemetry log stops accepting new rows at 16 MiB. Hitting that bound
|
|
284
|
+
degrades telemetry only; it cannot weaken or strengthen a workflow decision.
|
|
285
|
+
|
|
286
|
+
`timeline purge (--before <RFC3339> | --run <opaque-id>)...` removes only valid
|
|
287
|
+
matching v1 rows from `.devrites/timeline.jsonl` and the live feature
|
|
288
|
+
`events.jsonl` files. When both selectors are present they form an intersection.
|
|
289
|
+
It never touches state, questions, decisions, evidence, recovery, capability,
|
|
290
|
+
or allowlist files. Purge is bounded to 16 MiB per file and refuses symlinks,
|
|
291
|
+
oversized rows, concurrent changes, and unsafe roots without mutation.
|
|
292
|
+
|
|
293
|
+
Telemetry is local instrumentation only; DevRites sends no analytics or remote
|
|
294
|
+
traces. Review the retention needs, then use exact purge selectors. Reports do
|
|
295
|
+
not interpret legacy rows, so manually delete legacy log files if their old
|
|
296
|
+
free-text content must be removed. Deleting only
|
|
297
|
+
`.devrites/timeline.jsonl` and live feature `events.jsonl` files is safe for
|
|
298
|
+
workflow correctness; the engine recreates them as needed.
|
|
206
299
|
|
|
207
300
|
## `health`: code-health dashboard and history
|
|
208
301
|
|
|
@@ -224,8 +317,9 @@ devrites-engine health record 8.5 "tests green; one follow-up" --note "review-fi
|
|
|
224
317
|
devrites-engine health list --limit 10
|
|
225
318
|
```
|
|
226
319
|
|
|
227
|
-
Scores must be `0..10`. The label should name the evidence
|
|
228
|
-
|
|
320
|
+
Scores must be `0..10`. The label should name the evidence rather than give a
|
|
321
|
+
subjective impression. Skill health stays static until DevRites records
|
|
322
|
+
per-skill run outcomes; use `scripts/skill-pruning-audit.mjs` for pruning
|
|
229
323
|
signals instead of inventing telemetry.
|
|
230
324
|
|
|
231
325
|
## `review-fingerprints`: stable IDs for findings
|
|
@@ -239,9 +333,10 @@ bold severity labels (`Critical`, `Important`, `Suggestion`, `Nit`, `FYI`) and e
|
|
|
239
333
|
devrites-engine review-fingerprints --write auth-tokens
|
|
240
334
|
```
|
|
241
335
|
|
|
242
|
-
The IDs
|
|
243
|
-
copying full review text into every downstream surface.
|
|
244
|
-
command only
|
|
336
|
+
The IDs let callers correlate recurring findings, dismissals, and later
|
|
337
|
+
learning without copying full review text into every downstream surface.
|
|
338
|
+
`review-integrity` remains the gate; this command records only stable
|
|
339
|
+
references.
|
|
245
340
|
|
|
246
341
|
## `reviewer-stats`: dispatch outcomes that gate the fan-out
|
|
247
342
|
|
|
@@ -263,8 +358,9 @@ devrites-engine reviewer-stats record devrites-performance-reviewer 0 auth-token
|
|
|
263
358
|
devrites-engine reviewer-stats report
|
|
264
359
|
```
|
|
265
360
|
|
|
266
|
-
Thresholds live in the engine
|
|
267
|
-
or
|
|
361
|
+
Thresholds live in the engine. The caller reads the verdict without
|
|
362
|
+
recalculating or overriding the streak. A user-requested full panel still
|
|
363
|
+
dispatches every reviewer.
|
|
268
364
|
|
|
269
365
|
## `reviewers list`: bounded reviewer aliases
|
|
270
366
|
|
|
@@ -282,6 +378,84 @@ surface (`cli` must be `claude` or `codex`; `model` and `agent` are opaque strin
|
|
|
282
378
|
}
|
|
283
379
|
```
|
|
284
380
|
|
|
381
|
+
## `forge`: isolated candidate worktrees
|
|
382
|
+
|
|
383
|
+
Forge compares two or three implementation strategies without letting a worker
|
|
384
|
+
choose its own worktree, branch, or merge target. The engine owns those paths in
|
|
385
|
+
one `devrites-forge/v1` manifest:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
devrites-engine forge plan SLICE-004 feature-slug \
|
|
389
|
+
--strategy A='small adapter' \
|
|
390
|
+
--strategy B='native integration' \
|
|
391
|
+
--acceptance-hash <full-sha256> \
|
|
392
|
+
--test-plan-hash <full-sha256> \
|
|
393
|
+
--worker-binding manifest-env-v1
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
`plan` requires a clean primary checkout, 2 or 3 contiguous candidates, and
|
|
397
|
+
complete hashes for the acceptance and test-plan scorecards. It writes the
|
|
398
|
+
manifest before the first Git side effect, then creates candidate worktrees
|
|
399
|
+
under a sibling directory named `.<repo>.devrites-forge/<run-id>/`. The
|
|
400
|
+
manifest stays under
|
|
401
|
+
`.devrites/work/<slug>/.forge/<run-id>/manifest.json`.
|
|
402
|
+
|
|
403
|
+
Parallel Forge needs an exact host binding. Omitting
|
|
404
|
+
`--worker-binding manifest-env-v1` is a supported fallback, not a partial
|
|
405
|
+
parallel run. The command exits `0` with:
|
|
406
|
+
|
|
407
|
+
```json
|
|
408
|
+
{"status":"degraded","mode":"serial","reason":"supported worker binding was not declared"}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
It creates no manifest, branch, or worktree in that case. An unsafe repository
|
|
412
|
+
topology, dirty primary checkout, in-progress Git operation, unavailable
|
|
413
|
+
process-liveness proof, or path collision also returns a bounded serial
|
|
414
|
+
degradation when it can do so safely. Invalid arguments or a broken manifest
|
|
415
|
+
fail instead of silently choosing a target.
|
|
416
|
+
|
|
417
|
+
Use `forge process-token <pid>` to obtain the process-start token for a real
|
|
418
|
+
worker. A bound candidate wright receives all five variables below and runs
|
|
419
|
+
from the candidate worktree:
|
|
420
|
+
|
|
421
|
+
```text
|
|
422
|
+
DEVRITES_FORGE_RUN_ID
|
|
423
|
+
DEVRITES_FORGE_CANDIDATE
|
|
424
|
+
DEVRITES_FORGE_WORKER_ID
|
|
425
|
+
DEVRITES_FORGE_WORKER_PID
|
|
426
|
+
DEVRITES_FORGE_PROCESS_START
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
The binding is all-or-none. `wright-scope` checks the manifest, physical
|
|
430
|
+
working directory, repository common directory, candidate branch, worker ID,
|
|
431
|
+
live PID/start token, and leaf-agent identity before it permits a write. A
|
|
432
|
+
partial, stale, sibling, foreign, or tampered binding is denied.
|
|
433
|
+
|
|
434
|
+
The remaining commands advance only manifest-owned state:
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
devrites-engine forge record <run-id> A running \
|
|
438
|
+
--worker-id <id> --pid <pid> --process-start <token>
|
|
439
|
+
devrites-engine forge record <run-id> A finished --worker-id <id>
|
|
440
|
+
devrites-engine forge extract <run-id> A
|
|
441
|
+
devrites-engine forge record <run-id> winner A --worker-id <judge-id>
|
|
442
|
+
devrites-engine forge merge <run-id> A
|
|
443
|
+
devrites-engine forge record <run-id> verification verified \
|
|
444
|
+
--worker-id <verifier-id>
|
|
445
|
+
devrites-engine forge cleanup <run-id>
|
|
446
|
+
devrites-engine forge reap [feature-slug]
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
Extract every candidate before recording and merging the judge's winner.
|
|
450
|
+
Extraction snapshots the full candidate tree, pins its commit, tree, and binary
|
|
451
|
+
delta hash, and refuses unrepresentable or still-live state. Merge requires the
|
|
452
|
+
recorded winner, a clean unchanged primary baseline, every candidate extracted,
|
|
453
|
+
and an exact fast-forward result. Cleanup runs only after the winner landed and
|
|
454
|
+
independent verification was recorded as `verified`. It preserves anything
|
|
455
|
+
dirty, live, foreign, ambiguous, or otherwise unsafe. `reap` follows the same
|
|
456
|
+
manifest-only rule for interrupted runs and never deletes a branch by name
|
|
457
|
+
alone.
|
|
458
|
+
|
|
285
459
|
## `extensions` / `overrides`: project extensibility
|
|
286
460
|
|
|
287
461
|
Two project-local surfaces let a team extend the pack without forking it. The
|
|
@@ -301,10 +475,12 @@ full contract is in [extensions.md](../extensions.md).
|
|
|
301
475
|
reads `.devrites/context.yaml` (`context_file:` or `context_files:`), then falls back to existing
|
|
302
476
|
`AGENTS.md` / `CLAUDE.md`, then `AGENTS.md`. Paths must be project-relative.
|
|
303
477
|
|
|
304
|
-
`devrites-engine context show [--json]` is read-only. It
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
478
|
+
`devrites-engine context show [--json]` is read-only. It uses the same physical
|
|
479
|
+
root facts as `doctor`: canonical and lexical roots, selection reason, Git
|
|
480
|
+
top-level/dir/common-dir/superproject facts, active workspace source, and stable
|
|
481
|
+
hazards with pasteable remediations. `--json` emits one direct document for
|
|
482
|
+
wrappers that need to know where a command will act. `context sync` refuses an
|
|
483
|
+
unsafe root instead of writing through a fallback.
|
|
308
484
|
|
|
309
485
|
## `runbook`: tiny local automation
|
|
310
486
|
|
|
@@ -321,8 +497,8 @@ steps:
|
|
|
321
497
|
|
|
322
498
|
`engine` runs a local `devrites-engine` subcommand, `rite` prints the Claude/Codex dispatch form,
|
|
323
499
|
`shell` runs in the project root, and `gate` writes `.devrites/runs/<id>/state.json` then exits `3`.
|
|
324
|
-
Resume with `devrites-engine runbook resume <id>`. This
|
|
325
|
-
|
|
500
|
+
Resume with `devrites-engine runbook resume <id>`. This command handles
|
|
501
|
+
repeatable local runbooks; it does not replace the lifecycle.
|
|
326
502
|
|
|
327
503
|
## Concurrency
|
|
328
504
|
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
# `.devrites/` state schema (
|
|
1
|
+
# `.devrites/` state schema (v2)
|
|
2
2
|
|
|
3
|
-
The `devrites-engine` binary reads a project's workflow state from plain files
|
|
4
|
-
`.devrites/`. Those files are the source of truth and
|
|
5
|
-
human
|
|
3
|
+
The `devrites-engine` binary reads a project's workflow state from plain files
|
|
4
|
+
under `.devrites/`. Those hand-editable files are the source of truth, and the
|
|
5
|
+
engine reads human edits directly.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
<!-- authority:schema-version:start -->
|
|
8
|
+
`schemaVersion: 2`.
|
|
9
|
+
<!-- authority:schema-version:end -->
|
|
8
10
|
|
|
9
11
|
For the layered load-order diagram, budget table, manifest/alias model, and
|
|
10
12
|
phase-required section matrix, see [`workspace-schema.md`](workspace-schema.md).
|
|
@@ -25,6 +27,9 @@ phase-required section matrix, see [`workspace-schema.md`](workspace-schema.md).
|
|
|
25
27
|
decisions.md DEC-### decision log
|
|
26
28
|
assumptions.md assumption register
|
|
27
29
|
questions.md Q-### question register
|
|
30
|
+
decision-coverage.md digest-bound clarification verdict
|
|
31
|
+
eng-review.md digest-bound implementation-readiness verdict
|
|
32
|
+
test-plan.md build-entry and acceptance-to-test plan
|
|
28
33
|
state.md compact cursor
|
|
29
34
|
evidence.md EVID-### command/action proof
|
|
30
35
|
touched-files.md implementation file map
|
|
@@ -45,9 +50,9 @@ code. A feature's spec groups deltas under `ADDED`, `MODIFIED`, or `REMOVED`
|
|
|
45
50
|
Requirements headings tagged with `capability: <c>`. On ship,
|
|
46
51
|
`devrites-engine ledger sync` folds them in: ADDED appends, MODIFIED replaces by
|
|
47
52
|
header identity, and REMOVED deletes. Because it lives outside `work/`, the
|
|
48
|
-
ledger survives close-out archival. Unlike the rest of
|
|
49
|
-
|
|
50
|
-
proven contract
|
|
53
|
+
ledger survives close-out archival. Unlike the rest of `.devrites/`, it is
|
|
54
|
+
**git-tracked** (`.devrites/*` + `!.devrites/specs/`). Git therefore shares the
|
|
55
|
+
proven contract across clones. Grammar and delta rules:
|
|
51
56
|
[`spec-grammar.md`](../../pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md).
|
|
52
57
|
|
|
53
58
|
Backward compatibility: `.devrites/features/<slug>/` remains readable as a legacy
|
|
@@ -94,19 +99,43 @@ requires only the sections needed to leave it, and the set grows additively down
|
|
|
94
99
|
the arc. A section that is not yet required (e.g. `proof` during the `spec`
|
|
95
100
|
phase) never blocks.
|
|
96
101
|
|
|
97
|
-
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
102
|
+
<!-- authority:phase-contract:start -->
|
|
103
|
+
| phase | normal resume | required sections | transition right |
|
|
104
|
+
| --- | --- | --- | --- |
|
|
105
|
+
| `frame` | `/rite-frame` | *(none)* | Frame an unstructured request before lifecycle work. |
|
|
106
|
+
| `spec` | `/rite-spec` | `spec` | Author the product specification. |
|
|
107
|
+
| `clarify` | `/rite-clarify` | `spec` | Close decision coverage in the written specification. |
|
|
108
|
+
| `temper` | `/rite-temper` | `spec` | Optionally challenge the clarified specification strategy. |
|
|
109
|
+
| `define` | `/rite-define` | `spec`, `plan` | Author and approve the initial implementation plan. |
|
|
110
|
+
| `plan` | `/rite-vet` | `spec`, `plan` | Hold the approved or repaired plan checkpoint for engineering review. |
|
|
111
|
+
| `vet` | `/rite-vet` | `spec`, `plan`, `decisions`, `tasks` | Review implementation readiness before build. |
|
|
112
|
+
| `build` | `/rite-build` | `spec`, `plan`, `decisions`, `tasks` | Implement the next approved vertical slice. |
|
|
113
|
+
| `converge` | `/rite-converge` | `spec`, `plan`, `decisions`, `tasks` | Recover unmet clarified intent into new slices. |
|
|
114
|
+
| `prove` | `/rite-prove` | `spec`, `plan`, `decisions`, `tasks`, `proof` | Produce acceptance evidence for the implementation. |
|
|
115
|
+
| `polish` | `/rite-polish` | `spec`, `plan`, `decisions`, `tasks`, `proof` | Apply the bounded quality pass. |
|
|
116
|
+
| `review` | `/rite-review` | `spec`, `plan`, `decisions`, `tasks`, `proof` | Review the proven implementation. |
|
|
117
|
+
| `seal` | `/rite-seal` | `spec`, `plan`, `decisions`, `tasks`, `proof`, `status` | Decide the final GO or NO-GO. |
|
|
118
|
+
| `ship` | `/rite-ship` | `spec`, `plan`, `decisions`, `tasks`, `proof`, `status` | Perform authorized release and close-out mutations. |
|
|
119
|
+
| `done` | *(terminal)* | `spec`, `plan`, `decisions`, `tasks`, `proof`, `status` | Represent archived completion with no resume command. |
|
|
120
|
+
<!-- authority:phase-contract:end -->
|
|
105
121
|
|
|
106
122
|
The authoritative typed definitions live in `engine/internal/state/schema.go`.
|
|
107
123
|
`workflow_manifest.json` is a generated derivative for non-Go release tools;
|
|
108
124
|
run `go generate ./internal/state` after editing the registry.
|
|
109
125
|
|
|
126
|
+
### Clarify-return field policy
|
|
127
|
+
|
|
128
|
+
<!-- authority:clarify-return-fields:start -->
|
|
129
|
+
| field | policy |
|
|
130
|
+
| --- | --- |
|
|
131
|
+
| `phase` | derived |
|
|
132
|
+
| `status` | derived |
|
|
133
|
+
| `next_action` | derived |
|
|
134
|
+
| `return_phase` | derived |
|
|
135
|
+
| `return_next_action` | curated when present; otherwise derived |
|
|
136
|
+
| `all other state.md content` | curated and preserved byte-for-byte |
|
|
137
|
+
<!-- authority:clarify-return-fields:end -->
|
|
138
|
+
|
|
110
139
|
## `devrites-engine status <slug>`
|
|
111
140
|
|
|
112
141
|
Prints the feature's phase and, for each section, its present/empty state and
|
|
@@ -130,13 +159,13 @@ result: incomplete (missing: tasks)
|
|
|
130
159
|
- Unknown or missing slug → non-zero exit with a clear message on stderr.
|
|
131
160
|
|
|
132
161
|
`status` makes no model or network calls; it is a pure read of the files under
|
|
133
|
-
`DEVRITES_ROOT` (or the nearest `.devrites/` above the working directory).
|
|
134
|
-
|
|
135
|
-
control-plane commands share that deterministic boundary;
|
|
162
|
+
`DEVRITES_ROOT` (or the nearest `.devrites/` above the working directory).
|
|
163
|
+
There is no status cache, so the next read reflects a hand edit immediately.
|
|
164
|
+
Other workspace control-plane commands share that deterministic boundary;
|
|
165
|
+
explicit
|
|
136
166
|
install/update/source-cache I/O is isolated under `engine/internal/iohooks` as
|
|
137
167
|
defined by ADR-0008.
|
|
138
168
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
state while `specs/` is tracked).
|
|
169
|
+
<!-- authority:state-tracking:start -->
|
|
170
|
+
Git-tracked shared state: `.devrites/specs/`. Per-clone runtime state: `.devrites/work/`, `.devrites/archive/`, `.devrites/ACTIVE`.
|
|
171
|
+
<!-- authority:state-tracking:end -->
|