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
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
# Forge
|
|
1
|
+
# Forge: competing candidate builds for one slice
|
|
2
2
|
|
|
3
3
|
How `$rite-build` builds a slice that `$rite-vet` flagged `Forge: yes`: instead of one wright,
|
|
4
|
-
**K = 2
|
|
4
|
+
**K = 2-3 candidate wrights** each build the slice a genuinely different way in **isolation**, a
|
|
5
5
|
read-only judge scores them, and exactly **one** winner's diff lands in the working tree. Loaded
|
|
6
6
|
on demand by `$rite-build` step 3; the sibling of single-path
|
|
7
7
|
[`wright-dispatch.md`](wright-dispatch.md).
|
|
8
8
|
|
|
9
9
|
Forge is the **rare** path. Most slices are single-path (cheaper, and the default). A slice
|
|
10
|
-
forges only when the work is a genuine architecture fork
|
|
11
|
-
differ, no clear winner on paper, at high enough stakes that building the wrong one costs more
|
|
10
|
+
forges only when the work is a genuine architecture fork: two or three approaches that differ, no clear winner on paper, at high enough stakes that building the wrong one costs more
|
|
12
11
|
than building all of them. That judgment is made at `$rite-vet` and recorded as the slice's
|
|
13
12
|
`Forge:` field; build acts on the flag, it does not invent it.
|
|
14
13
|
|
|
15
14
|
## Why this doesn't break the single-writer invariant
|
|
16
15
|
|
|
17
|
-
DevRites forbids a parallel fan-out of writers **sharing one tree
|
|
16
|
+
DevRites forbids a parallel fan-out of writers **sharing one tree**: concurrent writers on one
|
|
18
17
|
working tree make conflicting implicit decisions and produce incoherent code
|
|
19
18
|
([`wright-dispatch.md`](wright-dispatch.md)). Forge keeps that invariant intact by **isolation**:
|
|
20
19
|
every candidate writes in its own worktree (or its own throwaway branch), never touching another
|
|
@@ -24,13 +23,13 @@ one slice."
|
|
|
24
23
|
|
|
25
24
|
## Trust the flag, but clear a stale one
|
|
26
25
|
|
|
27
|
-
Before competing anything, confirm the flag still earns its cost
|
|
26
|
+
Before competing anything, confirm the flag still earns its cost: `$rite-vet` set it, but the
|
|
28
27
|
plan may have moved:
|
|
29
28
|
|
|
30
|
-
- **No objective scorecard
|
|
29
|
+
- **No objective scorecard:** the slice has no acceptance criteria and no `test-plan.md`
|
|
31
30
|
coverage the judge can score against → clear `Forge` to `no`, build single-path. A competition
|
|
32
31
|
with no rubric is a coin toss with K× the cost.
|
|
33
|
-
- **Can't name two genuinely different strategies
|
|
32
|
+
- **Can't name two genuinely different strategies:** if the candidates would be variations of
|
|
34
33
|
one approach, there is nothing to compete → single-path.
|
|
35
34
|
- **Slice shrank below the bar** (now Complexity ≤3, or a dependency landed that picks the
|
|
36
35
|
approach) → single-path.
|
|
@@ -40,21 +39,21 @@ slice you can't score, and never forge to avoid making a decision the plan alrea
|
|
|
40
39
|
|
|
41
40
|
## Mechanics
|
|
42
41
|
|
|
43
|
-
The orchestrator runs F1
|
|
42
|
+
The orchestrator runs F1-F7. Steps 4-7 of the [one-slice-cycle](one-slice-cycle.md) (doubt,
|
|
44
43
|
fail-on-red, reconcile, record, stop) then run **unchanged** on the winner.
|
|
45
44
|
|
|
46
|
-
### F1
|
|
47
|
-
Take the 2
|
|
48
|
-
**distinct, complete approach** to the same slice contract
|
|
49
|
-
reuse-vs-build call, or algorithm
|
|
45
|
+
### F1: Confirm the K strategies
|
|
46
|
+
Take the 2-3 candidate strategies `$rite-vet` named (in the slice brief). Each must be a
|
|
47
|
+
**distinct, complete approach** to the same slice contract (a different seam, data shape,
|
|
48
|
+
reuse-vs-build call, or algorithm) not a tweak of one. Name them `A`, `B`, (`C`) with a
|
|
50
49
|
one-line description each. K is capped at 3: a fourth candidate rarely changes the winner and
|
|
51
50
|
multiplies cost.
|
|
52
51
|
|
|
53
|
-
### F2
|
|
52
|
+
### F2: Snapshot, then isolate each candidate
|
|
54
53
|
Snapshot the working tree first (the winner's landing is reconciled against it later), then give
|
|
55
54
|
each candidate its own isolated tree. **Prefer parallel isolated worktrees** when the harness can
|
|
56
55
|
dispatch a sub-agent with worktree isolation; the **always-available** path is one throwaway git
|
|
57
|
-
branch per candidate, built sequentially (slower, universally works
|
|
56
|
+
branch per candidate, built sequentially (slower, universally works: the
|
|
58
57
|
[`tooling.md`](../../devrites-lib/reference/standards/tooling.md) "fallback is first-class" discipline):
|
|
59
58
|
|
|
60
59
|
```bash
|
|
@@ -68,7 +67,7 @@ for C in A B; do
|
|
|
68
67
|
done
|
|
69
68
|
```
|
|
70
69
|
|
|
71
|
-
### F3
|
|
70
|
+
### F3: Dispatch K candidate wrights
|
|
72
71
|
Send **each** candidate the identical single-path slice contract from
|
|
73
72
|
[`wright-dispatch.md`](wright-dispatch.md), with **one** line added naming its assigned strategy
|
|
74
73
|
and its isolated tree:
|
|
@@ -81,32 +80,32 @@ candidate's work. Same discipline as always — orient → RED → implement sma
|
|
|
81
80
|
verify → return your structured artifact. Code + tests only.
|
|
82
81
|
```
|
|
83
82
|
|
|
84
|
-
Each is still **one wright, one tree
|
|
83
|
+
Each is still **one wright, one tree**: the invariant holds per candidate. Parallel where the
|
|
85
84
|
harness isolates them; otherwise build candidate A to green, capture its diff, reset to `BASE`,
|
|
86
85
|
then candidate B. A candidate that hits an irreversible-risk item escalates exactly as a
|
|
87
|
-
single-path wright does
|
|
86
|
+
single-path wright does: **forge never bypasses a gate** (see AFK below).
|
|
88
87
|
|
|
89
|
-
### F4
|
|
88
|
+
### F4: Judge (read-only, fresh context)
|
|
90
89
|
Dispatch [`devrites-forge-judge`](.codex/agents/devrites-forge-judge.toml) with the K finished
|
|
91
90
|
candidate diffs and the scorecard inputs (slice acceptance, `test-plan.md`, `.devrites/principles.md`,
|
|
92
91
|
the anti-slop charter). It scores each candidate, ranks them, names the **winner** and the
|
|
93
92
|
specific runner-up ideas worth grafting, and returns the structured verdict. The judge **never
|
|
94
|
-
writes code
|
|
93
|
+
writes code**. It reads the diffs and returns findings, like every reviewer agent. If sub-agent
|
|
95
94
|
dispatch is unavailable, do the judge's rubric pass yourself in a fresh read, discarding your
|
|
96
95
|
authoring reasoning (a flagged fallback, not an independent judgment).
|
|
97
96
|
|
|
98
|
-
### F5
|
|
97
|
+
### F5: Land the winner, graft sparingly
|
|
99
98
|
Apply **only** the winner's diff to the working tree (merge its worktree / cherry-pick its
|
|
100
99
|
branch). If the judge named a cheap, specific improvement in a runner-up, graft it by
|
|
101
|
-
**continuing the winning wright once** with that instruction
|
|
100
|
+
**continuing the winning wright once** with that instruction: never hand-merge two candidates'
|
|
102
101
|
code (that re-creates the incoherent-tree failure the invariant exists to prevent). The landed
|
|
103
102
|
tree has exactly one author: the winner (plus its own grafted follow-up).
|
|
104
103
|
|
|
105
|
-
### F6
|
|
104
|
+
### F6: Write `forge-report.md`
|
|
106
105
|
The durable record of the competition (template below). One per forged slice; archived with the
|
|
107
106
|
feature.
|
|
108
107
|
|
|
109
|
-
### F7
|
|
108
|
+
### F7: Clean up, then return to the cycle
|
|
110
109
|
Remove only clean losing worktrees / delete their candidate branches. If a losing worktree is dirty,
|
|
111
110
|
preserve it and record the path in `forge-report.md`; never `--force` away unlanded work.
|
|
112
111
|
|
|
@@ -152,18 +151,18 @@ slice that might be tempted to retry one>.
|
|
|
152
151
|
```
|
|
153
152
|
|
|
154
153
|
The **Discarded** section matters: it is a dead-end record at the slice level, the same role
|
|
155
|
-
`decisions.md` "Dead ends" plays for the feature
|
|
154
|
+
`decisions.md` "Dead ends" plays for the feature: a later slice shouldn't re-litigate an
|
|
156
155
|
approach forge already rejected.
|
|
157
156
|
|
|
158
157
|
## AFK & budget
|
|
159
158
|
|
|
160
159
|
- **Cost.** Forge multiplies the build by K. Under `.devrites/AFK`, each candidate counts against
|
|
161
160
|
the slice budget (`devrites-engine tick-afk` once per candidate dispatched), so a forge slice can exhaust the
|
|
162
|
-
cap faster
|
|
161
|
+
cap faster, that is intended back-pressure, not a bug.
|
|
163
162
|
- **Gates are unchanged.** Forge changes *how many candidates build*, never *what pauses*. An
|
|
164
163
|
irreversible-risk item, a blocking/escalating gate, or a red-on-completion in **any** candidate
|
|
165
164
|
pauses per [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md) exactly as single-path. AFK widens what is
|
|
166
|
-
automatic, never what is irreversible
|
|
165
|
+
automatic, never what is irreversible: forge included.
|
|
167
166
|
- **Stuck loop still applies.** Re-dispatching the same candidate without progress trips
|
|
168
167
|
`devrites-engine stuck` the same as a single wright.
|
|
169
168
|
|
|
@@ -171,11 +170,11 @@ approach forge already rejected.
|
|
|
171
170
|
|
|
172
171
|
No git, or neither worktrees nor throwaway branches are usable → **degrade to single-path** and
|
|
173
172
|
say so. Forge is an accelerator for choosing between real alternatives; it is never a requirement
|
|
174
|
-
for building the slice. A slice always has a single-path build available
|
|
173
|
+
for building the slice. A slice always has a single-path build available: the competition is the
|
|
175
174
|
optional part.
|
|
176
175
|
|
|
177
176
|
## Anti-patterns
|
|
178
177
|
|
|
179
|
-
See [`anti-patterns.md`](anti-patterns.md) § Forge
|
|
178
|
+
See [`anti-patterns.md`](anti-patterns.md) § Forge: the short version: don't forge a decided or
|
|
180
179
|
trivial slice, don't forge to dodge a decision, don't hand-merge candidates, don't exceed K=3,
|
|
181
180
|
and don't let a forged slice skip the post-return doubt because "the judge already looked."
|
|
@@ -12,7 +12,7 @@ A slice is **frontend/UI** if it touches or plans to touch any of:
|
|
|
12
12
|
|
|
13
13
|
## When triggered
|
|
14
14
|
- `$rite-spec` applies **`devrites-ux-shape`** (spec step 3a) to write the feature-level
|
|
15
|
-
**`design-brief.md`** before any code
|
|
15
|
+
**`design-brief.md`** before any code: design direction, key states, interaction model,
|
|
16
16
|
optional Figma/image visual-direction probe.
|
|
17
17
|
- `$rite-build` applies **`devrites-frontend-craft`**, building **to** that `design-brief.md`
|
|
18
18
|
(register detection, refine the brief per slice, existing design system, all states,
|
|
@@ -31,7 +31,7 @@ If the slice spans both layers, it's both a frontend **and** a backend slice. De
|
|
|
31
31
|
`devrites-frontend-craft/reference/fullstack.md`.
|
|
32
32
|
|
|
33
33
|
## When NOT triggered
|
|
34
|
-
Pure backend/data/CLI/infra slices skip craft and browser proof
|
|
34
|
+
Pure backend/data/CLI/infra slices skip craft and browser proof, but still get tests
|
|
35
35
|
and evidence. If unsure whether a slice is "UI enough", treat copy/empty/error states
|
|
36
36
|
and any rendered output as UI.
|
|
37
37
|
|
|
@@ -27,12 +27,12 @@ STOP → report + recommend next; do not start slice N+1
|
|
|
27
27
|
## Why stop after one slice
|
|
28
28
|
- Keeps the diff reviewable (~one capability, roughly ≤100 lines of meaningful change).
|
|
29
29
|
- Surfaces integration/drift problems while they're cheap.
|
|
30
|
-
- Gives the user a decision point
|
|
31
|
-
- Prevents the "90% done" pile-up where nothing is
|
|
30
|
+
- Gives the user a decision point. They may reprioritize, reslice, or polish now.
|
|
31
|
+
- Prevents the "90% done" pile-up where nothing is proven.
|
|
32
32
|
|
|
33
33
|
## Restate the scope boundary
|
|
34
34
|
Before coding, write what this slice will and will **not** touch. This is the contract
|
|
35
|
-
you check yourself against
|
|
35
|
+
you check yourself against: anything outside it is scope creep or a drift event.
|
|
36
36
|
|
|
37
37
|
## When the slice can't be completed cleanly
|
|
38
38
|
- Discovered the plan is wrong → **Spec Drift Guard** (stop, record, classify, maybe
|
|
@@ -38,4 +38,4 @@ For a **forged slice**, the `Built` line names the competition and points at the
|
|
|
38
38
|
`Done: built slice 3 — csv-streaming (forged: 3 candidates, winner B).` and
|
|
39
39
|
`Record: .devrites/work/<slug>/forge-report.md`.
|
|
40
40
|
|
|
41
|
-
**DO NOT continue to the next slice automatically
|
|
41
|
+
**DO NOT continue to the next slice automatically**: even at `✅ ALL BUILT`, `$rite-prove` is the user's call.
|
|
@@ -40,7 +40,7 @@ gates.
|
|
|
40
40
|
> but phase gates should treat a missing engine as a setup problem.
|
|
41
41
|
|
|
42
42
|
0. **Rules + AFK + readiness check.** Read `.agents/skills/devrites-lib/reference/standards/core.md` first. Then **run the
|
|
43
|
-
shared orientation preamble
|
|
43
|
+
shared orientation preamble**. It prints `state.md`, the artifacts present, the run
|
|
44
44
|
mode (HITL/AFK), and the open-question tally by gate, deterministically:
|
|
45
45
|
```bash
|
|
46
46
|
devrites-engine preamble
|
|
@@ -48,7 +48,7 @@ gates.
|
|
|
48
48
|
```
|
|
49
49
|
Treat the snapshot as the canonical machine-readable status; if you need to tell the
|
|
50
50
|
user the next command, use `nextCommands.claude` in Claude Code or `nextCommands.codex`
|
|
51
|
-
in Codex. Then **run the readiness gate
|
|
51
|
+
in Codex. Then **run the readiness gate**. It enforces the step-0 stop conditions by exit code,
|
|
52
52
|
not by memory:
|
|
53
53
|
```bash
|
|
54
54
|
devrites-engine build-readiness; echo "readiness rc=$?"
|
|
@@ -65,9 +65,9 @@ gates.
|
|
|
65
65
|
the count in `state.md` or remove the sentinel to continue). See
|
|
66
66
|
[`afk-discipline.md`](afk-discipline.md).
|
|
67
67
|
1. Read `spec.md`, `plan.md`, `tasks.md`, `assumptions.md`, `drift.md`, and `test-plan.md`
|
|
68
|
-
if present (the vetted coverage target from `$rite-vet
|
|
68
|
+
if present (the vetted coverage target from `$rite-vet`: the slice's tests come from
|
|
69
69
|
here when it exists). `state.md` and the open-`questions.md` tally are already in the
|
|
70
|
-
preamble digest from step 0
|
|
70
|
+
preamble digest from step 0: re-read `questions.md` only for the full text of a flagged
|
|
71
71
|
blocking question.
|
|
72
72
|
If a **blocking `[NEEDS CLARIFICATION]`** remains or the spec/plan readiness gates
|
|
73
73
|
don't pass, stop → `$rite-spec` (to resolve) or `$rite-plan` (to repair). Don't build
|
|
@@ -81,22 +81,22 @@ gates.
|
|
|
81
81
|
checkpoint as a ranked **option set** and resolve it **before** any code lands, per
|
|
82
82
|
[`checkpoint-protocol.md`](checkpoint-protocol.md). Branch on whether
|
|
83
83
|
a human is here:
|
|
84
|
-
- **Human present (interactive
|
|
84
|
+
- **Human present (interactive: no `.devrites/AFK`) → ask inline via `AskUserQuestion`.**
|
|
85
85
|
This is the default for an interactive build. Render 2-4 options, the recommended one
|
|
86
86
|
**first and labelled `(Recommended)`**, each with its dimension-tagged rationale + the
|
|
87
87
|
trade-off it accepts, plus the `Something else — I'll describe it` escape hatch. The
|
|
88
88
|
human picks; record the pick to `questions.md` (`answered`) + `decisions.md` (through the
|
|
89
|
-
`devrites-engine resolve` writer), clear the gate, and **continue to step 3 in place
|
|
89
|
+
`devrites-engine resolve` writer), clear the gate, and **continue to step 3 in place**: do **not**
|
|
90
90
|
STOP, do **not** route through `$rite-resolve`.
|
|
91
91
|
- **Human absent / AFK (`.devrites/AFK` present) → auto-pick or persist + STOP.** For a gate
|
|
92
92
|
in `allow_gates`, auto-pick the recommended option (option 1) and proceed; otherwise
|
|
93
93
|
append the `questions.md` entry, write the `Awaiting human` block to `state.md`, set
|
|
94
|
-
`Status: awaiting_human`, fire the `notify:` hook, then **STOP
|
|
94
|
+
`Status: awaiting_human`, fire the `notify:` hook, then **STOP**: resume when the user
|
|
95
95
|
runs `$rite-resolve <qid> "<answer>"`. `blocking` / `escalating` / irreversible-risk gates
|
|
96
96
|
always take this stop path, never the AFK auto-pick.
|
|
97
|
-
3. **Snapshot the tree, then dispatch the build core to `devrites-slice-wright
|
|
97
|
+
3. **Snapshot the tree, then dispatch the build core to `devrites-slice-wright`:** one `Task`
|
|
98
98
|
call, fresh context. **First**, capture the pre-dispatch tree so the reconcile gate (step 6)
|
|
99
|
-
can prove you never touched source
|
|
99
|
+
can prove you never touched source: run this immediately before the `Task` call:
|
|
100
100
|
```bash
|
|
101
101
|
devrites-engine reconcile snapshot
|
|
102
102
|
```
|
|
@@ -105,7 +105,7 @@ gates.
|
|
|
105
105
|
```bash
|
|
106
106
|
devrites-engine stuck log "$(cat .devrites/ACTIVE 2>/dev/null)" dispatch "<slice id>"
|
|
107
107
|
```
|
|
108
|
-
**Forge branch
|
|
108
|
+
**Forge branch: only if the selected slice is `Forge: yes`.** Instead of the single dispatch
|
|
109
109
|
below, run the competitive build per [`forge.md`](forge.md): K=2-3 candidate
|
|
110
110
|
wrights, each in an **isolated git worktree** on the distinct strategy `$rite-vet` named, then a
|
|
111
111
|
fresh-context [`devrites-forge-judge`](.codex/agents/devrites-forge-judge.toml) scores them against
|
|
@@ -115,7 +115,7 @@ gates.
|
|
|
115
115
|
a single wright does (one structured artifact, for the winner), so steps 4-7 (doubt, fail-on-red,
|
|
116
116
|
reconcile against the winner's claimed set, record, stop) run **unchanged**. If you cannot give
|
|
117
117
|
the judge an objective scorecard (the slice lacks acceptance / `test-plan.md` coverage) or cannot
|
|
118
|
-
name two genuinely different strategies, the flag is stale
|
|
118
|
+
name two genuinely different strategies, the flag is stale: clear it and build single-path. The
|
|
119
119
|
single-writer invariant is intact: each candidate owns its own tree, exactly one author's diff
|
|
120
120
|
lands. Then **stop** here for this slice; the steps below are the default single-path dispatch.
|
|
121
121
|
|
|
@@ -123,33 +123,33 @@ gates.
|
|
|
123
123
|
[`wright-dispatch.md`](wright-dispatch.md): the slice goal, acceptance
|
|
124
124
|
criteria, and **scope boundary**; the paths it may touch (`touched-files.md`); the context
|
|
125
125
|
paths to read (`spec.md`, `plan.md`, `decisions.md`, `assumptions.md`, `.devrites/principles.md`
|
|
126
|
-
when present
|
|
127
|
-
when present
|
|
128
|
-
coverage the wright must write
|
|
126
|
+
when present (the binding invariants the slice must honor) plus `test-plan.md`
|
|
127
|
+
when present (its per-gap test requirements + regression-criticals for this slice are the
|
|
128
|
+
coverage the wright must write) and `design-brief.md`
|
|
129
129
|
when the slice touches UI per [`frontend-trigger.md`](frontend-trigger.md)); and the
|
|
130
130
|
`.agents/skills/devrites-lib/reference/standards/` files in scope. The wright **orients** on the project's idiom (using a
|
|
131
|
-
code-intelligence index **if available**
|
|
131
|
+
code-intelligence index **if available** (`codebase-memory-mcp` first, cross-checked with
|
|
132
132
|
`codegraph` (`.codegraph/` / `codegraph_*`) + `graphify` (`graphify-out/`), else standard
|
|
133
|
-
methods (LSP / `Read`/`Grep`/`Glob`); see `.agents/skills/devrites-lib/reference/standards/tooling.md`
|
|
133
|
+
methods (LSP / `Read`/`Grep`/`Glob`); see `.agents/skills/devrites-lib/reference/standards/tooling.md`) for
|
|
134
134
|
placement/callers/impact), writes the **failing test first** when
|
|
135
135
|
behaviour changes ([`tdd.md`](tdd.md)), implements the **smallest complete** version in
|
|
136
136
|
the project's style (applying `devrites-frontend-craft` to `design-brief.md` for UI, and
|
|
137
|
-
`devrites-source-driven`
|
|
137
|
+
`devrites-source-driven` (with context7 if available) for uncertain framework facts), runs the slice's **targeted tests**
|
|
138
138
|
(plus typecheck / lint / build where the project has them), and returns a structured artifact
|
|
139
|
-
|
|
139
|
+
: **code + tests only; it does not write the workspace files.** If the slice is UI but no `design-brief.md` exists (e.g. a spec written before
|
|
140
140
|
shaping), shape it via `devrites-ux-shape` before the wright codes. If the `Task` tool is
|
|
141
|
-
unavailable, run the wright's discipline **inline** as a flagged fallback (see the reference)
|
|
142
|
-
|
|
141
|
+
unavailable, run the wright's discipline **inline** as a flagged fallback (see the reference).
|
|
142
|
+
Same one-slice cycle, no isolation; in that case write
|
|
143
143
|
`.devrites/work/<slug>/.reconcile-inline` so the reconcile gate skips (you are legitimately
|
|
144
144
|
the writer in this fallback).
|
|
145
145
|
4. **Doubt the decisions it stood up.** For each entry in the wright's `Decisions stood`
|
|
146
146
|
(branching, boundary crossing, data model, auth, public API, migration, user-flow change,
|
|
147
|
-
"this is safe/scales") apply `devrites-doubt` **before accepting the slice
|
|
147
|
+
"this is safe/scales") apply `devrites-doubt` **before accepting the slice**: the writer
|
|
148
148
|
doesn't grade its own decisions. Each `devrites-doubt` invocation **dispatches the
|
|
149
149
|
`devrites-doubt-reviewer` subagent** (doing the adversarial pass inline is the writer grading
|
|
150
|
-
itself
|
|
150
|
+
itself: the thing this step exists to forbid). **Completion criterion (checkable):** step 4
|
|
151
151
|
is done only when **every** `Decisions stood` entry carries a recorded `devrites-doubt`
|
|
152
|
-
verdict
|
|
152
|
+
verdict (`accept`, or `reject` + the required changes) in `decisions.md` (accepted
|
|
153
153
|
trade-offs) / `questions.md` (open gates). A `Decisions stood` entry with **no verdict on
|
|
154
154
|
record** means doubt did not run for it: **do not enter step 5 and do not mark the slice
|
|
155
155
|
`built`.** Log each dispatch so the seal can prove doubt ran (the footprint already counts a
|
|
@@ -163,49 +163,49 @@ gates.
|
|
|
163
163
|
`Status: awaiting_human`; a scope-changing answer → `$rite-plan repair` (Spec Drift Guard),
|
|
164
164
|
never silently into the slice. **If an irreversible-risk item shows up under the wright's
|
|
165
165
|
`Decisions stood` rather than `Escalation`**, treat that misclassification as itself a
|
|
166
|
-
blocking protocol violation
|
|
167
|
-
**not** doubt-and-accept it. (The wright's return is the not-yet-load-bearing moment
|
|
168
|
-
slice isn't `built` or merged yet
|
|
166
|
+
blocking protocol violation: pause and re-dispatch with the item flagged out-of-bounds, do
|
|
167
|
+
**not** doubt-and-accept it. (The wright's return is the not-yet-load-bearing moment (the
|
|
168
|
+
slice isn't `built` or merged yet) so this post-return doubt is still pre-commit.)
|
|
169
169
|
**Principle check (same standing):** a wright return that breaks a declared principle
|
|
170
170
|
(reported in its `Principles` field, or that you detect against `.devrites/principles.md`) is
|
|
171
|
-
handled here like an irreversible-risk item
|
|
171
|
+
handled here like an irreversible-risk item: block, route to a human-approved scoped
|
|
172
172
|
exception in the register or stop; never doubt-and-accept a principle violation into the slice.
|
|
173
173
|
5. **Fail-on-red.** If the wright's `Gates` were red (targeted tests / types / lint) or it
|
|
174
174
|
couldn't verify: do **not** mark the slice `built`, and **do not fix the code yourself**.
|
|
175
|
-
First remedy
|
|
175
|
+
First remedy: **continue the same wright once** (`SendMessage` to it, carrying the failing
|
|
176
176
|
gate + its real output) so it fixes in its own context. This retry is for **objective
|
|
177
|
-
failures only
|
|
177
|
+
failures only**: red gate / type / lint / missing test coverage / UI browser-proof fail:
|
|
178
178
|
never a contested decision (that routes to `$rite-plan repair`). **Still red after the one
|
|
179
179
|
retry** → escalate: AFK → append a blocking question to `questions.md` (gate=blocking,
|
|
180
180
|
slice's SLA) + set `Status: awaiting_human`; HITL → pause as a blocking gate. Either way,
|
|
181
181
|
`Next step: $rite-plan unblock` until resolved.
|
|
182
|
-
6. **Record
|
|
182
|
+
6. **Record. You are the canonical writer.** **First, run the reconcile gate (A1):** write the
|
|
183
183
|
wright's reported `Files changed` paths (one per line) to
|
|
184
184
|
`.devrites/work/<slug>/.reconcile-claimed` (or the active legacy
|
|
185
185
|
`.devrites/features/<slug>/` workspace during migration), then:
|
|
186
186
|
```bash
|
|
187
187
|
devrites-engine reconcile check; echo "reconcile rc=$?"
|
|
188
188
|
```
|
|
189
|
-
**Exit 5 → hard STOP:** a source file changed outside the wright's claimed set
|
|
189
|
+
**Exit 5 → hard STOP:** a source file changed outside the wright's claimed set: code was
|
|
190
190
|
edited by something other than the wright (A1 breach). Revert it and re-dispatch the wright;
|
|
191
191
|
do **not** mark the slice `built`.
|
|
192
192
|
|
|
193
|
-
**Then run the test-integrity gate (anti-reward-hacking)
|
|
193
|
+
**Then run the test-integrity gate (anti-reward-hacking)**: prove the slice didn't reach
|
|
194
194
|
green by weakening its tests:
|
|
195
195
|
```bash
|
|
196
196
|
devrites-engine test-integrity; echo "test-integrity rc=$?"
|
|
197
197
|
```
|
|
198
|
-
**Exit 3 → hard STOP:** a test was deleted, skipped, or de-asserted since the slice base
|
|
198
|
+
**Exit 3 → hard STOP:** a test was deleted, skipped, or de-asserted since the slice base: the
|
|
199
199
|
slice went green by weakening its tests, a Critical protocol violation. Revert the weakening and
|
|
200
200
|
re-dispatch the wright; do **not** mark the slice `built`.
|
|
201
201
|
|
|
202
|
-
**Then run the package-existence gate (anti-hallucination)
|
|
202
|
+
**Then run the package-existence gate (anti-hallucination)**: every new third-party import must
|
|
203
203
|
be declared in a project manifest, not just imported:
|
|
204
204
|
```bash
|
|
205
205
|
devrites-engine package-existence; echo "package-existence rc=$?"
|
|
206
206
|
```
|
|
207
207
|
**Exit 3 → STOP:** an imported package is not declared in any manifest (`package.json`, `go.mod`,
|
|
208
|
-
`requirements.txt`, `pyproject.toml`, `Pipfile`, `Cargo.toml`)
|
|
208
|
+
`requirements.txt`, `pyproject.toml`, `Pipfile`, `Cargo.toml`): the classic shape of a
|
|
209
209
|
hallucinated or typo-squatted dependency. Confirm the name on the registry and declare it via the
|
|
210
210
|
package manager, or remove the import; do **not** mark the slice `built`. The gate is deterministic
|
|
211
211
|
and fail-open (not a git repo / no manifest / stdlib-only import → rc 0).
|
|
@@ -213,10 +213,10 @@ gates.
|
|
|
213
213
|
Then, from the wright's artifact, update `state.md`,
|
|
214
214
|
`evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI). Add a `## Review trail`
|
|
215
215
|
to `touched-files.md`: group the slice's important `path:line` stops by concern (design intent,
|
|
216
|
-
not file order), 1
|
|
216
|
+
not file order), 1-5 concerns, each stop under 15 words. This is for a later human walkthrough;
|
|
217
217
|
keep it factual and skip invented rationale. **Persist every
|
|
218
218
|
`Decisions stood` entry from the wright's artifact to a `## Decisions stood` section in
|
|
219
|
-
`decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING
|
|
219
|
+
`decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`**: the
|
|
220
220
|
verdict from step 4, or `MISSING` if step 4 was skipped for that entry. Write this ledger at
|
|
221
221
|
record-time **independent of the doubt step**, so a stood decision lands on disk even when it
|
|
222
222
|
was never doubted: `$rite-seal` cross-checks the ledger, and a `doubt: MISSING` entry is the
|
|
@@ -226,13 +226,13 @@ gates.
|
|
|
226
226
|
an approach it tried and backed out of, record it under a `## Dead ends` section in
|
|
227
227
|
`decisions.md` so a retry or the next agent doesn't repeat it.
|
|
228
228
|
**If the wright's `Conventions` field reports a contradiction** (the live code now
|
|
229
|
-
disagrees with a held convention), record the drift
|
|
229
|
+
disagrees with a held convention), record the drift. You own this bookkeeping:
|
|
230
230
|
```bash
|
|
231
231
|
devrites-engine conventions contradict --key <key> --slug <slug> \
|
|
232
232
|
--evidence "<what the live code does>" --drift-file .devrites/work/<slug>/drift.md
|
|
233
233
|
```
|
|
234
234
|
It lowers the convention's band (or retires it) and appends a `convention-drift` entry to
|
|
235
|
-
`drift.md`. The ledger is **promoted only at `$rite-seal` on GO
|
|
235
|
+
`drift.md`. The ledger is **promoted only at `$rite-seal` on GO**: build only records
|
|
236
236
|
contradictions, never new conventions. **Evidence is the
|
|
237
237
|
wright's real command output, not its say-so.** Capture per
|
|
238
238
|
[`evidence-standard.md`](evidence-standard.md). Append a footprint record for this
|
|
@@ -241,10 +241,10 @@ gates.
|
|
|
241
241
|
devrites-engine footprint log <slug> wright "<slice id>"
|
|
242
242
|
```
|
|
243
243
|
If `.devrites/AFK` is present, decrement
|
|
244
|
-
the budget by running `devrites-engine tick-afk <state.md path
|
|
244
|
+
the budget by running `devrites-engine tick-afk <state.md path>`:
|
|
245
245
|
it decrements `state.md`'s `AFK slices remaining` field, prints the new value, and exits `3`
|
|
246
246
|
when it hits 0. **Exit 3 → STOP** (forced HITL stop; the cap is exhausted). Never rewrite
|
|
247
|
-
`.devrites/AFK` `max_slices` in place
|
|
247
|
+
`.devrites/AFK` `max_slices` in place. It is read-only initial budget.
|
|
248
248
|
7. **STOP.** Render the progress footer, then report and recommend the next step. Run the
|
|
249
249
|
shared footer (mirror of the step-0 preamble) so the slice meter + flow ribbon are
|
|
250
250
|
deterministic, not model-typed:
|
|
@@ -252,7 +252,7 @@ gates.
|
|
|
252
252
|
devrites-engine progress
|
|
253
253
|
```
|
|
254
254
|
It reads `state.md` (already updated in step 6), so the meter reflects the slice you
|
|
255
|
-
just built. **When every slice is built** (`✅ ALL BUILT`) say so explicitly
|
|
256
|
-
phase is complete, the next phase is `$rite-prove`
|
|
255
|
+
just built. **When every slice is built** (`✅ ALL BUILT`) say so explicitly (the build
|
|
256
|
+
phase is complete, the next phase is `$rite-prove`) don't leave completion implicit.
|
|
257
257
|
|
|
258
|
-
> **Mid-flight discipline.** The wright (or you, in the inline fallback) must resist doing two slices, skipping TDD, adding a defensive check, or wandering outside `touched-files.md`; you must resist skipping the post-return `devrites-doubt` because the wright "seems confident"
|
|
258
|
+
> **Mid-flight discipline.** The wright (or you, in the inline fallback) must resist doing two slices, skipping TDD, adding a defensive check, or wandering outside `touched-files.md`; you must resist skipping the post-return `devrites-doubt` because the wright "seems confident": see [`anti-patterns.md`](anti-patterns.md). Load it the moment you reach for the excuse.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Spec Drift Guard (build phase)
|
|
2
2
|
|
|
3
|
-
Active throughout `$rite-build`. The spec is living, not sacred
|
|
3
|
+
Active throughout `$rite-build`. The spec is living, not sacred, but you may not
|
|
4
4
|
silently code against a plan you know is wrong. This is the canonical Spec Drift Guard;
|
|
5
5
|
other phases reference it here.
|
|
6
6
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# TDD / Prove-It pattern
|
|
2
2
|
|
|
3
|
-
When a slice changes behavior, prove the change with a test that fails first
|
|
3
|
+
When a slice changes behavior, prove the change with a test that fails first, so you
|
|
4
4
|
know the test can fail, and that your code is what makes it pass.
|
|
5
5
|
|
|
6
6
|
## Red → Green → Refactor
|
|
7
|
-
1. **Red
|
|
7
|
+
1. **Red:** write the smallest test that expresses the new behavior. Run it; watch it
|
|
8
8
|
fail for the *expected* reason (not a typo/import error).
|
|
9
|
-
2. **Green
|
|
10
|
-
3. **Refactor
|
|
9
|
+
2. **Green:** write the minimum code to pass. Resist gold-plating.
|
|
10
|
+
3. **Refactor:** clean up with the test as a safety net. Re-run; stay green.
|
|
11
11
|
|
|
12
12
|
## Prove-It (when strict TDD doesn't fit)
|
|
13
13
|
For code where a test-first flow is awkward (exploratory glue, config, some UI), still
|
|
14
14
|
produce evidence:
|
|
15
|
-
- Capture the current (wrong/absent) behavior
|
|
15
|
+
- Capture the current (wrong/absent) behavior: a failing assertion, a screenshot, a
|
|
16
16
|
log line.
|
|
17
17
|
- Make the change.
|
|
18
18
|
- Capture the new behavior the same way. The before/after pair *is* the proof.
|
|
@@ -21,6 +21,6 @@ produce evidence:
|
|
|
21
21
|
- Use the project's existing test framework and commands (discovered in `spec.md` →
|
|
22
22
|
"Commands discovered"). Don't introduce a new test runner to prove a slice.
|
|
23
23
|
- One behavior per test; name it for the behavior, not the function.
|
|
24
|
-
- A green test you never saw fail proves nothing
|
|
24
|
+
- A green test you never saw fail proves nothing: always see red first.
|
|
25
25
|
- Don't delete or weaken a failing test to "pass". If it's wrong, that may be drift.
|
|
26
26
|
- Record the test command + result in `evidence.md`.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
# Slice-wright dispatch
|
|
2
2
|
|
|
3
|
-
How `$rite-build` hands the **build core** of one slice to `devrites-slice-wright
|
|
3
|
+
How `$rite-build` hands the **build core** of one slice to `devrites-slice-wright`: the
|
|
4
4
|
fresh-context, **write-capable** executor under `.codex/agents/`. Loaded on demand by
|
|
5
5
|
`$rite-build`; not a skill itself. Sibling of
|
|
6
6
|
[`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md)
|
|
7
|
-
(the read-only reviewer fan-out)
|
|
7
|
+
(the read-only reviewer fan-out): same isolation principle, opposite direction: this one
|
|
8
8
|
**writes**.
|
|
9
9
|
|
|
10
10
|
Pattern: the orchestrator owns the **gates and the workspace**; the wright owns the **writing**.
|
|
11
|
-
Brief it precisely, in a clean context, with only the slice contract
|
|
11
|
+
Brief it precisely, in a clean context, with only the slice contract, then doubt, record, and
|
|
12
12
|
gate its return.
|
|
13
13
|
|
|
14
14
|
## Why a fresh context writes the slice
|
|
15
15
|
The orchestrator's window is full of spec investigation, planning, prior slices, and tool
|
|
16
|
-
output
|
|
16
|
+
output: the exact "lost-in-the-middle" load that degrades instruction-following and pulls the
|
|
17
17
|
model toward generic code. The wright starts clean and sees only the contract, so it holds the
|
|
18
18
|
slice boundary strictly and writes to the *project's* idiom instead of drifting. Single-threaded
|
|
19
|
-
by design: **one** wright per slice, never a parallel fan-out of writers *sharing a tree
|
|
19
|
+
by design: **one** wright per slice, never a parallel fan-out of writers *sharing a tree*:
|
|
20
20
|
concurrent writers on one working tree make conflicting implicit decisions and produce incoherent
|
|
21
21
|
code. The one sanctioned exception is a **forge** slice, which competes K candidates in *isolated*
|
|
22
|
-
worktrees and lands exactly one
|
|
22
|
+
worktrees and lands exactly one: no tree ever has two authors, so the invariant holds (see
|
|
23
23
|
[Forge](#forge--competing-candidates-the-deliberate-exception)).
|
|
24
24
|
|
|
25
25
|
## The contract `$rite-build` sends
|
|
@@ -58,29 +58,29 @@ bookkeeping files; return that data. Return your structured artifact, not your t
|
|
|
58
58
|
Rules:
|
|
59
59
|
- **One `Task` call, one wright.** Never dispatch two writers on the same slice.
|
|
60
60
|
- **No author reasoning beyond the contract.** Give the slice spec, not your analysis of *how*
|
|
61
|
-
to code it
|
|
61
|
+
to code it: a clean, undirected read is the point.
|
|
62
62
|
- **Name the boundary explicitly.** The scope boundary is the single most load-bearing field; an
|
|
63
63
|
underspecified one is the main cause of drift.
|
|
64
64
|
|
|
65
|
-
## On return
|
|
65
|
+
## On return: the orchestrator's job (don't delegate these)
|
|
66
66
|
**You never edit source here.** The wright is the only writer of code + tests; you write only
|
|
67
67
|
`.devrites/` bookkeeping. Every remedy below is **continue the same wright once** or **stop +
|
|
68
|
-
escalate
|
|
68
|
+
escalate**: never an inline patch. You snapshotted the tree before dispatch (`devrites-engine reconcile snapshot`); the reconcile check in step 4 proves no source changed outside the wright's claimed
|
|
69
69
|
set.
|
|
70
70
|
|
|
71
71
|
1. **Doubt the surfaced decisions.** For each entry in the wright's `Decisions stood`, apply
|
|
72
|
-
`devrites-doubt` (→ `devrites-doubt-reviewer`) before accepting
|
|
72
|
+
`devrites-doubt` (→ `devrites-doubt-reviewer`) before accepting: the writer must not grade
|
|
73
73
|
its own decisions. The wright's return is the not-yet-load-bearing moment (slice not `built`,
|
|
74
74
|
not merged), so this post-return doubt is still pre-commit. Irreversible-risk items always
|
|
75
|
-
pause
|
|
75
|
+
pause, and an irreversible item that the wright filed under `Decisions stood` instead of
|
|
76
76
|
`Escalation` is a protocol violation: pause and re-dispatch with it flagged out-of-bounds,
|
|
77
77
|
don't doubt-and-accept.
|
|
78
78
|
2. **Honor escalations.** A non-empty `Escalation` → do **not** mark the slice built. Write the
|
|
79
79
|
`questions.md` entry + `state.md` `Awaiting human` (blocking gate), or route a scope change
|
|
80
80
|
through `$rite-plan repair` (Spec Drift Guard). You are the canonical writer of these files.
|
|
81
81
|
3. **Fail-on-red.** If `Gates` show red (or the wright couldn't verify), the slice is **not
|
|
82
|
-
built
|
|
83
|
-
(`SendMessage`, carrying the failing gate + real output) so it fixes in its own context
|
|
82
|
+
built**, and you do **not** fix the code. First remedy: **continue the same wright once**
|
|
83
|
+
(`SendMessage`, carrying the failing gate + real output) so it fixes in its own context:
|
|
84
84
|
objective failures only (red gate / type / lint / missing coverage / UI browser-proof fail),
|
|
85
85
|
never a contested decision. Still red after that one retry → blocking question (AFK) or
|
|
86
86
|
blocking gate (HITL); `Next: $rite-plan unblock`.
|
|
@@ -89,17 +89,17 @@ set.
|
|
|
89
89
|
slice (don't mark it built). Continue the same wright to cover it, or record a blocker.
|
|
90
90
|
4. **Reconcile, then record.** First prove A1 held: write the wright's `Files changed` paths
|
|
91
91
|
(one per line) to `.devrites/work/<slug>/.reconcile-claimed` and run `devrites-engine reconcile check`.
|
|
92
|
-
**Exit 5 → STOP
|
|
92
|
+
**Exit 5 → STOP**: a source file changed outside the wright's claimed set (A1 breach); revert
|
|
93
93
|
it and re-dispatch, don't mark the slice built. Then persist the wright's artifact to
|
|
94
94
|
`state.md`, `evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI) per
|
|
95
95
|
[`evidence-standard.md`](evidence-standard.md). Evidence is the wright's real command output,
|
|
96
96
|
not its say-so. Add a concern-ordered `## Review trail` to `touched-files.md` from the wright's changed paths and summary so a human can review by design intent instead of file order. **Persist every `Decisions stood` entry to a `## Decisions stood` section in
|
|
97
|
-
`decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING
|
|
97
|
+
`decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`**:
|
|
98
98
|
independent of the doubt step (step 1 above), so a skipped decision still lands on record for
|
|
99
99
|
the seal's doubt-coverage cross-check (`- none` when the wright stood nothing). Then tick AFK if
|
|
100
100
|
`.devrites/AFK` is present (`devrites-engine tick-afk`; exit 3 → STOP).
|
|
101
101
|
|
|
102
|
-
## Forge
|
|
102
|
+
## Forge: competing candidates (the deliberate exception)
|
|
103
103
|
|
|
104
104
|
The single-writer rule forbids parallel writers **sharing one tree**. A `Forge: yes` slice
|
|
105
105
|
(flagged by `$rite-vet` as a genuine architecture fork at Complexity ≥4) is the one sanctioned
|
|
@@ -112,29 +112,29 @@ tree. No tree ever has two authors; exactly one author's work ships. Everything
|
|
|
112
112
|
fail-on-red, reconcile against the winner's claimed set, record) runs on the winner as if a single
|
|
113
113
|
wright had built it.
|
|
114
114
|
|
|
115
|
-
Full mechanics
|
|
116
|
-
winner, `forge-report.md`, AFK budgeting, and the worktree-unavailable fallback
|
|
115
|
+
Full mechanics (strategy derivation, worktree setup, the judge contract, landing + grafting the
|
|
116
|
+
winner, `forge-report.md`, AFK budgeting, and the worktree-unavailable fallback) live in
|
|
117
117
|
[`forge.md`](forge.md).
|
|
118
118
|
|
|
119
119
|
## Fallback
|
|
120
120
|
If the `Task` tool / sub-agent dispatch is unavailable, `$rite-build` runs the wright's
|
|
121
121
|
discipline **inline** in its own context and flags it as a fallback (no clean-context benefit).
|
|
122
|
-
The slice still gets the full one-slice cycle
|
|
122
|
+
The slice still gets the full one-slice cycle (orient → RED → implement → verify) under the
|
|
123
123
|
same anti-slop charter; it just doesn't get the isolation. In this path the orchestrator is
|
|
124
|
-
legitimately the writer, so write `.devrites/work/<slug>/.reconcile-inline` before editing
|
|
124
|
+
legitimately the writer, so write `.devrites/work/<slug>/.reconcile-inline` before editing: the
|
|
125
125
|
reconcile gate (step 4) skips when that sentinel is present. Mirrors the reviewer-dispatch
|
|
126
126
|
fallback in
|
|
127
127
|
[`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
|
|
128
128
|
|
|
129
129
|
## Optional pre-block hook (defense in depth)
|
|
130
|
-
`devrites-engine reconcile` is the **post-hoc** gate
|
|
130
|
+
`devrites-engine reconcile` is the **post-hoc** gate. It always runs and catches an A1 breach at record time.
|
|
131
131
|
A companion **pre-block** hook, `devrites-engine hook a1-guard` (a `PreToolUse` matcher on
|
|
132
132
|
`Edit|Write|MultiEdit`), stops the breach *before* the write lands. It is armed only inside the
|
|
133
133
|
mid-build window (between `devrites-engine reconcile snapshot` and a clean `check`, keyed on `.reconcile-base`),
|
|
134
134
|
allows the wright (subagent calls carry `agent_id`), the inline fallback (`.reconcile-inline`),
|
|
135
|
-
and any `.devrites/` write
|
|
135
|
+
and any `.devrites/` write, so it never touches `$rite-polish`, `$rite-quick`, or ordinary
|
|
136
136
|
manual edits. It ships **observe-only** (logs would-be blocks to `.a1-guard.log`, never blocks);
|
|
137
137
|
flip to enforce with `DEVRITES_A1_HOOK=enforce` or a `.devrites/work/<slug>/.a1-enforce` file once
|
|
138
138
|
the log confirms it never flags the wright's own edits (older Claude Code builds may not populate
|
|
139
|
-
`agent_id
|
|
139
|
+
`agent_id`: the log is the proof before you enforce). The post-hoc gate stands on its own; the
|
|
140
140
|
hook is belt-and-suspenders.
|