devrites 3.0.7 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +82 -50
- package/SECURITY.md +31 -29
- package/docs/adr/0001-go-engine-as-control-plane.md +1 -1
- package/docs/adr/0002-dual-host-harness.md +1 -1
- package/docs/adr/0004-state-schema-phases-sections.md +1 -2
- package/docs/adr/0006-clock-seam-and-engine-ci-gates.md +3 -4
- package/docs/adr/0009-prebuild-decision-coverage-and-readiness.md +67 -0
- package/docs/adr/0010-agent-first-fresh-context-orchestration.md +71 -0
- package/docs/adr/0011-define-plan-transition-rights.md +28 -0
- package/docs/adr/0012-semantic-workspace-upgrades.md +77 -0
- package/docs/adr/README.md +4 -0
- package/docs/agents/triage-labels.md +7 -7
- package/docs/architecture.md +179 -141
- package/docs/cli.md +47 -12
- package/docs/command-map.md +61 -38
- package/docs/engine/agent-contract.md +92 -15
- package/docs/engine/commands.md +248 -72
- package/docs/engine/state-schema.md +52 -23
- package/docs/engine/workspace-schema.md +103 -15
- package/docs/extensions.md +1 -1
- package/docs/flow.md +86 -51
- package/docs/harness-compliance.md +29 -5
- package/docs/orchestration.md +107 -79
- package/docs/quick-reference.md +11 -3
- package/docs/release.md +4 -3
- package/docs/skills.md +67 -38
- package/docs/usage.md +84 -39
- package/engine/cmd/releasepack/main.go +219 -0
- package/engine/cmd/releasepack/main_test.go +170 -0
- package/engine/commands.go +170 -23
- package/engine/git_guard.go +187 -0
- package/engine/git_guard_test.go +283 -0
- package/engine/hookpolicy.go +53 -55
- package/engine/hookpolicy_test.go +91 -1
- package/engine/hooks.go +296 -75
- package/engine/hooks_events_test.go +276 -6
- package/engine/hooks_workspace.go +640 -159
- package/engine/internal/devritespaths/paths.go +65 -10
- package/engine/internal/devritespaths/paths_test.go +110 -0
- package/engine/internal/doctor/doctor.go +153 -23
- package/engine/internal/doctor/doctor_test.go +74 -0
- package/engine/internal/forge/forge.go +940 -0
- package/engine/internal/forge/forge_test.go +576 -0
- package/engine/internal/forge/git.go +245 -0
- package/engine/internal/forge/liveness_unix.go +48 -0
- package/engine/internal/forge/liveness_windows.go +67 -0
- package/engine/internal/forge/manifest.go +402 -0
- package/engine/internal/gate/gate.go +90 -71
- package/engine/internal/gate/gate_test.go +71 -2
- package/engine/internal/harness/compliance.go +18 -24
- package/engine/internal/harness/harness.go +37 -44
- package/engine/internal/harness/harness_test.go +21 -5
- package/engine/internal/install/install.go +486 -38
- package/engine/internal/install/install_test.go +383 -10
- package/engine/internal/iohooks/iohooks.go +350 -59
- package/engine/internal/iohooks/iohooks_test.go +421 -1
- package/engine/internal/lib/buildreadiness.go +43 -18
- package/engine/internal/lib/clarifyreturn.go +91 -0
- package/engine/internal/lib/clarifyreturn_test.go +123 -0
- package/engine/internal/lib/context.go +54 -15
- package/engine/internal/lib/cursor_compat_test.go +8 -0
- package/engine/internal/lib/extensions.go +2 -3
- package/engine/internal/lib/gitauthority.go +601 -0
- package/engine/internal/lib/gitauthority_test.go +346 -0
- package/engine/internal/lib/jsonout.go +25 -11
- package/engine/internal/lib/jsonout_test.go +16 -0
- package/engine/internal/lib/lanes.go +14 -8
- package/engine/internal/lib/observability_test.go +358 -0
- package/engine/internal/lib/packageexistence.go +151 -35
- package/engine/internal/lib/packageexistence_test.go +163 -0
- package/engine/internal/lib/progress.go +11 -9
- package/engine/internal/lib/provenance.go +462 -0
- package/engine/internal/lib/provenance_test.go +154 -0
- package/engine/internal/lib/readiness_contract.json +118 -0
- package/engine/internal/lib/readinessartifact.go +533 -0
- package/engine/internal/lib/readinessartifact_test.go +422 -0
- package/engine/internal/lib/reconcile.go +712 -88
- package/engine/internal/lib/reconcile_test.go +335 -16
- package/engine/internal/lib/recoveryattempts.go +298 -0
- package/engine/internal/lib/recoveryattempts_test.go +215 -0
- package/engine/internal/lib/resolve.go +23 -19
- package/engine/internal/lib/runbook_context_test.go +20 -0
- package/engine/internal/lib/session.go +701 -9
- package/engine/internal/lib/session_test.go +80 -13
- package/engine/internal/lib/testintegrity.go +33 -37
- package/engine/internal/lib/testintegrity_test.go +63 -1
- package/engine/internal/migrate/migrate.go +81 -1
- package/engine/internal/migrate/migrate_test.go +22 -1
- package/engine/internal/reason/reason.go +180 -0
- package/engine/internal/reason/reason_test.go +35 -0
- package/engine/internal/rootfacts/facts.go +466 -0
- package/engine/internal/rootfacts/facts_test.go +306 -0
- package/engine/internal/safepath/safepath.go +55 -0
- package/engine/internal/safepath/safepath_test.go +69 -0
- package/engine/internal/safepath/safepath_windows_test.go +26 -0
- package/engine/internal/state/clarify_transition.go +165 -0
- package/engine/internal/state/clarify_transition_test.go +130 -0
- package/engine/internal/state/cmd/workflowmanifest/main.go +12 -8
- package/engine/internal/state/cursor.go +58 -0
- package/engine/internal/state/cursor_test.go +42 -1
- package/engine/internal/state/feature.go +35 -48
- package/engine/internal/state/schema.go +90 -37
- package/engine/internal/state/snapshot.go +18 -2
- package/engine/internal/state/state_test.go +187 -7
- package/engine/internal/state/status.go +48 -11
- package/engine/internal/state/workflow_manifest.json +231 -50
- package/engine/internal/toolpolicy/classifier.go +533 -0
- package/engine/internal/toolpolicy/classifier_test.go +424 -0
- package/engine/internal/toolpolicy/git.go +616 -0
- package/engine/internal/toolpolicy/scanner.go +382 -0
- package/engine/main.go +160 -77
- package/engine/observability_cli_test.go +52 -0
- package/engine/root_routing_test.go +277 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=legacycontract.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noclarify.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=novet.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=stalevet.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +1 -1
- package/engine/testdata/golden/TestParityBuildReadiness/arg=vetnotready.golden +1 -0
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +1 -1
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +1 -1
- package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot-no-allowlist.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-denied.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +1 -1
- package/engine/tests/adr_0011_define_plan_test.go +30 -0
- package/engine/tests/budget_test.go +19 -8
- package/engine/tests/concurrency_cli_test.go +7 -1
- package/engine/tests/doctor_cli_test.go +148 -2
- package/engine/tests/forge_cli_test.go +463 -0
- package/engine/tests/gate_test.go +63 -8
- package/engine/tests/hook_test.go +260 -8
- package/engine/tests/hooks_io_test.go +94 -3
- package/engine/tests/json_contract_test.go +127 -2
- package/engine/tests/migrate_cli_test.go +2 -2
- package/engine/tests/parity_buildreadiness_test.go +167 -10
- package/engine/tests/parity_learnings_test.go +16 -17
- package/engine/tests/parity_reconcile_test.go +20 -17
- package/engine/tests/parity_resolve_test.go +12 -11
- package/engine/tests/parity_test.go +21 -17
- package/pack/.claude/agents/devrites-code-reviewer.md +62 -48
- package/pack/.claude/agents/devrites-devex-reviewer.md +69 -53
- package/pack/.claude/agents/devrites-doubt-reviewer.md +29 -22
- package/pack/.claude/agents/devrites-evidence-scout.md +69 -0
- package/pack/.claude/agents/devrites-forge-judge.md +74 -61
- package/pack/.claude/agents/devrites-frontend-reviewer.md +48 -39
- package/pack/.claude/agents/devrites-performance-reviewer.md +49 -40
- package/pack/.claude/agents/devrites-plan-drafter.md +73 -0
- package/pack/.claude/agents/devrites-plan-reviewer.md +80 -47
- package/pack/.claude/agents/devrites-proof-runner.md +74 -0
- package/pack/.claude/agents/devrites-retrospector.md +48 -45
- package/pack/.claude/agents/devrites-security-auditor.md +46 -36
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +50 -46
- package/pack/.claude/agents/devrites-slice-wright.md +153 -165
- package/pack/.claude/agents/devrites-spec-reviewer.md +34 -32
- package/pack/.claude/agents/devrites-strategy-reviewer.md +63 -34
- package/pack/.claude/agents/devrites-test-analyst.md +40 -30
- package/pack/.claude/agents/devrites-upgrade-planner.md +100 -0
- package/pack/.claude/settings.json +2 -1
- package/pack/.claude/skills/devrites-audit/SKILL.md +40 -61
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +24 -13
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/.claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/.claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/.claude/skills/devrites-doubt/SKILL.md +25 -17
- package/pack/.claude/skills/devrites-interview/SKILL.md +53 -52
- package/pack/.claude/skills/devrites-lib/SKILL.md +12 -9
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +4 -2
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/.claude/skills/devrites-lib/reference/standards/agents.md +200 -190
- package/pack/.claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/.claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/.claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/.claude/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/.claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/.claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/.claude/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/.claude/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/.claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/.claude/skills/rite/SKILL.md +10 -6
- package/pack/.claude/skills/rite/reference/menu.md +13 -7
- package/pack/.claude/skills/rite-adopt/SKILL.md +33 -37
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +33 -28
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/.claude/skills/rite-build/SKILL.md +35 -30
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +41 -39
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/.claude/skills/rite-build/reference/forge.md +186 -156
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/.claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/.claude/skills/rite-clarify/SKILL.md +90 -0
- package/pack/.claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/.claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/.claude/skills/rite-define/SKILL.md +58 -32
- package/pack/.claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/.claude/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +47 -16
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +4 -0
- package/pack/.claude/skills/rite-polish/SKILL.md +27 -23
- package/pack/.claude/skills/rite-prototype/SKILL.md +25 -26
- package/pack/.claude/skills/rite-prove/SKILL.md +27 -17
- package/pack/.claude/skills/rite-resolve/SKILL.md +12 -11
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/.claude/skills/rite-review/SKILL.md +37 -28
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/.claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/.claude/skills/rite-spec/SKILL.md +84 -135
- package/pack/.claude/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/.claude/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/.claude/skills/rite-temper/SKILL.md +62 -47
- package/pack/.claude/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/.claude/skills/rite-upgrade/SKILL.md +125 -0
- package/pack/.claude/skills/rite-vet/SKILL.md +114 -113
- package/pack/.claude/skills/rite-vet/reference/artifacts.md +50 -9
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +39 -37
- package/pack/generated/claude/agents/devrites-code-reviewer.md +62 -48
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +69 -53
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +29 -22
- package/pack/generated/claude/agents/devrites-evidence-scout.md +69 -0
- package/pack/generated/claude/agents/devrites-forge-judge.md +74 -61
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +48 -39
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +49 -40
- package/pack/generated/claude/agents/devrites-plan-drafter.md +73 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +80 -47
- package/pack/generated/claude/agents/devrites-proof-runner.md +74 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +48 -45
- package/pack/generated/claude/agents/devrites-security-auditor.md +46 -36
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +50 -46
- package/pack/generated/claude/agents/devrites-slice-wright.md +153 -165
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +34 -32
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +63 -34
- package/pack/generated/claude/agents/devrites-test-analyst.md +40 -30
- package/pack/generated/claude/agents/devrites-upgrade-planner.md +100 -0
- package/pack/generated/claude/settings.json +2 -1
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +40 -61
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +24 -13
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +25 -17
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +53 -52
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +12 -9
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +4 -2
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +200 -190
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +23 -22
- package/pack/generated/claude/skills/rite/SKILL.md +10 -6
- package/pack/generated/claude/skills/rite/reference/menu.md +13 -7
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +33 -37
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +33 -28
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/generated/claude/skills/rite-build/SKILL.md +35 -30
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +41 -39
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/generated/claude/skills/rite-build/reference/forge.md +186 -156
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +10 -4
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/claude/skills/rite-clarify/SKILL.md +90 -0
- package/pack/generated/claude/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +35 -25
- package/pack/generated/claude/skills/rite-define/SKILL.md +58 -32
- package/pack/generated/claude/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/claude/skills/rite-plan/SKILL.md +47 -16
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +4 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +27 -23
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +25 -26
- package/pack/generated/claude/skills/rite-prove/SKILL.md +27 -17
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +12 -11
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +37 -28
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/generated/claude/skills/rite-spec/SKILL.md +84 -135
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/generated/claude/skills/rite-temper/SKILL.md +62 -47
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/generated/claude/skills/rite-upgrade/SKILL.md +125 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +114 -113
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +50 -9
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +39 -37
- package/pack/generated/codex/AGENTS.md +5 -2
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +69 -47
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +75 -51
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +35 -20
- package/pack/generated/codex/agents/devrites-evidence-scout.toml +75 -0
- package/pack/generated/codex/agents/devrites-forge-judge.toml +80 -59
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +54 -37
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +55 -38
- package/pack/generated/codex/agents/devrites-plan-drafter.toml +79 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +82 -47
- package/pack/generated/codex/agents/devrites-proof-runner.toml +80 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +54 -43
- package/pack/generated/codex/agents/devrites-security-auditor.toml +53 -35
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +56 -44
- package/pack/generated/codex/agents/devrites-slice-wright.toml +159 -163
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +40 -30
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +65 -34
- package/pack/generated/codex/agents/devrites-test-analyst.toml +46 -28
- package/pack/generated/codex/agents/devrites-upgrade-planner.toml +106 -0
- package/pack/generated/codex/hooks.json +4 -14
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +47 -64
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +31 -16
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +24 -21
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +34 -6
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +2 -2
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +32 -20
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +60 -55
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +19 -12
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +4 -2
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +82 -137
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +8 -1
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +38 -55
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +53 -27
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +200 -190
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +5 -15
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +27 -58
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +16 -52
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +2 -10
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +18 -61
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +23 -18
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +17 -57
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +4 -33
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +4 -20
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +3 -14
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +9 -25
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +0 -9
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +1 -3
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +17 -7
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +1 -27
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +46 -50
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +40 -10
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +7 -3
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +29 -24
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite/SKILL.md +21 -13
- package/pack/generated/codex/skills/rite/reference/menu.md +13 -7
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +40 -40
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +40 -31
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +21 -21
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +15 -6
- package/pack/generated/codex/skills/rite-build/SKILL.md +42 -33
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +41 -39
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +10 -0
- package/pack/generated/codex/skills/rite-build/reference/forge.md +186 -156
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +4 -3
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +96 -175
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +10 -4
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +129 -134
- package/pack/generated/codex/skills/rite-clarify/SKILL.md +106 -0
- package/pack/generated/codex/skills/rite-clarify/reference/decision-coverage.md +61 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +42 -28
- package/pack/generated/codex/skills/rite-customize/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-define/SKILL.md +65 -35
- package/pack/generated/codex/skills/rite-define/reference/gates.md +16 -15
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +18 -8
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-explain/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-frame/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +22 -24
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-learn/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-plan/SKILL.md +54 -19
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +5 -1
- package/pack/generated/codex/skills/rite-polish/SKILL.md +34 -26
- package/pack/generated/codex/skills/rite-pov/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +32 -29
- package/pack/generated/codex/skills/rite-prove/SKILL.md +34 -20
- package/pack/generated/codex/skills/rite-quick/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +19 -14
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +3 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +44 -31
- package/pack/generated/codex/skills/rite-seal/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +27 -92
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +13 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +31 -36
- package/pack/generated/codex/skills/rite-spec/SKILL.md +91 -138
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +37 -33
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +6 -2
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +25 -24
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +9 -2
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +13 -3
- package/pack/generated/codex/skills/rite-status/SKILL.md +7 -3
- package/pack/generated/codex/skills/rite-temper/SKILL.md +69 -50
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +24 -22
- package/pack/generated/codex/skills/rite-upgrade/SKILL.md +141 -0
- package/pack/generated/codex/skills/rite-upgrade/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +121 -116
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +50 -9
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +40 -38
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +7 -3
- package/package.json +1 -1
- package/scripts/build-release-tarball.sh +32 -15
- package/scripts/check-authority-drift.py +125 -0
- package/scripts/check-instruction-size-baseline.mjs +19 -11
- package/scripts/check-invocation-integrity.py +2 -0
- package/scripts/codex-generate.sh +69 -33
- package/scripts/grade-feature.sh +121 -40
- package/scripts/live-hosts/agent-result.schema.json +230 -0
- package/scripts/live-hosts/claude.sh +87 -0
- package/scripts/live-hosts/codex.sh +81 -0
- package/scripts/live-hosts/common.sh +113 -0
- package/scripts/live-hosts/fake-host.py +264 -0
- package/scripts/live-hosts/host-transport.py +287 -0
- package/scripts/release-check.sh +5 -1
- package/scripts/run-agent-contract-evals.py +1380 -0
- package/scripts/run-behavioral-evals.sh +24 -30
- package/scripts/run-evals.sh +1 -5
- package/scripts/run-live-behavioral-evals.py +1274 -144
- package/scripts/run-outcome-evals.sh +445 -88
- package/scripts/run-tests.mjs +30 -2
- package/scripts/skills-inventory.mjs +1 -1
- package/scripts/validate-workflow-security.py +39 -20
- package/scripts/validate-workspace-schema.py +362 -10
- package/scripts/validate.sh +21 -15
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +0 -1
- /package/engine/testdata/golden/{TestParityReconcile/check-no-claimed.golden → TestParityBuildReadiness/arg=clarifyopen.golden} +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# ADR-0012: Separate semantic workspace upgrades from structural migration
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-07-24
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Updating DevRites replaces the installed engine, skills, agents, and hooks. It
|
|
9
|
+
does not prove that an active workspace was planned under the rules shipped by
|
|
10
|
+
that update.
|
|
11
|
+
|
|
12
|
+
The existing `devrites-engine migrate` command has a narrower job: it repairs
|
|
13
|
+
workspace layout, aliases, and state schema. Extending it to rewrite plans would
|
|
14
|
+
mix structural storage changes with product decisions and could damage completed
|
|
15
|
+
work.
|
|
16
|
+
|
|
17
|
+
This distinction matters most for long-running workspaces. A plan may still be
|
|
18
|
+
internally consistent while carrying an obsolete proof recipe, a local command
|
|
19
|
+
wrapper, or readiness evidence produced by an older workflow. Byte hashes alone
|
|
20
|
+
cannot tell us that those instructions remain valid.
|
|
21
|
+
|
|
22
|
+
## Decision
|
|
23
|
+
|
|
24
|
+
DevRites will keep three upgrade operations separate:
|
|
25
|
+
|
|
26
|
+
| Operation | Responsibility |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| `devrites-engine update` | Update the installed engine and workflow pack. |
|
|
29
|
+
| `devrites-engine migrate` | Normalize workspace layout and structural state schema. |
|
|
30
|
+
| `/rite-upgrade [slug]` | Reconcile an active workspace with the current semantic planning contract. |
|
|
31
|
+
|
|
32
|
+
Semantic compatibility is versioned by the readiness-artifact contract, not by
|
|
33
|
+
the DevRites release number or workspace state schema. The current contract is
|
|
34
|
+
`devrites.readiness-artifacts.v2`.
|
|
35
|
+
|
|
36
|
+
`decision-coverage.md`, `eng-review.md`, and `test-plan.md` declare the semantic
|
|
37
|
+
contract that produced them. Build readiness returns code `8`
|
|
38
|
+
(`upgrade-required`) when existing readiness artifacts use an older, missing,
|
|
39
|
+
or incompatible contract, and routes the workspace to `/rite-upgrade`.
|
|
40
|
+
|
|
41
|
+
`/rite-upgrade` is desired-state reconciliation, not a replay of historical
|
|
42
|
+
migrations. It:
|
|
43
|
+
|
|
44
|
+
- works only on the active unfinished planning surface;
|
|
45
|
+
- preserves product source, completed slice bodies, proof, evidence, and
|
|
46
|
+
accepted decisions;
|
|
47
|
+
- removes obsolete engine-repair recipes and machine-local command wrappers
|
|
48
|
+
from active canonical plans;
|
|
49
|
+
- reruns current coverage, planning, and engineering-readiness checks;
|
|
50
|
+
- asks the user only when the current contract exposes a real product or risk
|
|
51
|
+
decision; and
|
|
52
|
+
- makes no changes when the workspace is already current and ready, completed,
|
|
53
|
+
or archived.
|
|
54
|
+
|
|
55
|
+
A fresh read-only `devrites-upgrade-planner` classifies the gap before any
|
|
56
|
+
mutation. The public skill remains the sole writer and verifies the resulting
|
|
57
|
+
workspace before build resumes.
|
|
58
|
+
|
|
59
|
+
## Alternatives considered
|
|
60
|
+
|
|
61
|
+
| Option | Why not |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| Treat the installed DevRites release as the workspace contract | Release numbers describe the whole product and do not say which planning semantics produced an artifact. |
|
|
64
|
+
| Extend `devrites-engine migrate` to rewrite planning artifacts | Structural migration cannot safely make product judgments or distinguish completed evidence from unfinished instructions. |
|
|
65
|
+
| Replay one migration for every historical release | It would preserve obsolete intermediate mechanics and make long-lived workspaces depend on an ever-growing migration chain. Desired-state reconciliation is smaller and safer. |
|
|
66
|
+
| Force users to restart old workspaces | It discards trustworthy completed work and evidence without improving the unfinished plan. |
|
|
67
|
+
|
|
68
|
+
## Consequences
|
|
69
|
+
|
|
70
|
+
- Updating DevRites cannot silently certify an old plan as current.
|
|
71
|
+
- Structural migration stays deterministic and safe to run independently.
|
|
72
|
+
- Active work can move forward without discarding trustworthy completed
|
|
73
|
+
evidence or recreating an old engine.
|
|
74
|
+
- New semantic rules require a readiness-contract revision and a bounded
|
|
75
|
+
desired-state upgrade path.
|
|
76
|
+
- Archived workspaces remain historical records rather than being rewritten to
|
|
77
|
+
match current conventions.
|
package/docs/adr/README.md
CHANGED
|
@@ -54,3 +54,7 @@ architecture; per-feature `decisions.md` files stay scoped to that feature.
|
|
|
54
54
|
| [0006](0006-clock-seam-and-engine-ci-gates.md) | Clock seam + Go static-analysis CI gates | Accepted | `tests/adr_0006_clock_seam_test.go` |
|
|
55
55
|
| [0007](0007-canonical-live-workspace-filenames.md) | Canonical live workspace filenames | Accepted | `internal/migrate/migrate_test.go`, `tests/migrate_cli_test.go` |
|
|
56
56
|
| [0008](0008-sanctioned-engine-network-boundary.md) | Sanctioned engine network boundary | Accepted | `tests/meta_test.go` |
|
|
57
|
+
| [0009](0009-prebuild-decision-coverage-and-readiness.md) | Pre-build decision coverage and implementation readiness | Accepted | `internal/state/state_test.go`, `tests/parity_buildreadiness_test.go` |
|
|
58
|
+
| [0010](0010-agent-first-fresh-context-orchestration.md) | Agent-first fresh-context orchestration | Accepted | `tests/hook_test.go`, `tests/codex-agent-generation-test.sh` |
|
|
59
|
+
| [0011](0011-define-plan-transition-rights.md) | Separate Define authoring from the Plan checkpoint | Accepted | `internal/state/state_test.go`, `tests/adr_0011_define_plan_test.go` |
|
|
60
|
+
| [0012](0012-semantic-workspace-upgrades.md) | Separate semantic workspace upgrades from structural migration | Accepted | `tests/parity_buildreadiness_test.go` |
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.
|
|
4
4
|
|
|
5
|
-
|
|
|
6
|
-
|
|
|
7
|
-
| `needs-triage`
|
|
8
|
-
| `needs-info`
|
|
9
|
-
| `ready-for-agent`
|
|
10
|
-
| `ready-for-human`
|
|
11
|
-
| `wontfix`
|
|
5
|
+
| Canonical role | Label in our tracker | Meaning |
|
|
6
|
+
| ----------------- | -------------------- | ---------------------------------------- |
|
|
7
|
+
| `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
|
|
8
|
+
| `needs-info` | `needs-info` | Waiting on reporter for more information |
|
|
9
|
+
| `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
|
|
10
|
+
| `ready-for-human` | `ready-for-human` | Requires human implementation |
|
|
11
|
+
| `wontfix` | `wontfix` | Will not be actioned |
|
|
12
12
|
|
|
13
13
|
When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table.
|
|
14
14
|
|
package/docs/architecture.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# DevRites architecture
|
|
2
2
|
|
|
3
|
-
DevRites
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
DevRites combines project-local Claude Code and Codex skills with one Go control
|
|
4
|
+
plane. It gives AI coding agents a defined engineering process: frame → spec →
|
|
5
|
+
mandatory adaptive clarify → optional temper → define → mandatory vet → build
|
|
6
|
+
one verified slice → prove with evidence → polish → review → seal → ship.
|
|
7
|
+
`converge` is the recovery state for bringing live code and recorded intent
|
|
8
|
+
back into agreement.
|
|
9
9
|
|
|
10
10
|
For the `.devrites/` load order, file budgets, artifact schema, aliases,
|
|
11
11
|
traceability rules, and phase-relative completeness model, see
|
|
@@ -15,60 +15,59 @@ traceability rules, and phase-relative completeness model, see
|
|
|
15
15
|
|
|
16
16
|
1. **Public lifecycle and workspace skills**: `.claude/skills/rite-*`,
|
|
17
17
|
`user-invocable: true`. Each owns one bounded phase or workspace transition.
|
|
18
|
-
Sequence: `rite-spec`, optional `rite-temper`, `rite-define`, mandatory
|
|
18
|
+
Sequence: `rite-spec`, mandatory adaptive `rite-clarify`, optional `rite-temper`, `rite-define`, mandatory
|
|
19
19
|
`rite-vet`, `rite-build`, recovery `rite-converge`, `rite-prove`,
|
|
20
|
-
`rite-polish`, `rite-review`, `rite-seal`, `rite-ship
|
|
21
|
-
or reslices an active plan
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
`rite-polish`, `rite-review`, `rite-seal`, and `rite-ship`. `rite-plan`
|
|
21
|
+
repairs or reslices an active plan. The resume verb `rite-resolve` answers a
|
|
22
|
+
HITL gate and clears `Awaiting human`. `rite-upgrade` is a conditional
|
|
23
|
+
maintenance route for semantically stale active workspaces, not a lifecycle
|
|
24
|
+
phase. The thin `/rite` menu and read-only `rite-status` live in the public
|
|
25
|
+
utility layer below.
|
|
25
26
|
`/rite-seal` **decides** GO/NO-GO and writes the verdict to `seal.md`;
|
|
26
|
-
`/rite-ship` is the
|
|
27
|
-
irreversible git ladder and **closes** the task
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
`/rite-ship` is the final core lifecycle rite that **executes** the
|
|
28
|
+
irreversible git ladder and **closes** the task by archiving the workspace
|
|
29
|
+
and clearing `ACTIVE`. Separate steps let users audit the release decision
|
|
30
|
+
before any irreversible action.
|
|
30
31
|
2. **Public utility and on-ramp skills**: `rite-adopt`, `rite-quick`,
|
|
31
|
-
`rite-frame`, `rite-status`, `rite-doctor`, `rite-learn`, `rite-explain`,
|
|
32
|
+
`rite-frame`, `rite-status`, `rite-doctor`, `rite-upgrade`, `rite-learn`, `rite-explain`,
|
|
32
33
|
`rite-customize`, `rite-zoom-out`, `rite-prototype`, `rite-handoff`,
|
|
33
34
|
`rite-pressure-test`, `rite-pov`, `rite-dogfood`, `rite-pr-feedback`, and
|
|
34
35
|
`rite-autocomplete`. These are public commands. `rite-autocomplete` is the
|
|
35
|
-
unattended orchestrator
|
|
36
|
-
ship)
|
|
37
|
-
|
|
38
|
-
`devrites-` prefix
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
doesn't collide.
|
|
36
|
+
unattended orchestrator. It drives the whole lifecycle (spec → … → seal →
|
|
37
|
+
ship), chooses the recommended option at each soft gate, and pauses only for
|
|
38
|
+
hard irreversible-risk, blocking, or escalating gates, or a NO-GO. The
|
|
39
|
+
`devrites-` prefix prevents collisions with bundled Claude Code skill names
|
|
40
|
+
such as `prototype`, `handoff`, `triage`, and `diagnose`; it does not mark
|
|
41
|
+
visibility. `rite-pressure-test` needs no prefix because it does not collide.
|
|
42
42
|
3. **Internal specialist skills**: `.claude/skills/devrites-*` with
|
|
43
43
|
`user-invocable: false`: `devrites-interview`, `-source-driven`,
|
|
44
44
|
`-doubt`, `-ux-shape` (plans UX/UI into `design-brief.md` at `/rite-spec`),
|
|
45
45
|
`-frontend-craft`, `-browser-proof`, `-debug-recovery`,
|
|
46
46
|
`-api-interface`, `-audit` (dispatches the security / perf / simplify
|
|
47
|
-
reviewer
|
|
48
|
-
`-refresh-indexes`.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
prefix.
|
|
47
|
+
fresh-context reviewer on an axis argument), `-prose-craft`, and
|
|
48
|
+
`-refresh-indexes`. Public skills or host auto-selection invoke these 11
|
|
49
|
+
specialists. They do not appear in the menu. The `user-invocable:` flag,
|
|
50
|
+
rather than the name prefix, determines whether a skill is public.
|
|
52
51
|
|
|
53
52
|
Engineering rules live at `.claude/skills/devrites-lib/reference/standards/`.
|
|
54
|
-
Workspace-operating lifecycle rites load `core.md` first and
|
|
55
|
-
files on demand
|
|
53
|
+
Workspace-operating lifecycle rites load `core.md` first and read
|
|
54
|
+
phase-specific files on demand. Compact utilities keep a narrower local
|
|
55
|
+
contract. Parallel
|
|
56
56
|
reviewer fan-out at `/rite-seal` is the shared reference file
|
|
57
57
|
`devrites-lib/reference/parallel-dispatch.md`, not a skill.
|
|
58
58
|
4. **Supporting references**: `reference/*.md` inside each skill. Long checklists,
|
|
59
59
|
templates, and anti-rationalization tables loaded on demand (progressive
|
|
60
60
|
disclosure) so `SKILL.md` bodies stay small.
|
|
61
|
-
5. **Agents**: `.claude/agents/devrites-*`
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
the reviewers).
|
|
61
|
+
5. **Agents**: `.claude/agents/devrites-*` contains **18 flat depth-one roles**:
|
|
62
|
+
17 read-only leaves and the sole source/test writer,
|
|
63
|
+
`devrites-slice-wright`. The read-only set includes three bounded work
|
|
64
|
+
leaves (`devrites-evidence-scout`, `devrites-plan-drafter`, and
|
|
65
|
+
`devrites-proof-runner`), the fresh `devrites-upgrade-planner`, plus the
|
|
66
|
+
existing reviewers, auditors, judge, and retrospector. Public rites remain
|
|
67
|
+
authoritative: leaves return typed
|
|
68
|
+
evidence, never ask the human, change phase, or write canonical
|
|
69
|
+
`.devrites/**` state. See [`orchestration.md`](orchestration.md) for the
|
|
70
|
+
dispatch, fallback, identity, and reconciliation contract.
|
|
72
71
|
6. **Engineering rules**: DevRites' own stack-agnostic rules installed to
|
|
73
72
|
`.claude/skills/devrites-lib/reference/standards/`. Workspace-operating lifecycle
|
|
74
73
|
skills read `core.md` in step 0; compact utilities load only their local or conditional
|
|
@@ -85,37 +84,54 @@ traceability rules, and phase-relative completeness model, see
|
|
|
85
84
|
`test-proof-checklist.md` · `browser-proof-checklist.md` · `security-checklist.md`.
|
|
86
85
|
- **Index:** `README.md` (phase mapping, loading model).
|
|
87
86
|
|
|
88
|
-
State lives in `.devrites/` as human-readable Markdown so
|
|
89
|
-
|
|
90
|
-
the session-level run mode (see "Run modes" below). See `usage.md` for
|
|
91
|
-
workspace file list, [`command-map.md`](command-map.md) for the full
|
|
92
|
-
per-skill catalog with triggers
|
|
87
|
+
State lives in `.devrites/` as human-readable Markdown so later sessions can
|
|
88
|
+
reload it after context compaction. The optional `.devrites/AFK` sentinel
|
|
89
|
+
toggles the session-level run mode (see "Run modes" below). See `usage.md` for
|
|
90
|
+
the workspace file list, [`command-map.md`](command-map.md) for the full
|
|
91
|
+
per-skill catalog with triggers and I/O, and
|
|
93
92
|
[`capability-surface-selection.md`](capability-surface-selection.md) for where future
|
|
94
93
|
capabilities belong.
|
|
95
94
|
|
|
96
95
|
## Design rationale
|
|
97
96
|
|
|
98
97
|
### Why the engine owns shared orientation (`devrites-lib`)
|
|
99
|
-
Every workspace-operating skill
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
Every workspace-operating skill needs the active feature's slug, phase, present
|
|
99
|
+
artifacts, run mode, and open-question tally. Parsing raw Markdown in each skill
|
|
100
|
+
duplicated the same setup across about 20 skills. Counting open gates also meant
|
|
101
|
+
rereading the append-only `questions.md`, and a missed AFK sentinel or
|
|
102
|
+
miscounted gate could change behavior. The `devrites-engine` binary now computes
|
|
103
|
+
orientation once and prints a compact digest that each skill reads at step 0.
|
|
104
|
+
The same binary owns the read-only gates
|
|
106
105
|
(`build-readiness`, `evidence-fresh`, `check-acceptance`) and state mutators
|
|
107
106
|
(`tick-afk`, `resolve`, `close-out`), so Claude Code, Codex, CI, and humans
|
|
108
|
-
all exercise the same control plane. `devrites-lib` remains an internal library
|
|
109
|
-
(`user-invocable: false`, not a command) for shared references. The
|
|
110
|
-
|
|
107
|
+
all exercise the same control plane. `devrites-lib` remains an internal library
|
|
108
|
+
skill (`user-invocable: false`, not a command) for shared references. The
|
|
109
|
+
orientation command only reads state; dedicated engine subcommands handle
|
|
110
|
+
mutations.
|
|
111
111
|
|
|
112
112
|
### Why the engine owns install/update/uninstall semantics
|
|
113
|
-
|
|
114
|
-
and pruning, shared-file marker
|
|
115
|
-
binary lifecycle, and update flag replay
|
|
116
|
-
shell entrypoints
|
|
117
|
-
(`
|
|
118
|
-
|
|
113
|
+
`engine/internal/install` implements install, update, and uninstall behavior:
|
|
114
|
+
manifest writing and pruning, shared-file marker merging and removal, Codex hook
|
|
115
|
+
merging and removal, dry-run output, binary lifecycle, and update flag replay.
|
|
116
|
+
The shell entrypoints
|
|
117
|
+
(`install.sh`, `uninstall.sh`, `update.sh`) and npm entrypoint
|
|
118
|
+
(`bin/devrites.mjs`) remain bootstrap shims. They acquire a release bundle or
|
|
119
|
+
engine binary, then pass arguments through.
|
|
120
|
+
|
|
121
|
+
Directly managed manifest entries carry SHA-256 ownership records. Before the
|
|
122
|
+
first refresh, prune, or uninstall mutation, the engine classifies every
|
|
123
|
+
affected path. It preserves customized or legacy entries without hashes unless
|
|
124
|
+
`--force` is explicit, and it checks each path again immediately before a
|
|
125
|
+
destructive action. Marker-owned shared files retain their block or hook merge
|
|
126
|
+
policy. The engine rejects existing symlinks, junctions, and resolved target
|
|
127
|
+
escapes even under force.
|
|
128
|
+
|
|
129
|
+
Binary replacement is a separate transaction. Before replacement, the binary
|
|
130
|
+
at the exact staged path must report the requested release version. A backup in
|
|
131
|
+
the same directory remains until the binary at the installed path passes the
|
|
132
|
+
same check in a new process. On failure, the engine atomically restores the old
|
|
133
|
+
bytes and mode or removes a bad first install. It does not use `PATH` to
|
|
134
|
+
establish binary identity.
|
|
119
135
|
|
|
120
136
|
Some duplication is intentionally preserved at host boundaries. Raw `curl | bash`
|
|
121
137
|
install/uninstall must be self-contained enough to fetch the bundle before any sibling
|
|
@@ -125,31 +141,50 @@ generated into `pack/generated/**` and installed to `.agents/skills`, `.codex/ag
|
|
|
125
141
|
different project-local conventions. Those generated host artifacts are delivered by the
|
|
126
142
|
npm installer; Claude/Codex plugin packaging is intentionally not a distribution path.
|
|
127
143
|
|
|
144
|
+
### Why semantic upgrade is separate from update and migration
|
|
145
|
+
|
|
146
|
+
Three operations solve different problems. `devrites-engine update` refreshes
|
|
147
|
+
the installed binary and pack. `devrites-engine migrate` normalizes workspace
|
|
148
|
+
layout and structural state schema. Neither one can claim that an active plan
|
|
149
|
+
still follows the current planning rules.
|
|
150
|
+
|
|
151
|
+
`/rite-upgrade [slug]` owns that semantic reconciliation. Build readiness uses
|
|
152
|
+
the `devrites.readiness-artifacts.v2` contract declared by
|
|
153
|
+
`decision-coverage.md`, `eng-review.md`, and `test-plan.md`; it returns code `8`
|
|
154
|
+
when those existing artifacts are stale. The rite then asks a fresh read-only
|
|
155
|
+
`devrites-upgrade-planner` to classify the gap before the root changes anything.
|
|
156
|
+
It preserves completed source, slice bodies, decisions, and evidence, repairs
|
|
157
|
+
only active unfinished planning, removes obsolete proof recipes and local
|
|
158
|
+
wrappers, and reruns the current readiness gates. Already-current workspaces
|
|
159
|
+
that pass readiness, completed workspaces, and archives remain untouched. See
|
|
160
|
+
[ADR-0012](adr/0012-semantic-workspace-upgrades.md).
|
|
161
|
+
|
|
128
162
|
### Why `/engine` was rejected
|
|
129
|
-
A single `/engine` (or `/devrites`)
|
|
130
|
-
into one context
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
163
|
+
A single `/engine` (or `/devrites`) command would load every phase's
|
|
164
|
+
instructions into one context. That would increase context pressure, obscure
|
|
165
|
+
the purpose of each step, and make phase boundaries harder to enforce. Skill
|
|
166
|
+
bodies stay in context once loaded, so the recurring token cost would also
|
|
167
|
+
grow. Separate skills load only what the current phase needs.
|
|
134
168
|
|
|
135
169
|
### Why `rite-*` names
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
170
|
+
The team chose `rite-` because it is short, easy to remember, and matches the
|
|
171
|
+
product's use of "rites" for disciplined steps. The prefix also avoids
|
|
172
|
+
collisions. Built-in or bundled Claude Code commands include `/plan`, `/review`,
|
|
173
|
+
`/run`, `/verify`, `/code-review`, `/simplify`, `/security-review`, `/init`,
|
|
174
|
+
`/compact`, and `/debug`. (Collision audit:
|
|
175
|
+
`research/claude-code-skills-notes.md`.)
|
|
140
176
|
|
|
141
177
|
### Why a thin menu skill, not a mega-router
|
|
142
|
-
`/rite` is
|
|
178
|
+
`/rite` is an entrypoint. It shows a compact phase-grouped menu, prints
|
|
143
179
|
recommended-start guidance from `devrites-engine first-task`, and dispatches a
|
|
144
180
|
named verb to its owning skill. Menu mode does not read raw workspace state;
|
|
145
|
-
`/rite-status` owns detailed status. `/rite`
|
|
146
|
-
|
|
147
|
-
selection thin and lets each phase own its context.
|
|
181
|
+
`/rite-status` owns detailed status. `/rite` does not duplicate workflow logic,
|
|
182
|
+
which keeps selection small and leaves each phase in control of its context.
|
|
148
183
|
|
|
149
184
|
### Why internal skills exist
|
|
150
|
-
Specialist processes
|
|
151
|
-
are
|
|
152
|
-
skills they:
|
|
185
|
+
Specialist processes such as doubt, source-driven research, frontend craft,
|
|
186
|
+
browser proof, and audits are not direct user commands. As
|
|
187
|
+
`user-invocable: false` skills they:
|
|
153
188
|
- stay out of the command menu (less cognitive load);
|
|
154
189
|
- are invoked automatically by the host model or explicitly by a public skill when their
|
|
155
190
|
trigger conditions hit;
|
|
@@ -157,16 +192,23 @@ skills they:
|
|
|
157
192
|
|
|
158
193
|
### Why spec, architecture, plan, tasks, and traceability are separate artifacts
|
|
159
194
|
Combining investigation, specification, planning, and slicing makes it easier
|
|
160
|
-
to miss a question,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
what
|
|
164
|
-
|
|
195
|
+
to miss a question, choose the wrong placement, or omit a requirement from a
|
|
196
|
+
slice. Each concern therefore has its own artifact and gate. `/rite-spec`
|
|
197
|
+
investigates the request and codebase in depth, then writes `spec.md` with the
|
|
198
|
+
product what and why, requirements, acceptance criteria, non-goals, and
|
|
199
|
+
measurable success. The spec
|
|
200
|
+
must pass its readiness gate. `/rite-clarify` then audits the full actor,
|
|
201
|
+
journey, data, interface, and operations topology and writes
|
|
202
|
+
`decision-coverage.md`. A complete spec needs no questions.
|
|
203
|
+
`/rite-define` turns that **approved, clarified spec** into `architecture.md`
|
|
165
204
|
(technical map), `plan.md` (approach), `tasks.md` (vertical `SLICE-###` work), and
|
|
166
|
-
`traceability.md` (AC/REQ → slice → proof → evidence → files).
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
205
|
+
`traceability.md` (AC/REQ → slice → proof → evidence → files). `/rite-vet` then records
|
|
206
|
+
`Implementation readiness: READY` before build. Both verdict artifacts are
|
|
207
|
+
semantically validated and bound to their canonical inputs by SHA-256 digest;
|
|
208
|
+
marker text alone or a stale digest cannot pass. This checks the full spec
|
|
209
|
+
before Build without turning `spec.md` into a long technical document.
|
|
210
|
+
`/rite-plan` separately repairs, reslices, or reorders an active plan when it
|
|
211
|
+
goes stale or drifts.
|
|
170
212
|
|
|
171
213
|
### Why `/rite-polish` is one skill with two progressive-disclosure halves
|
|
172
214
|
Polish has two natural halves: **code** (simplify, dead code, naming, plus
|
|
@@ -189,37 +231,42 @@ to run Phase 4 before Phase 3 because detail work would otherwise reinforce
|
|
|
189
231
|
patterns that do not match the project's design system.
|
|
190
232
|
|
|
191
233
|
### Why seal and ship are separate phases (`/rite-seal`, `/rite-ship`)
|
|
192
|
-
Deciding
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
`.devrites/
|
|
201
|
-
|
|
202
|
-
decision and the irreversible action as two separately-auditable steps is the point.
|
|
234
|
+
Deciding whether a change is safe to ship has a smaller blast radius than
|
|
235
|
+
shipping it. `/rite-seal` checks acceptance against evidence, dispatches the
|
|
236
|
+
fresh-context reviewers, writes the GO or NO-GO verdict to `seal.md`, and runs
|
|
237
|
+
no git commands. On GO, it sets `state.md` to `Next step: /rite-ship` and stops.
|
|
238
|
+
`/rite-ship` refuses to run without a GO in `seal.md`. It renders the type-`GO`
|
|
239
|
+
prompt, runs the irreversible git ladder (commit → push → tag/PR under the
|
|
240
|
+
project's convention), and writes `ship.md`. It then sets phase `done`, moves
|
|
241
|
+
`.devrites/work/<slug>/` to `.devrites/archive/<slug>/` with every `.md` file
|
|
242
|
+
preserved, and clears `.devrites/ACTIVE`. The GO verdict does not authorize a
|
|
243
|
+
push; the separate Ship step does.
|
|
203
244
|
|
|
204
245
|
### Why `/rite-autocomplete` exists (the unattended orchestrator)
|
|
205
|
-
Some features are routine enough to run
|
|
206
|
-
`/rite-autocomplete` drives the whole lifecycle (spec → temper → define → vet →
|
|
246
|
+
Some features are routine enough to run without human input at every phase.
|
|
247
|
+
`/rite-autocomplete` drives the whole lifecycle (spec → clarify → temper → define → vet →
|
|
207
248
|
build×N → prove → polish → review → seal → ship) by reading each phase's
|
|
208
249
|
`SKILL.md` and executing its
|
|
209
|
-
workflow
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
250
|
+
workflow. It carries state through workspace files rather than chat. A vague
|
|
251
|
+
prompt starts `devrites-interview`; `/rite-spec` and `/rite-clarify` then
|
|
252
|
+
finish the only interactive window. After decision coverage is CLEAR it runs unattended,
|
|
253
|
+
choosing the recommended option at each soft gate and recording the rationale
|
|
254
|
+
in `decisions.md`. It does **not** weaken the safety gates: genuine
|
|
255
|
+
product/scope/policy decisions, irreversible risk, human-only access/actions,
|
|
256
|
+
an open human-owned gate, a NO-GO, exhausted `max_slices`, or low confidence
|
|
257
|
+
still pause. Agents use bounded recovery for red tests, runtime failures, and
|
|
258
|
+
missing technical coverage. By default the workflow stops at the final
|
|
259
|
+
type-`GO`; the `--ship` flag (alias `--yolo`) confirms it and pushes without
|
|
260
|
+
another prompt.
|
|
217
261
|
|
|
218
262
|
### Why persistent `.devrites/` state
|
|
219
263
|
Long features outlive a single context window. Durable Markdown for the spec,
|
|
220
264
|
plan, tasks, state, evidence, drift, and decisions lets any phase reload the
|
|
221
|
-
current position in any session, even after compaction.
|
|
222
|
-
|
|
265
|
+
current position in any session, even after compaction. Later-phase
|
|
266
|
+
clarification stores `return_phase` and `return_next_action` in `state.md`;
|
|
267
|
+
technical recovery stores a fingerprinted three-attempt budget in
|
|
268
|
+
`recovery-attempts.jsonl`. Session-scoped workflows cannot provide the same
|
|
269
|
+
resume behavior because they do not persist feature state.
|
|
223
270
|
|
|
224
271
|
### Run modes: HITL & AFK
|
|
225
272
|
|
|
@@ -238,38 +285,27 @@ an `Awaiting human` block to `state.md` and a question to `questions.md`, then s
|
|
|
238
285
|
`/rite-resolve` is the canonical resume verb. Restarting a session reads the workspace
|
|
239
286
|
back into a consistent state because the pause is durable Markdown, not chat memory.
|
|
240
287
|
|
|
241
|
-
Why a four-gate taxonomy (instead of a single "ask the user" pause): a single
|
|
242
|
-
becomes a queue under load.
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
288
|
+
Why a four-gate taxonomy (instead of a single "ask the user" pause): a single
|
|
289
|
+
gate becomes a queue under load. `advisory` writes only an audit log.
|
|
290
|
+
`validating` lets the build continue but blocks the merge. `blocking` stops
|
|
291
|
+
synchronously. This lets work continue when an answer can wait and pauses it
|
|
292
|
+
when the answer is required.
|
|
293
|
+
AFK always pauses for genuine product/scope/policy choices, irreversible risk,
|
|
294
|
+
and human-only access or actions, regardless of the sentinel. Objective test,
|
|
295
|
+
type, lint, runtime, and coverage failures stay inside bounded technical
|
|
296
|
+
recovery; exhaustion records a blocker without inventing a question. See
|
|
247
297
|
[`pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md`](../pack/.claude/skills/devrites-lib/reference/standards/afk-hitl.md) for the full
|
|
248
298
|
contract.
|
|
249
299
|
|
|
250
300
|
## Design choices at a glance
|
|
251
301
|
|
|
252
|
-
- **Surface**:
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
`
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
lessons) + `rite-status` + `rite-doctor` (install health) +
|
|
260
|
-
`rite-customize` (project-local overrides/extensions) +
|
|
261
|
-
`rite-explain` (grounded concept/diff/idea/recap explanation) +
|
|
262
|
-
`rite-pov` (external-option verdicts) + `rite-dogfood` (browser QA) +
|
|
263
|
-
`rite-pr-feedback` (review-thread closure) +
|
|
264
|
-
the `rite-plan` replan verb + `rite-converge` recovery + the `rite-resolve`
|
|
265
|
-
resume verb + 4 ideation /
|
|
266
|
-
handoff utilities (`rite-zoom-out`, `rite-prototype`, `rite-handoff`,
|
|
267
|
-
`rite-pressure-test`) + `rite-autocomplete` (the unattended full-lifecycle
|
|
268
|
-
orchestrator), plus 11 internal model-invoked `devrites-*` specialists and the
|
|
269
|
-
`devrites-lib` library, not one mega-command. The `devrites-` prefix is a
|
|
270
|
-
namespace (collision avoidance), not a public/internal marker.
|
|
271
|
-
`user-invocable:` is. The 11 specialists are model-invoked;
|
|
272
|
-
`devrites-lib` explicitly disables model invocation.
|
|
302
|
+
- **Surface**: 31 public `rite-*` skills (44 total), plus the thin `/rite`
|
|
303
|
+
menu: 32 public and 12 internal. The lifecycle
|
|
304
|
+
includes mandatory adaptive Clarify, optional Temper, mandatory Vet, and
|
|
305
|
+
Converge recovery; Seal **decides** and Ship **executes + closes**. Eleven
|
|
306
|
+
`devrites-*` specialists are model-invoked and `devrites-lib` is the shared
|
|
307
|
+
non-command library. Visibility comes from `user-invocable:`, not the
|
|
308
|
+
namespace prefix.
|
|
273
309
|
- **Selection**: the `/rite` menu skill carries the routing table; every
|
|
274
310
|
workflow skill enforces a "right skill, right time" rule in its body.
|
|
275
311
|
- **State**: durable `.devrites/` Markdown that survives compaction and new sessions.
|
|
@@ -281,13 +317,15 @@ contract.
|
|
|
281
317
|
- **Slice rule**: build **one vertical slice, then stop**. There is no automatic continuation.
|
|
282
318
|
- **Drift**: an explicit **Spec Drift Guard** in build/prove/polish/review/seal.
|
|
283
319
|
- **Design**: `devrites-frontend-craft` + a four-phase `/rite-polish` orchestrator (code + backend always; UI normalize + polish when UI is in scope).
|
|
284
|
-
- **
|
|
285
|
-
|
|
320
|
+
- **Agents**: 18 fresh-context roles at flat depth one: 17 read-only leaves and
|
|
321
|
+
one wright. Fallback order is named, generic, then labelled inline.
|
|
322
|
+
- **Review**: **feature-scoped** multi-axis review with severity labels and
|
|
323
|
+
fresh-context agents at the seal.
|
|
286
324
|
- **Scope**: clarify → seal (decide) → ship (commit → push → tag or PR,
|
|
287
325
|
following the project's convention) → close. The CI
|
|
288
326
|
pipeline stays with the project.
|
|
289
327
|
- **Install**: project-local, manifest-managed host artifacts; the optional
|
|
290
|
-
shared engine binary is the
|
|
328
|
+
shared engine binary is the only allowed global artifact.
|
|
291
329
|
|
|
292
330
|
## Deviations from the original build brief (and why)
|
|
293
331
|
|