devrites 7.2.8 → 7.3.1
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 +42 -0
- package/README.md +1 -1
- package/docs/candidate-integrity.md +10 -0
- package/docs/cli.md +7 -1
- package/docs/command-map.md +5 -2
- package/docs/engine/commands.md +34 -4
- package/docs/orchestration.md +26 -13
- package/docs/skills.md +5 -0
- package/engine/internal/acceptance/cli.go +27 -26
- package/engine/internal/acceptance/preconditions.go +1 -1
- package/engine/internal/acceptance/run.go +42 -16
- package/engine/internal/acceptance/transcript.go +236 -45
- package/engine/internal/devritespaths/paths.go +16 -3
- package/engine/internal/gate/gate.go +6 -0
- package/engine/internal/gate/readiness_binding.go +4 -3
- package/engine/internal/lib/candidate.go +20 -7
- package/engine/internal/lib/candidate_coverage.go +2 -19
- package/engine/internal/lib/closeout.go +16 -4
- package/engine/internal/lib/context.go +64 -45
- package/engine/internal/lib/context_io.go +171 -0
- package/engine/internal/lib/detect.go +8 -8
- package/engine/internal/lib/dispatch.go +2 -0
- package/engine/internal/lib/packet.go +37 -7
- package/engine/internal/lib/packet_freeze.go +60 -12
- package/engine/internal/lib/packet_integrity.go +179 -0
- package/engine/internal/lib/perturb.go +3 -3
- package/engine/internal/lib/slicecheck.go +7 -1
- package/engine/internal/lib/taskgraph.go +20 -36
- package/engine/internal/lib/triggers.go +28 -29
- package/engine/internal/lib/workspace_pool.go +330 -0
- package/engine/internal/parallel/cli.go +190 -49
- package/engine/internal/parallel/git.go +47 -14
- package/engine/internal/parallel/landing.go +232 -0
- package/engine/internal/parallel/lease.go +97 -18
- package/engine/internal/parallel/ops.go +312 -155
- package/engine/internal/parallel/pathdisjoint.go +48 -4
- package/engine/internal/parallel/prune.go +133 -0
- package/engine/internal/parallel/repository.go +239 -0
- package/engine/internal/parallel/select.go +64 -42
- package/engine/internal/state/observation.go +49 -2
- package/engine/main.go +2 -1
- package/pack/.claude/agents/devrites-proof-runner.md +16 -9
- package/pack/.claude/skills/devrites-lib/SKILL.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/.claude/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/.claude/skills/rite-build/SKILL.md +13 -10
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/.claude/skills/rite-clarify/SKILL.md +2 -2
- package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
- package/pack/.claude/skills/rite-define/SKILL.md +7 -3
- package/pack/.claude/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/.claude/skills/rite-plan/SKILL.md +11 -8
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/.claude/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/.claude/skills/rite-polish/SKILL.md +3 -3
- package/pack/.claude/skills/rite-prove/SKILL.md +24 -12
- package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/.claude/skills/rite-review/SKILL.md +11 -3
- package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/.claude/skills/rite-seal/SKILL.md +1 -1
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/.claude/skills/rite-ship/SKILL.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/.claude/skills/rite-spec/SKILL.md +8 -5
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/.claude/skills/rite-temper/SKILL.md +3 -3
- package/pack/.claude/skills/rite-vet/SKILL.md +19 -6
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +12 -5
- package/pack/generated/claude/agents/devrites-proof-runner.md +16 -9
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/generated/claude/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/generated/claude/skills/rite-build/SKILL.md +13 -10
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/claude/skills/rite-define/SKILL.md +7 -3
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/generated/claude/skills/rite-plan/SKILL.md +11 -8
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-prove/SKILL.md +24 -12
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +11 -3
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/claude/skills/rite-seal/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/generated/claude/skills/rite-ship/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/generated/claude/skills/rite-spec/SKILL.md +8 -5
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-vet/SKILL.md +19 -6
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +12 -5
- package/pack/generated/codex/agents/devrites-proof-runner.toml +16 -9
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/generated/codex/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/generated/codex/skills/rite-build/SKILL.md +13 -10
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +2 -2
- package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/codex/skills/rite-define/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/generated/codex/skills/rite-plan/SKILL.md +11 -8
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/generated/codex/skills/rite-polish/SKILL.md +3 -3
- package/pack/generated/codex/skills/rite-prove/SKILL.md +24 -12
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +11 -3
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/codex/skills/rite-seal/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/generated/codex/skills/rite-ship/SKILL.md +2 -2
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/generated/codex/skills/rite-spec/SKILL.md +8 -5
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +3 -3
- package/pack/generated/codex/skills/rite-vet/SKILL.md +19 -6
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +12 -5
- package/pack/generated/devin/agents/devrites-proof-runner.md +16 -9
- package/pack/generated/devin/skills/devrites-lib/SKILL.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/generated/devin/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/generated/devin/skills/rite-build/SKILL.md +13 -10
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +2 -2
- package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/devin/skills/rite-define/SKILL.md +7 -3
- package/pack/generated/devin/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/generated/devin/skills/rite-plan/SKILL.md +11 -8
- package/pack/generated/devin/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/generated/devin/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/generated/devin/skills/rite-polish/SKILL.md +3 -3
- package/pack/generated/devin/skills/rite-prove/SKILL.md +24 -12
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/devin/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/generated/devin/skills/rite-review/SKILL.md +11 -3
- package/pack/generated/devin/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/devin/skills/rite-seal/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/generated/devin/skills/rite-ship/SKILL.md +2 -2
- package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/generated/devin/skills/rite-spec/SKILL.md +8 -5
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/devin/skills/rite-temper/SKILL.md +3 -3
- package/pack/generated/devin/skills/rite-vet/SKILL.md +19 -6
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +12 -5
- package/pack/generated/dsh/agents/devrites-proof-runner.md +16 -9
- package/pack/generated/dsh/runtime/cordis.patch.yml +1 -1
- package/pack/generated/dsh/skills/devrites-lib/SKILL.md +2 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/generated/dsh/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/generated/dsh/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/generated/dsh/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/generated/dsh/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/generated/dsh/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/generated/dsh/skills/rite-build/SKILL.md +13 -10
- package/pack/generated/dsh/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/dsh/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/dsh/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/generated/dsh/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/generated/dsh/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/generated/dsh/skills/rite-clarify/SKILL.md +2 -2
- package/pack/generated/dsh/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/dsh/skills/rite-define/SKILL.md +7 -3
- package/pack/generated/dsh/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/generated/dsh/skills/rite-plan/SKILL.md +11 -8
- package/pack/generated/dsh/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/generated/dsh/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/generated/dsh/skills/rite-polish/SKILL.md +3 -3
- package/pack/generated/dsh/skills/rite-prove/SKILL.md +24 -12
- package/pack/generated/dsh/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/dsh/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/generated/dsh/skills/rite-review/SKILL.md +11 -3
- package/pack/generated/dsh/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/dsh/skills/rite-seal/SKILL.md +1 -1
- package/pack/generated/dsh/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/generated/dsh/skills/rite-ship/SKILL.md +2 -2
- package/pack/generated/dsh/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/generated/dsh/skills/rite-spec/SKILL.md +8 -5
- package/pack/generated/dsh/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/dsh/skills/rite-temper/SKILL.md +3 -3
- package/pack/generated/dsh/skills/rite-vet/SKILL.md +19 -6
- package/pack/generated/dsh/skills/rite-vet/reference/review-axes.md +12 -5
- package/pack/generated/omp/agents/devrites-proof-runner.md +16 -9
- package/pack/generated/omp/commands/rite-build.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/SKILL.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/generated/omp/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/generated/omp/skills/rite-build/SKILL.md +13 -10
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/generated/omp/skills/rite-clarify/SKILL.md +2 -2
- package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/omp/skills/rite-define/SKILL.md +7 -3
- package/pack/generated/omp/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/generated/omp/skills/rite-plan/SKILL.md +11 -8
- package/pack/generated/omp/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/generated/omp/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/generated/omp/skills/rite-polish/SKILL.md +3 -3
- package/pack/generated/omp/skills/rite-prove/SKILL.md +24 -12
- package/pack/generated/omp/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/omp/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/generated/omp/skills/rite-review/SKILL.md +11 -3
- package/pack/generated/omp/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/omp/skills/rite-seal/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/generated/omp/skills/rite-ship/SKILL.md +2 -2
- package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/generated/omp/skills/rite-spec/SKILL.md +8 -5
- package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/omp/skills/rite-temper/SKILL.md +3 -3
- package/pack/generated/omp/skills/rite-vet/SKILL.md +19 -6
- package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +12 -5
- package/pack/generated/pi/agents/devrites-proof-runner.md +16 -9
- package/pack/generated/pi/prompts/rite-build.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/SKILL.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/candidate-integrity.md +7 -3
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +3 -0
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-workspaces.md +236 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +9 -12
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +18 -9
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +10 -0
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +12 -10
- package/pack/generated/pi/skills/rite-autocomplete/reference/lookahead.md +4 -4
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +20 -9
- package/pack/generated/pi/skills/rite-build/SKILL.md +13 -10
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +57 -36
- package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +8 -5
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +7 -7
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +2 -2
- package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/pi/skills/rite-define/SKILL.md +7 -3
- package/pack/generated/pi/skills/rite-define/reference/plan-template.md +4 -2
- package/pack/generated/pi/skills/rite-plan/SKILL.md +11 -8
- package/pack/generated/pi/skills/rite-plan/reference/dependency-graph.md +9 -2
- package/pack/generated/pi/skills/rite-plan/reference/slicing.md +2 -0
- package/pack/generated/pi/skills/rite-polish/SKILL.md +3 -3
- package/pack/generated/pi/skills/rite-prove/SKILL.md +24 -12
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/pi/skills/rite-resolve/reference/answer-protocol.md +2 -0
- package/pack/generated/pi/skills/rite-review/SKILL.md +11 -3
- package/pack/generated/pi/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/pi/skills/rite-seal/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +1 -1
- package/pack/generated/pi/skills/rite-ship/SKILL.md +2 -2
- package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +2 -2
- package/pack/generated/pi/skills/rite-spec/SKILL.md +8 -5
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +5 -0
- package/pack/generated/pi/skills/rite-temper/SKILL.md +3 -3
- package/pack/generated/pi/skills/rite-vet/SKILL.md +19 -6
- package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +12 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,48 @@
|
|
|
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
|
+
## [7.3.1](https://github.com/ViktorsBaikers/DevRites/compare/v7.3.0...v7.3.1) (2026-11-01)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
* **devrites:** keep workspace frontier active across phase waits ([#204](https://github.com/ViktorsBaikers/DevRites/issues/204)) ([56006f4](https://github.com/ViktorsBaikers/DevRites/commit/56006f4ca0545b4ede1ed81b0373e61b7cd7ce7d))
|
|
10
|
+
|
|
11
|
+
## [7.3.0](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.8...v7.3.0) (2026-11-01)
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
* **devrites:** improve parallel throughput and proof integrity ([#203](https://github.com/ViktorsBaikers/DevRites/issues/203)) ([ac9c404](https://github.com/ViktorsBaikers/DevRites/commit/ac9c404908f3b709bfb76205aae0574e89bfcfe3))
|
|
16
|
+
|
|
17
|
+
## Unreleased
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- Pool independent, currently vetted continuation slices under one repository-wide
|
|
22
|
+
parallel controller, with rolling landings and refills across workspace sources.
|
|
23
|
+
- Prune clean integrated worker checkouts without discarding transfer branches,
|
|
24
|
+
proof identities, retained lease rows, or running siblings.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- Recover exact recorded parallel landings after interrupted lease persistence;
|
|
29
|
+
preserve late worker edits, ignored data, extra commits, and missing-checkout
|
|
30
|
+
Git metadata during cleanup.
|
|
31
|
+
- Exclude explicitly deferred slices from runnable work; stop inventing integration
|
|
32
|
+
suites from language manifests alone.
|
|
33
|
+
- Verify cached context bytes and frozen review diffs, publish complete artifacts
|
|
34
|
+
atomically, and isolate concurrent freeze/render attempts.
|
|
35
|
+
- Recover missing executed gate transcripts without rerunning valid scoped proof;
|
|
36
|
+
redact sensitive transcript metadata as well as command output.
|
|
37
|
+
- Keep timed-out tests failed even when graceful termination exits successfully.
|
|
38
|
+
- Support drive-qualified Windows paths in reviewer diff bindings.
|
|
39
|
+
- Audit underfilled parallel frontiers through acceptance-preserving Plan/Vet;
|
|
40
|
+
separate independently provable capabilities without dropping producer, proof
|
|
41
|
+
or authority gates.
|
|
42
|
+
- Recompute archived predecessor readiness in place without restoring historical
|
|
43
|
+
workspaces or reviving their controller leases.
|
|
44
|
+
- Execute Autocomplete's global frontier at cold Prove/Vet/Review and native wait
|
|
45
|
+
boundaries; preserve frozen candidates, standalone scope, and non-green gates.
|
|
46
|
+
|
|
5
47
|
## [7.2.8](https://github.com/ViktorsBaikers/DevRites/compare/v7.2.7...v7.2.8) (2026-10-31)
|
|
6
48
|
|
|
7
49
|
### Fixed
|
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:** [`v7.
|
|
34
|
+
**Status:** [`v7.3.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.3.1): 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
|
|
|
@@ -116,6 +116,16 @@ Candidate and Seal. A mismatch stops; it is never reinterpreted as equivalent.
|
|
|
116
116
|
Fresh literal `GO` and native host approval remain required for each disclosed
|
|
117
117
|
Git attempt.
|
|
118
118
|
|
|
119
|
+
## Concurrent workspaces
|
|
120
|
+
|
|
121
|
+
Mixed-workspace execution shares a controller, not a candidate or proof ledger.
|
|
122
|
+
Every landing uses `WIP(<source>):` and updates only that source's manifest and
|
|
123
|
+
evidence. Interleaved child checkpoints do not authorize parent-only Ship to
|
|
124
|
+
absorb unfinished child work. The deferred release waits for participating
|
|
125
|
+
workspaces' final proof/Review/Seal, generates the recorded sequence's union
|
|
126
|
+
manifest, and checks exact staged bytes and scope under fresh literal `GO`.
|
|
127
|
+
Retained controller/source leases must be cleaned before archival.
|
|
128
|
+
|
|
119
129
|
## Older workspaces
|
|
120
130
|
|
|
121
131
|
Released v1/v2/v3 unfinished workspaces use read-only `/rite-upgrade`. A missing
|
package/docs/cli.md
CHANGED
|
@@ -304,7 +304,7 @@ selection exits `2`; a malformed/unsafe manifest or candidate mismatch prints
|
|
|
304
304
|
- Atomic state operations retain their documented operation-specific nonzero
|
|
305
305
|
results.
|
|
306
306
|
- `state close` exits `4` for usage or a missing workspace.
|
|
307
|
-
- `state close` exits `3` for a schema refusal.
|
|
307
|
+
- `state close` exits `3` for a schema refusal or a retained controller/source lease.
|
|
308
308
|
- `state close` exits `5` when an archive already exists.
|
|
309
309
|
- `state close` exits `1` for an invalid workspace, archive directory, or ACTIVE cursor.
|
|
310
310
|
|
|
@@ -313,6 +313,12 @@ selection exits `2`; a malformed/unsafe manifest or candidate mismatch prints
|
|
|
313
313
|
`DEVRITES_ROOT` selects a project root or `.devrites/` directory.
|
|
314
314
|
`DEVRITES_WORKSPACE` may select one explicit contained workspace. Mutating
|
|
315
315
|
commands refuse ambiguous, escaped, symlinked, or otherwise unsafe roots.
|
|
316
|
+
Explicit producer dependencies resolve safely within the selected `DEVRITES_ROOT`
|
|
317
|
+
without changing or redirecting the consumer's workspace override.
|
|
318
|
+
Global controller queries use explicit source slugs in a per-invocation environment
|
|
319
|
+
without a worker's `DEVRITES_WORKSPACE`; conflicting overrides fail closed rather
|
|
320
|
+
than redirecting another workspace's reads. Workspace parallelism keeps one
|
|
321
|
+
controller lease and global writer capacity; it does not broaden Ship approval.
|
|
316
322
|
|
|
317
323
|
Install, update application, and uninstall remain manifest-owned local
|
|
318
324
|
operations. Direct engine update, shell, and npm may acquire a release candidate;
|
package/docs/command-map.md
CHANGED
|
@@ -248,8 +248,11 @@ See [`flow.md`](flow.md) for the Mermaid diagrams. The text form is:
|
|
|
248
248
|
only the exact-plan Ship approval boundary and never authorizes Git.
|
|
249
249
|
```
|
|
250
250
|
|
|
251
|
-
- Every phase
|
|
252
|
-
the
|
|
251
|
+
- Every phase resolves its explicit source workspace before the ACTIVE default.
|
|
252
|
+
Autocomplete keeps ACTIVE on the ordered lifecycle owner while preparing or
|
|
253
|
+
building authorized independent future slices through one global controller.
|
|
254
|
+
Existing `--parallel N` spans those workspaces; no second feature flag is needed.
|
|
255
|
+
See [cross-workspace admission](../pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md).
|
|
253
256
|
- **Spec Drift Guard** lives in build/prove/polish/review/seal: on drift, stop,
|
|
254
257
|
record in `drift.md`, and classify. Objective implementation and tool defects
|
|
255
258
|
use bounded recovery; a wrong durable plan uses `/rite-plan repair`; only a
|
package/docs/engine/commands.md
CHANGED
|
@@ -17,8 +17,8 @@ workflow strategy.
|
|
|
17
17
|
| `check preconditions <slug> [--slice SLICE-###] [--timeout N]` | Run the `test-plan.md` Build-entry preflight rows whose optional `Run at` cell is `vet` (with `--slice`, `pre-dispatch <SLICE>`); `action` rows and rows without the cell never run. Writes one candidate-bound transcript per row under `references/gates/preflight-*/`; a row passes on exit 0. A `pre-dispatch` row whose newest transcript passed is kept, not re-run: it is a pre-edit baseline, so a re-dispatch never runs it against the slice's own edits; changing its command or cwd retires the pass. Exit `3` on any failure or an invalid `Run at` value. |
|
|
18
18
|
| `check seal <slug>` | Check files required by target Phase `seal`, open human gates, the `tasks.md` slice graph, canonical `AC-###` presence when `tasks.md`/`test-plan.md` are required, the stable Build-input binding, and exact candidate bindings. `check readiness` and `check seal` also block a `scripts/` test driver that a tasks.md Writer allowlist plans or touched-files.md lists when no gates.md `CHECK` runs it and no `Driver waiver: <path> — DEC-### <reason>` line cites a recorded decision; waived drivers print as `note: unexecuted driver (waived by DEC-###): <path>` lines, on pass or block. |
|
|
19
19
|
| `check path-disjoint [--root <dir>] [<json-file> | -]` | Verify slice path sets are pairwise disjoint. |
|
|
20
|
-
| `parallel select --cap <1-10> [--root <dir>] [--slug <
|
|
21
|
-
| `parallel <create\|add\|integrate\|cleanup\|status\|abort\|lease-read\|lease-write\|lease-clear\|record-green>` |
|
|
20
|
+
| `parallel select --cap <1-10> [--root <dir>] [--slug <controller>] [--from-plan [--workspaces <slug,...>] \| <json-file> \| -]` | Choose a plan-order path-disjoint ready subset, seeded by all retained repository-controller slots and paths. `--from-plan` uses canonical built checkpoints, local and declared workspace producer dependencies, exact write sets and required dependency manifests. The internal `--workspaces` data-source parameter pools recorded forward continuations with current readiness and explicit native-vetted per-slice declarations; blocked/stale/missing candidates print scoped notices without hiding other ready work. Foreign identities print `<workspace>/<slice>`. |
|
|
21
|
+
| `parallel <create\|add\|integrate\|prune\|cleanup\|status\|abort\|lease-read\|lease-write\|lease-clear\|record-green>` | One repository controller owns isolated workers across source workspaces. `create` accepts a single initial worker; `create`/`add --cap N` persist the global admission capacity. Explicit `add --cap N --json -` with stdin `[]` updates capacity only; lowering below active count refuses without canceling workers. A completed retained lease can refill at unchanged control tip. `record-green` and per-slice `integrate --slice <workspace/id> --apply-to-control` target source-qualified lanes (bare IDs mean controller lanes); integration keeps exact ancestry/path/dirty-work checks and lands `WIP(<source>):`. `prune` removes only verified clean integrated checkouts, retaining branches, proof identities, lease rows and controller. Status exposes the retained controller and pending landing; cleanup preserves salvage/unknown work. |
|
|
22
22
|
| `check task-graph <slug>` | Validate `tasks.md` slice dependency graph for cycles, unknown deps, malformed tokens, duplicate IDs, missing `Dependencies`, and `depends_on` mismatch. Prints a non-blocking `ADVISORY size:` line (and records a `size-advisory` metric) for each slice with 12+ Writer allowlist files and no `Size rationale:`. A `Dependencies` ID may carry a `(via <interface>)` suffix (empty or unclosed is a malformed token); prints a non-blocking `ADVISORY edge:` line (and records an `edge-advisory` metric) for each edge with no via, or whose via text is not a case-insensitive substring of the dependency's `Consumes / Produces:`. Prints `schedule: <n> slices in <r> build rounds at cap 10` (the `/rite-build` batch selection replayed over each slice's Writer allowlist, else Files likely touched, plus the manifest parallel select reserves; omitted when a slice has no path) and a non-blocking `ADVISORY hub:` line (top five; records a `hub-advisory` metric) for each path, compared case-folded, that three or more slices without `Serial rationale:` write. Advisories print only when the graph is valid. |
|
|
23
23
|
| `check regression <slug> [--update]` | Compare the workspace's structural progress facts (phase ordinal, checked ACs, met/abandoned gates, done slices, resolved questions, present artifacts) against the recorded `regression-baseline.json` high-water mark; `--update` ratchets the baseline forward under the feature lock and prints each blessed regression. |
|
|
24
24
|
| `check continuation [slug]` | Print whether an armed AFK run must invoke its cursor instead of replying. `continuation: required` plus `invoke: <next_action>` when `.devrites/AFK` is a regular file, `status` is `running`, `question_id` is empty, no blocking or escalating question is open, and `next_action` is an internal phase command (`/rite-spec` through `/rite-seal`, including `/rite-plan`, not `/rite-ship` or `/rite-autocomplete`). Otherwise `continuation: clear` with a one-line `reason`. Exit `0` either way. `handoff` prints the same lines. |
|
|
@@ -45,7 +45,7 @@ workflow strategy.
|
|
|
45
45
|
| `metrics summary [slug] [--by-slice]` | Reduce `metrics.jsonl` into a per-phase roll-up. `--by-slice` reads `dispatch.json` instead: per slice, build wright rounds, slice-bound Vet rechecks, and agent-minutes (role start to `returned_at`; abandoned waves excluded). When the ledger has `resume` events it adds `resumes count=N minutes_to_dispatch=...` (each resume timed to the next `dispatch` event; `none` when another resume came first, `open` when none followed). |
|
|
46
46
|
| `claim <add\|release\|list\|check>` | Advisory session-scoped file claims in `.devrites/claims.jsonl` (append-only). `add` records intent to write a path set with a TTL (1–240 min, default 30); a live claim by another session exits `3` and names the holder. `release` appends a release event owned by the claiming session. `list` shows every unreleased claim (live, expired, dead) plus one `N released (use --all)` count; `--all` includes released rows; a claim whose holding session has provably exited on this host shows `dead` and no longer conflicts. `check` is the read-only preflight for a path set. Coordination aid only — never a substitute for one-writer-per-worktree. |
|
|
47
47
|
| `note <add\|list\|check\|rm> <slug> ...` | Anchored workspace notes in `notes.md`: `add <slug> <subject> <quote> <title> [body]` binds a note to a verbatim quote in one repository file and assigns `NOTE-###`; `list` and `check` regrade each anchor `exact`/`moved`/`stale`/`ambiguous`/`lost` by searching the repo for the quote (dependency and workspace trees excluded); `check --repair` rewrites a `moved` subject to its new file; `rm` deletes by ID. `check seal` refuses a malformed `notes.md` and any non-`exact` anchor. |
|
|
48
|
-
| `gates <scaffold\|status\|run\|reverify\|lint\|precheck\|attest\|abandon> <slug>` | Operate the `gates.md` acceptance ledger: seed per-AC gates, execute runnable gates bound to `test-plan.md` preflight rows, attest manual gates, and reduce to `all-met`/`not-met`/`handoff`/`malformed`. A gate with `INPUTS:` records its files' content digest and is reused by `run` and `reverify` while they are unchanged. `run`/`reverify --transcripts`
|
|
48
|
+
| `gates <scaffold\|status\|run\|reverify\|lint\|precheck\|attest\|abandon> <slug>` | Operate the `gates.md` acceptance ledger: seed per-AC gates, execute runnable gates bound to `test-plan.md` preflight rows, attest manual gates, and reduce to `all-met`/`not-met`/`handoff`/`malformed`. A gate with `INPUTS:` records its files' content digest and is reused by `run` and `reverify` while they are unchanged. `run`/`reverify --transcripts` atomically publishes a private redacted v2 executed transcript, or returns its verified originating record unchanged, under `references/gates/<gate-id>/`; legacy v1/reuse-only logs cannot authorize reuse. `precheck <slug> --worktree <path> [--slice <SLICE-ID>]` runs every `RUN: writer` gate and `check windows` against the wright's worktree (with `--slice`, it prints `SKIP <gate-id>` for a gate whose id only other unbuilt slices name in `tasks.md`, since gate ids reuse `AC-###` ids; a gate no slice names still runs), prints PASS/FAIL per gate id, exits `3` on any FAIL or on a malformed ledger, and writes no ledger, EVIDENCE line or transcript (`check windows` still appends its metric event); its output is never evidence. |
|
|
49
49
|
| `state resolve <qid> "<answer>"` | Resolve an open question and update `questions.md` plus `state.md` atomically. |
|
|
50
50
|
| `state merge-manifest <slug> [pred...]` | Fold the recorded predecessor chain's manifests into the release candidate manifest. |
|
|
51
51
|
| `state set <slug> <key>=<value>... [--unset <key>]...` | Write `state.md` cursor fields all-or-nothing under the feature lock. Refuses an unknown `phase`, the engine-owned `schema` row, a pipe or line break in a value, and an overwrite of a saved `return_phase`/`return_next_action`. Setting `status=awaiting_human` under `.devrites/AFK` prints each open question the sentinel's `allow_gates` auto-picks. |
|
|
@@ -54,7 +54,7 @@ workflow strategy.
|
|
|
54
54
|
| `migrate <slug> [--dry-run] [--answer id=choice]` | Normalize a pre-v5 workspace to the current schema; fail-closed, one-shot. |
|
|
55
55
|
| `secret-scan [--staged] [--stdin] [slug]` | Scan exact staged blobs, stdin, or touched regular files for credential material. |
|
|
56
56
|
| `open-visual <path-or-name> [--slug <slug>] [--no-open]` | Resolve a local visual HTML file, optionally open it in the OS browser, warn if the sibling outline is missing or inventory ids are absent from HTML, and print agent path tips. No network. |
|
|
57
|
-
| `detect commands [--root <dir>] [--json]` | Resolve the repository's own test/lint/vet/build commands: explicit Makefile targets first, then `package.json` scripts, then language-manifest fallbacks, plus the lockfile-derived package manager. Read-only, no installs, no execution. |
|
|
57
|
+
| `detect commands [--root <dir>] [--json]` | Resolve the repository's own test/lint/vet/build commands: explicit Makefile targets first, then `package.json` scripts, then language-manifest fallbacks, plus the lockfile-derived package manager. Integration stays unresolved without an explicit repository target or script; a language manifest does not prove a separate integration suite. Read-only, no installs, no execution. |
|
|
58
58
|
| `overhaul <records\|admit\|snapshot\|score\|bench\|render> ...` | Deterministic tools behind the standalone `/overhaul` skill: run-record generations and cross-record validation, worker-receipt admission and quote anchoring, index-safe baseline snapshots and per-attempt deltas, exact-rational readiness scoring, benchmark ratio intervals, and escaped offline review/report views. Operates only on explicit run-area and repository paths. See [Overhaul tools](#overhaul-tools). |
|
|
59
59
|
| `version` | Print the engine version. |
|
|
60
60
|
|
|
@@ -82,11 +82,41 @@ command namespace.
|
|
|
82
82
|
Awaiting-human section. Resolving another question leaves the live wait intact.
|
|
83
83
|
- `state close` reads the physical `ACTIVE` pointer under the feature lock;
|
|
84
84
|
`DEVRITES_WORKSPACE` cannot make it clear another feature's pointer.
|
|
85
|
+
- Read-only readiness bindings and input introspection resolve explicit sources
|
|
86
|
+
live first, then safely archived bytes only when the live workspace is absent.
|
|
87
|
+
`check readiness --emit-binding <slug>` recomputes archived inputs in place;
|
|
88
|
+
cached binding records do not establish freshness. Active workspace commands
|
|
89
|
+
remain live-only. Never restore an archive merely to hash it: copied historical
|
|
90
|
+
leases can become live controllers.
|
|
85
91
|
- `gates run` and `reverify` snapshot every declared `INPUTS` dependency around
|
|
86
92
|
the actual shared CHECK execution, recheck during locked writeback, and
|
|
87
93
|
invalidate earlier passes if later checks move their inputs.
|
|
88
94
|
Missing or changed inputs cannot certify a pass. Execution, discarded-result,
|
|
89
95
|
or evidence-write failures exit `3`, even if an older ledger still reads met.
|
|
96
|
+
- Parallel integration records exact landing intent before control FF. A matching
|
|
97
|
+
retry reconciles that landing once; external HEAD/ref movement still blocks.
|
|
98
|
+
Pending intent cannot be replaced or cleared through raw lease commands.
|
|
99
|
+
`prune` and normal/forced cleanup preserve late edits, ignored/untracked data,
|
|
100
|
+
unexpected worker tips and unknown checkouts rather than forcing their removal.
|
|
101
|
+
Missing registered checkouts retain their Git index and metadata; completed
|
|
102
|
+
cleanup releases the lease and reports recovery rather than discarding them.
|
|
103
|
+
- Context cache reuse verifies the actual regular bundle bytes and private mode,
|
|
104
|
+
not the digest sidecar alone. Workspace sources are bounded and acquired once
|
|
105
|
+
per invocation; unsafe reads fail instead of becoming omitted guidance.
|
|
106
|
+
Managed output stays confined; explicit external `--out` remains supported.
|
|
107
|
+
Windows cannot prove POSIX owner-only mode through Go's `FileMode`; repeat
|
|
108
|
+
context requests rebuild instead of falsely certifying a private cache hit.
|
|
109
|
+
- Frozen diff bytes must match their recorded SHA-256 at packet and dispatch
|
|
110
|
+
validation. Manually authored final reviewer packets may still name `.diff`
|
|
111
|
+
or `.patch` files, but must include `diff <64hex> <path>` binding rows.
|
|
112
|
+
Binding paths use `/` on every host, including drive-qualified Windows paths.
|
|
113
|
+
Same-wave freeze publication is serialized; each renderer owns its lint draft.
|
|
114
|
+
- `gates run`/`reverify --transcripts` reuse only a complete passing executed
|
|
115
|
+
origin matching the gate definition, recorded output identity and declared
|
|
116
|
+
inputs. Missing origin reruns only affected approved checks; missing approval
|
|
117
|
+
blocks instead of borrowing an old checkbox. Valid redacted/truncated origins
|
|
118
|
+
remain reusable, with their historical candidate identity. Transcript metadata
|
|
119
|
+
and output are redacted; publication is atomic and private.
|
|
90
120
|
|
|
91
121
|
## Check boundary
|
|
92
122
|
|
package/docs/orchestration.md
CHANGED
|
@@ -141,19 +141,32 @@ base before native transfer, then re-proves the reconciled candidate. Missing tr
|
|
|
141
141
|
conflict, extra paths, moved base, or cleanup failure stops with worktree evidence
|
|
142
142
|
preserved. No ad hoc copy/cherry-pick/merge occurs from the read-only root.
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
and
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
144
|
+
Parallel writers use the `/rite-build` worktree lifecycle: independently vetted
|
|
145
|
+
contracts, disjoint declared/hidden write surfaces, one retained controller lease,
|
|
146
|
+
and per-sibling review/proof before serialized integration. `--parallel N` on
|
|
147
|
+
Autocomplete is one global active-writer cap across authorized sequence workspaces;
|
|
148
|
+
without the flag it uses AFK `max_parallel`, retained lease capacity on resume,
|
|
149
|
+
else 10. No additional user flag is needed. Standalone Build remains scoped to
|
|
150
|
+
its requested workspace.
|
|
151
|
+
|
|
152
|
+
While a writer runs, Autocomplete prepares or re-Vets recorded continuations and
|
|
153
|
+
refills from the whole eligible pool. A future slice needs an explicit, current
|
|
154
|
+
Plan/Vet `Workspace dependencies` declaration; absent or stale declarations never
|
|
155
|
+
become independence merely because files differ. Only durable integrated producer
|
|
156
|
+
checkpoints release dependent work. Human/access/safety gates retain their scope.
|
|
157
|
+
|
|
158
|
+
Each worker keeps its source workspace identity, isolated cwd, candidate, proof,
|
|
159
|
+
state and `WIP(<source>):` checkpoint. Even a lone initial writer is isolated when
|
|
160
|
+
using a parallel-capable controller, so later work can refill without creating
|
|
161
|
+
same-tree co-writers. Explicit `--parallel 1` remains one writer total. Unsupported
|
|
162
|
+
host isolation falls back truthfully to serial execution.
|
|
163
|
+
|
|
164
|
+
The controller drains and cleans its lease before non-lease product corrections,
|
|
165
|
+
shared Polish writes or checkpoints; unrelated control commits are never blessed
|
|
166
|
+
as a new expected tip. Final per-workspace proof/Seal and exact release-union Ship
|
|
167
|
+
approval remain mandatory. See the
|
|
168
|
+
[controller workflow](../pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md)
|
|
169
|
+
and [worktree lifecycle](../pack/.claude/skills/rite-build/reference/parallel-batch.md).
|
|
157
170
|
|
|
158
171
|
## Engine boundary
|
|
159
172
|
|
package/docs/skills.md
CHANGED
|
@@ -194,6 +194,11 @@ and `Shipped`. Utility commands keep the same compact labels and one-next-action
|
|
|
194
194
|
| [`devrites-api-interface`](../pack/.claude/skills/devrites-api-interface/SKILL.md) | Design stable API / interface contracts: REST/GraphQL, module boundaries, type contracts, FE/BE split. | A slice crosses a boundary or defines a public interface. |
|
|
195
195
|
| [`devrites-debug-recovery`](../pack/.claude/skills/devrites-debug-recovery/SKILL.md) | Reproduce → ranked hypotheses → instrument → fix in scope → regression-test. Caller and recovery count at most three failures per causal fingerprint from context and Dead ends/evidence. | Tests, builds, or runtime checks fail. |
|
|
196
196
|
|
|
197
|
+
Under Autocomplete, existing parallel capacity spans authorized sequence
|
|
198
|
+
workspaces. It overlaps future planning/re-Vet with isolated, independently
|
|
199
|
+
admitted writers; standalone Build stays scoped. See the
|
|
200
|
+
[global controller](../pack/.claude/skills/devrites-lib/reference/parallel-workspaces.md).
|
|
201
|
+
|
|
197
202
|
### Prove: collect evidence, including browser evidence
|
|
198
203
|
|
|
199
204
|
| Skill | What It Does | Use When |
|
|
@@ -27,11 +27,13 @@ Subcommands:
|
|
|
27
27
|
scaffold <slug> Create gates.md from spec.md AC ids (only when absent)
|
|
28
28
|
status <slug> Reduce the ledger without executing; exit 3 unless ALL MET
|
|
29
29
|
run <slug> [--timeout N] [--transcripts]
|
|
30
|
-
Execute unmet
|
|
30
|
+
Execute unmet gates; reuse unchanged INPUTS evidence
|
|
31
31
|
reverify <slug> [--timeout N] [--transcripts]
|
|
32
|
-
Re-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
Re-run runnable gates except valid unchanged INPUTS proof
|
|
33
|
+
--transcripts requires current approval and complete
|
|
34
|
+
passing executed origins for reuse; recover missing
|
|
35
|
+
origins by executing only affected approved gates.
|
|
36
|
+
New private redacted records: references/gates/<gate-id>/
|
|
35
37
|
lint <slug> [--strict] Audit oracle quality without executing
|
|
36
38
|
precheck <slug> --worktree <path> [--slice <SLICE-ID>]
|
|
37
39
|
Run every RUN: writer gate, then check windows, in
|
|
@@ -263,12 +265,6 @@ func cmdRun(root string, args []string, reverify bool, stdout, stderr io.Writer)
|
|
|
263
265
|
fmt.Fprintf(stderr, "gates %s: %v\n", verb, err)
|
|
264
266
|
return ExitBlocked
|
|
265
267
|
}
|
|
266
|
-
before := ""
|
|
267
|
-
if transcripts {
|
|
268
|
-
before = candidateLabel(root, slug)
|
|
269
|
-
}
|
|
270
|
-
var ran []GateResult
|
|
271
|
-
var ranDoc *Document
|
|
272
268
|
attemptFailed := false
|
|
273
269
|
|
|
274
270
|
// The gates lock serializes check execution; the feature lock is held only
|
|
@@ -293,18 +289,33 @@ func cmdRun(root string, args []string, reverify bool, stdout, stderr io.Writer)
|
|
|
293
289
|
}
|
|
294
290
|
return nil
|
|
295
291
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
292
|
+
options := &RunOptions{WriteLock: featureLock}
|
|
293
|
+
before := ""
|
|
294
|
+
if transcripts {
|
|
295
|
+
options.TranscriptWork = work
|
|
296
|
+
before = candidateLabel(root, slug)
|
|
297
|
+
}
|
|
298
|
+
ran := RunGates(context.Background(), project, ledgerPath, doc, approved, reverify, timeout, options)
|
|
299
|
+
for i, result := range ran {
|
|
300
|
+
if result.Ran && !result.Passed || result.Discarded || result.WriteErr != nil || transcripts && doc.Gates[i].Check != "" && !result.Passed {
|
|
299
301
|
attemptFailed = true
|
|
300
302
|
}
|
|
301
303
|
switch {
|
|
302
304
|
case !result.Ran:
|
|
303
|
-
fmt.Fprintf(stdout, "gate %s: skipped (%s)\n", result.ID, result.Detail)
|
|
305
|
+
fmt.Fprintf(stdout, "gate %s: skipped (%s)\n", transcriptMetadata(result.ID), transcriptMetadata(result.Detail))
|
|
304
306
|
case result.Passed && !result.Discarded && result.WriteErr == nil:
|
|
305
|
-
fmt.Fprintf(stdout, "gate %s: pass\n", result.ID)
|
|
307
|
+
fmt.Fprintf(stdout, "gate %s: pass\n", transcriptMetadata(result.ID))
|
|
306
308
|
default:
|
|
307
|
-
fmt.Fprintf(stdout, "gate %s: fail (%s)\n", result.ID, result.Detail)
|
|
309
|
+
fmt.Fprintf(stdout, "gate %s: fail (%s)\n", transcriptMetadata(result.ID), transcriptMetadata(result.Detail))
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if transcripts {
|
|
313
|
+
paths, err := writeTranscripts(work, doc, ran, before, candidateLabel(root, slug))
|
|
314
|
+
for _, path := range paths {
|
|
315
|
+
fmt.Fprintf(stdout, "transcript: %s\n", path)
|
|
316
|
+
}
|
|
317
|
+
if err != nil {
|
|
318
|
+
return fmt.Errorf("transcript: %w", err)
|
|
308
319
|
}
|
|
309
320
|
}
|
|
310
321
|
return nil
|
|
@@ -313,16 +324,6 @@ func cmdRun(root string, args []string, reverify bool, stdout, stderr io.Writer)
|
|
|
313
324
|
fmt.Fprintf(stderr, "gates %s: %v\n", verb, lockErr)
|
|
314
325
|
return ExitBlocked
|
|
315
326
|
}
|
|
316
|
-
if transcripts && ranDoc != nil {
|
|
317
|
-
paths, err := writeTranscripts(work, ranDoc, ran, before, candidateLabel(root, slug))
|
|
318
|
-
for _, path := range paths {
|
|
319
|
-
fmt.Fprintf(stdout, "transcript: %s\n", path)
|
|
320
|
-
}
|
|
321
|
-
if err != nil {
|
|
322
|
-
fmt.Fprintf(stderr, "gates %s: transcript: %v\n", verb, err)
|
|
323
|
-
return ExitBlocked
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
327
|
fmt.Fprintln(stdout, "---")
|
|
327
328
|
return reportStatus(slug, ledgerPath, testPlanPath, attemptFailed, stdout, stderr)
|
|
328
329
|
}
|
|
@@ -49,7 +49,7 @@ func PreflightRowsPassed(root, slug string, rows []PreflightRow) (bool, error) {
|
|
|
49
49
|
// candidate but the lookup does not compare it: Vet writes workspace artifacts
|
|
50
50
|
// after the run, and only a change to the row's command or cwd retires a pass.
|
|
51
51
|
func PreflightPassed(work string, row PreflightRow) bool {
|
|
52
|
-
dir := filepath.Join(work, "references", "gates",
|
|
52
|
+
dir := filepath.Join(work, "references", "gates", transcriptGateName(PreflightGateID(row)))
|
|
53
53
|
entries, err := os.ReadDir(dir)
|
|
54
54
|
if err != nil {
|
|
55
55
|
return false
|
|
@@ -30,8 +30,9 @@ type GateResult struct {
|
|
|
30
30
|
Detail string // exit/match/timeout/approval diagnostic
|
|
31
31
|
Discarded bool // result dropped: bound oracle or inputs changed during the run
|
|
32
32
|
WriteErr error // evidence writeback failed for a reason other than drift
|
|
33
|
-
Reused bool // met gate kept
|
|
33
|
+
Reused bool // met gate kept under the selected reuse policy
|
|
34
34
|
Inputs string // INPUTS content digest at run time, when declared
|
|
35
|
+
Origin string // complete executed transcript retained when proof is reused
|
|
35
36
|
// Outcome, Started and Ended describe the execution this result judged;
|
|
36
37
|
// they are zero when the gate did not execute.
|
|
37
38
|
Outcome RunOutcome
|
|
@@ -63,19 +64,33 @@ func ReadLedgerFile(ledgerPath string) (string, error) {
|
|
|
63
64
|
return string(raw), nil
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
//
|
|
67
|
+
// RunOptions controls evidence reuse and short ledger writeback locking.
|
|
68
|
+
// TranscriptWork requires a usable executed origin before a met gate can skip.
|
|
69
|
+
// The caller holds the gates execution lock through transcript publication.
|
|
70
|
+
type RunOptions struct {
|
|
71
|
+
WriteLock func(func() error) error
|
|
72
|
+
TranscriptWork string
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// RunGates executes the runnable gates of ledgerPath. reverify also runs met
|
|
76
|
+
// gates without INPUTS; met gates with unchanged INPUTS reuse their proof in
|
|
77
|
+
// either mode, subject to options.TranscriptWork's executed-origin requirement.
|
|
78
|
+
// approved is the vetted command set from test-plan.md; a
|
|
69
79
|
// CHECK outside it never executes, and neither does one outside a surface that
|
|
70
80
|
// could not be determined — an absent preflight is a refusal, not permission.
|
|
71
81
|
// Each pass writes definition-bound evidence; each failure clears the box and
|
|
72
82
|
// restores EVIDENCE: pending.
|
|
73
83
|
//
|
|
74
84
|
// Gates sharing one CHECK and CWD execute once per call; each matches its own
|
|
75
|
-
// EXPECT against that shared output.
|
|
85
|
+
// EXPECT against that shared output. options.WriteLock, when non-nil, wraps every
|
|
76
86
|
// ledger writeback so the caller need not hold the feature lock while checks
|
|
77
87
|
// execute; writeResult re-verifies the gate's oracle before it writes.
|
|
78
|
-
func RunGates(ctx context.Context, root, ledgerPath string, doc *Document, approved []ApprovedCommand, reverify bool, timeout time.Duration,
|
|
88
|
+
func RunGates(ctx context.Context, root, ledgerPath string, doc *Document, approved []ApprovedCommand, reverify bool, timeout time.Duration, options *RunOptions) []GateResult {
|
|
89
|
+
var writeLock func(func() error) error
|
|
90
|
+
transcriptWork := ""
|
|
91
|
+
if options != nil {
|
|
92
|
+
writeLock, transcriptWork = options.WriteLock, options.TranscriptWork
|
|
93
|
+
}
|
|
79
94
|
var results []GateResult
|
|
80
95
|
executions := map[string]struct {
|
|
81
96
|
ran bool
|
|
@@ -105,24 +120,35 @@ func RunGates(ctx context.Context, root, ledgerPath string, doc *Document, appro
|
|
|
105
120
|
results = append(results, GateResult{ID: gate.ID, Detail: "manual gate; evidence is judged, not executed"})
|
|
106
121
|
continue
|
|
107
122
|
}
|
|
123
|
+
isApproved := Approved(gate.Check, gate.Cwd, approved)
|
|
124
|
+
if transcriptWork != "" && !isApproved {
|
|
125
|
+
results = append(results, GateResult{ID: gate.ID, Detail: "CHECK/CWD is not an approved test-plan.md preflight row; not executed"})
|
|
126
|
+
continue
|
|
127
|
+
}
|
|
108
128
|
inputs := ""
|
|
109
129
|
if GateState(gate, doc) == StateMet {
|
|
110
|
-
|
|
111
|
-
results = append(results, GateResult{ID: gate.ID, Passed: true, Detail: "already met"})
|
|
112
|
-
continue
|
|
113
|
-
}
|
|
130
|
+
canReuse := gate.Inputs == "" && !reverify
|
|
114
131
|
if gate.Inputs != "" {
|
|
115
132
|
// An unreadable or unmatched spec never matches recorded evidence.
|
|
116
133
|
inputs, _ = InputsDigest(root, gate.Inputs)
|
|
134
|
+
canReuse = inputs != "" && inputs == recordedInputs(gate)
|
|
117
135
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
136
|
+
if canReuse {
|
|
137
|
+
origin := ""
|
|
138
|
+
if transcriptWork != "" {
|
|
139
|
+
origin = passingOrigin(transcriptWork, gate)
|
|
140
|
+
}
|
|
141
|
+
if transcriptWork == "" || origin != "" {
|
|
142
|
+
detail := "already met"
|
|
143
|
+
if gate.Inputs != "" {
|
|
144
|
+
detail = "reused: inputs unchanged"
|
|
145
|
+
}
|
|
146
|
+
results = append(results, GateResult{ID: gate.ID, Passed: true, Reused: gate.Inputs != "" || origin != "", Inputs: inputs, Origin: origin, Detail: detail})
|
|
147
|
+
continue
|
|
148
|
+
}
|
|
123
149
|
}
|
|
124
150
|
}
|
|
125
|
-
if !
|
|
151
|
+
if !isApproved {
|
|
126
152
|
results = append(results, GateResult{ID: gate.ID, Detail: "CHECK/CWD is not an approved test-plan.md preflight row; not executed"})
|
|
127
153
|
continue
|
|
128
154
|
}
|