devrites 6.9.6 → 7.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 +25 -0
- package/README.md +10 -5
- package/SECURITY.md +3 -3
- package/docs/adr/0038-engine-flags-unattributed-root-edits.md +67 -0
- package/docs/adr/README.md +2 -1
- package/docs/cli.md +19 -6
- package/docs/command-map.md +21 -19
- package/docs/engine/commands.md +22 -15
- package/docs/skills.md +1 -1
- package/docs/usage.md +3 -3
- package/engine/commands.go +8 -3
- package/engine/help.go +43 -16
- package/engine/internal/acceptance/approve.go +46 -7
- package/engine/internal/acceptance/cli.go +102 -0
- package/engine/internal/acceptance/exec.go +8 -6
- package/engine/internal/acceptance/ledger.go +16 -1
- package/engine/internal/acceptance/lint.go +9 -1
- package/engine/internal/acceptance/preconditions.go +201 -0
- package/engine/internal/anchor/anchor.go +76 -0
- package/engine/internal/gate/drivers.go +144 -0
- package/engine/internal/gate/gate.go +49 -13
- package/engine/internal/gate/preconditions.go +121 -0
- package/engine/internal/lib/anchors.go +270 -0
- package/engine/internal/lib/apply_bundle.go +2 -1
- package/engine/internal/lib/candidate.go +17 -8
- package/engine/internal/lib/claims.go +48 -33
- package/engine/internal/lib/context.go +337 -22
- package/engine/internal/lib/diffscope.go +201 -12
- package/engine/internal/lib/dispatch.go +393 -21
- package/engine/internal/lib/dispatch_contract.go +82 -2
- package/engine/internal/lib/dispatch_packet.go +224 -8
- package/engine/internal/lib/environment_report.go +2 -3
- package/engine/internal/lib/handoff.go +33 -3
- package/engine/internal/lib/metrics.go +119 -11
- package/engine/internal/lib/next.go +45 -5
- package/engine/internal/lib/observe_summary.go +2 -4
- package/engine/internal/lib/packet.go +319 -0
- package/engine/internal/lib/packet_freeze.go +227 -0
- package/engine/internal/lib/perturb.go +403 -0
- package/engine/internal/lib/questions_lint.go +99 -0
- package/engine/internal/lib/state_edit.go +396 -0
- package/engine/internal/lib/taskgraph.go +166 -0
- package/engine/internal/lib/treebaseline.go +331 -0
- package/engine/internal/lib/triggers.go +19 -0
- package/engine/internal/lib/windows.go +110 -5
- package/engine/internal/overhaul/admit/run.go +7 -30
- package/engine/internal/parallel/cli.go +27 -33
- package/engine/internal/parallel/git.go +10 -0
- package/engine/internal/parallel/select.go +36 -0
- package/engine/internal/state/budgets.go +60 -13
- package/engine/internal/state/observation.go +1 -1
- package/engine/main.go +61 -14
- package/pack/.claude/agents/devrites-code-reviewer.md +9 -5
- package/pack/.claude/agents/devrites-devex-reviewer.md +5 -4
- package/pack/.claude/agents/devrites-doubt-reviewer.md +4 -4
- package/pack/.claude/agents/devrites-evidence-scout.md +3 -2
- package/pack/.claude/agents/devrites-frontend-reviewer.md +5 -4
- package/pack/.claude/agents/devrites-performance-reviewer.md +5 -5
- package/pack/.claude/agents/devrites-plan-drafter.md +4 -2
- package/pack/.claude/agents/devrites-plan-reviewer.md +5 -5
- package/pack/.claude/agents/devrites-proof-runner.md +1 -1
- package/pack/.claude/agents/devrites-retrospector.md +1 -1
- package/pack/.claude/agents/devrites-security-auditor.md +4 -4
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +5 -4
- package/pack/.claude/agents/devrites-slice-wright.md +18 -9
- package/pack/.claude/agents/devrites-spec-reviewer.md +4 -4
- package/pack/.claude/agents/devrites-strategy-reviewer.md +5 -6
- package/pack/.claude/agents/devrites-test-analyst.md +7 -4
- package/pack/.claude/agents/devrites-upgrade-planner.md +1 -1
- package/pack/.claude/agents/fast-builder.md +4 -2
- package/pack/.claude/agents/fast-checker.md +3 -2
- package/pack/.claude/agents/fast-critic.md +3 -2
- package/pack/.claude/agents/fast-planner.md +3 -3
- package/pack/.claude/agents/overhaul-recon.md +5 -4
- package/pack/.claude/settings.json +19 -7
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +33 -13
- package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-doubt/SKILL.md +5 -5
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/.claude/skills/devrites-interview/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-lib/SKILL.md +11 -6
- package/pack/.claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +2 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +43 -19
- package/pack/.claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +14 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +10 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +4 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +3 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
- package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/.claude/skills/overhaul/references/orchestration.md +3 -2
- package/pack/.claude/skills/rite/SKILL.md +1 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +1 -1
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +5 -4
- package/pack/.claude/skills/rite-build/SKILL.md +4 -3
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +2 -0
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +2 -0
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/.claude/skills/rite-build/reference/output.md +2 -0
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +22 -12
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +13 -3
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +42 -25
- package/pack/.claude/skills/rite-clarify/SKILL.md +1 -1
- package/pack/.claude/skills/rite-converge/SKILL.md +4 -4
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
- package/pack/.claude/skills/rite-define/SKILL.md +10 -5
- package/pack/.claude/skills/rite-doctor/SKILL.md +17 -2
- package/pack/.claude/skills/rite-dogfood/SKILL.md +1 -1
- 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-handoff/SKILL.md +3 -3
- package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/.claude/skills/rite-harness/SKILL.md +2 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +4 -4
- package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -2
- package/pack/.claude/skills/rite-polish/SKILL.md +6 -3
- package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +1 -1
- package/pack/.claude/skills/rite-prove/SKILL.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/proof-ladder.md +16 -5
- package/pack/.claude/skills/rite-quick/SKILL.md +1 -1
- package/pack/.claude/skills/rite-resolve/SKILL.md +1 -1
- package/pack/.claude/skills/rite-review/SKILL.md +4 -4
- package/pack/.claude/skills/rite-seal/SKILL.md +2 -2
- package/pack/.claude/skills/rite-ship/SKILL.md +1 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +1 -1
- package/pack/.claude/skills/rite-spec/reference/investigation.md +5 -5
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +1 -1
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +6 -4
- package/pack/.claude/skills/rite-status/SKILL.md +1 -1
- package/pack/.claude/skills/rite-temper/SKILL.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +2 -2
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +2 -2
- package/pack/.claude/skills/rite-temper/reference/significance.md +2 -2
- package/pack/.claude/skills/rite-vet/SKILL.md +8 -4
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -3
- package/pack/.claude/skills/rite-vet/reference/depth.md +2 -2
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +2 -2
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +6 -6
- package/pack/generated/claude/agents/devrites-code-reviewer.md +9 -5
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +5 -4
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +4 -4
- package/pack/generated/claude/agents/devrites-evidence-scout.md +3 -2
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +5 -4
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +5 -5
- package/pack/generated/claude/agents/devrites-plan-drafter.md +4 -2
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +5 -5
- package/pack/generated/claude/agents/devrites-proof-runner.md +1 -1
- package/pack/generated/claude/agents/devrites-retrospector.md +1 -1
- package/pack/generated/claude/agents/devrites-security-auditor.md +4 -4
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +5 -4
- package/pack/generated/claude/agents/devrites-slice-wright.md +18 -9
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +4 -4
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +5 -6
- package/pack/generated/claude/agents/devrites-test-analyst.md +7 -4
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +1 -1
- package/pack/generated/claude/agents/fast-builder.md +4 -2
- package/pack/generated/claude/agents/fast-checker.md +3 -2
- package/pack/generated/claude/agents/fast-critic.md +3 -2
- package/pack/generated/claude/agents/fast-planner.md +3 -3
- package/pack/generated/claude/agents/overhaul-recon.md +5 -4
- package/pack/generated/claude/settings.json +19 -7
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +1 -1
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +1 -1
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +33 -13
- package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +5 -5
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +11 -6
- package/pack/generated/claude/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +2 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +43 -19
- package/pack/generated/claude/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +14 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +10 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +4 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +3 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +9 -8
- package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/generated/claude/skills/overhaul/references/orchestration.md +3 -2
- package/pack/generated/claude/skills/rite/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +1 -1
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +5 -4
- package/pack/generated/claude/skills/rite-build/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +2 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +4 -1
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +2 -0
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/output.md +2 -0
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +22 -12
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +13 -3
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +42 -25
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +3 -3
- package/pack/generated/claude/skills/rite-define/SKILL.md +10 -5
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +17 -2
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +1 -1
- 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-handoff/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/claude/skills/rite-harness/SKILL.md +2 -1
- package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -4
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -2
- package/pack/generated/claude/skills/rite-polish/SKILL.md +6 -3
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +1 -1
- package/pack/generated/claude/skills/rite-prove/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +16 -5
- package/pack/generated/claude/skills/rite-quick/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/claude/skills/rite-seal/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-ship/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +5 -5
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +1 -1
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +6 -4
- package/pack/generated/claude/skills/rite-status/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-temper/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +2 -2
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +2 -2
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +2 -2
- package/pack/generated/claude/skills/rite-vet/SKILL.md +8 -4
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -3
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +2 -2
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +6 -6
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +8 -4
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +4 -3
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +3 -3
- package/pack/generated/codex/agents/devrites-evidence-scout.toml +2 -1
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +4 -3
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +4 -4
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +3 -1
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +4 -4
- package/pack/generated/codex/agents/devrites-security-auditor.toml +3 -3
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +4 -3
- package/pack/generated/codex/agents/devrites-slice-wright.toml +17 -8
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +3 -3
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +4 -5
- package/pack/generated/codex/agents/devrites-test-analyst.toml +6 -3
- package/pack/generated/codex/agents/fast-builder.toml +3 -1
- package/pack/generated/codex/agents/fast-checker.toml +2 -1
- package/pack/generated/codex/agents/fast-critic.toml +2 -1
- package/pack/generated/codex/agents/fast-planner.toml +2 -2
- package/pack/generated/codex/agents/overhaul-recon.toml +5 -4
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +1 -1
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +1 -1
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +33 -13
- package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +5 -5
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +11 -6
- package/pack/generated/codex/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +2 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +43 -19
- package/pack/generated/codex/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +14 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +10 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +4 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +3 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +9 -8
- package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/generated/codex/skills/overhaul/references/orchestration.md +3 -2
- package/pack/generated/codex/skills/rite/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +1 -1
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +5 -4
- package/pack/generated/codex/skills/rite-build/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +2 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +4 -1
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +2 -0
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/output.md +2 -0
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +22 -12
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +13 -3
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +42 -25
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +3 -3
- package/pack/generated/codex/skills/rite-define/SKILL.md +10 -5
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +17 -2
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +1 -1
- 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-handoff/SKILL.md +3 -3
- package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/codex/skills/rite-harness/SKILL.md +2 -1
- package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -4
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -2
- package/pack/generated/codex/skills/rite-polish/SKILL.md +6 -3
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +1 -1
- package/pack/generated/codex/skills/rite-prove/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +16 -5
- package/pack/generated/codex/skills/rite-quick/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/codex/skills/rite-seal/SKILL.md +2 -2
- package/pack/generated/codex/skills/rite-ship/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +5 -5
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +1 -1
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +6 -4
- package/pack/generated/codex/skills/rite-status/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-temper/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +2 -2
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +2 -2
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +2 -2
- package/pack/generated/codex/skills/rite-vet/SKILL.md +8 -4
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -3
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +2 -2
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +6 -6
- package/pack/generated/devin/agents/devrites-code-reviewer.md +8 -4
- package/pack/generated/devin/agents/devrites-devex-reviewer.md +4 -3
- package/pack/generated/devin/agents/devrites-doubt-reviewer.md +3 -3
- package/pack/generated/devin/agents/devrites-evidence-scout.md +2 -1
- package/pack/generated/devin/agents/devrites-frontend-reviewer.md +4 -3
- package/pack/generated/devin/agents/devrites-performance-reviewer.md +4 -4
- package/pack/generated/devin/agents/devrites-plan-drafter.md +3 -1
- package/pack/generated/devin/agents/devrites-plan-reviewer.md +4 -4
- package/pack/generated/devin/agents/devrites-security-auditor.md +3 -3
- package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +4 -3
- package/pack/generated/devin/agents/devrites-slice-wright.md +17 -8
- package/pack/generated/devin/agents/devrites-spec-reviewer.md +3 -3
- package/pack/generated/devin/agents/devrites-strategy-reviewer.md +4 -5
- package/pack/generated/devin/agents/devrites-test-analyst.md +6 -3
- package/pack/generated/devin/agents/fast-builder.md +3 -1
- package/pack/generated/devin/agents/fast-checker.md +2 -1
- package/pack/generated/devin/agents/fast-critic.md +2 -1
- package/pack/generated/devin/agents/fast-planner.md +2 -2
- package/pack/generated/devin/agents/overhaul-recon.md +5 -4
- package/pack/generated/devin/skills/devrites-api-interface/SKILL.md +1 -1
- package/pack/generated/devin/skills/devrites-audit/SKILL.md +1 -1
- package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +33 -13
- package/pack/generated/devin/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
- package/pack/generated/devin/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/generated/devin/skills/devrites-doubt/SKILL.md +5 -5
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/generated/devin/skills/devrites-interview/SKILL.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/SKILL.md +11 -6
- package/pack/generated/devin/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
- package/pack/generated/devin/skills/devrites-lib/reference/standards/README.md +2 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +43 -19
- package/pack/generated/devin/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
- package/pack/generated/devin/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
- package/pack/generated/devin/skills/devrites-lib/reference/standards/core.md +14 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/deprecation.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +10 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/security.md +4 -0
- package/pack/generated/devin/skills/devrites-lib/reference/standards/testing.md +3 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/tooling.md +9 -8
- package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -2
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
- package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/generated/devin/skills/overhaul/references/orchestration.md +3 -2
- package/pack/generated/devin/skills/rite/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-adopt/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-adopt/reference/adoption.md +1 -1
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +5 -4
- package/pack/generated/devin/skills/rite-build/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +2 -0
- package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +4 -1
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +2 -0
- package/pack/generated/devin/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/output.md +2 -0
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +22 -12
- package/pack/generated/devin/skills/rite-build/reference/phase-contract.md +13 -3
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +42 -25
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/devin/skills/rite-converge/reference/convergence-assessment.md +3 -3
- package/pack/generated/devin/skills/rite-define/SKILL.md +10 -5
- package/pack/generated/devin/skills/rite-doctor/SKILL.md +17 -2
- package/pack/generated/devin/skills/rite-dogfood/SKILL.md +1 -1
- 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-handoff/SKILL.md +3 -3
- package/pack/generated/devin/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/devin/skills/rite-harness/SKILL.md +2 -1
- package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -4
- package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -2
- package/pack/generated/devin/skills/rite-polish/SKILL.md +6 -3
- package/pack/generated/devin/skills/rite-polish/reference/harden-checklist.md +1 -1
- package/pack/generated/devin/skills/rite-prove/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/generated/devin/skills/rite-prove/reference/proof-ladder.md +16 -5
- package/pack/generated/devin/skills/rite-quick/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/devin/skills/rite-seal/SKILL.md +2 -2
- package/pack/generated/devin/skills/rite-ship/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-spec/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-spec/reference/investigation.md +5 -5
- package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +1 -1
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +6 -4
- package/pack/generated/devin/skills/rite-status/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-temper/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-temper/reference/review-dimensions.md +2 -2
- package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +2 -2
- package/pack/generated/devin/skills/rite-temper/reference/significance.md +2 -2
- package/pack/generated/devin/skills/rite-vet/SKILL.md +8 -4
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +10 -3
- package/pack/generated/devin/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/devin/skills/rite-vet/reference/review-axes.md +2 -2
- package/pack/generated/devin/skills/rite-zoom-out/SKILL.md +6 -6
- package/pack/generated/omp/agents/devrites-code-reviewer.md +9 -5
- package/pack/generated/omp/agents/devrites-devex-reviewer.md +5 -4
- package/pack/generated/omp/agents/devrites-doubt-reviewer.md +4 -4
- package/pack/generated/omp/agents/devrites-evidence-scout.md +3 -2
- package/pack/generated/omp/agents/devrites-frontend-reviewer.md +5 -4
- package/pack/generated/omp/agents/devrites-performance-reviewer.md +5 -5
- package/pack/generated/omp/agents/devrites-plan-drafter.md +4 -2
- package/pack/generated/omp/agents/devrites-plan-reviewer.md +5 -5
- package/pack/generated/omp/agents/devrites-proof-runner.md +1 -1
- package/pack/generated/omp/agents/devrites-retrospector.md +1 -1
- package/pack/generated/omp/agents/devrites-security-auditor.md +4 -4
- package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +5 -4
- package/pack/generated/omp/agents/devrites-slice-wright.md +18 -9
- package/pack/generated/omp/agents/devrites-spec-reviewer.md +4 -4
- package/pack/generated/omp/agents/devrites-strategy-reviewer.md +5 -6
- package/pack/generated/omp/agents/devrites-test-analyst.md +7 -4
- package/pack/generated/omp/agents/devrites-upgrade-planner.md +1 -1
- package/pack/generated/omp/agents/fast-builder.md +4 -2
- package/pack/generated/omp/agents/fast-checker.md +3 -2
- package/pack/generated/omp/agents/fast-critic.md +3 -2
- package/pack/generated/omp/agents/fast-planner.md +3 -3
- package/pack/generated/omp/agents/overhaul-backend-engineer.md +1 -1
- package/pack/generated/omp/agents/overhaul-boundary.md +1 -1
- package/pack/generated/omp/agents/overhaul-craft.md +1 -1
- package/pack/generated/omp/agents/overhaul-frontend-engineer.md +1 -1
- package/pack/generated/omp/agents/overhaul-implementer.md +1 -1
- package/pack/generated/omp/agents/overhaul-recon.md +6 -5
- package/pack/generated/omp/agents/overhaul-specialist.md +1 -1
- package/pack/generated/omp/agents/overhaul-verifier.md +1 -1
- package/pack/generated/omp/skills/devrites-api-interface/SKILL.md +1 -1
- package/pack/generated/omp/skills/devrites-audit/SKILL.md +1 -1
- package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +33 -13
- package/pack/generated/omp/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
- package/pack/generated/omp/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/generated/omp/skills/devrites-doubt/SKILL.md +5 -5
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/generated/omp/skills/devrites-interview/SKILL.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/SKILL.md +11 -6
- package/pack/generated/omp/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
- package/pack/generated/omp/skills/devrites-lib/reference/standards/README.md +2 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +43 -19
- package/pack/generated/omp/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
- package/pack/generated/omp/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
- package/pack/generated/omp/skills/devrites-lib/reference/standards/core.md +14 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/deprecation.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +10 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/security.md +4 -0
- package/pack/generated/omp/skills/devrites-lib/reference/standards/testing.md +3 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/tooling.md +9 -8
- package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -2
- package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
- package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/generated/omp/skills/overhaul/references/orchestration.md +3 -2
- package/pack/generated/omp/skills/rite/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-adopt/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-adopt/reference/adoption.md +1 -1
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +5 -4
- package/pack/generated/omp/skills/rite-build/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +2 -0
- package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +4 -1
- package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +2 -0
- package/pack/generated/omp/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/output.md +2 -0
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +22 -12
- package/pack/generated/omp/skills/rite-build/reference/phase-contract.md +13 -3
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +42 -25
- package/pack/generated/omp/skills/rite-clarify/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/omp/skills/rite-converge/reference/convergence-assessment.md +3 -3
- package/pack/generated/omp/skills/rite-define/SKILL.md +10 -5
- package/pack/generated/omp/skills/rite-doctor/SKILL.md +17 -2
- package/pack/generated/omp/skills/rite-dogfood/SKILL.md +1 -1
- 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-handoff/SKILL.md +3 -3
- package/pack/generated/omp/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/omp/skills/rite-harness/SKILL.md +2 -1
- package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -4
- package/pack/generated/omp/skills/rite-plan/reference/slicing.md +3 -2
- package/pack/generated/omp/skills/rite-polish/SKILL.md +6 -3
- package/pack/generated/omp/skills/rite-polish/reference/harden-checklist.md +1 -1
- package/pack/generated/omp/skills/rite-prove/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/generated/omp/skills/rite-prove/reference/proof-ladder.md +16 -5
- package/pack/generated/omp/skills/rite-quick/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-resolve/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/omp/skills/rite-seal/SKILL.md +2 -2
- package/pack/generated/omp/skills/rite-ship/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-spec/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-spec/reference/investigation.md +5 -5
- package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +1 -1
- package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +6 -4
- package/pack/generated/omp/skills/rite-status/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-temper/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-temper/reference/review-dimensions.md +2 -2
- package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +2 -2
- package/pack/generated/omp/skills/rite-temper/reference/significance.md +2 -2
- package/pack/generated/omp/skills/rite-vet/SKILL.md +8 -4
- package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +10 -3
- package/pack/generated/omp/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/omp/skills/rite-vet/reference/review-axes.md +2 -2
- package/pack/generated/omp/skills/rite-zoom-out/SKILL.md +6 -6
- package/pack/generated/pi/agents/devrites-code-reviewer.md +9 -5
- package/pack/generated/pi/agents/devrites-devex-reviewer.md +5 -4
- package/pack/generated/pi/agents/devrites-doubt-reviewer.md +4 -4
- package/pack/generated/pi/agents/devrites-evidence-scout.md +3 -2
- package/pack/generated/pi/agents/devrites-frontend-reviewer.md +5 -4
- package/pack/generated/pi/agents/devrites-performance-reviewer.md +5 -5
- package/pack/generated/pi/agents/devrites-plan-drafter.md +4 -2
- package/pack/generated/pi/agents/devrites-plan-reviewer.md +5 -5
- package/pack/generated/pi/agents/devrites-proof-runner.md +1 -1
- package/pack/generated/pi/agents/devrites-retrospector.md +1 -1
- package/pack/generated/pi/agents/devrites-security-auditor.md +4 -4
- package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +5 -4
- package/pack/generated/pi/agents/devrites-slice-wright.md +18 -9
- package/pack/generated/pi/agents/devrites-spec-reviewer.md +4 -4
- package/pack/generated/pi/agents/devrites-strategy-reviewer.md +5 -6
- package/pack/generated/pi/agents/devrites-test-analyst.md +7 -4
- package/pack/generated/pi/agents/devrites-upgrade-planner.md +1 -1
- package/pack/generated/pi/agents/fast-builder.md +4 -2
- package/pack/generated/pi/agents/fast-checker.md +3 -2
- package/pack/generated/pi/agents/fast-critic.md +3 -2
- package/pack/generated/pi/agents/fast-planner.md +3 -3
- package/pack/generated/pi/agents/overhaul-backend-engineer.md +1 -1
- package/pack/generated/pi/agents/overhaul-boundary.md +1 -1
- package/pack/generated/pi/agents/overhaul-craft.md +1 -1
- package/pack/generated/pi/agents/overhaul-frontend-engineer.md +1 -1
- package/pack/generated/pi/agents/overhaul-implementer.md +1 -1
- package/pack/generated/pi/agents/overhaul-recon.md +6 -5
- package/pack/generated/pi/agents/overhaul-specialist.md +1 -1
- package/pack/generated/pi/agents/overhaul-verifier.md +1 -1
- package/pack/generated/pi/skills/devrites-api-interface/SKILL.md +1 -1
- package/pack/generated/pi/skills/devrites-audit/SKILL.md +1 -1
- package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +33 -13
- package/pack/generated/pi/skills/devrites-browser-proof/reference/browser-performance.md +2 -1
- package/pack/generated/pi/skills/devrites-debug-recovery/SKILL.md +1 -1
- package/pack/generated/pi/skills/devrites-doubt/SKILL.md +5 -5
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/generated/pi/skills/devrites-interview/SKILL.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/SKILL.md +11 -6
- package/pack/generated/pi/skills/devrites-lib/reference/orchestration-profiles.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +25 -14
- package/pack/generated/pi/skills/devrites-lib/reference/standards/README.md +2 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +43 -19
- package/pack/generated/pi/skills/devrites-lib/reference/standards/architecture-health.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-index.md +111 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/code-navigation.md +13 -63
- package/pack/generated/pi/skills/devrites-lib/reference/standards/context-hygiene.md +8 -9
- package/pack/generated/pi/skills/devrites-lib/reference/standards/core.md +14 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/deprecation.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +10 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/security.md +4 -0
- package/pack/generated/pi/skills/devrites-lib/reference/standards/testing.md +3 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/tooling.md +9 -8
- package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -2
- package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -0
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +16 -16
- package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +1 -1
- package/pack/generated/pi/skills/overhaul/references/orchestration.md +3 -2
- package/pack/generated/pi/skills/rite/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-adopt/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-adopt/reference/adoption.md +1 -1
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +5 -4
- package/pack/generated/pi/skills/rite-build/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +2 -0
- package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +4 -1
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +2 -0
- package/pack/generated/pi/skills/rite-build/reference/one-slice-cycle.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/output.md +2 -0
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +22 -12
- package/pack/generated/pi/skills/rite-build/reference/phase-contract.md +13 -3
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +42 -25
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-converge/SKILL.md +4 -4
- package/pack/generated/pi/skills/rite-converge/reference/convergence-assessment.md +3 -3
- package/pack/generated/pi/skills/rite-define/SKILL.md +10 -5
- package/pack/generated/pi/skills/rite-doctor/SKILL.md +17 -2
- package/pack/generated/pi/skills/rite-dogfood/SKILL.md +1 -1
- 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-handoff/SKILL.md +3 -3
- package/pack/generated/pi/skills/rite-handoff/reference/handoff-template.md +1 -1
- package/pack/generated/pi/skills/rite-harness/SKILL.md +2 -1
- package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -4
- package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -2
- package/pack/generated/pi/skills/rite-polish/SKILL.md +6 -3
- package/pack/generated/pi/skills/rite-polish/reference/harden-checklist.md +1 -1
- package/pack/generated/pi/skills/rite-prove/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/generated/pi/skills/rite-prove/reference/proof-ladder.md +16 -5
- package/pack/generated/pi/skills/rite-quick/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-review/SKILL.md +4 -4
- package/pack/generated/pi/skills/rite-seal/SKILL.md +2 -2
- package/pack/generated/pi/skills/rite-ship/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-spec/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-spec/reference/investigation.md +5 -5
- package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +1 -1
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +6 -4
- package/pack/generated/pi/skills/rite-status/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-temper/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-temper/reference/review-dimensions.md +2 -2
- package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +2 -2
- package/pack/generated/pi/skills/rite-temper/reference/significance.md +2 -2
- package/pack/generated/pi/skills/rite-vet/SKILL.md +8 -4
- package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +10 -3
- package/pack/generated/pi/skills/rite-vet/reference/depth.md +2 -2
- package/pack/generated/pi/skills/rite-vet/reference/review-axes.md +2 -2
- package/pack/generated/pi/skills/rite-zoom-out/SKILL.md +6 -6
- package/package.json +1 -1
- package/scripts/build-host-artifacts.sh +5 -4
- package/scripts/omp-generate.sh +3 -12
- package/scripts/pi-generate.sh +5 -51
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
package lib
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"fmt"
|
|
5
|
+
"io"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"regexp"
|
|
8
|
+
"strconv"
|
|
9
|
+
"strings"
|
|
10
|
+
"unicode/utf8"
|
|
11
|
+
|
|
12
|
+
"github.com/devrites/devrites/internal/anchor"
|
|
13
|
+
"github.com/devrites/devrites/internal/devritespaths"
|
|
14
|
+
"github.com/devrites/devrites/internal/safepath"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
// anchors.go: deterministic quote anchoring for one reviewer return.
|
|
18
|
+
// agents.md § Result admission has root anchor each Critical/Important row's
|
|
19
|
+
// quote at its cited file:line and its `breaks` quote in the spec or standard it
|
|
20
|
+
// names before the row counts as a finding. This check does that with the same
|
|
21
|
+
// matcher /overhaul admit uses, so no row reaches a repair round on a quote
|
|
22
|
+
// nobody can find.
|
|
23
|
+
//
|
|
24
|
+
// devrites-engine check anchors <slug> <return-file> [--skills-root <dir>]
|
|
25
|
+
//
|
|
26
|
+
// 0 every Critical/Important row anchored (exact or relocated)
|
|
27
|
+
// 2 usage error, workspace or return unreadable
|
|
28
|
+
// 3 blocked: an Unverified or Deferred row, which never drives a repair round
|
|
29
|
+
//
|
|
30
|
+
// A row's site is the first `;`-separated location in its second cell
|
|
31
|
+
// (`path:line[-line]`, or a workspace .md file with no line); its quote is the
|
|
32
|
+
// first backticked span in its observed cell. Paths resolve in the workspace,
|
|
33
|
+
// then the project. Exact match at the cited lines anchors; a quote on exactly
|
|
34
|
+
// one other line relocates; otherwise the row is Unverified (anchor lost or
|
|
35
|
+
// ambiguous). The `breaks "<quote>"` cell must quote spec.md/decisions.md for a
|
|
36
|
+
// spec ID, or the named shipped standard (under --skills-root when a host passes
|
|
37
|
+
// it); with no quote the row is Deferred.
|
|
38
|
+
|
|
39
|
+
// AnchorsUsage is the help and usage-error text for `check anchors`.
|
|
40
|
+
const AnchorsUsage = "usage: devrites-engine check anchors <slug> <return-file> [--skills-root <dir>]"
|
|
41
|
+
|
|
42
|
+
var (
|
|
43
|
+
anchorSiteRE = regexp.MustCompile(`^(\S+?)(?::([0-9]+)(?::[0-9]+)?(?:[-–]([0-9]+))?)?$`)
|
|
44
|
+
anchorSeverityRE = regexp.MustCompile(`(?i)^\W*(critical|important)\b`)
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
type anchorer struct{ root, project, workspace, skillsRoot string }
|
|
48
|
+
|
|
49
|
+
// RunCheckAnchors implements `devrites-engine check anchors`.
|
|
50
|
+
func RunCheckAnchors(root string, args []string, stdout, stderr io.Writer) int {
|
|
51
|
+
var positional []string
|
|
52
|
+
skillsRoot := ""
|
|
53
|
+
for i := 0; i < len(args); i++ {
|
|
54
|
+
if args[i] == "--skills-root" && i+1 < len(args) {
|
|
55
|
+
skillsRoot = args[i+1]
|
|
56
|
+
i++
|
|
57
|
+
continue
|
|
58
|
+
}
|
|
59
|
+
positional = append(positional, args[i])
|
|
60
|
+
}
|
|
61
|
+
if len(positional) != 2 || strings.HasPrefix(positional[0], "-") || strings.HasPrefix(positional[1], "-") {
|
|
62
|
+
fmt.Fprintln(stderr, AnchorsUsage)
|
|
63
|
+
return 2
|
|
64
|
+
}
|
|
65
|
+
args = positional
|
|
66
|
+
slug := args[0]
|
|
67
|
+
workspace, err := devritespaths.ExistingFeatureDirChecked(root, slug)
|
|
68
|
+
if err != nil {
|
|
69
|
+
fmt.Fprintf(stderr, "check anchors: %v\n", err)
|
|
70
|
+
return 2
|
|
71
|
+
}
|
|
72
|
+
raw, err := readBoundedRegularFile(args[1], maxReturnBytes)
|
|
73
|
+
if err != nil {
|
|
74
|
+
fmt.Fprintf(stderr, "check anchors: %s: %v\n", args[1], err)
|
|
75
|
+
return 2
|
|
76
|
+
}
|
|
77
|
+
// The digest lets root confirm it anchored on the candidate the reviewer saw.
|
|
78
|
+
if digest, n, err := CandidateIdentity(root, slug); err == nil {
|
|
79
|
+
fmt.Fprintf(stdout, "check anchors: candidate %s (%d files)\n", digest, n)
|
|
80
|
+
} else {
|
|
81
|
+
fmt.Fprintf(stdout, "check anchors: no candidate (%v); quotes read the live tree\n", err)
|
|
82
|
+
}
|
|
83
|
+
a := anchorer{root: root, project: projectDir(root), workspace: workspace, skillsRoot: skillsRoot}
|
|
84
|
+
counts := map[string]int{}
|
|
85
|
+
rows := 0
|
|
86
|
+
for i, line := range strings.Split(string(raw), "\n") {
|
|
87
|
+
// Fail closed on format drift: a bulleted row or a bold/colon severity is still a blocker row.
|
|
88
|
+
row, ok := strings.CutPrefix(strings.TrimLeft(line, " \t-*•"), "Finding:")
|
|
89
|
+
if !ok {
|
|
90
|
+
continue
|
|
91
|
+
}
|
|
92
|
+
cells := splitFindingCells(row)
|
|
93
|
+
if !anchorSeverityRE.MatchString(cells[0]) {
|
|
94
|
+
continue
|
|
95
|
+
}
|
|
96
|
+
rows++
|
|
97
|
+
status, detail := a.row(cells)
|
|
98
|
+
counts[status]++
|
|
99
|
+
switch claim := strings.TrimSpace(row); status {
|
|
100
|
+
case "Unverified":
|
|
101
|
+
fmt.Fprintf(stdout, "%d: Unverified: %s — %s\n", i+1, claim, detail)
|
|
102
|
+
case "Deferred":
|
|
103
|
+
fmt.Fprintf(stdout, "%d: Deferred: %s — no spec anchor\n", i+1, claim)
|
|
104
|
+
default:
|
|
105
|
+
fmt.Fprintf(stdout, "%d: %s %s\n", i+1, status, detail)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
summary := fmt.Sprintf("anchored=%d relocated=%d unverified=%d deferred=%d",
|
|
109
|
+
counts["anchored"], counts["relocated"], counts["Unverified"], counts["Deferred"])
|
|
110
|
+
recordMetricNote(root, slug, cursorPhase(root, slug), "anchors", "", summary)
|
|
111
|
+
if counts["Unverified"]+counts["Deferred"] > 0 {
|
|
112
|
+
fmt.Fprintf(stdout, "check anchors: BLOCKED: %d Critical/Important rows, %s; Unverified and Deferred rows never drive a repair round\n", rows, summary)
|
|
113
|
+
return 3
|
|
114
|
+
}
|
|
115
|
+
fmt.Fprintf(stdout, "check anchors: OK: %d Critical/Important rows, %s\n", rows, summary)
|
|
116
|
+
return 0
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// row classifies one blocker row: anchored, relocated, Unverified or Deferred.
|
|
120
|
+
func (a anchorer) row(cells []string) (status, detail string) {
|
|
121
|
+
if len(cells) < 3 {
|
|
122
|
+
return "Unverified", "missing file:line"
|
|
123
|
+
}
|
|
124
|
+
status, detail = a.site(cells[1], cells[2])
|
|
125
|
+
if status == "Unverified" {
|
|
126
|
+
return status, detail
|
|
127
|
+
}
|
|
128
|
+
if bs, bd := a.breaks(cells[2:]); bs != "anchored" {
|
|
129
|
+
return bs, bd
|
|
130
|
+
}
|
|
131
|
+
return status, detail
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// site anchors the observed quote at the row's cited location.
|
|
135
|
+
func (a anchorer) site(location, observed string) (status, detail string) {
|
|
136
|
+
cited := strings.TrimSpace(strings.Split(strings.ReplaceAll(location, "`", ""), ";")[0])
|
|
137
|
+
cited, _, _ = strings.Cut(cited, "§")
|
|
138
|
+
cited = strings.TrimSpace(cited)
|
|
139
|
+
m := anchorSiteRE.FindStringSubmatch(cited)
|
|
140
|
+
if m == nil || m[2] == "" && !strings.HasSuffix(m[1], ".md") {
|
|
141
|
+
return "Unverified", "missing file:line"
|
|
142
|
+
}
|
|
143
|
+
_, rest, hasQuote := strings.Cut(observed, "`")
|
|
144
|
+
quote, _, closed := strings.Cut(rest, "`")
|
|
145
|
+
if !hasQuote || !closed || strings.TrimSpace(quote) == "" {
|
|
146
|
+
return "Unverified", "missing quote"
|
|
147
|
+
}
|
|
148
|
+
lines, err := a.lines(m[1])
|
|
149
|
+
if err != nil {
|
|
150
|
+
return "Unverified", "anchor lost: " + err.Error()
|
|
151
|
+
}
|
|
152
|
+
if m[2] != "" {
|
|
153
|
+
s, _ := strconv.Atoi(m[2])
|
|
154
|
+
e := s
|
|
155
|
+
if m[3] != "" {
|
|
156
|
+
e, _ = strconv.Atoi(m[3])
|
|
157
|
+
}
|
|
158
|
+
if 1 <= s && s <= e && e <= len(lines) {
|
|
159
|
+
switch anchor.At(lines, s, e, quote) {
|
|
160
|
+
case anchor.Found:
|
|
161
|
+
return "anchored", cited
|
|
162
|
+
case anchor.TooShort:
|
|
163
|
+
return "Unverified", fmt.Sprintf("anchor ambiguous: quote under %d characters; quote the whole line", anchor.MinRunes)
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// shortcut: relocation searches single lines; a quote spanning lines anchors only at its cited range.
|
|
168
|
+
switch hits := anchor.Find(lines, quote); {
|
|
169
|
+
case len(hits) == 1 && m[2] == "":
|
|
170
|
+
return "anchored", fmt.Sprintf("%s:%d", m[1], hits[0])
|
|
171
|
+
case len(hits) == 1:
|
|
172
|
+
return "relocated", fmt.Sprintf("%s -> %s:%d", cited, m[1], hits[0])
|
|
173
|
+
case len(hits) == 0:
|
|
174
|
+
return "Unverified", "anchor lost"
|
|
175
|
+
}
|
|
176
|
+
return "Unverified", "anchor ambiguous"
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// breaks anchors the `breaks <anchor> "<quote>"` cell in the spec or standard it names.
|
|
180
|
+
func (a anchorer) breaks(cells []string) (status, detail string) {
|
|
181
|
+
for _, cell := range cells {
|
|
182
|
+
cited, ok := strings.CutPrefix(strings.TrimSpace(cell), "breaks ")
|
|
183
|
+
if !ok {
|
|
184
|
+
continue
|
|
185
|
+
}
|
|
186
|
+
open := strings.IndexAny(cited, "\"“")
|
|
187
|
+
closing := strings.LastIndexAny(cited, "\"”")
|
|
188
|
+
if open < 0 || closing <= open {
|
|
189
|
+
return "Deferred", ""
|
|
190
|
+
}
|
|
191
|
+
_, size := utf8.DecodeRuneInString(cited[open:])
|
|
192
|
+
name, quote := cited[:open], cited[open+size:closing]
|
|
193
|
+
var paths []string
|
|
194
|
+
switch base := mdName(name); base {
|
|
195
|
+
case "":
|
|
196
|
+
paths = []string{filepath.Join(a.workspace, "spec.md"), filepath.Join(a.workspace, "decisions.md")}
|
|
197
|
+
case "spec.md", "decisions.md":
|
|
198
|
+
paths = []string{filepath.Join(a.workspace, base)}
|
|
199
|
+
default:
|
|
200
|
+
if skills, err := resolveSkillsRoot(a.root, a.skillsRoot); err == nil {
|
|
201
|
+
paths = []string{filepath.Join(skills, "devrites-lib", "reference", "standards", base)}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
var text []string
|
|
205
|
+
for _, p := range paths {
|
|
206
|
+
if raw, err := readBoundedRegularFile(p, workspaceArtifactLimit); err == nil {
|
|
207
|
+
text = append(text, anchor.Lines(raw)...)
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if len(text) == 0 {
|
|
211
|
+
return "Unverified", fmt.Sprintf("breaks anchor lost: %s is unreadable", strings.TrimSpace(name))
|
|
212
|
+
}
|
|
213
|
+
// One window over the whole text, so a quote wrapped across lines matches.
|
|
214
|
+
switch anchor.At([]string{strings.Join(text, " ")}, 1, 1, quote) {
|
|
215
|
+
case anchor.NotFound:
|
|
216
|
+
return "Unverified", "breaks anchor lost"
|
|
217
|
+
case anchor.TooShort:
|
|
218
|
+
return "Unverified", fmt.Sprintf("breaks anchor ambiguous: quote under %d characters", anchor.MinRunes)
|
|
219
|
+
}
|
|
220
|
+
return "anchored", ""
|
|
221
|
+
}
|
|
222
|
+
return "Deferred", ""
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// lines reads a cited file from the workspace, else the project, never outside them.
|
|
226
|
+
func (a anchorer) lines(rel string) ([]string, error) {
|
|
227
|
+
for _, base := range []string{a.workspace, a.project} {
|
|
228
|
+
full := rel
|
|
229
|
+
if !filepath.IsAbs(rel) {
|
|
230
|
+
full = filepath.Join(base, filepath.FromSlash(rel))
|
|
231
|
+
}
|
|
232
|
+
if !safepath.WithinResolved(full, base) {
|
|
233
|
+
continue
|
|
234
|
+
}
|
|
235
|
+
if raw, err := readBoundedRegularFile(full, maxCandidateFileBytes); err == nil {
|
|
236
|
+
return anchor.Lines(raw), nil
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return nil, fmt.Errorf("%s is not a file under the workspace or project", rel)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// mdName is the base name of the first .md file a breaks anchor names, or "".
|
|
243
|
+
func mdName(name string) string {
|
|
244
|
+
for _, field := range strings.Fields(strings.ReplaceAll(name, "`", " ")) {
|
|
245
|
+
if field = strings.TrimRight(field, ",;:"); strings.HasSuffix(field, ".md") {
|
|
246
|
+
return filepath.Base(field)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return ""
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// splitFindingCells splits a Finding: row on "|" outside backticked code, so a
|
|
253
|
+
// quoted `a || b` stays one cell.
|
|
254
|
+
func splitFindingCells(row string) []string {
|
|
255
|
+
var cells []string
|
|
256
|
+
var b strings.Builder
|
|
257
|
+
code := false
|
|
258
|
+
for _, r := range row {
|
|
259
|
+
switch {
|
|
260
|
+
case r == '`':
|
|
261
|
+
code = !code
|
|
262
|
+
case r == '|' && !code:
|
|
263
|
+
cells = append(cells, b.String())
|
|
264
|
+
b.Reset()
|
|
265
|
+
continue
|
|
266
|
+
}
|
|
267
|
+
b.WriteRune(r)
|
|
268
|
+
}
|
|
269
|
+
return append(cells, b.String())
|
|
270
|
+
}
|
|
@@ -361,7 +361,8 @@ func applyHunks(base string, hunks []candidateHunk) (string, []string) {
|
|
|
361
361
|
// checkBundleResult rejects an outcome the root would otherwise discover only
|
|
362
362
|
// at Vet: a tracked ID that vanished from every touched file without being
|
|
363
363
|
// listed in retired_ids, a new tasks.md graph problem, or a budgeted artifact
|
|
364
|
-
// that grew into material overshoot without a
|
|
364
|
+
// that grew into material overshoot without a covering
|
|
365
|
+
// `Budget override: <=N lines; <reason>` line.
|
|
365
366
|
func checkBundleResult(targets []*bundleTarget, retired map[string]bool) []string {
|
|
366
367
|
var problems []string
|
|
367
368
|
beforeIDs, afterIDs := map[string]bool{}, map[string]bool{}
|
|
@@ -69,29 +69,38 @@ func loadCandidateIdentity(root, slug string) (candidateIdentity, error) {
|
|
|
69
69
|
return candidateIdentity{}, fmt.Errorf("candidate manifest %s: %w; refresh touched-files.md", manifestPath, err)
|
|
70
70
|
}
|
|
71
71
|
project := projectDir(root)
|
|
72
|
+
if err := validateCandidateRows(project, rows); err != nil {
|
|
73
|
+
return candidateIdentity{}, err
|
|
74
|
+
}
|
|
75
|
+
digest, err := hashCandidate(project, rows)
|
|
76
|
+
if err != nil {
|
|
77
|
+
return candidateIdentity{}, err
|
|
78
|
+
}
|
|
79
|
+
return candidateIdentity{digest: digest, rows: rows}, nil
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// validateCandidateRows checks every row against the filesystem and the
|
|
83
|
+
// per-file, aggregate, and distinct-object bounds before anything is hashed.
|
|
84
|
+
func validateCandidateRows(project string, rows []candidateRow) error {
|
|
72
85
|
var total int64
|
|
73
86
|
for i := range rows {
|
|
74
87
|
if err := validateCandidateRow(project, &rows[i]); err != nil {
|
|
75
|
-
return
|
|
88
|
+
return fmt.Errorf("candidate %q: %w", rows[i].path, err)
|
|
76
89
|
}
|
|
77
90
|
if rows[i].state == "present" {
|
|
78
91
|
// ponytail: the 4096-row cap bounds portable pairwise identity checks; index native file IDs if that cap grows.
|
|
79
92
|
for prior := range rows[:i] {
|
|
80
93
|
if rows[prior].state == "present" && os.SameFile(rows[prior].info, rows[i].info) {
|
|
81
|
-
return
|
|
94
|
+
return fmt.Errorf("candidate %q: same filesystem object as candidate %q", rows[i].path, rows[prior].path)
|
|
82
95
|
}
|
|
83
96
|
}
|
|
84
97
|
if rows[i].size > maxCandidateTotalBytes-total {
|
|
85
|
-
return
|
|
98
|
+
return errors.New("candidate present files exceed 256 MiB aggregate limit")
|
|
86
99
|
}
|
|
87
100
|
total += rows[i].size
|
|
88
101
|
}
|
|
89
102
|
}
|
|
90
|
-
|
|
91
|
-
if err != nil {
|
|
92
|
-
return candidateIdentity{}, err
|
|
93
|
-
}
|
|
94
|
-
return candidateIdentity{digest: digest, rows: rows}, nil
|
|
103
|
+
return nil
|
|
95
104
|
}
|
|
96
105
|
|
|
97
106
|
func readBoundedRegularFile(name string, limit int64) ([]byte, error) {
|
|
@@ -272,45 +272,52 @@ func claimAdd(root string, args []string, stdout, stderr io.Writer) int {
|
|
|
272
272
|
raw = append(raw, args[i])
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
|
+
_, code := addClaim(root, session, reason, ttl, raw, stdout, stderr)
|
|
276
|
+
return code
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// addClaim records one claim and returns its id. It refuses, writing nothing,
|
|
280
|
+
// while a live foreign session holds an overlapping path.
|
|
281
|
+
func addClaim(root, session, reason string, ttl int, raw []string, stdout, stderr io.Writer) (string, int) {
|
|
275
282
|
if !validSession(session) {
|
|
276
283
|
fmt.Fprintln(stderr, "claim: --session is required (1-128 chars: letters, digits, - _ . : /)")
|
|
277
|
-
return 2
|
|
284
|
+
return "", 2
|
|
278
285
|
}
|
|
279
286
|
paths, err := normalizeClaimPaths(raw)
|
|
280
287
|
if err != nil {
|
|
281
288
|
fmt.Fprintf(stderr, "claim: %v\n", err)
|
|
282
|
-
return 2
|
|
289
|
+
return "", 2
|
|
283
290
|
}
|
|
284
291
|
path := claimsPath(root)
|
|
285
292
|
// Hold the ledger lock across read, conflict check, and append so two
|
|
286
293
|
// sessions cannot both pass the check and claim the same path.
|
|
287
|
-
code := 0
|
|
294
|
+
id, code := "", 0
|
|
288
295
|
if err := state.WithLock(path+".lock", func() error {
|
|
289
|
-
code = claimAddLocked(path, session, reason, ttl, paths, stdout, stderr)
|
|
296
|
+
id, code = claimAddLocked(path, session, reason, ttl, paths, stdout, stderr)
|
|
290
297
|
return nil
|
|
291
298
|
}); err != nil {
|
|
292
299
|
fmt.Fprintf(stderr, "claim: %v\n", err)
|
|
293
|
-
return 2
|
|
300
|
+
return "", 2
|
|
294
301
|
}
|
|
295
|
-
return code
|
|
302
|
+
return id, code
|
|
296
303
|
}
|
|
297
304
|
|
|
298
|
-
func claimAddLocked(path, session, reason string, ttl int, paths []string, stdout, stderr io.Writer) int {
|
|
305
|
+
func claimAddLocked(path, session, reason string, ttl int, paths []string, stdout, stderr io.Writer) (string, int) {
|
|
299
306
|
latest, order, bad, err := readClaims(path)
|
|
300
307
|
if err != nil {
|
|
301
308
|
fmt.Fprintf(stderr, "claim: %v\n", err)
|
|
302
|
-
return 2
|
|
309
|
+
return "", 2
|
|
303
310
|
}
|
|
304
311
|
if bad > 0 {
|
|
305
312
|
fmt.Fprintf(stderr, unparsedLedgerMsg, bad)
|
|
306
|
-
return 2
|
|
313
|
+
return "", 2
|
|
307
314
|
}
|
|
308
315
|
now := time.Now().UTC()
|
|
309
316
|
probe := newHolderProbe()
|
|
310
317
|
conflicts := claimConflicts(probe.withoutGone(liveClaims(latest, order, now)), session, paths)
|
|
311
318
|
if len(conflicts) > 0 {
|
|
312
319
|
printConflicts(stderr, conflicts)
|
|
313
|
-
return 3
|
|
320
|
+
return "", 3
|
|
314
321
|
}
|
|
315
322
|
rec := &claimRecord{
|
|
316
323
|
ID: newClaimID(),
|
|
@@ -325,10 +332,10 @@ func claimAddLocked(path, session, reason string, ttl int, paths []string, stdou
|
|
|
325
332
|
}
|
|
326
333
|
if err := appendClaim(path, rec); err != nil {
|
|
327
334
|
fmt.Fprintf(stderr, "claim: %v\n", err)
|
|
328
|
-
return 2
|
|
335
|
+
return "", 2
|
|
329
336
|
}
|
|
330
337
|
fmt.Fprintf(stdout, "claim: %s claimed %d path(s) until %s\n", rec.ID, len(paths), rec.ExpiresAt)
|
|
331
|
-
return 0
|
|
338
|
+
return rec.ID, 0
|
|
332
339
|
}
|
|
333
340
|
|
|
334
341
|
func claimRelease(root string, args []string, stdout, stderr io.Writer) int {
|
|
@@ -350,33 +357,38 @@ func claimRelease(root string, args []string, stdout, stderr io.Writer) int {
|
|
|
350
357
|
fmt.Fprintln(stderr, "claim: release requires --session and --id")
|
|
351
358
|
return 2
|
|
352
359
|
}
|
|
353
|
-
|
|
354
|
-
latest, _, _, err := readClaims(path)
|
|
360
|
+
n, err := releaseClaim(root, session, id)
|
|
355
361
|
if err != nil {
|
|
356
362
|
fmt.Fprintf(stderr, "claim: %v\n", err)
|
|
357
363
|
return 2
|
|
358
364
|
}
|
|
365
|
+
fmt.Fprintf(stdout, "claim: %s released %d path(s)\n", id, n)
|
|
366
|
+
return 0
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// releaseClaim marks session's claim id released and returns its path count.
|
|
370
|
+
func releaseClaim(root, session, id string) (int, error) {
|
|
371
|
+
path := claimsPath(root)
|
|
372
|
+
latest, _, _, err := readClaims(path)
|
|
373
|
+
if err != nil {
|
|
374
|
+
return 0, err
|
|
375
|
+
}
|
|
359
376
|
rec, ok := latest[id]
|
|
360
377
|
if !ok {
|
|
361
|
-
fmt.
|
|
362
|
-
return 2
|
|
378
|
+
return 0, fmt.Errorf("unknown claim %q", id)
|
|
363
379
|
}
|
|
364
380
|
if rec.Session != session {
|
|
365
|
-
fmt.
|
|
366
|
-
return 2
|
|
381
|
+
return 0, fmt.Errorf("%q belongs to session %q, not %q", id, rec.Session, session)
|
|
367
382
|
}
|
|
368
383
|
if rec.Released {
|
|
369
|
-
fmt.
|
|
370
|
-
return 2
|
|
384
|
+
return 0, fmt.Errorf("%q already released", id)
|
|
371
385
|
}
|
|
372
386
|
released := *rec
|
|
373
387
|
released.Released = true
|
|
374
388
|
if err := appendClaim(path, &released); err != nil {
|
|
375
|
-
|
|
376
|
-
return 2
|
|
389
|
+
return 0, err
|
|
377
390
|
}
|
|
378
|
-
|
|
379
|
-
return 0
|
|
391
|
+
return len(rec.Paths), nil
|
|
380
392
|
}
|
|
381
393
|
|
|
382
394
|
func claimList(root string, args []string, stdout, stderr io.Writer) int {
|
|
@@ -401,18 +413,18 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
|
|
|
401
413
|
}
|
|
402
414
|
now := time.Now().UTC()
|
|
403
415
|
probe := newHolderProbe()
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
printed := 0
|
|
412
|
-
for _, rec := range rows {
|
|
416
|
+
// Bare list keeps every unreleased claim (expired and dead rows decide
|
|
417
|
+
// who may take a path) and folds the released history into one count.
|
|
418
|
+
printed, released := 0, 0
|
|
419
|
+
for _, id := range order {
|
|
420
|
+
rec := latest[id]
|
|
413
421
|
if rec == nil || (session != "" && rec.Session != session) {
|
|
414
422
|
continue
|
|
415
423
|
}
|
|
424
|
+
if rec.Released && !all {
|
|
425
|
+
released++
|
|
426
|
+
continue
|
|
427
|
+
}
|
|
416
428
|
state := "live"
|
|
417
429
|
if rec.Released {
|
|
418
430
|
state = "released"
|
|
@@ -431,6 +443,9 @@ func claimList(root string, args []string, stdout, stderr io.Writer) int {
|
|
|
431
443
|
if printed == 0 {
|
|
432
444
|
fmt.Fprintln(stdout, "claim: no claims")
|
|
433
445
|
}
|
|
446
|
+
if released > 0 {
|
|
447
|
+
fmt.Fprintf(stdout, "claim: %d released (use --all)\n", released)
|
|
448
|
+
}
|
|
434
449
|
if bad > 0 {
|
|
435
450
|
fmt.Fprintf(stdout, "claim: %d unparsed ledger line(s)\n", bad)
|
|
436
451
|
}
|