devrites 3.0.6 → 3.1.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 +67 -45
- 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/README.md +3 -0
- package/docs/agents/triage-labels.md +7 -7
- package/docs/architecture.md +157 -140
- package/docs/cli.md +41 -12
- package/docs/command-map.md +49 -35
- package/docs/engine/agent-contract.md +92 -15
- package/docs/engine/commands.md +242 -72
- package/docs/engine/state-schema.md +52 -23
- package/docs/engine/workspace-schema.md +94 -15
- package/docs/extensions.md +1 -1
- package/docs/flow.md +80 -50
- package/docs/harness-compliance.md +29 -5
- package/docs/orchestration.md +107 -79
- package/docs/quick-reference.md +7 -3
- package/docs/release.md +4 -3
- package/docs/skills.md +64 -38
- package/docs/usage.md +57 -38
- 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 +575 -58
- package/engine/internal/install/install_test.go +490 -9
- package/engine/internal/iohooks/iohooks.go +350 -59
- package/engine/internal/iohooks/iohooks_test.go +421 -1
- package/engine/internal/lib/buildreadiness.go +35 -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 +111 -0
- package/engine/internal/lib/readinessartifact.go +510 -0
- package/engine/internal/lib/readinessartifact_test.go +321 -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=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 +141 -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 +71 -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/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 +11 -9
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +3 -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 +198 -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 +23 -10
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/.claude/skills/rite/SKILL.md +8 -6
- package/pack/.claude/skills/rite/reference/menu.md +8 -6
- 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 +38 -38
- 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/wright-dispatch.md +129 -134
- package/pack/.claude/skills/rite-clarify/SKILL.md +89 -0
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +59 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/.claude/skills/rite-define/SKILL.md +57 -32
- package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/.claude/skills/rite-define/reference/plan-template.md +16 -8
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +44 -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-vet/SKILL.md +110 -113
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +42 -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 +71 -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/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 +11 -9
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +3 -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 +198 -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 +23 -10
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/generated/claude/skills/rite/SKILL.md +8 -6
- package/pack/generated/claude/skills/rite/reference/menu.md +8 -6
- 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 +38 -38
- 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/wright-dispatch.md +129 -134
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +89 -0
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +59 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/generated/claude/skills/rite-define/SKILL.md +57 -32
- package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +16 -8
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/claude/skills/rite-plan/SKILL.md +44 -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-vet/SKILL.md +110 -113
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +42 -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 +77 -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/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 +18 -12
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +3 -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 +198 -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 +23 -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 +19 -13
- package/pack/generated/codex/skills/rite/reference/menu.md +8 -6
- 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 +38 -38
- 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/wright-dispatch.md +129 -134
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +105 -0
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +59 -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 +64 -35
- package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +16 -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 +51 -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-vet/SKILL.md +117 -116
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +42 -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 +414 -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
|
@@ -11,24 +11,27 @@ This is the Codex mirror of a DevRites skill. In Codex:
|
|
|
11
11
|
|
|
12
12
|
- Load DevRites engineering standards from `.agents/skills/devrites-lib/reference/standards/`. Read `.agents/skills/devrites-lib/reference/standards/core.md` before workflow work, then load the other `.agents/skills/devrites-lib/reference/standards/*.md` files exactly when this skill asks for them.
|
|
13
13
|
- Use the installed `devrites-engine` binary as the canonical runtime helper surface for orientation, gates, and state mutation.
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
14
|
+
- **Invocation and dispatch are different:** invoke means run a skill in this context; dispatch means start a fresh agent with `spawn_agent`, await it, and reconcile its result. Never describe inline skill work as a dispatch.
|
|
15
|
+
- For every DevRites specialist or writer dispatch, first call `spawn_agent` with the named `devrites-<role>` custom role. The matching project contract is `.codex/agents/devrites-<role>.toml`.
|
|
16
|
+
- If `spawn_agent` is callable but a named read-only role is unavailable, use generic `explorer` only when the host proves that run has a runtime-enforced read-only sandbox. Tell it to read `.codex/agents/devrites-<role>.toml`, follow its `developer_instructions`, and execute the unchanged packet. A missing read-only custom role is not evidence that spawning is unavailable.
|
|
17
|
+
- Never dispatch generic `worker` for `devrites-slice-wright` unless the host proves that worker run carries exact DevRites identity and the same `.wright-allowlist` enforcement as the named role. Codex reports a generic run as `agent_type=worker`, so the generated global hooks cannot prove that binding. Reject that unsafe rung and use the documented labelled inline wright path with `.reconcile-inline` plus the full reconcile gate.
|
|
18
|
+
- If the host cannot prove the generic explorer is runtime read-only, reject that rung too. Only when no spawn primitive exists or a higher-priority policy rejects a safe spawn may the root run the documented discipline inline. Label it `independence: fallback`, never call it independent, and apply every fallback risk gate. An unbound generic wright or unconfined generic explorer is such a safety rejection, not evidence that no agents exist.
|
|
19
|
+
- Wait for every required fresh-context dispatch before reconciling or advancing. A backgrounded or lost result is incomplete.
|
|
20
|
+
- Codex project hooks are installed in `.codex/hooks.json`; declared-leaf hooks are scoped inside `.codex/agents/devrites-*.toml`. Review and trust them with `/hooks` before relying on hook enforcement.
|
|
17
21
|
- When this skill asks a HITL question via `AskUserQuestion`: Codex's equivalent (`request_user_input`) exists only in Plan mode. Outside Plan mode, render the option set as a plain numbered list in chat and **end the turn** so the human answers: NEVER silently pick an option yourself; auto-picking is AFK's contract, gated by the `.devrites/AFK` sentinel.
|
|
18
22
|
|
|
19
23
|
|
|
20
|
-
# $rite-spec: investigate
|
|
24
|
+
# $rite-spec: investigate and write the spec
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`$rite-
|
|
25
|
-
|
|
26
|
+
Turn a request into a **fully covered, correctly placed `spec.md`** by investigating
|
|
27
|
+
the existing system and resolving every material gap found during authoring.
|
|
28
|
+
`$rite-clarify` audits the full topology before `$rite-define` plans it. **Do not write
|
|
29
|
+
a plan, tasks, or code here.** Those belong to `$rite-define` and `$rite-build`.
|
|
26
30
|
|
|
27
|
-
> **
|
|
28
|
-
> fix does
|
|
29
|
-
>
|
|
30
|
-
>
|
|
31
|
-
> Spec is for real features; don't pay its ceremony for a one-off.
|
|
31
|
+
> **Use `$rite-quick` for a small change.** A typo, copy edit, config bump, or
|
|
32
|
+
> one-function fix does not need a full workspace and lifecycle. Run
|
|
33
|
+
> `$rite-quick <change>`. It returns here if the work touches auth, data, a migration, a
|
|
34
|
+
> public API, or more than one slice.
|
|
32
35
|
|
|
33
36
|
## Rules consulted (read on demand from `.agents/skills/devrites-lib/reference/standards/`)
|
|
34
37
|
Pull `documentation.md` via `Read`
|
|
@@ -39,35 +42,34 @@ Pull `spec-grammar.md` and `devrites-lib/reference/workspace-artifact-schema.md`
|
|
|
39
42
|
acceptance for a behavioral / high-risk requirement (auth,
|
|
40
43
|
data model, state machine, public API, money, migration): the structured `### Requirement:` /
|
|
41
44
|
`#### Scenario:` (SHALL · WHEN/THEN) form, lint-checked by `devrites-engine spec-validate`. Simple criteria
|
|
42
|
-
stay flat `AC-###` bullets; the grammar is opt-in by rigor, never forced.
|
|
45
|
+
stay flat `AC-###` bullets; the grammar is opt-in by rigor, never forced. Use
|
|
46
|
+
[`reference/acceptance-criteria.md`](reference/acceptance-criteria.md) to keep each
|
|
47
|
+
criterion independently observable and binary.
|
|
43
48
|
|
|
44
49
|
## Operating rules (DevRites core)
|
|
45
50
|
- No silent assumptions · no guessing through confusion · prefer existing conventions ·
|
|
46
51
|
ask the human when an answer changes scope, placement, data model, UX, security,
|
|
47
52
|
migration risk, or acceptance.
|
|
48
|
-
- **
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
- **Root authority:** the controlling chat asks every human question, makes decisions, and
|
|
54
|
+
writes the workspace. Read-only evidence work follows the fresh-context contract in
|
|
55
|
+
[`agents.md`](../devrites-lib/reference/standards/agents.md).
|
|
56
|
+
- **Author one section at a time.** Draft problem → goal → requirements → acceptance →
|
|
57
|
+
edge cases, pausing after each section. If a section contains a contested requirement,
|
|
58
|
+
boundary, or unstated assumption, apply a relevant technique from
|
|
59
|
+
[`elicitation.md`](../devrites-lib/reference/standards/elicitation.md) before continuing.
|
|
55
60
|
|
|
56
61
|
## Workflow
|
|
57
62
|
0. **Read `.agents/skills/devrites-lib/reference/standards/core.md`:** the always-on operating rules and anti-rationalizations.
|
|
58
63
|
Then run `devrites-engine preamble` for deterministic workspace orientation.
|
|
59
|
-
0a. **
|
|
60
|
-
**existing codebase**
|
|
64
|
+
0a. **Check whether existing code needs adoption.** If this is an
|
|
65
|
+
**existing codebase** that has **never been adopted** (no
|
|
61
66
|
`.devrites/conventions.md`, no prior `.devrites/work`, `.devrites/features`, or `.devrites/archive`) the build has no
|
|
62
|
-
conventions ledger
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
onboarding*); in **AFK** (adoption allowed) run `$rite-adopt` first automatically. **Greenfield
|
|
69
|
-
(no pre-existing source) or an already-onboarded project → skip silently**: never block a spec
|
|
70
|
-
for the absence of adoption (the same no-op discipline as the principles gate). Cheap probe:
|
|
67
|
+
conventions ledger, route through `$rite-adopt` **first** and pass `$ARGUMENTS` as its
|
|
68
|
+
next objective. Adopt derives the baseline `spec.md`, seeds conventions, and proposes
|
|
69
|
+
principles; `$rite-spec` only detects and routes. In **HITL**, present a ranked option:
|
|
70
|
+
recommend adoption first and include a spec-only escape hatch. In **AFK**, when adoption
|
|
71
|
+
is allowed, run `$rite-adopt` automatically. **Skip this check silently for greenfield or
|
|
72
|
+
already-onboarded projects.** Never block a spec only because adoption is absent. Probe:
|
|
71
73
|
```bash
|
|
72
74
|
if [ ! -f .devrites/conventions.md ] && [ ! -d .devrites/archive ] \
|
|
73
75
|
&& [ -z "$(ls .devrites/work .devrites/features 2>/dev/null)" ] \
|
|
@@ -75,137 +77,88 @@ stay flat `AC-###` bullets; the grammar is opt-in by rigor, never forced.
|
|
|
75
77
|
echo "brownfield, not yet adopted → recommend $rite-adopt first (carry this idea as its next objective)"
|
|
76
78
|
else echo "greenfield or already onboarded → continue spec"; fi
|
|
77
79
|
```
|
|
78
|
-
1. **Understand the request** (`$ARGUMENTS`).
|
|
79
|
-
|
|
80
|
-
**Completion:** one sentence
|
|
80
|
+
1. **Understand the request** (`$ARGUMENTS`). State the requested outcome and the
|
|
81
|
+
underlying problem in one or two sentences.
|
|
82
|
+
**Completion:** one sentence includes both.
|
|
81
83
|
1a. **Local dedupe.** Search local issues/PRDs and archived specs before creating a new workspace:
|
|
82
84
|
```bash
|
|
83
85
|
devrites-engine spec-dedupe "$ARGUMENTS"
|
|
84
86
|
```
|
|
85
87
|
If it finds a close match, ask the user: extend existing / adopt / new spec. Record the choice in
|
|
86
88
|
`decisions.md` once the workspace exists. No match → continue silently.
|
|
87
|
-
2. **Investigate
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
(`.codegraph/` / `codegraph_*`) + `graphify` (`graphify-out/`), else standard methods
|
|
94
|
-
(LSP / `Read`/`Grep`/`Glob`); see `.agents/skills/devrites-lib/reference/standards/tooling.md`:
|
|
95
|
-
for placement/callers/impact instead of broad file reads; fall back to reading files. For
|
|
96
|
-
uncertain external library/framework facts that bear on placement or feasibility, consult
|
|
97
|
-
context7 if available. When a material decision turns on a fact outside the codebase: a
|
|
98
|
-
common UX pattern, a standard, a prevailing best practice, how comparable products solve it:
|
|
99
|
-
**search the web if available** (brave MCP preferred; see `.agents/skills/devrites-lib/reference/standards/tooling.md`), and
|
|
100
|
-
carry the cited finding into the option you put to the human at step 4.
|
|
101
|
-
Also discover the project's **test / build/typecheck/lint** commands and the
|
|
102
|
-
frontend/backend systems; read `PRODUCT.md` / `DESIGN.md` / `CLAUDE.md` / `AGENTS.md` if
|
|
103
|
-
present (`AGENTS.md` is the cross-tool agent-conventions standard (treat it as project
|
|
104
|
-
conventions the build must follow, same standing as `CLAUDE.md`), and read
|
|
105
|
-
`.devrites/principles.md` if present) the declared invariants the feature must respect.
|
|
106
|
-
**Consult the capability ledger**: the living record of what the system already does
|
|
89
|
+
2. **Investigate:** follow [investigation](reference/investigation.md) through its
|
|
90
|
+
complete findings and done-when gate. Also discover the project's **test /
|
|
91
|
+
build/typecheck/lint** commands, frontend/backend systems, and declared project guidance
|
|
92
|
+
(`PRODUCT.md`, `DESIGN.md`, `CLAUDE.md`, `AGENTS.md`, and `.devrites/principles.md` when
|
|
93
|
+
present).
|
|
94
|
+
**Consult the capability ledger**, which records current system behavior
|
|
107
95
|
([`ledger.md`](../rite-ship/reference/ledger.md)): `devrites-engine ledger list` for the
|
|
108
96
|
capabilities on record, then `devrites-engine ledger show <capability>` for any this feature
|
|
109
97
|
touches. Also search prior decisions with `devrites-engine decisions search "<2-4 feature nouns>"`
|
|
110
|
-
before asking the human to
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
98
|
+
before asking the human to revisit a settled architecture, API, or auth choice. The
|
|
99
|
+
ledger shows whether each requirement is new or changes existing behavior, which
|
|
100
|
+
determines the delta kind in step 5.
|
|
101
|
+
Identify proof constraints now: human-only credentials, unavailable environments, approval
|
|
102
|
+
windows, or acceptance not observable through existing test/runtime/browser surfaces.
|
|
103
|
+
Split independent placement, blast-radius, and external-fact questions into at most three
|
|
104
|
+
bounded `devrites-evidence-scout` packets on one frozen baseline. Await and reconcile every
|
|
105
|
+
cited dossier before step 4. The scout supplies facts only; it never asks the human or writes
|
|
106
|
+
the spec.
|
|
107
|
+
3. **Gather design references when provided:** [references-intake](reference/references-intake.md).
|
|
108
|
+
The human may attach screenshots, mockups, a Figma link, a video, links, or nothing.
|
|
109
|
+
Skip this step when none are provided. Otherwise, **view or fetch**
|
|
116
110
|
them, **save local files** into `.devrites/work/<slug>/references/`, and index them in
|
|
117
111
|
`references.md` as target, constraint, or inspiration. Later phases honor that role
|
|
118
112
|
rather than treating every reference as a fidelity target.
|
|
119
113
|
**Completion:** every supplied reference is saved and classified, or absence is explicit.
|
|
120
|
-
3a. **Shape
|
|
121
|
-
|
|
122
|
-
`devrites-ux-shape`
|
|
123
|
-
references
|
|
114
|
+
3a. **Shape UX/UI before code when the feature is frontend**
|
|
115
|
+
([frontend-trigger](../rite-build/reference/frontend-trigger.md)). Apply
|
|
116
|
+
`devrites-ux-shape` within the spec phase. It turns the
|
|
117
|
+
references and spec into a feature-level **`design-brief.md`** (design direction, key
|
|
124
118
|
states, interaction model, optional Figma/image visual-direction probe) that `$rite-build`
|
|
125
|
-
targets
|
|
119
|
+
targets for the build. In HITL it pauses for the human to
|
|
126
120
|
confirm the direction; in AFK it asserts the best guess and logs it. Pure
|
|
127
121
|
backend/data/CLI features skip this.
|
|
128
|
-
4. **
|
|
129
|
-
(
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
each resolved by a human pick or explicitly deferred (logged, non-blocking), never silently
|
|
146
|
-
skipped. Aim for **zero blocking gaps**. *If a gap is genuinely undecidable on paper (state
|
|
147
|
-
machine that may deadlock, data shape ambiguity, "which UX wins") → suggest a
|
|
148
|
-
scoped detour to `$rite-prototype` to answer that ONE question before
|
|
149
|
-
continuing.* **Invariant conflict is a blocking gap:** if a requirement or acceptance
|
|
150
|
-
criterion can only be satisfied by breaking a declared principle (`.devrites/principles.md`),
|
|
151
|
-
surface it: the principle wins by default; breaking it needs a recorded, scoped exception a
|
|
152
|
-
human approves, never a spec that silently contradicts an invariant.
|
|
153
|
-
5. **Create the workspace** + set `.devrites/ACTIVE`
|
|
154
|
-
([state-workspace](reference/state-workspace.md)). Write compact `README.md`,
|
|
155
|
-
`brief.md`, and `spec.md` ([spec-template](reference/spec-template.md)). WHAT/WHY,
|
|
156
|
-
technology-agnostic, with requirements, acceptance, edge cases, scope boundaries, links
|
|
157
|
-
to future `architecture.md` / `traceability.md`, and measurable acceptance
|
|
158
|
-
([acceptance-criteria](reference/acceptance-criteria.md)). For a
|
|
159
|
-
behavioral / high-risk requirement, write the acceptance as a structured
|
|
160
|
-
`### Requirement:` (SHALL) + `#### Scenario:` (WHEN/THEN) block per
|
|
161
|
-
[`spec-grammar.md`](../devrites-lib/reference/standards/spec-grammar.md), nesting the `AC-###` id inside each scenario
|
|
162
|
-
so `$rite-seal` still grades it; routine criteria stay flat `AC-###` bullets. **When a
|
|
163
|
-
capability the ledger already holds is changing, write those requirements as deltas**:
|
|
164
|
-
`## ADDED / MODIFIED / REMOVED Requirements — capability: <c>` (spec-grammar.md § Delta form):
|
|
165
|
-
so the change, not just the end state, is explicit and `$rite-ship` folds it cleanly; a
|
|
166
|
-
capability with no ledger entry stays flat (the first sync seeds it). Also
|
|
167
|
-
write `brief.md`, `references.md`, `questions.md`, `decisions.md`, `assumptions.md`,
|
|
168
|
-
and an initial compact `state.md` (phase: spec) from
|
|
169
|
-
[state-workspace](reference/state-workspace.md). When the feature touches
|
|
170
|
-
UI, `design-brief.md` is written here too (by `devrites-ux-shape`, step 3a).
|
|
171
|
-
Populate `## Edge Coverage` with the deterministic boundary classes implied by each requirement
|
|
172
|
-
(empty/huge input, rounding, timezone, ordering, permissions, races, migration) and `## Prohibitions (must-NOT)`
|
|
173
|
-
only for bespoke constraints. If the feature touches model calls, RAG, agents, evals, or LLM output,
|
|
174
|
-
also create `ai-spec.md` from [ai-spec-template](reference/ai-spec-template.md). Then refresh any
|
|
175
|
-
managed project context block so `AGENTS.md` / `CLAUDE.md` point at the new active workspace:
|
|
122
|
+
4. **Resolve human-owned gaps.** Recommend an option and let the human decide. Apply
|
|
123
|
+
[question-protocol](reference/question-protocol.md), the shared
|
|
124
|
+
[`afk-hitl.md` option-set and decision-ownership rules](../devrites-lib/reference/standards/afk-hitl.md#decision-ownership-search-before-asking),
|
|
125
|
+
and [`interview-patterns.md`](reference/interview-patterns.md) for a vague ask. Every
|
|
126
|
+
material dimension is resolved by a human pick or explicitly deferred as non-blocking;
|
|
127
|
+
only genuinely reversible, low-impact details go to `assumptions.md`. A paper-only
|
|
128
|
+
uncertainty may take one scoped `$rite-prototype` detour. A declared-principle conflict
|
|
129
|
+
remains blocking until the human approves a recorded, scoped exception.
|
|
130
|
+
4a. **Build-interruption forecast.** Search first, then list and close foreseeable human needs:
|
|
131
|
+
product/acceptance ambiguity, irreversible/external approval, or human-only access. Record
|
|
132
|
+
owned prerequisites. Keep a build checkpoint only for unavailable pre-code evidence or a
|
|
133
|
+
mandatory action-time approval. **Completion:** no foreseeable human choice is deferred.
|
|
134
|
+
5. **Create the workspace** + set `.devrites/ACTIVE` from
|
|
135
|
+
[state-workspace](reference/state-workspace.md). Write every required artifact and
|
|
136
|
+
conditional annex exactly from [spec-template](reference/spec-template.md), including its
|
|
137
|
+
grammar/delta, coverage-seed, edge/prohibition, UI, and AI rules. Then refresh any managed
|
|
138
|
+
project context block so `AGENTS.md` / `CLAUDE.md` point at the new active workspace:
|
|
176
139
|
```bash
|
|
177
140
|
devrites-engine context sync || true
|
|
178
141
|
```
|
|
179
|
-
5a. **
|
|
180
|
-
Emit
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
(not by softening the question); minor fails are logged. The checklists feed the readiness gate.
|
|
185
|
-
6. **Run the spec readiness gate** (bottom of spec-template): no blocking
|
|
186
|
-
`[NEEDS CLARIFICATION]`, placement decided, all material gaps resolved, any design
|
|
187
|
-
references provided are saved, **UX/UI shaped into `design-brief.md` if the feature is
|
|
188
|
-
UI**, requirements testable, success criteria measurable, **one-sentence intent** (the whole
|
|
189
|
-
change states its intent in a single sentence (if it can't, it is two features: split it or
|
|
190
|
-
narrow the scope), **every `checklists/<domain>.md` at
|
|
191
|
-
`Verdict: pass`**, and **any structured requirement blocks are grammar-valid**) run
|
|
192
|
-
`devrites-engine spec-skeleton` first, then `devrites-engine spec-validate` with
|
|
193
|
-
`--against .devrites/specs` so any delta sections are also
|
|
194
|
-
reconciled against the ledger (an ADDED that already exists, or a MODIFIED/REMOVED that doesn't,
|
|
195
|
-
is a blocking failure to fix, not soften):
|
|
142
|
+
5a. **Check the spec prose** with [spec-checklists](reference/spec-checklists.md).
|
|
143
|
+
Emit every applicable domain checklist and fix each CRITICAL by correcting the spec,
|
|
144
|
+
never by softening the question.
|
|
145
|
+
6. **Run the complete readiness gate** at the bottom of
|
|
146
|
+
[spec-template](reference/spec-template.md), then validate structure and ledger deltas:
|
|
196
147
|
```bash
|
|
197
148
|
devrites-engine spec-skeleton ".devrites/work/<slug>"
|
|
198
149
|
devrites-engine spec-validate ".devrites/work/<slug>" --against .devrites/specs
|
|
199
150
|
```
|
|
200
151
|
**Do not run `devrites-engine analyze` in this phase:** `tasks.md` deliberately does not
|
|
201
152
|
exist yet. `$rite-define` owns the first analyze pass after it writes the slices.
|
|
202
|
-
|
|
203
|
-
|
|
153
|
+
Any failure blocks. The interruption forecast must be resolved, owned, or a justified
|
|
154
|
+
action-time gate. Then write `Spec gate: passed <iso>`.
|
|
155
|
+
6a. **Review-before-code digest.** Before planning, render the compact human review:
|
|
204
156
|
`Intent` (one sentence), `Done means` (top acceptance/scenario IDs), `Scope/risk` (what is in/out
|
|
205
157
|
plus the hard gates), and `Build exactly this?` (yes → next phase; no → revise now). The digest
|
|
206
158
|
is a view over `spec.md`, not a new artifact. **Stop** after the digest.
|
|
207
159
|
|
|
208
|
-
> **Mid-flight discipline.**
|
|
160
|
+
> **Mid-flight discipline.** Do not skip investigation, gap resolution, or placement
|
|
161
|
+
> decisions. See [`anti-patterns`](reference/anti-patterns.md).
|
|
209
162
|
|
|
210
163
|
## Output
|
|
211
164
|
|
|
@@ -216,12 +169,12 @@ Default success shape:
|
|
|
216
169
|
Done: spec ready for <slug>; placement decided and gaps closed.
|
|
217
170
|
Changed: spec.md, decisions.md, assumptions.md, questions.md, references/ <updated|n/a>
|
|
218
171
|
Evidence: checklists passed; grammar <valid | n/a flat acceptance>; design brief <path | n/a>
|
|
219
|
-
Open: <none | n non-blocking questions | Alternative: $rite-
|
|
220
|
-
Next: $rite-
|
|
172
|
+
Open: <none | n non-blocking questions | Alternative: $rite-quick if express-lane eligible>; review digest: intent + done-means + scope/risk rendered
|
|
173
|
+
Next: $rite-clarify
|
|
221
174
|
Record: .devrites/work/<slug>/spec.md
|
|
222
|
-
↻ Hygiene: /clear before
|
|
175
|
+
↻ Hygiene: /clear before $rite-clarify; $rite-handoff if away > a few hours
|
|
223
176
|
```
|
|
224
|
-
If a workspace with the slug already exists, update its spec rather than overwriting
|
|
177
|
+
If a workspace with the slug already exists, update its spec rather than overwriting it,
|
|
225
178
|
and **show the human a short diff of what changed** in `spec.md` (acceptance criteria added /
|
|
226
179
|
removed / reworded) before proceeding. A spec edit reviewed as a diff catches silent scope
|
|
227
180
|
drift that a full re-read buries; this is the spec-review view (`$rite-spec --review` renders
|
|
@@ -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
|
```
|