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
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# ADR-0014: Native host capability boundary
|
|
2
|
+
|
|
3
|
+
- **Status:** Superseded by 0015
|
|
4
|
+
- **Date:** 2026-07-29
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
DevRites accumulated Go hooks for agent permissions and lifecycle, session
|
|
9
|
+
orientation, status presentation, compaction handoffs, test-output sentinels,
|
|
10
|
+
web caching and content scanning, and background code-index refresh. Current
|
|
11
|
+
Claude Code and Codex releases already own those static or host-specific
|
|
12
|
+
surfaces. Keeping a second implementation increased latency, configuration,
|
|
13
|
+
tests, and drift without strengthening the workflow.
|
|
14
|
+
|
|
15
|
+
Some DevRites policies are different: they depend on live workspace state or
|
|
16
|
+
one exact operation and cannot be represented by a static host permission
|
|
17
|
+
profile.
|
|
18
|
+
|
|
19
|
+
## Decision
|
|
20
|
+
|
|
21
|
+
Use native host behavior first. The engine exposes only four hooks:
|
|
22
|
+
|
|
23
|
+
- `git-guard` for exact, one-shot destructive Git authority;
|
|
24
|
+
- `a1-guard` for dynamic root-versus-writer ownership;
|
|
25
|
+
- `stop-gate` for canonical rest-point invariants; and
|
|
26
|
+
- `wright-scope` for the slice-wright's per-run exact path allowlist, Forge
|
|
27
|
+
binding, and reconcile boundary.
|
|
28
|
+
|
|
29
|
+
Claude read-only agents use native `permissionMode: plan`; Codex read-only
|
|
30
|
+
agents use native `sandbox_mode = "read-only"`. Both hosts own named-agent
|
|
31
|
+
lifecycle, transcript/session and compaction context, presentation, browsing
|
|
32
|
+
and cache behavior, and connected index lifecycle.
|
|
33
|
+
|
|
34
|
+
The slice-wright's first actionable `wright-scope` call captures its canonical
|
|
35
|
+
reconcile boundary. Capture is idempotent, so later tool calls cannot move that
|
|
36
|
+
boundary forward. No separate SubagentStart hook is required.
|
|
37
|
+
|
|
38
|
+
Proof remains explicit in workspace evidence and real command output. The
|
|
39
|
+
engine does not infer authority from a regex-based `.red` sentinel.
|
|
40
|
+
|
|
41
|
+
This record supersedes ADR-0003's `.red` StopGate clause, narrows ADR-0005 to
|
|
42
|
+
the four retained dynamic hooks, and replaces ADR-0013's wright-only start hook.
|
|
43
|
+
The rest of those decisions remains in force.
|
|
44
|
+
|
|
45
|
+
## Alternatives considered
|
|
46
|
+
|
|
47
|
+
| Option | Why not |
|
|
48
|
+
|---|---|
|
|
49
|
+
| Keep every hook for identical Claude/Codex behavior | It duplicates host features and makes DevRites responsible for unstable presentation and lifecycle APIs. |
|
|
50
|
+
| Remove every engine hook | Static host permissions cannot express one-shot Git authority or a per-run `.wright-allowlist`. |
|
|
51
|
+
| Keep a separate wright start hook | The existing PreToolUse scope hook can capture the same boundary safely when capture is idempotent. |
|
|
52
|
+
| Keep `.red` as a test oracle | Output regexes create stale and false-positive state; explicit proof artifacts and actual command results are authoritative. |
|
|
53
|
+
|
|
54
|
+
## Consequences
|
|
55
|
+
|
|
56
|
+
- Project hook configuration shrinks to three hooks; only the writer profile
|
|
57
|
+
adds `wright-scope`.
|
|
58
|
+
- Reviewer permissions have one owner per host.
|
|
59
|
+
- The engine no longer owns lifecycle telemetry, UI/status output, web caches,
|
|
60
|
+
ingestion heuristics, or index workers.
|
|
61
|
+
- Connected index providers may be refreshed explicitly when stale; absence of
|
|
62
|
+
one never blocks work.
|
|
63
|
+
- Dynamic security checks remain engine-tested and fail closed where static
|
|
64
|
+
host policy is insufficient.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# ADR-0015: Read-only root with native host orchestration
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-30
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
ADR-0014 retained four engine hooks after an initial native-host cleanup. Three
|
|
9
|
+
of them still duplicated boundaries the hosts can enforce directly:
|
|
10
|
+
|
|
11
|
+
- `a1-guard` inferred root-versus-writer ownership from hook payloads;
|
|
12
|
+
- `git-guard` implemented a second destructive-action permission system; and
|
|
13
|
+
- `stop-gate` rechecked lifecycle state when the host stopped.
|
|
14
|
+
|
|
15
|
+
The engine also retained orchestration and convenience surfaces that Codex,
|
|
16
|
+
Claude, native plugins, repository search, or CI already provide. This made
|
|
17
|
+
DevRites implement the same work twice and coupled it to host event formats.
|
|
18
|
+
|
|
19
|
+
Current hosts can load hierarchical instructions and exact named agent
|
|
20
|
+
profiles, apply native permission modes per root/agent, schedule and await
|
|
21
|
+
subagents, retain session history, and expose skills/plugins/search directly.
|
|
22
|
+
|
|
23
|
+
## Decision
|
|
24
|
+
|
|
25
|
+
DevRites uses this boundary:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
AGENTS.md / skills
|
|
29
|
+
↓
|
|
30
|
+
Codex or Claude interprets the workflow
|
|
31
|
+
↓
|
|
32
|
+
the host runs the exact native custom-agent profile
|
|
33
|
+
↓
|
|
34
|
+
the host waits and delivers results
|
|
35
|
+
↓
|
|
36
|
+
the root reconciles; the engine validates state/evidence/invariants
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The root orchestration context is source-read-only. It may invoke the explicit
|
|
40
|
+
DevRites commands that update `.devrites/**` and `.scratch/**`. Every specialist
|
|
41
|
+
is read-only except `devrites-slice-wright`, which receives native source-write
|
|
42
|
+
permission for one bounded task.
|
|
43
|
+
|
|
44
|
+
- Claude uses project `permissions.defaultMode: plan`; the slice-wright profile
|
|
45
|
+
uses `permissionMode: acceptEdits`.
|
|
46
|
+
- Codex uses a read-only project profile with state/artifact path overrides;
|
|
47
|
+
the slice-wright profile uses `sandbox_mode = "workspace-write"`.
|
|
48
|
+
- User-authorized commit, push, tag, publish, deploy, and migration actions use
|
|
49
|
+
the host's normal explicit approval boundary. The engine does not implement a
|
|
50
|
+
second Git authority system.
|
|
51
|
+
|
|
52
|
+
`wright-scope` is the only engine hook. It enforces the root-owned exact
|
|
53
|
+
`.wright-allowlist`; `reconcile` separately validates the resulting source
|
|
54
|
+
window. Both remain until universal per-agent worktree isolation can replace
|
|
55
|
+
them.
|
|
56
|
+
|
|
57
|
+
The engine owns deterministic workflow state, evidence freshness/integrity,
|
|
58
|
+
artifact completeness, exact write reconciliation, and secret scanning. It
|
|
59
|
+
does not own:
|
|
60
|
+
|
|
61
|
+
- agent dispatch, waiting, result collection, or scheduling;
|
|
62
|
+
- tool-call fields, file-backed agent envelopes, rollout parsing, or dispatch
|
|
63
|
+
receipts;
|
|
64
|
+
- profile/context caches, archive/decision indexes, lane planners, or runbooks;
|
|
65
|
+
- progress rendering, preambles, session telemetry, health/reviewer scores, or
|
|
66
|
+
fingerprints;
|
|
67
|
+
- guessed repository commands, index refresh wrappers, learning/convention
|
|
68
|
+
scoring, or extension registries.
|
|
69
|
+
|
|
70
|
+
Lifecycle rest points call explicit readiness/seal checks instead of relying on
|
|
71
|
+
a Stop hook. Repository scripts and CI remain the authority for build, test,
|
|
72
|
+
lint, and release commands.
|
|
73
|
+
|
|
74
|
+
This ADR supersedes ADR-0014, the hook-runtime portions of ADR-0005, the custom
|
|
75
|
+
packet/result portions of ADR-0010 and ADR-0013, and ADR-0003's historical
|
|
76
|
+
StopGate clause. Their historical context remains unchanged.
|
|
77
|
+
|
|
78
|
+
## Alternatives considered
|
|
79
|
+
|
|
80
|
+
| Option | Why not |
|
|
81
|
+
|---|---|
|
|
82
|
+
| Keep `git-guard`, `a1-guard`, and `stop-gate` as defense in depth | They duplicate native permission/lifecycle boundaries and preserve hook-format coupling. |
|
|
83
|
+
| Keep agent packets and receipts without engine dispatch | They add a second identity/lifecycle protocol without an enforcing consumer. |
|
|
84
|
+
| Remove `wright-scope` now | Native per-agent sandboxes do not yet express the dynamic per-slice exact file allowlist in every supported host/worktree mode. |
|
|
85
|
+
| Let the root write source for small fixes | It collapses the single-writer boundary and makes A1-style inference necessary again. |
|
|
86
|
+
|
|
87
|
+
## Consequences
|
|
88
|
+
|
|
89
|
+
- Host configuration and agent profiles become the permission source of truth.
|
|
90
|
+
- The engine hook surface shrinks to `wright-scope`.
|
|
91
|
+
- Skills state semantic intent once and let the host construct native calls.
|
|
92
|
+
- Engine and shell tests assert observable permissions/invariants rather than
|
|
93
|
+
host-internal event spelling.
|
|
94
|
+
- Shipping and other irreversible actions require normal host/user approval.
|
|
95
|
+
- Universal isolated agent worktrees are the deletion condition for
|
|
96
|
+
`wright-scope`.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# ADR-0016: Codex source writing fails closed
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-30
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
ADR-0013 and ADR-0015 assumed a Codex custom child could become the sole
|
|
9
|
+
write-capable slice-wright under a source-read-only root and that a child
|
|
10
|
+
`PreToolUse` hook could enforce the dynamic exact file allowlist.
|
|
11
|
+
|
|
12
|
+
Live Codex 0.146.0 probes disproved both assumptions. A child inherits the
|
|
13
|
+
parent turn's active sandbox and permission overrides; agent defaults such as
|
|
14
|
+
`:workspace` or `workspace-write` cannot elevate it. Project and agent-local
|
|
15
|
+
hooks also did not observe the tested child shell calls. Keeping the old profile
|
|
16
|
+
would therefore either block all source work or claim an enforcement boundary
|
|
17
|
+
that did not run.
|
|
18
|
+
|
|
19
|
+
## Decision
|
|
20
|
+
|
|
21
|
+
The root remains source-read-only on every host.
|
|
22
|
+
|
|
23
|
+
- Claude may run the exact `devrites-slice-wright` with native edit permission
|
|
24
|
+
and the retained `wright-scope` exact-allowlist hook.
|
|
25
|
+
- Every generated Codex specialist, including `devrites-slice-wright`, is
|
|
26
|
+
hook-free and `:read-only`. A Codex workflow that needs source changes stops
|
|
27
|
+
for HITL or an approved writing-host handoff.
|
|
28
|
+
- DevRites never relaxes the Codex root, accepts a self-declared writer role,
|
|
29
|
+
substitutes a generic child, or restores an engine dispatch bridge.
|
|
30
|
+
- Because Claude is the only shipped hook consumer, the command is simply
|
|
31
|
+
`devrites-engine hook wright-scope`; there is no runtime harness selector.
|
|
32
|
+
|
|
33
|
+
This decision supersedes only the Codex writer-permission and writer-hook
|
|
34
|
+
clauses of ADR-0013 and ADR-0015. Their native orchestration, read-only root,
|
|
35
|
+
and engine-boundary decisions remain accepted.
|
|
36
|
+
|
|
37
|
+
## Alternatives considered
|
|
38
|
+
|
|
39
|
+
| Option | Why not |
|
|
40
|
+
|---|---|
|
|
41
|
+
| Relax the Codex root to workspace-write | It removes the hard root boundary and lets orchestration write source inline. |
|
|
42
|
+
| Keep the Codex writer hook as best effort | Live child calls bypassed it, so the claimed exact scope was false. |
|
|
43
|
+
| Restore engine-owned dispatch | Codex already owns native role selection, waiting, and result delivery; a bridge duplicates the host protocol. |
|
|
44
|
+
| Let the model follow an allowlist instruction without enforcement | A security boundary cannot depend on voluntary compliance. |
|
|
45
|
+
|
|
46
|
+
## Consequences
|
|
47
|
+
|
|
48
|
+
- Codex review/research orchestration remains native and fully read-only.
|
|
49
|
+
- Codex build/correction phases pause instead of silently weakening isolation.
|
|
50
|
+
- Claude keeps the only engine hook until a supported native isolated writer
|
|
51
|
+
can express the same dynamic exact-file boundary.
|
|
52
|
+
- Generation and runtime tests assert observable permissions and fail-closed
|
|
53
|
+
behavior, not tool-call spelling or dispatch receipts.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# ADR-0017: Native Codex writer-agent execution
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-30
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
ADR-0016 made every Codex role read-only after live Codex 0.146.0 probes showed
|
|
9
|
+
that a child cannot elevate above its parent's active permission ceiling and
|
|
10
|
+
that child-local hooks did not reliably observe writer tool calls. That choice
|
|
11
|
+
preserved a hard read-only root, but it also prevented
|
|
12
|
+
`devrites-slice-wright` from executing its defined implementation role.
|
|
13
|
+
|
|
14
|
+
DevRites requires every catalog agent to remain installed and to execute when
|
|
15
|
+
its workflow step names it. Restoring an engine-owned dispatch bridge would
|
|
16
|
+
duplicate Codex's native spawn, wait, follow-up, and result-delivery lifecycle.
|
|
17
|
+
|
|
18
|
+
## Decision
|
|
19
|
+
|
|
20
|
+
Codex uses native custom-agent execution for every DevRites role:
|
|
21
|
+
|
|
22
|
+
- the root `devrites-orchestrator` permission profile extends `:workspace` so a
|
|
23
|
+
write-capable child can run;
|
|
24
|
+
- only `devrites-slice-wright` uses
|
|
25
|
+
`default_permissions = ":workspace"`;
|
|
26
|
+
- every other generated specialist uses
|
|
27
|
+
`default_permissions = ":read-only"`;
|
|
28
|
+
- all generated Codex agents remain hook-free;
|
|
29
|
+
- the root never edits source or tests; it dispatches the exact wright in a
|
|
30
|
+
fresh context, waits, and reconciles the result;
|
|
31
|
+
- the root writes the exact `.wright-allowlist`, runs
|
|
32
|
+
`devrites-engine reconcile snapshot` before dispatch, and runs
|
|
33
|
+
`reconcile check` and `reconcile close` afterward;
|
|
34
|
+
- missing required roles, unauthorized drift, or an unavailable permission
|
|
35
|
+
profile stop the workflow. They never permit role substitution, inline root
|
|
36
|
+
implementation, allowlist widening, or an engine dispatch bridge.
|
|
37
|
+
|
|
38
|
+
Claude's boundary is unchanged: its root remains in plan mode and the exact
|
|
39
|
+
slice-wright retains `permissionMode: acceptEdits` plus the `wright-scope`
|
|
40
|
+
pre-tool hook.
|
|
41
|
+
|
|
42
|
+
This ADR supersedes ADR-0016 and the Codex read-only-root clauses of ADR-0015.
|
|
43
|
+
Their live-probe findings and the native-host orchestration boundary remain
|
|
44
|
+
valid.
|
|
45
|
+
|
|
46
|
+
## Alternatives considered
|
|
47
|
+
|
|
48
|
+
| Option | Why not |
|
|
49
|
+
|---|---|
|
|
50
|
+
| Keep Codex source-writing disabled | It leaves `devrites-slice-wright` installed but unable to execute its required role. |
|
|
51
|
+
| Let the Codex root implement directly | It bypasses the exact writer role and collapses workflow separation. |
|
|
52
|
+
| Restore engine-owned dispatch | Codex already owns agent creation, scheduling, waiting, and result delivery. |
|
|
53
|
+
| Re-enable the Codex child hook | Live probes showed that it was not a dependable enforcement surface. |
|
|
54
|
+
|
|
55
|
+
## Consequences
|
|
56
|
+
|
|
57
|
+
- Every DevRites role can execute natively on Codex.
|
|
58
|
+
- The Codex root's no-source-writing boundary is instruction-enforced rather
|
|
59
|
+
than enforced by a narrower sandbox.
|
|
60
|
+
- Codex exact-path enforcement is detect-and-stop through reconciliation, not
|
|
61
|
+
a pre-write hook. Claude retains pre-write exact-path enforcement.
|
|
62
|
+
- The engine remains responsible for deterministic state, evidence, integrity,
|
|
63
|
+
and reconciliation, not agent dispatch.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# ADR-0018: Native sandbox and instruction writer boundary
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-30
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
DevRites kept a Claude `wright-scope` hook, a Git-backed `reconcile` window,
|
|
9
|
+
and a snapshot-dependent `test-integrity` command to enforce one writer and an
|
|
10
|
+
exact per-slice path list. Native Claude and Codex profiles now enforce the
|
|
11
|
+
broader writer/read-only split directly. The remaining Go machinery duplicated
|
|
12
|
+
host policy, coupled builds to hook payloads and private Git snapshots, and
|
|
13
|
+
made ordinary corrections depend on an engine-owned source window.
|
|
14
|
+
|
|
15
|
+
Neither host provides a universal dynamic exact-file sandbox for a child. The
|
|
16
|
+
choice is therefore between retaining the second enforcement system or
|
|
17
|
+
accepting native sandboxing plus explicit task and diff-review instructions.
|
|
18
|
+
|
|
19
|
+
## Decision
|
|
20
|
+
|
|
21
|
+
DevRites accepts native host sandboxing plus instructions:
|
|
22
|
+
|
|
23
|
+
- the root never edits source or tests;
|
|
24
|
+
- only `devrites-slice-wright` is writable: Claude grants it `acceptEdits` and
|
|
25
|
+
Codex grants it `:workspace`; the other 16 specialists remain read-only;
|
|
26
|
+
- the dispatch task states the smallest exact project-relative source/test
|
|
27
|
+
paths, and the wright must not widen them;
|
|
28
|
+
- the root waits, compares the returned file list and `git diff --name-only`
|
|
29
|
+
with the task contract, rejects any extra path, runs repository proof, reviews
|
|
30
|
+
the test diff, and records exact touched files;
|
|
31
|
+
- test deletion, skipping, focusing, and weakened assertions remain prohibited
|
|
32
|
+
behavior and are checked through normal tests, diff review, and dedicated
|
|
33
|
+
test analysis;
|
|
34
|
+
- the engine no longer exposes `hook`, `reconcile`, or `test-integrity`;
|
|
35
|
+
- installation retains recognition and removal of legacy DevRites hooks so an
|
|
36
|
+
upgrade cleans stale host configuration, but installs no active writer hook.
|
|
37
|
+
|
|
38
|
+
There is no compatibility command or replacement enforcement layer.
|
|
39
|
+
|
|
40
|
+
This ADR supersedes only the active engine-hook clause of ADR-0005, the
|
|
41
|
+
`wright-scope`/exact-allowlist/reconciliation clauses of ADR-0015, and the
|
|
42
|
+
exact-path reconciliation clauses of ADR-0017. Their other decisions and
|
|
43
|
+
historical context remain in force.
|
|
44
|
+
|
|
45
|
+
## Alternatives considered
|
|
46
|
+
|
|
47
|
+
| Option | Why not |
|
|
48
|
+
|---|---|
|
|
49
|
+
| Keep `wright-scope` and `reconcile` as defense in depth | They preserve a second host-policy system, private Git snapshot state, and hook-format coupling. |
|
|
50
|
+
| Rebuild test-integrity without reconciliation | It would recreate baseline machinery solely to inspect tests; normal proof, diff review, and the test analyst already own that behavior. |
|
|
51
|
+
| Let the root write small changes | It collapses the sole-writer role and makes the native permission split misleading. |
|
|
52
|
+
| Add another compatibility command | It retains the obsolete public surface without an operational owner. |
|
|
53
|
+
|
|
54
|
+
## Consequences
|
|
55
|
+
|
|
56
|
+
- Exact-path scope is honestly instruction-backed on both hosts, not hard
|
|
57
|
+
technical enforcement.
|
|
58
|
+
- Native permissions still ensure only the wright is broadly writable and all
|
|
59
|
+
other specialists remain read-only.
|
|
60
|
+
- Root diff inspection and test analysis are required acceptance steps rather
|
|
61
|
+
than optional commentary.
|
|
62
|
+
- The engine becomes smaller and no longer owns source-window Git snapshots or
|
|
63
|
+
hook payload parsing.
|
|
64
|
+
- `tests/phase-gate-routing-test.sh`,
|
|
65
|
+
`tests/codex-agent-generation-test.sh`, `tests/hooks-parity-test.sh`, and
|
|
66
|
+
focused installer tests guard the retained workflow and permission boundary.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# ADR-0019: Native boundary with deterministic gates
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-30
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
ADR-0018 replaced engine hook and reconcile enforcement with native host
|
|
9
|
+
permissions plus exact-path instructions. That simplification must not remove
|
|
10
|
+
independent quality gates, lifecycle rest points, or action-time approval. Its
|
|
11
|
+
statement that `test-integrity` was removed became obsolete when a
|
|
12
|
+
reconcile-free, committed-HEAD comparison was restored.
|
|
13
|
+
|
|
14
|
+
## Decision
|
|
15
|
+
|
|
16
|
+
- Native permissions retain the writer boundary: the root and reviewers do not
|
|
17
|
+
edit source or tests; only `devrites-slice-wright` is writable, under an exact
|
|
18
|
+
path contract checked in the returned diff.
|
|
19
|
+
- Deterministic gates remain independent of host hooks. Every successful
|
|
20
|
+
lifecycle advance runs `readiness <slug>` immediately before completion;
|
|
21
|
+
`/rite-seal` uses the final `seal <slug>` aggregate instead.
|
|
22
|
+
- `test-integrity` compares the working tree with committed `HEAD` without
|
|
23
|
+
reconcile snapshots. The final seal retains acceptance, evidence freshness,
|
|
24
|
+
test integrity, review integrity, doubt coverage, and opted-in mutation gates.
|
|
25
|
+
- Irreversible Git requires the exact commit/push/tag/PR plan and fresh literal
|
|
26
|
+
user approval for one attempt. Seal GO, AFK, and autocomplete flags are not
|
|
27
|
+
authority; changed or retried plans require fresh approval, and native host
|
|
28
|
+
permission/sandbox prompts remain authoritative.
|
|
29
|
+
|
|
30
|
+
This supersedes only ADR-0018's statement that `test-integrity` is removed and
|
|
31
|
+
its rejection of a reconcile-free test-integrity gate. ADR-0018's native
|
|
32
|
+
permission, instruction-backed exact-path, hook-removal, and no-reconcile
|
|
33
|
+
decisions remain in force.
|
|
34
|
+
|
|
35
|
+
## Alternatives considered
|
|
36
|
+
|
|
37
|
+
| Option | Why not |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Restore engine hooks or reconcile snapshots | Recreates host-policy duplication and snapshot machinery. |
|
|
40
|
+
| Rely on instructions alone for quality and completion | Removes deterministic evidence independent of model behavior. |
|
|
41
|
+
| Treat seal GO or `--ship` as Git authority | Conflates quality approval with fresh irreversible-action consent. |
|
|
42
|
+
|
|
43
|
+
## Consequences
|
|
44
|
+
|
|
45
|
+
The engine remains free of hook dispatch, writer-path classifiers, and
|
|
46
|
+
reconcile state. Native profiles and exact instructions own execution scope;
|
|
47
|
+
readiness, final seal, test integrity, and fresh action-time approval preserve
|
|
48
|
+
the unrelated safety and quality guarantees.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ADR-0020: Thin engine and native host orchestration
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-31
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
DevRites already installs exact Claude and Codex specialist definitions. Adding
|
|
9
|
+
Go dispatch versions, tiers, receipts, polling, or fallbacks would mirror host
|
|
10
|
+
internals, drift when a host changes, and turn workflow depth into a second
|
|
11
|
+
protocol. The engine also accumulated repository-only and presentation commands
|
|
12
|
+
that did not need a cross-host runtime primitive.
|
|
13
|
+
|
|
14
|
+
## Decision
|
|
15
|
+
|
|
16
|
+
- Skills name the exact generated `devrites-*` role and a bounded task. Claude
|
|
17
|
+
or Codex owns discovery, dispatch, scheduling, waiting, follow-up, result
|
|
18
|
+
delivery, and compatibility with its own agent protocol.
|
|
19
|
+
- Quick, Standard, and Full select admission/evidence/review depth over one
|
|
20
|
+
lifecycle and artifact schema. They are not engine or agent API versions.
|
|
21
|
+
- The Go engine is limited to deterministic cross-host runtime work: persisted
|
|
22
|
+
workspace state, readiness/acceptance/integrity gates, secret scanning,
|
|
23
|
+
bounded recovery, safe migration, and managed installation diagnostics.
|
|
24
|
+
- Repository JSON/schema/generated parity/build/release validation stays in
|
|
25
|
+
repository scripts and CI. Installed skills use the engine and native host;
|
|
26
|
+
they never assume DevRites source-tree scripts exist in a consumer project.
|
|
27
|
+
- `status`, `budget`, `mutation-gate`, standalone `review-integrity`, and
|
|
28
|
+
`validate-pack` are removed at the next major boundary with ordinary
|
|
29
|
+
unknown-command behavior and no tombstones. Snapshot replaces machine status;
|
|
30
|
+
reviewer accounts remain seal-internal; real mutation runners own mutation
|
|
31
|
+
proof; doctor owns installed-pack health.
|
|
32
|
+
- Explicit versions remain only on persisted documents that need stable readers,
|
|
33
|
+
such as workspace snapshots and migration journals.
|
|
34
|
+
|
|
35
|
+
## Alternatives considered
|
|
36
|
+
|
|
37
|
+
| Option | Why not |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Keep a Go broker for Codex/Claude agents | Duplicates native APIs and creates V1/V2 compatibility work with no product value. |
|
|
40
|
+
| Keep every legacy command as a wrapper | Preserves two authorities and makes help claim capabilities the engine does not own. |
|
|
41
|
+
| Move deterministic state and safety into prompts | Loses machine-enforced, cross-host behavior and testable failure contracts. |
|
|
42
|
+
|
|
43
|
+
## Consequences
|
|
44
|
+
|
|
45
|
+
Host releases require native conformance tests rather than engine protocol
|
|
46
|
+
changes. The engine surface is smaller and more stable. Repository maintainers
|
|
47
|
+
and installed users have deliberately different validation surfaces, which must
|
|
48
|
+
not be mixed in shipped skills.
|
|
49
|
+
|
|
50
|
+
This narrows ADR-0001's broad control-plane scope and consolidates the native
|
|
51
|
+
orchestration direction of ADR-0010, ADR-0013, and ADR-0019 without changing
|
|
52
|
+
their retained deterministic safety gates. It supersedes ADR-0019's
|
|
53
|
+
environment-driven opted-in mutation-gate clause; only evidence from a real
|
|
54
|
+
repository mutation runner may support a mutation-testing claim.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# ADR-0021: Observable and reversible workspace compatibility
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-31
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Legacy workspace layouts, filenames, cursors, phase aliases, and older schemas
|
|
9
|
+
must remain readable during the current support window. Silent compatibility
|
|
10
|
+
cannot prove when removal is safe, while an automatic in-place rewrite can
|
|
11
|
+
fabricate state, overwrite conflicting evidence, or leave a partial migration.
|
|
12
|
+
|
|
13
|
+
## Decision
|
|
14
|
+
|
|
15
|
+
- Runtime, validator, and migration share one active-workspace predicate:
|
|
16
|
+
`state.md` or a workspace map in active `work/` or compatible `features/`.
|
|
17
|
+
Archives, spec-only/empty directories, and operational remnants are ignored.
|
|
18
|
+
- Normal successful legacy reads append a bounded mode-`0600` JSONL record with
|
|
19
|
+
only release, timestamp, category, slug, and canonical replacement. Pure
|
|
20
|
+
validation and migration reads emit no telemetry.
|
|
21
|
+
- Compatibility is removed only by a later decision using records inside its
|
|
22
|
+
declared release/time window; this change does not guess a removal date or
|
|
23
|
+
build a future importer.
|
|
24
|
+
- Bare `migrate` and `migrate preview` are read-only. The deterministic manifest
|
|
25
|
+
contains project-relative pre/post metadata and hashes, conflicts, ACTIVE
|
|
26
|
+
selection, and byte/path counts, never artifact bodies or absolute paths.
|
|
27
|
+
- Apply requires an exact saved manifest, re-previews under one project lock,
|
|
28
|
+
and verifies a private journal plus backup/post recovery material before the
|
|
29
|
+
first target mutation. Rollback validates all material and touched path states
|
|
30
|
+
before restoration. Both operations are idempotent and resumable; recovery
|
|
31
|
+
material remains available.
|
|
32
|
+
- Preview, apply, and rollback each have a separate fresh approval boundary.
|
|
33
|
+
Workflow mode, seal, AFK, or prior approval cannot imply mutation authority.
|
|
34
|
+
|
|
35
|
+
## Alternatives considered
|
|
36
|
+
|
|
37
|
+
| Option | Why not |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Rewrite every legacy directory automatically | Cannot distinguish remnants or conflicts and creates unreviewed destructive behavior. |
|
|
40
|
+
| Keep compatibility forever without telemetry | Makes removal evidence impossible and retains permanent complexity. |
|
|
41
|
+
| Record full legacy content for analysis | Leaks project data and is unnecessary for usage counts. |
|
|
42
|
+
| Delete backups after success | Removes the verified recovery path before an operator accepts the result. |
|
|
43
|
+
|
|
44
|
+
## Consequences
|
|
45
|
+
|
|
46
|
+
Compatibility has a measurable cost and a deliberate later removal trigger.
|
|
47
|
+
Migration is slower than an unchecked rename because it hashes, journals, and
|
|
48
|
+
locks the whole transaction, but it preserves evidence and can recover from
|
|
49
|
+
every recorded interruption boundary without guessing.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# ADR-0022: Native orchestration with a thin deterministic engine
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-31
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Claude Code and Codex already load project skills and exact custom agents. They
|
|
9
|
+
own agent discovery, dispatch, scheduling, waiting, follow-up, and result
|
|
10
|
+
delivery. Re-implementing that protocol in Go adds a second authority and
|
|
11
|
+
creates version, receipt, polling, and fallback machinery with no durable
|
|
12
|
+
product state to protect.
|
|
13
|
+
|
|
14
|
+
Semantic engine gates had the same problem. Heuristics that parsed readiness,
|
|
15
|
+
traceability, acceptance, review prose, assertion counts, doubt accounts, or
|
|
16
|
+
capability deltas duplicated judgments already made from fuller context by the
|
|
17
|
+
active skill and exact reviewers. Repository test, build, lint, typecheck, and
|
|
18
|
+
release validation likewise belong to the repository and CI.
|
|
19
|
+
|
|
20
|
+
Release history also showed that the proposed compatibility surface was too
|
|
21
|
+
broad. Released v1.0.0–v2.6.1 writers used
|
|
22
|
+
`.devrites/work/<slug>/state.md` bullet cursors with `Phase`, `Next step`, and
|
|
23
|
+
`qid`; v3 writers kept `work/<slug>/` and used the canonical map plus table
|
|
24
|
+
cursor fields `phase`, `next_action`, and `question_id`. `.devrites/features`,
|
|
25
|
+
alternate map/cursor/proof filenames, status-as-phase, and phase aliases were
|
|
26
|
+
not official released writer outputs. Early v3 migration code could create
|
|
27
|
+
extra copies, but it retained the canonical workspace and did not make those
|
|
28
|
+
copies authoritative.
|
|
29
|
+
|
|
30
|
+
Write-on-read local compatibility telemetry could not answer whether the global
|
|
31
|
+
installed population still used a format. It also made an otherwise read-only
|
|
32
|
+
operation mutate private project state. A journaled preview/apply/rollback
|
|
33
|
+
migration system therefore preserved speculative formats while adding more
|
|
34
|
+
risk and code than a small tolerant reader.
|
|
35
|
+
|
|
36
|
+
## Decision
|
|
37
|
+
|
|
38
|
+
- Claude Code and Codex own agent discovery, dispatch, scheduling, waiting,
|
|
39
|
+
follow-up, and result delivery. Installed skills and exact custom agents own
|
|
40
|
+
all semantic judgment: readiness, traceability, acceptance and evidence
|
|
41
|
+
quality, doubt, review reconciliation, test-quality assessment, capability
|
|
42
|
+
interpretation, semantic upgrade, and recovery routing.
|
|
43
|
+
- The Go engine retains only deterministic cross-host primitives:
|
|
44
|
+
install/update/uninstall, `snapshot`, structural `check readiness`, structural
|
|
45
|
+
plus evidence-freshness `check seal`, grammar `check spec`, atomic
|
|
46
|
+
`state resolve|clarify|tick-afk|recovery|close`, `secret-scan`, `doctor`, and
|
|
47
|
+
`version`.
|
|
48
|
+
- The engine has no agent bridge, semantic readiness V2 or digests, heuristic
|
|
49
|
+
prose parser, capability-ledger engine, compatibility telemetry, migration
|
|
50
|
+
command, or old command aliases/tombstones.
|
|
51
|
+
- Runtime compatibility is a direct, non-mutating read of only the official
|
|
52
|
+
bullet and table `state.md` cursor forms described above. Semantic upgrades
|
|
53
|
+
are preservation-first native workflow edits, not structural engine
|
|
54
|
+
migrations.
|
|
55
|
+
- Explicit schema versions remain where persisted readers need them. The
|
|
56
|
+
`devrites.workspace.v1` snapshot and current state schemas remain supported;
|
|
57
|
+
orchestration does not acquire a DevRites protocol version.
|
|
58
|
+
- Native writer permissions and exact-path contracts remain in force.
|
|
59
|
+
Structural gates remain independent of the model. Seal GO, AFK, or an
|
|
60
|
+
autocomplete flag never authorizes an irreversible action: the exact current
|
|
61
|
+
commit/push/tag/PR plan still needs fresh user approval for that attempt.
|
|
62
|
+
|
|
63
|
+
This ADR supersedes ADR-0019's semantic seal/test/reviewer/doubt gate clauses,
|
|
64
|
+
ADR-0020's broader gate and safe-migration engine scope, and ADR-0021's
|
|
65
|
+
telemetry plus preview/apply/rollback design. It retains their native
|
|
66
|
+
orchestration, writer/permission, structural-gate, root-safety, and fresh
|
|
67
|
+
irreversible-action approval rules.
|
|
68
|
+
|
|
69
|
+
## Alternatives considered
|
|
70
|
+
|
|
71
|
+
| Option | Why not |
|
|
72
|
+
|---|---|
|
|
73
|
+
| Keep semantic Go gates as a second opinion | String and count heuristics see less context than the assigned native reviewers and create conflicting authorities. |
|
|
74
|
+
| Keep the transaction migration platform for possible legacy layouts | Release evidence supports only two cursor encodings; a tolerant reader is smaller and non-mutating. |
|
|
75
|
+
| Keep write-on-read telemetry until usage reaches zero | Local records cannot measure global usage and violate read-only expectations. |
|
|
76
|
+
| Move deterministic state and secret safety into prompts | Atomicity, root containment, evidence freshness, and secret handling need testable cross-host enforcement. |
|
|
77
|
+
| Retain old aliases for a transition | It preserves the oversized public surface and hides callers that must migrate. Unknown-command failure is explicit. |
|
|
78
|
+
|
|
79
|
+
## Consequences
|
|
80
|
+
|
|
81
|
+
The engine has one narrow, stable reason to exist: deterministic state and
|
|
82
|
+
safety primitives shared by both hosts. Skills and exact agents can evolve
|
|
83
|
+
semantic workflows without a Go protocol migration. Repository CI remains the
|
|
84
|
+
source of observed engineering proof.
|
|
85
|
+
|
|
86
|
+
Older official workspaces remain readable without a write, import step, or
|
|
87
|
+
migration journal. Unsupported pre-release aliases fail visibly instead of
|
|
88
|
+
silently becoming a permanent compatibility contract. Removing public commands
|
|
89
|
+
is intentionally breaking; canonical skills and documentation must move in the
|
|
90
|
+
same release.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# ADR-0023: Native workspace reads and line-oriented engine output
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-31
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
The installed skills and exact host agents already read the canonical workspace
|
|
9
|
+
Markdown. The optional `snapshot` command rebuilt the same state into a
|
|
10
|
+
`devrites.workspace.v1` document, added summary heuristics, and became a
|
|
11
|
+
mandatory-looking preamble across workflows despite having no external consumer
|
|
12
|
+
beyond repository smoke tests.
|
|
13
|
+
|
|
14
|
+
The `devrites-command/v1` wrapper similarly converted ordinary check and doctor
|
|
15
|
+
output into an agent-facing protocol. Its only repository consumer was the
|
|
16
|
+
outcome harness. Stable gate reason IDs remain useful, but they do not require a
|
|
17
|
+
versioned envelope. `doctor --verbose` produced exactly the normal doctor
|
|
18
|
+
report, and recovery's ignored `--class` option preserved an obsolete command
|
|
19
|
+
shape.
|
|
20
|
+
|
|
21
|
+
Other remaining engine responsibilities have different properties. AFK slice
|
|
22
|
+
and recovery-attempt limits are hard autonomy bounds, atomic state mutations
|
|
23
|
+
protect multi-file consistency, and no established secret scanner is installed
|
|
24
|
+
to replace the bounded scanner. The doctor is already a small deterministic
|
|
25
|
+
root/install diagnostic. Moving those responsibilities into model judgment
|
|
26
|
+
would weaken safety rather than simplify implementation.
|
|
27
|
+
|
|
28
|
+
## Decision
|
|
29
|
+
|
|
30
|
+
- Remove `snapshot`, its Go summary readers, `devrites.workspace.v1`, and its
|
|
31
|
+
JSON schema. Skills resolve an explicit slug or `.devrites/ACTIVE`, require
|
|
32
|
+
`.devrites/work/<slug>/state.md`, and read only the current phase artifacts.
|
|
33
|
+
- Remove engine `--json` handling and the `devrites-command/v1` envelope.
|
|
34
|
+
Lifecycle checks emit line-oriented output with the existing stable
|
|
35
|
+
`reason: DRV-...` identifier; repository evals assert exit status and that
|
|
36
|
+
reason directly.
|
|
37
|
+
- `doctor` accepts no inert `--verbose` alias. Recovery rejects the obsolete
|
|
38
|
+
`--class` option while continuing to tolerate unknown fields in already
|
|
39
|
+
persisted JSONL entries.
|
|
40
|
+
- Retain `state tick-afk`, `state recovery`, the root/lock/atomic-write
|
|
41
|
+
boundary, structural checks, evidence freshness, secret scanning,
|
|
42
|
+
install/update/uninstall, doctor, and version.
|
|
43
|
+
- Retain profile-selected and conditionally applicable native reviewers. No Go
|
|
44
|
+
broker, dispatch receipt, or agent protocol is introduced.
|
|
45
|
+
- Removed commands and flags fail visibly; there are no compatibility aliases
|
|
46
|
+
or tombstones.
|
|
47
|
+
|
|
48
|
+
This ADR supersedes ADR-0022's snapshot and JSON-output clauses. Its native
|
|
49
|
+
orchestration, deterministic state/safety, released cursor compatibility, and
|
|
50
|
+
fresh irreversible-action approval rules remain in force.
|
|
51
|
+
|
|
52
|
+
## Alternatives considered
|
|
53
|
+
|
|
54
|
+
| Option | Why not |
|
|
55
|
+
|---|---|
|
|
56
|
+
| Keep snapshot as an optional convenience | Workflow references made it functionally mandatory, while direct ledger reads are simpler and authoritative. |
|
|
57
|
+
| Keep JSON for possible automation | No external consumer was established; a speculative protocol is not worth permanent compatibility cost. |
|
|
58
|
+
| Move AFK/recovery limits into prose | That turns hard autonomy stops into best-effort model compliance. |
|
|
59
|
+
| Remove the scanner and ask the model to inspect secrets | Secret handling is a trust-boundary control and no established deterministic replacement exists in the repository. |
|
|
60
|
+
| Replace the retained Go helpers with skill scripts | It duplicates root containment, locking, and cross-platform install behavior without reducing concepts. |
|
|
61
|
+
|
|
62
|
+
## Consequences
|
|
63
|
+
|
|
64
|
+
The public CLI and installed allowlist are smaller. Skills and status reporting
|
|
65
|
+
read the single authoritative ledger rather than a derived summary. Repository
|
|
66
|
+
outcome tests no longer need an engine JSON decoder.
|
|
67
|
+
|
|
68
|
+
Removing the two output schemas is intentionally breaking, but requires no data
|
|
69
|
+
migration because neither schema is persisted workspace state. Released
|
|
70
|
+
`state.md` cursor encodings remain readable. Deterministic autonomy and secret
|
|
71
|
+
safety remain testable outside model judgment.
|