devrites 3.0.4 → 3.0.6
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 +40 -1
- package/README.md +280 -521
- package/SECURITY.md +91 -77
- package/docs/adr/README.md +7 -9
- package/docs/agents/domain.md +5 -5
- package/docs/agents/issue-driven-rites.md +5 -5
- package/docs/agents/issue-tracker.md +1 -1
- package/docs/agents/triage-labels.md +2 -2
- package/docs/architecture.md +101 -85
- package/docs/capability-surface-selection.md +3 -1
- package/docs/cli.md +20 -13
- package/docs/command-map.md +39 -35
- package/docs/engine/agent-contract.md +11 -9
- package/docs/engine/commands.md +92 -78
- package/docs/engine/state-schema.md +23 -19
- package/docs/engine/workspace-schema.md +12 -11
- package/docs/extensions.md +17 -17
- package/docs/flow.md +34 -23
- package/docs/harness-compliance.md +2 -2
- package/docs/orchestration.md +21 -20
- package/docs/porting-to-a-new-harness.md +6 -2
- package/docs/release.md +30 -12
- package/docs/research/go-authoritative-workflow-schema-and-quality-2026-07-20.md +3 -3
- package/docs/skills.md +77 -52
- package/docs/templates/CRITIC_REVIEW_PACKET_TEMPLATE.md +35 -0
- package/docs/usage.md +56 -45
- package/engine/Makefile +2 -2
- package/engine/commands.go +3 -3
- package/engine/harnessmatrix.go +2 -2
- package/engine/hookpolicy.go +9 -9
- package/engine/hooks.go +11 -11
- package/engine/hooks_workspace.go +11 -11
- package/engine/internal/doctor/doctor.go +7 -7
- package/engine/internal/gate/gate.go +11 -11
- package/engine/internal/harness/compliance.go +1 -1
- package/engine/internal/harness/harness.go +7 -7
- package/engine/internal/install/install.go +2 -0
- package/engine/internal/install/install_test.go +3 -3
- package/engine/internal/iohooks/detach_unix.go +1 -1
- package/engine/internal/iohooks/iohooks.go +8 -8
- package/engine/internal/lib/adoption.go +1 -1
- package/engine/internal/lib/analyze.go +15 -15
- package/engine/internal/lib/archivesearch.go +3 -3
- package/engine/internal/lib/budget.go +3 -3
- package/engine/internal/lib/buildreadiness.go +6 -6
- package/engine/internal/lib/checkacceptance.go +10 -10
- package/engine/internal/lib/closeout.go +5 -5
- package/engine/internal/lib/conventions.go +3 -3
- package/engine/internal/lib/coverage.go +4 -4
- package/engine/internal/lib/doubtcoverage.go +9 -9
- package/engine/internal/lib/evidencefresh.go +6 -6
- package/engine/internal/lib/extensions.go +9 -9
- package/engine/internal/lib/footprint.go +13 -13
- package/engine/internal/lib/jsonout.go +2 -2
- package/engine/internal/lib/lanes.go +2 -2
- package/engine/internal/lib/learnings.go +9 -9
- package/engine/internal/lib/ledger.go +8 -8
- package/engine/internal/lib/ledger_test.go +5 -5
- package/engine/internal/lib/mutationgate.go +4 -4
- package/engine/internal/lib/overrides.go +9 -9
- package/engine/internal/lib/overrides_test.go +2 -2
- package/engine/internal/lib/packageexistence.go +732 -55
- package/engine/internal/lib/packageexistence_test.go +343 -0
- package/engine/internal/lib/preamble.go +6 -6
- package/engine/internal/lib/progress.go +5 -5
- package/engine/internal/lib/reconcile.go +80 -20
- package/engine/internal/lib/reconcile_test.go +13 -5
- package/engine/internal/lib/resolve.go +3 -3
- package/engine/internal/lib/reviewerstats.go +2 -2
- package/engine/internal/lib/reviewintegrity.go +13 -13
- package/engine/internal/lib/reviewintegrity_test.go +6 -6
- package/engine/internal/lib/runbook.go +1 -1
- package/engine/internal/lib/session.go +1 -1
- package/engine/internal/lib/session_test.go +2 -2
- package/engine/internal/lib/specparse.go +4 -4
- package/engine/internal/lib/specskeleton.go +2 -2
- package/engine/internal/lib/specvalidate.go +13 -13
- package/engine/internal/lib/stuck.go +13 -13
- package/engine/internal/lib/templates/conventions_ledger_header.md +1 -1
- package/engine/internal/lib/templates/conventions_orient_header.txt +1 -1
- package/engine/internal/lib/testintegrity.go +9 -9
- package/engine/internal/lib/tickafk.go +4 -4
- package/engine/internal/lib/util.go +1 -1
- package/engine/internal/migrate/migrate.go +2 -2
- package/engine/internal/migrate/migrate_test.go +1 -0
- package/engine/internal/orient/firstrun.go +8 -8
- package/engine/internal/orient/orient.go +5 -5
- package/engine/internal/state/concurrency_test.go +4 -4
- package/engine/internal/state/feature.go +6 -6
- package/engine/internal/state/lock_unix.go +1 -1
- package/engine/internal/state/schema.go +1 -1
- package/engine/internal/state/snapshot.go +2 -2
- package/engine/internal/state/write.go +1 -1
- package/engine/internal/version/version.go +1 -1
- package/engine/main.go +5 -5
- package/engine/subagent_orient_context.txt +4 -4
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +1 -1
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +2 -2
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +3 -3
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +2 -2
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +4 -4
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +3 -3
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +3 -3
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +1 -1
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +1 -1
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +1 -1
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +1 -1
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +1 -1
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +2 -2
- package/engine/testdata/golden/TestParityCursor/bare.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +1 -1
- package/engine/testdata/golden/TestParityCursor/red.golden +2 -2
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +1 -1
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/mine.golden +1 -1
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +1 -1
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +1 -1
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +1 -1
- package/engine/testdata/golden/TestParityPackageExistence/declared.golden +1 -1
- package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +1 -1
- package/engine/testdata/golden/TestParityResolve/batch.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +1 -1
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +1 -1
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +1 -1
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +1 -1
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +1 -1
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +1 -1
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +1 -1
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +1 -1
- package/engine/testdata/golden/TestParityTickAfk/none.golden +1 -1
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +1 -1
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +1 -1
- package/engine/tests/adr_0004_required_by_phase_test.go +2 -2
- package/engine/tests/adr_0006_clock_seam_test.go +1 -1
- package/engine/tests/budget_test.go +1 -1
- package/engine/tests/canonical_ac_ids_test.go +2 -2
- package/engine/tests/cli_test.go +1 -1
- package/engine/tests/concurrency_cli_test.go +1 -1
- package/engine/tests/gate_test.go +4 -4
- package/engine/tests/hook_test.go +3 -3
- package/engine/tests/hooks_io_test.go +1 -1
- package/engine/tests/lib_parity_test.go +29 -29
- package/engine/tests/meta_test.go +2 -2
- package/engine/tests/parity_closeout_test.go +1 -1
- package/engine/tests/parity_learnings_test.go +2 -2
- package/engine/tests/parity_mutationgate_test.go +2 -2
- package/engine/tests/parity_resolve_test.go +1 -1
- package/engine/tests/parity_test.go +3 -3
- package/engine/tests/parity_tickafk_test.go +1 -1
- package/engine/validatepack.go +5 -5
- package/engine/validatepackskills.go +9 -9
- package/pack/.claude/agents/devrites-code-reviewer.md +21 -22
- package/pack/.claude/agents/devrites-devex-reviewer.md +17 -17
- package/pack/.claude/agents/devrites-doubt-reviewer.md +6 -6
- package/pack/.claude/agents/devrites-forge-judge.md +26 -26
- package/pack/.claude/agents/devrites-frontend-reviewer.md +17 -17
- package/pack/.claude/agents/devrites-performance-reviewer.md +19 -18
- package/pack/.claude/agents/devrites-plan-reviewer.md +29 -27
- package/pack/.claude/agents/devrites-retrospector.md +19 -19
- package/pack/.claude/agents/devrites-security-auditor.md +15 -15
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +14 -14
- package/pack/.claude/agents/devrites-slice-wright.md +52 -51
- package/pack/.claude/agents/devrites-spec-reviewer.md +11 -11
- package/pack/.claude/agents/devrites-strategy-reviewer.md +21 -21
- package/pack/.claude/agents/devrites-test-analyst.md +13 -13
- package/pack/.claude/settings.json +1 -1
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +12 -12
- package/pack/.claude/skills/devrites-audit/SKILL.md +7 -7
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +16 -16
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +14 -14
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/.claude/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/.claude/skills/devrites-doubt/SKILL.md +14 -14
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +18 -18
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/.claude/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/.claude/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/.claude/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/.claude/skills/devrites-interview/SKILL.md +27 -27
- package/pack/.claude/skills/devrites-lib/SKILL.md +25 -27
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +12 -13
- package/pack/.claude/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/.claude/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/.claude/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +5 -5
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +6 -6
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +8 -8
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +33 -33
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/.claude/skills/rite/SKILL.md +13 -14
- package/pack/.claude/skills/rite/reference/menu.md +10 -10
- package/pack/.claude/skills/rite-adopt/SKILL.md +17 -18
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +14 -14
- package/pack/.claude/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/.claude/skills/rite-build/SKILL.md +22 -22
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/forge.md +28 -29
- package/pack/.claude/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/.claude/skills/rite-build/reference/output.md +1 -1
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/.claude/skills/rite-build/reference/tdd.md +6 -6
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/.claude/skills/rite-converge/SKILL.md +17 -17
- package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/.claude/skills/rite-customize/SKILL.md +2 -2
- package/pack/.claude/skills/rite-define/SKILL.md +25 -25
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/.claude/skills/rite-define/reference/gates.md +13 -13
- package/pack/.claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/.claude/skills/rite-doctor/SKILL.md +11 -11
- package/pack/.claude/skills/rite-dogfood/SKILL.md +2 -2
- package/pack/.claude/skills/rite-explain/SKILL.md +22 -22
- package/pack/.claude/skills/rite-explain/reference/intake.md +16 -16
- package/pack/.claude/skills/rite-frame/SKILL.md +22 -22
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/.claude/skills/rite-handoff/SKILL.md +12 -12
- package/pack/.claude/skills/rite-learn/SKILL.md +23 -23
- package/pack/.claude/skills/rite-plan/SKILL.md +21 -21
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/.claude/skills/rite-polish/SKILL.md +11 -11
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/.claude/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/.claude/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/.claude/skills/rite-polish/reference/code.md +26 -26
- package/pack/.claude/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/.claude/skills/rite-polish/reference/ui.md +23 -23
- package/pack/.claude/skills/rite-pov/SKILL.md +3 -3
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +2 -2
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +14 -14
- package/pack/.claude/skills/rite-prototype/SKILL.md +13 -13
- package/pack/.claude/skills/rite-prove/SKILL.md +17 -17
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/.claude/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/.claude/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/.claude/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/.claude/skills/rite-quick/SKILL.md +22 -22
- package/pack/.claude/skills/rite-resolve/SKILL.md +18 -18
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/.claude/skills/rite-review/SKILL.md +34 -34
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/.claude/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/.claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/.claude/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/.claude/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/.claude/skills/rite-review/reference/security-review.md +9 -9
- package/pack/.claude/skills/rite-seal/SKILL.md +26 -26
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/.claude/skills/rite-ship/SKILL.md +12 -12
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/.claude/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/.claude/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/.claude/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/.claude/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/.claude/skills/rite-spec/SKILL.md +45 -45
- package/pack/.claude/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/.claude/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/.claude/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/.claude/skills/rite-status/SKILL.md +13 -13
- package/pack/.claude/skills/rite-temper/SKILL.md +29 -29
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/.claude/skills/rite-temper/reference/significance.md +10 -10
- package/pack/.claude/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/.claude/skills/rite-vet/SKILL.md +31 -31
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/.claude/skills/rite-vet/reference/depth.md +14 -14
- package/pack/.claude/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +18 -18
- package/pack/generated/claude/agents/devrites-code-reviewer.md +21 -22
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +17 -17
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +6 -6
- package/pack/generated/claude/agents/devrites-forge-judge.md +26 -26
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +17 -17
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +19 -18
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +29 -27
- package/pack/generated/claude/agents/devrites-retrospector.md +19 -19
- package/pack/generated/claude/agents/devrites-security-auditor.md +15 -15
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +14 -14
- package/pack/generated/claude/agents/devrites-slice-wright.md +52 -51
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +11 -11
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +21 -21
- package/pack/generated/claude/agents/devrites-test-analyst.md +13 -13
- package/pack/generated/claude/settings.json +1 -1
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +12 -12
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +7 -7
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +16 -16
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +14 -14
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +14 -14
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +18 -18
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +27 -27
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +25 -27
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +12 -13
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +5 -5
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +6 -6
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +8 -8
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +33 -33
- package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/generated/claude/skills/rite/SKILL.md +13 -14
- package/pack/generated/claude/skills/rite/reference/menu.md +10 -10
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +17 -18
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +14 -14
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/generated/claude/skills/rite-build/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/forge.md +28 -29
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/generated/claude/skills/rite-build/reference/output.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/claude/skills/rite-build/reference/tdd.md +6 -6
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/generated/claude/skills/rite-converge/SKILL.md +17 -17
- package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/generated/claude/skills/rite-customize/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-define/SKILL.md +25 -25
- package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/generated/claude/skills/rite-define/reference/gates.md +13 -13
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +11 -11
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-explain/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +16 -16
- package/pack/generated/claude/skills/rite-frame/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +12 -12
- package/pack/generated/claude/skills/rite-learn/SKILL.md +23 -23
- package/pack/generated/claude/skills/rite-plan/SKILL.md +21 -21
- package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/generated/claude/skills/rite-polish/SKILL.md +11 -11
- package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/generated/claude/skills/rite-polish/reference/code.md +26 -26
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/generated/claude/skills/rite-polish/reference/ui.md +23 -23
- package/pack/generated/claude/skills/rite-pov/SKILL.md +3 -3
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +2 -2
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +14 -14
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +13 -13
- package/pack/generated/claude/skills/rite-prove/SKILL.md +17 -17
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/generated/claude/skills/rite-quick/SKILL.md +22 -22
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +18 -18
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/generated/claude/skills/rite-review/SKILL.md +34 -34
- package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +9 -9
- package/pack/generated/claude/skills/rite-seal/SKILL.md +26 -26
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/generated/claude/skills/rite-ship/SKILL.md +12 -12
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/generated/claude/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/generated/claude/skills/rite-spec/SKILL.md +45 -45
- package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/generated/claude/skills/rite-status/SKILL.md +13 -13
- package/pack/generated/claude/skills/rite-temper/SKILL.md +29 -29
- package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +10 -10
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/generated/claude/skills/rite-vet/SKILL.md +31 -31
- package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +14 -14
- package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +18 -18
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +21 -22
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +17 -17
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +6 -6
- package/pack/generated/codex/agents/devrites-forge-judge.toml +26 -26
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +17 -17
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +19 -18
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +29 -27
- package/pack/generated/codex/agents/devrites-retrospector.toml +19 -19
- package/pack/generated/codex/agents/devrites-security-auditor.toml +15 -15
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +14 -14
- package/pack/generated/codex/agents/devrites-slice-wright.toml +52 -51
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +11 -11
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +21 -21
- package/pack/generated/codex/agents/devrites-test-analyst.toml +13 -13
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +15 -15
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +10 -10
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +19 -19
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +17 -17
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +16 -16
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +2 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +2 -2
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +3 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +4 -4
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +17 -17
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +20 -20
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +17 -17
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +25 -25
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +6 -6
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +44 -44
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +9 -9
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +13 -13
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +28 -30
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +5 -5
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +36 -36
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +11 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +10 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +33 -33
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +37 -37
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +9 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +12 -12
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +40 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +7 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +24 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -23
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +18 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +29 -29
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +12 -13
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +1 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +26 -26
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +4 -4
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +9 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +15 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +8 -8
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +5 -5
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +31 -31
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +25 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +11 -11
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +30 -30
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +40 -40
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +26 -26
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +8 -8
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +9 -9
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +11 -11
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +36 -36
- package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +6 -6
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +9 -9
- package/pack/generated/codex/skills/rite/SKILL.md +16 -17
- package/pack/generated/codex/skills/rite/reference/menu.md +10 -10
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +20 -21
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +9 -9
- package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +17 -17
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +4 -4
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +7 -7
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +7 -7
- package/pack/generated/codex/skills/rite-build/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +9 -9
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +14 -14
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +8 -8
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/forge.md +28 -29
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +2 -2
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +3 -3
- package/pack/generated/codex/skills/rite-build/reference/output.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +44 -44
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +1 -1
- package/pack/generated/codex/skills/rite-build/reference/tdd.md +6 -6
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +23 -23
- package/pack/generated/codex/skills/rite-converge/SKILL.md +20 -20
- package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +7 -7
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +14 -14
- package/pack/generated/codex/skills/rite-customize/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-define/SKILL.md +28 -28
- package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +5 -5
- package/pack/generated/codex/skills/rite-define/reference/gates.md +13 -13
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +1 -1
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +14 -14
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-explain/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +16 -16
- package/pack/generated/codex/skills/rite-frame/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +13 -13
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +15 -15
- package/pack/generated/codex/skills/rite-learn/SKILL.md +26 -26
- package/pack/generated/codex/skills/rite-plan/SKILL.md +24 -24
- package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +3 -3
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +1 -1
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +3 -3
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +9 -9
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +3 -3
- package/pack/generated/codex/skills/rite-polish/SKILL.md +14 -14
- package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +8 -8
- package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +13 -13
- package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +4 -4
- package/pack/generated/codex/skills/rite-polish/reference/code.md +26 -26
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +31 -31
- package/pack/generated/codex/skills/rite-polish/reference/ui.md +23 -23
- package/pack/generated/codex/skills/rite-pov/SKILL.md +6 -6
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +5 -5
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +17 -17
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-prove/SKILL.md +20 -20
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +4 -4
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +2 -2
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +4 -4
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +6 -6
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +1 -1
- package/pack/generated/codex/skills/rite-quick/SKILL.md +25 -25
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +21 -21
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +7 -7
- package/pack/generated/codex/skills/rite-review/SKILL.md +37 -37
- package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +4 -4
- package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +22 -22
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +2 -2
- package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +8 -8
- package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +14 -14
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +14 -14
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +9 -9
- package/pack/generated/codex/skills/rite-seal/SKILL.md +29 -29
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +8 -8
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +8 -8
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +9 -9
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +9 -9
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +43 -43
- package/pack/generated/codex/skills/rite-ship/SKILL.md +15 -15
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +5 -5
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +2 -2
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +22 -22
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +10 -10
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +9 -9
- package/pack/generated/codex/skills/rite-ship/reference/rollout.md +11 -11
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +1 -1
- package/pack/generated/codex/skills/rite-spec/SKILL.md +48 -48
- package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +4 -4
- package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +6 -6
- package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +3 -3
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +21 -21
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +9 -9
- package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +8 -8
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +19 -19
- package/pack/generated/codex/skills/rite-status/SKILL.md +16 -16
- package/pack/generated/codex/skills/rite-temper/SKILL.md +32 -32
- package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +11 -11
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +20 -20
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +16 -16
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +10 -10
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +14 -14
- package/pack/generated/codex/skills/rite-vet/SKILL.md +34 -34
- package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +14 -14
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +10 -10
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +9 -9
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +14 -14
- package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +9 -9
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +28 -28
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +21 -21
- package/package.json +2 -2
- package/scripts/build-binaries.sh +1 -1
- package/scripts/build-host-artifacts.sh +1 -1
- package/scripts/build-release-tarball.sh +1 -1
- package/scripts/check-cross-refs.py +8 -8
- package/scripts/check-invocation-integrity.py +4 -4
- package/scripts/check-no-global-writes.sh +2 -2
- package/scripts/check-reply-contract.sh +1 -1
- package/scripts/check-rule-uniqueness.sh +2 -2
- package/scripts/codex-generate.sh +5 -5
- package/scripts/devrites-detect.sh +33 -33
- package/scripts/eval-runner.py +7 -7
- package/scripts/grade-feature.sh +14 -14
- package/scripts/install-lib.sh +2 -2
- package/scripts/pin.sh +12 -12
- package/scripts/run-behavioral-evals.sh +12 -12
- package/scripts/run-evals.sh +1 -1
- package/scripts/run-outcome-evals.sh +12 -12
- package/scripts/scan-pack-security.py +4 -4
- package/scripts/scan-supply-chain-iocs.py +7 -7
- package/scripts/skills-inventory.mjs +21 -4
- package/scripts/sync-version.sh +2 -2
- package/scripts/validate-workflow-security.py +12 -6
- package/scripts/validate-workspace-schema.py +2 -2
- package/scripts/validate.sh +7 -7
package/docs/usage.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
# DevRites
|
|
1
|
+
# Using DevRites
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
These examples show the common DevRites workflows. A greenfield feature starts
|
|
4
|
+
with `/rite-spec`; an existing codebase may enter through `/rite-adopt`.
|
|
5
|
+
`/rite-quick` and `/rite-frame` handle bounded work outside the full feature arc.
|
|
6
|
+
Workspace-operating phases read the active workspace (`.devrites/ACTIVE` →
|
|
7
|
+
`.devrites/work/<slug>/`) first and report the appropriate on-ramp when none exists.
|
|
7
8
|
|
|
8
9
|
- **Full command reference** → [`command-map.md`](command-map.md)
|
|
9
10
|
- **Flow diagrams** → [`flow.md`](flow.md)
|
|
@@ -12,9 +13,10 @@ none exists it tells you to run `/rite-spec <feature>`.
|
|
|
12
13
|
|
|
13
14
|
## The workspace
|
|
14
15
|
|
|
15
|
-
`/rite-spec` creates `.devrites/work/<slug>/` and writes the spec
|
|
16
|
-
`/rite-define` adds architecture,
|
|
17
|
-
|
|
16
|
+
`/rite-spec` creates `.devrites/work/<slug>/` and writes the spec.
|
|
17
|
+
`/rite-define` adds the architecture, plan, tasks, and traceability. Together,
|
|
18
|
+
these human-readable Markdown files carry the work across compaction and new
|
|
19
|
+
sessions:
|
|
18
20
|
|
|
19
21
|
| File | Created by | Holds |
|
|
20
22
|
|---|---|---|
|
|
@@ -23,16 +25,16 @@ survives compaction and new sessions:
|
|
|
23
25
|
| `spec.md` | `/rite-spec` | product WHAT/WHY, requirements, acceptance, boundaries, measurable success |
|
|
24
26
|
| `architecture.md` | `/rite-define` | owning module/layer, integration points, data/API/events, dependencies, risks |
|
|
25
27
|
| `flows.md` | `/rite-spec` or `/rite-define` | optional Mermaid diagrams when sequence/state/data flow clarifies behavior |
|
|
26
|
-
| `references/` + `references.md` | `/rite-spec` | saved design refs
|
|
28
|
+
| `references/` + `references.md` | `/rite-spec` | saved design refs: screenshots, Figma, video, links |
|
|
27
29
|
| `strategy.md` | `/rite-temper` | strategic spec review (optional): scope mode, pre-mortem, dimension scores |
|
|
28
30
|
| `plan.md` | `/rite-define` | approach, dependency graph, checkpoints, rollback |
|
|
29
31
|
| `tasks.md` | `/rite-define` | ordered `SLICE-###` vertical slices, each mapped to `AC-###` and tagged `Mode: AFK \| HITL` + gate fields |
|
|
30
32
|
| `traceability.md` | `/rite-define` | AC/REQ → slices → tests/proofs → evidence → touched files matrix |
|
|
31
|
-
| `eng-review.md` | `/rite-vet` | engineering plan review
|
|
33
|
+
| `eng-review.md` | `/rite-vet` | mandatory engineering plan review, light or full by stakes: scope challenge, axis findings, failure modes, parallelization |
|
|
32
34
|
| `test-plan.md` | `/rite-vet` | build-readable coverage target: coverage diagram, per-gap test requirements, acceptance→test map (read by `/rite-build` + `/rite-prove`) |
|
|
33
|
-
| `status.md` | every phase | canonical status checkpoint |
|
|
34
35
|
| `state.md` | every phase | working ledger: phase, active slice + slice mode, risk, next step; plus `Awaiting human` block when paused (run mode is derived from `.devrites/AFK`, not stored here) |
|
|
35
|
-
| `
|
|
36
|
+
| `status.md` | every phase | compatibility alias for the canonical `state.md` cursor |
|
|
37
|
+
| `questions.md` | every phase | append-only Q&A: qid, slice, gate, status (`open` / `answered` / `dropped`), proposed answer, raised/answered timestamps |
|
|
36
38
|
| `decisions.md` / `assumptions.md` | every phase | running logs |
|
|
37
39
|
| `drift.md` | Spec Drift Guard | drift events + resolutions |
|
|
38
40
|
| `touched-files.md` | `/rite-build` | what files this feature touched |
|
|
@@ -43,17 +45,18 @@ survives compaction and new sessions:
|
|
|
43
45
|
| `polish-report.md` | `/rite-polish` | Phase 1-4 findings + fixes |
|
|
44
46
|
| `review.md` | `/rite-review` | Spec + Standards axes, severity-labelled findings |
|
|
45
47
|
| `seal.md` | `/rite-seal` | GO/NO-GO verdict + acceptance walk + blockers |
|
|
46
|
-
| `ship.md` | `/rite-ship` | what shipped
|
|
48
|
+
| `ship.md` | `/rite-ship` | what shipped: commit SHA(s), branch, tag/PR, acceptance summary, follow-ups |
|
|
47
49
|
|
|
48
|
-
When `/rite-ship` closes the task it
|
|
49
|
-
`.devrites/work/<slug>/`
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
When `/rite-ship` closes the task, it archives the whole workspace from
|
|
51
|
+
`.devrites/work/<slug>/` to `.devrites/archive/<slug>/` and clears
|
|
52
|
+
`.devrites/ACTIVE`. It preserves every Markdown file, so the audit trail remains
|
|
53
|
+
under `.devrites/archive/<slug>/`.
|
|
52
54
|
|
|
53
55
|
Backward compatibility: older `.devrites/features/<slug>/` workspaces remain
|
|
54
56
|
readable; migration should add the canonical `.devrites/work` shape without
|
|
55
57
|
deleting the old files. `feature.md`/`index.md` can still act as the workspace
|
|
56
|
-
map,
|
|
58
|
+
map, `status.md` as the cursor alias for `state.md`, and `proof.md` as the proof
|
|
59
|
+
alias for `evidence.md`.
|
|
57
60
|
|
|
58
61
|
Project-root sentinel (outside the workspace):
|
|
59
62
|
|
|
@@ -65,7 +68,7 @@ Project-root sentinel (outside the workspace):
|
|
|
65
68
|
The shape of this directory is also documented in
|
|
66
69
|
[`flow.md` § Workspace state model](flow.md#7-workspace-state-model).
|
|
67
70
|
|
|
68
|
-
## 1) Start a feature
|
|
71
|
+
## 1) Start a feature: spec then plan
|
|
69
72
|
|
|
70
73
|
```text
|
|
71
74
|
You: I want some kind of reporting thing for admins.
|
|
@@ -82,13 +85,18 @@ You: I want some kind of reporting thing for admins.
|
|
|
82
85
|
→ reads the approved spec
|
|
83
86
|
→ writes plan.md + vertical task slices + state
|
|
84
87
|
→ stops for confirmation
|
|
88
|
+
|
|
89
|
+
/rite-vet
|
|
90
|
+
→ reviews every defined plan; uses a light or full pass based on stakes
|
|
91
|
+
→ writes eng-review.md + test-plan.md before build
|
|
85
92
|
```
|
|
86
93
|
|
|
87
|
-
## 2) Normal feature
|
|
94
|
+
## 2) Normal feature: the build loop
|
|
88
95
|
|
|
89
96
|
```text
|
|
90
97
|
/rite-spec add-csv-export # investigate → spec.md
|
|
91
98
|
/rite-define # spec → plan + vertical slices + state
|
|
99
|
+
/rite-vet # mandatory plan review; light or full based on stakes
|
|
92
100
|
/rite-build # slice 1 ("export endpoint returns CSV"); stops with evidence
|
|
93
101
|
/rite-build # slice 2 ("download button + states"); repeat for each slice
|
|
94
102
|
/rite-prove # ONCE all slices built: full tests + browser proof
|
|
@@ -98,7 +106,7 @@ You: I want some kind of reporting thing for admins.
|
|
|
98
106
|
/rite-ship # type-GO + irreversible git ladder + close the task (archive + clear ACTIVE)
|
|
99
107
|
```
|
|
100
108
|
|
|
101
|
-
`/rite-build` never auto-advances
|
|
109
|
+
`/rite-build` never auto-advances: you decide when the next slice runs.
|
|
102
110
|
`/rite-seal` **decides**; `/rite-ship` **executes + closes**. To run the whole
|
|
103
111
|
sequence unattended, see `/rite-autocomplete` (§11).
|
|
104
112
|
|
|
@@ -139,6 +147,9 @@ You: 2
|
|
|
139
147
|
/rite-define
|
|
140
148
|
→ spec → slices; UI slice marked frontend-craft + browser-proof
|
|
141
149
|
|
|
150
|
+
/rite-vet
|
|
151
|
+
→ hardens the UI plan + acceptance-to-test coverage before code
|
|
152
|
+
|
|
142
153
|
/rite-build
|
|
143
154
|
→ UI slice → devrites-frontend-craft: register = product surface, **match
|
|
144
155
|
the saved references**, shape the states (default/loading/empty/error/
|
|
@@ -160,13 +171,14 @@ You: 2
|
|
|
160
171
|
```
|
|
161
172
|
|
|
162
173
|
If no browser tooling is available, proof is recorded as **pending (manual)**
|
|
163
|
-
with exact steps
|
|
174
|
+
with exact steps: the seal then weighs the UI risk.
|
|
164
175
|
|
|
165
176
|
## 5) Backend-only feature
|
|
166
177
|
|
|
167
178
|
```text
|
|
168
179
|
/rite-spec rate-limit-api # investigate → spec.md (no UI)
|
|
169
180
|
/rite-define # spec → plan + slices
|
|
181
|
+
/rite-vet # mandatory plan review; checks architecture, tests, perf
|
|
170
182
|
/rite-build # no UI → no frontend craft / browser proof
|
|
171
183
|
/rite-prove # targeted tests + build/typecheck; runtime check of the limiter
|
|
172
184
|
/rite-polish # reference/code.md only (no UI scope detected)
|
|
@@ -175,7 +187,7 @@ with exact steps — the seal then weighs the UI risk.
|
|
|
175
187
|
/rite-ship # type-GO + commit/push/tag + close the task
|
|
176
188
|
```
|
|
177
189
|
|
|
178
|
-
## 6) UI-direction prompt
|
|
190
|
+
## 6) UI-direction prompt: refinement modes
|
|
179
191
|
|
|
180
192
|
```text
|
|
181
193
|
/rite-polish bolder
|
|
@@ -215,16 +227,16 @@ Other modes: `quieter` · `distill` · `harden`.
|
|
|
215
227
|
|
|
216
228
|
Run before `/clear` if leaving for > a few hours.
|
|
217
229
|
|
|
218
|
-
## 9) HITL gate
|
|
230
|
+
## 9) HITL gate: pre-code pause and resume
|
|
219
231
|
|
|
220
232
|
```text
|
|
221
233
|
/rite-build
|
|
222
234
|
→ reads tasks.md slice 03; Mode: HITL, Gate: blocking
|
|
223
235
|
→ STOPS before writing any code:
|
|
224
236
|
|
|
225
|
-
SLICE-003
|
|
237
|
+
SLICE-003: list endpoint is HITL (blocking, SLA 15m).
|
|
226
238
|
Checkpoint: Composite (user_id, created_at) index, or two single-col indexes?
|
|
227
|
-
Proposed approach: composite
|
|
239
|
+
Proposed approach: composite: single read path, both columns used together
|
|
228
240
|
in the most common filter; downside is rebuild cost on bulk updates.
|
|
229
241
|
Decision needed before this slice can build.
|
|
230
242
|
Resume: /rite-resolve q-2026-05-28-001 "<answer>"
|
|
@@ -232,7 +244,7 @@ Run before `/clear` if leaving for > a few hours.
|
|
|
232
244
|
→ appends q-...-001 to questions.md (status: open, gate: blocking)
|
|
233
245
|
→ writes `Awaiting human` block to state.md, sets Status: awaiting_human
|
|
234
246
|
|
|
235
|
-
You: /rite-resolve q-2026-05-28-001 "composite
|
|
247
|
+
You: /rite-resolve q-2026-05-28-001 "composite: single-col is fine for now"
|
|
236
248
|
|
|
237
249
|
/rite-resolve
|
|
238
250
|
→ flips q-...-001 status → answered (with answered_at + answer)
|
|
@@ -249,7 +261,7 @@ If the answer changes acceptance criteria or scope, `/rite-resolve` recommends
|
|
|
249
261
|
## 10) AFK overnight run
|
|
250
262
|
|
|
251
263
|
```text
|
|
252
|
-
# Drop the sentinel before bed. Keys are optional
|
|
264
|
+
# Drop the sentinel before bed. Keys are optional: empty file works.
|
|
253
265
|
cat > .devrites/AFK <<'EOF'
|
|
254
266
|
max_slices: 10
|
|
255
267
|
notify: "curl -d \"$DEVRITES_QID: $DEVRITES_QUESTION\" ntfy.sh/my-topic"
|
|
@@ -276,13 +288,13 @@ EOF
|
|
|
276
288
|
/rite-build # continue
|
|
277
289
|
```
|
|
278
290
|
|
|
279
|
-
The loop refuses to mark a slice `built` if tests / types / lint go red
|
|
291
|
+
The loop refuses to mark a slice `built` if tests / types / lint go red: it
|
|
280
292
|
writes a blocking question and stops regardless of `allow_gates`. AFK never
|
|
281
293
|
silently accepts irreversible risk; see
|
|
282
294
|
[`pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md) for the
|
|
283
295
|
full list.
|
|
284
296
|
|
|
285
|
-
## 11) Full unattended lifecycle
|
|
297
|
+
## 11) Full unattended lifecycle: `/rite-autocomplete`
|
|
286
298
|
|
|
287
299
|
```text
|
|
288
300
|
/rite-autocomplete "add CSV export for admins" --max-slices 8
|
|
@@ -300,39 +312,38 @@ You: GO # → commit · push · tag, then archive + clear
|
|
|
300
312
|
```
|
|
301
313
|
|
|
302
314
|
Add `--ship` (alias `--yolo`) to auto-confirm the final type-`GO` for a
|
|
303
|
-
zero-touch push
|
|
315
|
+
zero-touch push: autocomplete then proceeds straight to `/rite-ship`. It still
|
|
304
316
|
pauses on hard irreversible-risk (auth / migration / public-API / red tests),
|
|
305
317
|
blocking / escalating gates, an open `gate: validating`, a NO-GO, exhausted
|
|
306
|
-
`max_slices`, or low confidence
|
|
318
|
+
`max_slices`, or low confidence: writing `state.md` and surfacing *why* before
|
|
307
319
|
it stops. Args: `[idea] [--ship|--yolo] [--max-slices N]`.
|
|
308
320
|
|
|
309
321
|
## Checking in
|
|
310
322
|
|
|
311
|
-
- `/rite
|
|
312
|
-
- `/rite-status
|
|
323
|
+
- `/rite`: compact menu + suggested next command. **Does not** read state.
|
|
324
|
+
- `/rite-status`: detailed status: phase, **run mode (AFK / HITL)**, status
|
|
313
325
|
(`running` / `awaiting_human` / `blocked` / `done`), next action, evidence,
|
|
314
326
|
open questions broken down by gate, drift, risks, **handoff readiness**.
|
|
315
|
-
- `/rite-resolve <qid> "<answer>"
|
|
327
|
+
- `/rite-resolve <qid> "<answer>"`: answer / `--drop` / `--batch`-resolve an
|
|
316
328
|
open question; the canonical writer for `status: open → answered` and the
|
|
317
329
|
only thing that clears `Awaiting human`.
|
|
318
330
|
|
|
319
331
|
## Tips
|
|
320
332
|
|
|
321
333
|
- Commit `.devrites/` so the team and future sessions share feature state.
|
|
322
|
-
- **`.devrites/AFK` is per-developer, not per-repo
|
|
334
|
+
- **`.devrites/AFK` is per-developer, not per-repo**: gitignore it (or commit
|
|
323
335
|
it deliberately if the team agrees on AFK defaults). The sentinel is
|
|
324
336
|
read-only config: it toggles your local session mode and sets the initial
|
|
325
337
|
`max_slices` budget; nothing else. The mutable remaining-slice count lives
|
|
326
338
|
in `state.md` (`AFK slices remaining`), never in the sentinel.
|
|
327
|
-
- One feature active at a time (`ACTIVE`).
|
|
328
|
-
`/rite-spec <
|
|
329
|
-
spec).
|
|
339
|
+
- One feature active at a time (`ACTIVE`). Start a new workspace with
|
|
340
|
+
`/rite-spec <feature>`; switch to an existing one with `/rite use <slug>`.
|
|
330
341
|
- **Recommended AFK progression**: HITL first to refine the prompt and plan,
|
|
331
342
|
then drop the sentinel for the bulk stretch. Always cap iterations
|
|
332
343
|
(`max_slices: 10` is a reasonable default).
|
|
333
|
-
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
-
|
|
337
|
-
|
|
338
|
-
[`command-map.md`](command-map.md).
|
|
344
|
+
- Invoke public `rite` / `rite-*` skills directly; let the model-invocable
|
|
345
|
+
`devrites-*` specialists fire from their documented triggers. `devrites-lib`
|
|
346
|
+
is an internal reference library, not a workflow.
|
|
347
|
+
- Prefixes are namespaces, not invocation policy. `user-invocable` and
|
|
348
|
+
`disable-model-invocation` frontmatter are authoritative; the effective policy
|
|
349
|
+
for every skill is catalogued in [`command-map.md`](command-map.md).
|
package/engine/Makefile
CHANGED
|
@@ -22,7 +22,7 @@ fmt-check:
|
|
|
22
22
|
test:
|
|
23
23
|
go test ./...
|
|
24
24
|
|
|
25
|
-
# Race-enabled run
|
|
25
|
+
# Race-enabled run. The engine has concurrent index/source-cache paths; the
|
|
26
26
|
# detector is free signal on every test that touches them.
|
|
27
27
|
test-race:
|
|
28
28
|
go test -race -count=1 ./...
|
|
@@ -30,7 +30,7 @@ test-race:
|
|
|
30
30
|
vet:
|
|
31
31
|
go vet ./...
|
|
32
32
|
|
|
33
|
-
# quality is the full local gate
|
|
33
|
+
# quality is the full local gate. Mirror it in CI so a green `make quality`
|
|
34
34
|
# means a green pipeline (the date-sensitive parity golden aside; see ADR-0006).
|
|
35
35
|
quality: fmt-check vet staticcheck govulncheck gosec test-race
|
|
36
36
|
|
package/engine/commands.go
CHANGED
|
@@ -81,7 +81,7 @@ func cmdDoctor(args []string, stdout, stderr io.Writer) int {
|
|
|
81
81
|
fmt.Fprintf(stderr, "devrites: %v\n", err)
|
|
82
82
|
return exitUsage
|
|
83
83
|
}
|
|
84
|
-
// The project directory is the parent of the .devrites root
|
|
84
|
+
// The project directory is the parent of the .devrites root: that is where
|
|
85
85
|
// an installed pack's version marker (.claude/devrites.version, package.json)
|
|
86
86
|
// lives.
|
|
87
87
|
projectDir := filepath.Dir(root)
|
|
@@ -92,7 +92,7 @@ func cmdDoctor(args []string, stdout, stderr io.Writer) int {
|
|
|
92
92
|
}
|
|
93
93
|
fmt.Fprint(stdout, report.Render())
|
|
94
94
|
if op := gitOperation(projectDir); op != "" {
|
|
95
|
-
fmt.Fprintf(stdout, "git-state: %s in progress
|
|
95
|
+
fmt.Fprintf(stdout, "git-state: %s in progress: resolve with .claude/skills/devrites-lib/reference/standards/git-workflow.md#merge-conflict-recovery\n", op)
|
|
96
96
|
}
|
|
97
97
|
for _, warning := range extensionProvenanceWarnings(root) {
|
|
98
98
|
fmt.Fprintf(stdout, "warning: %s\n", warning)
|
|
@@ -105,7 +105,7 @@ func cmdDoctor(args []string, stdout, stderr io.Writer) int {
|
|
|
105
105
|
fmt.Fprintf(stdout, " evidence: %s\n", snap.Evidence.Status)
|
|
106
106
|
fmt.Fprintf(stdout, " drift: %s\n", snap.Drift.Status)
|
|
107
107
|
fmt.Fprintf(stdout, " review: %s\n", snap.Review.Status)
|
|
108
|
-
fmt.Fprintf(stdout, " harness: %s
|
|
108
|
+
fmt.Fprintf(stdout, " harness: %s: %s\n", snap.Harness.Status, snap.Harness.Detail)
|
|
109
109
|
fmt.Fprintf(stdout, " extensions: %s (%d)\n", snap.Extensions.Status, snap.Extensions.Count)
|
|
110
110
|
fmt.Fprintf(stdout, " worktree: %s (%d changed)\n", snap.DirtyWorkspace.Status, snap.DirtyWorkspace.Changed)
|
|
111
111
|
fmt.Fprintln(stdout, " capabilities:")
|
package/engine/harnessmatrix.go
CHANGED
|
@@ -12,7 +12,7 @@ import (
|
|
|
12
12
|
// cmdHarnessMatrix renders the harness adapter-compliance matrix, or (with
|
|
13
13
|
// --check FILE) verifies the generated block committed in FILE still matches the
|
|
14
14
|
// engine's frozen matrix. The check is the drift guard: an edit to the matrix
|
|
15
|
-
// data without regenerating the doc
|
|
15
|
+
// data without regenerating the doc (or vice versa) fails CI.
|
|
16
16
|
//
|
|
17
17
|
// Exit: 0 rendered / in-sync · 2 usage · 3 drift (regenerate + commit).
|
|
18
18
|
func cmdHarnessMatrix(args []string, stdout, stderr io.Writer) int {
|
|
@@ -38,7 +38,7 @@ func cmdHarnessMatrix(args []string, stdout, stderr io.Writer) int {
|
|
|
38
38
|
return exitBlocked
|
|
39
39
|
}
|
|
40
40
|
if strings.TrimSpace(got) != strings.TrimSpace(block) {
|
|
41
|
-
fmt.Fprintf(stderr, "harness-matrix: %s is out of date
|
|
41
|
+
fmt.Fprintf(stderr, "harness-matrix: %s is out of date: run `devrites-engine harness-matrix` and commit the regenerated block.\n", path)
|
|
42
42
|
return exitBlocked
|
|
43
43
|
}
|
|
44
44
|
fmt.Fprintf(stdout, "harness-matrix: %s is in sync.\n", path)
|
package/engine/hookpolicy.go
CHANGED
|
@@ -7,7 +7,7 @@ import (
|
|
|
7
7
|
|
|
8
8
|
// Hook control plane.
|
|
9
9
|
//
|
|
10
|
-
// Every wired hook has a canonical id
|
|
10
|
+
// Every wired hook has a canonical id: its `hook <name>` CLI verb (allow,
|
|
11
11
|
// orient, stop-gate, …). That id is the addressable handle for two orthogonal
|
|
12
12
|
// runtime controls, both read from the environment so an operator tunes safety
|
|
13
13
|
// vs speed without editing any JSON:
|
|
@@ -17,7 +17,7 @@ import (
|
|
|
17
17
|
//
|
|
18
18
|
// The profile is a floor: a hook runs when its tier is at or below the active
|
|
19
19
|
// profile AND it is not in the kill list. Everything else short-circuits to a
|
|
20
|
-
// clean fail-open no-op in cmdHook
|
|
20
|
+
// clean fail-open no-op in cmdHook: identical to the inline `command -v … ||
|
|
21
21
|
// exit 0` guard, so a disabled hook is indistinguishable from an absent binary.
|
|
22
22
|
//
|
|
23
23
|
// A SEPARATE axis is enforce-vs-observe: the OBSERVE-by-default guards (a1-guard,
|
|
@@ -31,23 +31,23 @@ type hookTier int
|
|
|
31
31
|
|
|
32
32
|
const (
|
|
33
33
|
tierMinimal hookTier = iota // orientation-only; never blocks or mutates flow
|
|
34
|
-
tierStandard // the default working set
|
|
34
|
+
tierStandard // the default working set: gates, guards, caches
|
|
35
35
|
tierStrict // reserved for experimental/aggressive hooks
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
// hookRegistry maps each canonical hook id to the profile tier that first
|
|
39
39
|
// activates it. A name absent from the registry is treated as tierMinimal
|
|
40
|
-
// (always active)
|
|
40
|
+
// (always active): fail-open: an unrecognised hook is never silently disabled
|
|
41
41
|
// by the profile mechanism.
|
|
42
42
|
var hookRegistry = map[string]hookTier{
|
|
43
|
-
// minimal
|
|
43
|
+
// minimal: orientation and auto-approval, which never interrupt work.
|
|
44
44
|
"allow": tierMinimal,
|
|
45
45
|
"orient": tierMinimal,
|
|
46
46
|
"subagent-orient": tierMinimal,
|
|
47
47
|
"cursor": tierMinimal,
|
|
48
48
|
"statusline": tierMinimal,
|
|
49
49
|
|
|
50
|
-
// standard
|
|
50
|
+
// standard: the default gates, guards, sentinels and caches.
|
|
51
51
|
"a1-guard": tierStandard,
|
|
52
52
|
"stop-gate": tierStandard,
|
|
53
53
|
"reviewer-readonly": tierStandard,
|
|
@@ -62,7 +62,7 @@ var hookRegistry = map[string]hookTier{
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// hookProfileTier resolves DEVRITES_HOOK_PROFILE to a tier, defaulting to
|
|
65
|
-
// standard on empty or unrecognised input (fail-open
|
|
65
|
+
// standard on empty or unrecognised input (fail-open: a typo never silently
|
|
66
66
|
// strips the working set below default).
|
|
67
67
|
func hookProfileTier() hookTier {
|
|
68
68
|
switch strings.ToLower(strings.TrimSpace(os.Getenv("DEVRITES_HOOK_PROFILE"))) {
|
|
@@ -83,7 +83,7 @@ func hookActive(name string) bool {
|
|
|
83
83
|
}
|
|
84
84
|
tier, known := hookRegistry[name]
|
|
85
85
|
if !known {
|
|
86
|
-
return true // unknown id
|
|
86
|
+
return true // unknown id: never disabled by profile
|
|
87
87
|
}
|
|
88
88
|
return tier <= hookProfileTier()
|
|
89
89
|
}
|
|
@@ -105,7 +105,7 @@ func hookDisabled(name string) bool {
|
|
|
105
105
|
|
|
106
106
|
// hookEnforce reports whether an OBSERVE-default guard should block rather than
|
|
107
107
|
// log. It is true when the guard's own DEVRITES_*=enforce var is set, OR when
|
|
108
|
-
// the strict profile is active
|
|
108
|
+
// the strict profile is active: strict enforces every guard at once.
|
|
109
109
|
func hookEnforce(specificVar string) bool {
|
|
110
110
|
if os.Getenv(specificVar) == "enforce" {
|
|
111
111
|
return true
|
package/engine/hooks.go
CHANGED
|
@@ -22,13 +22,13 @@ import (
|
|
|
22
22
|
// The engine's inline shell guard handles a missing binary; this handles a
|
|
23
23
|
// present binary run outside a workspace.
|
|
24
24
|
func hookOrient(h harness.Harness, stdin io.Reader, stdout, stderr io.Writer) int {
|
|
25
|
-
// The SessionStart payload is drained but unused
|
|
25
|
+
// The SessionStart payload is drained but unused: orientation is a pure read
|
|
26
26
|
// of the workspace files, not a function of the harness's stdin.
|
|
27
27
|
_, _ = io.Copy(io.Discard, stdin)
|
|
28
28
|
|
|
29
29
|
root, err := orient.ResolveRoot(os.Getenv("DEVRITES_ROOT"))
|
|
30
30
|
if err != nil {
|
|
31
|
-
return exitOK // not a DevRites workspace
|
|
31
|
+
return exitOK // not a DevRites workspace: silent no-op
|
|
32
32
|
}
|
|
33
33
|
text, has, err := orient.Digest(root)
|
|
34
34
|
if err != nil {
|
|
@@ -58,7 +58,7 @@ func hookOrient(h harness.Harness, stdin io.Reader, stdout, stderr io.Writer) in
|
|
|
58
58
|
func hookStopGate(h harness.Harness, stdin io.Reader, stdout, stderr io.Writer) int {
|
|
59
59
|
in := h.ParseStopInput(stdin)
|
|
60
60
|
if in.StopHookActive {
|
|
61
|
-
return exitOK // already re-entered this stop cycle
|
|
61
|
+
return exitOK // already re-entered this stop cycle: let it stop
|
|
62
62
|
}
|
|
63
63
|
root, err := orient.ResolveRoot(os.Getenv("DEVRITES_ROOT"))
|
|
64
64
|
if err != nil {
|
|
@@ -89,7 +89,7 @@ func hookStopGate(h harness.Harness, stdin io.Reader, stdout, stderr io.Writer)
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
// allowReason is the auto-approval message the allow hook emits.
|
|
92
|
-
const allowReason = "DevRites read-only orientation/gate command
|
|
92
|
+
const allowReason = "DevRites read-only orientation/gate command: auto-approved by the devrites-allow hook"
|
|
93
93
|
|
|
94
94
|
var allowReadonlyCommands = map[string]bool{
|
|
95
95
|
"check-acceptance": true,
|
|
@@ -213,10 +213,10 @@ func safeAllowArg(arg string) bool {
|
|
|
213
213
|
// reviewerReadonlyDenyReason is the exact denial message
|
|
214
214
|
// devrites-reviewer-readonly.sh emits. It must stay byte-identical to keep the
|
|
215
215
|
// parity oracle green.
|
|
216
|
-
const reviewerReadonlyDenyReason = "DevRites: reviewers are read-only. This Bash command can mutate or exfiltrate; inspect with Read/Grep/Glob and return findings
|
|
216
|
+
const reviewerReadonlyDenyReason = "DevRites: reviewers are read-only. This Bash command can mutate or exfiltrate; inspect with Read/Grep/Glob and return findings: do not modify the tree or reach the network. (devrites-reviewer-readonly)"
|
|
217
217
|
|
|
218
218
|
// reviewerMutateRe matches a Bash command that could mutate the tree or reach the
|
|
219
|
-
// network
|
|
219
|
+
// network: the deny-list ported verbatim from devrites-reviewer-readonly.sh. A
|
|
220
220
|
// fresh-context reviewer reads untrusted source, so a silent write/exfil path is
|
|
221
221
|
// a prompt-injection surface (standards/security.md). pack-scan-ignore: this is
|
|
222
222
|
// the hook's own defensive deny-list, not a payload.
|
|
@@ -225,7 +225,7 @@ const reviewerReadonlyDenyReason = "DevRites: reviewers are read-only. This Bash
|
|
|
225
225
|
// this matches against the WHOLE command, while the bash hook's
|
|
226
226
|
// `read -r tool cmd agent_type` truncates the command at its first newline and so
|
|
227
227
|
// only ever scans line 1. A reviewer running a multi-line Bash whose later lines
|
|
228
|
-
// mutate (e.g. `cat x\nsed -i …`) slips past the bash hook but is denied here
|
|
228
|
+
// mutate (e.g. `cat x\nsed -i …`) slips past the bash hook but is denied here:
|
|
229
229
|
// intentional hardening of a latent bash bug, not a parity regression. (RE2's
|
|
230
230
|
// `[[:space:]]` already matches `\n`, so no `(?m)` flag is needed for the `-i$`
|
|
231
231
|
// alternative to fire at an interior line break.)
|
|
@@ -240,7 +240,7 @@ func hookReviewerReadonly(h harness.Harness, stdin io.Reader, stdout, stderr io.
|
|
|
240
240
|
if err != nil {
|
|
241
241
|
return exitOK
|
|
242
242
|
}
|
|
243
|
-
// Fast path: a payload with no tool call is not ours
|
|
243
|
+
// Fast path: a payload with no tool call is not ours: mirrors the script's
|
|
244
244
|
// `case "$input" in *'"tool_name"'*`.
|
|
245
245
|
if !bytes.Contains(data, []byte(`"tool_name"`)) {
|
|
246
246
|
return exitOK
|
|
@@ -300,19 +300,19 @@ var subagentOrientContext string
|
|
|
300
300
|
// hookSubagentOrient injects the DevRites discipline into every devrites-* subagent
|
|
301
301
|
// at spawn: a spawned subagent starts in a fresh context and neither auto-loads the
|
|
302
302
|
// rite-* framework nor discovers skills the way the main thread does. It mirrors
|
|
303
|
-
// devrites-subagent-orient.sh
|
|
303
|
+
// devrites-subagent-orient.sh: fire only for devrites-* agents, emit a fixed
|
|
304
304
|
// context envelope, stay silent + fail-open otherwise.
|
|
305
305
|
func hookSubagentOrient(h harness.Harness, stdin io.Reader, stdout, stderr io.Writer) int {
|
|
306
306
|
agentType := h.SubagentAgentType(stdin)
|
|
307
307
|
if !strings.HasPrefix(agentType, "devrites-") {
|
|
308
|
-
return exitOK // not a DevRites subagent (or no identity)
|
|
308
|
+
return exitOK // not a DevRites subagent (or no identity): silent no-op
|
|
309
309
|
}
|
|
310
310
|
out, err := h.SubagentStartContext(strings.ReplaceAll(subagentOrientContext, "\r\n", "\n"))
|
|
311
311
|
if err != nil {
|
|
312
312
|
debugf(stderr, "subagent-orient: %v", err)
|
|
313
313
|
return exitOK
|
|
314
314
|
}
|
|
315
|
-
// No trailing newline
|
|
315
|
+
// No trailing newline: matches the script's `node ... process.stdout.write`.
|
|
316
316
|
fmt.Fprint(stdout, out)
|
|
317
317
|
return exitOK
|
|
318
318
|
}
|
|
@@ -41,7 +41,7 @@ func resolveWorkspaceDir(root, slug string) string {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
// resolveWorkspace resolves the active feature's directory.
|
|
44
|
-
// ok is false
|
|
44
|
+
// ok is false (a silent no-op) when there is no .devrites root or no active
|
|
45
45
|
// feature, keeping the hooks fail-open outside a DevRites workspace.
|
|
46
46
|
func resolveWorkspace() (root, slug, dir string, ok bool) {
|
|
47
47
|
root, err := orient.ResolveRoot(os.Getenv("DEVRITES_ROOT"))
|
|
@@ -74,8 +74,8 @@ type auqEventJSON struct {
|
|
|
74
74
|
// bloats the timeline.
|
|
75
75
|
const auqFieldMax = 300
|
|
76
76
|
|
|
77
|
-
// hookAUQ deterministically captures an AskUserQuestion exchange
|
|
78
|
-
// question with the user's chosen answer
|
|
77
|
+
// hookAUQ deterministically captures an AskUserQuestion exchange: every
|
|
78
|
+
// question with the user's chosen answer: into the session trace, so HITL
|
|
79
79
|
// decisions are recorded at the substrate rather than trusted to the model's
|
|
80
80
|
// bookkeeping. Capture only: it never tunes, blocks, or replies. Fail-open like
|
|
81
81
|
// every workspace hook: unparseable payload, unknown response shape, or no
|
|
@@ -192,7 +192,7 @@ func hookHandoffSnapshot(stdin io.Reader, stdout, stderr io.Writer) int {
|
|
|
192
192
|
next, _ := state.CursorField(stateLines, state.CursorNextAction)
|
|
193
193
|
stamp := time.Now().UTC().Format(time.RFC3339)
|
|
194
194
|
var b strings.Builder
|
|
195
|
-
fmt.Fprintf(&b, "\n## Handoff snapshot
|
|
195
|
+
fmt.Fprintf(&b, "\n## Handoff snapshot: %s\n", stamp)
|
|
196
196
|
fmt.Fprintf(&b, "- Feature: %s\n", slug)
|
|
197
197
|
if phase != "" {
|
|
198
198
|
fmt.Fprintf(&b, "- Phase: %s\n", phase)
|
|
@@ -229,7 +229,7 @@ func hookCursor(stdin io.Reader, stdout, stderr io.Writer) int {
|
|
|
229
229
|
afk, _ = state.CursorField(stateLines, state.CursorAFKSlicesRemaining)
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
fmt.Fprintf(stdout, "DevRites cursor
|
|
232
|
+
fmt.Fprintf(stdout, "DevRites cursor: active feature: %s\n", slug)
|
|
233
233
|
if status != "" {
|
|
234
234
|
fmt.Fprintf(stdout, " status: %s\n", status)
|
|
235
235
|
}
|
|
@@ -241,7 +241,7 @@ func hookCursor(stdin io.Reader, stdout, stderr io.Writer) int {
|
|
|
241
241
|
fmt.Fprintf(stdout, " AFK slices remaining: %s\n", afk)
|
|
242
242
|
}
|
|
243
243
|
if wsIsFile(filepath.Join(dir, ".red")) {
|
|
244
|
-
fmt.Fprintln(stdout, " ⚠ tests/build RED
|
|
244
|
+
fmt.Fprintln(stdout, " ⚠ tests/build RED: resolve before stopping")
|
|
245
245
|
}
|
|
246
246
|
return exitOK
|
|
247
247
|
}
|
|
@@ -281,7 +281,7 @@ var (
|
|
|
281
281
|
redPassRe = regexp.MustCompile(`(?im)PASS(ED)?|0[[:space:]]+(failed|failing|errors?)|all tests passed|BUILD SUCC(ESS|EEDED)|succeeded|no (errors|problems|issues)|(^|[^a-z])ok([^a-z]|$)|✓`)
|
|
282
282
|
)
|
|
283
283
|
|
|
284
|
-
const redReasonFmt = "DevRites: tests/build are RED (%s). Fix to green or record the failure + next step in state.md before stopping
|
|
284
|
+
const redReasonFmt = "DevRites: tests/build are RED (%s). Fix to green or record the failure + next step in state.md before stopping: the Stop gate blocks an end-of-turn while .red is set."
|
|
285
285
|
|
|
286
286
|
// hookRedwatch is the fail-on-red sentinel (PostToolUse Bash). After a test / build
|
|
287
287
|
// / lint command it sets or clears <featureDir>/.red so the Stop gate can refuse to
|
|
@@ -339,7 +339,7 @@ func redwatchSafe(cmd string) string {
|
|
|
339
339
|
// node regex the shell guards use.
|
|
340
340
|
var patchPathRe = regexp.MustCompile(`(?m)^\*\*\* (?:(?:Add|Update|Delete) File|Move to): (.+)$`)
|
|
341
341
|
|
|
342
|
-
// isEditTool reports whether a tool can write source
|
|
342
|
+
// isEditTool reports whether a tool can write source: the Edit family plus
|
|
343
343
|
// Codex's apply_patch.
|
|
344
344
|
func isEditTool(tool string) bool {
|
|
345
345
|
switch tool {
|
|
@@ -364,10 +364,10 @@ func underDevrites(abs, root string) bool {
|
|
|
364
364
|
return strings.HasPrefix(abs, root+string(filepath.Separator))
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
-
const a1DenyReason = "DevRites A1: the orchestrator must not edit source mid-build
|
|
367
|
+
const a1DenyReason = "DevRites A1: the orchestrator must not edit source mid-build: the slice-wright is the only writer. Re-dispatch the wright (continue it once) or stop + escalate; do not patch the code yourself. (devrites-a1-guard)"
|
|
368
368
|
|
|
369
369
|
// hookA1Guard keeps the /rite-build orchestrator from editing source while a slice
|
|
370
|
-
// is mid-build
|
|
370
|
+
// is mid-build: the slice-wright (a subagent) is the only sanctioned writer of
|
|
371
371
|
// code. Ported from devrites-a1-guard.sh onto the new schema: FAIL-OPEN, OBSERVE by
|
|
372
372
|
// default (logs to .a1-guard.log), blocking only when the build window is open, the
|
|
373
373
|
// edit is source from the MAIN thread, and enforce mode is on.
|
|
@@ -451,7 +451,7 @@ func hookA1Guard(h harness.Harness, stdin io.Reader, stdout, stderr io.Writer) i
|
|
|
451
451
|
return exitOK
|
|
452
452
|
}
|
|
453
453
|
|
|
454
|
-
const wrightDenyReason = "DevRites scope: this path is not in touched-files.md. Build only the slice contract; if the slice genuinely needs this file, return an Escalation so the orchestrator routes it through the Spec Drift Guard
|
|
454
|
+
const wrightDenyReason = "DevRites scope: this path is not in touched-files.md. Build only the slice contract; if the slice genuinely needs this file, return an Escalation so the orchestrator routes it through the Spec Drift Guard: do not widen scope yourself. (devrites-wright-scope)"
|
|
455
455
|
|
|
456
456
|
// hookWrightScope fences the slice-wright to its slice: it denies an Edit/Write to a
|
|
457
457
|
// path not listed in the feature's touched-files.md. Ported from
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// Package doctor reports the version triangle
|
|
2
|
-
// DevRites pack, and the on-disk .devrites state schema
|
|
1
|
+
// Package doctor reports the version triangle: the engine binary, the installed
|
|
2
|
+
// DevRites pack, and the on-disk .devrites state schema, and a clear skew
|
|
3
3
|
// verdict. Version skew is a leading cause of silent breakage; doctor turns it
|
|
4
4
|
// into one legible line. Everything here is a read; doctor never mutates state.
|
|
5
5
|
package doctor
|
|
@@ -16,7 +16,7 @@ import (
|
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
// Unknown is the pack value reported when the installed pack version can't be
|
|
19
|
-
// discovered
|
|
19
|
+
// discovered: skew against an unknown pack is not asserted.
|
|
20
20
|
const Unknown = "unknown"
|
|
21
21
|
|
|
22
22
|
// Report is the resolved version triangle plus its verdict.
|
|
@@ -45,7 +45,7 @@ func Diagnose(projectDir, root string) (*Report, error) {
|
|
|
45
45
|
return nil, fmt.Errorf("read state schema: %w", err)
|
|
46
46
|
}
|
|
47
47
|
if stateSchema == 0 {
|
|
48
|
-
// Nothing on disk declares a version
|
|
48
|
+
// Nothing on disk declares a version: treat it as the current schema;
|
|
49
49
|
// undeclared state is read as the engine's own version.
|
|
50
50
|
stateSchema = state.SchemaVersion
|
|
51
51
|
}
|
|
@@ -61,10 +61,10 @@ func Diagnose(projectDir, root string) (*Report, error) {
|
|
|
61
61
|
switch {
|
|
62
62
|
case r.StateSchema > r.BinarySchema:
|
|
63
63
|
r.Refuse = true
|
|
64
|
-
r.Verdict = fmt.Sprintf("REFUSE: state schema v%d is newer than this binary supports (v%d)
|
|
64
|
+
r.Verdict = fmt.Sprintf("REFUSE: state schema v%d is newer than this binary supports (v%d): update devrites",
|
|
65
65
|
r.StateSchema, r.BinarySchema)
|
|
66
66
|
case r.packSkew():
|
|
67
|
-
r.Verdict = fmt.Sprintf("WARN: binary %s is older than the installed pack %s
|
|
67
|
+
r.Verdict = fmt.Sprintf("WARN: binary %s is older than the installed pack %s: update the devrites-engine binary",
|
|
68
68
|
r.Binary, r.Pack)
|
|
69
69
|
default:
|
|
70
70
|
r.Verdict = "ok: binary, pack, and state schema are compatible"
|
|
@@ -131,7 +131,7 @@ func driftChecks(projectDir string) []string {
|
|
|
131
131
|
checks = append(checks, "WARN: .claude/settings.json exists but does not reference devrites-engine hooks")
|
|
132
132
|
}
|
|
133
133
|
} else if isDir(filepath.Join(projectDir, ".claude")) {
|
|
134
|
-
checks = append(checks, "WARN: .claude/settings.json missing
|
|
134
|
+
checks = append(checks, "WARN: .claude/settings.json missing: Claude hooks/statusline may be absent")
|
|
135
135
|
}
|
|
136
136
|
if isDir(filepath.Join(projectDir, ".claude", "skills")) && !isDir(filepath.Join(projectDir, ".agents", "skills")) {
|
|
137
137
|
checks = append(checks, "WARN: Claude skills installed but Codex skill mirror .agents/skills is missing")
|