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
|
@@ -1,180 +1,210 @@
|
|
|
1
|
-
# Forge:
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
read-only judge
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
plan
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
##
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
# Forge: isolated candidate builds
|
|
2
|
+
|
|
3
|
+
Forge is the rare `$rite-build` branch for a vetted architecture fork. Two or
|
|
4
|
+
three wrights implement the same slice in separate, manifest-owned worktrees; a
|
|
5
|
+
read-only judge selects one; only that candidate lands.
|
|
6
|
+
|
|
7
|
+
The engine manifest (`devrites-forge/v1`) is the sole authority for run,
|
|
8
|
+
candidate, branch, worktree, worker, merge, verification, and cleanup identity.
|
|
9
|
+
`forge-report.md`, names, paths, and prompts are records or inputs, never
|
|
10
|
+
ownership.
|
|
11
|
+
|
|
12
|
+
## Entry contract
|
|
13
|
+
|
|
14
|
+
`$rite-vet` may set `Forge: yes` only when the slice has all three:
|
|
15
|
+
|
|
16
|
+
```markdown
|
|
17
|
+
Forge: yes — <why building the wrong architecture costs more than 2–3 attempts>
|
|
18
|
+
Forge strategies: A=<complete approach> | B=<complete approach> [| C=<complete approach>]
|
|
19
|
+
Forge scorecard: acceptance=<AC-### list>; test-plan=<exact test-plan.md rows/commands>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Strategies are distinct seams, data shapes, reuse choices, or algorithms, not
|
|
23
|
+
wording variants. The scorecard covers every slice AC and every required test.
|
|
24
|
+
Otherwise set `Forge: no`, both Forge detail fields to `none`, and dispatch one
|
|
25
|
+
wright.
|
|
26
|
+
|
|
27
|
+
Before `forge plan`, also require a Git checkout and a real host adapter that can
|
|
28
|
+
declare `manifest-env-v1` and:
|
|
29
|
+
|
|
30
|
+
- start each candidate in its exact worktree;
|
|
31
|
+
- expose its stable worker ID, live PID, and matching process-start token before
|
|
32
|
+
its first tool call;
|
|
33
|
+
- set all five Forge binding variables; and
|
|
34
|
+
- end that process before extraction.
|
|
35
|
+
|
|
36
|
+
Never claim that binding on the adapter's behalf. Without it, an unbound
|
|
37
|
+
`forge plan` returns typed `degraded` / `serial` JSON and creates nothing; accept
|
|
38
|
+
that result and use the normal serial wright.
|
|
39
|
+
|
|
40
|
+
## Lifecycle
|
|
41
|
+
|
|
42
|
+
### 1. Plan, then snapshot
|
|
43
|
+
|
|
44
|
+
Write the normal root-owned `.wright-allowlist`. Hash the complete scorecard
|
|
45
|
+
owners, not excerpts:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
SLUG="$(cat .devrites/ACTIVE)"
|
|
49
|
+
WORK=".devrites/work/$SLUG"
|
|
50
|
+
hash_file() {
|
|
51
|
+
if command -v shasum >/dev/null 2>&1; then
|
|
52
|
+
shasum -a 256 "$1" | awk '{print $1}'
|
|
53
|
+
elif command -v sha256sum >/dev/null 2>&1; then
|
|
54
|
+
sha256sum "$1" | awk '{print $1}'
|
|
55
|
+
else
|
|
56
|
+
return 127
|
|
57
|
+
fi
|
|
58
|
+
}
|
|
59
|
+
ACCEPTANCE_HASH="$(hash_file "$WORK/spec.md")"
|
|
60
|
+
TEST_PLAN_HASH="$(hash_file "$WORK/test-plan.md")"
|
|
61
|
+
|
|
62
|
+
devrites-engine forge plan "<SLICE-###>" "$SLUG" \
|
|
63
|
+
--strategy "A=<strategy A>" \
|
|
64
|
+
--strategy "B=<strategy B>" \
|
|
65
|
+
--acceptance-hash "$ACCEPTANCE_HASH" \
|
|
66
|
+
--test-plan-hash "$TEST_PLAN_HASH" \
|
|
67
|
+
--worker-binding=manifest-env-v1
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Add `--strategy "C=<strategy C>"` only for a third vetted strategy. Both hashes
|
|
71
|
+
must be the complete 64-hex SHA-256 values of the current files. The command
|
|
72
|
+
shown is only for an adapter that really provides the binding. Otherwise omit
|
|
73
|
+
`--worker-binding`; the engine returns the side-effect-free serial result.
|
|
74
|
+
|
|
75
|
+
Read the JSON result:
|
|
76
|
+
|
|
77
|
+
- `status: planned`: take the run ID and every candidate path from its
|
|
78
|
+
manifest; then run `devrites-engine reconcile snapshot`.
|
|
79
|
+
- `status: degraded, mode: serial`: record the reason and use one normal
|
|
80
|
+
wright. The engine created no Forge state.
|
|
81
|
+
- non-zero exit: classify it as a technical defect. Preserve any manifest
|
|
82
|
+
state and recover it; never infer paths or silently start a serial writer.
|
|
83
|
+
|
|
84
|
+
`forge plan` must precede `reconcile snapshot`: validated operational manifests
|
|
85
|
+
are reconciliation-private, while `forge-report.md` and every other `.forge`
|
|
86
|
+
path remain visible.
|
|
87
|
+
|
|
88
|
+
### 2. Bind and dispatch every candidate
|
|
89
|
+
|
|
90
|
+
For each candidate, the host starts a fresh worker at the manifest's exact
|
|
91
|
+
`worktree`, pauses it before its first tool call, and obtains the engine token
|
|
92
|
+
for its live PID:
|
|
58
93
|
|
|
59
94
|
```bash
|
|
60
|
-
|
|
61
|
-
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || echo "(not a git repo — forge needs git for isolation; degrade to single-path)"
|
|
62
|
-
BASE="$(git rev-parse --abbrev-ref HEAD)"
|
|
63
|
-
# one isolated worktree per candidate (parallel-capable); falls back to branches if worktrees are unavailable
|
|
64
|
-
for C in A B; do
|
|
65
|
-
git worktree add ".devrites/work/$SLUG/forge/cand-$C" -b "forge/$SLUG/cand-$C" 2>/dev/null \
|
|
66
|
-
|| git branch "forge/$SLUG/cand-$C" "$BASE"
|
|
67
|
-
done
|
|
95
|
+
devrites-engine forge process-token "$WORKER_PID"
|
|
68
96
|
```
|
|
69
97
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
[`wright-dispatch.md`](wright-dispatch.md), with **one** line added naming its assigned strategy
|
|
73
|
-
and its isolated tree:
|
|
98
|
+
Read `process_start` from the JSON; never reproduce the token algorithm in
|
|
99
|
+
shell. Record that exact identity, then release the worker:
|
|
74
100
|
|
|
101
|
+
```bash
|
|
102
|
+
devrites-engine forge record "$RUN_ID" "$CANDIDATE" started \
|
|
103
|
+
--worker-id "$WORKER_ID" \
|
|
104
|
+
--pid "$WORKER_PID" \
|
|
105
|
+
--process-start "$PROCESS_START"
|
|
75
106
|
```
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
107
|
+
|
|
108
|
+
The candidate process receives this all-or-none environment:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
DEVRITES_FORGE_RUN_ID=<manifest run_id>
|
|
112
|
+
DEVRITES_FORGE_CANDIDATE=<A|B|C>
|
|
113
|
+
DEVRITES_FORGE_WORKER_ID=<recorded worker id>
|
|
114
|
+
DEVRITES_FORGE_WORKER_PID=<recorded live pid>
|
|
115
|
+
DEVRITES_FORGE_PROCESS_START=<recorded start token>
|
|
81
116
|
```
|
|
82
117
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
candidate diffs and the scorecard inputs (slice acceptance, `test-plan.md`, `.devrites/principles.md`,
|
|
91
|
-
the anti-slop charter). It scores each candidate, ranks them, names the **winner** and the
|
|
92
|
-
specific runner-up ideas worth grafting, and returns the structured verdict. The judge **never
|
|
93
|
-
writes code**. It reads the diffs and returns findings, like every reviewer agent. If sub-agent
|
|
94
|
-
dispatch is unavailable, do the judge's rubric pass yourself in a fresh read, discarding your
|
|
95
|
-
authoring reasoning (a flagged fallback, not an independent judgment).
|
|
96
|
-
|
|
97
|
-
### F5: Land the winner, graft sparingly
|
|
98
|
-
Apply **only** the winner's diff to the working tree (merge its worktree / cherry-pick its
|
|
99
|
-
branch). If the judge named a cheap, specific improvement in a runner-up, graft it by
|
|
100
|
-
**continuing the winning wright once** with that instruction: never hand-merge two candidates'
|
|
101
|
-
code (that re-creates the incoherent-tree failure the invariant exists to prevent). The landed
|
|
102
|
-
tree has exactly one author: the winner (plus its own grafted follow-up).
|
|
103
|
-
|
|
104
|
-
### F6: Write `forge-report.md`
|
|
105
|
-
The durable record of the competition (template below). One per forged slice; archived with the
|
|
106
|
-
feature.
|
|
107
|
-
|
|
108
|
-
### F7: Clean up, then return to the cycle
|
|
109
|
-
Remove only clean losing worktrees / delete their candidate branches. If a losing worktree is dirty,
|
|
110
|
-
preserve it and record the path in `forge-report.md`; never `--force` away unlanded work.
|
|
118
|
+
Its cwd is the exact manifest worktree. Give it the normal
|
|
119
|
+
[`wright-dispatch.md`](wright-dispatch.md) packet plus its one recorded
|
|
120
|
+
strategy. The same project-relative allowlist applies inside that candidate
|
|
121
|
+
tree. Any missing, partial, stale, wrong-tree, wrong-branch, or wrong-worker
|
|
122
|
+
binding is a denial, not a reason to widen scope.
|
|
123
|
+
|
|
124
|
+
After the worker returns and its process exits:
|
|
111
125
|
|
|
112
126
|
```bash
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if [ -d "$WT/.git" ] || git -C "$WT" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
117
|
-
if git -C "$WT" diff --quiet && git -C "$WT" diff --cached --quiet; then
|
|
118
|
-
git worktree remove "$WT" 2>/dev/null || true
|
|
119
|
-
git branch -D "forge/$SLUG/cand-$C" 2>/dev/null || true
|
|
120
|
-
else
|
|
121
|
-
echo "preserved dirty forge worktree: $WT"
|
|
122
|
-
fi
|
|
123
|
-
else
|
|
124
|
-
git branch -D "forge/$SLUG/cand-$C" 2>/dev/null || true
|
|
125
|
-
fi
|
|
126
|
-
done
|
|
127
|
+
devrites-engine forge record "$RUN_ID" "$CANDIDATE" finished \
|
|
128
|
+
--worker-id "$WORKER_ID"
|
|
129
|
+
devrites-engine forge extract "$RUN_ID" "$CANDIDATE"
|
|
127
130
|
```
|
|
128
131
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
Extraction makes the complete tracked, staged, unstaged, untracked, deletion,
|
|
133
|
+
mode, and symlink delta reachable by the recorded candidate commit and binds
|
|
134
|
+
its SHA-256. Ignored, dirty, mismatched, live, or ambiguous content is
|
|
135
|
+
preserved. A crashed worker is recorded `failed`; the run stays preserved for
|
|
136
|
+
technical recovery and does not degrade in place.
|
|
132
137
|
|
|
133
|
-
|
|
138
|
+
### 3. Judge, record, and merge
|
|
134
139
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
140
|
+
After **every** candidate is extracted, dispatch
|
|
141
|
+
[`devrites-forge-judge`](.codex/agents/devrites-forge-judge.toml) in fresh,
|
|
142
|
+
read-only context. Give it the manifest, slice scorecard, base commit, and each
|
|
143
|
+
recorded candidate commit/tree/delta hash. It scores the immutable diffs against
|
|
144
|
+
the same acceptance, tests, principles, reuse, simplicity, and anti-slop bar.
|
|
138
145
|
|
|
139
|
-
|
|
140
|
-
| # | Strategy | Gates | Score | Notes |
|
|
141
|
-
|---|---|---|---|---|
|
|
142
|
-
| A | <approach> | green/red | <judge score> | <one line> |
|
|
143
|
-
| B | <approach> | green/red | <judge score> | <one line> |
|
|
146
|
+
For one qualifying winner:
|
|
144
147
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
Discarded: <the losing approaches + the one-line reason each lost — load-bearing for a later
|
|
150
|
-
slice that might be tempted to retry one>.
|
|
148
|
+
```bash
|
|
149
|
+
devrites-engine forge record "$RUN_ID" winner "<A|B|C>" \
|
|
150
|
+
--worker-id "<judge result id>"
|
|
151
|
+
devrites-engine forge merge "$RUN_ID" "<A|B|C>"
|
|
151
152
|
```
|
|
152
153
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
Merge revalidates every extract and the unchanged primary baseline, performs a
|
|
155
|
+
no-side-effect conflict preflight, then fast-forwards to exactly the recorded
|
|
156
|
+
winner. A mismatch or conflict leaves the primary tree unchanged. Runner-up
|
|
157
|
+
ideas remain report notes; never hand-merge candidates or mutate the landed
|
|
158
|
+
winner inside this run.
|
|
156
159
|
|
|
157
|
-
|
|
160
|
+
If no candidate qualifies, preserve the run and route the actual finding:
|
|
161
|
+
product/acceptance ambiguity returns to planning; implementation or proof
|
|
162
|
+
defects use bounded technical recovery. Retry authorization is not a human
|
|
163
|
+
decision.
|
|
158
164
|
|
|
159
|
-
|
|
160
|
-
the slice budget (`devrites-engine tick-afk` once per candidate dispatched), so a forge slice can exhaust the
|
|
161
|
-
cap faster, that is intended back-pressure, not a bug.
|
|
162
|
-
- **Gates are unchanged.** Forge changes *how many candidates build*, never *what pauses*. An
|
|
163
|
-
irreversible-risk item, a blocking/escalating gate, or a red-on-completion in **any** candidate
|
|
164
|
-
pauses per [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md) exactly as single-path. AFK widens what is
|
|
165
|
-
automatic, never what is irreversible: forge included.
|
|
166
|
-
- **Stuck loop still applies.** Re-dispatching the same candidate without progress trips
|
|
167
|
-
`devrites-engine stuck` the same as a single wright.
|
|
165
|
+
### 4. Verify, clean, then record
|
|
168
166
|
|
|
169
|
-
|
|
167
|
+
Hand the winner's structured artifact to the normal cycle. Run immediate
|
|
168
|
+
reconciliation, doubt every stood decision, and complete test-integrity,
|
|
169
|
+
package-existence, targeted, browser, and other slice proof. Only after every
|
|
170
|
+
required gate is green:
|
|
170
171
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
172
|
+
```bash
|
|
173
|
+
devrites-engine forge record "$RUN_ID" verification verified \
|
|
174
|
+
--worker-id "<verifier result id>"
|
|
175
|
+
devrites-engine forge cleanup "$RUN_ID"
|
|
176
|
+
devrites-engine reconcile close
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Cleanup reads only the manifest. It removes an exact terminal, dead, clean,
|
|
180
|
+
reachable worktree; preserves live, dirty, mismatched, unreachable, or
|
|
181
|
+
ambiguous state with a reason; and never deletes candidate branches.
|
|
182
|
+
|
|
183
|
+
Now write `.devrites/work/<slug>/forge-report.md` alongside the normal Build
|
|
184
|
+
records. The report is written after reconciliation and verification, includes
|
|
185
|
+
cleanup preservation results, and never authorizes merge, cleanup, or reap.
|
|
186
|
+
|
|
187
|
+
```markdown
|
|
188
|
+
# Forge report: <SLICE-### — name>
|
|
189
|
+
Run: <run-id> · scorecard: <acceptance hash> / <test-plan hash>
|
|
190
|
+
|
|
191
|
+
## Candidates
|
|
192
|
+
| # | Strategy | Gates | Delta SHA-256 | Judge result |
|
|
193
|
+
|---|---|---|---|---|
|
|
194
|
+
| A | <approach> | <green/red> | <hash> | <score + decisive evidence> |
|
|
195
|
+
| B | <approach> | <green/red> | <hash> | <score + decisive evidence> |
|
|
196
|
+
|
|
197
|
+
## Verdict
|
|
198
|
+
Winner: <A|B|C> — <rubric-based reason>
|
|
199
|
+
Discarded: <one reason per loser>
|
|
200
|
+
Runner-up notes: <ideas for later | none>
|
|
201
|
+
Cleanup: <complete | preserved candidate + exact engine reason>
|
|
202
|
+
```
|
|
175
203
|
|
|
176
|
-
##
|
|
204
|
+
## Interrupted runs
|
|
177
205
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
206
|
+
Use `devrites-engine forge reap [slug]` only for recovery. It enumerates
|
|
207
|
+
validated manifests rather than matching directories or branch names. It applies the
|
|
208
|
+
same exact identity, liveness, cleanliness, and reachability checks as cleanup.
|
|
209
|
+
Foreign, live, dirty, malformed, mismatched, or ambiguous state is reported and
|
|
210
|
+
preserved. Never infer a path, suppress a failure, or delete a branch.
|
|
@@ -9,8 +9,8 @@ The orchestrator (`$rite-build`) gates and records; the **wright** writes. See
|
|
|
9
9
|
```
|
|
10
10
|
SELECT → orchestrator: restate slice goal + acceptance + scope boundary; HITL gate (pause pre-code)
|
|
11
11
|
(SHAPE) → orchestrator: if UI and no design-brief.md, shape it (devrites-ux-shape) before dispatch
|
|
12
|
-
(FORGE) → orchestrator: if slice is Forge: yes,
|
|
13
|
-
|
|
12
|
+
(FORGE) → orchestrator: if slice is Forge: yes, engine plan → snapshot → bound isolated
|
|
13
|
+
candidates → extract → judge → record + merge one winner, then continue at DOUBT (forge.md)
|
|
14
14
|
DISPATCH → hand the slice contract to devrites-slice-wright (fresh context). Inside the wright:
|
|
15
15
|
ORIENT → load only the files this slice touches; learn the project's idiom; reuse-first
|
|
16
16
|
(RED) → if behavior change: write the failing test first
|
|
@@ -18,7 +18,8 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
18
18
|
VERIFY → targeted tests (+ types/lint/build); fail-on-red; return artifact — code + tests only
|
|
19
19
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
20
20
|
PROVE → orchestrator: fail-on-red check on the wright's gates; browser proof for UI
|
|
21
|
-
RECORD → orchestrator:
|
|
21
|
+
RECORD → orchestrator: after green verification, Forge cleanup/report if used; then
|
|
22
|
+
state.md, evidence.md, touched-files.md (the canonical writer)
|
|
22
23
|
(CHECKPOINT) → orchestrator: if .devrites/CHECKPOINT is set, commit the proven slice
|
|
23
24
|
local-only as WIP(<slug>) with a [devrites-context] body → survives a crash (checkpoint.md)
|
|
24
25
|
STOP → report + recommend next; do not start slice N+1
|