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,26 +1,45 @@
|
|
|
1
1
|
# DevRites workspace artifact schema
|
|
2
2
|
|
|
3
|
-
DevRites
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
A DevRites workspace is the durable record for a feature. Chat is temporary,
|
|
4
|
+
so a fresh human or AI must be able to resume from the files alone. The schema
|
|
5
|
+
follows three rules:
|
|
6
6
|
|
|
7
7
|
- Keep each Markdown file single-purpose and compact.
|
|
8
8
|
- Read the index first, then load only the files needed for the current phase.
|
|
9
9
|
- Trace every acceptance criterion through slices, proof, evidence, and touched files.
|
|
10
10
|
|
|
11
|
-
Root selection
|
|
11
|
+
Root and workspace selection use these inputs:
|
|
12
12
|
|
|
13
|
-
- `DEVRITES_ROOT` selects the project root or `.devrites/` directory
|
|
14
|
-
|
|
13
|
+
- `DEVRITES_ROOT` selects the project root or `.devrites/` directory and is
|
|
14
|
+
canonicalized to its physical path.
|
|
15
|
+
- Without an override, the engine walks from cwd only to the current Git
|
|
16
|
+
top-level. A nested repository, worktree, or submodule never inherits
|
|
17
|
+
`.devrites/` from its parent or superproject. Outside Git, the filesystem
|
|
18
|
+
ancestor walk remains available.
|
|
15
19
|
- `.devrites/ACTIVE` selects the active feature workspace.
|
|
16
20
|
- `DEVRITES_WORKSPACE` optionally names an explicit workspace path for CI/agents and overrides
|
|
17
|
-
`.devrites/ACTIVE` for commands that default to the active feature.
|
|
21
|
+
`.devrites/ACTIVE` for commands that default to the active feature. Its
|
|
22
|
+
resolved path must stay inside the selected `.devrites/` root. Setting it
|
|
23
|
+
without a selectable root is a refusing `DRV-WORKSPACE-WITHOUT-ROOT` hazard.
|
|
24
|
+
|
|
25
|
+
`devrites-engine context show --json` and `doctor` expose the same canonical
|
|
26
|
+
facts: lexical/physical project and root, selection reason, Git top-level,
|
|
27
|
+
physical Git dir/common dir/superproject, linked-worktree/submodule flags, and
|
|
28
|
+
stable hazards. The engine refuses writes when root selection is unsafe or
|
|
29
|
+
ambiguous. `doctor` reports ordinary absence without treating it as a crash.
|
|
30
|
+
|
|
31
|
+
The canonical workspace-map frontmatter declares `schemaVersion: 2`. The
|
|
32
|
+
engine reads missing/v1 declarations and legacy aliases additively, refuses a
|
|
33
|
+
version newer than it supports, and keeps the snapshot wire schema separate.
|
|
34
|
+
`devrites-engine migrate` upgrades the declaration and layout metadata; it does
|
|
35
|
+
not manufacture decision coverage, vet readiness, test plans, or proof.
|
|
18
36
|
|
|
19
37
|
Canonical live workspace:
|
|
20
38
|
|
|
21
39
|
```text
|
|
22
40
|
.devrites/
|
|
23
41
|
ACTIVE
|
|
42
|
+
timeline.jsonl # local metadata-only v1 workflow trace
|
|
24
43
|
work/
|
|
25
44
|
<slug>/
|
|
26
45
|
README.md # compact workspace map; feature.md/index.md aliases allowed
|
|
@@ -31,10 +50,19 @@ Canonical live workspace:
|
|
|
31
50
|
decisions.md # ADR-style decision log
|
|
32
51
|
assumptions.md # assumptions and validation status
|
|
33
52
|
questions.md # open/resolved human questions
|
|
53
|
+
decision-coverage.md # topology-first clarification verdict
|
|
34
54
|
plan.md # technical approach and slice strategy
|
|
35
55
|
tasks.md # vertical slices
|
|
36
56
|
traceability.md # AC/REQ -> slices -> tests/evidence/files matrix
|
|
57
|
+
eng-review.md # implementation-readiness verdict
|
|
58
|
+
test-plan.md # executable proof target
|
|
37
59
|
state.md # compact cursor; status.md alias allowed
|
|
60
|
+
events.jsonl # feature-local copy of v1 workflow trace
|
|
61
|
+
recovery-attempts.jsonl # durable bounded technical-recovery ledger
|
|
62
|
+
.git-authority-consumption.jsonl # private one-shot Git grant consumption
|
|
63
|
+
.wright-allowlist # root-owned exact source/test write scope
|
|
64
|
+
.forge/
|
|
65
|
+
<run-id>/manifest.json # engine-owned Forge lifecycle and path authority
|
|
38
66
|
evidence.md # command/action proof; proof.md alias allowed
|
|
39
67
|
browser-evidence.md # optional UI/runtime browser proof
|
|
40
68
|
drift.md # optional spec/plan drift register
|
|
@@ -50,17 +78,18 @@ Canonical live workspace:
|
|
|
50
78
|
Backward compatibility: `.devrites/features/<slug>/` remains readable as an alias
|
|
51
79
|
for `.devrites/work/<slug>/`; `feature.md` and `index.md` remain valid workspace
|
|
52
80
|
maps; `status.md` remains a cursor alias for `state.md`; `proof.md` remains a
|
|
53
|
-
proof alias for `evidence.md`. Migration
|
|
54
|
-
deleting aliases.
|
|
81
|
+
proof alias for `evidence.md`. Migration normalizes compatible metadata without
|
|
82
|
+
deleting aliases or inventing evidence.
|
|
55
83
|
|
|
56
84
|
## Read order
|
|
57
85
|
|
|
58
86
|
| Phase / role | Read first | Then read | Usually skip |
|
|
59
87
|
| --- | --- | --- | --- |
|
|
60
88
|
| Spec | `README.md`, `brief.md` | `spec.md`, `references.md`, `questions.md` | `plan.md`, `evidence.md` |
|
|
61
|
-
|
|
|
89
|
+
| Clarify | `README.md`, `state.md` | `spec.md`, `decisions.md`, `assumptions.md`, `questions.md` | plan/proof artifacts |
|
|
90
|
+
| Define / plan | `README.md`, `state.md` | `spec.md`, `decision-coverage.md`, `architecture.md`, `decisions.md`, `assumptions.md` | `evidence.md` |
|
|
62
91
|
| Vet | `README.md`, `traceability.md` | `plan.md`, `tasks.md`, `architecture.md`, `decisions.md` | browser proof unless UI |
|
|
63
|
-
| Build | `state.md`, `tasks.md` | `plan.md`, `architecture.md`, `traceability.md`, `questions.md` | full evidence history |
|
|
92
|
+
| Build | `state.md`, `tasks.md` | `decision-coverage.md`, `eng-review.md`, `test-plan.md`, `plan.md`, `architecture.md`, `traceability.md`, `questions.md` | full evidence history |
|
|
64
93
|
| Prove | `traceability.md`, `tasks.md` | `evidence.md`, `browser-evidence.md`, `touched-files.md` | long plan rationale |
|
|
65
94
|
| Review / seal | `README.md`, `traceability.md` | `spec.md`, `evidence.md`, `decisions.md`, `drift.md`, `touched-files.md` | raw logs unless needed |
|
|
66
95
|
| Handoff | `README.md`, `state.md` | `handoff.md`, then linked source files | duplicated summaries |
|
|
@@ -72,6 +101,7 @@ deleting aliases.
|
|
|
72
101
|
| `README.md` / `index.md` / `feature.md` | required | `/rite-spec` | always first | 120 lines | current phase, status, next action, artifact map, read-next table, blocking gates, last updated | Must not duplicate full spec/plan/evidence. |
|
|
73
102
|
| `brief.md` | required | `/rite-spec` | clarify objective | 80 lines | Objective, Non-goals, Success definition | One-screen request and scope summary. |
|
|
74
103
|
| `spec.md` | required | `/rite-spec` | product contract | 260 lines | Problem, Goal, Non-goals, Users / actors, Requirements, Acceptance criteria, Edge Coverage, Prohibitions (must-NOT), Edge cases, Measurable success, Scope boundaries | Must use stable `REQ-###` and `AC-###`; no deep implementation details. |
|
|
104
|
+
| `decision-coverage.md` | required from clarify | `/rite-clarify` | decision/readiness audit | 200 lines | Topology, Coverage matrix, Assumption audit, Residual uncertainty, Readiness verdict | Exactly one semantic `Decision coverage: CLEAR` plus a fresh canonical input digest. Partial, Missing, unowned, open-human-gate, placeholder, or incomplete rows block. |
|
|
75
105
|
| `architecture.md` | required from plan | `/rite-define` | placement/integration work | 180 lines | Owning module / layer, Integration points, Data / API / events, Dependencies, Risks, Affected boundaries | Carries topology and boundaries, not product acceptance. |
|
|
76
106
|
| `flows.md` | optional | `/rite-spec` or `/rite-define` | lifecycle/state/sequence/data flow is hard to infer | 160 lines | diagram-specific headings | Mermaid only when it clarifies behavior; each diagram states why it matters and related IDs. |
|
|
77
107
|
| `decisions.md` | required | all phases | non-trivial product/technical choice | 200 lines | Decision log | Entries use `DEC-###`, status, context, options, decision, consequences, related IDs. |
|
|
@@ -81,7 +111,14 @@ deleting aliases.
|
|
|
81
111
|
| `plan.md` | required from plan | `/rite-define` | implementation approach | 220 lines | Approach, Slice strategy, Validation strategy, Rollback | HOW lives here, not in `spec.md`. `Validation strategy` names the Key links: cross-slice wiring `/rite-prove` walks (or `none` for single-slice features). |
|
|
82
112
|
| `tasks.md` | required from plan | `/rite-define` | build one slice | 280 lines | Slice index | Each `SLICE-###` has goal, AC IDs, likely files, tests/proof, mode, gate, dependencies, done condition. |
|
|
83
113
|
| `traceability.md` | required from plan | `/rite-define` | coverage/review/seal | 220 lines | Coverage matrix | Matrix maps AC/REQ ID, slice IDs, test/proof, evidence ID, touched files, status. |
|
|
84
|
-
| `
|
|
114
|
+
| `eng-review.md` | required from vet | `/rite-vet` | build readiness | 240 lines | Depth, Scope challenge, Build-entry preflight, Implementation readiness, Completion summary | Exactly one semantic `Implementation readiness: READY` plus a fresh canonical input digest. Non-passing preflight/readiness rows, placeholders, empty tables, or unmapped acceptance block. |
|
|
115
|
+
| `test-plan.md` | required from vet | `/rite-vet` | build/prove coverage target | 260 lines | Build-entry preflight, Coverage diagram, Per-gap test requirements, Acceptance → test map | Commands, cwd, expected signal, prerequisites, and provenance are executable. |
|
|
116
|
+
| `state.md` / `status.md` | required | all phases | current cursor | 120 lines | Cursor | `state.md` is canonical; `status.md` is a compatibility alias. Compact table/key-value cursor; later-phase clarification durably stores `return_phase` and `return_next_action` until fresh coverage restores or replans it. |
|
|
117
|
+
| root `timeline.jsonl` + feature `events.jsonl` | local telemetry only | engine/hooks | bounded report, audit, manual retention | JSONL | n/a | New writes are validated `devrites-event/v1` metadata only. Reports ignore legacy/corrupt rows and never make events lifecycle-authoritative. Exact purge may delete only these telemetry files. |
|
|
118
|
+
| `recovery-attempts.jsonl` | technical recovery only | root orchestrator | retry budget | generated | n/a | Fingerprinted, append-only failed/cleared records cap the same objective root cause at three failed attempts across agents and sessions. |
|
|
119
|
+
| `.git-authority-consumption.jsonl` | destructive Git only | `git-guard` | one-shot replay prevention | generated | n/a | `devrites-git-authority-consumption/v1` JSONL, bounded and mode `0600` where POSIX modes exist; stores only qid, exact digest, classifier reason IDs, and consumption time. |
|
|
120
|
+
| `.wright-allowlist` | build only | root orchestrator | writer scope | generated | n/a | Exact normalized project-relative files only; no directories, globs, traversal, duplicates, or `.devrites/**`. Writer self-report never expands it. |
|
|
121
|
+
| `.forge/<run-id>/manifest.json` | Forge runs only | engine | candidate ownership and lifecycle | generated | n/a | One `devrites-forge/v1` manifest owns the primary baseline, scorecard hashes, candidate paths/branches/states, worker bindings, judge winner, merge, verification, and cleanup. Duplicate, symlinked, escaped, or tampered ownership fails closed. |
|
|
85
122
|
| `evidence.md` / `proof.md` | required from prove | `/rite-build`, `/rite-prove` | proof and seal | 280 lines | Evidence log | `EVID-###`, command/action, result, related AC/slice IDs, limitations. Each acceptance criterion carries a proof class: `test` / `command` / `browser` / `judgment` (untagged reads `judgment`; `judgment` needs its one-line why). |
|
|
86
123
|
| `browser-evidence.md` | UI only | `/rite-prove`, `/rite-polish` | UI/browser proof | 220 lines | Browser evidence, Visual Verdict | Must reference real route/viewports/actions and related IDs. |
|
|
87
124
|
| `drift.md` | drift only | Spec Drift Guard | spec/plan reality mismatch | 160 lines | Drift register | `DRIFT-###`, status, evidence found, resolution, related IDs. |
|
|
@@ -90,23 +127,62 @@ deleting aliases.
|
|
|
90
127
|
| `handoff.md` | optional | `/rite-handoff` | cold resume | 120 lines | Resume, Read next, Next action | Links to source artifacts instead of copying them. |
|
|
91
128
|
| `references.md` + `references/` | optional | `/rite-spec` | external/user-supplied material | 160 lines | Reference index | Links must resolve or be external URLs. |
|
|
92
129
|
|
|
130
|
+
Telemetry is deliberately outside the correctness contract. Missing or corrupt
|
|
131
|
+
`timeline.jsonl` / `events.jsonl` may degrade `timeline report`, `progress`, or
|
|
132
|
+
the statusline, but can never change a gate, cursor, question, evidence verdict,
|
|
133
|
+
recovery budget, capability decision, or destructive-action authority. Reports
|
|
134
|
+
read a bounded tail; `timeline purge --before ...` and/or `--run ...` rewrites
|
|
135
|
+
only these logs. The engine sends no remote telemetry. Remove old unversioned
|
|
136
|
+
logs manually when their legacy free text should not be retained.
|
|
137
|
+
|
|
93
138
|
Files may exceed budgets only with a visible `Budget override: <reason>` line.
|
|
94
139
|
|
|
140
|
+
## Readiness gate binding
|
|
141
|
+
|
|
142
|
+
The typed verdict is necessary but not sufficient:
|
|
143
|
+
|
|
144
|
+
- `Coverage inputs SHA-256` binds `decision-coverage.md` to `brief.md`,
|
|
145
|
+
`spec.md`, `decisions.md`, `assumptions.md`, and `questions.md`.
|
|
146
|
+
- `Readiness inputs SHA-256` binds `eng-review.md` to `spec.md`,
|
|
147
|
+
`decision-coverage.md`, `architecture.md`, `plan.md`, `tasks.md`,
|
|
148
|
+
`traceability.md`, and `test-plan.md`.
|
|
149
|
+
|
|
150
|
+
`devrites-engine readiness-digest coverage|engineering [slug]` emits the
|
|
151
|
+
canonical field line. `build-readiness` rejects stale digests, malformed or
|
|
152
|
+
contradictory content, and missing markers. A later-phase clarification
|
|
153
|
+
retrofit uses `clarify-return enter|restore`; restore requires fresh `CLEAR`
|
|
154
|
+
coverage, while an acceptance-changing result keeps the cursor for plan repair.
|
|
155
|
+
|
|
95
156
|
## Required vs optional
|
|
96
157
|
|
|
97
158
|
Required at `/rite-spec`: workspace map, `brief.md`, `spec.md`, `state.md`,
|
|
98
159
|
`decisions.md`, `assumptions.md`, `questions.md`.
|
|
99
160
|
|
|
100
|
-
Required at `/rite-
|
|
161
|
+
Required at `/rite-clarify` and later: all spec files plus `decision-coverage.md`.
|
|
162
|
+
|
|
163
|
+
Required at `/rite-define` and later: all clarified spec files plus `architecture.md`,
|
|
101
164
|
`plan.md`, `tasks.md`, and `traceability.md`.
|
|
102
165
|
|
|
103
|
-
Required at `/rite-
|
|
166
|
+
Required at `/rite-vet` and later: all plan files plus `eng-review.md` and `test-plan.md`.
|
|
167
|
+
|
|
168
|
+
Required at `/rite-prove` and later: all vetted plan files plus `evidence.md` (or
|
|
104
169
|
`proof.md`) and `touched-files.md`.
|
|
105
170
|
|
|
106
171
|
Optional/conditional files are generated only by their producing phase:
|
|
107
172
|
`flows.md` when diagrams clarify behavior, `design-brief.md` and
|
|
108
173
|
`browser-evidence.md` for UI, `drift.md` for drift, `handoff.md` for handoff,
|
|
109
|
-
and `references.md` / `references/` when references exist.
|
|
174
|
+
and `references.md` / `references/` when references exist. The build runtime
|
|
175
|
+
creates `.wright-allowlist` and, only when needed, `recovery-attempts.jsonl`.
|
|
176
|
+
Forge creates `.forge/<run-id>/manifest.json` only after a clean, bound
|
|
177
|
+
parallel plan passes. A serial degradation creates no Forge state.
|
|
178
|
+
|
|
179
|
+
Forge candidate worktrees do not live inside `.devrites`. The manifest binds
|
|
180
|
+
them to the sibling
|
|
181
|
+
`.<repo>.devrites-forge/<run-id>/candidate-<a|b|c>` paths before Git creates
|
|
182
|
+
them. Every later extract, merge, cleanup, and reap command reloads the unique
|
|
183
|
+
manifest instead of accepting a caller-supplied path or branch. Cleanup
|
|
184
|
+
requires a landed winner and recorded successful verification, and it
|
|
185
|
+
preserves dirty, live, foreign, or ambiguous state.
|
|
110
186
|
|
|
111
187
|
## Compactness rules
|
|
112
188
|
|
|
@@ -132,6 +208,7 @@ Use these forms in generated artifacts:
|
|
|
132
208
|
| Question | `Q-001` | `questions.md` |
|
|
133
209
|
| Drift event | `DRIFT-001` | `drift.md` |
|
|
134
210
|
| Evidence | `EVID-001` | `evidence.md`, `browser-evidence.md` |
|
|
211
|
+
| Forge run | `forge-` plus 24 lowercase hex characters | `.forge/<run-id>/manifest.json` |
|
|
135
212
|
|
|
136
213
|
## Validation
|
|
137
214
|
|
|
@@ -141,6 +218,8 @@ project-wide validation path runs it against representative fixtures.
|
|
|
141
218
|
The validator checks:
|
|
142
219
|
|
|
143
220
|
- required files and headings for the current phase;
|
|
221
|
+
- supported workspace `schemaVersion` and additive legacy aliases;
|
|
222
|
+
- semantic, fresh digest-bound `CLEAR` and `READY` readiness artifacts;
|
|
144
223
|
- stable IDs and old `AC1` / `Slice 1` style regressions;
|
|
145
224
|
- acceptance criteria referenced by at least one slice;
|
|
146
225
|
- completed slices referenced by evidence;
|
package/docs/extensions.md
CHANGED
|
@@ -66,7 +66,7 @@ devrites-engine extensions sync # mirror valid extensions into .claude/ f
|
|
|
66
66
|
Public schemas live in [`../schemas/`](../schemas/): `extension-component.schema.json` and
|
|
67
67
|
`provenance.schema.json` for extension metadata, plus workspace/hook schemas for editor tooling.
|
|
68
68
|
|
|
69
|
-
`component.yaml` is
|
|
69
|
+
`component.yaml` is DevRites' native extension, preset, and bundle metadata.
|
|
70
70
|
It is **not** a plugin package descriptor; it documents what the npm-installed engine may copy or
|
|
71
71
|
validate inside the current project.
|
|
72
72
|
|
package/docs/flow.md
CHANGED
|
@@ -1,43 +1,51 @@
|
|
|
1
1
|
# DevRites flow diagrams
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
These diagrams show how the skills, agents, and rules interact. GitHub renders
|
|
4
|
+
the Mermaid blocks when you open this file in the repository.
|
|
5
5
|
|
|
6
6
|
For the full per-skill table, see [`command-map.md`](command-map.md). For the
|
|
7
7
|
"why" behind each piece, see [`architecture.md`](architecture.md).
|
|
8
8
|
|
|
9
9
|
## 1. Feature lifecycle
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
passed
|
|
13
|
-
`/rite-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
This diagram shows the normal path. Each arrow assumes that the previous
|
|
12
|
+
phase's readiness gate passed. Failures route through `/rite-clarify`,
|
|
13
|
+
`/rite-plan repair`, or `devrites-debug-recovery`. `/rite-clarify` always runs
|
|
14
|
+
but may ask zero questions; `/rite-temper` is the optional strategic branch;
|
|
15
|
+
`/rite-vet` runs on every defined plan, with depth scaled to risk. Build asks
|
|
16
|
+
the human only for genuine
|
|
17
|
+
product/scope/policy decisions, irreversible risk, or human-only access/actions;
|
|
18
|
+
`/rite-resolve` is the resume verb.
|
|
16
19
|
|
|
17
20
|
```mermaid
|
|
18
21
|
flowchart LR
|
|
19
22
|
Start([user has an idea]) --> Spec[/rite-spec/]
|
|
20
23
|
Spec -.->|UI detected| Shape[devrites-ux-shape<br/>plan UX/UI → design-brief.md]
|
|
21
24
|
Shape -.->|brief confirmed| Spec
|
|
22
|
-
Spec
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
Spec -->|spec.md ready| Clarify[/rite-clarify/]
|
|
26
|
+
Clarify -->|fresh digest-bound CLEAR<br/>big / risky| Temper[/rite-temper/] -.->|strategy.md| Define
|
|
27
|
+
Clarify -->|fresh digest-bound CLEAR<br/>low stakes| Define[/rite-define/]
|
|
28
|
+
Define -->|plan.md + tasks.md<br/>approved| Plan[(plan checkpoint)]
|
|
29
|
+
Plan -->|normal resume| Vet[/rite-vet/]
|
|
30
|
+
Vet -->|fresh digest-bound READY<br/>+ test-plan.md| Build[/rite-build/]
|
|
31
|
+
Build -.->|exact .wright-allowlist<br/>retained baseline| Wright[devrites-slice-wright]
|
|
32
|
+
Wright -.->|typed result| Build
|
|
26
33
|
Build -->|one slice done<br/>+ evidence| Build
|
|
27
34
|
Build -.->|"Forge: yes slice"| Forge[forge: K candidates<br/>→ devrites-forge-judge → 1 winner]
|
|
28
35
|
Forge -.->|winner lands<br/>forge-report.md| Build
|
|
29
|
-
Build -->|
|
|
36
|
+
Build -->|product / risk / access gate| Await{{Awaiting human<br/>state.md + questions.md}}
|
|
30
37
|
Await -->|"/rite-resolve <qid> <answer>"| Build
|
|
31
38
|
Build -->|all slices built| Prove[/rite-prove/]
|
|
32
39
|
Build -.->|resumed / adopted / stalled<br/>code vs intent| Converge[/rite-converge/]
|
|
33
|
-
Converge -.->|appends remaining slices|
|
|
40
|
+
Converge -.->|appends remaining slices<br/>invalidates old READY| Vet
|
|
41
|
+
Converge -.->|already converged| Prove
|
|
34
42
|
Prove -->|evidence captured| Polish[/rite-polish/]
|
|
35
43
|
Polish -->|polish-report.md| Review[/rite-review/]
|
|
36
44
|
Review -->|review.md<br/>Critical == 0| Seal[/rite-seal/]
|
|
37
45
|
Seal -->|GO| Ship2[/rite-ship/]
|
|
38
46
|
Ship2 -->|type-GO| Shipped([commit · push · tag · archive])
|
|
39
47
|
Seal -->|NO-GO| Repair[/rite-plan repair/]
|
|
40
|
-
Repair -->
|
|
48
|
+
Repair --> Plan
|
|
41
49
|
|
|
42
50
|
Build -.->|Spec Drift Guard| Repair
|
|
43
51
|
Prove -.->|drift / failure| Repair
|
|
@@ -49,11 +57,11 @@ flowchart LR
|
|
|
49
57
|
classDef repair fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
50
58
|
classDef gate fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
51
59
|
classDef internal fill:#0f172a,stroke:#9ca3af,color:#f9fafb
|
|
52
|
-
class Spec,Temper,Define,Vet,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
60
|
+
class Spec,Clarify,Temper,Define,Plan,Vet,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
53
61
|
class Shipped done
|
|
54
62
|
class Repair repair
|
|
55
63
|
class Await gate
|
|
56
|
-
class Shape,Forge internal
|
|
64
|
+
class Shape,Forge,Wright internal
|
|
57
65
|
```
|
|
58
66
|
|
|
59
67
|
## 2. `/rite-polish` orchestrator
|
|
@@ -85,13 +93,14 @@ emphasis dials. `normalize-only` stops after Phase 3.
|
|
|
85
93
|
|
|
86
94
|
## 3. `/rite-review` parallel axes
|
|
87
95
|
|
|
88
|
-
Review
|
|
89
|
-
|
|
96
|
+
Review assigns Spec coverage and Standards compliance to separate
|
|
97
|
+
fresh-context agents and runs them in parallel. This prevents one axis from
|
|
98
|
+
masking the other.
|
|
90
99
|
|
|
91
100
|
```mermaid
|
|
92
101
|
flowchart LR
|
|
93
|
-
R[/rite-review/] -->|
|
|
94
|
-
R -->|
|
|
102
|
+
R[/rite-review/] -->|fresh-context dispatch<br/>in parallel| S[devrites-spec-reviewer<br/>**Spec axis**]
|
|
103
|
+
R -->|fresh-context dispatch<br/>in parallel| C[devrites-code-reviewer<br/>**Standards axis**]
|
|
95
104
|
S -->|missing / partial / wrong /<br/>scope-creep findings| Combine
|
|
96
105
|
C -->|standards violations<br/>cite rule + file| Combine
|
|
97
106
|
R --> Sec[devrites-audit security]
|
|
@@ -110,10 +119,11 @@ flowchart LR
|
|
|
110
119
|
|
|
111
120
|
## 4. `/rite-seal` fan-out
|
|
112
121
|
|
|
113
|
-
The seal
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
122
|
+
The seal runs all relevant reviewers in parallel, reconciles their findings,
|
|
123
|
+
decides GO or NO-GO, and stops without running git. On GO, `/rite-ship` renders
|
|
124
|
+
the type-GO prompt and runs the irreversible commit · push · tag · archive
|
|
125
|
+
sequence. The gate uses severity, acceptance, and drift rather than an advisory
|
|
126
|
+
score.
|
|
117
127
|
|
|
118
128
|
```mermaid
|
|
119
129
|
flowchart TB
|
|
@@ -156,36 +166,45 @@ flowchart TB
|
|
|
156
166
|
|
|
157
167
|
## 5. `devrites-debug-recovery` seven-step loop
|
|
158
168
|
|
|
159
|
-
Failure recovery
|
|
169
|
+
Failure recovery starts by routing the faulty layer. `recovery route <class>`
|
|
170
|
+
returns its owner, action, and whether a human decision is actually needed.
|
|
171
|
+
The root-cause fingerprint and three-failure budget persist across agents and
|
|
172
|
+
sessions in `recovery-attempts.jsonl`; typed entries keep independent defects
|
|
173
|
+
on independent budgets.
|
|
160
174
|
|
|
161
175
|
```mermaid
|
|
162
176
|
flowchart LR
|
|
163
|
-
F([failing test /<br/>build / runtime]) -->
|
|
177
|
+
F([failing test /<br/>build / runtime]) --> Route{Route faulty layer}
|
|
178
|
+
Route -->|technical class<br/>humanPause: false| L1[Step 1<br/>Build the loop]
|
|
179
|
+
Route -->|intent / missing decision| Clarify([Clarify with the human])
|
|
164
180
|
L1 -->|fast deterministic signal| R[Step 2<br/>Reproduce]
|
|
165
181
|
R -->|exact error text| H[Step 3<br/>Ranked hypotheses 3-5]
|
|
166
182
|
H --> T[Step 4<br/>Trace when ambiguous]
|
|
167
183
|
T -->|discriminating probe| I[Step 5<br/>Instrument]
|
|
168
184
|
I -->|change one variable| Fix[Step 6<br/>Fix + regression test]
|
|
169
185
|
Fix --> C[Step 7<br/>Cleanup + classify]
|
|
170
|
-
|
|
186
|
+
C -->|green: recovery clear --class| Done([verified])
|
|
187
|
+
C -->|same root cause red:<br/>recovery record --class| Budget{3 failures<br/>used?}
|
|
188
|
+
Budget -->|no: recovery check<br/>+ exact failure| L1
|
|
189
|
+
Budget -->|yes| Block([technical blocker<br/>reproduction + dead ends])
|
|
171
190
|
|
|
172
191
|
classDef phase fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
173
192
|
classDef stop fill:#7f1d1d,stroke:#f87171,color:#fee2e2
|
|
174
193
|
class L1,R,H,T,I,Fix,C phase
|
|
175
|
-
class
|
|
194
|
+
class Block,Clarify stop
|
|
176
195
|
```
|
|
177
196
|
|
|
178
|
-
|
|
179
|
-
`pack/.claude/skills/devrites-debug-recovery/reference/`
|
|
180
|
-
|
|
197
|
+
A separate file under
|
|
198
|
+
`pack/.claude/skills/devrites-debug-recovery/reference/` documents each step.
|
|
199
|
+
This keeps the `SKILL.md` body small.
|
|
181
200
|
|
|
182
201
|
## 6. Engineering-rules carrier
|
|
183
202
|
|
|
184
203
|
Workspace-operating lifecycle skills read
|
|
185
204
|
`.claude/skills/devrites-lib/reference/standards/core.md` in step 0; compact utilities
|
|
186
|
-
keep their narrower contract local. The other rule files load on demand.
|
|
187
|
-
skills
|
|
188
|
-
|
|
205
|
+
keep their narrower contract local. The other rule files load on demand.
|
|
206
|
+
Per-phase skills use plain `Read` calls to load any additional rule files their
|
|
207
|
+
workflows need. There is no carrier skill or session-start autoload.
|
|
189
208
|
|
|
190
209
|
```mermaid
|
|
191
210
|
flowchart TD
|
|
@@ -229,9 +248,9 @@ flowchart TD
|
|
|
229
248
|
|
|
230
249
|
## 7. Workspace state model
|
|
231
250
|
|
|
232
|
-
`.devrites/work/<feature-slug>/`
|
|
233
|
-
|
|
234
|
-
|
|
251
|
+
Each phase reads its durable state from `.devrites/work/<feature-slug>/` before
|
|
252
|
+
acting. Every `rite-*` skill checks the workspace first; if `ACTIVE` is unset,
|
|
253
|
+
it tells the user to run `/rite-spec`. The optional
|
|
235
254
|
`.devrites/AFK` sentinel sits beside `ACTIVE` and toggles the session-level
|
|
236
255
|
run mode for all skills.
|
|
237
256
|
|
|
@@ -242,10 +261,11 @@ erDiagram
|
|
|
242
261
|
WORKSPACE ||--|| state : has
|
|
243
262
|
WORKSPACE ||--|| brief : has
|
|
244
263
|
WORKSPACE ||--|| spec : has
|
|
264
|
+
WORKSPACE ||--o| decision-coverage : "has (semantic + digest-bound CLEAR before planning)"
|
|
245
265
|
WORKSPACE ||--o| strategy : "has (optional: from /rite-temper)"
|
|
246
266
|
WORKSPACE ||--|| plan : "has (from /rite-define)"
|
|
247
267
|
WORKSPACE ||--|| tasks : "has: slices tagged Mode + Gate"
|
|
248
|
-
WORKSPACE ||--o| eng-review : "has (from /rite-vet
|
|
268
|
+
WORKSPACE ||--o| eng-review : "has (semantic + digest-bound READY from /rite-vet)"
|
|
249
269
|
WORKSPACE ||--o| test-plan : "has (from /rite-vet; build + prove read it)"
|
|
250
270
|
WORKSPACE ||--o{ references : "has (design refs)"
|
|
251
271
|
WORKSPACE ||--o| design-brief : "has (UI features: from /rite-spec via devrites-ux-shape; the build target)"
|
|
@@ -260,6 +280,8 @@ erDiagram
|
|
|
260
280
|
WORKSPACE ||--o| review : "has (from /rite-review)"
|
|
261
281
|
WORKSPACE ||--o| seal : "has (from /rite-seal)"
|
|
262
282
|
WORKSPACE ||--o| ship : "has (from /rite-ship; archived on close)"
|
|
283
|
+
WORKSPACE ||--o| recovery_attempts : "durable three-failure budget per root cause"
|
|
284
|
+
WORKSPACE ||--o| wright_allowlist : "root-owned exact source/test paths"
|
|
263
285
|
|
|
264
286
|
ACTIVE {
|
|
265
287
|
string slug "names the current workspace"
|
|
@@ -272,12 +294,15 @@ erDiagram
|
|
|
272
294
|
}
|
|
273
295
|
WORKSPACE {
|
|
274
296
|
string slug PK ".devrites/work/<slug>/"
|
|
297
|
+
int schemaVersion "2; older additive layouts remain readable"
|
|
275
298
|
}
|
|
276
299
|
state {
|
|
277
|
-
string phase "frame | spec | temper | define | plan | vet | build | converge | prove | polish | review | seal | ship | done"
|
|
300
|
+
string phase "frame | spec | clarify | temper | define | plan | vet | build | converge | prove | polish | review | seal | ship | done"
|
|
278
301
|
string status "running | awaiting_human | blocked | done"
|
|
279
302
|
string active_slice "N: name"
|
|
280
303
|
int afk_slices_remaining "from .devrites/AFK max_slices on first AFK build"
|
|
304
|
+
string return_phase "durable later-phase clarify return"
|
|
305
|
+
string return_next_action "restored only after fresh CLEAR"
|
|
281
306
|
block awaiting_human "qid, gate, question, proposed, raised_at (only when paused)"
|
|
282
307
|
}
|
|
283
308
|
questions {
|
|
@@ -300,10 +325,11 @@ separately by `disable-model-invocation`.
|
|
|
300
325
|
|
|
301
326
|
```mermaid
|
|
302
327
|
flowchart TB
|
|
303
|
-
subgraph Public["Public (user-invocable: true):
|
|
328
|
+
subgraph Public["Public (user-invocable: true): 31 skills"]
|
|
304
329
|
direction TB
|
|
305
330
|
R1[/rite/]
|
|
306
331
|
R2[/rite-spec/]
|
|
332
|
+
RCL[/rite-clarify/]
|
|
307
333
|
RT[/rite-temper/]
|
|
308
334
|
R3[/rite-define/]
|
|
309
335
|
RV[/rite-vet/]
|
|
@@ -351,23 +377,25 @@ flowchart TB
|
|
|
351
377
|
|
|
352
378
|
classDef pub fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
353
379
|
classDef int fill:#1f2937,stroke:#9ca3af,color:#f9fafb
|
|
354
|
-
class R1,R2,RT,R3,RV,R4,R5,RC,R6,R7,R8,R9,R12,R13,R10,R11,RQ,RF,RA,RL,RD,RE,RCU,RDO,RPOV,RPF,IPT,D1,D2,D3 pub
|
|
380
|
+
class R1,R2,RCL,RT,R3,RV,R4,R5,RC,R6,R7,R8,R9,R12,R13,R10,R11,RQ,RF,RA,RL,RD,RE,RCU,RDO,RPOV,RPF,IPT,D1,D2,D3 pub
|
|
355
381
|
class I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12 int
|
|
356
382
|
```
|
|
357
383
|
|
|
358
384
|
## 9. AFK & HITL state machine
|
|
359
385
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
386
|
+
This state machine shows pauses for HITL gates and the AFK loop. Only the root
|
|
387
|
+
`/rite-build` orchestrator writes `Awaiting human`, and only `/rite-resolve`
|
|
388
|
+
clears it.
|
|
363
389
|
|
|
364
390
|
```mermaid
|
|
365
391
|
stateDiagram-v2
|
|
366
392
|
[*] --> running: /rite-build starts
|
|
367
393
|
running --> running: AFK slice + advisory finding<br/>(log to questions.md, proceed)
|
|
368
|
-
running -->
|
|
369
|
-
|
|
370
|
-
|
|
394
|
+
running --> recovery: objective red<br/>(tests · types · lint · runtime · coverage)
|
|
395
|
+
recovery --> running: green<br/>recovery clear --class
|
|
396
|
+
recovery --> blocked: 3 failed attempts<br/>reproduction + dead ends; no question
|
|
397
|
+
running --> awaiting_human: product / scope / policy choice
|
|
398
|
+
running --> awaiting_human: irreversible risk or<br/>human-only access / action
|
|
371
399
|
awaiting_human --> running: /rite-resolve qid "<answer>"
|
|
372
400
|
awaiting_human --> running: /rite-resolve --drop qid
|
|
373
401
|
awaiting_human --> blocked: /rite-plan repair (scope change)
|
|
@@ -383,6 +411,8 @@ stateDiagram-v2
|
|
|
383
411
|
end note
|
|
384
412
|
```
|
|
385
413
|
|
|
386
|
-
`AFK` mode (`.devrites/AFK` present) widens which
|
|
387
|
-
`running
|
|
388
|
-
|
|
414
|
+
`AFK` mode (`.devrites/AFK` present) widens which advisory/validating
|
|
415
|
+
transitions stay in `running`. It never turns objective technical failures into
|
|
416
|
+
human questions: bounded recovery either returns green or records a technical
|
|
417
|
+
blocker. Genuine human-owned decisions and actions still transition to
|
|
418
|
+
`awaiting_human`.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Harness adapter compliance
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
states
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
A single `devrites-engine` binary supports multiple agent runtimes, but those
|
|
4
|
+
runtimes expose different enforcement surfaces. For each surface, this page
|
|
5
|
+
states whether a supported harness provides native enforcement, uses an
|
|
6
|
+
adapter, or relies on instructions that the model may ignore. The matrix shows
|
|
7
|
+
where Codex and Claude Code behavior differs.
|
|
8
8
|
|
|
9
9
|
Host support is enumerated in `engine/internal/harness/harness.go`, with the
|
|
10
10
|
frozen capability matrix in `compliance.go`. New hosts must pass
|
|
@@ -15,6 +15,8 @@ The table below is **generated**. Its tiers describe whether the host exposes an
|
|
|
15
15
|
event surface; they do not by themselves mean that every hook blocks. `a1-guard`,
|
|
16
16
|
`reviewer-readonly`, `wright-scope`, and `stop-gate` are observe-only by default and become
|
|
17
17
|
blocking only when the documented strict-enforcement environment switch is enabled.
|
|
18
|
+
`git-guard` is different: standard and strict profiles enforce it; only minimal
|
|
19
|
+
profile or its explicit kill-list entry disables it.
|
|
18
20
|
|
|
19
21
|
The single source of truth is the frozen matrix
|
|
20
22
|
in `engine/internal/harness/compliance.go`; regenerate this block with:
|
|
@@ -32,7 +34,9 @@ the table and the code can never silently drift apart.
|
|
|
32
34
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
33
35
|
| SessionStart orientation | Native | Native | all phases | manual preamble/snapshot | yes | high | Both wire the orient hook; identical additionalContext envelope. |
|
|
34
36
|
| PreToolUse policy (allow, a1-guard, reviewer-readonly, wright-scope) | Conditional | Conditional | build/review safety | observe-only findings + human review | yes | high | Both deliver the event, but these policies are non-blocking by default; DEVRITES_HOOK_PROFILE=strict enables every guard, or each guard can be enabled through its documented specific variable. |
|
|
37
|
+
| Destructive Git authority | Conditional | Conditional | all shell tool calls | human permission review; no exact one-shot proof | yes | high | Both wire git-guard at PreToolUse. Standard and strict profiles enforce exact 15-minute one-shot authority; minimal profile or the explicit kill list disables the hook. |
|
|
35
38
|
| PostToolUse sentinel (redwatch) | Native | Native | prove/build rest points | manual red/green check | yes | high | Fail-on-red sentinel wired on both. |
|
|
39
|
+
| WebFetch ingestion warning trial | Conditional | Instruction-backed | external research | inspect retrieved content as untrusted data | no | medium | Claude WebFetch PostToolUse can emit an opt-in metadata-only warning with DEVRITES_INGEST_WARNING=warn; a flagged result remains in context and is omitted from the local source cache. Codex has no matching result event, so this trial is unavailable and silent. |
|
|
36
40
|
| Stop gate | Conditional | Conditional | all rest points | observe-only finding + manual host-specific rite-status | yes | high | Both deliver Stop; stop-gate blocks with DEVRITES_STOP_GATE=enforce or DEVRITES_HOOK_PROFILE=strict. |
|
|
37
41
|
| SubagentStart discipline injection | Native | Native | review/build fan-out | agent file preamble | yes | high | subagent-orient wired on both. |
|
|
38
42
|
| Skill invocation | Native | Adapter-backed | all public rites | explicit file read | yes | high | Claude: native /rite. Codex: $rite over the mirrored .agents/skills tree. |
|
|
@@ -43,3 +47,23 @@ the table and the code can never silently drift apart.
|
|
|
43
47
|
Tiers: **Native** (the harness exposes and delivers the surface directly; policy notes state whether it blocks) · **Adapter-backed** (supported through a translation shim) · **Instruction-backed** (no runtime surface: rides on a directive the model may under-fire) · **Conditional** (native but gated on an operator precondition).
|
|
44
48
|
|
|
45
49
|
<!-- END harness-matrix -->
|
|
50
|
+
|
|
51
|
+
## Contract evidence
|
|
52
|
+
|
|
53
|
+
The matrix above records what each host can support. The agent-contract eval
|
|
54
|
+
checks whether the complete dispatch path behaves as claimed. Its 12 scenarios
|
|
55
|
+
cover named reviewer and wright runs, generic and inline fallbacks, denial
|
|
56
|
+
paths, stale or malformed results, session orientation, interruption, and
|
|
57
|
+
post-compaction recovery. Every scenario runs once on Claude and once on
|
|
58
|
+
Codex, for 24 isolated cells.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
python3 scripts/run-agent-contract-evals.py --fake
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Fake mode is the only project gate. It uses hermetic host wrappers without a
|
|
65
|
+
network, model, or credential. The matrix verifies transport, isolation,
|
|
66
|
+
fallback, and scoring behavior, but it does not prove behavior on a real Claude
|
|
67
|
+
or Codex host. DevRites records that limit instead of running provider-backed
|
|
68
|
+
sessions. See [the eval guide](../evals/README.md) for the deterministic
|
|
69
|
+
commands.
|