devrites 5.14.4 → 6.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 +17 -0
- package/NOTICE.md +6 -4
- package/README.md +77 -16
- package/SECURITY.md +25 -11
- package/bin/devrites.mjs +49 -15
- package/docs/adr/0001-go-engine-as-control-plane.md +6 -3
- package/docs/adr/0029-v5-workspace-schema-and-native-migration.md +9 -0
- package/docs/adr/README.md +3 -2
- package/docs/agents/issue-tracker.md +1 -1
- package/docs/architecture.md +6 -3
- package/docs/cli.md +32 -9
- package/docs/command-map.md +5 -3
- package/docs/engine/state-schema.md +1 -1
- package/docs/flow.md +1 -1
- package/docs/harness-compliance.md +2 -2
- package/docs/release.md +15 -11
- package/docs/usage.md +1 -1
- package/engine/commands.go +1 -1
- package/engine/go.mod +1 -1
- package/engine/help.go +41 -15
- package/engine/help_test.go +134 -0
- package/engine/internal/acceptance/acceptance_test.go +298 -7
- package/engine/internal/acceptance/approve.go +7 -2
- package/engine/internal/acceptance/cli.go +3 -0
- package/engine/internal/acceptance/evidence.go +69 -5
- package/engine/internal/acceptance/lint.go +1 -1
- package/engine/internal/acceptance/run.go +5 -3
- package/engine/internal/acceptance/scaffold.go +5 -16
- package/engine/internal/devritespaths/paths.go +7 -6
- package/engine/internal/devritespaths/paths_test.go +18 -0
- package/engine/internal/fsutil/copy.go +83 -49
- package/engine/internal/fsutil/copy_test.go +70 -109
- package/engine/internal/gate/gate.go +89 -16
- package/engine/internal/gate/gate_test.go +101 -0
- package/engine/internal/hostpack/hostpack.go +52 -2
- package/engine/internal/hostpack/hostpack_test.go +83 -2
- package/engine/internal/install/apply.go +59 -16
- package/engine/internal/install/binary.go +10 -1
- package/engine/internal/install/install_test.go +428 -0
- package/engine/internal/install/merge.go +69 -38
- package/engine/internal/install/preflight.go +7 -0
- package/engine/internal/install/uninstall.go +43 -4
- package/engine/internal/lib/claims.go +25 -4
- package/engine/internal/lib/claims_test.go +57 -0
- package/engine/internal/lib/closeout.go +41 -3
- package/engine/internal/lib/closeout_test.go +144 -0
- package/engine/internal/lib/context.go +8 -4
- package/engine/internal/lib/context_next_test.go +100 -0
- package/engine/internal/lib/detect.go +1 -1
- package/engine/internal/lib/detect_test.go +13 -0
- package/engine/internal/lib/diffscope.go +19 -9
- package/engine/internal/lib/dispatch.go +7 -0
- package/engine/internal/lib/dup.go +40 -37
- package/engine/internal/lib/dup_test.go +178 -0
- package/engine/internal/lib/manifest_union.go +4 -1
- package/engine/internal/lib/manifest_union_test.go +37 -0
- package/engine/internal/lib/metrics.go +4 -0
- package/engine/internal/lib/metrics_test.go +28 -0
- package/engine/internal/lib/migrate_test.go +59 -0
- package/engine/internal/lib/observe_budgets.go +25 -9
- package/engine/internal/lib/observe_budgets_test.go +254 -0
- package/engine/internal/lib/observe_summary.go +23 -2
- package/engine/internal/lib/open_visual.go +4 -2
- package/engine/internal/lib/open_visual_test.go +11 -0
- package/engine/internal/lib/regression.go +62 -23
- package/engine/internal/lib/regression_test.go +103 -0
- package/engine/internal/lib/resolve.go +36 -17
- package/engine/internal/lib/resolve_remediation_test.go +132 -0
- package/engine/internal/lib/skilltrust.go +0 -11
- package/engine/internal/lib/slicecheck.go +7 -5
- package/engine/internal/lib/slicecheck_test.go +18 -0
- package/engine/internal/lib/triggers.go +9 -3
- package/engine/internal/lib/triggers_test.go +23 -0
- package/engine/internal/lib/util.go +17 -3
- package/engine/internal/lib/util_test.go +104 -0
- package/engine/internal/lib/visual_outline.go +7 -3
- package/engine/internal/lib/visual_outline_test.go +28 -0
- package/engine/internal/lib/windows.go +13 -9
- package/engine/internal/lib/windows_test.go +98 -0
- package/engine/internal/lib/workspace_read.go +2 -11
- package/engine/internal/lib/workspace_read_test.go +102 -0
- package/engine/internal/markdowntext/markdowntext.go +194 -11
- package/engine/internal/markdowntext/testdata/structural.json +250 -0
- package/engine/internal/notes/cli.go +30 -12
- package/engine/internal/notes/notes.go +242 -39
- package/engine/internal/notes/notes_test.go +372 -0
- package/engine/internal/overhaul/admit/packet.go +89 -0
- package/engine/internal/overhaul/admit/packet_test.go +223 -0
- package/engine/internal/overhaul/admit/run.go +4 -0
- package/engine/internal/overhaul/bench/run.go +6 -0
- package/engine/internal/overhaul/bench/run_test.go +46 -0
- package/engine/internal/overhaul/overhaul.go +6 -1
- package/engine/internal/overhaul/ovio/ovio.go +10 -3
- package/engine/internal/overhaul/ovio/ovio_test.go +75 -0
- package/engine/internal/overhaul/packet/packet.go +208 -0
- package/engine/internal/overhaul/packet/packet_test.go +263 -0
- package/engine/internal/overhaul/records/check.go +6 -0
- package/engine/internal/overhaul/records/init.go +16 -5
- package/engine/internal/overhaul/records/records_test.go +4 -0
- package/engine/internal/overhaul/records/run.go +66 -0
- package/engine/internal/overhaul/records/run_test.go +77 -0
- package/engine/internal/overhaul/render/run.go +15 -11
- package/engine/internal/overhaul/render/run_test.go +463 -1
- package/engine/internal/overhaul/render/visual.go +95 -33
- package/engine/internal/overhaul/score/run.go +20 -0
- package/engine/internal/overhaul/score/run_test.go +156 -1
- package/engine/internal/overhaul/snapshot/run.go +78 -21
- package/engine/internal/overhaul/snapshot/run_test.go +344 -8
- package/engine/internal/parallel/cli.go +33 -20
- package/engine/internal/parallel/cli_test.go +59 -0
- package/engine/internal/parallel/git.go +39 -1
- package/engine/internal/parallel/ops.go +101 -11
- package/engine/internal/parallel/ops_test.go +552 -69
- package/engine/internal/parallel/parallel_test.go +31 -1
- package/engine/internal/parallel/pathdisjoint.go +19 -1
- package/engine/internal/parallel/pathdisjoint_test.go +72 -0
- package/engine/internal/parallel/select.go +6 -2
- package/engine/internal/release/release.go +13 -3
- package/engine/internal/release/release_test.go +208 -3
- package/engine/internal/rootfacts/facts.go +9 -0
- package/engine/internal/rootfacts/facts_test.go +38 -0
- package/engine/internal/state/acceptance.go +7 -1
- package/engine/internal/state/budgets.go +11 -10
- package/engine/internal/state/budgets_test.go +93 -0
- package/engine/internal/state/cursor.go +19 -8
- package/engine/internal/state/cursor_test.go +120 -0
- package/engine/internal/state/lock_unix.go +7 -1
- package/engine/internal/state/lock_windows.go +7 -1
- package/engine/internal/state/state_test.go +49 -18
- package/engine/internal/state/taskgraph.go +18 -4
- package/engine/internal/state/taskgraph_test.go +43 -0
- package/engine/internal/state/workspaceschema.go +16 -2
- package/engine/internal/state/workspaceschema_test.go +34 -0
- package/engine/internal/state/write.go +67 -6
- package/engine/internal/state/write_test.go +136 -0
- package/engine/internal/version/version_test.go +2 -0
- package/engine/main.go +8 -1
- package/engine/observation_contract_test.go +1 -1
- package/engine/root_routing_test.go +23 -1
- package/install.sh +132 -12
- package/pack/.claude/agents/devrites-spec-reviewer.md +2 -2
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/.claude/skills/devrites-interview/SKILL.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/.claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/.claude/skills/overhaul/SKILL.md +1 -1
- package/pack/.claude/skills/overhaul/references/orchestration.md +5 -3
- package/pack/.claude/skills/overhaul/references/records.md +39 -0
- package/pack/.claude/skills/overhaul/references/scoring.md +14 -4
- package/pack/.claude/skills/rite/reference/menu.md +1 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +8 -2
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +11 -6
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/.claude/skills/rite-build/SKILL.md +2 -1
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/.claude/skills/rite-clarify/SKILL.md +5 -4
- package/pack/.claude/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/.claude/skills/rite-converge/SKILL.md +2 -0
- package/pack/.claude/skills/rite-customize/SKILL.md +6 -4
- package/pack/.claude/skills/rite-define/SKILL.md +2 -0
- package/pack/.claude/skills/rite-define/reference/gates.md +8 -7
- package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
- package/pack/.claude/skills/rite-explain/reference/intake.md +1 -1
- package/pack/.claude/skills/rite-fast/SKILL.md +1 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +4 -3
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
- package/pack/.claude/skills/rite-seal/SKILL.md +4 -3
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/.claude/skills/rite-ship/SKILL.md +4 -2
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +2 -2
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/.claude/skills/rite-temper/SKILL.md +12 -9
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/significance.md +10 -3
- package/pack/.claude/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/.claude/skills/rite-vet/SKILL.md +4 -3
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/.claude/workflows/devrites-readonly-review.js +5 -4
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +2 -2
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/claude/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/claude/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/claude/skills/overhaul/references/records.md +39 -0
- package/pack/generated/claude/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/claude/skills/rite/reference/menu.md +1 -1
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +11 -6
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +1 -1
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/claude/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/claude/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/claude/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/claude/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/claude/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/claude/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +12 -9
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/claude/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/claude/workflows/devrites-readonly-review.js +5 -4
- package/pack/generated/codex/AGENTS.md +1 -1
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +2 -2
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/codex/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/codex/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/codex/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/codex/skills/overhaul/references/records.md +39 -0
- package/pack/generated/codex/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/codex/skills/rite/reference/menu.md +1 -1
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +11 -6
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +1 -1
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/codex/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/codex/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/codex/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/codex/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/codex/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +12 -9
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/devin/AGENTS.md +1 -1
- package/pack/generated/devin/agents/devrites-spec-reviewer.md +2 -2
- package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/devin/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/devin/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/devin/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/devin/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/devin/skills/overhaul/references/records.md +39 -0
- package/pack/generated/devin/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/devin/skills/rite/reference/menu.md +1 -1
- package/pack/generated/devin/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +11 -6
- package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +1 -1
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/devin/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/devin/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/devin/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/devin/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/devin/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/devin/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/devin/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/devin/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/devin/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/devin/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/devin/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/devin/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/devin/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/devin/skills/rite-temper/SKILL.md +12 -9
- package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/devin/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/devin/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/omp/agents/devrites-spec-reviewer.md +2 -2
- package/pack/generated/omp/commands/rite-define.md +1 -1
- package/pack/generated/omp/commands/rite-handoff.md +1 -1
- package/pack/generated/omp/commands/rite-plan.md +1 -1
- package/pack/generated/omp/commands/rite-pressure-test.md +1 -1
- package/pack/generated/omp/commands/rite-quick.md +1 -1
- package/pack/generated/omp/commands/rite-status.md +1 -1
- package/pack/generated/omp/commands/rite-temper.md +1 -1
- package/pack/generated/omp/commands/rite-zoom-out.md +1 -1
- package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/omp/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/omp/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/omp/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/omp/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/omp/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/omp/skills/overhaul/references/records.md +39 -0
- package/pack/generated/omp/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/omp/skills/rite/reference/menu.md +1 -1
- package/pack/generated/omp/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +11 -6
- package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +1 -1
- package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/omp/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/omp/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/omp/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/omp/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/omp/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/omp/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/omp/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/omp/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/omp/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/omp/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/omp/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/omp/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/omp/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/omp/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/omp/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/omp/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/omp/skills/rite-temper/SKILL.md +12 -9
- package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/omp/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/omp/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/omp/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/pi/AGENTS.md +1 -1
- package/pack/generated/pi/agents/devrites-spec-reviewer.md +2 -2
- package/pack/generated/pi/prompts/rite-define.md +1 -1
- package/pack/generated/pi/prompts/rite-handoff.md +1 -1
- package/pack/generated/pi/prompts/rite-plan.md +1 -1
- package/pack/generated/pi/prompts/rite-pressure-test.md +1 -1
- package/pack/generated/pi/prompts/rite-quick.md +1 -1
- package/pack/generated/pi/prompts/rite-status.md +1 -1
- package/pack/generated/pi/prompts/rite-temper.md +1 -1
- package/pack/generated/pi/prompts/rite-zoom-out.md +1 -1
- package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/pi/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/pi/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/pi/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/pi/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/pi/skills/overhaul/references/records.md +39 -0
- package/pack/generated/pi/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/pi/skills/rite/reference/menu.md +1 -1
- package/pack/generated/pi/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +11 -6
- package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +1 -1
- package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/pi/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/pi/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/pi/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/pi/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/pi/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/pi/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/pi/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/pi/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/pi/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/pi/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/pi/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/pi/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/pi/skills/rite-temper/SKILL.md +12 -9
- package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/pi/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/pi/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +1 -1
- package/package.json +5 -4
- package/scripts/build-host-artifacts.sh +15 -0
- package/scripts/codex-generate.sh +1 -1
- package/scripts/devin-generate.sh +1 -1
- package/scripts/expand-includes.py +46 -0
- package/scripts/install-lib.sh +42 -7
- package/scripts/omp-generate.sh +11 -0
- package/scripts/pi-generate.sh +12 -1
- package/update.sh +1 -2
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/README.md +0 -7
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/architecture.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/assumptions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/brief.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decision-coverage.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decisions.md +0 -4
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/eng-review.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/gates.md +0 -4
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/plan.md +0 -5
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/questions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/spec.md +0 -6
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/state.md +0 -8
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/tasks.md +0 -1
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/test-plan.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/traceability.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/README.md +0 -7
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/assumptions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/brief.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/decisions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/questions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/spec.md +0 -6
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +0 -3
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +0 -2
- package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +0 -2
- package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +0 -1
- package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +0 -1
- package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +0 -1
- package/engine/testdata/golden/TestParityLearnings/add.golden +0 -2
- package/engine/testdata/golden/TestParityLearnings/list.golden +0 -5
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +0 -2
- package/engine/testdata/golden/TestParityLearnings/mine.golden +0 -5
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +0 -2
- package/engine/testdata/golden/TestParityLearnings/unknown.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +0 -1
- package/engine/testdata/golden/TestParityPreamble/afk/a.golden +0 -14
- package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +0 -18
- package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +0 -10
- package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +0 -18
- package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +0 -2
- package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +0 -11
- package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +0 -13
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +0 -4
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +0 -3
- package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +0 -1
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +0 -4
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +0 -3
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +0 -3
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +0 -4
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +0 -3
- package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +0 -7
- package/engine/testdata/golden/TestParityResolve/answer.golden +0 -4
- package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +0 -2
- package/engine/testdata/golden/TestParityResolve/batch.golden +0 -3
- package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/drop.golden +0 -4
- package/engine/testdata/golden/TestParityResolve/missing-answer.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/no-workspace.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/not-found.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/not-open.golden +0 -1
- package/engine/testdata/golden/TestStatusLiveWorkspace.golden +0 -10
- package/engine/testdata/golden/status/auth-tokens.txt +0 -9
- package/engine/testdata/golden/status/search-ranking.txt +0 -9
- package/engine/testdata/visual/open-visual-smoke.html +0 -675
- package/engine/testdata/visual/open-visual-smoke.outline.md +0 -54
- package/engine/tests/adr_0003_gate_exit_code_test.go +0 -32
- package/engine/tests/adr_0004_required_by_phase_test.go +0 -54
- package/engine/tests/adr_0011_define_plan_test.go +0 -32
- package/engine/tests/adr_0027_readiness_binding_test.go +0 -107
- package/engine/tests/cli_test.go +0 -126
- package/engine/tests/gate_test.go +0 -669
- package/engine/tests/meta_test.go +0 -37
- package/engine/tests/parity_closeout_test.go +0 -105
- package/engine/tests/parity_githelpers_test.go +0 -41
- package/engine/tests/parity_resolve_test.go +0 -136
- package/engine/tests/parity_test.go +0 -86
- package/engine/tests/workspace_observation_migration_test.go +0 -1069
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
|
|
4
4
|
|
|
5
|
+
## [6.0.0](https://github.com/ViktorsBaikers/DevRites/compare/v5.14.4...v6.0.0) (2026-10-10)
|
|
6
|
+
|
|
7
|
+
### ⚠ BREAKING CHANGES
|
|
8
|
+
|
|
9
|
+
* **repo:** install.sh and `npx devrites` verify the release's
|
|
10
|
+
build-provenance attestation with `gh` and refuse to install when `gh`
|
|
11
|
+
is missing or verification fails; `npx devrites` uses a devrites-engine
|
|
12
|
+
found on PATH only when its version matches the release; the npm
|
|
13
|
+
package no longer runs a prepack script and ships the committed
|
|
14
|
+
pack/generated; frontmatter validation requires PyYAML; overhaul
|
|
15
|
+
records reject malformed task ids; the engine toolchain is go1.27.2.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
* **no-release:** keep spec-phase gate verdicts out of spec.md ([#98](https://github.com/ViktorsBaikers/DevRites/issues/98)) ([5c62af3](https://github.com/ViktorsBaikers/DevRites/commit/5c62af3993945adc6d8035c86a7cf8436e696ebb))
|
|
20
|
+
* **repo:** apply verified audit repairs across engine, pack and tests ([#99](https://github.com/ViktorsBaikers/DevRites/issues/99)) ([f056b5e](https://github.com/ViktorsBaikers/DevRites/commit/f056b5e76d276e57e469ac288efd16c91d3fd7b1))
|
|
21
|
+
|
|
5
22
|
## [5.14.4](https://github.com/ViktorsBaikers/DevRites/compare/v5.14.3...v5.14.4) (2026-10-03)
|
|
6
23
|
|
|
7
24
|
### Fixed
|
package/NOTICE.md
CHANGED
|
@@ -13,10 +13,12 @@ distributing it, distributing modified versions, or commercial/organizational us
|
|
|
13
13
|
requires **approval on request**. See [`LICENSE`](LICENSE).
|
|
14
14
|
|
|
15
15
|
## Host runtimes
|
|
16
|
-
DevRites integrates with **Claude Code
|
|
17
|
-
project-local skill, agent, and instruction
|
|
18
|
-
Code" are products of Anthropic; "Codex" is a
|
|
19
|
-
|
|
16
|
+
DevRites integrates with **Claude Code**, **Codex**, **omp**, **pi**, and
|
|
17
|
+
**Devin CLI** and follows each host's project-local skill, agent, and instruction
|
|
18
|
+
conventions. "Claude" and "Claude Code" are products of Anthropic; "Codex" is a
|
|
19
|
+
product of OpenAI; omp, pi, and Devin CLI are products of their respective
|
|
20
|
+
owners. DevRites is independent of, and not affiliated with or endorsed by, any
|
|
21
|
+
of these hosts or their makers.
|
|
20
22
|
|
|
21
23
|
## Framework identifiers
|
|
22
24
|
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
|
|
|
31
31
|
the feature to another engineer, the next session reads the same plan,
|
|
32
32
|
decisions, and evidence before it continues.
|
|
33
33
|
|
|
34
|
-
**Status:** [`
|
|
34
|
+
**Status:** [`v6.0.0`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v6.0.0): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
|
|
35
35
|
|
|
36
36
|
This is the latest published release; `main` may contain unreleased work.
|
|
37
37
|
|
|
@@ -47,7 +47,15 @@ This is the latest published release; `main` may contain unreleased work.
|
|
|
47
47
|
|
|
48
48
|
## Quick start
|
|
49
49
|
|
|
50
|
-
**1. Install** from the root of your project. Node.js 18 or later is required
|
|
50
|
+
**1. Install** from the root of your project. Node.js 18 or later is required to
|
|
51
|
+
install and run DevRites. Development in this repository (`npm ci`, which
|
|
52
|
+
`.npmrc` runs with `engine-strict=true`) needs Node.js 22.22.2 or later within
|
|
53
|
+
22.x, or 24.15 or later; Node 23.x and 24.0 through 24.14 fail with `EBADENGINE`.
|
|
54
|
+
`gh` (GitHub CLI) must also be installed and authenticated, not merely
|
|
55
|
+
installed, because DevRites verifies the build-provenance attestation of every
|
|
56
|
+
release asset it downloads. Run `gh auth login` once, then `gh auth status` to
|
|
57
|
+
confirm. See [Install, update, and remove](#install-update-and-remove) for
|
|
58
|
+
which routes fail without it and which fall back to a local build.
|
|
51
59
|
|
|
52
60
|
```bash
|
|
53
61
|
npx devrites@latest
|
|
@@ -307,20 +315,22 @@ Run `npx devrites@latest --help` for common flags and
|
|
|
307
315
|
<br>
|
|
308
316
|
|
|
309
317
|
Download the release-owned installer and its checksum before executing it. It
|
|
310
|
-
needs `curl`, `gzip`, and `tar
|
|
318
|
+
needs `curl`, `gzip`, and `tar`, plus `gh` (GitHub CLI) installed and
|
|
319
|
+
authenticated (`gh auth login`).
|
|
311
320
|
|
|
312
321
|
```bash
|
|
313
322
|
bootstrap_dir="$(mktemp -d)"
|
|
323
|
+
project_dir="$PWD"
|
|
314
324
|
(
|
|
315
325
|
set -e
|
|
316
326
|
trap 'rm -rf "$bootstrap_dir"' EXIT HUP INT TERM
|
|
317
327
|
cd "$bootstrap_dir"
|
|
318
328
|
release=https://github.com/ViktorsBaikers/DevRites/releases/latest/download
|
|
319
|
-
curl -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 60 --max-filesize 1048576 "$release/install.sh" | head -c 1048577 > install.sh
|
|
329
|
+
curl -q -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 60 --max-filesize 1048576 "$release/install.sh" | head -c 1048577 > install.sh
|
|
320
330
|
install_status="${PIPESTATUS[0]}"
|
|
321
331
|
[ "$(wc -c < install.sh)" -le 1048576 ] || { echo 'error: install.sh exceeds 1 MiB' >&2; exit 1; }
|
|
322
332
|
[ "$install_status" -eq 0 ] || { echo 'error: install.sh download failed' >&2; exit 1; }
|
|
323
|
-
curl -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 30 --max-filesize 4096 "$release/install.sh.sha256" | head -c 4097 > install.sh.sha256
|
|
333
|
+
curl -q -fL --proto '=https' --proto-redir '=https' --connect-timeout 10 --max-time 30 --max-filesize 4096 "$release/install.sh.sha256" | head -c 4097 > install.sh.sha256
|
|
324
334
|
sidecar_status="${PIPESTATUS[0]}"
|
|
325
335
|
[ "$(wc -c < install.sh.sha256)" -le 4096 ] || { echo 'error: install.sh.sha256 exceeds 4 KiB' >&2; exit 1; }
|
|
326
336
|
[ "$sidecar_status" -eq 0 ] || { echo 'error: install.sh.sha256 download failed' >&2; exit 1; }
|
|
@@ -339,13 +349,14 @@ bootstrap_dir="$(mktemp -d)"
|
|
|
339
349
|
exit 1
|
|
340
350
|
fi
|
|
341
351
|
[ "$got" = "$want" ] || { echo 'error: install.sh checksum mismatch' >&2; exit 1; }
|
|
352
|
+
command -v gh >/dev/null 2>&1 || { echo 'error: gh (GitHub CLI) is required and was not found' >&2; exit 1; }
|
|
353
|
+
gh attestation verify install.sh --repo ViktorsBaikers/DevRites --signer-workflow ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main || { if gh auth status >/dev/null 2>&1; then echo 'error: install.sh attestation verification failed: no build provenance from ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main' >&2; else echo 'error: gh is not authenticated; run gh auth login' >&2; fi; exit 1; }
|
|
342
354
|
|
|
343
355
|
# Choose one Node-free operation:
|
|
344
|
-
bash ./install.sh
|
|
345
|
-
# bash ./install.sh --target
|
|
346
|
-
# bash ./install.sh --
|
|
347
|
-
# bash ./install.sh
|
|
348
|
-
# bash ./install.sh uninstall
|
|
356
|
+
bash ./install.sh --target "$project_dir" # install into the directory you ran this from
|
|
357
|
+
# bash ./install.sh --dry-run --target "$project_dir"
|
|
358
|
+
# bash ./install.sh update --target "$project_dir"
|
|
359
|
+
# bash ./install.sh uninstall --target "$project_dir"
|
|
349
360
|
)
|
|
350
361
|
```
|
|
351
362
|
|
|
@@ -392,14 +403,59 @@ proof. `devrites-engine migrate` owns deterministic v5 schema normalization.
|
|
|
392
403
|
See the [CLI contract](docs/cli.md) and
|
|
393
404
|
[ADR-0029](docs/adr/0029-v5-workspace-schema-and-native-migration.md).
|
|
394
405
|
|
|
406
|
+
Every release asset is verified with `gh attestation verify` before it is
|
|
407
|
+
decompressed, extracted, or executed, so `gh` must be installed and
|
|
408
|
+
authenticated (`gh auth login`). Without that, the Bash bootstrap (`install.sh`
|
|
409
|
+
fetched with `curl`) and `devrites-engine update` are fatal: they stop with no
|
|
410
|
+
fallback. `npx devrites@latest` instead falls back to compiling the shipped
|
|
411
|
+
`engine/` with `go build` when Go is installed, and the engine acquisition in
|
|
412
|
+
`scripts/install-lib.sh` (used by `install.sh` from a clone or an extracted
|
|
413
|
+
bundle) has its own fallback of the same kind.
|
|
414
|
+
|
|
395
415
|
Release binaries and installers ship with SHA-256 sidecars and
|
|
396
|
-
build-provenance attestations. Verify a download with
|
|
397
|
-
`shasum -a 256 -c <file>.sha256`
|
|
398
|
-
`gh attestation verify <file> -R ViktorsBaikers/DevRites --signer-workflow ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main
|
|
416
|
+
build-provenance attestations. Verify a download with both
|
|
417
|
+
`shasum -a 256 -c <file>.sha256` and
|
|
418
|
+
`gh attestation verify <file> -R ViktorsBaikers/DevRites --signer-workflow ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`
|
|
419
|
+
before it runs; the checksum alone is not enough (see the verified Bash
|
|
420
|
+
bootstrap above).
|
|
399
421
|
Pin the signer workflow, because valid provenance shows where a build ran
|
|
400
422
|
but does not show that the intended publishing step produced it. See
|
|
401
423
|
[docs/release.md](docs/release.md).
|
|
402
424
|
|
|
425
|
+
Read a failure as "prove provenance or stop", not as a verdict about your
|
|
426
|
+
build. The bootstrap checks `gh` itself, exits 1 before `install.sh` runs, and
|
|
427
|
+
prints the cause. It says `error: gh (GitHub CLI) is required and was not
|
|
428
|
+
found` when `gh` is absent. When `gh` is present but logged out (`gh auth
|
|
429
|
+
status` fails) it says `error: gh is not authenticated; run gh auth login`.
|
|
430
|
+
Only when `gh` is logged in and still rejects the attestation does it say
|
|
431
|
+
`error: install.sh attestation verification failed: no build provenance from
|
|
432
|
+
ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`. After that,
|
|
433
|
+
`install.sh` verifies the release bundle `devrites-<tag>.tar.gz` and reports the
|
|
434
|
+
same three causes as `attestation verification failed: gh (GitHub CLI) is
|
|
435
|
+
required and was not found`, `attestation verification failed: gh is not
|
|
436
|
+
authenticated ...; run 'gh auth login' and retry`, and `attestation verification
|
|
437
|
+
failed: no build provenance from <signer>`. The engine binary is acquired
|
|
438
|
+
separately: the bundled installer (`scripts/install-lib.sh`) and the npm route
|
|
439
|
+
report `attestation verification failed (gh must be installed and
|
|
440
|
+
authenticated)` for any of these causes, discard the downloaded binary, and
|
|
441
|
+
fall back to other sources. The bundled installer builds from the bundle's
|
|
442
|
+
`engine/` source when `go` is available, then tries an already-installed
|
|
443
|
+
`devrites-engine`, and only when none works does `install.sh` exit 1 with
|
|
444
|
+
`could not acquire devrites-engine` followed by that cause. `npx devrites@latest` repeats the combined message
|
|
445
|
+
before exiting 127 when no other engine is available. `devrites-engine update` reports `gh (GitHub CLI) is
|
|
446
|
+
required and must be authenticated for attestation verification` when `gh` is
|
|
447
|
+
absent, and `attestation verification failed for <asset>` whenever a present
|
|
448
|
+
`gh` rejects the asset, logged out or not.
|
|
449
|
+
|
|
450
|
+
There is no flag to skip, disable, or bypass attestation verification. The
|
|
451
|
+
`.sha256` sidecar is fetched from the same origin as the artifact, so a
|
|
452
|
+
substituted origin supplies a digest that matches its own payload, which is why
|
|
453
|
+
the sidecar is a corruption check and not a provenance one. If you cannot run
|
|
454
|
+
`gh auth login`, install Go and use `npx devrites@latest`, or clone this
|
|
455
|
+
repository and run `bash install.sh`: both compile `engine/` locally when the
|
|
456
|
+
download is refused, with `cd engine && go build -o devrites-engine .` as the
|
|
457
|
+
manual equivalent.
|
|
458
|
+
|
|
403
459
|
</details>
|
|
404
460
|
|
|
405
461
|
## Hosts
|
|
@@ -412,8 +468,10 @@ but does not show that the intended publishing step produced it. See
|
|
|
412
468
|
| **pi** | `.pi/skills/` | `.pi/agents/` | Prompt commands in `.pi/prompts/`, marked block in `AGENTS.md` | `/rite-spec` or `/skill:rite-spec` |
|
|
413
469
|
| **Devin CLI** | `.devin/skills/` | `.devin/agents/` | Marked block in `AGENTS.md` | `/rite-spec` |
|
|
414
470
|
|
|
415
|
-
On every host,
|
|
416
|
-
|
|
471
|
+
On every host, among the lifecycle `devrites-*` specialists only
|
|
472
|
+
`devrites-slice-wright` is writable and the rest are read-only and hook-free;
|
|
473
|
+
the shipped profiles are the full role-to-permission map, and `/rite-doctor`
|
|
474
|
+
step 3 checks them. Existing
|
|
417
475
|
settings and user content stay in place. On Devin CLI, dispatch goes through
|
|
418
476
|
`run_subagent` with the exact `devrites-<role>` profile, and a missing profile
|
|
419
477
|
stops for HITL instead of substituting `subagent_general`. Profiles load when a
|
|
@@ -470,7 +528,10 @@ traces. DevRites detects these tools but does not install them.
|
|
|
470
528
|
- Installed host artifacts stay in the project. Use `--no-binary` or
|
|
471
529
|
`DEVRITES_NO_BINARY=1` to avoid keeping a shared binary outside it.
|
|
472
530
|
- npm, Bash, and `devrites-engine update` all require checksummed release
|
|
473
|
-
assets
|
|
531
|
+
assets that also pass `gh attestation verify`, pinned to
|
|
532
|
+
`ViktorsBaikers/DevRites` and signer workflow
|
|
533
|
+
`ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main` (see
|
|
534
|
+
[Install, update, and remove](#install-update-and-remove)). Remote fetches use HTTPS at every redirect hop, are bounded in size,
|
|
474
535
|
and never fall back to an unchecked raw file, source archive, tag, or default
|
|
475
536
|
branch.
|
|
476
537
|
- Install, update, and uninstall do not inspect target-project Git. Retained
|
package/SECURITY.md
CHANGED
|
@@ -15,7 +15,7 @@ Please include:
|
|
|
15
15
|
- A clear description of the vulnerability and its impact.
|
|
16
16
|
- A minimal reproduction (commands, files, or a target project layout).
|
|
17
17
|
- The DevRites version (commit SHA or release tag), affected host, and host
|
|
18
|
-
version (Claude Code or
|
|
18
|
+
version (Claude Code, Codex, omp, pi, or Devin CLI).
|
|
19
19
|
- Your name / handle for credit (optional).
|
|
20
20
|
|
|
21
21
|
You should receive an acknowledgement within **5 business days** and a triage
|
|
@@ -119,17 +119,23 @@ and `.codex/config.toml` without replacing unrelated user settings. The shared
|
|
|
119
119
|
`devrites-engine` executable is the only allowed artifact outside the project.
|
|
120
120
|
It is installed to `DEVRITES_BIN_DIR`, a writable `~/.local/bin`, or a writable
|
|
121
121
|
`/usr/local/bin`; `--no-binary` / `DEVRITES_NO_BINARY=1` skips it. The bootstrap
|
|
122
|
-
and direct updater may fetch the release bundle and checksummed engine assets
|
|
122
|
+
and direct updater may fetch the release bundle and checksummed engine assets,
|
|
123
|
+
each of which must also pass `gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`).
|
|
123
124
|
They never invoke `sudo` or edit shell startup files.
|
|
124
125
|
|
|
125
126
|
The documented Node-free boundary downloads the release-owned `install.sh` and
|
|
126
|
-
its exact-name sidecar
|
|
127
|
-
|
|
127
|
+
its exact-name sidecar, then requires both the checksum and the build-provenance
|
|
128
|
+
attestation (`gh attestation verify`, pinned to `ViktorsBaikers/DevRites` and
|
|
129
|
+
signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`)
|
|
130
|
+
to pass before execution, as in the README "verified Bash bootstrap"; mutable
|
|
131
|
+
default-branch scripts are not recommended. Legacy local and extracted shim invocations remain compatible, but
|
|
128
132
|
their exact-release guarantee begins at that verified asset. A piped shim never
|
|
129
133
|
treats current-directory siblings as its bundle.
|
|
130
134
|
|
|
131
135
|
Network acquisition accepts only an exact SemVer release asset and its mandatory
|
|
132
|
-
exact-filename SHA-256 sidecar
|
|
136
|
+
exact-filename SHA-256 sidecar, and every release asset must also pass
|
|
137
|
+
`gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
|
|
138
|
+
`gh` must be installed and authenticated, with no bypass). Every redirect hop must remain HTTPS, private
|
|
133
139
|
temporary-directory creation must succeed, and unchecked raw/source/default-
|
|
134
140
|
branch fallbacks are absent. Representative in-stream ceilings are 1 MiB for
|
|
135
141
|
release metadata, 4 KiB for a sidecar, and 64 MiB for an archive or binary, with
|
|
@@ -148,8 +154,9 @@ and [ADR-0028](docs/adr/0028-self-contained-engine-update.md) own the rationale.
|
|
|
148
154
|
With `npx devrites@latest`, the CLI (`bin/devrites.mjs`) calls
|
|
149
155
|
`devrites-engine` directly instead of running `install.sh`. The bundled host
|
|
150
156
|
payload is pinned to the requested npm package version. The shim first tries the
|
|
151
|
-
matching exact-release binary
|
|
152
|
-
|
|
157
|
+
matching exact-release binary, which must pass its mandatory SHA-256 sidecar and
|
|
158
|
+
`gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`),
|
|
159
|
+
then a package-local Go build, and then an existing engine. Remote responses are
|
|
153
160
|
byte-bounded and every redirect is checked before following it. It has no
|
|
154
161
|
runtime npm dependencies. The same project and shared-binary boundaries apply
|
|
155
162
|
to the Bash installer.
|
|
@@ -180,11 +187,17 @@ separate type-`GO` workflow gate still applies.
|
|
|
180
187
|
Reviewer profiles are natively read-only. Claude keeps the root in project plan
|
|
181
188
|
mode. Codex uses a workspace-capable root because a child cannot elevate above
|
|
182
189
|
its parent; root source/test non-writing is therefore a workflow rule, not a
|
|
183
|
-
Codex sandbox guarantee.
|
|
184
|
-
|
|
190
|
+
Codex sandbox guarantee. Among the lifecycle `devrites-*` specialists,
|
|
191
|
+
`devrites-slice-wright` is the only writable one on either host; the shipped
|
|
192
|
+
profiles are the full role-to-permission map, and `/rite-doctor` step 3 checks
|
|
193
|
+
them. Its task states the exact project-relative paths. The root
|
|
185
194
|
waits, compares the returned file list and `git diff --name-only` with that
|
|
186
195
|
contract, and rejects out-of-scope work. Exact-path scope is instruction-backed,
|
|
187
196
|
not a per-task filesystem allowlist.
|
|
197
|
+
The standalone explicit skills ship their own writers: the `overhaul-*` agents
|
|
198
|
+
(ADR-0031) and `fast-builder` (ADR-0033) are write-capable (Codex `:workspace`,
|
|
199
|
+
Claude edit-capable); they run only when the user explicitly invokes /overhaul
|
|
200
|
+
or /rite-fast.
|
|
188
201
|
Agent lifecycle, session history, compaction, presentation, browsing, indexes,
|
|
189
202
|
and irreversible-action approval remain native host responsibilities.
|
|
190
203
|
|
|
@@ -200,8 +213,9 @@ Unrelated Git variables are preserved. Go and shell parity is covered by
|
|
|
200
213
|
### Third-party trust
|
|
201
214
|
|
|
202
215
|
DevRites vendors no third-party code (see `NOTICE.md`). It runs through the
|
|
203
|
-
external
|
|
204
|
-
|
|
216
|
+
external host selected by the user (Claude Code, Codex, omp, pi, or Devin CLI)
|
|
217
|
+
and is independent of, and not affiliated with or endorsed by, any of these
|
|
218
|
+
hosts or their makers. Codegraph, graphify, and Playwright MCP are optional
|
|
205
219
|
user-selected tools that DevRites calls through their documented interfaces
|
|
206
220
|
rather than bundling them.
|
|
207
221
|
|
package/bin/devrites.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// devrites - npx entry point for the engine-owned DevRites installer.
|
|
3
|
-
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
4
4
|
import { createHash } from 'node:crypto';
|
|
5
5
|
import { chmodSync, createReadStream, existsSync, mkdtempSync, readFileSync, rmSync } from 'node:fs';
|
|
6
6
|
import { open } from 'node:fs/promises';
|
|
7
|
-
import { tmpdir } from 'node:os';
|
|
7
|
+
import { constants as osConstants, tmpdir } from 'node:os';
|
|
8
8
|
import { dirname, join } from 'node:path';
|
|
9
9
|
import { fileURLToPath } from 'node:url';
|
|
10
10
|
|
|
@@ -16,6 +16,7 @@ const MAX_REDIRECTS = 5;
|
|
|
16
16
|
const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
|
|
17
17
|
const temporaryDirs = new Set();
|
|
18
18
|
let acquisitionFailure = null;
|
|
19
|
+
let engineChild = null;
|
|
19
20
|
|
|
20
21
|
class DownloadError extends Error {}
|
|
21
22
|
|
|
@@ -31,6 +32,9 @@ function cleanupTemporaryDirs() {
|
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
process.on('exit', cleanupTemporaryDirs);
|
|
35
|
+
for (const signal of ['SIGINT', 'SIGTERM', 'SIGHUP']) {
|
|
36
|
+
process.on(signal, () => (engineChild ? engineChild.kill(signal) : process.exit(128 + osConstants.signals[signal])));
|
|
37
|
+
}
|
|
34
38
|
|
|
35
39
|
const SUBCOMMAND_ALIASES = new Map([
|
|
36
40
|
['install', 'install'],
|
|
@@ -81,15 +85,26 @@ function run(command, args, options = {}) {
|
|
|
81
85
|
return spawnSync(command, args, { stdio: options.stdio || 'inherit', cwd: options.cwd || process.cwd(), env: options.env || process.env });
|
|
82
86
|
}
|
|
83
87
|
|
|
84
|
-
function
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
function runEngine(command, args, env) {
|
|
89
|
+
return new Promise((resolve) => {
|
|
90
|
+
let launchFailed = false;
|
|
91
|
+
const failLaunch = (error) => {
|
|
92
|
+
launchFailed = true;
|
|
93
|
+
engineChild = null;
|
|
94
|
+
resolve(error);
|
|
95
|
+
};
|
|
96
|
+
try {
|
|
97
|
+
engineChild = spawn(command, args, { stdio: 'inherit', env });
|
|
98
|
+
} catch (error) {
|
|
99
|
+
error.message = `${error.message} ${command}`;
|
|
100
|
+
failLaunch(error);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
engineChild.once('error', failLaunch);
|
|
104
|
+
engineChild.once('close', (code, signal) => {
|
|
105
|
+
if (!launchFailed) process.exit(signal ? 128 + osConstants.signals[signal] : code);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
93
108
|
}
|
|
94
109
|
|
|
95
110
|
async function acquireEngine() {
|
|
@@ -98,6 +113,7 @@ async function acquireEngine() {
|
|
|
98
113
|
if (!validRepository(repo) || !tag) throw new Error('DevRites repository and release tag must identify an exact release');
|
|
99
114
|
const envEngine = process.env.DEVRITES_ENGINE_CLI || process.env.DEVRITES_CLI;
|
|
100
115
|
if (envEngine && existsSync(envEngine)) return envEngine;
|
|
116
|
+
if (command === 'uninstall' && spawnSync('devrites-engine', ['uninstall', '-h'], { stdio: 'ignore' }).status === 0) return 'devrites-engine';
|
|
101
117
|
|
|
102
118
|
const downloaded = await downloadEngine();
|
|
103
119
|
if (downloaded) return downloaded;
|
|
@@ -121,7 +137,10 @@ async function acquireEngine() {
|
|
|
121
137
|
}
|
|
122
138
|
}
|
|
123
139
|
|
|
124
|
-
return 'devrites-engine';
|
|
140
|
+
if (command === 'uninstall') return 'devrites-engine';
|
|
141
|
+
const probe = spawnSync('devrites-engine', ['version'], { encoding: 'utf8' });
|
|
142
|
+
if (!probe.error && probe.status === 0 && String(probe.stdout).trim().replace(/^v/, '') === tag.slice(1)) return 'devrites-engine';
|
|
143
|
+
return null;
|
|
125
144
|
}
|
|
126
145
|
|
|
127
146
|
function findGo() {
|
|
@@ -171,6 +190,14 @@ async function downloadEngine() {
|
|
|
171
190
|
rmSync(`${out}.sha256`, { force: true });
|
|
172
191
|
return null;
|
|
173
192
|
}
|
|
193
|
+
const signer = `${repo}/.github/workflows/ci.yml@refs/heads/main`;
|
|
194
|
+
const attestation = spawnSync('gh', ['attestation', 'verify', out, '--repo', repo, '--signer-workflow', signer], { stdio: 'ignore', timeout: 120_000 });
|
|
195
|
+
if (attestation.error || attestation.status !== 0) {
|
|
196
|
+
acquisitionFailure = `release ${tag} asset ${name}: attestation verification failed (gh must be installed and authenticated)`;
|
|
197
|
+
rmSync(out, { force: true });
|
|
198
|
+
rmSync(`${out}.sha256`, { force: true });
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
174
201
|
try {
|
|
175
202
|
chmodSync(out, 0o755);
|
|
176
203
|
} catch {
|
|
@@ -282,6 +309,10 @@ try {
|
|
|
282
309
|
console.error(`devrites: ${error.message}`);
|
|
283
310
|
process.exit(1);
|
|
284
311
|
}
|
|
312
|
+
if (!engine) {
|
|
313
|
+
console.error(`devrites: devrites-engine was not found and could not be acquired${acquisitionFailure ? ` (${acquisitionFailure})` : ''}.`);
|
|
314
|
+
process.exit(127);
|
|
315
|
+
}
|
|
285
316
|
const payloadDir = process.env.DEVRITES_HOST_ARTIFACT_DIR || join(root, 'pack', 'generated');
|
|
286
317
|
const installerCommand = command === 'install' || command === 'update' || command === 'uninstall';
|
|
287
318
|
const engineEnv = { ...process.env, DEVRITES_ENGINE_CLI: engine };
|
|
@@ -294,9 +325,12 @@ if (command === 'install' || command === 'update') {
|
|
|
294
325
|
}
|
|
295
326
|
args.push(...rest);
|
|
296
327
|
|
|
297
|
-
|
|
298
|
-
const
|
|
299
|
-
|
|
328
|
+
let lastError = null;
|
|
329
|
+
for (const candidate of [engine, 'devrites-engine']) {
|
|
330
|
+
lastError = await runEngine(candidate, args, engineEnv);
|
|
331
|
+
if (lastError.code !== 'ENOENT') break;
|
|
332
|
+
}
|
|
333
|
+
if (lastError.code !== 'ENOENT') {
|
|
300
334
|
console.error('devrites: failed to launch devrites-engine:', lastError.message);
|
|
301
335
|
} else {
|
|
302
336
|
console.error(`devrites: devrites-engine was not found and could not be acquired${acquisitionFailure ? ` (${acquisitionFailure})` : ''}.`);
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
- **Status:** Accepted
|
|
4
4
|
- **Date:** 2026-07-08 (backfilled; decision predates the ADR log)
|
|
5
5
|
|
|
6
|
-
> Network scope was narrowed by [ADR-0008](0008-sanctioned-engine-network-boundary.md)
|
|
7
|
-
>
|
|
8
|
-
>
|
|
6
|
+
> Network scope was narrowed by [ADR-0008](0008-sanctioned-engine-network-boundary.md),
|
|
7
|
+
> whose engine network allowance was superseded by
|
|
8
|
+
> [ADR-0024](0024-native-policy-offline-installer-boundary.md) and then reintroduced
|
|
9
|
+
> for release acquisition only, confined to `engine/internal/release`, by
|
|
10
|
+
> [ADR-0028](0028-self-contained-engine-update.md). Deterministic workspace
|
|
11
|
+
> operations remain network-free.
|
|
9
12
|
|
|
10
13
|
## Context
|
|
11
14
|
|
|
@@ -60,3 +60,12 @@ by the v5 pack declare the row at creation.
|
|
|
60
60
|
|
|
61
61
|
Guard tests: `engine/internal/state/workspaceschema_test.go`,
|
|
62
62
|
`engine/tests/parity_resolve_test.go`, `engine/tests/parity_closeout_test.go`.
|
|
63
|
+
|
|
64
|
+
## Amendment (2026-10-06)
|
|
65
|
+
|
|
66
|
+
The Context section's "the current contract is schema 3" records the contract at
|
|
67
|
+
adoption. `state.SchemaVersion` is now 4: schema 4 adds the `gates.md`
|
|
68
|
+
acceptance ledger to the vetted artifact set (`engine/internal/state/schema.go`).
|
|
69
|
+
The decision above is unchanged — the engine declares the current workspace
|
|
70
|
+
schema, `state resolve` and `state close` refuse mismatched workspaces, and
|
|
71
|
+
`devrites-engine migrate` performs fail-closed normalization.
|
package/docs/adr/README.md
CHANGED
|
@@ -47,13 +47,13 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
|
|
|
47
47
|
| ADR | Title | Status | Guard test |
|
|
48
48
|
|-----|-------|--------|-----------|
|
|
49
49
|
| [0001](0001-go-engine-as-control-plane.md) | Go engine as deterministic control plane | Accepted in part; all-state-transition/derivation scope superseded by 0024 | none |
|
|
50
|
-
| [0002](0002-dual-host-harness.md) | Dual-host harness (Claude + Codex) | Accepted
|
|
50
|
+
| [0002](0002-dual-host-harness.md) | Dual-host harness (Claude + Codex) | Accepted in part; the `internal/harness` adapter and `harness-matrix` mechanism no longer exist, and the two-host count is superseded by the five host packs under `pack/generated/` (claude, codex, omp, pi, devin) | historical |
|
|
51
51
|
| [0003](0003-gate-model-hitl-pause.md) | Gates block as HITL pause, never crash | Accepted | `engine/tests/adr_0003_gate_exit_code_test.go` |
|
|
52
52
|
| [0004](0004-state-schema-phases-sections.md) | Phase-relative section completeness | Accepted | `engine/tests/adr_0004_required_by_phase_test.go`, `engine/internal/state/state_test.go` |
|
|
53
53
|
| [0005](0005-hooks-as-engine-subcommands.md) | Hooks are engine subcommands, not shell scripts | Accepted; active hook clause superseded by 0018 | historical |
|
|
54
54
|
| [0006](0006-clock-seam-and-engine-ci-gates.md) | Clock seam + Go static-analysis CI gates | Accepted in part; next-qid seam/guard superseded by 0024, CI analyzer wiring superseded by 0032 | historical |
|
|
55
55
|
| [0007](0007-canonical-live-workspace-filenames.md) | Canonical live workspace filenames | Accepted; unsupported alias/migration clauses superseded by 0022 | `engine/internal/state/state_test.go`, `engine/internal/lib/cursor_compat_test.go` |
|
|
56
|
-
| [0008](0008-sanctioned-engine-network-boundary.md) | Sanctioned engine network boundary | Accepted in part; engine network allowance superseded by 0024 | `engine/tests/meta_test.go` |
|
|
56
|
+
| [0008](0008-sanctioned-engine-network-boundary.md) | Sanctioned engine network boundary | Accepted in part; engine network allowance superseded by 0024, then reintroduced for release acquisition in `engine/internal/release` by 0028 | `engine/tests/meta_test.go` |
|
|
57
57
|
| [0009](0009-prebuild-decision-coverage-and-readiness.md) | Pre-build decision coverage and implementation readiness | Accepted; semantic engine-gate implementation superseded by 0022 | historical |
|
|
58
58
|
| [0010](0010-agent-first-fresh-context-orchestration.md) | Agent-first fresh-context orchestration | Accepted | `tests/native-orchestration-contract-test.sh`, `tests/codex-agent-generation-test.sh` |
|
|
59
59
|
| [0011](0011-define-plan-transition-rights.md) | Separate Define authoring from the Plan checkpoint | Accepted | `engine/internal/state/state_test.go`, `engine/tests/adr_0011_define_plan_test.go` |
|
|
@@ -75,6 +75,7 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
|
|
|
75
75
|
| [0027](0027-content-bound-build-readiness.md) | Content-bound build readiness | Accepted; AC ID map amended 2026-09-04 | `engine/tests/adr_0027_readiness_binding_test.go`, `engine/internal/state/acceptance_test.go` |
|
|
76
76
|
| [0028](0028-self-contained-engine-update.md) | Self-contained engine update | Accepted | `engine/internal/install/install_test.go`, `engine/internal/release/release_test.go`, `engine/tests/meta_test.go` |
|
|
77
77
|
| [0029](0029-v5-workspace-schema-and-native-migration.md) | v5 workspace schema and native migration | Accepted | `engine/internal/state/workspaceschema_test.go`, `engine/tests/parity_resolve_test.go`, `engine/tests/parity_closeout_test.go` |
|
|
78
|
+
| 0030 | Reserved number; no ADR is published under it | Unpublished | none |
|
|
78
79
|
| [0031](0031-overhaul-agents-keep-every-tool.md) | `/overhaul` ships its own agents that keep every tool | Accepted; scopes the one-writer clauses of 0010/0015/0017/0018/0019 to `devrites-*` specialists | `scripts/validate-agent-composition.py`, `tests/codex-agent-generation-test.sh` |
|
|
79
80
|
| [0032](0032-single-lint-gate-and-cached-pr-tests.md) | One engine lint gate, and PR tests that reuse main's results | Accepted | `tests/validation-governance-test.sh` |
|
|
80
81
|
| [0033](0033-rite-fast-own-agents.md) | `/rite-fast` ships its own agents and its own writer | Accepted; adds `fast-builder` as a writer outside the `devrites-*` one-writer rule | `scripts/validate-agent-composition.py`, `tests/rite-fast-contract-test.sh` |
|
|
@@ -11,7 +11,7 @@ Issues and PRDs for this repo live as markdown files in `.scratch/`. For the end
|
|
|
11
11
|
- Comments and conversation history append to the bottom of the file under a `## Comments` heading
|
|
12
12
|
- An issue discovered while working another records `Found during: NN` (the parent issue number) near the `Status:` line; the discovery trail survives so a later audit can see where it came from
|
|
13
13
|
- Ordering is recorded as optional lines near `Status:`: `Blocked by: NN, NN` (cannot start until those resolve), `Blocks: NN` (this issue gates those), `Relates: NN` (context link, no ordering). A dependency that would create a cycle is flagged and resolved by a human, never silently recorded.
|
|
14
|
-
- An issue is **ready** when its `Status:` is open
|
|
14
|
+
- An issue is **ready** when its `Status:` is `open` or `ready-for-agent`, every `Blocked by:` target is `resolved`, `done`, `wontfix` or `closed`, and nothing has claimed it. Pick work by lowest ready number; a blocked issue is skipped, not partially started. `scripts/issue-ready.sh` computes the ready frontier deterministically (optionally scoped to one feature slug) — use it instead of re-reading every file.
|
|
15
15
|
|
|
16
16
|
## When a skill says "publish to the issue tracker"
|
|
17
17
|
|
package/docs/architecture.md
CHANGED
|
@@ -154,7 +154,8 @@ consume only local source, payload, and binary candidates.
|
|
|
154
154
|
|
|
155
155
|
Direct `devrites-engine update` uses the separate `engine/internal/release`
|
|
156
156
|
boundary to resolve the latest stable release and acquire its checksummed bundle
|
|
157
|
-
and platform engine
|
|
157
|
+
and platform engine, each also checked with `gh attestation verify` (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
|
|
158
|
+
`gh` must be installed and authenticated). It then invokes the downloaded engine with local paths, so
|
|
158
159
|
the candidate validates its own payload schema. `update --check` resolves only
|
|
159
160
|
release metadata and downloads no assets. Engine `--to` and `--pre` selectors do
|
|
160
161
|
not exist.
|
|
@@ -163,7 +164,9 @@ The shell entrypoints
|
|
|
163
164
|
(`bin/devrites.mjs`) remain equivalent acquisition adapters. They acquire and
|
|
164
165
|
verify the exact-release bundle or binary, then pass local paths and user flags
|
|
165
166
|
through to the deterministic engine operation. All network paths require exact SemVer,
|
|
166
|
-
HTTPS-only redirects, exact-filename SHA-256 sidecars,
|
|
167
|
+
HTTPS-only redirects, exact-filename SHA-256 sidecars, a `gh attestation verify`
|
|
168
|
+
pass for every release asset (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
|
|
169
|
+
see [Install, update, and remove](../README.md#install-update-and-remove)), private temporary
|
|
167
170
|
directories, bounded transfers, and full archive preflight. They provide no
|
|
168
171
|
unchecked raw, source-archive, tag, or default-branch fallback.
|
|
169
172
|
|
|
@@ -216,7 +219,7 @@ never synthesizes a historical pass; ambiguous legacy candidate scope is a gap.
|
|
|
216
219
|
|
|
217
220
|
The engine owns deterministic v5 schema normalization (`devrites-engine migrate`),
|
|
218
221
|
not compatibility telemetry. Readers accept official v1/v2 bullet and v3 table
|
|
219
|
-
`state.md` cursors; mutations require the current state schema (
|
|
222
|
+
`state.md` cursors; mutations require the current state schema (v4). Migration
|
|
220
223
|
can create missing artifact stubs, but those stubs prove neither semantic
|
|
221
224
|
readiness nor completed work. Wider pre-release compatibility experiments are
|
|
222
225
|
not runtime contracts. [ADR-0029](adr/0029-v5-workspace-schema-and-native-migration.md)
|
package/docs/cli.md
CHANGED
|
@@ -11,7 +11,8 @@ cross-host primitives; it never dispatches an agent or grades reviewer prose.
|
|
|
11
11
|
`help`, `-h`, `--help`, `version`, and `--version` forms also remain supported.
|
|
12
12
|
Each operational command and subcommand accepts `-h` / `--help` and prints that
|
|
13
13
|
command's usage to stdout (exit 0) without requiring a workspace. Missing
|
|
14
|
-
required arguments still print usage to stderr and exit 2
|
|
14
|
+
required arguments still print usage to stderr and exit 2, except `state close`,
|
|
15
|
+
which exits 4 (see Output and exits).
|
|
15
16
|
|
|
16
17
|
```text
|
|
17
18
|
devrites-engine install [flags]
|
|
@@ -48,16 +49,21 @@ devrites-engine gates <subcommand> <slug>
|
|
|
48
49
|
devrites-engine claim <add|release|list|check>
|
|
49
50
|
devrites-engine note <add|list|check|rm> <slug>
|
|
50
51
|
|
|
51
|
-
devrites-engine state resolve <qid> "<answer>"
|
|
52
|
+
devrites-engine state resolve [--human] <qid> "<answer>"
|
|
52
53
|
devrites-engine state merge-manifest <slug> [pred...]
|
|
53
54
|
devrites-engine state close <slug>
|
|
54
55
|
devrites-engine migrate <slug> [--dry-run] [--answer id=choice]
|
|
55
56
|
|
|
56
57
|
devrites-engine secret-scan [--staged] [--stdin] [slug]
|
|
57
58
|
devrites-engine open-visual <path-or-name> [--slug <slug>] [--no-open]
|
|
59
|
+
devrites-engine overhaul <tool> ...
|
|
58
60
|
devrites-engine version
|
|
59
61
|
```
|
|
60
62
|
|
|
63
|
+
`overhaul <tool>` provides the run-record, admission, snapshot, scoring,
|
|
64
|
+
benchmark, and view tools used by the `/overhaul` skill; run
|
|
65
|
+
`devrites-engine overhaul --help` for its tools.
|
|
66
|
+
|
|
61
67
|
Commands outside this operational list and the standard help/version forms are
|
|
62
68
|
unsupported. There are no legacy engine aliases, tombstones, agent-protocol
|
|
63
69
|
versions, semantic-readiness digests, or compatibility telemetry.
|
|
@@ -70,8 +76,11 @@ Run `devrites-engine update` in an installed project to resolve the latest
|
|
|
70
76
|
stable release and update the project pack plus shared engine binary. The
|
|
71
77
|
command downloads the release bundle and platform engine, verifies both exact
|
|
72
78
|
filenames against their SHA-256 sidecars, then hands the extracted candidate to
|
|
73
|
-
the downloaded engine.
|
|
74
|
-
|
|
79
|
+
the downloaded engine. Each release asset must also pass `gh attestation verify`,
|
|
80
|
+
pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`,
|
|
81
|
+
so `gh` must be installed and authenticated, with no bypass (see
|
|
82
|
+
[Install, update, and remove](../README.md#install-update-and-remove)). This
|
|
83
|
+
avoids asking an old engine to validate a newer payload schema.
|
|
75
84
|
|
|
76
85
|
`devrites-engine update --check` resolves and compares release metadata without
|
|
77
86
|
downloading assets. `--source-dir` and `--payload-dir` remain the advanced local
|
|
@@ -91,9 +100,12 @@ comparison without changing the installation. Use
|
|
|
91
100
|
retaining the shared `devrites-engine` binary.
|
|
92
101
|
|
|
93
102
|
If an older direct engine reports `missing codex/hooks.json` or asks for
|
|
94
|
-
`--source-dir`, run `npx devrites@latest update`, or use a
|
|
95
|
-
|
|
96
|
-
|
|
103
|
+
`--source-dir`, run `npx devrites@latest update`, or use a release `install.sh` that is both
|
|
104
|
+
checksum-verified and attestation-verified (pinned repo and signer workflow, see
|
|
105
|
+
the verified Bash bootstrap under
|
|
106
|
+
[README Install, update, and remove](../README.md#install-update-and-remove))
|
|
107
|
+
and run `bash ./install.sh update` once to install a release with the
|
|
108
|
+
self-contained updater.
|
|
97
109
|
|
|
98
110
|
## Checks
|
|
99
111
|
|
|
@@ -190,6 +202,9 @@ ledger blocks the phase exit.
|
|
|
190
202
|
## Atomic state operations
|
|
191
203
|
|
|
192
204
|
`state resolve` also supports `--drop <qid> ["<reason>"]` and `--batch <file>`.
|
|
205
|
+
A leading `--human` (for the answer, `--drop` and `--batch` forms:
|
|
206
|
+
`state resolve --human --drop <qid>`, `state resolve --human --batch <file>`) also writes `answered_by: human`;
|
|
207
|
+
without it any `answered_by:` line in the resolved block, whatever its indentation or case, is removed.
|
|
193
208
|
`state close` transactionally archives a shipped workspace and clears matching
|
|
194
209
|
`ACTIVE`.
|
|
195
210
|
|
|
@@ -237,10 +252,15 @@ selection exits `2`; a malformed/unsafe manifest or candidate mismatch prints
|
|
|
237
252
|
`candidate: BLOCKED: <reason>` to stderr and exits `3`.
|
|
238
253
|
|
|
239
254
|
- `0`: passed or completed.
|
|
255
|
+
- `1`: runtime or I/O failure.
|
|
240
256
|
- `2`: common invalid request or unreadable-state result.
|
|
241
257
|
- `3`: common deterministic lifecycle or safety block.
|
|
242
258
|
- Atomic state operations retain their documented operation-specific nonzero
|
|
243
259
|
results.
|
|
260
|
+
- `state close` exits `4` for usage or a missing workspace.
|
|
261
|
+
- `state close` exits `3` for a schema refusal.
|
|
262
|
+
- `state close` exits `5` when an archive already exists.
|
|
263
|
+
- `state close` exits `1` for an invalid workspace, archive directory, or ACTIVE cursor.
|
|
244
264
|
|
|
245
265
|
## Root safety
|
|
246
266
|
|
|
@@ -251,8 +271,11 @@ commands refuse ambiguous, escaped, symlinked, or otherwise unsafe roots.
|
|
|
251
271
|
Install, update application, and uninstall remain manifest-owned local
|
|
252
272
|
operations. Direct engine update, shell, and npm may acquire a release candidate;
|
|
253
273
|
all remote acquisition uses exact SemVer, HTTPS-only redirect hops, mandatory
|
|
254
|
-
exact-filename SHA-256 sidecars,
|
|
255
|
-
|
|
274
|
+
exact-filename SHA-256 sidecars, a `gh attestation verify` check of every release
|
|
275
|
+
asset (pinned to `ViktorsBaikers/DevRites` and signer workflow `ViktorsBaikers/DevRites/.github/workflows/ci.yml@refs/heads/main`;
|
|
276
|
+
`gh` must be installed and authenticated, with no bypass), private temporary
|
|
277
|
+
directories, and byte/archive bounds, with no unchecked raw/source/default-branch
|
|
278
|
+
fallback. Update accepts
|
|
256
279
|
`--check` to compare the installed manifest version with the latest stable
|
|
257
280
|
release without downloading assets. Remote-selector flags such as `--to` and
|
|
258
281
|
`--pre` are unsupported.
|