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,4 +1,4 @@
|
|
|
1
|
-
# AFK & HITL
|
|
1
|
+
# AFK & HITL: the pause/resume contract
|
|
2
2
|
|
|
3
3
|
The rule layer for DevRites's two run modes. Every `rite-*` and `devrites-*` skill that
|
|
4
4
|
might pause for a human reads from this contract; `$rite-build`, `$rite-status`,
|
|
@@ -8,28 +8,28 @@ The contract is intentionally small: one sentinel, one queue, one verb.
|
|
|
8
8
|
|
|
9
9
|
## Run modes
|
|
10
10
|
|
|
11
|
-
- **HITL (default)
|
|
12
|
-
the harness `AskUserQuestion` tool
|
|
11
|
+
- **HITL (default):** human is present. At a gap/checkpoint the skill **asks inline** via
|
|
12
|
+
the harness `AskUserQuestion` tool: a ranked **option set** (recommended first, each with
|
|
13
13
|
dimension-tagged rationale; see [Option set](#option-set--how-every-gap-is-presented)). The
|
|
14
14
|
human picks; the skill records the pick to `questions.md` (`answered`) + `decisions.md` and
|
|
15
|
-
**continues in place
|
|
15
|
+
**continues in place: no `$rite-resolve` round-trip**. `$rite-resolve` is only for answering
|
|
16
16
|
**async** (a pause that already stopped the session) or in **batch**.
|
|
17
|
-
**No interactive question tool in the current surface?** (Codex outside Plan mode
|
|
17
|
+
**No interactive question tool in the current surface?** (Codex outside Plan mode:
|
|
18
18
|
`request_user_input` is Plan-mode-only.) Render the same option set as a plain numbered
|
|
19
19
|
list in chat and **end the turn**; the human's reply is the pick. Auto-picking an option
|
|
20
|
-
is **AFK's contract, gated by the `.devrites/AFK` sentinel
|
|
20
|
+
is **AFK's contract, gated by the `.devrites/AFK` sentinel**: a missing tool never
|
|
21
21
|
converts a HITL gap into a self-answered one.
|
|
22
|
-
- **AFK
|
|
22
|
+
- **AFK:** `.devrites/AFK` is present. For any gate AFK may auto-handle (severity in
|
|
23
23
|
`allow_gates`), the skill **auto-picks the recommended option** (option 1 of the set), records
|
|
24
24
|
it (`gate: advisory` + a `decisions.md` ADR), and continues unattended. Gates above the
|
|
25
|
-
ceiling
|
|
25
|
+
ceiling (and every irreversible-risk item) pause and queue a `questions.md` entry for
|
|
26
26
|
`$rite-resolve`.
|
|
27
27
|
|
|
28
28
|
`.devrites/AFK` presence is authoritative for run mode; gate-deciding skills re-read the
|
|
29
29
|
sentinel at decision time (the shared preamble derives the mode from it). There is no
|
|
30
30
|
`state.md` run-mode field to drift out of sync.
|
|
31
31
|
|
|
32
|
-
## The sentinel
|
|
32
|
+
## The sentinel: `.devrites/AFK`
|
|
33
33
|
|
|
34
34
|
Presence = AFK active. The file body is optional YAML:
|
|
35
35
|
|
|
@@ -39,7 +39,7 @@ notify: "ntfy.sh/my-topic" # shell command run on awaiting_human trans
|
|
|
39
39
|
allow_gates: [advisory, validating] # gate severities AFK auto-handles (auto-picks the recommended option)
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
The file is **read-only config
|
|
42
|
+
The file is **read-only config**: never rewritten in place. `max_slices` is the initial
|
|
43
43
|
budget; the mutable remaining count lives in `state.md` as `AFK slices remaining: <n>`,
|
|
44
44
|
seeded from `max_slices` on the first AFK build and decremented by `devrites-engine tick-afk` (which
|
|
45
45
|
exits non-zero at 0, forcing a HITL stop). The cap is enforced by the script, not prose.
|
|
@@ -64,8 +64,8 @@ for the full taxonomy. Summary:
|
|
|
64
64
|
|---|---|---|---|---|
|
|
65
65
|
| advisory | low | no | none | yes (log + proceed) |
|
|
66
66
|
| validating | medium | async | 4h | yes (build + queue, no merge until resolved) |
|
|
67
|
-
| blocking | high | sync | 15m | **no**
|
|
68
|
-
| escalating | novel pattern | sync to specialist | 24h | **no**
|
|
67
|
+
| blocking | high | sync | 15m | **no** (always pauses) |
|
|
68
|
+
| escalating | novel pattern | sync to specialist | 24h | **no** (always pauses) |
|
|
69
69
|
|
|
70
70
|
`blocking` and `escalating` always pause regardless of `allow_gates`. They are the
|
|
71
71
|
"AFK never silently accepts" guarantees in protocol form.
|
|
@@ -75,25 +75,25 @@ An open `gate: validating` entry is **merge-blocking by definition**: at `$rite-
|
|
|
75
75
|
its behavior impact. A slice marked `built (pending review)` is **not done** until that
|
|
76
76
|
validating gate resolves.
|
|
77
77
|
|
|
78
|
-
## Option set
|
|
78
|
+
## Option set: how every gap is presented
|
|
79
79
|
|
|
80
80
|
Wherever a gap, checkpoint, or non-trivial decision surfaces (`$rite-spec`, `$rite-define`,
|
|
81
81
|
`$rite-build`, `$rite-temper`, `$rite-vet`, `devrites-doubt`, `devrites-interview`), present a
|
|
82
82
|
**ranked option set**, never a single bare guess:
|
|
83
83
|
|
|
84
|
-
- **2
|
|
85
|
-
- Each option carries a **one-line rationale tagged by the dimensions that matter
|
|
84
|
+
- **2-4 concrete options**, the **recommended one first**, labelled `(Recommended)`.
|
|
85
|
+
- Each option carries a **one-line rationale tagged by the dimensions that matter**:
|
|
86
86
|
`logic · infra · business · architecture` (add `security` / `UX` / `risk` when in scope).
|
|
87
87
|
Name the trade-off, not just the choice.
|
|
88
88
|
- Always include an escape hatch (`Something else — I'll describe it`).
|
|
89
89
|
- The recommendation reflects what's best for *this* project (its conventions, stack, scale,
|
|
90
|
-
domain)
|
|
90
|
+
domain), not a generic default.
|
|
91
91
|
|
|
92
92
|
**HITL** renders the set via `AskUserQuestion` (recommended option first; rationale in each
|
|
93
93
|
option's description); the human's pick resolves the gate **in place**. **AFK** auto-picks
|
|
94
94
|
option 1 (the recommendation) for gates it may auto-handle. Either way the chosen option is
|
|
95
95
|
recorded verbatim and the **rejected options stay in `questions.md`** as the considered-alternatives
|
|
96
|
-
trail
|
|
96
|
+
trail: the audit shows what was weighed, not just what was decided.
|
|
97
97
|
|
|
98
98
|
## Irreversible-risk list (always pause)
|
|
99
99
|
|
|
@@ -136,10 +136,10 @@ answer: <chosen option (or human's verbatim reply / drop reason)>
|
|
|
136
136
|
```
|
|
137
137
|
|
|
138
138
|
Rules:
|
|
139
|
-
- `NNN` is sequential per date
|
|
139
|
+
- `NNN` is sequential per date: the next-available 3-digit integer.
|
|
140
140
|
- `status: open` is the only state `$rite-resolve` can mutate; `answered` and `dropped`
|
|
141
141
|
are terminal.
|
|
142
|
-
- The file is the audit trail. Don't edit answered/dropped entries
|
|
142
|
+
- The file is the audit trail. Don't edit answered/dropped entries: open a new qid that
|
|
143
143
|
references the old one (`supersedes: q-...-OLD`) and resolve it.
|
|
144
144
|
|
|
145
145
|
## `state.md` `Awaiting human` block
|
|
@@ -161,7 +161,7 @@ When a HITL gate fires, `$rite-build` writes:
|
|
|
161
161
|
|
|
162
162
|
`$rite-resolve` removes the block on success and flips `Status: running`.
|
|
163
163
|
|
|
164
|
-
## The resume verb
|
|
164
|
+
## The resume verb: `$rite-resolve`
|
|
165
165
|
|
|
166
166
|
Three shapes:
|
|
167
167
|
|
|
@@ -171,14 +171,14 @@ $rite-resolve --drop <qid> ["<reason>"]
|
|
|
171
171
|
$rite-resolve --batch <path-to-yaml>
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
`$rite-resolve` is the canonical writer for **async** resume
|
|
174
|
+
`$rite-resolve` is the canonical writer for **async** resume: a gate that already paused and
|
|
175
175
|
stopped the session (an AFK blocking/escalating/irreversible queue, or a HITL pause the human
|
|
176
176
|
walked away from), plus `--batch`. In an **interactive HITL** session the skill resolves the
|
|
177
177
|
`AskUserQuestion` pick **in place** (the same `questions.md` `answered` write + `state.md`
|
|
178
178
|
clear), so you don't type `$rite-resolve` for gaps you answer live. Both paths flip
|
|
179
|
-
`status: open → answered` and clear `Awaiting human` through the **same `devrites-engine resolve` writer
|
|
179
|
+
`status: open → answered` and clear `Awaiting human` through the **same `devrites-engine resolve` writer**:
|
|
180
180
|
one source of truth, two entry points (live pick vs typed verb). Manual edits work but the
|
|
181
|
-
script is the contract
|
|
181
|
+
script is the contract: use it.
|
|
182
182
|
|
|
183
183
|
When `$rite-resolve` does resume a stopped session, the skill does **not** auto-run the next
|
|
184
184
|
`$rite-build`. The user types the next command explicitly so:
|
|
@@ -198,35 +198,35 @@ When `$rite-resolve` does resume a stopped session, the skill does **not** auto-
|
|
|
198
198
|
log to `questions.md` as `gate: blocking`, set `state.md` `Status: awaiting_human`,
|
|
199
199
|
fire `notify:`, STOP.
|
|
200
200
|
|
|
201
|
-
The loop limits of the calling skill still apply
|
|
201
|
+
The loop limits of the calling skill still apply: after the limit, the unresolved
|
|
202
202
|
doubt becomes a blocking question regardless of AFK config.
|
|
203
203
|
|
|
204
204
|
## Retry cap, stuck loops, and self-resolve
|
|
205
205
|
|
|
206
206
|
- **Cap retries.** At most **3 attempts** on the same failing check (test, lint, type, build).
|
|
207
|
-
On the third failure, stop guessing and convert it to a `gate: blocking` question
|
|
207
|
+
On the third failure, stop guessing and convert it to a `gate: blocking` question: a fourth
|
|
208
208
|
identical attempt is thrash, not progress.
|
|
209
|
-
- **Stuck loops pause even in AFK.** A detected loop
|
|
210
|
-
action↔error ping-pong
|
|
209
|
+
- **Stuck loops pause even in AFK.** A detected loop (the same action repeating, or an
|
|
210
|
+
action↔error ping-pong) pauses regardless of `allow_gates` (`devrites-engine stuck`), the same standing as
|
|
211
211
|
the irreversible-risk list. AFK widens what's automatic, never what's looping.
|
|
212
212
|
- **Bias to self-resolve.** Before raising a question, try to answer it from the code, the docs,
|
|
213
213
|
or `decisions.md`. Communicate only for a blocked environment, a deliverable to hand over,
|
|
214
214
|
critical info you genuinely can't access, or a credential / permission you lack. This narrows
|
|
215
215
|
needless pauses and never weakens the blocking / escalating / irreversible gates.
|
|
216
216
|
- **Human time is for human-only work.** A `human_intervention` pause is for what the agent
|
|
217
|
-
literally cannot do (create a cloud account, click a console button)
|
|
217
|
+
literally cannot do (create a cloud account, click a console button): never for writing code,
|
|
218
218
|
writing tests, or reviewing. Punting the agent's own job to the human is not a valid gate.
|
|
219
219
|
|
|
220
220
|
## What the rule does NOT cover
|
|
221
221
|
|
|
222
222
|
This contract is about **human pauses**. It does not weaken or replace:
|
|
223
223
|
|
|
224
|
-
- `$rite-prove`, `$rite-review`, `$rite-seal
|
|
225
|
-
- Spec Drift Guard
|
|
224
|
+
- `$rite-prove`, `$rite-review`, `$rite-seal`: feature-scoped gates that always run.
|
|
225
|
+
- Spec Drift Guard: answer that changes acceptance criteria routes through
|
|
226
226
|
`$rite-plan repair`, not silently into the slice.
|
|
227
|
-
- `evidence.md` writes
|
|
227
|
+
- `evidence.md` writes: every AFK iteration still records evidence; un-recorded passes
|
|
228
228
|
are unproven at `$rite-prove`.
|
|
229
|
-
- `/clear` / `/compact` advice
|
|
229
|
+
- `/clear` / `/compact` advice: context-hygiene rules are unchanged.
|
|
230
230
|
|
|
231
231
|
AFK shifts the boundary between automatic and "ask"; nothing else.
|
|
232
232
|
|
|
@@ -234,7 +234,7 @@ AFK shifts the boundary between automatic and "ask"; nothing else.
|
|
|
234
234
|
|
|
235
235
|
- Skill: `$rite-resolve` (`.agents/skills/rite-resolve/SKILL.md`).
|
|
236
236
|
- Workflow integration: `$rite-build` (`.agents/skills/rite-build/SKILL.md`),
|
|
237
|
-
workflow steps 0 + 2a (readiness / HITL pre-flight) and steps 4
|
|
237
|
+
workflow steps 0 + 2a (readiness / HITL pre-flight) and steps 4-6 (doubt / fail-on-red /
|
|
238
238
|
record) on the wright's return.
|
|
239
239
|
- Render contract: `.agents/skills/rite-build/reference/checkpoint-protocol.md`.
|
|
240
240
|
- Loop discipline: `.agents/skills/rite-build/reference/afk-discipline.md`.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
DevRites uses **project-local** agents under `.codex/agents/` (never a global location).
|
|
4
4
|
It separates three roles: **specialist skills** (model-invoked disciplines that run inline),
|
|
5
5
|
**review subagents** (fresh-context, **read-only** reviewers spawned for independent judgment),
|
|
6
|
-
and the **executor subagent** (`devrites-slice-wright
|
|
6
|
+
and the **executor subagent** (`devrites-slice-wright`: fresh-context but **write-capable**,
|
|
7
7
|
the one agent that produces code).
|
|
8
8
|
|
|
9
9
|
## Model tier policy
|
|
@@ -13,76 +13,76 @@ standard/inherited, with the strongest available model for high-risk architectur
|
|
|
13
13
|
or public API slices; cheap tiers are only for mechanical read-only scouts. Seal/spec/security
|
|
14
14
|
reviewers stay strongest/inherited. If the harness cannot select models, record "host default".
|
|
15
15
|
|
|
16
|
-
## Review subagents
|
|
16
|
+
## Review subagents: `.codex/agents/`
|
|
17
17
|
Fresh-context, read-only reviewers. Each is given the active feature workspace path
|
|
18
|
-
(`.devrites/work/<slug>/`) + the diff, and returns findings
|
|
18
|
+
(`.devrites/work/<slug>/`) + the diff, and returns findings. They do **not** edit code.
|
|
19
19
|
|
|
20
20
|
**Which reviewer fires when is defined once** in
|
|
21
|
-
[`parallel-dispatch.md`](../../../devrites-lib/reference/parallel-dispatch.md)
|
|
21
|
+
[`parallel-dispatch.md`](../../../devrites-lib/reference/parallel-dispatch.md): the seal/review
|
|
22
22
|
fan-out **roster** and its checkable triggers, plus the accounting gate that proves no reviewer is
|
|
23
23
|
silently skipped. The table below is the full catalog (it also covers the phase-locked agents the
|
|
24
|
-
roster excludes); its **When** column is a summary
|
|
24
|
+
roster excludes); its **When** column is a summary, on any discrepancy, the roster wins.
|
|
25
25
|
|
|
26
26
|
| Agent | Purpose | When |
|
|
27
27
|
|-------|---------|------|
|
|
28
28
|
| `devrites-spec-reviewer` | Does the diff implement the spec? Missing / partial / wrong criteria; scope creep | `$rite-review` (Spec axis); `$rite-seal` |
|
|
29
29
|
| `devrites-code-reviewer` | Correctness / readability / architecture / maintainability | `$rite-seal`; after a slice |
|
|
30
|
-
| `devrites-test-analyst` | Do the tests
|
|
30
|
+
| `devrites-test-analyst` | Do the tests prove the acceptance criteria? | `$rite-seal` |
|
|
31
31
|
| `devrites-frontend-reviewer` | UX flow, a11y, responsive, design-system, anti-AI-slop | `$rite-seal` on UI features |
|
|
32
32
|
| `devrites-security-auditor` | Untrusted input, trust boundaries, secrets, deps | `$rite-seal` when input/auth/data in scope |
|
|
33
33
|
| `devrites-performance-reviewer` | Measure-first perf (N+1, hot paths, payload size) | `$rite-seal` when perf relevant |
|
|
34
34
|
| `devrites-devex-reviewer` | Developer-experience scorecard + the predict-vs-measure boomerang (TTHW, getting-started, error-message quality, ergonomics, docs) | `$rite-vet` (predict) + `$rite-seal` when a developer-facing surface (API / CLI / SDK / webhook / config / errors / getting-started) is in scope |
|
|
35
|
-
| `devrites-simplifier-reviewer` | Behavior-preserving simplification (Chesterton's Fence, deletion test)
|
|
35
|
+
| `devrites-simplifier-reviewer` | Behavior-preserving simplification (Chesterton's Fence, deletion test). Suggestion-only by design | `$rite-polish` Phase 1; `devrites-audit simplify` |
|
|
36
36
|
| `devrites-doubt-reviewer` | Adversarial check of a single claim/decision | `devrites-doubt` loop; risky decisions |
|
|
37
|
-
| `devrites-strategy-reviewer` | Spec-vs-rubric strategic review (ambition / scope / premise / pre-mortem / YAGNI / testability / irreversibility / cross-cutting / convention)
|
|
38
|
-
| `devrites-plan-reviewer` | Plan-vs-rubric engineering review (architecture / scope-reuse / plan code-quality / test-coverage design / performance / reversibility / failure-mode coverage), confidence-banded with a quote-the-source verification gate
|
|
39
|
-
| `devrites-forge-judge` | Comparative judge of K=2
|
|
37
|
+
| `devrites-strategy-reviewer` | Spec-vs-rubric strategic review (ambition / scope / premise / pre-mortem / YAGNI / testability / irreversibility / cross-cutting / convention): **before** any plan or code | `$rite-temper` loop (pre-plan) |
|
|
38
|
+
| `devrites-plan-reviewer` | Plan-vs-rubric engineering review (architecture / scope-reuse / plan code-quality / test-coverage design / performance / reversibility / failure-mode coverage), confidence-banded with a quote-the-source verification gate (**after define, before build**) | `$rite-vet` loop (pre-build) |
|
|
39
|
+
| `devrites-forge-judge` | Comparative judge of K=2-3 competing candidate implementations of one slice (acceptance / test strength / principle fit / simplicity / reuse / anti-slop); picks the single winner to land and names grafts | `$rite-build` forge step, on a `Forge: yes` slice |
|
|
40
40
|
|
|
41
|
-
## The executor subagent
|
|
41
|
+
## The executor subagent: `.codex/agents/devrites-slice-wright.toml`
|
|
42
42
|
|
|
43
43
|
The system's one **write-capable** agent, and the mirror of the reviewers: where a reviewer
|
|
44
44
|
reads a finished diff in a fresh context, the wright **writes** one slice in a fresh context.
|
|
45
45
|
|
|
46
46
|
| Agent | Purpose | When |
|
|
47
47
|
|-------|---------|------|
|
|
48
|
-
| `devrites-slice-wright` | Turn ONE fully
|
|
48
|
+
| `devrites-slice-wright` | Turn ONE fully specified slice contract into the smallest complete, idiomatic, proven implementation (orient → TDD → verify, anti-AI-slop, feature scope only) | `$rite-build`, the build-core dispatch step |
|
|
49
49
|
|
|
50
50
|
`$rite-build` is the orchestrator: it owns the gates and the workspace, dispatches the wright
|
|
51
51
|
for the implementation, then doubts, gates, and records the return. Tools:
|
|
52
52
|
`Read, Edit, Write, Bash, Glob, Grep` (+ a code-intelligence index when present). It writes
|
|
53
|
-
**code and tests only
|
|
53
|
+
**code and tests only**: never the `.devrites/` bookkeeping files; it returns that data and
|
|
54
54
|
the orchestrator persists it, so there is exactly one canonical writer of workspace state and
|
|
55
55
|
the HITL/AFK contract stays intact. **Single-threaded: one wright per slice, never a parallel
|
|
56
56
|
fan-out of writers *sharing a tree*** (concurrent writers on one tree make conflicting implicit
|
|
57
57
|
decisions). The one sanctioned exception is a **forge** slice (`Forge: yes`, flagged by
|
|
58
|
-
`$rite-vet`): K=2
|
|
59
|
-
worktrees, `devrites-forge-judge` scores them, and exactly **one** winner's diff lands
|
|
58
|
+
`$rite-vet`): K=2-3 candidate wrights build the slice on distinct strategies in **isolated**
|
|
59
|
+
worktrees, `devrites-forge-judge` scores them, and exactly **one** winner's diff lands: no tree
|
|
60
60
|
ever has two authors, so the invariant holds. Contract + return shape + fallback + forge:
|
|
61
61
|
`.agents/skills/rite-build/reference/wright-dispatch.md`, `.../reference/forge.md`.
|
|
62
62
|
|
|
63
|
-
## The cross-feature analyst
|
|
63
|
+
## The cross-feature analyst: `.codex/agents/devrites-retrospector.toml`
|
|
64
64
|
|
|
65
65
|
A read-only agent like the reviewers, but its scope is the **archive, not a diff**: it reads the
|
|
66
|
-
shipped `.devrites/archive/<slug>/` workspaces and reports the patterns one feature can't show
|
|
66
|
+
shipped `.devrites/archive/<slug>/` workspaces and reports the patterns one feature can't show:
|
|
67
67
|
a finding class reviewers keep raising, recurring drift, dead-ends, the GO/NO-GO and rework trend.
|
|
68
68
|
|
|
69
69
|
| Agent | Purpose | When |
|
|
70
70
|
|-------|---------|------|
|
|
71
|
-
| `devrites-retrospector` | Cross-feature retrospective synthesis
|
|
71
|
+
| `devrites-retrospector` | Cross-feature retrospective synthesis: mine recurring patterns + trends across shipped features, **draft** graduation candidates (rule / principle / convention / dismiss) | `$rite-ship` close, cadence-gated by `devrites-engine learnings nudge` (fires only with enough cross-feature signal) |
|
|
72
72
|
|
|
73
|
-
It **proposes, never imposes**: it writes nothing itself
|
|
73
|
+
It **proposes, never imposes**: it writes nothing itself: the caller (`$rite-ship`) persists the
|
|
74
74
|
digest to `.devrites/retro.md` and routes any promotion through `$rite-learn`, where the human
|
|
75
75
|
confirms. This makes the cross-feature learning that otherwise waits for someone to run `$rite-learn`
|
|
76
76
|
fire automatically at close, while keeping rule/principle promotion a deliberate human amendment
|
|
77
77
|
(`principles.md` governance). The capture half is already automatic (`$rite-seal` step 9a); this is
|
|
78
78
|
the synthesis half.
|
|
79
79
|
|
|
80
|
-
## Namespaces
|
|
80
|
+
## Namespaces: `rite-*` is the user surface; `devrites-*` is internal
|
|
81
81
|
|
|
82
82
|
The prefix mirrors visibility:
|
|
83
83
|
|
|
84
84
|
- **`rite-*`** = user-invocable (`user-invocable: true`). The public slash-command
|
|
85
|
-
surface
|
|
85
|
+
surface: lifecycle phases plus utilities. `rite`, `rite-spec`, `rite-temper`,
|
|
86
86
|
`rite-define`, `rite-vet`,
|
|
87
87
|
`rite-plan`, `rite-build`, `rite-prove`, `rite-polish`, `rite-review`, `rite-seal`,
|
|
88
88
|
`rite-ship`, `rite-autocomplete`, `rite-status`, `rite-resolve`, `rite-prototype`,
|
|
@@ -94,16 +94,16 @@ The prefix mirrors visibility:
|
|
|
94
94
|
Internal specialists that fire on trigger from the `rite-*` skills or auto-select.
|
|
95
95
|
`devrites-interview`, `devrites-source-driven`, `devrites-doubt`,
|
|
96
96
|
`devrites-ux-shape` (plans UX/UI into `design-brief.md` at `$rite-spec` when UI is
|
|
97
|
-
detected
|
|
97
|
+
detected: the build target), `devrites-frontend-craft`, `devrites-prose-craft`
|
|
98
98
|
(human-voice prose for artifacts + replies; the catch pass in `$rite-polish`),
|
|
99
99
|
`devrites-browser-proof`,
|
|
100
100
|
`devrites-debug-recovery`, `devrites-api-interface`, `devrites-audit` (dispatches the
|
|
101
101
|
security / perf / simplify reviewer subagent on an axis argument).
|
|
102
102
|
The `devrites-` prefix avoids collisions with bundled Claude Code skill
|
|
103
|
-
names (`prototype`, `handoff`, `diagnose`, etc.)
|
|
103
|
+
names (`prototype`, `handoff`, `diagnose`, etc.): peer skill packs may
|
|
104
104
|
collide on the bare names internally even though these never appear in the
|
|
105
105
|
user's slash menu. Parallel reviewer fan-out at `$rite-seal` is no longer
|
|
106
|
-
a skill
|
|
106
|
+
a skill. It lives as a shared reference file
|
|
107
107
|
(`.agents/skills/devrites-lib/reference/parallel-dispatch.md`), pointed at by both
|
|
108
108
|
`$rite-review` and `$rite-seal`.
|
|
109
109
|
|
|
@@ -113,14 +113,14 @@ The `$rite` menu carries user-facing routing. `user-invocable:` in each
|
|
|
113
113
|
## When to bring in a reviewer (no prompt needed)
|
|
114
114
|
The seal/review fan-out is **roster-driven**: sealing a feature dispatches every roster reviewer
|
|
115
115
|
whose trigger the diff meets (frontend on UI, security on input/auth/data, performance on a perf
|
|
116
|
-
budget or hot-path, devex on a developer-facing surface) and accounts for the rest
|
|
116
|
+
budget or hot-path, devex on a developer-facing surface) and accounts for the rest: the triggers
|
|
117
117
|
and the no-silent-skip gate are the single source in
|
|
118
118
|
[`parallel-dispatch.md`](../../../devrites-lib/reference/parallel-dispatch.md). Three reviewers
|
|
119
119
|
fire **outside** that fan-out:
|
|
120
120
|
1. Standing a non-trivial decision (boundary, data model, auth, public API, migration) →
|
|
121
121
|
`devrites-doubt` → `devrites-doubt-reviewer`.
|
|
122
122
|
2. A developer-facing surface also gets `devrites-devex-reviewer` **at `$rite-vet` to predict** the
|
|
123
|
-
DX scorecard
|
|
123
|
+
DX scorecard: the seal side then measures and reconciles the boomerang (`developer-experience.md`).
|
|
124
124
|
3. Closing a feature at `$rite-ship`, cadence-gated → `devrites-retrospector` (below). Not a per-diff
|
|
125
125
|
reviewer: it fires only when there's enough cross-feature signal to mine.
|
|
126
126
|
|
|
@@ -128,18 +128,18 @@ fire **outside** that fan-out:
|
|
|
128
128
|
|
|
129
129
|
A spawned agent runs in a **fresh context** and does **not** auto-discover skills the way the main
|
|
130
130
|
thread does. Naming a skill in an agent's body ("apply `devrites-frontend-craft`") is a prompt
|
|
131
|
-
reference, not a load
|
|
131
|
+
reference, not a load: the agent must **invoke** the skill, and how it can differs by
|
|
132
132
|
harness:
|
|
133
133
|
|
|
134
134
|
- **Claude Code** gates skills behind the agent's `tools:` allowlist. An agent that lists `tools:`
|
|
135
135
|
without `Skill` **cannot invoke any skill**. Two ways to grant access: add **`Skill`** to `tools:`
|
|
136
|
-
(on-demand invocation
|
|
137
|
-
**`skills:`** frontmatter field (preloads the full skill content at startup
|
|
136
|
+
(on-demand invocation (right for the stack-agnostic wright, so a backend slice pays no cost), or a
|
|
137
|
+
**`skills:`** frontmatter field (preloads the full skill content at startup) right for a focused
|
|
138
138
|
reviewer that *always* needs it, e.g. `devrites-frontend-reviewer` preloads `devrites-frontend-craft`).
|
|
139
139
|
- **Codex** does not gate skills per-agent: skills are auto-discovered from `.agents/skills/` and
|
|
140
140
|
subagents inherit that access. So the same agent body that names the skill lets a Codex agent invoke
|
|
141
141
|
it (`$devrites-frontend-craft`, or implicitly). The Claude-only `skills:`/`Skill` metadata is dropped
|
|
142
|
-
in translation
|
|
142
|
+
in translation: do **not** map it to Codex `skills.config`, which *disables* skills, not preloads them.
|
|
143
143
|
|
|
144
144
|
The durable, cross-harness lever is the **agent body**: name the skill and instruct the agent to
|
|
145
145
|
*invoke* it (carried to Codex via the installer's `developer_instructions`). The `SubagentStart` hook
|
|
@@ -147,7 +147,7 @@ The durable, cross-harness lever is the **agent body**: name the skill and instr
|
|
|
147
147
|
into every DevRites subagent, since a fresh subagent doesn't run the rite-\* skills that load the rules.
|
|
148
148
|
|
|
149
149
|
**Reaching every agent, not just one skill.** A fresh subagent doesn't load the `.agents/skills/devrites-lib/reference/standards/`
|
|
150
|
-
framework either
|
|
150
|
+
framework either, so a reviewer whose whole job is a rule (`security.md`, `performance.md`,
|
|
151
151
|
`testing.md`, `code-review.md`, …) must **Read that rule file at the start of its review**, the
|
|
152
152
|
rule-analog of invoking a skill. Without it the reviewer judges from a remembered summary and misses
|
|
153
153
|
every sharpening the rule has grown. So the discipline is uniform across the fan-out:
|
|
@@ -168,10 +168,10 @@ The rule paths are written as `.agents/skills/devrites-lib/reference/standards/<
|
|
|
168
168
|
- Run independent reviewers **in parallel** at the seal, then reconcile; surface
|
|
169
169
|
disagreements explicitly rather than averaging them away.
|
|
170
170
|
- Reviewer read-only is **wired at the tool layer**: each reviewer carries a shared
|
|
171
|
-
deny-mutating-Bash hook (`devrites-engine hook reviewer-readonly`)
|
|
171
|
+
deny-mutating-Bash hook (`devrites-engine hook reviewer-readonly`) through subagent frontmatter on Claude
|
|
172
172
|
Code (project-local install), and globally with agent-type gating in `.codex/hooks.json` on
|
|
173
173
|
Codex. It runs **observe-by-default** (logs a would-block) and **denies** under
|
|
174
|
-
`DEVRITES_REVIEWER_RO=enforce`. A fresh-context reviewer reads untrusted source
|
|
174
|
+
`DEVRITES_REVIEWER_RO=enforce`. A fresh-context reviewer reads untrusted source: a silent write
|
|
175
175
|
path would be a prompt-injection surface, so enable enforce once the log shows no false positives.
|
|
176
176
|
- **Reviewer** agents are **read-only** and return labeled findings (Critical / Important /
|
|
177
177
|
Suggestion / Nit / FYI). Keep review **feature-scoped**.
|
|
@@ -180,13 +180,13 @@ The rule paths are written as `.agents/skills/devrites-lib/reference/standards/<
|
|
|
180
180
|
`.devrites/` workspace files (the orchestrator does) and never runs in parallel with another
|
|
181
181
|
writer.
|
|
182
182
|
- Give each agent the contract (workspace + diff for a reviewer; the slice contract for the
|
|
183
|
-
wright) without the author's reasoning
|
|
184
|
-
- **Orchestration depth ≤ 1
|
|
183
|
+
wright) without the author's reasoning: fresh, undirected context is the point.
|
|
184
|
+
- **Orchestration depth ≤ 1: agents don't invoke agents.** The `rite-*` skill (driven by the
|
|
185
185
|
user) is the orchestrator; it dispatches reviewers and the wright, collects their findings, and
|
|
186
|
-
reconciles. A reviewer never spawns another reviewer, and the wright never spawns a sub-writer
|
|
186
|
+
reconciles. A reviewer never spawns another reviewer, and the wright never spawns a sub-writer:
|
|
187
187
|
the fan-out is one level, always from the orchestrator. Four shapes this rules out: a
|
|
188
188
|
"meta-orchestrator" agent whose only job is routing (that's the skill's job), an agent that calls
|
|
189
|
-
a second agent, a sequential chain where each agent paraphrases the last one's hand-off (lossy
|
|
189
|
+
a second agent, a sequential chain where each agent paraphrases the last one's hand-off (lossy:
|
|
190
190
|
the orchestrator passes the real artifact, not a summary), and deep agent trees. Parallel fan-out
|
|
191
191
|
is many dispatches in **one** orchestrator turn, not nested ones; on Claude Code the platform
|
|
192
192
|
also enforces this (a subagent can't spawn subagents), so the invariant and the runtime agree.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# DevRites
|
|
1
|
+
# DevRites: universal anti-patterns
|
|
2
2
|
|
|
3
3
|
The pack-wide rationalizations the agent reaches for when discipline gets in
|
|
4
4
|
the way. Apply at every phase. Each `rite-*/reference/anti-patterns.md`
|
|
@@ -12,17 +12,17 @@ This file is the **single source** of the universal anti-rationalization table.
|
|
|
12
12
|
| Excuse | Rebuttal |
|
|
13
13
|
|---|---|
|
|
14
14
|
| "I'll add the tests later." | Tests written after the fact don't drive design and miss the boundary cases the act of writing exposes. Test now or the tests you eventually write are worse. |
|
|
15
|
-
| "Lint and build pass
|
|
16
|
-
| "It's only a small refactor while I'm in here." | Feature scope only
|
|
15
|
+
| "Lint and build pass, that proves quality." | Automation proves syntax and style, not design or correctness. Never cite clean automation as evidence of good design. |
|
|
16
|
+
| "It's only a small refactor while I'm in here." | Feature scope only: drive-by cleanup balloons the diff, hides intent, and gets rejected at seal. Record as an FYI follow-up. |
|
|
17
17
|
| "This is a special case, the pattern doesn't apply." | Special cases multiply silently. Either they really are special (record *why* in `decisions.md`) or they're not (and the pattern wins). |
|
|
18
18
|
| "The user will tell me if something is wrong." | Drift detection is the workflow's job, not the user's QA. Surface assumptions; route material questions through the Spec Drift Guard. |
|
|
19
|
-
| "Generic name (`processData`, `handleItem`) is fine
|
|
20
|
-
| "Better safe than sorry
|
|
19
|
+
| "Generic name (`processData`, `handleItem`) is fine: the code is self-evident." | Generic AI naming is slop. Match the project's idiom; one concept gets one word across the codebase. |
|
|
20
|
+
| "Better safe than sorry: add the defensive null/length check." | Over-defensive guarding is slop. Validate at boundaries; trust the core. A check inside trusted code hides bugs in the boundary. |
|
|
21
21
|
| "It's faster to skip the small step." | Process shortcuts pay back later as drift, missed criteria, or unrecorded decisions. The step is the point. |
|
|
22
22
|
| "I observed it pass; recording is bureaucracy." | Un-recorded pass = unproven. The next phase reads `evidence.md`, not your memory. |
|
|
23
23
|
| "User clearly wants this, so I'll bypass the gate." | Gates exist for the failure modes asks miss. Honor the gate; the gate exists *because* of the ask. |
|
|
24
|
-
| "The test is failing
|
|
25
|
-
| "This project principle doesn't really apply to my case." | A declared invariant (`.devrites/principles.md`) is not advisory. Either it genuinely needs relaxing
|
|
24
|
+
| "The test is failing. I'll just skip it / loosen the assertion to get green." | Faking green is reward-hacking, not progress. Never delete / skip / `xfail` / `.only` / loosen a failing test: a red test means fix the code or agree the change. A weakened test is a Critical finding (`devrites-engine test-integrity`). |
|
|
25
|
+
| "This project principle doesn't really apply to my case." | A declared invariant (`.devrites/principles.md`) is not advisory. Either it genuinely needs relaxing (record a scoped, dated exception a human approves) or it applies and the change is wrong. Silently routing around a principle is the defect the gate exists to catch (`principles.md`). |
|
|
26
26
|
|
|
27
27
|
## Pack-wide red flags
|
|
28
28
|
|
|
@@ -37,7 +37,7 @@ These show up at any phase and are equally damning regardless:
|
|
|
37
37
|
- A `// TODO` left in shipped code.
|
|
38
38
|
- Adding a dependency or a second design system without rationale in `decisions.md`.
|
|
39
39
|
- A change that violates a declared project principle (`.devrites/principles.md`) with no recorded, human-approved exception.
|
|
40
|
-
- "I'll fix it in a follow-up PR" with no follow-up
|
|
40
|
+
- "I'll fix it in a follow-up PR" with no follow-up opened.
|
|
41
41
|
|
|
42
42
|
## Where this gets loaded
|
|
43
43
|
|
|
@@ -51,7 +51,7 @@ is broader than the phase.
|
|
|
51
51
|
## These rows are graded, not just asserted
|
|
52
52
|
|
|
53
53
|
A row here is a prediction: *the agent will reach for this excuse, so resist it.* For a
|
|
54
|
-
gating rite, that prediction is turned into a graded scenario
|
|
54
|
+
gating rite, that prediction is turned into a graded scenario: a behavioral eval under
|
|
55
55
|
`evals/behavioral/<skill>.json` pairs the excuse with a pressure prompt and checks the
|
|
56
56
|
skill holds the line instead of rationalizing past it. When you add or sharpen a row for a
|
|
57
57
|
gating skill, add or update the matching behavioral eval so the discipline is tested, not
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CI/CD & automation
|
|
2
2
|
|
|
3
|
-
CI is the enforcement mechanism for every other rule
|
|
3
|
+
CI is the enforcement mechanism for every other rule: the place a discipline that's optional on
|
|
4
4
|
one engineer's machine becomes mandatory for the trunk. This file is the pipeline-and-release
|
|
5
5
|
layer; it doesn't restate what its neighbours own: local hook staging by cost is
|
|
6
6
|
[`hooks.md`](hooks.md), trunk-always-green + definition-of-done is
|
|
@@ -9,17 +9,17 @@ layer; it doesn't restate what its neighbours own: local hook staging by cost is
|
|
|
9
9
|
|
|
10
10
|
## Two forces that set the shape
|
|
11
11
|
|
|
12
|
-
- **Shift left.** A defect gets cheaper the earlier it's caught
|
|
12
|
+
- **Shift left.** A defect gets cheaper the earlier it's caught: a lint error costs seconds, the
|
|
13
13
|
same bug in production costs an incident. Push each check to the earliest stage that can catch it
|
|
14
14
|
(editor → pre-commit → pre-push → CI), so CI confirms rather than discovers.
|
|
15
|
-
- **Faster is safer.** Small, frequent deploys are *lower* risk, not higher
|
|
15
|
+
- **Faster is safer.** Small, frequent deploys are *lower* risk, not higher: a release with three
|
|
16
16
|
changes is debuggable; one with thirty is an investigation. Batch size is a safety lever, so
|
|
17
17
|
optimize for a pipeline fast enough that shipping often is painless.
|
|
18
18
|
|
|
19
|
-
## The gate pipeline
|
|
20
|
-
CI runs an ordered set of gates
|
|
19
|
+
## The gate pipeline: no gate is skippable
|
|
20
|
+
CI runs an ordered set of gates: lint → type-check → unit → build → integration → audit → e2e:
|
|
21
21
|
and a red gate stops the line. The discipline is the same as a red test ([`testing.md`](testing.md)):
|
|
22
|
-
**if lint fails, fix the code
|
|
22
|
+
**if lint fails, fix the code (don't disable the rule; if a test fails, fix the code) don't skip
|
|
23
23
|
the test.** A gate silenced to get green is a defect shipped with a clean check on top of it. CI,
|
|
24
24
|
not a local run, is the source of truth for "green".
|
|
25
25
|
|
|
@@ -30,15 +30,15 @@ root, verify locally, push again. Map the failure to its fix: lint → the repor
|
|
|
30
30
|
(reproduce before fixing); build → config/dependency drift. A blind re-run of a flaky pipeline is the
|
|
31
31
|
CI version of papering over a failing test.
|
|
32
32
|
|
|
33
|
-
## Build Cop
|
|
33
|
+
## Build Cop: one owner keeps the trunk green
|
|
34
34
|
When the pipeline breaks, the job of getting it green belongs to a designated **Build Cop**, not
|
|
35
|
-
diffused across everyone until no one acts
|
|
35
|
+
diffused across everyone until no one acts, and the fix is **fix or revert**, whichever is faster,
|
|
36
36
|
by whoever holds the role, not necessarily the author of the breaking change. A broken trunk blocks
|
|
37
37
|
everyone, so restoring it outranks feature work until it's green.
|
|
38
38
|
|
|
39
39
|
## Feature flags decouple deploy from release
|
|
40
40
|
Deploying code and releasing behaviour are separate events. Ship incomplete or risky work **disabled**
|
|
41
|
-
behind a flag so the trunk keeps moving; turn it on to release, off to roll back
|
|
41
|
+
behind a flag so the trunk keeps moving; turn it on to release, off to roll back: no redeploy on the
|
|
42
42
|
critical path. Every flag is born with an **owner and a removal trigger**; a flag that outlives its
|
|
43
43
|
rollout becomes dead branches and combinatorial test cost (staged-rollout mechanics:
|
|
44
44
|
[`git-workflow.md`](git-workflow.md), [`deprecation.md`](deprecation.md) expand→contract).
|
|
@@ -46,17 +46,17 @@ rollout becomes dead branches and combinatorial test cost (staged-rollout mechan
|
|
|
46
46
|
## Secrets never live where they don't have to
|
|
47
47
|
Tier secret exposure by environment: `.env.example` committed (no values); real `.env` never
|
|
48
48
|
committed; CI secrets injected from the platform's secret store, scoped to the job. **CI must not
|
|
49
|
-
hold production secrets
|
|
49
|
+
hold production secrets**: a build runner is a broad attack surface, and least privilege
|
|
50
50
|
([`security.md`](security.md)) says a compromised pipeline shouldn't reach prod credentials.
|
|
51
51
|
|
|
52
52
|
## When the pipeline is too slow (>~10 min), climb the ladder
|
|
53
53
|
Slowness makes engineers skip or batch, which defeats "faster is safer". Fix it in impact order,
|
|
54
54
|
cheapest first: cache dependencies → parallelize independent jobs → path-filter to only what changed
|
|
55
55
|
→ shard/matrix the slow suite → prune or re-tier genuinely slow tests → larger runners last. Measure
|
|
56
|
-
before and after ([`performance.md`](performance.md) measure-first)
|
|
56
|
+
before and after ([`performance.md`](performance.md) measure-first): a "faster" pipeline that didn't
|
|
57
57
|
move the wall-clock number is just more config.
|
|
58
58
|
|
|
59
59
|
## Scope
|
|
60
60
|
Most projects own their own CI; DevRites installs *into* them. Treat this as guidance for the
|
|
61
61
|
pipeline the change touches, not licence to re-architect a project's whole CI in an unrelated
|
|
62
|
-
change
|
|
62
|
+
change: the same feature-scope discipline as the rest of the rules.
|