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/architecture.md
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
DevRites combines project-local Claude Code and Codex skills with one Go control
|
|
4
4
|
plane. It gives AI coding agents a defined engineering process: frame → spec →
|
|
5
5
|
mandatory adaptive clarify → optional temper → define → mandatory vet → build
|
|
6
|
-
|
|
6
|
+
bounded verified slices → prove with evidence → polish → review → seal → ship.
|
|
7
7
|
`converge` is the recovery state for bringing live code and recorded intent
|
|
8
8
|
back into agreement.
|
|
9
|
+
`frame` is a machine state/checkpoint and an optional, non-gating preflight
|
|
10
|
+
lens; Spec begins the required feature-definition path.
|
|
9
11
|
|
|
10
|
-
For the `.devrites/` load order, file budgets, artifact schema,
|
|
11
|
-
traceability rules, and phase-relative completeness model, see
|
|
12
|
+
For the `.devrites/` load order, file budgets, artifact schema, supported
|
|
13
|
+
cursor readers, traceability rules, and phase-relative completeness model, see
|
|
12
14
|
[`engine/workspace-schema.md`](engine/workspace-schema.md).
|
|
13
15
|
|
|
14
16
|
## Layers
|
|
@@ -20,8 +22,8 @@ traceability rules, and phase-relative completeness model, see
|
|
|
20
22
|
`rite-polish`, `rite-review`, `rite-seal`, and `rite-ship`. `rite-plan`
|
|
21
23
|
repairs or reslices an active plan. The resume verb `rite-resolve` answers a
|
|
22
24
|
HITL gate and clears `Awaiting human`. `rite-upgrade` is a conditional
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
evidence-gated compatibility route for older active workspaces, not a phase.
|
|
26
|
+
The thin `/rite` menu and read-only `rite-status` live in the public
|
|
25
27
|
utility layer below.
|
|
26
28
|
`/rite-seal` **decides** GO/NO-GO and writes the verdict to `seal.md`;
|
|
27
29
|
`/rite-ship` is the final core lifecycle rite that **executes** the
|
|
@@ -33,9 +35,11 @@ traceability rules, and phase-relative completeness model, see
|
|
|
33
35
|
`rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
|
|
34
36
|
`rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
|
|
35
37
|
`rite-autocomplete`. These are public commands. `rite-autocomplete` is the
|
|
36
|
-
unattended orchestrator.
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
unattended orchestrator. By default it drives the reversible lifecycle
|
|
39
|
+
through Seal GO and stops. Explicit `--ship` enters Ship preflight but still
|
|
40
|
+
waits for a fresh literal `GO` and native approval before mutation. It
|
|
41
|
+
chooses the recommended option at each soft gate and pauses for hard
|
|
42
|
+
irreversible-risk, blocking, or escalating gates, or a NO-GO. The
|
|
39
43
|
`devrites-` prefix prevents collisions with bundled Claude Code skill names
|
|
40
44
|
such as `prototype`, `handoff`, `triage`, and `diagnose`; it does not mark
|
|
41
45
|
visibility. `rite-pressure-test` needs no prefix because it does not collide.
|
|
@@ -44,8 +48,7 @@ traceability rules, and phase-relative completeness model, see
|
|
|
44
48
|
`-doubt`, `-ux-shape` (plans UX/UI into `design-brief.md` at `/rite-spec`),
|
|
45
49
|
`-frontend-craft`, `-browser-proof`, `-debug-recovery`,
|
|
46
50
|
`-api-interface`, `-audit` (dispatches the security / perf / simplify
|
|
47
|
-
fresh-context reviewer on an axis argument), `-prose-craft
|
|
48
|
-
`-refresh-indexes`. Public skills or host auto-selection invoke these 11
|
|
51
|
+
fresh-context reviewer on an axis argument), and `-prose-craft`. Public skills invoke these
|
|
49
52
|
specialists. They do not appear in the menu. The `user-invocable:` flag,
|
|
50
53
|
rather than the name prefix, determines whether a skill is public.
|
|
51
54
|
|
|
@@ -58,16 +61,16 @@ traceability rules, and phase-relative completeness model, see
|
|
|
58
61
|
4. **Supporting references**: `reference/*.md` inside each skill. Long checklists,
|
|
59
62
|
templates, and anti-rationalization tables loaded on demand (progressive
|
|
60
63
|
disclosure) so `SKILL.md` bodies stay small.
|
|
61
|
-
5. **Agents**: `.claude/agents/devrites-*` contains **
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
`devrites-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
evidence, never ask the human, change
|
|
69
|
-
`.devrites/**` state. See
|
|
70
|
-
|
|
64
|
+
5. **Agents**: `.claude/agents/devrites-*` contains **17 flat depth-one roles**:
|
|
65
|
+
16 read-only leaves and `devrites-slice-wright`, the sole source/test writer
|
|
66
|
+
role. Claude and Codex make only that role writable; Codex generates the
|
|
67
|
+
other 16 profiles read-only. The read-only set includes three
|
|
68
|
+
bounded work leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
|
|
69
|
+
`devrites-proof-runner`), the fresh upgrade assessor, plus the
|
|
70
|
+
reviewers, auditors, and retrospector. Public rites remain
|
|
71
|
+
authoritative: leaves return bounded evidence, never ask the human, change
|
|
72
|
+
phase, or write canonical `.devrites/**` state. See
|
|
73
|
+
[`orchestration.md`](orchestration.md) for the host boundary.
|
|
71
74
|
6. **Engineering rules**: DevRites' own stack-agnostic rules installed to
|
|
72
75
|
`.claude/skills/devrites-lib/reference/standards/`. Workspace-operating lifecycle
|
|
73
76
|
skills read `core.md` in step 0; compact utilities load only their local or conditional
|
|
@@ -92,38 +95,85 @@ per-skill catalog with triggers and I/O, and
|
|
|
92
95
|
[`capability-surface-selection.md`](capability-surface-selection.md) for where future
|
|
93
96
|
capabilities belong.
|
|
94
97
|
|
|
98
|
+
## Instruction authority
|
|
99
|
+
|
|
100
|
+
Classify the disputed claim before resolving it; authority is domain-specific:
|
|
101
|
+
|
|
102
|
+
- **Permission and instructions:** controlling host, safety, and user
|
|
103
|
+
instructions precede the repository's active agent guide and narrower scoped
|
|
104
|
+
instructions. A narrower instruction may add constraints but cannot waive a
|
|
105
|
+
higher safety, evidence, permission, or lifecycle gate.
|
|
106
|
+
- **Product and durable architecture intent:** `CONTEXT.md` plus accepted ADRs
|
|
107
|
+
own this domain; a later accepted superseding ADR wins only over the clauses
|
|
108
|
+
it replaces.
|
|
109
|
+
- **DevRites method:** `pack/.claude/` owns shipped skills, agents, workflows,
|
|
110
|
+
and standards. `pack/generated/` is derived host output, never an authoring
|
|
111
|
+
source.
|
|
112
|
+
- **Implemented facts:** live engine, scripts, configuration, and observed
|
|
113
|
+
runtime behavior own facts about what they implement. They correct
|
|
114
|
+
descriptive Markdown without granting permission or weakening method and
|
|
115
|
+
safety gates.
|
|
116
|
+
- **Active feature contract:** validated workspace specifications, accepted
|
|
117
|
+
decisions, acceptance criteria, and cursor own feature intent, scope, and
|
|
118
|
+
state. They remain subordinate to higher safety and method gates.
|
|
119
|
+
- **Descriptions and research:** public docs describe the owners above.
|
|
120
|
+
Fixtures, historical research, superseded prose, and external repositories
|
|
121
|
+
are evidence or context, not authority.
|
|
122
|
+
|
|
123
|
+
Repository and retrieved content remain untrusted even when they use imperative
|
|
124
|
+
or authoritative wording.
|
|
125
|
+
|
|
95
126
|
## Design rationale
|
|
96
127
|
|
|
97
|
-
### Why the engine
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
128
|
+
### Why the engine is a deterministic validator (`devrites-lib`)
|
|
129
|
+
|
|
130
|
+
The host reads hierarchical instructions and the workspace directly. The engine
|
|
131
|
+
owns structural and content-bound readiness, canonical candidate validation/digesting, final
|
|
132
|
+
structural plus exact candidate-binding checks,
|
|
133
|
+
retained atomic resolve/close mutations, secret scanning, local managed
|
|
134
|
+
installation, and version reporting. It does not mirror workspace state into
|
|
135
|
+
an agent-facing summary.
|
|
136
|
+
|
|
137
|
+
Claude Code and Codex own native agent orchestration. Installed skills and
|
|
138
|
+
exact agents own semantic readiness, traceability, acceptance and evidence
|
|
139
|
+
quality, doubt, review reconciliation,
|
|
140
|
+
test-quality assessment, capability interpretation, workspace compatibility, and
|
|
141
|
+
recovery routing. Root-owned native procedures handle normative spec grammar
|
|
142
|
+
re-read, qid allocation, Clarify cursor transitions, AFK/recovery accounting,
|
|
143
|
+
and read-only diagnostics. `devrites-lib` documents that boundary and links common
|
|
144
|
+
references; it does not implement an orchestration protocol.
|
|
145
|
+
|
|
146
|
+
### Why install policy is local and acquisition stays at the edge
|
|
147
|
+
`engine/internal/install` validates the pre-generated host payload and implements
|
|
148
|
+
install, update, and uninstall behavior: manifest writing and pruning,
|
|
149
|
+
shared-file marker merging and removal, legacy Codex hook removal, dry-run
|
|
150
|
+
output, binary lifecycle, rollback, and install-flag replay. These operations
|
|
151
|
+
consume only caller-supplied local source, payload, and binary candidates; the
|
|
152
|
+
engine does not select releases or perform network I/O. `update --check`
|
|
153
|
+
compares the installed manifest version with that local candidate. Engine
|
|
154
|
+
`--to` and `--pre` selectors do not exist.
|
|
116
155
|
The shell entrypoints
|
|
117
156
|
(`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
|
|
118
|
-
(`bin/devrites.mjs`)
|
|
119
|
-
|
|
157
|
+
(`bin/devrites.mjs`) are acquisition adapters. They acquire and verify the
|
|
158
|
+
exact-release bundle or binary, then pass local paths and user flags through to
|
|
159
|
+
the deterministic engine operation. Network paths require exact SemVer,
|
|
160
|
+
HTTPS-only redirects, exact-filename SHA-256 sidecars, private temporary
|
|
161
|
+
directories, bounded transfers, and full archive preflight. They provide no
|
|
162
|
+
unchecked raw, source-archive, tag, or default-branch fallback.
|
|
163
|
+
|
|
164
|
+
Package and release builds populate `pack/generated/{claude,codex}`, so normal
|
|
165
|
+
installs consume a pre-generated payload. In a source checkout, the shell
|
|
166
|
+
install and update shims may regenerate missing payload components before
|
|
167
|
+
handing the local payload to the engine. The engine itself only validates and
|
|
168
|
+
copies that payload; it never generates host artifacts, and invalid payloads
|
|
169
|
+
fail closed.
|
|
120
170
|
|
|
121
171
|
Directly managed manifest entries carry SHA-256 ownership records. Before the
|
|
122
172
|
first refresh, prune, or uninstall mutation, the engine classifies every
|
|
123
173
|
affected path. It preserves customized or legacy entries without hashes unless
|
|
124
174
|
`--force` is explicit, and it checks each path again immediately before a
|
|
125
|
-
destructive action. Marker-owned shared files retain their block
|
|
126
|
-
|
|
175
|
+
destructive action. Marker-owned shared files retain their block merge policy.
|
|
176
|
+
The engine rejects existing symlinks, junctions, and resolved target
|
|
127
177
|
escapes even under force.
|
|
128
178
|
|
|
129
179
|
Binary replacement is a separate transaction. Before replacement, the binary
|
|
@@ -133,31 +183,36 @@ same check in a new process. On failure, the engine atomically restores the old
|
|
|
133
183
|
bytes and mode or removes a bad first install. It does not use `PATH` to
|
|
134
184
|
establish binary identity.
|
|
135
185
|
|
|
186
|
+
Production Git call sites use one isolation policy in Go and one parity helper
|
|
187
|
+
in shell. They remove environment variables that can retarget the repository,
|
|
188
|
+
worktree, index, objects, refs, config, or pathspec while preserving unrelated
|
|
189
|
+
Git variables; callers do not maintain independent deny lists.
|
|
190
|
+
|
|
136
191
|
Some duplication is intentionally preserved at host boundaries. Raw `curl | bash`
|
|
137
192
|
install/uninstall must be self-contained enough to fetch the bundle before any sibling
|
|
138
193
|
files exist. Claude assets are authored under `pack/.claude/**`; Codex assets are
|
|
139
194
|
generated into `pack/generated/**` and installed to `.agents/skills`, `.codex/agents`,
|
|
140
|
-
`.codex/
|
|
195
|
+
`.codex/config.toml`, and `AGENTS.md` because Codex and Claude use
|
|
141
196
|
different project-local conventions. Those generated host artifacts are delivered by the
|
|
142
197
|
npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
|
|
143
198
|
|
|
144
|
-
### Why semantic upgrade is
|
|
199
|
+
### Why semantic upgrade is evidence-gated, not a migration
|
|
145
200
|
|
|
146
|
-
|
|
147
|
-
the installed binary and pack.
|
|
148
|
-
|
|
149
|
-
|
|
201
|
+
The shell/npm update entrypoint acquires a candidate and uses the local engine
|
|
202
|
+
update operation to refresh the installed binary and pack. An active
|
|
203
|
+
unfinished workspace may still fail a current contract. `/rite-upgrade [slug]`
|
|
204
|
+
first asks the exact read-only `devrites-upgrade-planner` for a typed, cited
|
|
205
|
+
assessment. Age and cursor encoding do not prove staleness. A repair must name
|
|
206
|
+
the current rule, workspace evidence, affected gate, owner, paths, and minimum
|
|
207
|
+
delta; Clarify, Plan repair, Converge, Vet, Prove, Polish, Review, or Seal then
|
|
208
|
+
performs it under normal gates. Candidate repair runs current real proof and
|
|
209
|
+
never synthesizes a historical pass; ambiguous legacy candidate scope is a gap.
|
|
150
210
|
|
|
151
|
-
|
|
152
|
-
the `
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
It preserves completed source, slice bodies, decisions, and evidence, repairs
|
|
157
|
-
only active unfinished planning, removes obsolete proof recipes and local
|
|
158
|
-
wrappers, and reruns the current readiness gates. Already-current workspaces
|
|
159
|
-
that pass readiness, completed workspaces, and archives remain untouched. See
|
|
160
|
-
[ADR-0012](adr/0012-semantic-workspace-upgrades.md).
|
|
211
|
+
The engine has no structural migration command or compatibility telemetry. It
|
|
212
|
+
directly reads the official v1/v2 bullet and v3 table `state.md` cursors without
|
|
213
|
+
rewriting them. Wider pre-release compatibility experiments are not runtime
|
|
214
|
+
contracts. See [ADR-0025](adr/0025-evidence-gated-workspace-upgrades.md) and
|
|
215
|
+
[ADR-0022](adr/0022-native-orchestration-thin-engine.md).
|
|
161
216
|
|
|
162
217
|
### Why `/engine` was rejected
|
|
163
218
|
A single `/engine` (or `/devrites`) command would load every phase's
|
|
@@ -171,13 +226,11 @@ The team chose `rite-` because it is short, easy to remember, and matches the
|
|
|
171
226
|
product's use of "rites" for disciplined steps. The prefix also avoids
|
|
172
227
|
collisions. Built-in or bundled Claude Code commands include `/plan`, `/review`,
|
|
173
228
|
`/run`, `/verify`, `/code-review`, `/simplify`, `/security-review`, `/init`,
|
|
174
|
-
`/compact`, and `/debug`.
|
|
175
|
-
`research/claude-code-skills-notes.md`.)
|
|
229
|
+
`/compact`, and `/debug`.
|
|
176
230
|
|
|
177
231
|
### Why a thin menu skill, not a mega-router
|
|
178
|
-
`/rite` is an entrypoint. It shows a compact phase-grouped menu
|
|
179
|
-
|
|
180
|
-
named verb to its owning skill. Menu mode does not read raw workspace state;
|
|
232
|
+
`/rite` is an entrypoint. It shows a compact phase-grouped menu and dispatches a
|
|
233
|
+
named verb to its owning skill. Menu mode does not infer workspace state;
|
|
181
234
|
`/rite-status` owns detailed status. `/rite` does not duplicate workflow logic,
|
|
182
235
|
which keeps selection small and leaves each phase in control of its context.
|
|
183
236
|
|
|
@@ -197,19 +250,29 @@ slice. Each concern therefore has its own artifact and gate. `/rite-spec`
|
|
|
197
250
|
investigates the request and codebase in depth, then writes `spec.md` with the
|
|
198
251
|
product what and why, requirements, acceptance criteria, non-goals, and
|
|
199
252
|
measurable success. The spec
|
|
200
|
-
must pass
|
|
253
|
+
must pass native semantic review. `/rite-clarify` then audits the full actor,
|
|
201
254
|
journey, data, interface, and operations topology and writes
|
|
202
255
|
`decision-coverage.md`. A complete spec needs no questions.
|
|
203
256
|
`/rite-define` turns that **approved, clarified spec** into `architecture.md`
|
|
204
257
|
(technical map), `plan.md` (approach), `tasks.md` (vertical `SLICE-###` work), and
|
|
205
|
-
`traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet`
|
|
206
|
-
`Implementation readiness: READY` before
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
258
|
+
`traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet` uses
|
|
259
|
+
the exact plan reviewer and records `Implementation readiness: READY` before
|
|
260
|
+
build. The active skills and reviewers verify those claims against all relevant
|
|
261
|
+
artifacts; the engine checks required-file structure and binds the stable Build
|
|
262
|
+
inputs to that review without interpreting their prose. This checks the full
|
|
263
|
+
spec before Build without turning `spec.md` into a long technical document.
|
|
210
264
|
`/rite-plan` separately repairs, reslices, or reorders an active plan when it
|
|
211
265
|
goes stale or drifts.
|
|
212
266
|
|
|
267
|
+
New or materially revised specs declare one `Capability impact:`. MODIFIED
|
|
268
|
+
capability deltas preserve every prior scenario and normative/source-grounded
|
|
269
|
+
claim unless an accepted `DEC-###` explicitly authorizes replacement. A changed
|
|
270
|
+
API, event, schema, or other provider/consumer boundary gets one canonical
|
|
271
|
+
`Shared contract proof` artifact plus provider- and consumer-side asserting
|
|
272
|
+
tests that both consume it; no boundary change uses one justified no-impact
|
|
273
|
+
statement. These contracts stay in `spec.md`, `plan.md`, and the existing
|
|
274
|
+
traceability/proof artifacts rather than creating another registry.
|
|
275
|
+
|
|
213
276
|
### Why `/rite-polish` is one skill with two progressive-disclosure halves
|
|
214
277
|
Polish has two natural halves: **code** (simplify, dead code, naming, plus
|
|
215
278
|
backend if BE was touched) and **UI** (normalize to the design system, then
|
|
@@ -230,17 +293,31 @@ Normalization remains the entry gate for UI polish. The UI reference refuses
|
|
|
230
293
|
to run Phase 4 before Phase 3 because detail work would otherwise reinforce
|
|
231
294
|
patterns that do not match the project's design system.
|
|
232
295
|
|
|
296
|
+
Polish also owns every candidate-affecting capability-ledger fold, optional
|
|
297
|
+
`DESIGN.md` update, and durable ADR promotion. It refreshes affected proof and
|
|
298
|
+
closes the manifest before Review; Ship does none of these writes.
|
|
299
|
+
|
|
233
300
|
### Why seal and ship are separate phases (`/rite-seal`, `/rite-ship`)
|
|
234
301
|
Deciding whether a change is safe to ship has a smaller blast radius than
|
|
235
|
-
shipping it. `/rite-seal`
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
302
|
+
shipping it. `/rite-seal` asks exact fresh-context agents to judge acceptance,
|
|
303
|
+
evidence quality, tests, doubt, and the applicable review axes; the root
|
|
304
|
+
reconciles their results, requires positive discriminating proof, binds the
|
|
305
|
+
review and verdict to the closed candidate, runs the structural-plus-binding
|
|
306
|
+
engine check,
|
|
307
|
+
writes the GO or NO-GO verdict to `seal.md`, and runs no git commands. On GO,
|
|
308
|
+
it sets `state.md` to `Next step: /rite-ship` and stops.
|
|
309
|
+
`/rite-ship` refuses to run without a GO in `seal.md` and remains
|
|
310
|
+
candidate-read-only. Before type-`GO`, it performs only read-only candidate,
|
|
311
|
+
history, existing-index, and plan checks, then discloses the exact one-use Git
|
|
312
|
+
attempt. After a fresh literal `GO`, it optionally collapses eligible
|
|
313
|
+
checkpoints, stages exact manifest paths, validates staged scope, bytes,
|
|
314
|
+
bindings, and secrets, commits, and reverifies the committed candidate. It runs
|
|
315
|
+
push, tag, or PR actions only when the disclosed project convention requires
|
|
316
|
+
them and they are approved, then writes `ship.md`. It sets phase `done` and
|
|
317
|
+
moves
|
|
241
318
|
`.devrites/work/<slug>/` to `.devrites/archive/<slug>/` with every `.md` file
|
|
242
|
-
preserved, and clears `.devrites/ACTIVE`. The GO verdict
|
|
243
|
-
|
|
319
|
+
preserved, and clears `.devrites/ACTIVE`. The Seal GO verdict authorizes no Git
|
|
320
|
+
mutation; only Ship's freshly approved disclosed attempt does.
|
|
244
321
|
|
|
245
322
|
### Why `/rite-autocomplete` exists (the unattended orchestrator)
|
|
246
323
|
Some features are routine enough to run without human input at every phase.
|
|
@@ -255,18 +332,19 @@ in `decisions.md`. It does **not** weaken the safety gates: genuine
|
|
|
255
332
|
product/scope/policy decisions, irreversible risk, human-only access/actions,
|
|
256
333
|
an open human-owned gate, a NO-GO, exhausted `max_slices`, or low confidence
|
|
257
334
|
still pause. Agents use bounded recovery for red tests, runtime failures, and
|
|
258
|
-
missing technical coverage. By default the workflow stops at the
|
|
259
|
-
|
|
260
|
-
|
|
335
|
+
missing technical coverage. By default the workflow stops at Seal GO with `/rite-ship` as the next step.
|
|
336
|
+
The `--ship` flag (alias `--yolo`) continues through Ship preflight, discloses
|
|
337
|
+
the exact Git plan, and still stops for a fresh literal `GO` plus native host
|
|
338
|
+
approval.
|
|
261
339
|
|
|
262
340
|
### Why persistent `.devrites/` state
|
|
263
341
|
Long features outlive a single context window. Durable Markdown for the spec,
|
|
264
342
|
plan, tasks, state, evidence, drift, and decisions lets any phase reload the
|
|
265
343
|
current position in any session, even after compaction. Later-phase
|
|
266
|
-
clarification stores `return_phase` and `return_next_action` in `state.md
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
344
|
+
clarification stores `return_phase` and `return_next_action` in `state.md` and
|
|
345
|
+
the root restores them only when the contract remains neutral. Recovery counts
|
|
346
|
+
the caller and recovery loop's failed attempts from current context plus
|
|
347
|
+
durable Dead ends/evidence, with no separate counter artifact.
|
|
270
348
|
|
|
271
349
|
### Run modes: HITL & AFK
|
|
272
350
|
|
|
@@ -299,13 +377,13 @@ contract.
|
|
|
299
377
|
|
|
300
378
|
## Design choices at a glance
|
|
301
379
|
|
|
302
|
-
- **Surface**: 31 public `rite-*` skills (
|
|
303
|
-
menu: 32 public and
|
|
380
|
+
- **Surface**: 31 public `rite-*` skills (43 total), plus the thin `/rite`
|
|
381
|
+
menu: 32 public and 11 internal. The lifecycle
|
|
304
382
|
includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
|
|
305
|
-
Converge recovery; Seal **decides** and Ship **executes + closes**.
|
|
306
|
-
`devrites-*`
|
|
307
|
-
non-command library. Visibility comes
|
|
308
|
-
namespace prefix.
|
|
383
|
+
Converge recovery; Seal **decides** and Ship **executes + closes**. Ten
|
|
384
|
+
`devrites-*` specialist skills are model-invoked; `devrites-lib` is the
|
|
385
|
+
eleventh internal skill and the shared non-command library. Visibility comes
|
|
386
|
+
from `user-invocable:`, not the namespace prefix.
|
|
309
387
|
- **Selection**: the `/rite` menu skill carries the routing table; every
|
|
310
388
|
workflow skill enforces a "right skill, right time" rule in its body.
|
|
311
389
|
- **State**: durable `.devrites/` Markdown that survives compaction and new sessions.
|
|
@@ -314,29 +392,39 @@ contract.
|
|
|
314
392
|
- **Run modes**: same lifecycle runs HITL (default; pause at typed gate) or AFK
|
|
315
393
|
(drop `.devrites/AFK`; loop continues, discretionary pauses downgrade to
|
|
316
394
|
advisory log, irreversible risk always pauses).
|
|
317
|
-
- **Slice rule**: build **one vertical slice,
|
|
395
|
+
- **Slice rule**: in HITL, a direct `/rite-build` builds **one vertical slice,
|
|
396
|
+
then stops**. An explicit `.devrites/AFK` sentinel is the bounded low-risk
|
|
397
|
+
exception that may chain slices under its cap and pause rules.
|
|
398
|
+
`/rite-autocomplete` owns full-lifecycle repetition.
|
|
318
399
|
- **Drift**: an explicit **Spec Drift Guard** in build/prove/polish/review/seal.
|
|
319
400
|
- **Design**: `devrites-frontend-craft` + a four-phase `/rite-polish` orchestrator (code + backend always; UI normalize + polish when UI is in scope).
|
|
320
|
-
- **Agents**:
|
|
321
|
-
one wright. Dispatch
|
|
322
|
-
|
|
401
|
+
- **Agents**: 17 fresh-context roles at flat depth one: 16 read-only leaves and
|
|
402
|
+
one wright. Dispatch uses the exact named project role; if it cannot spawn,
|
|
403
|
+
the workflow stops for HITL.
|
|
323
404
|
- **Review**: **feature-scoped** multi-axis review with severity labels and
|
|
324
405
|
fresh-context agents at the seal.
|
|
325
|
-
- **Scope**: clarify → seal (decide) → ship (
|
|
326
|
-
|
|
406
|
+
- **Scope**: clarify → seal (decide) → ship (read-only preflight → type-GO →
|
|
407
|
+
commit → optional approved push/tag/PR by project convention) → close. The CI
|
|
327
408
|
pipeline stays with the project.
|
|
328
|
-
- **Install**: project-local, manifest-managed host artifacts;
|
|
409
|
+
- **Install**: project-local, manifest-managed host artifacts; shell/npm owns
|
|
410
|
+
acquisition, the engine performs offline local mutation, and the optional
|
|
329
411
|
shared engine binary is the only allowed global artifact.
|
|
330
412
|
|
|
413
|
+
Candidate identity and bounded-input rationale are recorded in
|
|
414
|
+
[ADR-0026](adr/0026-content-bound-proof-and-bounded-inputs.md). The
|
|
415
|
+
[nine-source benchmark and adoption matrix](upstream-workflow-benchmark-2026-08-01.md)
|
|
416
|
+
is a dated 2026-08-01 research snapshot: it records the commits and conclusions
|
|
417
|
+
audited then, but it is not current authority. DevRites keeps its lifecycle and
|
|
418
|
+
canonical owners rather than adopting another project's runtime or terminology.
|
|
419
|
+
|
|
331
420
|
## Deviations from the original build brief (and why)
|
|
332
421
|
|
|
333
422
|
1. **Invocation semantics are explicit in frontmatter.** `user-invocable`
|
|
334
423
|
controls whether a skill is a public command; `disable-model-invocation`
|
|
335
424
|
independently marks explicit-only public utilities and the internal
|
|
336
|
-
`devrites-lib` library.
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
Model-invocable phases can still hand off and route;
|
|
425
|
+
`devrites-lib` library. Required and conditional agent dispatch stays in the
|
|
426
|
+
skill body, where the workflow step is already defined. Model-invocable
|
|
427
|
+
phases can still hand off and route;
|
|
340
428
|
per-phase side-effect discipline (for example, "stop after one slice") is
|
|
341
429
|
enforced in the skill **body**, because invocation flags cannot express it.
|
|
342
430
|
2. **`context: fork` used selectively.** Verified it is a real field (isolated
|
|
@@ -356,6 +444,6 @@ acceptance criteria.
|
|
|
356
444
|
|
|
357
445
|
See the top-level tree in `README.md` and the installed-target tree in `usage.md`.
|
|
358
446
|
The canonical source pack lives under `pack/.claude/` (skills, agents, rules,
|
|
359
|
-
and Claude
|
|
447
|
+
and Claude permission wiring). The build renders `pack/generated/` host artifacts;
|
|
360
448
|
the installer writes Claude assets under project `.claude/` and Codex assets
|
|
361
449
|
under `.agents/`, `.codex/`, and the managed `AGENTS.md` block.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Candidate integrity
|
|
2
|
+
|
|
3
|
+
DevRites proves one explicit project candidate rather than an ambient Git diff.
|
|
4
|
+
The candidate is the strict manifest in
|
|
5
|
+
`.devrites/work/<slug>/touched-files.md`; its content-bound identity is computed
|
|
6
|
+
only by `devrites-engine`.
|
|
7
|
+
|
|
8
|
+
The canonical grammar and artifact budgets live in
|
|
9
|
+
[`workspace-artifact-schema.md`](../pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md).
|
|
10
|
+
The architectural rationale is [ADR-0026](adr/0026-content-bound-proof-and-bounded-inputs.md).
|
|
11
|
+
|
|
12
|
+
## Manifest
|
|
13
|
+
|
|
14
|
+
`touched-files.md` contains exactly one `## Touched files` heading and exactly
|
|
15
|
+
one authoritative `## Candidate manifest` heading. `## Touched files` describes
|
|
16
|
+
the scope without repeating candidate paths; the manifest alone owns candidate
|
|
17
|
+
scope. Its body is either the exact line `No project files.` or a table whose
|
|
18
|
+
rows are sorted by `File`:
|
|
19
|
+
|
|
20
|
+
```markdown
|
|
21
|
+
| State | File | Slice | Reason |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| present | `path/to/file` | SLICE-001 | Observable reason |
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`State` is `present` or `deleted`. Paths are project-relative UTF-8, already
|
|
27
|
+
strictly sorted by normalized `File`, unique both exactly and under case
|
|
28
|
+
folding, portable, and wrapped in one backtick pair. Components reject
|
|
29
|
+
Windows-reserved characters and device names even when followed by an
|
|
30
|
+
extension, plus a trailing dot or space. The optional `## Review trail` can
|
|
31
|
+
point a human to `path:line` stops, but it cannot add to or redefine candidate
|
|
32
|
+
scope.
|
|
33
|
+
|
|
34
|
+
Repository-internal paths are never candidates. Under `.devrites`, only the
|
|
35
|
+
exact durable owners `.devrites/principles.md` and `.devrites/specs/**` are
|
|
36
|
+
admitted; all other siblings fail closed, including:
|
|
37
|
+
|
|
38
|
+
- `.devrites/work/**`
|
|
39
|
+
- `.devrites/ACTIVE`
|
|
40
|
+
- `.devrites/AFK`
|
|
41
|
+
- `.devrites/CHECKPOINT`
|
|
42
|
+
- `.devrites/archive/**`
|
|
43
|
+
- `.git/**`
|
|
44
|
+
|
|
45
|
+
Other durable project files are candidates when the feature changes them,
|
|
46
|
+
including `DESIGN.md` and `docs/adr/**`.
|
|
47
|
+
|
|
48
|
+
## Check and bindings
|
|
49
|
+
|
|
50
|
+
Run:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
devrites-engine check candidate <slug>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
A pass exits `0` and prints exactly two line-oriented fields:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
candidate-sha256: <64 lowercase hex>
|
|
60
|
+
candidate-files: <manifest row count>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Invalid usage or root selection exits `2`. An invalid slug/workspace, malformed
|
|
64
|
+
manifest, unsafe path, missing `present` file, existing `deleted` file, rejected
|
|
65
|
+
file type, or size breach exits `3` with `candidate: BLOCKED: <reason>` on
|
|
66
|
+
stderr. Fix the reported workspace or candidate; phases do not reinterpret a
|
|
67
|
+
rejected manifest.
|
|
68
|
+
|
|
69
|
+
The digest is recorded exactly once, as an unindented standalone line, in
|
|
70
|
+
`evidence.md`, `review.md`, and `seal.md`, plus `browser-evidence.md` when that
|
|
71
|
+
file exists:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
Candidate SHA-256: <64 lowercase hex>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The digest binds its domain and version plus every row's state, normalized path, regular/absent type,
|
|
78
|
+
executable bit, byte length, and content. Content drift therefore blocks even
|
|
79
|
+
when modification times are restored; a harmless touch with unchanged content
|
|
80
|
+
does not.
|
|
81
|
+
|
|
82
|
+
This worktree digest is not an atomic filesystem snapshot against a malicious
|
|
83
|
+
concurrent same-size rewrite. It detects ordinary drift and bounded type/size
|
|
84
|
+
changes; Ship's exact Git-index scope, byte, binding, and secret checks own the
|
|
85
|
+
final freeze immediately before commit.
|
|
86
|
+
|
|
87
|
+
## Lifecycle ownership
|
|
88
|
+
|
|
89
|
+
| Phase | Candidate responsibility |
|
|
90
|
+
|---|---|
|
|
91
|
+
| Build | Maintain the manifest from each green slice's actual scoped diff. |
|
|
92
|
+
| Prove | Check before and after approved commands, require the same digest, and bind real evidence (plus browser evidence when present). |
|
|
93
|
+
| Polish | Apply every code/UI correction, capability-ledger fold, design-memory update, and durable ADR promotion; update the manifest and rerun affected proof before closing the candidate. |
|
|
94
|
+
| Review | Review the closed bytes and bind `review.md` to their digest. A correction returns through affected Prove and a fresh Review. |
|
|
95
|
+
| Seal | Bind `seal.md`, recheck every binding, and run `check seal`. A correction returns through Prove and Review. |
|
|
96
|
+
| Ship | Remain candidate-read-only. Only ship/state/archive bookkeeping may change; candidate or manifest changes return through Prove, Review, and Seal. |
|
|
97
|
+
|
|
98
|
+
Capability-ledger, `DESIGN.md`, and ADR rollups happen in Polish before Review,
|
|
99
|
+
not in Ship.
|
|
100
|
+
|
|
101
|
+
## Git scope at Ship
|
|
102
|
+
|
|
103
|
+
Before type-`GO`, Ship is read-only: it protects existing staged work, verifies
|
|
104
|
+
the candidate, Seal, bindings, and worktree, analyzes checkpoint history, and
|
|
105
|
+
discloses the exact optional collapse and stage commands. Only literal `GO`
|
|
106
|
+
permits those disclosed index/history mutations. Ship then compares the
|
|
107
|
+
NUL-delimited `git diff --cached --name-status --no-renames -z` set with the
|
|
108
|
+
manifest: `present` maps only to `A` or `M`, and `deleted` only to `D`. Missing,
|
|
109
|
+
extra, renamed, duplicated, differently classified, or unstaged candidate
|
|
110
|
+
changes block. Candidate, Seal bindings, staged bytes, and the staged secret
|
|
111
|
+
scan all rerun immediately before commit; drift invalidates the one-use approval.
|
|
112
|
+
|
|
113
|
+
Immediately after the authorized commit and before push or tag, Ship compares
|
|
114
|
+
the commit's exact state/path set and bytes with the same manifest, then reruns
|
|
115
|
+
Candidate and Seal. A mismatch stops; it is never reinterpreted as equivalent.
|
|
116
|
+
Fresh literal `GO` and native host approval remain required for each disclosed
|
|
117
|
+
Git attempt.
|
|
118
|
+
|
|
119
|
+
## Older workspaces
|
|
120
|
+
|
|
121
|
+
Released v1/v2/v3 unfinished workspaces use read-only `/rite-upgrade`. A missing
|
|
122
|
+
or malformed manifest or binding is a current-contract defect, not permission to
|
|
123
|
+
guess historical bytes. When legacy scope, the live diff, tasks, and traceability
|
|
124
|
+
agree unambiguously, Upgrade routes current owners through Prove, Polish, Review,
|
|
125
|
+
and Seal as applicable. They run fresh real proof and never synthesize an old
|
|
126
|
+
pass. Ambiguous legacy scope remains a `gap` and stops without mutation.
|
|
127
|
+
|
|
128
|
+
## Limits
|
|
129
|
+
|
|
130
|
+
The engine accepts a manifest of at most 1 MiB and 4,096 rows. A path may be at
|
|
131
|
+
most 4,096 bytes, each present regular file at most 64 MiB, and all present
|
|
132
|
+
files together at most 256 MiB. Directories, symlinks, special files, traversal,
|
|
133
|
+
absolute paths, duplicates, case-fold collisions, reserved components, and
|
|
134
|
+
control characters fail closed. The engine proves deterministic identity and
|
|
135
|
+
exact bindings, not the semantic quality of a specification, test, review, or
|
|
136
|
+
release decision. See the
|
|
137
|
+
[canonical schema](../pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md)
|
|
138
|
+
for current limits and [`SECURITY.md`](../SECURITY.md) for trust boundaries.
|
|
@@ -4,17 +4,27 @@ Pick the smallest surface that keeps the behavior deterministic:
|
|
|
4
4
|
|
|
5
5
|
| Need | Put it in |
|
|
6
6
|
|---|---|
|
|
7
|
-
|
|
|
8
|
-
|
|
|
7
|
+
| Cross-host structural check, atomic state mutation, install, or secret safety | an existing documented `devrites-engine` primitive |
|
|
8
|
+
| Repository build/lint/schema/release validation | repository script or CI |
|
|
9
|
+
| Semantic readiness, traceability, acceptance, capability, or recovery judgment | skill |
|
|
9
10
|
| Fresh-context judgment or adversarial review | agent |
|
|
11
|
+
| Agent discovery, dispatch, scheduling, waiting, or follow-up | native host |
|
|
10
12
|
| Optional repeated structured external tool | MCP |
|
|
11
|
-
| One-shot local deterministic action | script
|
|
13
|
+
| One-shot repository-local deterministic action | script |
|
|
12
14
|
|
|
13
15
|
Rules:
|
|
14
16
|
|
|
15
17
|
- npm (`npx devrites ...`) is the canonical distribution path. The supported
|
|
16
18
|
`curl | bash` bootstrap exists for environments without Node; neither path is
|
|
17
19
|
a Claude/Codex plugin or marketplace install.
|
|
18
|
-
-
|
|
20
|
+
- The engine surface is closed around the inventory in [`cli.md`](cli.md).
|
|
21
|
+
Add a command only when both hosts need the same deterministic runtime
|
|
22
|
+
primitive and no existing command, standard library, native host feature, or
|
|
23
|
+
repository script owns it; semantic judgment is not such a primitive.
|
|
24
|
+
- Never build an engine broker around native agents. Skills name the exact role;
|
|
25
|
+
Claude or Codex owns spawn fields, scheduling, waiting, and result delivery.
|
|
19
26
|
- Prefer scripts for repo-local release/build glue that is not part of the user contract.
|
|
20
|
-
-
|
|
27
|
+
- Persisted schemas may carry versions; native agent orchestration does not get
|
|
28
|
+
a DevRites API version, tier protocol, receipt, polling loop, or fallback.
|
|
29
|
+
- Prefer deletion and the standard library; do not add a dependency for a few
|
|
30
|
+
deterministic lines.
|