devrites 3.0.7 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +82 -50
- package/SECURITY.md +31 -29
- package/docs/adr/0001-go-engine-as-control-plane.md +1 -1
- package/docs/adr/0002-dual-host-harness.md +1 -1
- package/docs/adr/0004-state-schema-phases-sections.md +1 -2
- package/docs/adr/0006-clock-seam-and-engine-ci-gates.md +3 -4
- package/docs/adr/0009-prebuild-decision-coverage-and-readiness.md +67 -0
- package/docs/adr/0010-agent-first-fresh-context-orchestration.md +71 -0
- package/docs/adr/0011-define-plan-transition-rights.md +28 -0
- package/docs/adr/0012-semantic-workspace-upgrades.md +77 -0
- package/docs/adr/README.md +4 -0
- package/docs/agents/triage-labels.md +7 -7
- package/docs/architecture.md +179 -141
- package/docs/cli.md +47 -12
- package/docs/command-map.md +61 -38
- package/docs/engine/agent-contract.md +92 -15
- package/docs/engine/commands.md +248 -72
- package/docs/engine/state-schema.md +52 -23
- package/docs/engine/workspace-schema.md +103 -15
- package/docs/extensions.md +1 -1
- package/docs/flow.md +86 -51
- package/docs/harness-compliance.md +29 -5
- package/docs/orchestration.md +107 -79
- package/docs/quick-reference.md +11 -3
- package/docs/release.md +4 -3
- package/docs/skills.md +67 -38
- package/docs/usage.md +84 -39
- package/engine/cmd/releasepack/main.go +219 -0
- package/engine/cmd/releasepack/main_test.go +170 -0
- package/engine/commands.go +170 -23
- package/engine/git_guard.go +187 -0
- package/engine/git_guard_test.go +283 -0
- package/engine/hookpolicy.go +53 -55
- package/engine/hookpolicy_test.go +91 -1
- package/engine/hooks.go +296 -75
- package/engine/hooks_events_test.go +276 -6
- package/engine/hooks_workspace.go +640 -159
- package/engine/internal/devritespaths/paths.go +65 -10
- package/engine/internal/devritespaths/paths_test.go +110 -0
- package/engine/internal/doctor/doctor.go +153 -23
- package/engine/internal/doctor/doctor_test.go +74 -0
- package/engine/internal/forge/forge.go +940 -0
- package/engine/internal/forge/forge_test.go +576 -0
- package/engine/internal/forge/git.go +245 -0
- package/engine/internal/forge/liveness_unix.go +48 -0
- package/engine/internal/forge/liveness_windows.go +67 -0
- package/engine/internal/forge/manifest.go +402 -0
- package/engine/internal/gate/gate.go +90 -71
- package/engine/internal/gate/gate_test.go +71 -2
- package/engine/internal/harness/compliance.go +18 -24
- package/engine/internal/harness/harness.go +37 -44
- package/engine/internal/harness/harness_test.go +21 -5
- package/engine/internal/install/install.go +486 -38
- package/engine/internal/install/install_test.go +383 -10
- package/engine/internal/iohooks/iohooks.go +350 -59
- package/engine/internal/iohooks/iohooks_test.go +421 -1
- package/engine/internal/lib/buildreadiness.go +43 -18
- package/engine/internal/lib/clarifyreturn.go +91 -0
- package/engine/internal/lib/clarifyreturn_test.go +123 -0
- package/engine/internal/lib/context.go +54 -15
- package/engine/internal/lib/cursor_compat_test.go +8 -0
- package/engine/internal/lib/extensions.go +2 -3
- package/engine/internal/lib/gitauthority.go +601 -0
- package/engine/internal/lib/gitauthority_test.go +346 -0
- package/engine/internal/lib/jsonout.go +25 -11
- package/engine/internal/lib/jsonout_test.go +16 -0
- package/engine/internal/lib/lanes.go +14 -8
- package/engine/internal/lib/observability_test.go +358 -0
- package/engine/internal/lib/packageexistence.go +151 -35
- package/engine/internal/lib/packageexistence_test.go +163 -0
- package/engine/internal/lib/progress.go +11 -9
- package/engine/internal/lib/provenance.go +462 -0
- package/engine/internal/lib/provenance_test.go +154 -0
- package/engine/internal/lib/readiness_contract.json +118 -0
- package/engine/internal/lib/readinessartifact.go +533 -0
- package/engine/internal/lib/readinessartifact_test.go +422 -0
- package/engine/internal/lib/reconcile.go +712 -88
- package/engine/internal/lib/reconcile_test.go +335 -16
- package/engine/internal/lib/recoveryattempts.go +298 -0
- package/engine/internal/lib/recoveryattempts_test.go +215 -0
- package/engine/internal/lib/resolve.go +23 -19
- package/engine/internal/lib/runbook_context_test.go +20 -0
- package/engine/internal/lib/session.go +701 -9
- package/engine/internal/lib/session_test.go +80 -13
- package/engine/internal/lib/testintegrity.go +33 -37
- package/engine/internal/lib/testintegrity_test.go +63 -1
- package/engine/internal/migrate/migrate.go +81 -1
- package/engine/internal/migrate/migrate_test.go +22 -1
- package/engine/internal/reason/reason.go +180 -0
- package/engine/internal/reason/reason_test.go +35 -0
- package/engine/internal/rootfacts/facts.go +466 -0
- package/engine/internal/rootfacts/facts_test.go +306 -0
- package/engine/internal/safepath/safepath.go +55 -0
- package/engine/internal/safepath/safepath_test.go +69 -0
- package/engine/internal/safepath/safepath_windows_test.go +26 -0
- package/engine/internal/state/clarify_transition.go +165 -0
- package/engine/internal/state/clarify_transition_test.go +130 -0
- package/engine/internal/state/cmd/workflowmanifest/main.go +12 -8
- package/engine/internal/state/cursor.go +58 -0
- package/engine/internal/state/cursor_test.go +42 -1
- package/engine/internal/state/feature.go +35 -48
- package/engine/internal/state/schema.go +90 -37
- package/engine/internal/state/snapshot.go +18 -2
- package/engine/internal/state/state_test.go +187 -7
- package/engine/internal/state/status.go +48 -11
- package/engine/internal/state/workflow_manifest.json +231 -50
- package/engine/internal/toolpolicy/classifier.go +533 -0
- package/engine/internal/toolpolicy/classifier_test.go +424 -0
- package/engine/internal/toolpolicy/git.go +616 -0
- package/engine/internal/toolpolicy/scanner.go +382 -0
- package/engine/main.go +160 -77
- package/engine/observability_cli_test.go +52 -0
- package/engine/root_routing_test.go +277 -0
- 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=legacycontract.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +1 -0
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
- package/engine/tests/adr_0011_define_plan_test.go +30 -0
- package/engine/tests/budget_test.go +19 -8
- package/engine/tests/concurrency_cli_test.go +7 -1
- package/engine/tests/doctor_cli_test.go +148 -2
- package/engine/tests/forge_cli_test.go +463 -0
- package/engine/tests/gate_test.go +63 -8
- package/engine/tests/hook_test.go +260 -8
- package/engine/tests/hooks_io_test.go +94 -3
- package/engine/tests/json_contract_test.go +127 -2
- package/engine/tests/migrate_cli_test.go +2 -2
- package/engine/tests/parity_buildreadiness_test.go +167 -10
- package/engine/tests/parity_learnings_test.go +16 -17
- package/engine/tests/parity_reconcile_test.go +20 -17
- package/engine/tests/parity_resolve_test.go +12 -11
- package/engine/tests/parity_test.go +21 -17
- package/pack/.claude/agents/devrites-code-reviewer.md +62 -48
- package/pack/.claude/agents/devrites-devex-reviewer.md +69 -53
- package/pack/.claude/agents/devrites-doubt-reviewer.md +29 -22
- package/pack/.claude/agents/devrites-evidence-scout.md +69 -0
- package/pack/.claude/agents/devrites-forge-judge.md +74 -61
- package/pack/.claude/agents/devrites-frontend-reviewer.md +48 -39
- package/pack/.claude/agents/devrites-performance-reviewer.md +49 -40
- package/pack/.claude/agents/devrites-plan-drafter.md +73 -0
- package/pack/.claude/agents/devrites-plan-reviewer.md +80 -47
- package/pack/.claude/agents/devrites-proof-runner.md +74 -0
- package/pack/.claude/agents/devrites-retrospector.md +48 -45
- package/pack/.claude/agents/devrites-security-auditor.md +46 -36
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +50 -46
- package/pack/.claude/agents/devrites-slice-wright.md +153 -165
- package/pack/.claude/agents/devrites-spec-reviewer.md +34 -32
- package/pack/.claude/agents/devrites-strategy-reviewer.md +63 -34
- package/pack/.claude/agents/devrites-test-analyst.md +40 -30
- package/pack/.claude/agents/devrites-upgrade-planner.md +100 -0
- package/pack/.claude/settings.json +2 -1
- package/pack/.claude/skills/devrites-audit/SKILL.md +40 -61
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +24 -13
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/.claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/.claude/skills/devrites-doubt/SKILL.md +25 -17
- package/pack/.claude/skills/devrites-interview/SKILL.md +53 -52
- package/pack/.claude/skills/devrites-lib/SKILL.md +12 -9
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +4 -2
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +200 -190
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/.claude/skills/rite/SKILL.md +10 -6
- package/pack/.claude/skills/rite/reference/menu.md +13 -7
- package/pack/.claude/skills/rite-adopt/SKILL.md +33 -37
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +33 -28
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/.claude/skills/rite-build/SKILL.md +35 -30
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +41 -39
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/.claude/skills/rite-build/reference/forge.md +186 -156
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/.claude/skills/rite-clarify/SKILL.md +90 -0
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/.claude/skills/rite-define/SKILL.md +58 -32
- package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/.claude/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +47 -16
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -0
- package/pack/.claude/skills/rite-polish/SKILL.md +27 -23
- package/pack/.claude/skills/rite-prototype/SKILL.md +25 -26
- package/pack/.claude/skills/rite-prove/SKILL.md +27 -17
- package/pack/.claude/skills/rite-resolve/SKILL.md +12 -11
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/.claude/skills/rite-review/SKILL.md +37 -28
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/.claude/skills/rite-spec/SKILL.md +84 -135
- package/pack/.claude/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/.claude/skills/rite-temper/SKILL.md +62 -47
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/.claude/skills/rite-upgrade/SKILL.md +125 -0
- package/pack/.claude/skills/rite-vet/SKILL.md +114 -113
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +50 -9
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +39 -37
- package/pack/generated/claude/agents/devrites-code-reviewer.md +62 -48
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +69 -53
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +29 -22
- package/pack/generated/claude/agents/devrites-evidence-scout.md +69 -0
- package/pack/generated/claude/agents/devrites-forge-judge.md +74 -61
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +48 -39
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +49 -40
- package/pack/generated/claude/agents/devrites-plan-drafter.md +73 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +80 -47
- package/pack/generated/claude/agents/devrites-proof-runner.md +74 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +48 -45
- package/pack/generated/claude/agents/devrites-security-auditor.md +46 -36
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +50 -46
- package/pack/generated/claude/agents/devrites-slice-wright.md +153 -165
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +34 -32
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +63 -34
- package/pack/generated/claude/agents/devrites-test-analyst.md +40 -30
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +100 -0
- package/pack/generated/claude/settings.json +2 -1
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +40 -61
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +24 -13
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +25 -17
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +53 -52
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +12 -9
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +4 -2
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +200 -190
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/generated/claude/skills/rite/SKILL.md +10 -6
- package/pack/generated/claude/skills/rite/reference/menu.md +13 -7
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +33 -37
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +33 -28
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/generated/claude/skills/rite-build/SKILL.md +35 -30
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +41 -39
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/generated/claude/skills/rite-build/reference/forge.md +186 -156
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +90 -0
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/generated/claude/skills/rite-define/SKILL.md +58 -32
- package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/claude/skills/rite-plan/SKILL.md +47 -16
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +27 -23
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +25 -26
- package/pack/generated/claude/skills/rite-prove/SKILL.md +27 -17
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +12 -11
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +37 -28
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/generated/claude/skills/rite-spec/SKILL.md +84 -135
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/generated/claude/skills/rite-temper/SKILL.md +62 -47
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/generated/claude/skills/rite-upgrade/SKILL.md +125 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +114 -113
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +50 -9
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +39 -37
- package/pack/generated/codex/AGENTS.md +5 -2
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +69 -47
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +75 -51
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +35 -20
- package/pack/generated/codex/agents/devrites-evidence-scout.toml +75 -0
- package/pack/generated/codex/agents/devrites-forge-judge.toml +80 -59
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +54 -37
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +55 -38
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +79 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +82 -47
- package/pack/generated/codex/agents/devrites-proof-runner.toml +80 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +54 -43
- package/pack/generated/codex/agents/devrites-security-auditor.toml +53 -35
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +56 -44
- package/pack/generated/codex/agents/devrites-slice-wright.toml +159 -163
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +40 -30
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +65 -34
- package/pack/generated/codex/agents/devrites-test-analyst.toml +46 -28
- package/pack/generated/codex/agents/devrites-upgrade-planner.toml +106 -0
- package/pack/generated/codex/hooks.json +4 -14
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +47 -64
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +31 -16
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +32 -20
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +60 -55
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +19 -12
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +4 -2
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +200 -190
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +29 -24
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite/SKILL.md +21 -13
- package/pack/generated/codex/skills/rite/reference/menu.md +13 -7
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +40 -40
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +40 -31
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/generated/codex/skills/rite-build/SKILL.md +42 -33
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +41 -39
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/generated/codex/skills/rite-build/reference/forge.md +186 -156
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +10 -4
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +106 -0
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +42 -28
- package/pack/generated/codex/skills/rite-customize/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-define/SKILL.md +65 -35
- package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-explain/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-frame/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-learn/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-plan/SKILL.md +54 -19
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +5 -1
- package/pack/generated/codex/skills/rite-polish/SKILL.md +34 -26
- package/pack/generated/codex/skills/rite-pov/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +32 -29
- package/pack/generated/codex/skills/rite-prove/SKILL.md +34 -20
- package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +19 -14
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +44 -31
- package/pack/generated/codex/skills/rite-seal/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/generated/codex/skills/rite-spec/SKILL.md +91 -138
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/generated/codex/skills/rite-status/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-temper/SKILL.md +69 -50
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/generated/codex/skills/rite-upgrade/SKILL.md +141 -0
- package/pack/generated/codex/skills/rite-upgrade/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +121 -116
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +50 -9
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +40 -38
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +7 -3
- package/package.json +1 -1
- package/scripts/build-release-tarball.sh +32 -15
- package/scripts/check-authority-drift.py +125 -0
- package/scripts/check-instruction-size-baseline.mjs +19 -11
- package/scripts/check-invocation-integrity.py +2 -0
- package/scripts/codex-generate.sh +69 -33
- package/scripts/grade-feature.sh +121 -40
- package/scripts/live-hosts/agent-result.schema.json +230 -0
- package/scripts/live-hosts/claude.sh +87 -0
- package/scripts/live-hosts/codex.sh +81 -0
- package/scripts/live-hosts/common.sh +113 -0
- package/scripts/live-hosts/fake-host.py +264 -0
- package/scripts/live-hosts/host-transport.py +287 -0
- package/scripts/release-check.sh +5 -1
- package/scripts/run-agent-contract-evals.py +1380 -0
- package/scripts/run-behavioral-evals.sh +24 -30
- package/scripts/run-evals.sh +1 -5
- package/scripts/run-live-behavioral-evals.py +1274 -144
- package/scripts/run-outcome-evals.sh +445 -88
- package/scripts/run-tests.mjs +30 -2
- package/scripts/skills-inventory.mjs +1 -1
- package/scripts/validate-workflow-security.py +39 -20
- package/scripts/validate-workspace-schema.py +362 -10
- package/scripts/validate.sh +21 -15
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +0 -1
- /package/engine/testdata/golden/{TestParityReconcile/check-no-claimed.golden → TestParityBuildReadiness/arg=clarifyopen.golden} +0 -0
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
# Investigation
|
|
1
|
+
# Investigation before specification
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
the user so the spec ships fully-covered and correctly-placed. A gap found here is cheap;
|
|
7
|
-
a gap found in `/rite-build` is a drift event.
|
|
3
|
+
Understand the requirement, decide where it belongs, define the outcome, and identify
|
|
4
|
+
every issue and gap. Resolve material gaps with the user before the spec is ready. A
|
|
5
|
+
gap first found during `/rite-build` is a drift event.
|
|
8
6
|
|
|
9
7
|
Use a code-intelligence index if available (see
|
|
10
|
-
`../../devrites-lib/reference/standards/tooling.md`) for
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
`../../devrites-lib/reference/standards/tooling.md`) for structural questions such as
|
|
9
|
+
where code lives, what calls it, and what it could break. With none present, use
|
|
10
|
+
Read/Grep/Glob. When a gap depends on an external fact, such as a standard, UX pattern,
|
|
11
|
+
or comparable product, **search the web if available** (brave MCP preferred;
|
|
12
|
+
`../../devrites-lib/reference/standards/tooling.md`). Cite the finding in the option
|
|
13
|
+
presented to the human.
|
|
16
14
|
|
|
17
|
-
##
|
|
18
|
-
Before
|
|
19
|
-
archive for the feature's key nouns
|
|
20
|
-
|
|
15
|
+
## Check the archive first
|
|
16
|
+
Before external research, check whether the project already shipped related work. Search
|
|
17
|
+
the archive for the feature's key nouns. A hit may indicate an extension, conflict, or
|
|
18
|
+
replacement and provides prior decisions:
|
|
21
19
|
```bash
|
|
22
20
|
devrites-engine archive-search "<key nouns>" 2>/dev/null \
|
|
23
21
|
|| grep -rliE '<noun1>|<noun2>' .devrites/archive/*/spec.md 2>/dev/null
|
|
@@ -29,18 +27,18 @@ devrites-engine archive-search "<key nouns>" 2>/dev/null \
|
|
|
29
27
|
brownfield / principles no-op discipline).
|
|
30
28
|
|
|
31
29
|
## Produce these findings (write into spec.md)
|
|
32
|
-
1. **The
|
|
30
|
+
1. **The request and problem:** restate the goal and the problem behind it (people ask
|
|
33
31
|
for "a dashboard" when they want an answer to a question). Who hits it, how often,
|
|
34
32
|
what they do today instead.
|
|
35
33
|
2. **Current behavior:** how it works today, or what's absent. Read the actual code and
|
|
36
34
|
flows; don't assume.
|
|
37
|
-
3. **Placement
|
|
35
|
+
3. **Placement**
|
|
38
36
|
- Which module / layer / file / component should own this; the right seam.
|
|
39
37
|
- Existing patterns/components/utilities to **extend or reuse** instead of duplicating.
|
|
40
38
|
- **Integration points**: callers and dependents, the data it reads/writes, the
|
|
41
39
|
APIs/events/contracts it touches (interface analysis: how it interacts with the
|
|
42
40
|
rest of the system).
|
|
43
|
-
4. **
|
|
41
|
+
4. **Outcome:** the result and how to observe it (feeds
|
|
44
42
|
success + acceptance criteria).
|
|
45
43
|
5. **Issues:** conflicts with existing code/UX/data/permissions, constraints, and
|
|
46
44
|
anything that makes the obvious approach wrong. Each issue gets a disposition.
|
|
@@ -48,19 +46,22 @@ devrites-engine archive-search "<key nouns>" 2>/dev/null \
|
|
|
48
46
|
becomes a question** (next section).
|
|
49
47
|
7. **Blast radius:** what this change could break (use the code graph's impact/callers).
|
|
50
48
|
Informs risks, test strategy, and rollback.
|
|
49
|
+
8. **Human prerequisites:** credentials, accounts, approval windows, or irreversible
|
|
50
|
+
action-time decisions the acceptance path requires. Separate these from agent-owned
|
|
51
|
+
implementation and diagnostic work.
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
links, video
|
|
54
|
-
|
|
53
|
+
Gather any design or reference materials the human supplies, including screenshots,
|
|
54
|
+
Figma, links, or video. See [references-intake](references-intake.md). Record whether
|
|
55
|
+
each is a target, constraint, or inspiration for later phases.
|
|
55
56
|
|
|
56
57
|
## Gap analysis (present → desired)
|
|
57
|
-
State the
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
State the present and desired states. Their delta defines the work; unknowns in that
|
|
59
|
+
delta are gaps. Resolve them before `/rite-define`. Mark each gap inline with
|
|
60
|
+
`[NEEDS CLARIFICATION: question]`.
|
|
60
61
|
|
|
61
|
-
##
|
|
62
|
-
For each material gap
|
|
63
|
-
migration risk, or acceptance
|
|
62
|
+
## Present gaps and issues as options
|
|
63
|
+
For each material gap or issue that changes scope, placement, data model, UX, security,
|
|
64
|
+
migration risk, or acceptance, **ask the human** one gap at a time with a ranked
|
|
64
65
|
option set with the recommended option **first and marked `(Recommended)`** plus an escape
|
|
65
66
|
hatch (via `AskUserQuestion` in HITL):
|
|
66
67
|
```
|
|
@@ -70,15 +71,18 @@ hatch (via `AskUserQuestion` in HITL):
|
|
|
70
71
|
3. <alternative> — <implication>
|
|
71
72
|
4. Something else — I'll describe it
|
|
72
73
|
```
|
|
73
|
-
Investigate and recommend
|
|
74
|
-
|
|
74
|
+
Investigate and recommend, but do not settle a material decision. High confidence may
|
|
75
|
+
make the answer a one-pick confirmation; it does not change the decision owner.
|
|
75
76
|
Only a **genuinely reversible, low-impact** gap is decided and recorded in `assumptions.md`
|
|
76
77
|
without asking. Full render contract + AFK behaviour: [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md).
|
|
77
78
|
|
|
78
79
|
## Done when
|
|
79
80
|
- The shipped archive was checked for prior art; any overlap was surfaced to the human.
|
|
80
|
-
- The
|
|
81
|
+
- The problem, current behavior, placement, and outcome are written down.
|
|
81
82
|
- Every issue has a disposition; every material gap is resolved **by a human pick** from its
|
|
82
83
|
option set (or explicitly deferred as non-blocking), not settled silently on your confidence.
|
|
83
|
-
-
|
|
84
|
-
|
|
84
|
+
- Every foreseeable build-time human prerequisite is resolved, assigned, or justified as an
|
|
85
|
+
action-time gate; objective repair/retry work is not disguised as a question.
|
|
86
|
+
- No blocking `[NEEDS CLARIFICATION]` remains. The spec covers the gaps found during
|
|
87
|
+
authoring and records correct placement. This is the `/rite-spec` readiness gate
|
|
88
|
+
before `/rite-clarify` performs the systematic topology scan.
|
|
@@ -17,13 +17,17 @@ deferred** (logged and non-blocking), never silently skipped:
|
|
|
17
17
|
- [ ] **Integration**: external systems / APIs / contracts (or "none").
|
|
18
18
|
- [ ] **Non-functional**: auth, sensitive data, latency / scale (or "n/a").
|
|
19
19
|
- [ ] **Acceptance**: how each requirement is *proven* (test / observation).
|
|
20
|
+
- [ ] **Human prerequisites**: credentials, approval windows, irreversible action-time gates
|
|
21
|
+
(or "none").
|
|
20
22
|
|
|
21
23
|
A blocking gap in any dimension keeps the interview open; a deferred one goes to
|
|
22
24
|
`questions.md` and doesn't block. This feeds the `/rite-spec` readiness gate.
|
|
23
25
|
|
|
24
26
|
## Spec question boundary
|
|
25
|
-
- Things the codebase
|
|
26
|
-
- Reversible implementation details (decide and note as an assumption).
|
|
27
|
+
- Things the codebase, prior decisions, or authoritative docs answer (search them first).
|
|
28
|
+
- Reversible implementation and test details (decide and note as an assumption).
|
|
29
|
+
- Objective tooling/environment failures (record the prerequisite or technical blocker; never
|
|
30
|
+
ask the human to authorize the agent's repair work).
|
|
27
31
|
- Everything at once "to be thorough." Thoroughness is depth on the few that matter.
|
|
28
32
|
|
|
29
33
|
## Record
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
# Spec-quality checklists
|
|
1
|
+
# Spec-quality checklists
|
|
2
2
|
|
|
3
|
-
Before
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Catching it now is a one-line spec edit; catching it at `/rite-prove` is a reslice.
|
|
3
|
+
Before `/rite-define`, check that each requirement is complete, unambiguous, and
|
|
4
|
+
measurable. These checklists evaluate the prose, not the implementation. For example,
|
|
5
|
+
"the banner is prominent" fails because "prominent" has no threshold. Fixing that in
|
|
6
|
+
the spec avoids a later reslice.
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
`/rite-
|
|
8
|
+
These are not implementation tests. Ask "is *export* defined for an empty dataset?", not
|
|
9
|
+
"does `exportCsv()` handle `[]`?". Implementation checks belong to `/rite-vet` and
|
|
10
|
+
`/rite-prove`. These files never name a function, file, or library.
|
|
12
11
|
|
|
13
12
|
## Output: one file per requirement domain
|
|
14
13
|
|
|
15
|
-
Emit `.devrites/work/<slug>/checklists/<domain>.md`, one per domain the spec covers
|
|
16
|
-
a domain
|
|
17
|
-
`devrites-interview` dimension:
|
|
14
|
+
Emit `.devrites/work/<slug>/checklists/<domain>.md`, one per domain the spec covers.
|
|
15
|
+
Skip a domain marked "none". The domains match the interview taxonomy, so each gap maps
|
|
16
|
+
to a `devrites-interview` dimension:
|
|
18
17
|
|
|
19
18
|
| Domain file | Tests the prose of |
|
|
20
19
|
|---|---|
|
|
21
20
|
| `functional.md` | Functional requirements + scenarios: is each capability stated, bounded, testable? |
|
|
22
21
|
| `data-model.md` | Key entities / data model: shapes, fields, lifecycle, relationships (skip if "none"). |
|
|
23
22
|
| `interaction.md` | API / UI impact + UX states: every screen state and contract named (skip if no UI/API). |
|
|
24
|
-
| `non-functional.md` | Constraints, auth / data sensitivity, latency / scale / compatibility budgets. |
|
|
23
|
+
| `non-functional.md` | Constraints, auth / data sensitivity, latency / scale / compatibility budgets, human-only proof prerequisites. |
|
|
25
24
|
| `edge-cases.md` | Empty / boundary / invalid / concurrent / failure paths the requirements imply. |
|
|
26
25
|
|
|
27
26
|
## Each item: a question, a verdict, the line it interrogates
|
|
@@ -41,11 +40,11 @@ Verdict is `pass` / `fail` / `n/a`. A `fail` carries a severity:
|
|
|
41
40
|
- **CRITICAL:** the ambiguity would change the build or its acceptance: an unquantified
|
|
42
41
|
acceptance/success criterion, an incomplete enumeration in a requirement, an ambiguous data
|
|
43
42
|
shape, an undefined edge case on a stated flow, a contradictory pair of requirements.
|
|
44
|
-
- **minor:** vague but
|
|
43
|
+
- **minor:** vague but nonessential prose. Record it; it does not block.
|
|
45
44
|
|
|
46
|
-
##
|
|
45
|
+
## Question bank
|
|
47
46
|
|
|
48
|
-
Each question
|
|
47
|
+
Each question checks one requirement-prose failure mode:
|
|
49
48
|
- **Measurability:** every "good / fast / prominent / simple / secure" carries a number, a budget,
|
|
50
49
|
or a named reference. No adjective stands in for a threshold.
|
|
51
50
|
- **Completeness:** every enumeration is closed (no "etc."); every requirement with a precondition
|
|
@@ -56,18 +55,20 @@ Each question tests one of the failure modes of requirement prose:
|
|
|
56
55
|
- **Testability:** each acceptance criterion is binary and names (or clearly implies) its evidence.
|
|
57
56
|
A criterion only provable by reading code is a fail.
|
|
58
57
|
- **Consistency:** no requirement contradicts another, the data model, or a non-goal.
|
|
58
|
+
- **Non-functional:** each NFR names affected REQ/AC IDs or a bounded `global` scope;
|
|
59
|
+
human-only proof prerequisites name their owner.
|
|
59
60
|
|
|
60
|
-
##
|
|
61
|
+
## Readiness gate
|
|
61
62
|
|
|
62
|
-
The spec **Readiness gate**
|
|
63
|
+
The spec **Readiness gate** at the bottom of
|
|
64
|
+
[`spec-template.md`](spec-template.md) requires every
|
|
63
65
|
emitted `checklists/<domain>.md` must reach `Verdict: pass` (zero CRITICAL fails) before the gate
|
|
64
66
|
passes. Minor fails are logged, not blocking. A single open CRITICAL keeps the spec `Status: Draft`.
|
|
65
|
-
`/rite-define` reads the checklists at
|
|
66
|
-
|
|
67
|
+
`/rite-define` reads the checklists at step 0 and **hard-blocks while any CRITICAL is
|
|
68
|
+
unchecked**. A spec without checklists is not yet checked, so define stops and routes
|
|
69
|
+
back here.
|
|
67
70
|
|
|
68
71
|
## Discipline
|
|
69
|
-
- Score honestly.
|
|
70
|
-
spec-quality version of weakening a test to go green. It defeats the gate.
|
|
72
|
+
- Score honestly. Do not soften a checklist question to pass a weak spec.
|
|
71
73
|
- Don't pad. Five real questions that find one CRITICAL beat thirty rubber-stamped rows.
|
|
72
|
-
-
|
|
73
|
-
`/rite-vet`'s `test-plan.md`, not here.
|
|
74
|
+
- If a question needs a function name, it belongs in `/rite-vet`'s `test-plan.md`.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# `spec.md` template
|
|
2
2
|
|
|
3
3
|
Write the product contract: WHAT users get, WHY it matters, how success is
|
|
4
|
-
measured, and what is out of scope. Keep HOW in `plan.md`; put topology and
|
|
4
|
+
measured, and what is out of scope. Keep HOW in `plan.md`; put technical topology and
|
|
5
5
|
diagrams in `architecture.md` / `flows.md`; put coverage in `traceability.md`.
|
|
6
6
|
|
|
7
7
|
Rules:
|
|
8
8
|
|
|
9
9
|
1. Mark unknowns with `[NEEDS CLARIFICATION: <question>]`; blocking unknowns
|
|
10
|
-
stop `/rite-
|
|
10
|
+
stop `/rite-clarify`.
|
|
11
11
|
2. Use stable IDs: `REQ-001` for requirements and `AC-001` for acceptance.
|
|
12
12
|
3. Link to source artifacts instead of duplicating them.
|
|
13
13
|
4. Keep the file compact. If it exceeds the schema budget, add
|
|
@@ -84,11 +84,17 @@ Use `resolved/test`, `resolved/judgment`, `dismissed`, or `unresolved`.
|
|
|
84
84
|
- Does not own: <adjacent area>.
|
|
85
85
|
- Placement summary: <one-line module/layer summary>; full technical map lives in `architecture.md`.
|
|
86
86
|
|
|
87
|
+
## Coverage seed
|
|
88
|
+
- Actors/journeys/components: <material surfaces discovered while authoring>.
|
|
89
|
+
- States/data/contracts/integrations: <material boundaries discovered>.
|
|
90
|
+
- Operations/proof surfaces: <configuration, observability, rollout/rollback, evidence constraints>.
|
|
91
|
+
|
|
87
92
|
## References
|
|
88
93
|
- `brief.md` - request, objective, non-goals, success definition.
|
|
89
94
|
- `architecture.md` - technical placement and integration points.
|
|
90
95
|
- `flows.md` - diagrams when useful.
|
|
91
96
|
- `decisions.md` - ADR-style product/technical decisions.
|
|
97
|
+
- `decision-coverage.md` - topology scan and clarity verdict once `/rite-clarify` runs.
|
|
92
98
|
- `traceability.md` - AC/REQ coverage once `/rite-define` runs.
|
|
93
99
|
- `design-brief.md` - UI direction when UI is in scope.
|
|
94
100
|
|
|
@@ -107,4 +113,5 @@ Use `resolved/test`, `resolved/judgment`, `dismissed`, or `unresolved`.
|
|
|
107
113
|
- [ ] Non-goals and scope boundaries are explicit.
|
|
108
114
|
- [ ] Architecture/flows/decisions are linked out instead of duplicated here.
|
|
109
115
|
- [ ] UI work has `design-brief.md`; non-UI work states UI is out of scope.
|
|
116
|
+
- [ ] Coverage seed names the material surfaces `/rite-clarify` must scan.
|
|
110
117
|
```
|
|
@@ -19,9 +19,12 @@ Load that schema before creating or updating workspace artifacts.
|
|
|
19
19
|
decisions.md
|
|
20
20
|
assumptions.md
|
|
21
21
|
questions.md
|
|
22
|
+
decision-coverage.md # from /rite-clarify
|
|
22
23
|
plan.md # from /rite-define
|
|
23
24
|
tasks.md # from /rite-define
|
|
24
25
|
traceability.md # from /rite-define
|
|
26
|
+
eng-review.md # from /rite-vet
|
|
27
|
+
test-plan.md # from /rite-vet
|
|
25
28
|
state.md
|
|
26
29
|
evidence.md # from /rite-build or /rite-prove (proof.md alias supported)
|
|
27
30
|
browser-evidence.md # UI only
|
|
@@ -46,8 +49,10 @@ canonical files and preserves aliases rather than deleting old ones.
|
|
|
46
49
|
- `/rite-spec` creates the workspace map, `brief.md`, `spec.md`, `decisions.md`,
|
|
47
50
|
`assumptions.md`, `questions.md`, `state.md`, optional `references.md` /
|
|
48
51
|
`references/`, and optional `design-brief.md` for UI.
|
|
52
|
+
- `/rite-clarify` adds `decision-coverage.md`.
|
|
49
53
|
- `/rite-define` adds `architecture.md`, `plan.md`, `tasks.md`, and
|
|
50
54
|
`traceability.md`.
|
|
55
|
+
- `/rite-vet` adds `eng-review.md` and `test-plan.md`.
|
|
51
56
|
- Later phases add only the artifact they own. Do not create optional files as
|
|
52
57
|
empty placeholders; absence means the phase has not produced that artifact.
|
|
53
58
|
- Each artifact starts with a summary and links to deeper source files instead of
|
|
@@ -61,7 +66,7 @@ canonical files and preserves aliases rather than deleting old ones.
|
|
|
61
66
|
# <Feature> Workspace
|
|
62
67
|
phase: spec
|
|
63
68
|
status: running
|
|
64
|
-
next_action: /rite-
|
|
69
|
+
next_action: /rite-clarify after spec readiness passes
|
|
65
70
|
last_updated: <date>
|
|
66
71
|
|
|
67
72
|
## Artifact map
|
|
@@ -69,6 +74,7 @@ last_updated: <date>
|
|
|
69
74
|
| --- | --- |
|
|
70
75
|
| brief.md | Objective and bounds |
|
|
71
76
|
| spec.md | Product contract |
|
|
77
|
+
| decision-coverage.md | Clarification verdict; absent until /rite-clarify |
|
|
72
78
|
| architecture.md | Technical map; absent until /rite-define |
|
|
73
79
|
| plan.md | Technical approach; absent until /rite-define |
|
|
74
80
|
| tasks.md | Vertical slices; absent until /rite-define |
|
|
@@ -79,7 +85,8 @@ last_updated: <date>
|
|
|
79
85
|
| Phase / role | Read |
|
|
80
86
|
| --- | --- |
|
|
81
87
|
| Spec | brief.md, spec.md, questions.md |
|
|
82
|
-
|
|
|
88
|
+
| Clarify | spec.md, decisions.md, assumptions.md, questions.md |
|
|
89
|
+
| Build | state.md, decision-coverage.md, eng-review.md, test-plan.md, tasks.md, plan.md |
|
|
83
90
|
| Review | traceability.md, evidence.md, decisions.md |
|
|
84
91
|
|
|
85
92
|
## Blocking gates
|
|
@@ -100,6 +107,8 @@ None.
|
|
|
100
107
|
| slice_mode | none |
|
|
101
108
|
| risk | none |
|
|
102
109
|
| next_action | <single command + reason> |
|
|
110
|
+
| return_phase | <later phase; retrofit clarification only> |
|
|
111
|
+
| return_next_action | <saved command; retrofit clarification only> |
|
|
103
112
|
|
|
104
113
|
## Awaiting human
|
|
105
114
|
Only present when status is awaiting_human.
|
|
@@ -112,7 +121,8 @@ Only present when status is awaiting_human.
|
|
|
112
121
|
|
|
113
122
|
`state.md` is a compact cursor, not a history file. Put proof in `evidence.md`,
|
|
114
123
|
decisions in `decisions.md`, assumptions in `assumptions.md`, and drift in
|
|
115
|
-
`drift.md`.
|
|
124
|
+
`drift.md`. Omit both `return_*` rows outside a later-phase `/rite-clarify`
|
|
125
|
+
retrofit; `devrites-engine clarify-return` owns their atomic lifecycle.
|
|
116
126
|
|
|
117
127
|
## questions.md entry format
|
|
118
128
|
|
|
@@ -5,15 +5,13 @@ argument-hint: "[feature-slug] [--mode expand|selective|hold|reduce]"
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# /rite-temper:
|
|
8
|
+
# /rite-temper: review scope and risk before planning
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
`/rite-autocomplete`. **Read the active workspace first**; if there's no readied
|
|
16
|
-
`spec.md`, tell the user to run `/rite-spec`.
|
|
10
|
+
Review a readied spec for outcome ambition, scope, pre-mortem risks, and unnecessary
|
|
11
|
+
solution surface. Fold accepted decisions into the canonical contract before
|
|
12
|
+
`/rite-define`. This step is optional for small work and skips low-stakes specs, but
|
|
13
|
+
`/rite-autocomplete` always invokes it. **Read the active workspace first**; if there
|
|
14
|
+
is no readied `spec.md`, tell the user to run `/rite-spec`.
|
|
17
15
|
|
|
18
16
|
## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
|
|
19
17
|
Pull on demand: `patterns.md` +
|
|
@@ -23,65 +21,70 @@ invent one), `documentation.md` (ADR-style `decisions.md` entries), `afk-hitl.md
|
|
|
23
21
|
that needs more than the default pre-mortem) selected by the section's risk).
|
|
24
22
|
|
|
25
23
|
## Operating rules
|
|
26
|
-
- **
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
written into `spec.md` as a recorded, confirmable decision. Expansion is **opt-in** (HITL
|
|
24
|
+
- **Raise outcome ambition without expanding the solution unnecessarily.** Solve the
|
|
25
|
+
underlying problem without adding speculative capability or abstraction.
|
|
26
|
+
- **Route every scope change through the Spec Drift Guard.** A scope change takes effect
|
|
27
|
+
only when `spec.md` records the confirmed decision. Expansion is **opt-in** (HITL
|
|
31
28
|
confirm; AFK pauses: see autocomplete policy). Nothing auto-grows into the build.
|
|
32
|
-
- **
|
|
33
|
-
|
|
29
|
+
- **Apply maximum caution to hard-to-reverse changes.** Auth, migration, public API, and
|
|
30
|
+
data-model changes always pause under the irreversible-risk list.
|
|
34
31
|
- **Honest verdict.** Never round "needs work" up to "ready"; record every scope call's *why*.
|
|
32
|
+
- **Search before asking.** Apply `afk-hitl.md` decision ownership; only human-owned calls
|
|
33
|
+
enter the interactive walk.
|
|
35
34
|
- **You write; the reviewer judges.** You are the single canonical writer (`strategy.md` +
|
|
36
35
|
the spec edits); the reviewer agent is read-only.
|
|
37
|
-
- **
|
|
38
|
-
significant specs: exactly where vague requirement prose is most expensive. Before hardening,
|
|
36
|
+
- **Require spec-quality checklists for significant features.** Before hardening,
|
|
39
37
|
confirm `checklists/<domain>.md` exist and pass (`rite-spec/reference/spec-checklists.md`); a
|
|
40
38
|
scope expansion you fold in **adds its own** rows (new Success/Acceptance criteria get
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
checklist rows too). A folded expansion with an unquantified criterion is a CRITICAL
|
|
40
|
+
failure that reopens the readiness gate.
|
|
43
41
|
|
|
44
42
|
## Workflow
|
|
45
43
|
0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`**, then run
|
|
46
44
|
`devrites-engine preamble` for deterministic workspace orientation.
|
|
47
|
-
Then read the workspace: `spec.md` (+ `decisions.md`,
|
|
45
|
+
Then read the workspace: `spec.md`, `decision-coverage.md` (+ `decisions.md`,
|
|
48
46
|
`assumptions.md`, `design-brief.md` if UI), `state.md`. Require `Spec gate: passed`: else
|
|
49
|
-
STOP → `/rite-spec`.
|
|
47
|
+
STOP → `/rite-spec`. Require `Decision coverage: CLEAR`: else STOP →
|
|
48
|
+
`/rite-clarify`. If a plan already exists, scope changes route through `/rite-plan
|
|
50
49
|
repair` (record in `drift.md`), not a blind spec edit.
|
|
51
50
|
1. **Significance test:** [`reference/significance.md`](reference/significance.md). Low-stakes
|
|
52
|
-
/ shape-not-meaning work → write the one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
|
|
51
|
+
/ shape-not-meaning work → write the exact one-line `skipped — low stakes (<trigger>)` verdict to `strategy.md`,
|
|
53
52
|
set `state.md` `Next step: /rite-define`, and recommend it. Otherwise fire the full pass below.
|
|
54
53
|
2. **FORWARD pass + mode selection:** [`reference/scope-modes.md`](reference/scope-modes.md).
|
|
55
54
|
First, the **one-sentence-intent test**: state the whole change's intent in a single sentence.
|
|
56
55
|
If you can't without an "and" that joins two unrelated outcomes, it is **two features**: the
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
scope-creep signal; recommend splitting or narrowing the spec before continuing.
|
|
57
|
+
Then consider the 10-star outcome for the underlying problem and choose **exactly one**
|
|
58
|
+
scope mode (`expand` opt-in · `selective` · `hold-rigor` · `reduce-to-MVP`) with its
|
|
59
|
+
rationale and the condition that would change the choice. `$ARGUMENTS` `--mode` is a
|
|
61
60
|
hint, not a command.
|
|
62
61
|
3. **INVERSION pass:** pre-mortem in past tense ("it shipped and failed: what went wrong"),
|
|
63
62
|
each top risk carrying likelihood + mitigation + the slice it will bind to; then the **YAGNI
|
|
64
63
|
ledger** (each candidate scope item gets the "imagine the later refactor" test; defer unless
|
|
65
64
|
now-cost is trivial AND deferred-cost is large).
|
|
66
|
-
-
|
|
67
|
-
|
|
65
|
+
**Interruption pre-mortem:** audit the spec forecast and assumptions for unresolved behavior,
|
|
66
|
+
proof prerequisites, approvals, access, and irreversible gates. Resolve facts and reversible
|
|
67
|
+
details now; retain only unavailable-pre-code or mandatory action-time checkpoints.
|
|
68
|
+
- **Deepen on demand.** When a scope decision, requirement, or risk needs more analysis
|
|
69
|
+
than the default pre-mortem provides, choose 3-5 techniques from
|
|
68
70
|
[`elicitation.md`](../devrites-lib/reference/standards/elicitation.md) whose *when-to-reach-for-it* matches that
|
|
69
71
|
section's risk (irreversible decision → Red-Team/Blue-Team + Assumption Audit; sizing → Delphi;
|
|
70
|
-
vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that
|
|
71
|
-
section**. Record what
|
|
72
|
-
|
|
72
|
+
vague requirement → Steelman-then-Attack), offer them, and run the chosen one **on that
|
|
73
|
+
section**. Record what changed, not the technique name. The default passes remain
|
|
74
|
+
sufficient when no deeper analysis is needed.
|
|
73
75
|
4. **Score the 9 dimensions:** [`reference/review-dimensions.md`](reference/review-dimensions.md).
|
|
74
76
|
Cite evidence *before* the band; **gate on the floor** (the weakest dimension, not an average).
|
|
75
77
|
**Completion:** all nine dimensions have cited evidence, a band, and one explicit floor verdict.
|
|
76
|
-
5. **
|
|
77
|
-
interactive review
|
|
78
|
+
5. **Review human-owned findings with the human; do not batch them.** `strategy.md`
|
|
79
|
+
records the interactive review but does not replace it. Present each material scope decision through
|
|
78
80
|
`AskUserQuestion`, one at a time, best-guess + **why**. Each material scope call ends as a
|
|
79
81
|
**recorded decision**: a resolved `questions.md` qid (HITL) or a `decisions.md` ADR (AFK):
|
|
80
|
-
so the
|
|
82
|
+
so the review leaves an auditable record outside chat. (AFK gate policy is single-sourced in
|
|
81
83
|
[`reference/significance.md`](reference/significance.md): `hold-rigor` + `reduce-to-MVP`
|
|
82
84
|
auto-apply, **any `expand` is a blocking pause**, irreversible-risk always pauses.)
|
|
85
|
+
Apply objective clarity, mitigation, and assumption fixes directly.
|
|
83
86
|
6. **Write `strategy.md` + fold back:** [`reference/strategy-template.md`](reference/strategy-template.md).
|
|
84
|
-
**
|
|
87
|
+
**Choose the drift path based on whether a plan exists:** *no `plan.md` yet* (the normal pre-define
|
|
85
88
|
case) → update `spec.md` **through the Spec Drift Guard**. *Success criteria* **and**
|
|
86
89
|
*Acceptance criteria* for each opt-in expansion / cut, **Non-goals** for every deferred item,
|
|
87
90
|
*Constraints* **and** *Risks* the pre-mortem demands, and the gaps/decisions table; *`plan.md`
|
|
@@ -90,22 +93,33 @@ that needs more than the default pre-mortem) selected by the section's risk).
|
|
|
90
93
|
decision · why-not · what-would-change-it) and `assumptions.md` (every "we'll probably need X" →
|
|
91
94
|
assumption-to-verify). **Every scope delta must carry a recorded human decision**: a resolved
|
|
92
95
|
`questions.md` qid (HITL) or a `decisions.md` ADR (AFK within the ceiling); a folded change with
|
|
93
|
-
no recorded decision is
|
|
94
|
-
any folded scope delta lacks its decision
|
|
96
|
+
no recorded decision is invalid. **Re-check the spec Readiness gate** (it fails if
|
|
97
|
+
any folded scope delta lacks its decision or leaves a foreseeable human build choice).
|
|
98
|
+
After any edit to `brief.md`, `spec.md`, `decisions.md`, `assumptions.md`, or
|
|
99
|
+
`questions.md`, re-scan the affected coverage rows, assumption audit, residual uncertainty,
|
|
100
|
+
and closed gates. Partial/Missing, an unowned material assumption, or an open
|
|
101
|
+
blocking/escalating question routes `/rite-clarify`/HITL; never refresh past it. Only after the
|
|
102
|
+
matrix is re-closed, run `devrites-engine readiness-digest coverage <slug>` and replace the
|
|
103
|
+
complete `Coverage inputs SHA-256` line in `decision-coverage.md`.
|
|
104
|
+
Update `state.md`: `Phase: temper`,
|
|
95
105
|
`Next step: /rite-define`; on a blocking pause (expand / irreversible / a dimension still below
|
|
96
106
|
bar) write the `Awaiting human` block + `Status: awaiting_human` before stopping.
|
|
97
107
|
7. **Adversarial verification loop:** dispatch [`devrites-strategy-reviewer`](../../agents/devrites-strategy-reviewer.md)
|
|
98
|
-
|
|
108
|
+
through the file-backed fresh-context contract in
|
|
109
|
+
[`agents.md`](../devrites-lib/reference/standards/agents.md), with **only** the hardened
|
|
110
|
+
spec + rubric: no authoring reasoning. Resolve
|
|
99
111
|
actionable findings by editing `spec.md`/`strategy.md`, re-dispatch; **cap ≤3 iterations**. A
|
|
100
|
-
dimension still below bar after 3
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
112
|
+
dimension still below bar after 3 is classified by decision ownership: a product/scope/risk
|
|
113
|
+
choice becomes a blocking question; an objective spec defect stays blocked with the exact
|
|
114
|
+
required edit and routes to `/rite-spec`, not `/rite-resolve`. Irreversible-risk findings
|
|
115
|
+
always pause. Use the shared capability ladder; an inline final-rung pass is labeled
|
|
116
|
+
`independence: fallback`, never an independent review. After an accepted edit to a
|
|
117
|
+
coverage-bound input, repeat step 6's revalidation and digest refresh before handoff.
|
|
104
118
|
8. **STOP.** Report the mode, the scope deltas, and the floor verdict; recommend `/rite-define`.
|
|
105
119
|
|
|
106
|
-
> **Mid-flight discipline.**
|
|
107
|
-
>
|
|
108
|
-
>
|
|
120
|
+
> **Mid-flight discipline.** Do not replace the interactive review with `strategy.md`,
|
|
121
|
+
> expand implementation surface without need, grow scope outside the Drift Guard, or score
|
|
122
|
+
> before citing evidence. See [`reference/anti-patterns.md`](reference/anti-patterns.md).
|
|
109
123
|
|
|
110
124
|
## Output
|
|
111
125
|
|
|
@@ -115,12 +129,13 @@ Default success shape:
|
|
|
115
129
|
```
|
|
116
130
|
Done: spec tempered for <slug>; mode <expand|selective|hold-rigor|reduce-to-MVP|skipped-low-stakes>.
|
|
117
131
|
Changed: strategy.md, spec.md, decisions.md, assumptions.md
|
|
118
|
-
Evidence: dimension floor <band>; reviewer loop <n>; spec readiness re-checked pass
|
|
132
|
+
Evidence: dimension floor <band>; reviewer loop <n>; spec readiness + decision coverage re-checked pass
|
|
119
133
|
Open: <none | n deferred non-goals>
|
|
120
134
|
Next: /rite-define
|
|
121
135
|
Record: .devrites/work/<slug>/strategy.md
|
|
122
136
|
↻ Hygiene: /clear before /rite-define
|
|
123
137
|
```
|
|
124
138
|
If readiness is blocked, use the shared `Stopped / blocked` form and route `Fix:`
|
|
125
|
-
to `/rite-
|
|
139
|
+
to `/rite-clarify` for an uncovered decision surface or `/rite-spec` for an objective
|
|
140
|
+
spec defect; do not recommend `/rite-define`.
|
|
126
141
|
**DO NOT plan, slice, or write code here**. That's `/rite-define` and `/rite-build`.
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
# Review dimensions
|
|
1
|
+
# Review dimensions and floor-gate rubric
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Score the spec on nine dimensions. A strong dimension cannot offset a failed one, so
|
|
4
|
+
the gate uses the **lowest band**, not an average.
|
|
5
5
|
|
|
6
6
|
## The nine dimensions
|
|
7
|
-
1. **Problem
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
2. **Scope
|
|
11
|
-
clear IN/OUT line?
|
|
12
|
-
3. **Premise
|
|
7
|
+
1. **Problem choice and ambition:** does the spec solve the underlying problem, or only
|
|
8
|
+
make a minor improvement to the obvious path? It may also reach beyond the actual need.
|
|
9
|
+
Both insufficient outcome ambition and over-building are failures.
|
|
10
|
+
2. **Scope and boundary:** are non-goals explicit? Is there a Minimum Usable Subset and
|
|
11
|
+
a clear IN/OUT line? Flag unrelated bundles and a missing "Won't-have-this-time".
|
|
12
|
+
3. **Premise and alternatives:** are the consequential premises stated and challenged, and is at
|
|
13
13
|
least one genuinely different approach (different data model / flow / boundary) considered
|
|
14
14
|
with its trade-off? ("Alternatives considered" is one of the most useful parts of a spec.)
|
|
15
|
-
4. **Pre-mortem risk coverage:**
|
|
16
|
-
+ mitigation + the slice that owns it.
|
|
15
|
+
4. **Pre-mortem risk coverage:** assess the feature as if it shipped and failed. Each top risk carries likelihood
|
|
16
|
+
+ mitigation + the slice that owns it. The interruption pre-mortem accounts for foreseeable
|
|
17
|
+
human prerequisites and action-time approvals instead of deferring generic uncertainty to
|
|
18
|
+
build. **Unmitigated top risks are gating.**
|
|
17
19
|
5. **Over-engineering / YAGNI:** speculative capability, unused extension points, premature
|
|
18
20
|
abstraction, second-system bloat. Apply the pack's standard (`patterns.md`) + the "imagine
|
|
19
21
|
the later refactor" test. Defer unless now-cost is trivial AND deferred-cost is large.
|
|
20
|
-
6. **Acceptance testability
|
|
22
|
+
6. **Acceptance testability and completion:** every acceptance criterion measurable, technology-
|
|
21
23
|
agnostic, and comparable **down to a baseline** ("better than the current workaround"), not
|
|
22
24
|
up to an unbounded ideal. Vague adjectives ("fast/robust/intuitive") and "handles X
|
|
23
25
|
gracefully" are flagged.
|
|
@@ -34,9 +36,8 @@ UI specs also inherit `rite-polish/reference/anti-ai-slop.md` at the cross-cutti
|
|
|
34
36
|
dimension (design-system fit, anti-AI-slop), but `/rite-temper` reviews the *spec/design-brief*,
|
|
35
37
|
not pixels; the built UI is judged later by `devrites-frontend-reviewer`.
|
|
36
38
|
|
|
37
|
-
##
|
|
38
|
-
Score each dimension on a **labeled band**, never a 1-10 float or
|
|
39
|
-
the work: matches the pack's severity-vocabulary stance):
|
|
39
|
+
## Rubric
|
|
40
|
+
Score each dimension on a **labeled band**, never a 1-10 float or composite number:
|
|
40
41
|
|
|
41
42
|
| Band | Meaning |
|
|
42
43
|
|---|---|
|
|
@@ -45,9 +46,8 @@ the work: matches the pack's severity-vocabulary stance):
|
|
|
45
46
|
| **thin** | Under-addressed; a real gap to close before planning (Important). |
|
|
46
47
|
| **broken** | Missing or wrong in a way that will cost a redo (Critical). |
|
|
47
48
|
|
|
48
|
-
**Cite evidence before the band
|
|
49
|
-
|
|
50
|
-
(don't average up).
|
|
49
|
+
**Cite evidence before assigning the band.** Name the spec line or absence that
|
|
50
|
+
justifies it. Review a borderline dimension twice if needed and use the **lower** band.
|
|
51
51
|
|
|
52
52
|
## The floor-gate
|
|
53
53
|
- **Pass** only when every dimension is `adequate` or `strong` **and** no unmitigated top
|
|
@@ -57,9 +57,11 @@ first and rationalize after. Borderline dimensions may be sampled twice; take th
|
|
|
57
57
|
Suggestion / Nit / FYI**) so they compose with `/rite-review` and `/rite-seal`. `broken` →
|
|
58
58
|
Critical, `thin` → Important; **FYI is band-independent**: an observation on a `strong` /
|
|
59
59
|
`adequate` dimension, not a failing band.
|
|
60
|
-
- **
|
|
60
|
+
- **Do not double-count overlap.** Some dimensions use the same evidence (e.g. #7
|
|
61
61
|
irreversibility & #9 convention-fit both touch codebase realism; #1 ambition & #2 scope both
|
|
62
62
|
touch over/under-reach). Don't fail two dimensions for the *same* root cause: cite the
|
|
63
|
-
evidence once
|
|
64
|
-
- Below-bar dimension after the ≤3-iteration reviewer loop →
|
|
65
|
-
|
|
63
|
+
evidence once and assign one band so one problem does not create two floor failures.
|
|
64
|
+
- Below-bar dimension after the ≤3-iteration reviewer loop → classify by decision ownership:
|
|
65
|
+
product/scope/risk uncertainty becomes a blocking question; an objective prose/coverage defect
|
|
66
|
+
routes back to `/rite-spec` without inventing a human decision. Irreversible-risk findings
|
|
67
|
+
always pause regardless of band.
|