devrites 5.14.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/NOTICE.md +6 -4
- package/README.md +77 -16
- package/SECURITY.md +25 -11
- package/bin/devrites.mjs +49 -15
- package/docs/adr/0001-go-engine-as-control-plane.md +6 -3
- package/docs/adr/0029-v5-workspace-schema-and-native-migration.md +9 -0
- package/docs/adr/README.md +3 -2
- package/docs/agents/issue-tracker.md +1 -1
- package/docs/architecture.md +6 -3
- package/docs/cli.md +32 -9
- package/docs/command-map.md +5 -3
- package/docs/engine/state-schema.md +1 -1
- package/docs/flow.md +1 -1
- package/docs/harness-compliance.md +2 -2
- package/docs/release.md +15 -11
- package/docs/usage.md +1 -1
- package/engine/commands.go +1 -1
- package/engine/go.mod +1 -1
- package/engine/help.go +41 -15
- package/engine/help_test.go +134 -0
- package/engine/internal/acceptance/acceptance_test.go +298 -7
- package/engine/internal/acceptance/approve.go +7 -2
- package/engine/internal/acceptance/cli.go +3 -0
- package/engine/internal/acceptance/evidence.go +69 -5
- package/engine/internal/acceptance/lint.go +1 -1
- package/engine/internal/acceptance/run.go +5 -3
- package/engine/internal/acceptance/scaffold.go +5 -16
- package/engine/internal/devritespaths/paths.go +7 -6
- package/engine/internal/devritespaths/paths_test.go +18 -0
- package/engine/internal/fsutil/copy.go +83 -49
- package/engine/internal/fsutil/copy_test.go +70 -109
- package/engine/internal/gate/gate.go +89 -16
- package/engine/internal/gate/gate_test.go +101 -0
- package/engine/internal/hostpack/hostpack.go +52 -2
- package/engine/internal/hostpack/hostpack_test.go +83 -2
- package/engine/internal/install/apply.go +59 -16
- package/engine/internal/install/binary.go +10 -1
- package/engine/internal/install/install_test.go +428 -0
- package/engine/internal/install/merge.go +69 -38
- package/engine/internal/install/preflight.go +7 -0
- package/engine/internal/install/uninstall.go +43 -4
- package/engine/internal/lib/claims.go +25 -4
- package/engine/internal/lib/claims_test.go +57 -0
- package/engine/internal/lib/closeout.go +41 -3
- package/engine/internal/lib/closeout_test.go +144 -0
- package/engine/internal/lib/context.go +8 -4
- package/engine/internal/lib/context_next_test.go +100 -0
- package/engine/internal/lib/detect.go +1 -1
- package/engine/internal/lib/detect_test.go +13 -0
- package/engine/internal/lib/diffscope.go +19 -9
- package/engine/internal/lib/dispatch.go +7 -0
- package/engine/internal/lib/dup.go +40 -37
- package/engine/internal/lib/dup_test.go +178 -0
- package/engine/internal/lib/manifest_union.go +4 -1
- package/engine/internal/lib/manifest_union_test.go +37 -0
- package/engine/internal/lib/metrics.go +4 -0
- package/engine/internal/lib/metrics_test.go +28 -0
- package/engine/internal/lib/migrate_test.go +59 -0
- package/engine/internal/lib/observe_budgets.go +25 -9
- package/engine/internal/lib/observe_budgets_test.go +254 -0
- package/engine/internal/lib/observe_summary.go +23 -2
- package/engine/internal/lib/open_visual.go +4 -2
- package/engine/internal/lib/open_visual_test.go +11 -0
- package/engine/internal/lib/regression.go +62 -23
- package/engine/internal/lib/regression_test.go +103 -0
- package/engine/internal/lib/resolve.go +36 -17
- package/engine/internal/lib/resolve_remediation_test.go +132 -0
- package/engine/internal/lib/skilltrust.go +0 -11
- package/engine/internal/lib/slicecheck.go +7 -5
- package/engine/internal/lib/slicecheck_test.go +18 -0
- package/engine/internal/lib/triggers.go +9 -3
- package/engine/internal/lib/triggers_test.go +23 -0
- package/engine/internal/lib/util.go +17 -3
- package/engine/internal/lib/util_test.go +104 -0
- package/engine/internal/lib/visual_outline.go +7 -3
- package/engine/internal/lib/visual_outline_test.go +28 -0
- package/engine/internal/lib/windows.go +13 -9
- package/engine/internal/lib/windows_test.go +98 -0
- package/engine/internal/lib/workspace_read.go +2 -11
- package/engine/internal/lib/workspace_read_test.go +102 -0
- package/engine/internal/markdowntext/markdowntext.go +194 -11
- package/engine/internal/markdowntext/testdata/structural.json +250 -0
- package/engine/internal/notes/cli.go +30 -12
- package/engine/internal/notes/notes.go +242 -39
- package/engine/internal/notes/notes_test.go +372 -0
- package/engine/internal/overhaul/admit/packet.go +89 -0
- package/engine/internal/overhaul/admit/packet_test.go +223 -0
- package/engine/internal/overhaul/admit/run.go +4 -0
- package/engine/internal/overhaul/bench/run.go +6 -0
- package/engine/internal/overhaul/bench/run_test.go +46 -0
- package/engine/internal/overhaul/overhaul.go +6 -1
- package/engine/internal/overhaul/ovio/ovio.go +10 -3
- package/engine/internal/overhaul/ovio/ovio_test.go +75 -0
- package/engine/internal/overhaul/packet/packet.go +208 -0
- package/engine/internal/overhaul/packet/packet_test.go +263 -0
- package/engine/internal/overhaul/records/check.go +6 -0
- package/engine/internal/overhaul/records/init.go +16 -5
- package/engine/internal/overhaul/records/records_test.go +4 -0
- package/engine/internal/overhaul/records/run.go +66 -0
- package/engine/internal/overhaul/records/run_test.go +77 -0
- package/engine/internal/overhaul/render/run.go +15 -11
- package/engine/internal/overhaul/render/run_test.go +463 -1
- package/engine/internal/overhaul/render/visual.go +95 -33
- package/engine/internal/overhaul/score/run.go +20 -0
- package/engine/internal/overhaul/score/run_test.go +156 -1
- package/engine/internal/overhaul/snapshot/run.go +78 -21
- package/engine/internal/overhaul/snapshot/run_test.go +344 -8
- package/engine/internal/parallel/cli.go +33 -20
- package/engine/internal/parallel/cli_test.go +59 -0
- package/engine/internal/parallel/git.go +39 -1
- package/engine/internal/parallel/ops.go +101 -11
- package/engine/internal/parallel/ops_test.go +552 -69
- package/engine/internal/parallel/parallel_test.go +31 -1
- package/engine/internal/parallel/pathdisjoint.go +19 -1
- package/engine/internal/parallel/pathdisjoint_test.go +72 -0
- package/engine/internal/parallel/select.go +6 -2
- package/engine/internal/release/release.go +13 -3
- package/engine/internal/release/release_test.go +208 -3
- package/engine/internal/rootfacts/facts.go +9 -0
- package/engine/internal/rootfacts/facts_test.go +38 -0
- package/engine/internal/state/acceptance.go +7 -1
- package/engine/internal/state/budgets.go +11 -10
- package/engine/internal/state/budgets_test.go +93 -0
- package/engine/internal/state/cursor.go +19 -8
- package/engine/internal/state/cursor_test.go +120 -0
- package/engine/internal/state/lock_unix.go +7 -1
- package/engine/internal/state/lock_windows.go +7 -1
- package/engine/internal/state/state_test.go +49 -18
- package/engine/internal/state/taskgraph.go +18 -4
- package/engine/internal/state/taskgraph_test.go +43 -0
- package/engine/internal/state/workspaceschema.go +16 -2
- package/engine/internal/state/workspaceschema_test.go +34 -0
- package/engine/internal/state/write.go +67 -6
- package/engine/internal/state/write_test.go +136 -0
- package/engine/internal/version/version_test.go +2 -0
- package/engine/main.go +8 -1
- package/engine/observation_contract_test.go +1 -1
- package/engine/root_routing_test.go +23 -1
- package/install.sh +132 -12
- package/pack/.claude/agents/_shared/result-admission.md +3 -1
- package/pack/.claude/agents/devrites-code-reviewer.md +3 -2
- package/pack/.claude/agents/devrites-doubt-reviewer.md +4 -2
- package/pack/.claude/agents/devrites-spec-reviewer.md +5 -4
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/.claude/skills/devrites-interview/SKILL.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/.claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/.claude/skills/overhaul/SKILL.md +1 -1
- package/pack/.claude/skills/overhaul/references/orchestration.md +5 -3
- package/pack/.claude/skills/overhaul/references/records.md +39 -0
- package/pack/.claude/skills/overhaul/references/scoring.md +14 -4
- package/pack/.claude/skills/rite/reference/menu.md +1 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +8 -2
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +12 -7
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +3 -3
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/.claude/skills/rite-build/SKILL.md +2 -1
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/.claude/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/.claude/skills/rite-clarify/SKILL.md +5 -4
- package/pack/.claude/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/.claude/skills/rite-converge/SKILL.md +2 -0
- package/pack/.claude/skills/rite-customize/SKILL.md +6 -4
- package/pack/.claude/skills/rite-define/SKILL.md +2 -0
- package/pack/.claude/skills/rite-define/reference/gates.md +8 -7
- package/pack/.claude/skills/rite-explain/SKILL.md +1 -1
- package/pack/.claude/skills/rite-explain/reference/intake.md +1 -1
- package/pack/.claude/skills/rite-fast/SKILL.md +1 -1
- package/pack/.claude/skills/rite-plan/SKILL.md +4 -3
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/.claude/skills/rite-plan/reference/slicing.md +3 -3
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/.claude/skills/rite-resolve/SKILL.md +3 -3
- package/pack/.claude/skills/rite-seal/SKILL.md +4 -3
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/.claude/skills/rite-ship/SKILL.md +4 -2
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +2 -2
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/.claude/skills/rite-temper/SKILL.md +14 -11
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/significance.md +10 -3
- package/pack/.claude/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/.claude/skills/rite-vet/SKILL.md +4 -3
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/.claude/workflows/devrites-readonly-review.js +5 -4
- package/pack/generated/claude/agents/devrites-code-reviewer.md +6 -3
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +3 -1
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +7 -3
- package/pack/generated/claude/agents/devrites-evidence-scout.md +3 -1
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +3 -1
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +3 -1
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +3 -1
- package/pack/generated/claude/agents/devrites-proof-runner.md +3 -1
- package/pack/generated/claude/agents/devrites-retrospector.md +3 -1
- package/pack/generated/claude/agents/devrites-security-auditor.md +3 -1
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +3 -1
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +8 -5
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +3 -1
- package/pack/generated/claude/agents/devrites-test-analyst.md +3 -1
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +3 -1
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/claude/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/claude/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/claude/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/claude/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/claude/skills/overhaul/references/records.md +39 -0
- package/pack/generated/claude/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/claude/skills/rite/reference/menu.md +1 -1
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +12 -7
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +3 -3
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/claude/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/claude/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/claude/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/claude/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/claude/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/claude/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/claude/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/claude/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/claude/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +3 -3
- package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/claude/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +14 -11
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/claude/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/claude/workflows/devrites-readonly-review.js +5 -4
- package/pack/generated/codex/AGENTS.md +1 -1
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +6 -3
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +3 -1
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +7 -3
- package/pack/generated/codex/agents/devrites-evidence-scout.toml +3 -1
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +3 -1
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +3 -1
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +3 -1
- package/pack/generated/codex/agents/devrites-proof-runner.toml +3 -1
- package/pack/generated/codex/agents/devrites-retrospector.toml +3 -1
- package/pack/generated/codex/agents/devrites-security-auditor.toml +3 -1
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +3 -1
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +8 -5
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +3 -1
- package/pack/generated/codex/agents/devrites-test-analyst.toml +3 -1
- package/pack/generated/codex/agents/devrites-upgrade-planner.toml +3 -1
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/codex/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/codex/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/codex/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/codex/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/codex/skills/overhaul/references/records.md +39 -0
- package/pack/generated/codex/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/codex/skills/rite/reference/menu.md +1 -1
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +12 -7
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +3 -3
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/codex/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/codex/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/codex/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/codex/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/codex/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/codex/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/codex/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/codex/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/codex/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +3 -3
- package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/codex/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +14 -11
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/codex/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/devin/AGENTS.md +1 -1
- package/pack/generated/devin/agents/devrites-code-reviewer.md +6 -3
- package/pack/generated/devin/agents/devrites-devex-reviewer.md +3 -1
- package/pack/generated/devin/agents/devrites-doubt-reviewer.md +7 -3
- package/pack/generated/devin/agents/devrites-evidence-scout.md +3 -1
- package/pack/generated/devin/agents/devrites-frontend-reviewer.md +3 -1
- package/pack/generated/devin/agents/devrites-performance-reviewer.md +3 -1
- package/pack/generated/devin/agents/devrites-plan-reviewer.md +3 -1
- package/pack/generated/devin/agents/devrites-proof-runner.md +3 -1
- package/pack/generated/devin/agents/devrites-retrospector.md +3 -1
- package/pack/generated/devin/agents/devrites-security-auditor.md +3 -1
- package/pack/generated/devin/agents/devrites-simplifier-reviewer.md +3 -1
- package/pack/generated/devin/agents/devrites-spec-reviewer.md +8 -5
- package/pack/generated/devin/agents/devrites-strategy-reviewer.md +3 -1
- package/pack/generated/devin/agents/devrites-test-analyst.md +3 -1
- package/pack/generated/devin/agents/devrites-upgrade-planner.md +3 -1
- package/pack/generated/devin/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/devin/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/devin/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/devin/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/devin/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/devin/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/devin/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/devin/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/devin/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/devin/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/devin/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/devin/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/devin/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/devin/skills/overhaul/references/records.md +39 -0
- package/pack/generated/devin/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/devin/skills/rite/reference/menu.md +1 -1
- package/pack/generated/devin/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/devin/skills/rite-autocomplete/SKILL.md +12 -7
- package/pack/generated/devin/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/devin/skills/rite-autocomplete/reference/loop.md +3 -3
- package/pack/generated/devin/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/devin/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/devin/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/devin/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/devin/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/devin/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/devin/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/devin/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/devin/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/devin/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/devin/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/devin/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/devin/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/devin/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/devin/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/devin/skills/rite-plan/reference/slicing.md +3 -3
- package/pack/generated/devin/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/devin/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/devin/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/devin/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/devin/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/devin/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/devin/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/devin/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/devin/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/devin/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/devin/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/devin/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/devin/skills/rite-temper/SKILL.md +14 -11
- package/pack/generated/devin/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/devin/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/devin/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/devin/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/devin/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/omp/agents/devrites-code-reviewer.md +6 -3
- package/pack/generated/omp/agents/devrites-devex-reviewer.md +3 -1
- package/pack/generated/omp/agents/devrites-doubt-reviewer.md +7 -3
- package/pack/generated/omp/agents/devrites-evidence-scout.md +3 -1
- package/pack/generated/omp/agents/devrites-frontend-reviewer.md +3 -1
- package/pack/generated/omp/agents/devrites-performance-reviewer.md +3 -1
- package/pack/generated/omp/agents/devrites-plan-reviewer.md +3 -1
- package/pack/generated/omp/agents/devrites-proof-runner.md +3 -1
- package/pack/generated/omp/agents/devrites-retrospector.md +3 -1
- package/pack/generated/omp/agents/devrites-security-auditor.md +3 -1
- package/pack/generated/omp/agents/devrites-simplifier-reviewer.md +3 -1
- package/pack/generated/omp/agents/devrites-spec-reviewer.md +8 -5
- package/pack/generated/omp/agents/devrites-strategy-reviewer.md +3 -1
- package/pack/generated/omp/agents/devrites-test-analyst.md +3 -1
- package/pack/generated/omp/agents/devrites-upgrade-planner.md +3 -1
- package/pack/generated/omp/commands/rite-define.md +1 -1
- package/pack/generated/omp/commands/rite-handoff.md +1 -1
- package/pack/generated/omp/commands/rite-plan.md +1 -1
- package/pack/generated/omp/commands/rite-pressure-test.md +1 -1
- package/pack/generated/omp/commands/rite-quick.md +1 -1
- package/pack/generated/omp/commands/rite-status.md +1 -1
- package/pack/generated/omp/commands/rite-temper.md +1 -1
- package/pack/generated/omp/commands/rite-zoom-out.md +1 -1
- package/pack/generated/omp/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/omp/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/omp/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/omp/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/omp/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/omp/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/omp/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/omp/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/omp/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/omp/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/omp/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/omp/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/omp/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/omp/skills/overhaul/references/records.md +39 -0
- package/pack/generated/omp/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/omp/skills/rite/reference/menu.md +1 -1
- package/pack/generated/omp/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/omp/skills/rite-autocomplete/SKILL.md +12 -7
- package/pack/generated/omp/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/omp/skills/rite-autocomplete/reference/loop.md +3 -3
- package/pack/generated/omp/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/omp/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/omp/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/omp/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/omp/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/omp/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/omp/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/omp/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/omp/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/omp/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/omp/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/omp/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/omp/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/omp/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/omp/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/omp/skills/rite-plan/reference/slicing.md +3 -3
- package/pack/generated/omp/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/omp/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/omp/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/omp/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/omp/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/omp/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/omp/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/omp/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/omp/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/omp/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/omp/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/omp/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/omp/skills/rite-temper/SKILL.md +14 -11
- package/pack/generated/omp/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/omp/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/omp/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/omp/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/omp/skills/rite-vet/reference/artifacts.md +1 -1
- package/pack/generated/pi/AGENTS.md +1 -1
- package/pack/generated/pi/agents/devrites-code-reviewer.md +6 -3
- package/pack/generated/pi/agents/devrites-devex-reviewer.md +3 -1
- package/pack/generated/pi/agents/devrites-doubt-reviewer.md +7 -3
- package/pack/generated/pi/agents/devrites-evidence-scout.md +3 -1
- package/pack/generated/pi/agents/devrites-frontend-reviewer.md +3 -1
- package/pack/generated/pi/agents/devrites-performance-reviewer.md +3 -1
- package/pack/generated/pi/agents/devrites-plan-reviewer.md +3 -1
- package/pack/generated/pi/agents/devrites-proof-runner.md +3 -1
- package/pack/generated/pi/agents/devrites-retrospector.md +3 -1
- package/pack/generated/pi/agents/devrites-security-auditor.md +3 -1
- package/pack/generated/pi/agents/devrites-simplifier-reviewer.md +3 -1
- package/pack/generated/pi/agents/devrites-spec-reviewer.md +8 -5
- package/pack/generated/pi/agents/devrites-strategy-reviewer.md +3 -1
- package/pack/generated/pi/agents/devrites-test-analyst.md +3 -1
- package/pack/generated/pi/agents/devrites-upgrade-planner.md +3 -1
- package/pack/generated/pi/prompts/rite-define.md +1 -1
- package/pack/generated/pi/prompts/rite-handoff.md +1 -1
- package/pack/generated/pi/prompts/rite-plan.md +1 -1
- package/pack/generated/pi/prompts/rite-pressure-test.md +1 -1
- package/pack/generated/pi/prompts/rite-quick.md +1 -1
- package/pack/generated/pi/prompts/rite-status.md +1 -1
- package/pack/generated/pi/prompts/rite-temper.md +1 -1
- package/pack/generated/pi/prompts/rite-zoom-out.md +1 -1
- package/pack/generated/pi/skills/devrites-browser-proof/SKILL.md +2 -2
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/design-references.md +18 -18
- package/pack/generated/pi/skills/devrites-frontend-craft/reference/quality-standards.md +6 -4
- package/pack/generated/pi/skills/devrites-interview/SKILL.md +4 -4
- package/pack/generated/pi/skills/devrites-lib/reference/parallel-dispatch.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/afk-hitl.md +11 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/agents.md +3 -2
- package/pack/generated/pi/skills/devrites-lib/reference/standards/gates.md +6 -5
- package/pack/generated/pi/skills/devrites-lib/reference/standards/spec-grammar.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/standards/verification-methods.md +3 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/windows.md +3 -3
- package/pack/generated/pi/skills/devrites-lib/reference/standards/workflow-artifacts.md +2 -2
- package/pack/generated/pi/skills/devrites-lib/reference/visual-playbooks/outline-template.md +1 -1
- package/pack/generated/pi/skills/devrites-lib/reference/workspace-artifact-schema.md +4 -4
- package/pack/generated/pi/skills/devrites-ux-shape/SKILL.md +11 -12
- package/pack/generated/pi/skills/devrites-ux-shape/reference/visual-direction-probe.md +3 -1
- package/pack/generated/pi/skills/overhaul/SKILL.md +1 -1
- package/pack/generated/pi/skills/overhaul/references/orchestration.md +5 -3
- package/pack/generated/pi/skills/overhaul/references/records.md +39 -0
- package/pack/generated/pi/skills/overhaul/references/scoring.md +14 -4
- package/pack/generated/pi/skills/rite/reference/menu.md +1 -1
- package/pack/generated/pi/skills/rite-adopt/SKILL.md +8 -2
- package/pack/generated/pi/skills/rite-autocomplete/SKILL.md +12 -7
- package/pack/generated/pi/skills/rite-autocomplete/reference/decision-policy.md +3 -2
- package/pack/generated/pi/skills/rite-autocomplete/reference/loop.md +3 -3
- package/pack/generated/pi/skills/rite-autocomplete/reference/stop-conditions.md +6 -3
- package/pack/generated/pi/skills/rite-build/SKILL.md +2 -1
- package/pack/generated/pi/skills/rite-build/reference/afk-discipline.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/generated/pi/skills/rite-build/reference/checkpoint.md +5 -0
- package/pack/generated/pi/skills/rite-build/reference/parallel-batch.md +2 -2
- package/pack/generated/pi/skills/rite-build/reference/wright-dispatch.md +3 -2
- package/pack/generated/pi/skills/rite-clarify/SKILL.md +5 -4
- package/pack/generated/pi/skills/rite-clarify/reference/anti-patterns.md +2 -2
- package/pack/generated/pi/skills/rite-clarify/reference/decision-coverage.md +3 -2
- package/pack/generated/pi/skills/rite-converge/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-customize/SKILL.md +6 -4
- package/pack/generated/pi/skills/rite-define/SKILL.md +2 -0
- package/pack/generated/pi/skills/rite-define/reference/gates.md +8 -7
- package/pack/generated/pi/skills/rite-explain/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-explain/reference/intake.md +1 -1
- package/pack/generated/pi/skills/rite-fast/SKILL.md +1 -1
- package/pack/generated/pi/skills/rite-plan/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-plan/reference/replan-and-repair.md +4 -4
- package/pack/generated/pi/skills/rite-plan/reference/slicing.md +3 -3
- package/pack/generated/pi/skills/rite-polish/reference/anti-ai-slop.md +1 -1
- package/pack/generated/pi/skills/rite-prove/reference/browser-proof.md +5 -5
- package/pack/generated/pi/skills/rite-resolve/SKILL.md +3 -3
- package/pack/generated/pi/skills/rite-seal/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-seal/reference/phase-contract.md +3 -2
- package/pack/generated/pi/skills/rite-seal/reference/seal-template.md +2 -0
- package/pack/generated/pi/skills/rite-ship/SKILL.md +4 -2
- package/pack/generated/pi/skills/rite-ship/reference/git-ship.md +8 -2
- package/pack/generated/pi/skills/rite-ship/reference/ship-template.md +2 -1
- package/pack/generated/pi/skills/rite-spec/SKILL.md +2 -2
- package/pack/generated/pi/skills/rite-spec/reference/spec-checklists.md +1 -1
- package/pack/generated/pi/skills/rite-spec/reference/spec-template.md +7 -3
- package/pack/generated/pi/skills/rite-spec/reference/state-workspace.md +2 -0
- package/pack/generated/pi/skills/rite-temper/SKILL.md +14 -11
- package/pack/generated/pi/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/generated/pi/skills/rite-temper/reference/significance.md +10 -3
- package/pack/generated/pi/skills/rite-temper/reference/strategy-template.md +13 -2
- package/pack/generated/pi/skills/rite-vet/SKILL.md +4 -3
- package/pack/generated/pi/skills/rite-vet/reference/artifacts.md +1 -1
- package/package.json +5 -4
- package/scripts/build-host-artifacts.sh +15 -0
- package/scripts/codex-generate.sh +1 -1
- package/scripts/devin-generate.sh +1 -1
- package/scripts/expand-includes.py +46 -0
- package/scripts/install-lib.sh +42 -7
- package/scripts/omp-generate.sh +11 -0
- package/scripts/pi-generate.sh +12 -1
- package/update.sh +1 -2
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/README.md +0 -7
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/architecture.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/assumptions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/brief.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decision-coverage.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/decisions.md +0 -4
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/eng-review.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/gates.md +0 -4
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/plan.md +0 -5
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/questions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/spec.md +0 -6
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/state.md +0 -8
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/tasks.md +0 -1
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/test-plan.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/auth-tokens/traceability.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/README.md +0 -7
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/assumptions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/brief.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/decisions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/questions.md +0 -3
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/spec.md +0 -6
- package/engine/testdata/fixtures/basic/devrites-root/work/search-ranking/state.md +0 -3
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +0 -2
- package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +0 -2
- package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +0 -1
- package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +0 -1
- package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +0 -1
- package/engine/testdata/golden/TestParityLearnings/add.golden +0 -2
- package/engine/testdata/golden/TestParityLearnings/list.golden +0 -5
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +0 -2
- package/engine/testdata/golden/TestParityLearnings/mine.golden +0 -5
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +0 -2
- package/engine/testdata/golden/TestParityLearnings/unknown.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +0 -1
- package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +0 -1
- package/engine/testdata/golden/TestParityPreamble/afk/a.golden +0 -14
- package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +0 -18
- package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +0 -10
- package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +0 -18
- package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +0 -2
- package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +0 -11
- package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +0 -13
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +0 -4
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +0 -3
- package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +0 -1
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +0 -4
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +0 -3
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +0 -3
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +0 -4
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +0 -3
- package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +0 -7
- package/engine/testdata/golden/TestParityResolve/answer.golden +0 -4
- package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +0 -2
- package/engine/testdata/golden/TestParityResolve/batch.golden +0 -3
- package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +0 -9
- package/engine/testdata/golden/TestParityResolve/drop.golden +0 -4
- package/engine/testdata/golden/TestParityResolve/missing-answer.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/no-workspace.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/not-found.golden +0 -1
- package/engine/testdata/golden/TestParityResolve/not-open.golden +0 -1
- package/engine/testdata/golden/TestStatusLiveWorkspace.golden +0 -10
- package/engine/testdata/golden/status/auth-tokens.txt +0 -9
- package/engine/testdata/golden/status/search-ranking.txt +0 -9
- package/engine/testdata/visual/open-visual-smoke.html +0 -675
- package/engine/testdata/visual/open-visual-smoke.outline.md +0 -54
- package/engine/tests/adr_0003_gate_exit_code_test.go +0 -32
- package/engine/tests/adr_0004_required_by_phase_test.go +0 -54
- package/engine/tests/adr_0011_define_plan_test.go +0 -32
- package/engine/tests/adr_0027_readiness_binding_test.go +0 -107
- package/engine/tests/cli_test.go +0 -126
- package/engine/tests/gate_test.go +0 -669
- package/engine/tests/meta_test.go +0 -37
- package/engine/tests/parity_closeout_test.go +0 -105
- package/engine/tests/parity_githelpers_test.go +0 -41
- package/engine/tests/parity_resolve_test.go +0 -136
- package/engine/tests/parity_test.go +0 -86
- package/engine/tests/workspace_observation_migration_test.go +0 -1069
|
@@ -7,12 +7,17 @@
|
|
|
7
7
|
package notes
|
|
8
8
|
|
|
9
9
|
import (
|
|
10
|
+
"bufio"
|
|
11
|
+
"bytes"
|
|
10
12
|
"fmt"
|
|
13
|
+
"io"
|
|
11
14
|
"io/fs"
|
|
12
15
|
"os"
|
|
13
16
|
"path/filepath"
|
|
14
17
|
"regexp"
|
|
15
18
|
"strings"
|
|
19
|
+
"unicode"
|
|
20
|
+
"unicode/utf8"
|
|
16
21
|
|
|
17
22
|
"github.com/devrites/devrites/internal/markdowntext"
|
|
18
23
|
)
|
|
@@ -167,7 +172,9 @@ const (
|
|
|
167
172
|
// GradeMoved: the quote is absent from the subject and present in exactly
|
|
168
173
|
// one other repository file; the anchor is repairable.
|
|
169
174
|
GradeMoved Grade = "moved"
|
|
170
|
-
// GradeStale: the subject file exists but the quote is gone everywhere
|
|
175
|
+
// GradeStale: the subject file exists but the quote is gone everywhere, or
|
|
176
|
+
// the subject exists and this pass declined to read it as text. Either way
|
|
177
|
+
// re-anchoring is a human decision.
|
|
171
178
|
GradeStale Grade = "stale"
|
|
172
179
|
// GradeAmbiguous: the quote is absent from the subject and present in more
|
|
173
180
|
// than one other file; re-anchoring needs human judgment.
|
|
@@ -177,11 +184,14 @@ const (
|
|
|
177
184
|
)
|
|
178
185
|
|
|
179
186
|
// Graded pairs a note with its current grade and, for moved notes, the
|
|
180
|
-
// repository-relative path the quote now lives in.
|
|
187
|
+
// repository-relative path the quote now lives in. Detail explains a grade the
|
|
188
|
+
// grader could not positively determine — currently the read bound that stopped
|
|
189
|
+
// it — so the report never presents an unresolved read as a resolved one.
|
|
181
190
|
type Graded struct {
|
|
182
191
|
*Note
|
|
183
192
|
Grade Grade
|
|
184
193
|
MovedTo string
|
|
194
|
+
Detail string
|
|
185
195
|
}
|
|
186
196
|
|
|
187
197
|
// normalizeWS collapses whitespace so a quote matches across re-wrapping and
|
|
@@ -207,34 +217,179 @@ var skippedDirs = map[string]bool{
|
|
|
207
217
|
|
|
208
218
|
const maxSearchFileBytes = 512 << 10
|
|
209
219
|
|
|
210
|
-
//
|
|
211
|
-
//
|
|
212
|
-
|
|
220
|
+
// readState is the outcome of reading one file as note text. The three states
|
|
221
|
+
// must stay distinct all the way to the caller: a decline to read is not
|
|
222
|
+
// evidence of absence, and only a proven absence entitles a grader to look
|
|
223
|
+
// for the quote somewhere else.
|
|
224
|
+
type readState int
|
|
225
|
+
|
|
226
|
+
const (
|
|
227
|
+
// readOK: the file was read as normalized text.
|
|
228
|
+
readOK readState = iota
|
|
229
|
+
// readAbsent: there is no such file.
|
|
230
|
+
readAbsent
|
|
231
|
+
// readDeclined: the file is present but this pass did not read it as text.
|
|
232
|
+
readDeclined
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
// fileRead carries a read outcome through to its caller. Reason names the bound
|
|
236
|
+
// that refused the read, so a report can say why a subject was not graded
|
|
237
|
+
// instead of implying its quote had been deleted.
|
|
238
|
+
type fileRead struct {
|
|
239
|
+
text string
|
|
240
|
+
state readState
|
|
241
|
+
reason string
|
|
242
|
+
// found is set only by fileHasQuote: the normalized quote occurs in a
|
|
243
|
+
// file that was read to its end.
|
|
244
|
+
found bool
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// readable reports whether this pass obtained the file's text.
|
|
248
|
+
func (f fileRead) readable() bool { return f.state == readOK }
|
|
249
|
+
|
|
250
|
+
// statText reports the file's info when it is a regular file; otherwise it
|
|
251
|
+
// returns the absent or declined outcome and false.
|
|
252
|
+
func statText(path string) (os.FileInfo, fileRead, bool) {
|
|
213
253
|
info, err := os.Stat(path)
|
|
214
|
-
if
|
|
215
|
-
return
|
|
254
|
+
if os.IsNotExist(err) {
|
|
255
|
+
return nil, fileRead{state: readAbsent}, false
|
|
256
|
+
}
|
|
257
|
+
if err != nil {
|
|
258
|
+
return nil, fileRead{state: readDeclined, reason: "stat failed: " + err.Error()}, false
|
|
259
|
+
}
|
|
260
|
+
if !info.Mode().IsRegular() {
|
|
261
|
+
return nil, fileRead{state: readDeclined, reason: "not a regular file"}, false
|
|
262
|
+
}
|
|
263
|
+
return info, fileRead{}, true
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// fileText reads a candidate file as normalized text, skipping oversized and
|
|
267
|
+
// binary files so quotes never match inside archives or images. Every decline
|
|
268
|
+
// keeps its own identity: only a missing file reports as absent. A size, mode or
|
|
269
|
+
// permission bound can justify refusing to read a file; none of them is evidence
|
|
270
|
+
// about where its quote went, so none of them may stand in for absence.
|
|
271
|
+
func fileText(path string) fileRead {
|
|
272
|
+
info, declined, ok := statText(path)
|
|
273
|
+
if !ok {
|
|
274
|
+
return declined
|
|
275
|
+
}
|
|
276
|
+
if info.Size() > maxSearchFileBytes {
|
|
277
|
+
return fileRead{state: readDeclined, reason: fmt.Sprintf("%d bytes is over the %d-byte read cap", info.Size(), maxSearchFileBytes)}
|
|
216
278
|
}
|
|
217
279
|
// #nosec G304 -- repository scan path under the resolved project root
|
|
218
280
|
raw, err := os.ReadFile(path)
|
|
219
281
|
if err != nil {
|
|
220
|
-
return ""
|
|
282
|
+
return fileRead{state: readDeclined, reason: "read failed: " + err.Error()}
|
|
221
283
|
}
|
|
222
284
|
head := raw
|
|
223
285
|
if len(head) > 512 {
|
|
224
286
|
head = head[:512]
|
|
225
287
|
}
|
|
226
288
|
if strings.IndexByte(string(head), 0) >= 0 {
|
|
227
|
-
return ""
|
|
289
|
+
return fileRead{state: readDeclined, reason: "NUL byte in the first 512 bytes"}
|
|
290
|
+
}
|
|
291
|
+
return fileRead{text: normalizeWS(string(raw)), state: readOK}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// fileHasQuote reports whether the normalized quote occurs in the file's
|
|
295
|
+
// normalized text, with no size limit. It streams: memory stays bounded by the
|
|
296
|
+
// chunk size plus the quote length, because only the last len(quote)-1
|
|
297
|
+
// normalized bytes carry over between chunks, so a match that straddles a
|
|
298
|
+
// chunk boundary is still found. The size cap exists to bound the repository-wide
|
|
299
|
+
// relocation scan, not to decide whether the subject itself can be anchored.
|
|
300
|
+
func fileHasQuote(path, quote string) fileRead {
|
|
301
|
+
if _, declined, ok := statText(path); !ok {
|
|
302
|
+
return declined
|
|
303
|
+
}
|
|
304
|
+
// #nosec G304 -- subject path under the resolved project root
|
|
305
|
+
f, err := os.Open(path)
|
|
306
|
+
if err != nil {
|
|
307
|
+
return fileRead{state: readDeclined, reason: "read failed: " + err.Error()}
|
|
308
|
+
}
|
|
309
|
+
defer func() { _ = f.Close() }()
|
|
310
|
+
br := bufio.NewReaderSize(f, 64<<10)
|
|
311
|
+
head, err := br.Peek(512)
|
|
312
|
+
if err != nil && err != io.EOF && err != bufio.ErrBufferFull {
|
|
313
|
+
return fileRead{state: readDeclined, reason: "read failed: " + err.Error()}
|
|
314
|
+
}
|
|
315
|
+
if bytes.IndexByte(head, 0) >= 0 {
|
|
316
|
+
return fileRead{state: readDeclined, reason: "NUL byte in the first 512 bytes"}
|
|
317
|
+
}
|
|
318
|
+
q := []byte(quote)
|
|
319
|
+
var (
|
|
320
|
+
chunk = make([]byte, 32<<10)
|
|
321
|
+
window []byte // normalized tail carried between chunks, then the new chunk
|
|
322
|
+
carry []byte // incomplete trailing UTF-8 sequence
|
|
323
|
+
wroteWord bool
|
|
324
|
+
pendingGap bool
|
|
325
|
+
)
|
|
326
|
+
for {
|
|
327
|
+
n, rerr := br.Read(chunk)
|
|
328
|
+
if rerr != nil && rerr != io.EOF {
|
|
329
|
+
return fileRead{state: readDeclined, reason: "read failed: " + rerr.Error()}
|
|
330
|
+
}
|
|
331
|
+
eof := rerr == io.EOF
|
|
332
|
+
raw := append(carry, chunk[:n]...)
|
|
333
|
+
carry = nil
|
|
334
|
+
for i := 0; i < len(raw); {
|
|
335
|
+
if !eof && !utf8.FullRune(raw[i:]) {
|
|
336
|
+
carry = append([]byte(nil), raw[i:]...)
|
|
337
|
+
break
|
|
338
|
+
}
|
|
339
|
+
r, size := utf8.DecodeRune(raw[i:])
|
|
340
|
+
if unicode.IsSpace(r) {
|
|
341
|
+
pendingGap = true
|
|
342
|
+
} else {
|
|
343
|
+
if pendingGap && wroteWord {
|
|
344
|
+
window = append(window, ' ')
|
|
345
|
+
}
|
|
346
|
+
pendingGap = false
|
|
347
|
+
wroteWord = true
|
|
348
|
+
window = append(window, raw[i:i+size]...)
|
|
349
|
+
}
|
|
350
|
+
i += size
|
|
351
|
+
}
|
|
352
|
+
if bytes.Contains(window, q) {
|
|
353
|
+
return fileRead{state: readOK, found: true}
|
|
354
|
+
}
|
|
355
|
+
if keep := len(q) - 1; len(window) > keep {
|
|
356
|
+
window = append(window[:0], window[len(window)-keep:]...)
|
|
357
|
+
}
|
|
358
|
+
if eof {
|
|
359
|
+
return fileRead{state: readOK}
|
|
360
|
+
}
|
|
228
361
|
}
|
|
229
|
-
return normalizeWS(string(raw)), true
|
|
230
362
|
}
|
|
231
363
|
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
|
|
235
|
-
|
|
364
|
+
// relocation is one note whose subject is gone and whose quote the shared
|
|
365
|
+
// repository walk is looking for.
|
|
366
|
+
type relocation struct {
|
|
367
|
+
note *Note
|
|
368
|
+
quote string
|
|
369
|
+
subjectRead fileRead
|
|
370
|
+
found []string
|
|
371
|
+
incomplete bool
|
|
372
|
+
done bool
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// readCandidate reads one walked file; a variable so tests can count reads.
|
|
376
|
+
var readCandidate = fileText
|
|
377
|
+
|
|
378
|
+
// locateQuotes walks the project once, reads each file once, and records for
|
|
379
|
+
// every pending note the repository-relative files (excluding its own subject)
|
|
380
|
+
// whose normalized text contains its quote. A note's incomplete flag is set when
|
|
381
|
+
// the walk or a file read failed while it was still scanning, so it may have
|
|
382
|
+
// missed a candidate; size and binary declines are not failures. A note stops
|
|
383
|
+
// scanning once a second hit makes it ambiguous.
|
|
384
|
+
func locateQuotes(project string, pending []*relocation) {
|
|
385
|
+
active := len(pending)
|
|
236
386
|
_ = filepath.WalkDir(project, func(path string, d fs.DirEntry, err error) error {
|
|
237
387
|
if err != nil {
|
|
388
|
+
for _, r := range pending {
|
|
389
|
+
if !r.done {
|
|
390
|
+
r.incomplete = true
|
|
391
|
+
}
|
|
392
|
+
}
|
|
238
393
|
return nil
|
|
239
394
|
}
|
|
240
395
|
if d.IsDir() {
|
|
@@ -248,52 +403,100 @@ func quoteLocations(project, subject, quote string) []string {
|
|
|
248
403
|
return nil
|
|
249
404
|
}
|
|
250
405
|
rel = filepath.ToSlash(rel)
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
406
|
+
var read fileRead
|
|
407
|
+
readDone := false
|
|
408
|
+
for _, r := range pending {
|
|
409
|
+
if r.done || rel == r.note.Subject {
|
|
410
|
+
continue
|
|
411
|
+
}
|
|
412
|
+
if !readDone {
|
|
413
|
+
read, readDone = readCandidate(path), true
|
|
414
|
+
}
|
|
415
|
+
if read.state == readDeclined && (strings.HasPrefix(read.reason, "stat failed") || strings.HasPrefix(read.reason, "read failed")) {
|
|
416
|
+
r.incomplete = true
|
|
417
|
+
}
|
|
418
|
+
if read.readable() && strings.Contains(read.text, r.quote) {
|
|
419
|
+
r.found = append(r.found, rel)
|
|
420
|
+
if len(r.found) > 1 {
|
|
421
|
+
r.done = true // ambiguous already; stop scanning for it
|
|
422
|
+
active--
|
|
423
|
+
}
|
|
258
424
|
}
|
|
259
425
|
}
|
|
426
|
+
if active == 0 {
|
|
427
|
+
return fs.SkipAll
|
|
428
|
+
}
|
|
260
429
|
return nil
|
|
261
430
|
})
|
|
262
|
-
return found
|
|
263
431
|
}
|
|
264
432
|
|
|
265
|
-
//
|
|
266
|
-
//
|
|
267
|
-
//
|
|
268
|
-
|
|
433
|
+
// gradeSubject grades one note against its subject file alone. The returned
|
|
434
|
+
// relocation is non-nil only when the subject is positively determined gone,
|
|
435
|
+
// so exact notes cost one file read. A subject this pass declines to read is
|
|
436
|
+
// never scanned: the scan is the only evidence that could license re-pointing
|
|
437
|
+
// the anchor, and a declined read is no evidence at all.
|
|
438
|
+
func gradeSubject(project string, note *Note) (Graded, *relocation) {
|
|
269
439
|
graded := Graded{Note: note}
|
|
270
440
|
subjectPath := filepath.Join(project, filepath.FromSlash(note.Subject))
|
|
271
|
-
subjectText, subjectOK := fileText(subjectPath)
|
|
272
441
|
quote := normalizeWS(note.Quote)
|
|
273
|
-
|
|
442
|
+
subjectRead := fileHasQuote(subjectPath, quote)
|
|
443
|
+
if subjectRead.found {
|
|
274
444
|
graded.Grade = GradeExact
|
|
275
|
-
return graded
|
|
445
|
+
return graded, nil
|
|
446
|
+
}
|
|
447
|
+
if subjectRead.state == readDeclined {
|
|
448
|
+
// Present but unreadable as text. Grade stale so a human re-anchors,
|
|
449
|
+
// and carry the reason so the grade is not read as a deleted quote.
|
|
450
|
+
graded.Grade = GradeStale
|
|
451
|
+
graded.Detail = subjectRead.reason
|
|
452
|
+
return graded, nil
|
|
276
453
|
}
|
|
277
|
-
|
|
454
|
+
return graded, &relocation{note: note, quote: quote, subjectRead: subjectRead}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// settle turns a finished scan into the note's grade.
|
|
458
|
+
func (r *relocation) settle(graded *Graded) {
|
|
278
459
|
switch {
|
|
279
|
-
case len(found) == 1:
|
|
460
|
+
case len(r.found) == 1 && r.incomplete:
|
|
461
|
+
// Part of the tree went unread, so this hit may not be the only one.
|
|
462
|
+
graded.Grade = GradeAmbiguous
|
|
463
|
+
case len(r.found) == 1:
|
|
280
464
|
graded.Grade = GradeMoved
|
|
281
|
-
graded.MovedTo = found[0]
|
|
282
|
-
case len(found) > 1:
|
|
465
|
+
graded.MovedTo = r.found[0]
|
|
466
|
+
case len(r.found) > 1:
|
|
283
467
|
graded.Grade = GradeAmbiguous
|
|
284
|
-
case
|
|
468
|
+
case r.subjectRead.readable():
|
|
285
469
|
graded.Grade = GradeStale
|
|
286
470
|
default:
|
|
287
471
|
graded.Grade = GradeLost
|
|
288
472
|
}
|
|
289
|
-
return graded
|
|
290
473
|
}
|
|
291
474
|
|
|
292
|
-
//
|
|
475
|
+
// GradeNote resolves one note's current anchor state against the project tree.
|
|
476
|
+
func GradeNote(project string, note *Note) Graded {
|
|
477
|
+
doc := &Document{Notes: []*Note{note}}
|
|
478
|
+
return GradeAll(project, doc)[0]
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// GradeAll grades every note in document order. Subjects are graded first; the
|
|
482
|
+
// repository-wide relocation scan then runs once for all notes that need it.
|
|
293
483
|
func GradeAll(project string, doc *Document) []Graded {
|
|
294
|
-
out := make([]Graded,
|
|
295
|
-
|
|
296
|
-
|
|
484
|
+
out := make([]Graded, len(doc.Notes))
|
|
485
|
+
var pending []*relocation
|
|
486
|
+
at := map[*relocation]int{}
|
|
487
|
+
for i, note := range doc.Notes {
|
|
488
|
+
g, r := gradeSubject(project, note)
|
|
489
|
+
out[i] = g
|
|
490
|
+
if r != nil {
|
|
491
|
+
pending = append(pending, r)
|
|
492
|
+
at[r] = i
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
if len(pending) > 0 {
|
|
496
|
+
locateQuotes(project, pending)
|
|
497
|
+
for _, r := range pending {
|
|
498
|
+
r.settle(&out[at[r]])
|
|
499
|
+
}
|
|
297
500
|
}
|
|
298
501
|
return out
|
|
299
502
|
}
|