devrites 3.2.27 → 4.0.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 +22 -144
- package/NOTICE.md +6 -5
- package/README.md +187 -95
- package/SECURITY.md +103 -79
- package/bin/devrites.mjs +140 -24
- package/docs/adr/0003-gate-model-hitl-pause.md +1 -1
- package/docs/adr/0013-native-codex-agent-orchestration.md +74 -0
- package/docs/adr/0014-native-host-hook-boundary.md +64 -0
- package/docs/adr/0015-read-only-root-native-orchestration.md +96 -0
- package/docs/adr/0016-codex-writer-fail-closed.md +53 -0
- package/docs/adr/0017-native-codex-writer-agent.md +63 -0
- package/docs/adr/0018-native-sandbox-instruction-writer-boundary.md +66 -0
- package/docs/adr/0019-native-boundary-with-deterministic-gates.md +48 -0
- package/docs/adr/0020-thin-engine-native-orchestration-boundary.md +54 -0
- package/docs/adr/0021-observable-workspace-compatibility.md +49 -0
- package/docs/adr/0022-native-orchestration-thin-engine.md +90 -0
- package/docs/adr/0023-native-workspace-reads-line-output.md +71 -0
- package/docs/adr/0024-native-policy-offline-installer-boundary.md +111 -0
- package/docs/adr/0025-evidence-gated-workspace-upgrades.md +64 -0
- package/docs/adr/0026-content-bound-proof-and-bounded-inputs.md +169 -0
- package/docs/adr/0027-content-bound-build-readiness.md +77 -0
- package/docs/adr/README.md +26 -11
- package/docs/agents/domain.md +2 -1
- package/docs/agents/issue-driven-rites.md +1 -1
- package/docs/architecture.md +191 -103
- package/docs/candidate-integrity.md +138 -0
- package/docs/capability-surface-selection.md +15 -5
- package/docs/cli.md +139 -92
- package/docs/command-map.md +88 -63
- package/docs/engine/commands.md +115 -507
- package/docs/engine/state-schema.md +94 -113
- package/docs/engine/workspace-schema.md +169 -229
- package/docs/flow.md +113 -68
- package/docs/harness-compliance.md +29 -56
- package/docs/markdown-instruction-upgrade-2026-08-02.md +302 -0
- package/docs/orchestration.md +136 -149
- package/docs/porting-to-a-new-harness.md +22 -7
- package/docs/quick-reference.md +21 -8
- package/docs/release.md +47 -4
- package/docs/skills.md +111 -72
- package/docs/templates/CRITIC_REVIEW_PACKET_TEMPLATE.md +2 -0
- package/docs/upstream-workflow-benchmark-2026-08-01.md +655 -0
- package/docs/usage.md +99 -65
- package/engine/Makefile +1 -2
- package/engine/cmd/releasepack/main.go +45 -25
- package/engine/cmd/releasepack/main_test.go +69 -0
- package/engine/commands.go +8 -258
- package/engine/harnessmatrix_test.go +28 -41
- package/engine/internal/devritespaths/paths.go +12 -28
- package/engine/internal/fsutil/copy.go +8 -0
- package/engine/internal/gate/gate.go +104 -105
- package/engine/internal/gate/gate_test.go +94 -84
- package/engine/internal/gate/readiness_binding.go +203 -0
- package/engine/internal/gate/readiness_binding_test.go +271 -0
- package/engine/internal/gitenv/env.go +46 -0
- package/engine/internal/gitenv/env_test.go +48 -0
- package/engine/internal/hostpack/hostpack.go +16 -20
- package/engine/internal/hostpack/hostpack_test.go +6 -6
- package/engine/internal/install/install.go +289 -511
- package/engine/internal/install/install_test.go +218 -306
- package/engine/internal/lib/candidate.go +475 -0
- package/engine/internal/lib/candidate_test.go +503 -0
- package/engine/internal/lib/closeout.go +17 -21
- package/engine/internal/lib/closeout_test.go +23 -0
- package/engine/internal/lib/cursor_compat_test.go +12 -75
- package/engine/internal/lib/evidencefresh.go +58 -47
- package/engine/internal/lib/evidencefresh_test.go +120 -0
- package/engine/internal/lib/resolve.go +13 -35
- package/engine/internal/lib/resolve_remediation_test.go +5 -17
- package/engine/internal/lib/secretscan.go +432 -0
- package/engine/internal/lib/secretscan_test.go +555 -0
- package/engine/internal/lib/util.go +24 -65
- package/engine/internal/lib/util_test.go +44 -0
- package/engine/internal/markdowntext/markdowntext.go +108 -0
- package/engine/internal/markdowntext/markdowntext_test.go +58 -0
- package/engine/internal/markdowntext/testdata/structural.json +27 -0
- package/engine/internal/reason/reason.go +2 -123
- package/engine/internal/reason/reason_test.go +4 -2
- package/engine/internal/rootfacts/facts.go +6 -8
- package/engine/internal/rootfacts/facts_test.go +20 -0
- package/engine/internal/state/cmd/workflowmanifest/main.go +10 -12
- package/engine/internal/state/cursor.go +53 -14
- package/engine/internal/state/cursor_test.go +57 -0
- package/engine/internal/state/feature.go +64 -154
- package/engine/internal/state/schema.go +24 -50
- package/engine/internal/state/state_test.go +151 -140
- package/engine/internal/state/status.go +4 -17
- package/engine/internal/state/workflow_manifest.json +9 -89
- package/engine/main.go +73 -502
- package/engine/root_routing_test.go +183 -212
- package/engine/testdata/fixtures/basic/devrites-root/{features/auth-tokens/feature.md → work/auth-tokens/README.md} +0 -1
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/architecture.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/assumptions.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/brief.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decision-coverage.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/eng-review.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/questions.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/{features/auth-tokens/status.md → work/auth-tokens/state.md} +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/test-plan.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/traceability.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/{features/search-ranking/feature.md → work/search-ranking/README.md} +0 -1
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/assumptions.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/brief.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/decisions.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/questions.md +3 -0
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +2 -0
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +1 -1
- package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +1 -1
- package/engine/tests/adr_0003_gate_exit_code_test.go +2 -2
- package/engine/tests/adr_0011_define_plan_test.go +2 -2
- package/engine/tests/adr_0027_readiness_binding_test.go +106 -0
- package/engine/tests/cli_test.go +24 -107
- package/engine/tests/gate_test.go +177 -200
- package/engine/tests/meta_test.go +5 -35
- package/engine/tests/parity_closeout_test.go +12 -12
- package/engine/tests/parity_resolve_test.go +6 -16
- package/engine/tests/parity_test.go +8 -302
- package/install.sh +201 -34
- package/pack/.claude/agents/devrites-code-reviewer.md +9 -18
- package/pack/.claude/agents/devrites-devex-reviewer.md +10 -18
- package/pack/.claude/agents/devrites-doubt-reviewer.md +10 -20
- package/pack/.claude/agents/devrites-evidence-scout.md +14 -26
- package/pack/.claude/agents/devrites-frontend-reviewer.md +9 -15
- package/pack/.claude/agents/devrites-performance-reviewer.md +13 -21
- package/pack/.claude/agents/devrites-plan-drafter.md +24 -28
- package/pack/.claude/agents/devrites-plan-reviewer.md +30 -47
- package/pack/.claude/agents/devrites-proof-runner.md +41 -47
- package/pack/.claude/agents/devrites-retrospector.md +34 -79
- package/pack/.claude/agents/devrites-security-auditor.md +9 -17
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +9 -18
- package/pack/.claude/agents/devrites-slice-wright.md +44 -62
- package/pack/.claude/agents/devrites-spec-reviewer.md +38 -50
- package/pack/.claude/agents/devrites-strategy-reviewer.md +10 -19
- package/pack/.claude/agents/devrites-test-analyst.md +22 -21
- package/pack/.claude/agents/devrites-upgrade-planner.md +52 -71
- package/pack/.claude/settings.json +12 -100
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -2
- package/pack/.claude/skills/devrites-audit/SKILL.md +6 -9
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +0 -1
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -27
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +22 -33
- package/pack/.claude/skills/devrites-doubt/SKILL.md +4 -6
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +1 -2
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +2 -1
- package/pack/.claude/skills/devrites-interview/SKILL.md +31 -36
- package/pack/.claude/skills/devrites-lib/SKILL.md +37 -66
- package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +51 -0
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +20 -12
- package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +22 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +35 -110
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +26 -93
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +6 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +43 -34
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +90 -216
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +9 -28
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +13 -11
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +59 -54
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +29 -143
- package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +5 -6
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +13 -31
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +112 -82
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +71 -45
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +22 -11
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +15 -24
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +106 -37
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +3 -4
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +3 -4
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +3 -3
- package/pack/.claude/skills/rite/SKILL.md +12 -13
- package/pack/.claude/skills/rite/reference/menu.md +11 -11
- package/pack/.claude/skills/rite-adopt/SKILL.md +29 -84
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +16 -50
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +65 -54
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +24 -17
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +18 -21
- package/pack/.claude/skills/rite-build/SKILL.md +28 -34
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +36 -34
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +5 -19
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +10 -9
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +17 -17
- package/pack/.claude/skills/rite-build/reference/frontend-trigger.md +3 -3
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +11 -14
- package/pack/.claude/skills/rite-build/reference/output.md +14 -24
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +49 -188
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +43 -133
- package/pack/.claude/skills/rite-clarify/SKILL.md +46 -40
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +4 -10
- package/pack/.claude/skills/rite-converge/SKILL.md +9 -33
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +2 -2
- package/pack/.claude/skills/rite-customize/SKILL.md +34 -50
- package/pack/.claude/skills/rite-define/SKILL.md +34 -58
- package/pack/.claude/skills/rite-define/reference/plan-template.md +15 -0
- package/pack/.claude/skills/rite-doctor/SKILL.md +52 -64
- package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -2
- package/pack/.claude/skills/rite-explain/SKILL.md +1 -20
- package/pack/.claude/skills/rite-frame/SKILL.md +1 -7
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
- package/pack/.claude/skills/rite-handoff/SKILL.md +1 -2
- package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/.claude/skills/rite-learn/SKILL.md +44 -104
- package/pack/.claude/skills/rite-plan/SKILL.md +14 -26
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -1
- package/pack/.claude/skills/rite-polish/SKILL.md +20 -28
- package/pack/.claude/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/{generated/claude/skills/rite-ship → .claude/skills/rite-polish}/reference/design-memory.md +23 -21
- package/pack/.claude/skills/rite-polish/reference/ledger.md +62 -0
- package/pack/.claude/skills/rite-pov/SKILL.md +28 -32
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +0 -1
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +6 -13
- package/pack/.claude/skills/rite-prototype/SKILL.md +0 -6
- package/pack/.claude/skills/rite-prove/SKILL.md +73 -68
- package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +34 -30
- package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +15 -14
- package/pack/.claude/skills/rite-quick/SKILL.md +5 -19
- package/pack/.claude/skills/rite-resolve/SKILL.md +4 -21
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
- package/pack/.claude/skills/rite-review/SKILL.md +34 -57
- package/pack/.claude/skills/rite-seal/SKILL.md +54 -87
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +2 -2
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +31 -56
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +27 -51
- package/pack/.claude/skills/rite-seal/reference/output.md +2 -4
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +42 -140
- package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +2 -2
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +17 -28
- package/pack/.claude/skills/rite-ship/SKILL.md +65 -93
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-ship/reference/close-out.md +4 -12
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +86 -48
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +22 -16
- package/pack/.claude/skills/rite-spec/SKILL.md +62 -95
- package/pack/.claude/skills/rite-spec/reference/investigation.md +1 -4
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +21 -20
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +16 -17
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +47 -49
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +28 -13
- package/pack/.claude/skills/rite-status/SKILL.md +30 -88
- package/pack/.claude/skills/rite-temper/SKILL.md +12 -31
- package/pack/.claude/skills/rite-upgrade/SKILL.md +86 -101
- package/pack/.claude/skills/rite-vet/SKILL.md +88 -117
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +56 -50
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +15 -39
- package/pack/.claude/skills/rite-vet/reference/depth.md +2 -2
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -6
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +0 -6
- package/pack/generated/README.md +2 -2
- package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -18
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +10 -18
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +10 -20
- package/pack/generated/claude/agents/devrites-evidence-scout.md +14 -26
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +9 -15
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +13 -21
- package/pack/generated/claude/agents/devrites-plan-drafter.md +24 -28
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +30 -47
- package/pack/generated/claude/agents/devrites-proof-runner.md +41 -47
- package/pack/generated/claude/agents/devrites-retrospector.md +34 -79
- package/pack/generated/claude/agents/devrites-security-auditor.md +9 -17
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +9 -18
- package/pack/generated/claude/agents/devrites-slice-wright.md +44 -62
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +38 -50
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +10 -19
- package/pack/generated/claude/agents/devrites-test-analyst.md +22 -21
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +52 -71
- package/pack/generated/claude/settings.json +12 -100
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -2
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +6 -9
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +0 -1
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +21 -27
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +22 -33
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +4 -6
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +1 -2
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +2 -1
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +31 -36
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +37 -66
- package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +51 -0
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +20 -12
- package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +22 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +35 -110
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +26 -93
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +6 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +43 -34
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +90 -216
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +9 -28
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +13 -11
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +59 -54
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +29 -143
- package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +5 -6
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +13 -31
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +112 -82
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +71 -45
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +22 -11
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +15 -24
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +106 -37
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +3 -4
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +3 -4
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite/SKILL.md +12 -13
- package/pack/generated/claude/skills/rite/reference/menu.md +11 -11
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +29 -84
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +16 -50
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +65 -54
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +24 -17
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +18 -21
- package/pack/generated/claude/skills/rite-build/SKILL.md +28 -34
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +36 -34
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +5 -19
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +10 -9
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +17 -17
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +3 -3
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +11 -14
- package/pack/generated/claude/skills/rite-build/reference/output.md +14 -24
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +49 -188
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +43 -133
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +46 -40
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +4 -10
- package/pack/generated/claude/skills/rite-converge/SKILL.md +9 -33
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +2 -2
- package/pack/generated/claude/skills/rite-customize/SKILL.md +34 -50
- package/pack/generated/claude/skills/rite-define/SKILL.md +34 -58
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +15 -0
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +52 -64
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +1 -2
- package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -20
- package/pack/generated/claude/skills/rite-frame/SKILL.md +1 -7
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +1 -1
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +1 -2
- package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/claude/skills/rite-learn/SKILL.md +44 -104
- package/pack/generated/claude/skills/rite-plan/SKILL.md +14 -26
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -1
- package/pack/generated/claude/skills/rite-polish/SKILL.md +20 -28
- package/pack/generated/claude/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/generated/{codex/skills/rite-ship → claude/skills/rite-polish}/reference/design-memory.md +23 -21
- package/pack/generated/claude/skills/rite-polish/reference/ledger.md +62 -0
- package/pack/generated/claude/skills/rite-pov/SKILL.md +28 -32
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +0 -1
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +6 -13
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +0 -6
- package/pack/generated/claude/skills/rite-prove/SKILL.md +73 -68
- package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +34 -30
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +15 -14
- package/pack/generated/claude/skills/rite-quick/SKILL.md +5 -19
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +4 -21
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
- package/pack/generated/claude/skills/rite-review/SKILL.md +34 -57
- package/pack/generated/claude/skills/rite-seal/SKILL.md +54 -87
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +2 -2
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +31 -56
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +27 -51
- package/pack/generated/claude/skills/rite-seal/reference/output.md +2 -4
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +42 -140
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +2 -2
- package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +17 -28
- package/pack/generated/claude/skills/rite-ship/SKILL.md +65 -93
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +4 -1
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +4 -12
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +86 -48
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +22 -16
- package/pack/generated/claude/skills/rite-spec/SKILL.md +62 -95
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +1 -4
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +21 -20
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +16 -17
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +47 -49
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +28 -13
- package/pack/generated/claude/skills/rite-status/SKILL.md +30 -88
- package/pack/generated/claude/skills/rite-temper/SKILL.md +12 -31
- package/pack/generated/claude/skills/rite-upgrade/SKILL.md +86 -101
- package/pack/generated/claude/skills/rite-vet/SKILL.md +88 -117
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +56 -50
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +15 -39
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +3 -6
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +0 -6
- package/pack/generated/codex/AGENTS.md +5 -4
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +8 -27
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +9 -27
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +9 -29
- package/pack/generated/codex/agents/devrites-evidence-scout.toml +14 -36
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +8 -24
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +12 -30
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +24 -38
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +30 -57
- package/pack/generated/codex/agents/devrites-proof-runner.toml +41 -57
- package/pack/generated/codex/agents/devrites-retrospector.toml +34 -89
- package/pack/generated/codex/agents/devrites-security-auditor.toml +8 -26
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +8 -27
- package/pack/generated/codex/agents/devrites-slice-wright.toml +44 -71
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +38 -60
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +9 -28
- package/pack/generated/codex/agents/devrites-test-analyst.toml +21 -30
- package/pack/generated/codex/agents/devrites-upgrade-planner.toml +52 -81
- package/pack/generated/codex/config.toml +7 -0
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -21
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +6 -28
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +1 -21
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +21 -46
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +22 -33
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +4 -25
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +1 -21
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +2 -1
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +32 -56
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +38 -86
- package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +51 -0
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +20 -12
- package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +22 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +35 -110
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +26 -93
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +6 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +43 -34
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +90 -216
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +9 -28
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +13 -11
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +59 -54
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +29 -143
- package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +5 -6
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +13 -31
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +112 -82
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +71 -45
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +22 -11
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +15 -24
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +106 -37
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +3 -23
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +3 -23
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +3 -22
- package/pack/generated/codex/skills/rite/SKILL.md +12 -32
- package/pack/generated/codex/skills/rite/reference/menu.md +11 -11
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +29 -103
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +16 -50
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +65 -73
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +24 -17
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +18 -21
- package/pack/generated/codex/skills/rite-build/SKILL.md +28 -53
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +36 -34
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +5 -19
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +10 -9
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +17 -17
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +3 -3
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +11 -14
- package/pack/generated/codex/skills/rite-build/reference/output.md +14 -24
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +49 -188
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +43 -133
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +46 -59
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +4 -10
- package/pack/generated/codex/skills/rite-converge/SKILL.md +9 -52
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +2 -2
- package/pack/generated/codex/skills/rite-customize/SKILL.md +32 -67
- package/pack/generated/codex/skills/rite-define/SKILL.md +34 -77
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +15 -0
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +52 -83
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +1 -21
- package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -39
- package/pack/generated/codex/skills/rite-frame/SKILL.md +1 -26
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +1 -1
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +1 -21
- package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/codex/skills/rite-learn/SKILL.md +44 -123
- package/pack/generated/codex/skills/rite-plan/SKILL.md +14 -45
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +4 -1
- package/pack/generated/codex/skills/rite-polish/SKILL.md +20 -47
- package/pack/generated/codex/skills/rite-polish/reference/adr-promotion.md +11 -0
- package/pack/{.claude/skills/rite-ship → generated/codex/skills/rite-polish}/reference/design-memory.md +23 -21
- package/pack/generated/codex/skills/rite-polish/reference/ledger.md +62 -0
- package/pack/generated/codex/skills/rite-pov/SKILL.md +28 -51
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +0 -20
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +6 -32
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +0 -25
- package/pack/generated/codex/skills/rite-prove/SKILL.md +73 -87
- package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +34 -30
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +15 -14
- package/pack/generated/codex/skills/rite-quick/SKILL.md +5 -38
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +4 -40
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +2 -2
- package/pack/generated/codex/skills/rite-review/SKILL.md +34 -76
- package/pack/generated/codex/skills/rite-seal/SKILL.md +51 -103
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +2 -2
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +31 -56
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +27 -51
- package/pack/generated/codex/skills/rite-seal/reference/output.md +2 -4
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +42 -140
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +2 -2
- package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +17 -28
- package/pack/generated/codex/skills/rite-ship/SKILL.md +65 -112
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +4 -1
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +4 -12
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +86 -48
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +22 -16
- package/pack/generated/codex/skills/rite-spec/SKILL.md +62 -114
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +1 -4
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +21 -20
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +16 -17
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +47 -49
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +28 -13
- package/pack/generated/codex/skills/rite-status/SKILL.md +30 -107
- package/pack/generated/codex/skills/rite-temper/SKILL.md +12 -50
- package/pack/generated/codex/skills/rite-upgrade/SKILL.md +86 -120
- package/pack/generated/codex/skills/rite-vet/SKILL.md +88 -136
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +56 -50
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +15 -39
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +3 -6
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +0 -25
- package/package.json +6 -5
- package/scripts/build-host-artifacts.sh +5 -9
- package/scripts/codex-generate.sh +18 -278
- package/scripts/install-lib.sh +121 -34
- package/uninstall.sh +19 -17
- package/update.sh +26 -18
- package/docs/engine/agent-contract.md +0 -172
- package/docs/extensions.md +0 -178
- package/engine/git_guard.go +0 -187
- package/engine/git_guard_test.go +0 -283
- package/engine/harnessmatrix.go +0 -60
- package/engine/hookpolicy.go +0 -113
- package/engine/hookpolicy_test.go +0 -160
- package/engine/hooks.go +0 -677
- package/engine/hooks_agent_dispatch.go +0 -1637
- package/engine/hooks_events_test.go +0 -431
- package/engine/hooks_workspace.go +0 -1196
- package/engine/internal/doctor/doctor.go +0 -306
- package/engine/internal/doctor/doctor_test.go +0 -252
- package/engine/internal/forge/forge.go +0 -938
- package/engine/internal/forge/forge_test.go +0 -576
- package/engine/internal/forge/git.go +0 -245
- package/engine/internal/forge/liveness_unix.go +0 -48
- package/engine/internal/forge/liveness_windows.go +0 -67
- package/engine/internal/forge/manifest.go +0 -402
- package/engine/internal/harness/compliance.go +0 -96
- package/engine/internal/harness/harness.go +0 -301
- package/engine/internal/harness/harness_test.go +0 -124
- package/engine/internal/iohooks/detach_other.go +0 -11
- package/engine/internal/iohooks/detach_unix.go +0 -11
- package/engine/internal/iohooks/iohooks.go +0 -839
- package/engine/internal/iohooks/iohooks_test.go +0 -561
- package/engine/internal/lib/adoption.go +0 -659
- package/engine/internal/lib/adoption_test.go +0 -121
- package/engine/internal/lib/analyze.go +0 -232
- package/engine/internal/lib/archivesearch.go +0 -125
- package/engine/internal/lib/archivesearch_test.go +0 -138
- package/engine/internal/lib/budget.go +0 -172
- package/engine/internal/lib/buildreadiness.go +0 -111
- package/engine/internal/lib/checkacceptance.go +0 -176
- package/engine/internal/lib/clarifyreturn.go +0 -91
- package/engine/internal/lib/clarifyreturn_test.go +0 -123
- package/engine/internal/lib/command_other.go +0 -7
- package/engine/internal/lib/command_unix.go +0 -24
- package/engine/internal/lib/context.go +0 -280
- package/engine/internal/lib/conventions.go +0 -449
- package/engine/internal/lib/coverage.go +0 -145
- package/engine/internal/lib/dispatchwaive.go +0 -31
- package/engine/internal/lib/dispatchwaive_test.go +0 -23
- package/engine/internal/lib/doubtcoverage.go +0 -78
- package/engine/internal/lib/extensions.go +0 -622
- package/engine/internal/lib/extensions_test.go +0 -305
- package/engine/internal/lib/footprint.go +0 -239
- package/engine/internal/lib/gitauthority.go +0 -601
- package/engine/internal/lib/gitauthority_test.go +0 -346
- package/engine/internal/lib/jsonout.go +0 -129
- package/engine/internal/lib/jsonout_test.go +0 -73
- package/engine/internal/lib/lanes.go +0 -112
- package/engine/internal/lib/learnings.go +0 -397
- package/engine/internal/lib/learnings_inject_test.go +0 -77
- package/engine/internal/lib/learnings_remediation_test.go +0 -24
- package/engine/internal/lib/ledger.go +0 -311
- package/engine/internal/lib/ledger_test.go +0 -186
- package/engine/internal/lib/mutationgate.go +0 -89
- package/engine/internal/lib/observability_test.go +0 -358
- package/engine/internal/lib/overrides.go +0 -164
- package/engine/internal/lib/overrides_test.go +0 -112
- package/engine/internal/lib/preamble.go +0 -159
- package/engine/internal/lib/preamble_questions_test.go +0 -10
- package/engine/internal/lib/progress.go +0 -210
- package/engine/internal/lib/provenance.go +0 -462
- package/engine/internal/lib/provenance_test.go +0 -154
- package/engine/internal/lib/readiness_contract.json +0 -118
- package/engine/internal/lib/readinessartifact.go +0 -533
- package/engine/internal/lib/readinessartifact_test.go +0 -422
- package/engine/internal/lib/reconcile.go +0 -1496
- package/engine/internal/lib/reconcile_test.go +0 -1071
- package/engine/internal/lib/recoveryattempts.go +0 -298
- package/engine/internal/lib/recoveryattempts_test.go +0 -215
- package/engine/internal/lib/reviewers.go +0 -143
- package/engine/internal/lib/reviewers_test.go +0 -45
- package/engine/internal/lib/reviewerstats.go +0 -199
- package/engine/internal/lib/reviewerstats_test.go +0 -104
- package/engine/internal/lib/reviewintegrity.go +0 -143
- package/engine/internal/lib/reviewintegrity_test.go +0 -103
- package/engine/internal/lib/runbook.go +0 -295
- package/engine/internal/lib/runbook_context_test.go +0 -182
- package/engine/internal/lib/session.go +0 -1020
- package/engine/internal/lib/session_test.go +0 -177
- package/engine/internal/lib/specparse.go +0 -125
- package/engine/internal/lib/specskeleton.go +0 -79
- package/engine/internal/lib/specvalidate.go +0 -391
- package/engine/internal/lib/specvalidate_test.go +0 -185
- package/engine/internal/lib/stuck.go +0 -206
- package/engine/internal/lib/templates/conventions_drift.tmpl +0 -6
- package/engine/internal/lib/templates/conventions_ledger_header.md +0 -6
- package/engine/internal/lib/templates/conventions_orient_header.txt +0 -1
- package/engine/internal/lib/testintegrity.go +0 -199
- package/engine/internal/lib/testintegrity_test.go +0 -149
- package/engine/internal/lib/tickafk.go +0 -86
- package/engine/internal/migrate/migrate.go +0 -279
- package/engine/internal/migrate/migrate_test.go +0 -157
- package/engine/internal/orient/firstrun.go +0 -50
- package/engine/internal/orient/firstrun_test.go +0 -72
- package/engine/internal/orient/orient.go +0 -69
- package/engine/internal/orient/orient_test.go +0 -25
- package/engine/internal/profile/profile.go +0 -284
- package/engine/internal/profile/profile_test.go +0 -13
- package/engine/internal/state/clarify_transition.go +0 -165
- package/engine/internal/state/clarify_transition_test.go +0 -130
- package/engine/internal/state/snapshot.go +0 -457
- package/engine/internal/toolpolicy/classifier.go +0 -533
- package/engine/internal/toolpolicy/classifier_test.go +0 -424
- package/engine/internal/toolpolicy/git.go +0 -616
- package/engine/internal/toolpolicy/scanner.go +0 -382
- package/engine/observability_cli_test.go +0 -52
- package/engine/profile_test.go +0 -76
- package/engine/subagent_orient_context.txt +0 -8
- package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +0 -1
- package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +0 -1
- package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +0 -1
- package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +0 -1
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +0 -2
- package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +0 -1
- package/engine/testdata/golden/TestParityAnalyze/noactive.golden +0 -1
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +0 -15
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +0 -16
- package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +0 -1
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +0 -15
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +0 -17
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +0 -16
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +0 -16
- package/engine/testdata/golden/TestParityBudget/default-active.golden +0 -4
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +0 -5
- package/engine/testdata/golden/TestParityBudget/no-active.golden +0 -1
- package/engine/testdata/golden/TestParityBudget/no-feature.golden +0 -1
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +0 -6
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +0 -6
- package/engine/testdata/golden/TestParityBudget/within.golden +0 -6
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +0 -2
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=clarifyopen.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +0 -2
- package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=legacycontract.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +0 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +0 -2
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +0 -2
- package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +0 -2
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +0 -2
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +0 -1
- package/engine/testdata/golden/TestParityCheckAcceptance.golden +0 -1
- package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +0 -7
- package/engine/testdata/golden/TestParityCoverage/arg=full.golden +0 -10
- package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +0 -1
- package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +0 -1
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +0 -9
- package/engine/testdata/golden/TestParityCoverage.golden +0 -1
- package/engine/testdata/golden/TestParityCursor/bare.golden +0 -3
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +0 -6
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +0 -5
- package/engine/testdata/golden/TestParityCursor/no-active.golden +0 -1
- package/engine/testdata/golden/TestParityCursor/red.golden +0 -5
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +0 -5
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +0 -2
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +0 -2
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +0 -3
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +0 -4
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +0 -2
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +0 -2
- package/engine/testdata/golden/TestParityDoubtCoverage.golden +0 -1
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +0 -3
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +0 -3
- package/engine/testdata/golden/TestParityMutationGate/ghost.golden +0 -1
- package/engine/testdata/golden/TestParityOrientSilentPath.golden +0 -1
- package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +0 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +0 -2
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +0 -2
- package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +0 -1
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +0 -2
- package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +0 -2
- package/engine/testdata/golden/TestParityReconcile/check-violation.golden +0 -1
- package/engine/testdata/golden/TestParityReconcile/close-window/snapshot.golden +0 -2
- package/engine/testdata/golden/TestParityReconcile/close-window.golden +0 -3
- package/engine/testdata/golden/TestParityReconcile/not-git.golden +0 -1
- package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +0 -2
- package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +0 -1
- package/engine/testdata/golden/TestParityReconcile/snapshot.golden +0 -2
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +0 -2
- package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +0 -1
- package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +0 -1
- package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/next-qid.golden +0 -2
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +0 -2
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +0 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +0 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +0 -2
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +0 -2
- package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +0 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +0 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +0 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +0 -2
- package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +0 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +0 -2
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +0 -2
- package/engine/testdata/golden/TestParitySpecValidate.golden +0 -1
- package/engine/testdata/golden/TestParityStatusline/full-afk.golden +0 -2
- package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +0 -2
- package/engine/testdata/golden/TestParityStatusline/no-active.golden +0 -1
- package/engine/testdata/golden/TestParityStatusline/nophase.golden +0 -2
- package/engine/testdata/golden/TestParityStatusline/red.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +0 -1
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +0 -1
- package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +0 -1
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +0 -2
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +0 -2
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +0 -2
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +0 -2
- package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +0 -1
- package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +0 -1
- package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +0 -1
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +0 -2
- package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +0 -1
- package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +0 -1
- package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +0 -1
- package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/budget1.golden +0 -2
- package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +0 -5
- package/engine/testdata/golden/TestParityTickAfk/budget3.golden +0 -2
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +0 -2
- package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +0 -3
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +0 -2
- package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +0 -1
- package/engine/testdata/golden/TestParityTickAfk/none.golden +0 -2
- package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +0 -1
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +0 -2
- package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +0 -1
- package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +0 -1
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +0 -2
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +0 -1
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +0 -2
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +0 -2
- package/engine/testdata/golden/TestStuckLogHashParity.golden +0 -1
- package/engine/tests/adr_0006_clock_seam_test.go +0 -36
- package/engine/tests/budget_test.go +0 -88
- package/engine/tests/canonical_ac_ids_test.go +0 -44
- package/engine/tests/concurrency_cli_test.go +0 -131
- package/engine/tests/conventions_test.go +0 -106
- package/engine/tests/doctor_cli_test.go +0 -223
- package/engine/tests/forge_cli_test.go +0 -463
- package/engine/tests/hook_test.go +0 -2732
- package/engine/tests/hooks_io_test.go +0 -309
- package/engine/tests/json_contract_test.go +0 -224
- package/engine/tests/lib_parity_test.go +0 -930
- package/engine/tests/migrate_cli_test.go +0 -195
- package/engine/tests/parity_analyze_test.go +0 -55
- package/engine/tests/parity_buildreadiness_test.go +0 -199
- package/engine/tests/parity_learnings_test.go +0 -89
- package/engine/tests/parity_mutationgate_test.go +0 -36
- package/engine/tests/parity_reconcile_test.go +0 -94
- package/engine/tests/parity_testintegrity_test.go +0 -65
- package/engine/tests/parity_tickafk_test.go +0 -83
- package/engine/validatepack.go +0 -192
- package/engine/validatepack_test.go +0 -79
- package/engine/validatepackskills.go +0 -181
- package/engine/validatepackskills_test.go +0 -171
- package/pack/.claude/agents/devrites-forge-judge.md +0 -118
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +0 -44
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +0 -52
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +0 -45
- package/pack/.claude/skills/rite-build/reference/forge.md +0 -210
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +0 -60
- package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +0 -9
- package/pack/.claude/skills/rite-ship/reference/ledger.md +0 -56
- package/pack/generated/claude/agents/devrites-forge-judge.md +0 -118
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +0 -44
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +0 -52
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +0 -45
- package/pack/generated/claude/skills/rite-build/reference/forge.md +0 -210
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +0 -60
- package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +0 -9
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +0 -56
- package/pack/generated/codex/agents/devrites-forge-judge.toml +0 -128
- package/pack/generated/codex/hooks.json +0 -185
- package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +0 -44
- package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +0 -71
- package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +0 -2
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +0 -45
- package/pack/generated/codex/skills/rite-build/reference/forge.md +0 -210
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +0 -60
- package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +0 -9
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +0 -56
- package/scripts/build-binaries.sh +0 -75
- package/scripts/build-release-tarball.sh +0 -105
- package/scripts/check-authority-drift.py +0 -125
- package/scripts/check-cross-refs.py +0 -139
- package/scripts/check-generated-skill-budget.mjs +0 -42
- package/scripts/check-instruction-size-baseline.mjs +0 -88
- package/scripts/check-invocation-integrity.py +0 -115
- package/scripts/check-no-global-writes.sh +0 -66
- package/scripts/check-no-personal-paths.py +0 -50
- package/scripts/check-npm-audit.mjs +0 -110
- package/scripts/check-reference-governance.mjs +0 -83
- package/scripts/check-reply-contract.sh +0 -64
- package/scripts/check-rule-uniqueness.sh +0 -45
- package/scripts/devrites-detect.sh +0 -176
- package/scripts/grade-feature.sh +0 -204
- package/scripts/live-hosts/agent-result.schema.json +0 -231
- package/scripts/live-hosts/claude.sh +0 -87
- package/scripts/live-hosts/codex.sh +0 -85
- package/scripts/live-hosts/common.sh +0 -113
- package/scripts/live-hosts/fake-host.py +0 -257
- package/scripts/live-hosts/host-transport.py +0 -286
- package/scripts/npm-audit-exceptions.json +0 -26
- package/scripts/pin.sh +0 -249
- package/scripts/release-check.sh +0 -75
- package/scripts/run-agent-contract-evals.py +0 -1380
- package/scripts/run-behavioral-evals.sh +0 -196
- package/scripts/run-evals.sh +0 -132
- package/scripts/run-live-behavioral-evals.py +0 -1310
- package/scripts/run-outcome-evals.sh +0 -454
- package/scripts/run-routing-evals.py +0 -342
- package/scripts/run-tests.mjs +0 -232
- package/scripts/scan-pack-security.py +0 -209
- package/scripts/scan-supply-chain-iocs.py +0 -127
- package/scripts/skill-pruning-audit.mjs +0 -121
- package/scripts/skills-inventory.mjs +0 -125
- package/scripts/supply-chain-iocs.json +0 -11
- package/scripts/sync-version.sh +0 -54
- package/scripts/validate-agent-composition.py +0 -57
- package/scripts/validate-command-parity.py +0 -70
- package/scripts/validate-frontmatter.py +0 -218
- package/scripts/validate-skill-anatomy.py +0 -139
- package/scripts/validate-workflow-security.py +0 -184
- package/scripts/validate-workspace-schema.py +0 -800
- package/scripts/validate.sh +0 -354
- package/scripts/workflow_schema.py +0 -69
- /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/decisions.md +0 -0
- /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/plan.md +0 -0
- /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/spec.md +0 -0
- /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/auth-tokens/tasks.md +0 -0
- /package/engine/testdata/fixtures/basic/devrites-root/{features → work}/search-ranking/spec.md +0 -0
package/docs/engine/commands.md
CHANGED
|
@@ -1,515 +1,123 @@
|
|
|
1
|
-
# `devrites-engine` commands
|
|
2
|
-
|
|
3
|
-
The
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
[
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
`
|
|
84
|
-
treated as DevRites provenance. Doctor also reports linked-worktree/submodule
|
|
85
|
-
identity, merge/rebase state, host-artifact drift, and project extensions that
|
|
86
|
-
have artifacts but no optional `provenance.json`.
|
|
87
|
-
|
|
88
|
-
### Root safety at command dispatch
|
|
89
|
-
|
|
90
|
-
For commands on the shared workspace router, the engine resolves the action
|
|
91
|
-
root once before the command body runs. Read-only and diagnostic forms can still
|
|
92
|
-
degrade cleanly outside a workspace. A form that writes workspace or Git state
|
|
93
|
-
preserves every unsafe-root refusal and exits `3` before its command body runs.
|
|
94
|
-
|
|
95
|
-
Strict forms include `footprint log`, `stuck log`, `recovery record|clear`,
|
|
96
|
-
`clarify-return`, `reconcile`, mutating `resolve` forms, `close-out`,
|
|
97
|
-
`decisions index`, `ledger sync`, `learnings add`, `timeline log|purge`,
|
|
98
|
-
`health run|check|record`, `review-fingerprints --write`,
|
|
99
|
-
`reviewer-stats record`, every `forge` verb, `extensions sync`, `context sync`,
|
|
100
|
-
and `runbook run|resume`. `resolve next-qid` stays read-only.
|
|
101
|
-
|
|
102
|
-
## `snapshot`: workspace status JSON
|
|
103
|
-
|
|
104
|
-
`devrites-engine snapshot [slug]` emits the `devrites.workspace.v1` JSON contract.
|
|
105
|
-
|
|
106
|
-
## `profile`: stable repo facts cache
|
|
107
|
-
|
|
108
|
-
`devrites-engine profile get|refresh` caches question-agnostic repo facts for grounding skills: top-level layout, manifests, and digests for root docs, ADRs, CI/deploy files, and `.devrites` principles/conventions. It never calls a model or the network.
|
|
109
|
-
|
|
110
|
-
- `profile get` prints `HIT` + JSON, `MISS` + cache path, or `NO-CACHE` outside a git repo.
|
|
111
|
-
- `profile refresh` derives the profile from disk and writes the cache.
|
|
112
|
-
|
|
113
|
-
The cache lives under `/tmp/compound-engineering/devrites/repo-profile` by default and is invalidated when profile-input files are dirty or newly added. Skills still re-scan candidate-specific code fresh.
|
|
114
|
-
|
|
115
|
-
## `migrate`: legacy aliases and old layouts
|
|
116
|
-
|
|
117
|
-
`devrites-engine migrate` keeps older `.devrites/features/<slug>/` workspaces
|
|
118
|
-
readable while using `.devrites/work/<slug>/` as the canonical live location.
|
|
119
|
-
Migration is:
|
|
120
|
-
|
|
121
|
-
- **idempotent**: a second run is a no-op (`already up to date`);
|
|
122
|
-
- **backed up**: the pre-migration `work/` and `ACTIVE` are snapshotted to a
|
|
123
|
-
timestamped `.migrate-backup-*` directory before anything changes;
|
|
124
|
-
- **lossless**: canonical files are added without deleting aliases. `README.md`
|
|
125
|
-
is the preferred workspace map while `feature.md` / `index.md` remain readable;
|
|
126
|
-
`state.md` is preferred while `status.md` remains a cursor alias; `evidence.md`
|
|
127
|
-
is preferred while `proof.md` remains a proof alias.
|
|
128
|
-
|
|
129
|
-
The phase is derived from the legacy `state.md`, defaulting to `build` when it
|
|
130
|
-
can't be read.
|
|
131
|
-
|
|
132
|
-
`devrites-engine update` refreshes the installed binary and pack. Migration
|
|
133
|
-
stops at structural compatibility and does not certify old planning artifacts
|
|
134
|
-
against current workflow rules. Build readiness routes an active workspace with
|
|
135
|
-
stale semantic artifacts to `/rite-upgrade [slug]`; that public rite preserves
|
|
136
|
-
completed work and reconciles only unfinished planning.
|
|
137
|
-
|
|
138
|
-
## Hooks: `hook <name> --harness=claude|codex`
|
|
139
|
-
|
|
140
|
-
One binary serves Claude Code and Codex through thin per-harness adapters.
|
|
141
|
-
Hooks are **fail-open and read-only unless they explicitly gate**.
|
|
142
|
-
|
|
143
|
-
- `devrites-engine hook orient --harness=H` emits the SessionStart orientation for the
|
|
144
|
-
active feature (named by `.devrites/ACTIVE`) as the harness's
|
|
145
|
-
`hookSpecificOutput.additionalContext` envelope. With no active feature (or a
|
|
146
|
-
stale pointer), the first-ever such session instead gets a one-time starting
|
|
147
|
-
nudge derived from the `first-task` token (greenfield → `/rite-spec`,
|
|
148
|
-
brownfield → `/rite-adopt`, …); the `.devrites/.first-run-shown` marker keeps
|
|
149
|
-
it from repeating. Silent (exit `0`, no output) outside a workspace or once
|
|
150
|
-
the marker exists.
|
|
151
|
-
- `devrites-engine hook auq` observes a completed `AskUserQuestion` call. It
|
|
152
|
-
appends one metadata-only `human-wait-resumed` v1 row per question to the root
|
|
153
|
-
and feature event logs. Canonical workflow answers stay in `questions.md`;
|
|
154
|
-
telemetry stores neither the prompt nor the answer. It never tunes, blocks,
|
|
155
|
-
or replies and stays silent outside an active workspace. This is Claude-only
|
|
156
|
-
because the Codex host exposes no equivalent post-user-input hook.
|
|
157
|
-
- `devrites-engine hook git-guard --harness=H` silently passes ordinary Git,
|
|
158
|
-
denies ambiguous high-impact shell forms with a direct-literal remediation,
|
|
159
|
-
and gates an unambiguous destructive operation on one exact digest. With no
|
|
160
|
-
grant it opens one idempotent escalating question. The exact answer
|
|
161
|
-
`Authorize once` is valid for 15 minutes and is atomically consumed before
|
|
162
|
-
the tool runs, so a failed tool call still spends it. Questions, the private
|
|
163
|
-
consumption ledger, events, and diagnostics never retain the raw command,
|
|
164
|
-
normalized tokens, paths, or refs.
|
|
165
|
-
- `devrites-engine hook stop-gate --harness=H` refuses to end a turn at a provably
|
|
166
|
-
inconsistent **rest point**, such as a feature in phase `seal` or `ship` with
|
|
167
|
-
empty `evidence.md` or `proof.md`. It does not check whole-feature completeness,
|
|
168
|
-
so normal in-progress work is never blocked. By default, it records a
|
|
169
|
-
would-be block in the feature's `.stop-gate.log` (mirroring
|
|
170
|
-
`devrites-engine hook stop-gate`) and allows the stop. Set
|
|
171
|
-
`DEVRITES_STOP_GATE=enforce` to block. The harness's `stop_hook_active` loop
|
|
172
|
-
guard prevents the hook from wedging a session.
|
|
173
|
-
|
|
174
|
-
When a guard makes a real decision, it appends a metadata-only
|
|
175
|
-
`devrites-event/v1` row. The row says which stable rule fired, whether the guard
|
|
176
|
-
was enforced, observed, unavailable, or bypassed, and which host delivered it.
|
|
177
|
-
It never copies the command, tool payload, fetched content, denial prose, or an
|
|
178
|
-
absolute path. Event-write failure stays fail-open and cannot change the hook's
|
|
179
|
-
decision.
|
|
180
|
-
|
|
181
|
-
### Fail-open guard
|
|
182
|
-
|
|
183
|
-
An inline POSIX guard makes a missing binary a no-op, so a teammate without
|
|
184
|
-
`devrites-engine` installed is not blocked:
|
|
185
|
-
|
|
186
|
-
```sh
|
|
187
|
-
command -v devrites-engine >/dev/null 2>&1 && devrites-engine hook orient --harness=claude || exit 0
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
## `ledger`: the living capability store
|
|
191
|
-
|
|
192
|
-
`devrites-engine ledger <sub>` maintains `.devrites/specs/<capability>/spec.md`, the cumulative
|
|
193
|
-
record of proven behavior (see [state-schema.md § Capability ledger](state-schema.md#capability-ledger-specs)).
|
|
194
|
-
Feature specs carry deltas under an `ADDED`, `MODIFIED`, or `REMOVED`
|
|
195
|
-
Requirements heading tagged with `capability: <c>`. The fold uses header identity
|
|
196
|
-
for upserts and deletes, so re-syncing a feature is a no-op.
|
|
197
|
-
|
|
198
|
-
- `ledger sync <workspace-dir>`: fold a feature's deltas into every capability they touch (ADDED
|
|
199
|
-
append, MODIFIED replace, REMOVED delete). Called from `/rite-ship` on GO. Exit `0`.
|
|
200
|
-
- `ledger diff <workspace-dir>`: dry-run the fold (the change preview shown before sync). Exit `0`.
|
|
201
|
-
- `ledger validate`: grammar-lint every ledger spec. Exit `0` clean · `1` on a violation.
|
|
202
|
-
- `ledger list` / `ledger show <capability>`: read the ledger (used by `/rite-spec` and
|
|
203
|
-
`/rite-adopt` to write deltas against the current contract). Exit `0` · `1` unknown capability.
|
|
204
|
-
|
|
205
|
-
`spec-validate <dir> --against .devrites/specs` cross-checks a spec's delta classification against
|
|
206
|
-
the ledger (ADDED must be new; MODIFIED/REMOVED must already exist) and validates Edge Coverage /
|
|
207
|
-
Prohibitions tables as a blocking spec-gate check.
|
|
208
|
-
|
|
209
|
-
## `analyze`: cross-artifact coverage & consistency
|
|
210
|
-
|
|
211
|
-
Before code is written, `devrites-engine analyze [slug]` compares a feature's
|
|
212
|
-
`spec.md` with its `tasks.md`. This catches coverage gaps while they still need
|
|
213
|
-
only a one-line plan edit instead of a mid-build reslice. The Markdown report
|
|
214
|
-
has four passes:
|
|
215
|
-
|
|
216
|
-
- **Coverage**: a spec `AC-###` that no slice `Satisfies:` (**CRITICAL**; legacy `[ACn]` remains supported).
|
|
217
|
-
- **Consistency**: a slice that `Satisfies:` an AC the spec never defines (**CRITICAL**).
|
|
218
|
-
- **Orphan slice**: a slice satisfying no acceptance criterion (warn).
|
|
219
|
-
- **Ambiguity**: an unquantified vague adjective (`fast`, `robust`, `intuitive`, …) or an
|
|
220
|
-
unresolved placeholder (`TODO`, `TKTK`, `???`) in the spec (warn).
|
|
221
|
-
|
|
222
|
-
It closes with a **Metrics** line (criteria count, coverage %, orphan + ambiguity counts) so the
|
|
223
|
-
vet gate reports a number instead of only pass or fail. Exit `0` clear · `1` at least one CRITICAL ·
|
|
224
|
-
`2` no workspace (no active slug, or `spec.md`/`tasks.md` missing). `/rite-vet` runs it in its
|
|
225
|
-
cross-artifact gate (step 2a) and adds semantic checks for terminology drift and
|
|
226
|
-
duplicated or conflicting requirements on top of this deterministic floor.
|
|
227
|
-
|
|
228
|
-
## `review-integrity`: the silent-reviewer gate
|
|
229
|
-
|
|
230
|
-
`devrites-engine review-integrity [slug]` catches reviews that return only
|
|
231
|
-
"looks good, nothing found." It parses the `## Spec` and `## Code review`
|
|
232
|
-
sections of `review.md` and flags any section with neither a bold severity label
|
|
233
|
-
nor a `No-findings:` justification. A zero-count summary does not count as a
|
|
234
|
-
finding, and an all-zero tally is treated as a rubber stamp. Exit `0` means
|
|
235
|
-
every axis is accounted for, or that `review.md` is absent or freeform. Exit
|
|
236
|
-
`1` means an axis is silent and unjustified.
|
|
237
|
-
`/rite-review` runs this check after writing `review.md`; `/rite-seal` treats
|
|
238
|
-
`rc=1` as an Important finding about review completeness. Like
|
|
239
|
-
`doubt-coverage` and the footprint roster, this command checks that the account
|
|
240
|
-
exists, not whether its judgment is correct.
|
|
241
|
-
|
|
242
|
-
## `timeline`: local, privacy-bounded workflow trace
|
|
243
|
-
|
|
244
|
-
`timeline log` accepts only validated `devrites-event/v1` facts. Legacy
|
|
245
|
-
free-text `--skill`, `--decision`, and `--note` writes are refused; `list`
|
|
246
|
-
continues to print old rows unchanged for compatibility. Canonical traces use a
|
|
247
|
-
stable `DEVRITES_RUN_ID` across related calls and the small event vocabulary
|
|
248
|
-
`run-started`, phase/gate events, `run-interrupted`, `run-resumed`, and
|
|
249
|
-
`run-finished`:
|
|
250
|
-
|
|
251
|
-
```bash
|
|
252
|
-
devrites-engine timeline log run-started \
|
|
253
|
-
--slug auth-tokens \
|
|
254
|
-
--execution-mode named \
|
|
255
|
-
--guard-strength n/a \
|
|
256
|
-
--reason-id DRV-ROOT-SELECTED \
|
|
257
|
-
--host codex
|
|
258
|
-
|
|
259
|
-
devrites-engine timeline log run-finished \
|
|
260
|
-
--slug auth-tokens \
|
|
261
|
-
--outcome passed \
|
|
262
|
-
--execution-mode named \
|
|
263
|
-
--guard-strength n/a \
|
|
264
|
-
--reason-id DRV-GATE-SEAL-PASSED \
|
|
265
|
-
--host codex \
|
|
266
|
-
--evidence .devrites/work/auth-tokens/seal.md
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
`--execution-mode`, `--guard-strength`, and `--reason-id` are required. Rows may
|
|
270
|
-
also carry phase IDs, rule IDs, project-relative evidence paths, and a host ID.
|
|
271
|
-
They never retain prompts, question/answer text, source or diff bodies, model
|
|
272
|
-
prose, absolute paths, user/external identifiers, auth/config/secrets, or token
|
|
273
|
-
estimates. The current v1 contract exposes host but not model, token, or cost
|
|
274
|
-
fields, so the engine does not infer them.
|
|
275
|
-
|
|
276
|
-
`timeline report [--run <opaque-id>] [--json]` reads at most the last 4 MiB and
|
|
277
|
-
4,096 valid v1 rows. It reports observed run and phase duration, retry and
|
|
278
|
-
human-wait counts, interruption/resume linkage, active execution/guard mode,
|
|
279
|
-
the last failed gate reason, stale-evidence/degradation counts, and final
|
|
280
|
-
outcome. Missing, corrupt, oversized, legacy, or truncated input degrades the
|
|
281
|
-
report only. Legacy and corrupt rows are counted as ignored and never
|
|
282
|
-
interpreted as v1. The statusline and `progress` reuse these display facts but
|
|
283
|
-
never treat them as lifecycle authority.
|
|
284
|
-
|
|
285
|
-
Each telemetry log stops accepting new rows at 16 MiB. Hitting that bound
|
|
286
|
-
degrades telemetry only; it cannot weaken or strengthen a workflow decision.
|
|
287
|
-
|
|
288
|
-
`timeline purge (--before <RFC3339> | --run <opaque-id>)...` removes only valid
|
|
289
|
-
matching v1 rows from `.devrites/timeline.jsonl` and the live feature
|
|
290
|
-
`events.jsonl` files. When both selectors are present they form an intersection.
|
|
291
|
-
It never touches state, questions, decisions, evidence, recovery, capability,
|
|
292
|
-
or allowlist files. Purge is bounded to 16 MiB per file and refuses symlinks,
|
|
293
|
-
oversized rows, concurrent changes, and unsafe roots without mutation.
|
|
294
|
-
|
|
295
|
-
Telemetry is local instrumentation only; DevRites sends no analytics or remote
|
|
296
|
-
traces. Review the retention needs, then use exact purge selectors. Reports do
|
|
297
|
-
not interpret legacy rows, so manually delete legacy log files if their old
|
|
298
|
-
free-text content must be removed. Deleting only
|
|
299
|
-
`.devrites/timeline.jsonl` and live feature `events.jsonl` files is safe for
|
|
300
|
-
workflow correctness; the engine recreates them as needed.
|
|
301
|
-
|
|
302
|
-
## `health`: code-health dashboard and history
|
|
303
|
-
|
|
304
|
-
`devrites-engine health`, `health run`, and `health check` run the known project
|
|
305
|
-
checks (available npm test/lint/typecheck/build scripts, `go test`, `pytest`, and
|
|
306
|
-
DevRites scans where present), print a PASS/WARN/FAIL dashboard, and append the
|
|
307
|
-
result to `.devrites/health.jsonl`. These commands execute project checks; they
|
|
308
|
-
are not a substitute for reviewing those scripts before use.
|
|
309
|
-
|
|
310
|
-
The legacy `health record|list` surface remains available for manual scores.
|
|
311
|
-
`record` appends `.devrites/health-history.jsonl`; `list` tails
|
|
312
|
-
`.devrites/health.jsonl` when dashboard history exists, otherwise the legacy file.
|
|
313
|
-
Manual scores are intentionally caller-owned: name the observed evidence rather
|
|
314
|
-
than asking the engine to infer a universal metric.
|
|
315
|
-
|
|
316
|
-
```bash
|
|
317
|
-
devrites-engine health run
|
|
318
|
-
devrites-engine health record 8.5 "tests green; one follow-up" --note "review-fingerprints stable"
|
|
319
|
-
devrites-engine health list --limit 10
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
Scores must be `0..10`. The label should name the evidence rather than give a
|
|
323
|
-
subjective impression. Skill health stays static until DevRites records
|
|
324
|
-
per-skill run outcomes; use `scripts/skill-pruning-audit.mjs` for pruning
|
|
325
|
-
signals instead of inventing telemetry.
|
|
326
|
-
|
|
327
|
-
## `review-fingerprints`: stable IDs for findings
|
|
328
|
-
|
|
329
|
-
`devrites-engine review-fingerprints [--write] [slug]` scans `.devrites/work/<slug>/review.md` for
|
|
330
|
-
bold severity labels (`Critical`, `Important`, `Suggestion`, `Nit`, `FYI`) and emits stable
|
|
331
|
-
12-character IDs derived from severity + normalized finding text. With `--write`, it saves
|
|
332
|
-
`.devrites/work/<slug>/review-fingerprints.jsonl`.
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
devrites-engine review-fingerprints --write auth-tokens
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
The IDs let callers correlate recurring findings, dismissals, and later
|
|
339
|
-
learning without copying full review text into every downstream surface.
|
|
340
|
-
`review-integrity` remains the gate; this command records only stable
|
|
341
|
-
references.
|
|
342
|
-
|
|
343
|
-
## `reviewer-stats`: dispatch outcomes that gate the fan-out
|
|
344
|
-
|
|
345
|
-
`devrites-engine reviewer-stats record <agent> <surviving-findings> [slug]` appends one dispatch
|
|
346
|
-
outcome to `.devrites/reviewer-stats.jsonl` (cross-feature, append-only).
|
|
347
|
-
`devrites-engine reviewer-stats report [--json]` grades each reviewer deterministically:
|
|
348
|
-
|
|
349
|
-
- `run (always-on)`: the unconditional axes (`spec-reviewer`, `code-reviewer`, `test-analyst`).
|
|
350
|
-
- `run (insurance; never gated)`: `security-auditor` and `doubt-reviewer`. A dry streak is
|
|
351
|
-
success, never a reason to skip.
|
|
352
|
-
- `gate-candidate`: a conditional reviewer with zero surviving findings in its last 10+
|
|
353
|
-
dispatches; the fan-out may skip it as a *recorded* skip (see the shared
|
|
354
|
-
`pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md` contract,
|
|
355
|
-
§ Hit-rate gating).
|
|
356
|
-
- `run`: everything else.
|
|
357
|
-
|
|
358
|
-
```bash
|
|
359
|
-
devrites-engine reviewer-stats record devrites-performance-reviewer 0 auth-tokens
|
|
360
|
-
devrites-engine reviewer-stats report
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
Thresholds live in the engine. The caller reads the verdict without
|
|
364
|
-
recalculating or overriding the streak. A user-requested full panel still
|
|
365
|
-
dispatches every reviewer.
|
|
366
|
-
|
|
367
|
-
## `reviewers list`: bounded reviewer aliases
|
|
368
|
-
|
|
369
|
-
`devrites-engine reviewers list` validates same-adapter reviewer aliases from `.devrites/config.json`
|
|
370
|
-
or flat `.devrites/config*` keys. It never executes a reviewer; it only checks the bounded config
|
|
371
|
-
surface (`cli` must be `claude` or `codex`; `model` and `agent` are opaque strings).
|
|
372
|
-
|
|
373
|
-
```json
|
|
374
|
-
{
|
|
375
|
-
"review": {
|
|
376
|
-
"reviewer_instances": {
|
|
377
|
-
"codex-deep": { "cli": "codex", "model": "o3" }
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
## `forge`: isolated candidate worktrees
|
|
384
|
-
|
|
385
|
-
Forge compares two or three implementation strategies without letting a worker
|
|
386
|
-
choose its own worktree, branch, or merge target. The engine owns those paths in
|
|
387
|
-
one `devrites-forge/v1` manifest:
|
|
388
|
-
|
|
389
|
-
```bash
|
|
390
|
-
devrites-engine forge plan SLICE-004 feature-slug \
|
|
391
|
-
--strategy A='small adapter' \
|
|
392
|
-
--strategy B='native integration' \
|
|
393
|
-
--acceptance-hash <full-sha256> \
|
|
394
|
-
--test-plan-hash <full-sha256> \
|
|
395
|
-
--worker-binding manifest-env-v1
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
`plan` requires a clean primary checkout, 2 or 3 contiguous candidates, and
|
|
399
|
-
complete hashes for the acceptance and test-plan scorecards. It writes the
|
|
400
|
-
manifest before the first Git side effect, then creates candidate worktrees
|
|
401
|
-
under a sibling directory named `.<repo>.devrites-forge/<run-id>/`. The
|
|
402
|
-
manifest stays under
|
|
403
|
-
`.devrites/work/<slug>/.forge/<run-id>/manifest.json`.
|
|
404
|
-
|
|
405
|
-
Parallel Forge needs an exact host binding. Omitting
|
|
406
|
-
`--worker-binding manifest-env-v1` is a supported fallback, not a partial
|
|
407
|
-
parallel run. The command exits `0` with:
|
|
408
|
-
|
|
409
|
-
```json
|
|
410
|
-
{"status":"degraded","mode":"serial","reason":"supported worker binding was not declared"}
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
It creates no manifest, branch, or worktree in that case. An unsafe repository
|
|
414
|
-
topology, dirty primary checkout, in-progress Git operation, unavailable
|
|
415
|
-
process-liveness proof, or path collision also returns a bounded serial
|
|
416
|
-
degradation when it can do so safely. Invalid arguments or a broken manifest
|
|
417
|
-
fail instead of silently choosing a target.
|
|
418
|
-
|
|
419
|
-
Use `forge process-token <pid>` to obtain the process-start token for a real
|
|
420
|
-
worker. A bound candidate wright receives all five variables below and runs
|
|
421
|
-
from the candidate worktree:
|
|
1
|
+
# `devrites-engine` commands
|
|
2
|
+
|
|
3
|
+
The engine is a deterministic, stdlib-only control plane. It has no model or
|
|
4
|
+
provider dependency and does not dispatch agents, interpret reviews, or choose
|
|
5
|
+
workflow strategy.
|
|
6
|
+
|
|
7
|
+
## Complete operational command inventory
|
|
8
|
+
|
|
9
|
+
| Command | Deterministic responsibility |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `install [flags]` | Install manifest-owned host artifacts and the optional shared binary. |
|
|
12
|
+
| `update [flags]` | Refresh an existing managed installation. |
|
|
13
|
+
| `uninstall [flags]` | Remove managed artifacts while preserving runtime workspace state. |
|
|
14
|
+
| `check candidate <slug>` | Validate the strict manifest and compute the content-bound project-candidate identity. |
|
|
15
|
+
| `check readiness <slug>` | Check phase files, human gates, and the current stable Build-input binding when applicable. |
|
|
16
|
+
| `check readiness --emit-binding <slug>` | Render the exact stable Build-input binding for Vet to record after review. |
|
|
17
|
+
| `check seal <slug>` | Check final files, human gates, the stable Build-input binding, and exact candidate bindings. |
|
|
18
|
+
| `state resolve <qid> "<answer>"` | Resolve an open question and update `questions.md` plus `state.md` atomically. |
|
|
19
|
+
| `state close <slug>` | Archive a shipped workspace and clear matching `ACTIVE`. |
|
|
20
|
+
| `secret-scan [--staged] [--stdin] [slug]` | Scan exact staged blobs, stdin, or touched regular files for credential material. |
|
|
21
|
+
| `version` | Print the engine version. |
|
|
22
|
+
|
|
23
|
+
`help`, `-h`, and `--help` print this operational inventory. `version` and
|
|
24
|
+
`--version` print the binary version. Other unlisted command forms are rejected
|
|
25
|
+
as unknown; the engine has no compatibility aliases or tombstones. The
|
|
26
|
+
`add`/`upgrade`/`remove` conveniences belong only to the `npx devrites` adapter,
|
|
27
|
+
not to the engine command namespace.
|
|
28
|
+
|
|
29
|
+
## Check boundary
|
|
30
|
+
|
|
31
|
+
The candidate gate validates and hashes path/state/type/mode/content identity;
|
|
32
|
+
it does not infer scope from Git. The readiness gate checks structure plus the
|
|
33
|
+
exact stable Build-input binding after Vet. The seal gate repeats that binding
|
|
34
|
+
and checks exact candidate bindings in evidence, optional browser evidence,
|
|
35
|
+
review, and seal. None judges the meaning of `CLEAR`/`READY` prose,
|
|
36
|
+
parses reviewer narratives, infers acceptance coverage, counts assertions,
|
|
37
|
+
interprets capability deltas, or decides whether a technical plan is sound.
|
|
38
|
+
|
|
39
|
+
Those judgments are made by the current skill and exact native roles, including
|
|
40
|
+
`devrites-plan-reviewer`, `devrites-proof-runner`, `devrites-spec-reviewer`,
|
|
41
|
+
`devrites-test-analyst`, and `devrites-doubt-reviewer`. The root reconciles their
|
|
42
|
+
reports against live artifacts and observed repository proof.
|
|
43
|
+
|
|
44
|
+
## State
|
|
45
|
+
|
|
46
|
+
State mutations use the shared physical-root checks, feature lock, and atomic
|
|
47
|
+
write path. `state resolve` additionally supports `--drop` and `--batch`;
|
|
48
|
+
`state close` owns transactional archive plus `ACTIVE` clearing.
|
|
49
|
+
|
|
50
|
+
Normative spec grammar checks, qid allocation, Clarify cursor transitions, AFK
|
|
51
|
+
slice accounting, recovery attempt accounting, and installation diagnostics are
|
|
52
|
+
explicit root-owned native procedures. The workflow owns reproduction,
|
|
53
|
+
hypothesis ranking, tool selection, and routing. No replacement scripts or
|
|
54
|
+
counter artifacts are introduced.
|
|
55
|
+
|
|
56
|
+
## Offline install boundary
|
|
57
|
+
|
|
58
|
+
The engine's install/update/uninstall operations accept an already-local source,
|
|
59
|
+
pre-generated host payload, and optional staged binary. They never select a
|
|
60
|
+
release or download a bundle/binary. Shell and npm entrypoints own acquisition
|
|
61
|
+
and checksum verification, then invoke the local deterministic operation.
|
|
62
|
+
`update --check` compares the installed manifest version with the supplied
|
|
63
|
+
local candidate. `--to` and `--pre` are not supported engine flags.
|
|
64
|
+
|
|
65
|
+
Remote acquisition is exact-SemVer, HTTPS-only at every redirect, bounded, and
|
|
66
|
+
requires an exact-filename SHA-256 sidecar. Archive preflight completes before
|
|
67
|
+
extraction and unchecked raw/source/default-branch fallbacks are absent.
|
|
68
|
+
|
|
69
|
+
## Secret scanning
|
|
70
|
+
|
|
71
|
+
`secret-scan --staged` enumerates changed index entries and reads their exact
|
|
72
|
+
blob object IDs with replacement objects disabled. It does not substitute
|
|
73
|
+
working-tree bytes or follow a worktree symlink. `--stdin` reads supplied text
|
|
74
|
+
from process stdin; callers must not put that text in argv, environment, command
|
|
75
|
+
logs, here-documents, or temporary files.
|
|
76
|
+
|
|
77
|
+
Each invocation accepts at most 4,096 entries, 64 MiB total captured input, and
|
|
78
|
+
4,096 findings. Findings never include matched bytes, excerpts, or value hashes.
|
|
79
|
+
Input, limit, and output errors exit `2`; HIGH findings exit `3`.
|
|
80
|
+
|
|
81
|
+
## Output and exit contracts
|
|
82
|
+
|
|
83
|
+
`check candidate` passes with exactly:
|
|
422
84
|
|
|
423
85
|
```text
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
DEVRITES_FORGE_WORKER_ID
|
|
427
|
-
DEVRITES_FORGE_WORKER_PID
|
|
428
|
-
DEVRITES_FORGE_PROCESS_START
|
|
429
|
-
```
|
|
430
|
-
|
|
431
|
-
The binding is all-or-none. `wright-scope` checks the manifest, physical
|
|
432
|
-
working directory, repository common directory, candidate branch, worker ID,
|
|
433
|
-
live PID/start token, and leaf-agent identity before it permits a write. A
|
|
434
|
-
partial, stale, sibling, foreign, or tampered binding is denied.
|
|
435
|
-
|
|
436
|
-
The remaining commands advance only manifest-owned state:
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
devrites-engine forge record <run-id> A running \
|
|
440
|
-
--worker-id <id> --pid <pid> --process-start <token>
|
|
441
|
-
devrites-engine forge record <run-id> A finished --worker-id <id>
|
|
442
|
-
devrites-engine forge extract <run-id> A
|
|
443
|
-
devrites-engine forge record <run-id> winner A --worker-id <judge-id>
|
|
444
|
-
devrites-engine forge merge <run-id> A
|
|
445
|
-
devrites-engine forge record <run-id> verification verified \
|
|
446
|
-
--worker-id <verifier-id>
|
|
447
|
-
devrites-engine forge cleanup <run-id>
|
|
448
|
-
devrites-engine forge reap [feature-slug]
|
|
86
|
+
candidate-sha256: <64 lowercase hex>
|
|
87
|
+
candidate-files: <manifest row count>
|
|
449
88
|
```
|
|
450
89
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
delta hash, and refuses unrepresentable or still-live state. Merge requires the
|
|
454
|
-
recorded winner, a clean unchanged primary baseline, every candidate extracted,
|
|
455
|
-
and an exact fast-forward result. Cleanup runs only after the winner landed and
|
|
456
|
-
independent verification was recorded as `verified`. It preserves anything
|
|
457
|
-
dirty, live, foreign, ambiguous, or otherwise unsafe. `reap` follows the same
|
|
458
|
-
manifest-only rule for interrupted runs and never deletes a branch by name
|
|
459
|
-
alone.
|
|
460
|
-
|
|
461
|
-
## `extensions` / `overrides`: project extensibility
|
|
462
|
-
|
|
463
|
-
Two project-local surfaces let a team extend the pack without forking it. The
|
|
464
|
-
full contract is in [extensions.md](../extensions.md).
|
|
465
|
-
|
|
466
|
-
- `extensions list|validate|sync`: user rites/reviewers under `.devrites/extensions/<name>/`, held
|
|
467
|
-
to the pack's schema (`validate`, exit `1` on a malformed extension) and mirrored into `.claude/`
|
|
468
|
-
(`sync`, validates first, refuses a broken set).
|
|
469
|
-
- `overrides list|validate`: reviewer overrides under `.devrites/overrides/<agent>.md`, advisory
|
|
470
|
-
house rules a shipped reviewer reads after its standards. `validate` exits `1` when an override
|
|
471
|
-
reads like it waives a gate. An override may add checks but never relax one.
|
|
472
|
-
|
|
473
|
-
## `context sync|show`: agent context
|
|
474
|
-
|
|
475
|
-
`devrites-engine context sync [file ...]` upserts only the block delimited by
|
|
476
|
-
`<!-- DEVRITES START -->` / `<!-- DEVRITES END -->` in project context files. With no file args it
|
|
477
|
-
reads `.devrites/context.yaml` (`context_file:` or `context_files:`), then falls back to existing
|
|
478
|
-
`AGENTS.md` / `CLAUDE.md`, then `AGENTS.md`. Paths must be project-relative.
|
|
90
|
+
Invalid usage/root selection exits `2`; a candidate validation block prints
|
|
91
|
+
`candidate: BLOCKED: <reason>` and exits `3`.
|
|
479
92
|
|
|
480
|
-
`
|
|
481
|
-
root facts as `doctor`: canonical and lexical roots, selection reason, Git
|
|
482
|
-
top-level/dir/common-dir/superproject facts, active workspace source, and stable
|
|
483
|
-
hazards with pasteable remediations. `--json` emits one direct document for
|
|
484
|
-
wrappers that need to know where a command will act. `context sync` refuses an
|
|
485
|
-
unsafe root instead of writing through a fallback.
|
|
93
|
+
`check readiness --emit-binding <slug>` passes with exactly:
|
|
486
94
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
`devrites-engine runbook list|validate|run|resume` executes flat YAML runbooks from
|
|
490
|
-
`.devrites/runbooks/*.yaml`. Supported step forms are deliberately small:
|
|
491
|
-
|
|
492
|
-
```yaml
|
|
493
|
-
steps:
|
|
494
|
-
- engine: doctor
|
|
495
|
-
- rite: status
|
|
496
|
-
- shell: npm test
|
|
497
|
-
- gate: review before release
|
|
95
|
+
```text
|
|
96
|
+
Readiness inputs SHA-256: <64 lowercase hex>
|
|
498
97
|
```
|
|
499
98
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
99
|
+
It binds the fixed records documented in the
|
|
100
|
+
[workspace schema](workspace-schema.md#build-readiness-binding), not mtimes or
|
|
101
|
+
ambient Git state. Ordinary readiness and Seal require that exact standalone
|
|
102
|
+
line in `eng-review.md`; stale input returns
|
|
103
|
+
`reason: DRV-GATE-READINESS-STALE` and routes through `/rite-vet`.
|
|
104
|
+
|
|
105
|
+
- `0`: passed or completed.
|
|
106
|
+
- `2`: common invalid request or unreadable-state result.
|
|
107
|
+
- `3`: common deterministic lifecycle or safety block.
|
|
108
|
+
- Atomic state operations retain their documented operation-specific nonzero
|
|
109
|
+
results.
|
|
110
|
+
|
|
111
|
+
Lifecycle checks emit stable line-oriented fields, including a `reason: DRV-...`
|
|
112
|
+
identifier for the deterministic outcome. The native `/rite-doctor` workflow
|
|
113
|
+
emits its own human-readable OK/WARN/FAIL report. Neither surface introduces an
|
|
114
|
+
agent API or versioned wrapper.
|
|
115
|
+
|
|
116
|
+
Strict mutators resolve the physical root once and refuse unsafe symlinks,
|
|
117
|
+
nested-repository inheritance, ambiguity, or escapes. Repository source
|
|
118
|
+
validation belongs to `scripts/validate.sh` and CI, not an installed engine.
|
|
119
|
+
|
|
120
|
+
Production Go and shell Git callers remove environment variables that can
|
|
121
|
+
retarget the repository, worktree, index, objects, refs, config, or pathspec,
|
|
122
|
+
while retaining unrelated Git variables. This isolation is shared caller
|
|
123
|
+
policy, not another public command.
|