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
|
@@ -1,26 +1,49 @@
|
|
|
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.
|
|
36
|
+
Semantic planning compatibility uses a separate readiness-artifact contract.
|
|
37
|
+
The current value is `devrites.readiness-artifacts.v2`; `/rite-upgrade [slug]`
|
|
38
|
+
reconciles an active unfinished workspace when build readiness reports an older
|
|
39
|
+
or unknown contract.
|
|
18
40
|
|
|
19
41
|
Canonical live workspace:
|
|
20
42
|
|
|
21
43
|
```text
|
|
22
44
|
.devrites/
|
|
23
45
|
ACTIVE
|
|
46
|
+
timeline.jsonl # local metadata-only v1 workflow trace
|
|
24
47
|
work/
|
|
25
48
|
<slug>/
|
|
26
49
|
README.md # compact workspace map; feature.md/index.md aliases allowed
|
|
@@ -31,10 +54,19 @@ Canonical live workspace:
|
|
|
31
54
|
decisions.md # ADR-style decision log
|
|
32
55
|
assumptions.md # assumptions and validation status
|
|
33
56
|
questions.md # open/resolved human questions
|
|
57
|
+
decision-coverage.md # topology-first clarification verdict
|
|
34
58
|
plan.md # technical approach and slice strategy
|
|
35
59
|
tasks.md # vertical slices
|
|
36
60
|
traceability.md # AC/REQ -> slices -> tests/evidence/files matrix
|
|
61
|
+
eng-review.md # implementation-readiness verdict
|
|
62
|
+
test-plan.md # executable proof target
|
|
37
63
|
state.md # compact cursor; status.md alias allowed
|
|
64
|
+
events.jsonl # feature-local copy of v1 workflow trace
|
|
65
|
+
recovery-attempts.jsonl # durable bounded technical-recovery ledger
|
|
66
|
+
.git-authority-consumption.jsonl # private one-shot Git grant consumption
|
|
67
|
+
.wright-allowlist # root-owned exact source/test write scope
|
|
68
|
+
.forge/
|
|
69
|
+
<run-id>/manifest.json # engine-owned Forge lifecycle and path authority
|
|
38
70
|
evidence.md # command/action proof; proof.md alias allowed
|
|
39
71
|
browser-evidence.md # optional UI/runtime browser proof
|
|
40
72
|
drift.md # optional spec/plan drift register
|
|
@@ -50,17 +82,18 @@ Canonical live workspace:
|
|
|
50
82
|
Backward compatibility: `.devrites/features/<slug>/` remains readable as an alias
|
|
51
83
|
for `.devrites/work/<slug>/`; `feature.md` and `index.md` remain valid workspace
|
|
52
84
|
maps; `status.md` remains a cursor alias for `state.md`; `proof.md` remains a
|
|
53
|
-
proof alias for `evidence.md`. Migration
|
|
54
|
-
deleting aliases.
|
|
85
|
+
proof alias for `evidence.md`. Migration normalizes compatible metadata without
|
|
86
|
+
deleting aliases or inventing evidence.
|
|
55
87
|
|
|
56
88
|
## Read order
|
|
57
89
|
|
|
58
90
|
| Phase / role | Read first | Then read | Usually skip |
|
|
59
91
|
| --- | --- | --- | --- |
|
|
60
92
|
| Spec | `README.md`, `brief.md` | `spec.md`, `references.md`, `questions.md` | `plan.md`, `evidence.md` |
|
|
61
|
-
|
|
|
93
|
+
| Clarify | `README.md`, `state.md` | `spec.md`, `decisions.md`, `assumptions.md`, `questions.md` | plan/proof artifacts |
|
|
94
|
+
| Define / plan | `README.md`, `state.md` | `spec.md`, `decision-coverage.md`, `architecture.md`, `decisions.md`, `assumptions.md` | `evidence.md` |
|
|
62
95
|
| 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 |
|
|
96
|
+
| 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
97
|
| Prove | `traceability.md`, `tasks.md` | `evidence.md`, `browser-evidence.md`, `touched-files.md` | long plan rationale |
|
|
65
98
|
| Review / seal | `README.md`, `traceability.md` | `spec.md`, `evidence.md`, `decisions.md`, `drift.md`, `touched-files.md` | raw logs unless needed |
|
|
66
99
|
| Handoff | `README.md`, `state.md` | `handoff.md`, then linked source files | duplicated summaries |
|
|
@@ -72,6 +105,7 @@ deleting aliases.
|
|
|
72
105
|
| `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
106
|
| `brief.md` | required | `/rite-spec` | clarify objective | 80 lines | Objective, Non-goals, Success definition | One-screen request and scope summary. |
|
|
74
107
|
| `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. |
|
|
108
|
+
| `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
109
|
| `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
110
|
| `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
111
|
| `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 +115,14 @@ deleting aliases.
|
|
|
81
115
|
| `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
116
|
| `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
117
|
| `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
|
-
| `
|
|
118
|
+
| `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. |
|
|
119
|
+
| `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. |
|
|
120
|
+
| `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. |
|
|
121
|
+
| 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. |
|
|
122
|
+
| `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. |
|
|
123
|
+
| `.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. |
|
|
124
|
+
| `.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. |
|
|
125
|
+
| `.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
126
|
| `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
127
|
| `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
128
|
| `drift.md` | drift only | Spec Drift Guard | spec/plan reality mismatch | 160 lines | Drift register | `DRIFT-###`, status, evidence found, resolution, related IDs. |
|
|
@@ -90,23 +131,67 @@ deleting aliases.
|
|
|
90
131
|
| `handoff.md` | optional | `/rite-handoff` | cold resume | 120 lines | Resume, Read next, Next action | Links to source artifacts instead of copying them. |
|
|
91
132
|
| `references.md` + `references/` | optional | `/rite-spec` | external/user-supplied material | 160 lines | Reference index | Links must resolve or be external URLs. |
|
|
92
133
|
|
|
134
|
+
Telemetry is deliberately outside the correctness contract. Missing or corrupt
|
|
135
|
+
`timeline.jsonl` / `events.jsonl` may degrade `timeline report`, `progress`, or
|
|
136
|
+
the statusline, but can never change a gate, cursor, question, evidence verdict,
|
|
137
|
+
recovery budget, capability decision, or destructive-action authority. Reports
|
|
138
|
+
read a bounded tail; `timeline purge --before ...` and/or `--run ...` rewrites
|
|
139
|
+
only these logs. The engine sends no remote telemetry. Remove old unversioned
|
|
140
|
+
logs manually when their legacy free text should not be retained.
|
|
141
|
+
|
|
93
142
|
Files may exceed budgets only with a visible `Budget override: <reason>` line.
|
|
94
143
|
|
|
144
|
+
## Readiness gate binding
|
|
145
|
+
|
|
146
|
+
The typed verdict is necessary but not sufficient:
|
|
147
|
+
|
|
148
|
+
- `decision-coverage.md`, `eng-review.md`, and `test-plan.md` declare
|
|
149
|
+
`DevRites contract: devrites.readiness-artifacts.v2`.
|
|
150
|
+
- `Coverage inputs SHA-256` binds `decision-coverage.md` to `brief.md`,
|
|
151
|
+
`spec.md`, `decisions.md`, `assumptions.md`, and `questions.md`.
|
|
152
|
+
- `Readiness inputs SHA-256` binds `eng-review.md` to `spec.md`,
|
|
153
|
+
`decision-coverage.md`, `architecture.md`, `plan.md`, `tasks.md`,
|
|
154
|
+
`traceability.md`, and `test-plan.md`.
|
|
155
|
+
|
|
156
|
+
`devrites-engine readiness-digest coverage|engineering [slug]` emits the
|
|
157
|
+
canonical field line. `build-readiness` rejects stale digests, malformed or
|
|
158
|
+
contradictory content, missing markers, and older or unknown semantic contracts.
|
|
159
|
+
Contract failures use code `8` and route to `/rite-upgrade`; missing coverage or
|
|
160
|
+
vet artifacts keep their existing `/rite-clarify` and `/rite-vet` routes. A
|
|
161
|
+
later-phase clarification
|
|
162
|
+
retrofit uses `clarify-return enter|restore`; restore requires fresh `CLEAR`
|
|
163
|
+
coverage, while an acceptance-changing result keeps the cursor for plan repair.
|
|
164
|
+
|
|
95
165
|
## Required vs optional
|
|
96
166
|
|
|
97
167
|
Required at `/rite-spec`: workspace map, `brief.md`, `spec.md`, `state.md`,
|
|
98
168
|
`decisions.md`, `assumptions.md`, `questions.md`.
|
|
99
169
|
|
|
100
|
-
Required at `/rite-
|
|
170
|
+
Required at `/rite-clarify` and later: all spec files plus `decision-coverage.md`.
|
|
171
|
+
|
|
172
|
+
Required at `/rite-define` and later: all clarified spec files plus `architecture.md`,
|
|
101
173
|
`plan.md`, `tasks.md`, and `traceability.md`.
|
|
102
174
|
|
|
103
|
-
Required at `/rite-
|
|
175
|
+
Required at `/rite-vet` and later: all plan files plus `eng-review.md` and `test-plan.md`.
|
|
176
|
+
|
|
177
|
+
Required at `/rite-prove` and later: all vetted plan files plus `evidence.md` (or
|
|
104
178
|
`proof.md`) and `touched-files.md`.
|
|
105
179
|
|
|
106
180
|
Optional/conditional files are generated only by their producing phase:
|
|
107
181
|
`flows.md` when diagrams clarify behavior, `design-brief.md` and
|
|
108
182
|
`browser-evidence.md` for UI, `drift.md` for drift, `handoff.md` for handoff,
|
|
109
|
-
and `references.md` / `references/` when references exist.
|
|
183
|
+
and `references.md` / `references/` when references exist. The build runtime
|
|
184
|
+
creates `.wright-allowlist` and, only when needed, `recovery-attempts.jsonl`.
|
|
185
|
+
Forge creates `.forge/<run-id>/manifest.json` only after a clean, bound
|
|
186
|
+
parallel plan passes. A serial degradation creates no Forge state.
|
|
187
|
+
|
|
188
|
+
Forge candidate worktrees do not live inside `.devrites`. The manifest binds
|
|
189
|
+
them to the sibling
|
|
190
|
+
`.<repo>.devrites-forge/<run-id>/candidate-<a|b|c>` paths before Git creates
|
|
191
|
+
them. Every later extract, merge, cleanup, and reap command reloads the unique
|
|
192
|
+
manifest instead of accepting a caller-supplied path or branch. Cleanup
|
|
193
|
+
requires a landed winner and recorded successful verification, and it
|
|
194
|
+
preserves dirty, live, foreign, or ambiguous state.
|
|
110
195
|
|
|
111
196
|
## Compactness rules
|
|
112
197
|
|
|
@@ -132,6 +217,7 @@ Use these forms in generated artifacts:
|
|
|
132
217
|
| Question | `Q-001` | `questions.md` |
|
|
133
218
|
| Drift event | `DRIFT-001` | `drift.md` |
|
|
134
219
|
| Evidence | `EVID-001` | `evidence.md`, `browser-evidence.md` |
|
|
220
|
+
| Forge run | `forge-` plus 24 lowercase hex characters | `.forge/<run-id>/manifest.json` |
|
|
135
221
|
|
|
136
222
|
## Validation
|
|
137
223
|
|
|
@@ -141,6 +227,8 @@ project-wide validation path runs it against representative fixtures.
|
|
|
141
227
|
The validator checks:
|
|
142
228
|
|
|
143
229
|
- required files and headings for the current phase;
|
|
230
|
+
- supported workspace `schemaVersion` and additive legacy aliases;
|
|
231
|
+
- semantic, fresh digest-bound `CLEAR` and `READY` readiness artifacts;
|
|
144
232
|
- stable IDs and old `AC1` / `Slice 1` style regressions;
|
|
145
233
|
- acceptance criteria referenced by at least one slice;
|
|
146
234
|
- 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,55 @@
|
|
|
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`, `/rite-upgrade`, or `devrites-debug-recovery`.
|
|
14
|
+
`/rite-upgrade` is conditional maintenance rather than a lifecycle phase: build
|
|
15
|
+
readiness uses it only when existing semantic artifacts are stale.
|
|
16
|
+
`/rite-clarify` always runs but may ask zero questions; `/rite-temper` is the
|
|
17
|
+
optional strategic branch; `/rite-vet` runs on every defined plan, with depth
|
|
18
|
+
scaled to risk. Build asks the human only for genuine
|
|
19
|
+
product/scope/policy decisions, irreversible risk, or human-only access/actions;
|
|
20
|
+
`/rite-resolve` is the resume verb.
|
|
16
21
|
|
|
17
22
|
```mermaid
|
|
18
23
|
flowchart LR
|
|
19
24
|
Start([user has an idea]) --> Spec[/rite-spec/]
|
|
20
25
|
Spec -.->|UI detected| Shape[devrites-ux-shape<br/>plan UX/UI → design-brief.md]
|
|
21
26
|
Shape -.->|brief confirmed| Spec
|
|
22
|
-
Spec
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
Spec -->|spec.md ready| Clarify[/rite-clarify/]
|
|
28
|
+
Clarify -->|fresh digest-bound CLEAR<br/>big / risky| Temper[/rite-temper/] -.->|strategy.md| Define
|
|
29
|
+
Clarify -->|fresh digest-bound CLEAR<br/>low stakes| Define[/rite-define/]
|
|
30
|
+
Define -->|plan.md + tasks.md<br/>approved| Plan[(plan checkpoint)]
|
|
31
|
+
Plan -->|normal resume| Vet[/rite-vet/]
|
|
32
|
+
Vet -->|fresh digest-bound READY<br/>+ test-plan.md| Build[/rite-build/]
|
|
33
|
+
Build -.->|build-readiness code 8<br/>stale semantic contract| Upgrade[/rite-upgrade/]
|
|
34
|
+
Upgrade -.->|contract v2<br/>current gates pass| Build
|
|
35
|
+
Build -.->|exact .wright-allowlist<br/>retained baseline| Wright[devrites-slice-wright]
|
|
36
|
+
Wright -.->|typed result| Build
|
|
26
37
|
Build -->|one slice done<br/>+ evidence| Build
|
|
27
38
|
Build -.->|"Forge: yes slice"| Forge[forge: K candidates<br/>→ devrites-forge-judge → 1 winner]
|
|
28
39
|
Forge -.->|winner lands<br/>forge-report.md| Build
|
|
29
|
-
Build -->|
|
|
40
|
+
Build -->|product / risk / access gate| Await{{Awaiting human<br/>state.md + questions.md}}
|
|
30
41
|
Await -->|"/rite-resolve <qid> <answer>"| Build
|
|
31
42
|
Build -->|all slices built| Prove[/rite-prove/]
|
|
32
43
|
Build -.->|resumed / adopted / stalled<br/>code vs intent| Converge[/rite-converge/]
|
|
33
|
-
Converge -.->|appends remaining slices|
|
|
44
|
+
Converge -.->|appends remaining slices<br/>invalidates old READY| Vet
|
|
45
|
+
Converge -.->|already converged| Prove
|
|
34
46
|
Prove -->|evidence captured| Polish[/rite-polish/]
|
|
35
47
|
Polish -->|polish-report.md| Review[/rite-review/]
|
|
36
48
|
Review -->|review.md<br/>Critical == 0| Seal[/rite-seal/]
|
|
37
49
|
Seal -->|GO| Ship2[/rite-ship/]
|
|
38
50
|
Ship2 -->|type-GO| Shipped([commit · push · tag · archive])
|
|
39
51
|
Seal -->|NO-GO| Repair[/rite-plan repair/]
|
|
40
|
-
Repair -->
|
|
52
|
+
Repair --> Plan
|
|
41
53
|
|
|
42
54
|
Build -.->|Spec Drift Guard| Repair
|
|
43
55
|
Prove -.->|drift / failure| Repair
|
|
@@ -49,11 +61,11 @@ flowchart LR
|
|
|
49
61
|
classDef repair fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
50
62
|
classDef gate fill:#4c1d95,stroke:#a78bfa,color:#f5f3ff
|
|
51
63
|
classDef internal fill:#0f172a,stroke:#9ca3af,color:#f9fafb
|
|
52
|
-
class Spec,Temper,Define,Vet,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
64
|
+
class Spec,Clarify,Temper,Define,Plan,Vet,Build,Prove,Polish,Review,Seal,Ship2 phase
|
|
53
65
|
class Shipped done
|
|
54
|
-
class Repair repair
|
|
66
|
+
class Repair,Upgrade repair
|
|
55
67
|
class Await gate
|
|
56
|
-
class Shape,Forge internal
|
|
68
|
+
class Shape,Forge,Wright internal
|
|
57
69
|
```
|
|
58
70
|
|
|
59
71
|
## 2. `/rite-polish` orchestrator
|
|
@@ -85,13 +97,14 @@ emphasis dials. `normalize-only` stops after Phase 3.
|
|
|
85
97
|
|
|
86
98
|
## 3. `/rite-review` parallel axes
|
|
87
99
|
|
|
88
|
-
Review
|
|
89
|
-
|
|
100
|
+
Review assigns Spec coverage and Standards compliance to separate
|
|
101
|
+
fresh-context agents and runs them in parallel. This prevents one axis from
|
|
102
|
+
masking the other.
|
|
90
103
|
|
|
91
104
|
```mermaid
|
|
92
105
|
flowchart LR
|
|
93
|
-
R[/rite-review/] -->|
|
|
94
|
-
R -->|
|
|
106
|
+
R[/rite-review/] -->|fresh-context dispatch<br/>in parallel| S[devrites-spec-reviewer<br/>**Spec axis**]
|
|
107
|
+
R -->|fresh-context dispatch<br/>in parallel| C[devrites-code-reviewer<br/>**Standards axis**]
|
|
95
108
|
S -->|missing / partial / wrong /<br/>scope-creep findings| Combine
|
|
96
109
|
C -->|standards violations<br/>cite rule + file| Combine
|
|
97
110
|
R --> Sec[devrites-audit security]
|
|
@@ -110,10 +123,11 @@ flowchart LR
|
|
|
110
123
|
|
|
111
124
|
## 4. `/rite-seal` fan-out
|
|
112
125
|
|
|
113
|
-
The seal
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
126
|
+
The seal runs all relevant reviewers in parallel, reconciles their findings,
|
|
127
|
+
decides GO or NO-GO, and stops without running git. On GO, `/rite-ship` renders
|
|
128
|
+
the type-GO prompt and runs the irreversible commit · push · tag · archive
|
|
129
|
+
sequence. The gate uses severity, acceptance, and drift rather than an advisory
|
|
130
|
+
score.
|
|
117
131
|
|
|
118
132
|
```mermaid
|
|
119
133
|
flowchart TB
|
|
@@ -156,36 +170,45 @@ flowchart TB
|
|
|
156
170
|
|
|
157
171
|
## 5. `devrites-debug-recovery` seven-step loop
|
|
158
172
|
|
|
159
|
-
Failure recovery
|
|
173
|
+
Failure recovery starts by routing the faulty layer. `recovery route <class>`
|
|
174
|
+
returns its owner, action, and whether a human decision is actually needed.
|
|
175
|
+
The root-cause fingerprint and three-failure budget persist across agents and
|
|
176
|
+
sessions in `recovery-attempts.jsonl`; typed entries keep independent defects
|
|
177
|
+
on independent budgets.
|
|
160
178
|
|
|
161
179
|
```mermaid
|
|
162
180
|
flowchart LR
|
|
163
|
-
F([failing test /<br/>build / runtime]) -->
|
|
181
|
+
F([failing test /<br/>build / runtime]) --> Route{Route faulty layer}
|
|
182
|
+
Route -->|technical class<br/>humanPause: false| L1[Step 1<br/>Build the loop]
|
|
183
|
+
Route -->|intent / missing decision| Clarify([Clarify with the human])
|
|
164
184
|
L1 -->|fast deterministic signal| R[Step 2<br/>Reproduce]
|
|
165
185
|
R -->|exact error text| H[Step 3<br/>Ranked hypotheses 3-5]
|
|
166
186
|
H --> T[Step 4<br/>Trace when ambiguous]
|
|
167
187
|
T -->|discriminating probe| I[Step 5<br/>Instrument]
|
|
168
188
|
I -->|change one variable| Fix[Step 6<br/>Fix + regression test]
|
|
169
189
|
Fix --> C[Step 7<br/>Cleanup + classify]
|
|
170
|
-
|
|
190
|
+
C -->|green: recovery clear --class| Done([verified])
|
|
191
|
+
C -->|same root cause red:<br/>recovery record --class| Budget{3 failures<br/>used?}
|
|
192
|
+
Budget -->|no: recovery check<br/>+ exact failure| L1
|
|
193
|
+
Budget -->|yes| Block([technical blocker<br/>reproduction + dead ends])
|
|
171
194
|
|
|
172
195
|
classDef phase fill:#1f2937,stroke:#60a5fa,color:#f9fafb
|
|
173
196
|
classDef stop fill:#7f1d1d,stroke:#f87171,color:#fee2e2
|
|
174
197
|
class L1,R,H,T,I,Fix,C phase
|
|
175
|
-
class
|
|
198
|
+
class Block,Clarify stop
|
|
176
199
|
```
|
|
177
200
|
|
|
178
|
-
|
|
179
|
-
`pack/.claude/skills/devrites-debug-recovery/reference/`
|
|
180
|
-
|
|
201
|
+
A separate file under
|
|
202
|
+
`pack/.claude/skills/devrites-debug-recovery/reference/` documents each step.
|
|
203
|
+
This keeps the `SKILL.md` body small.
|
|
181
204
|
|
|
182
205
|
## 6. Engineering-rules carrier
|
|
183
206
|
|
|
184
207
|
Workspace-operating lifecycle skills read
|
|
185
208
|
`.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
|
-
|
|
209
|
+
keep their narrower contract local. The other rule files load on demand.
|
|
210
|
+
Per-phase skills use plain `Read` calls to load any additional rule files their
|
|
211
|
+
workflows need. There is no carrier skill or session-start autoload.
|
|
189
212
|
|
|
190
213
|
```mermaid
|
|
191
214
|
flowchart TD
|
|
@@ -229,9 +252,9 @@ flowchart TD
|
|
|
229
252
|
|
|
230
253
|
## 7. Workspace state model
|
|
231
254
|
|
|
232
|
-
`.devrites/work/<feature-slug>/`
|
|
233
|
-
|
|
234
|
-
|
|
255
|
+
Each phase reads its durable state from `.devrites/work/<feature-slug>/` before
|
|
256
|
+
acting. Every `rite-*` skill checks the workspace first; if `ACTIVE` is unset,
|
|
257
|
+
it tells the user to run `/rite-spec`. The optional
|
|
235
258
|
`.devrites/AFK` sentinel sits beside `ACTIVE` and toggles the session-level
|
|
236
259
|
run mode for all skills.
|
|
237
260
|
|
|
@@ -242,10 +265,11 @@ erDiagram
|
|
|
242
265
|
WORKSPACE ||--|| state : has
|
|
243
266
|
WORKSPACE ||--|| brief : has
|
|
244
267
|
WORKSPACE ||--|| spec : has
|
|
268
|
+
WORKSPACE ||--o| decision-coverage : "has (semantic + digest-bound CLEAR before planning)"
|
|
245
269
|
WORKSPACE ||--o| strategy : "has (optional: from /rite-temper)"
|
|
246
270
|
WORKSPACE ||--|| plan : "has (from /rite-define)"
|
|
247
271
|
WORKSPACE ||--|| tasks : "has: slices tagged Mode + Gate"
|
|
248
|
-
WORKSPACE ||--o| eng-review : "has (from /rite-vet
|
|
272
|
+
WORKSPACE ||--o| eng-review : "has (semantic + digest-bound READY from /rite-vet)"
|
|
249
273
|
WORKSPACE ||--o| test-plan : "has (from /rite-vet; build + prove read it)"
|
|
250
274
|
WORKSPACE ||--o{ references : "has (design refs)"
|
|
251
275
|
WORKSPACE ||--o| design-brief : "has (UI features: from /rite-spec via devrites-ux-shape; the build target)"
|
|
@@ -260,6 +284,8 @@ erDiagram
|
|
|
260
284
|
WORKSPACE ||--o| review : "has (from /rite-review)"
|
|
261
285
|
WORKSPACE ||--o| seal : "has (from /rite-seal)"
|
|
262
286
|
WORKSPACE ||--o| ship : "has (from /rite-ship; archived on close)"
|
|
287
|
+
WORKSPACE ||--o| recovery_attempts : "durable three-failure budget per root cause"
|
|
288
|
+
WORKSPACE ||--o| wright_allowlist : "root-owned exact source/test paths"
|
|
263
289
|
|
|
264
290
|
ACTIVE {
|
|
265
291
|
string slug "names the current workspace"
|
|
@@ -272,12 +298,15 @@ erDiagram
|
|
|
272
298
|
}
|
|
273
299
|
WORKSPACE {
|
|
274
300
|
string slug PK ".devrites/work/<slug>/"
|
|
301
|
+
int schemaVersion "2; older additive layouts remain readable"
|
|
275
302
|
}
|
|
276
303
|
state {
|
|
277
|
-
string phase "frame | spec | temper | define | plan | vet | build | converge | prove | polish | review | seal | ship | done"
|
|
304
|
+
string phase "frame | spec | clarify | temper | define | plan | vet | build | converge | prove | polish | review | seal | ship | done"
|
|
278
305
|
string status "running | awaiting_human | blocked | done"
|
|
279
306
|
string active_slice "N: name"
|
|
280
307
|
int afk_slices_remaining "from .devrites/AFK max_slices on first AFK build"
|
|
308
|
+
string return_phase "durable later-phase clarify return"
|
|
309
|
+
string return_next_action "restored only after fresh CLEAR"
|
|
281
310
|
block awaiting_human "qid, gate, question, proposed, raised_at (only when paused)"
|
|
282
311
|
}
|
|
283
312
|
questions {
|
|
@@ -300,10 +329,11 @@ separately by `disable-model-invocation`.
|
|
|
300
329
|
|
|
301
330
|
```mermaid
|
|
302
331
|
flowchart TB
|
|
303
|
-
subgraph Public["Public (user-invocable: true):
|
|
332
|
+
subgraph Public["Public (user-invocable: true): 32 skills"]
|
|
304
333
|
direction TB
|
|
305
334
|
R1[/rite/]
|
|
306
335
|
R2[/rite-spec/]
|
|
336
|
+
RCL[/rite-clarify/]
|
|
307
337
|
RT[/rite-temper/]
|
|
308
338
|
R3[/rite-define/]
|
|
309
339
|
RV[/rite-vet/]
|
|
@@ -323,6 +353,7 @@ flowchart TB
|
|
|
323
353
|
RA[/rite-adopt/]
|
|
324
354
|
RL[/rite-learn/]
|
|
325
355
|
RD[/rite-doctor/]
|
|
356
|
+
RU[/rite-upgrade/]
|
|
326
357
|
RE[/rite-explain/]
|
|
327
358
|
RCU[/rite-customize/]
|
|
328
359
|
RDO[/rite-dogfood/]
|
|
@@ -351,23 +382,25 @@ flowchart TB
|
|
|
351
382
|
|
|
352
383
|
classDef pub fill:#064e3b,stroke:#34d399,color:#ecfdf5
|
|
353
384
|
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
|
|
385
|
+
class R1,R2,RCL,RT,R3,RV,R4,R5,RC,R6,R7,R8,R9,R12,R13,R10,R11,RQ,RF,RA,RL,RD,RU,RE,RCU,RDO,RPOV,RPF,IPT,D1,D2,D3 pub
|
|
355
386
|
class I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12 int
|
|
356
387
|
```
|
|
357
388
|
|
|
358
389
|
## 9. AFK & HITL state machine
|
|
359
390
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
391
|
+
This state machine shows pauses for HITL gates and the AFK loop. Only the root
|
|
392
|
+
`/rite-build` orchestrator writes `Awaiting human`, and only `/rite-resolve`
|
|
393
|
+
clears it.
|
|
363
394
|
|
|
364
395
|
```mermaid
|
|
365
396
|
stateDiagram-v2
|
|
366
397
|
[*] --> running: /rite-build starts
|
|
367
398
|
running --> running: AFK slice + advisory finding<br/>(log to questions.md, proceed)
|
|
368
|
-
running -->
|
|
369
|
-
|
|
370
|
-
|
|
399
|
+
running --> recovery: objective red<br/>(tests · types · lint · runtime · coverage)
|
|
400
|
+
recovery --> running: green<br/>recovery clear --class
|
|
401
|
+
recovery --> blocked: 3 failed attempts<br/>reproduction + dead ends; no question
|
|
402
|
+
running --> awaiting_human: product / scope / policy choice
|
|
403
|
+
running --> awaiting_human: irreversible risk or<br/>human-only access / action
|
|
371
404
|
awaiting_human --> running: /rite-resolve qid "<answer>"
|
|
372
405
|
awaiting_human --> running: /rite-resolve --drop qid
|
|
373
406
|
awaiting_human --> blocked: /rite-plan repair (scope change)
|
|
@@ -383,6 +416,8 @@ stateDiagram-v2
|
|
|
383
416
|
end note
|
|
384
417
|
```
|
|
385
418
|
|
|
386
|
-
`AFK` mode (`.devrites/AFK` present) widens which
|
|
387
|
-
`running
|
|
388
|
-
|
|
419
|
+
`AFK` mode (`.devrites/AFK` present) widens which advisory/validating
|
|
420
|
+
transitions stay in `running`. It never turns objective technical failures into
|
|
421
|
+
human questions: bounded recovery either returns green or records a technical
|
|
422
|
+
blocker. Genuine human-owned decisions and actions still transition to
|
|
423
|
+
`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.
|