devrites 2.6.0 → 3.0.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 +77 -0
- package/README.md +85 -50
- package/SECURITY.md +65 -39
- package/bin/devrites.mjs +135 -51
- package/docs/agents/domain.md +58 -0
- package/docs/agents/issue-driven-rites.md +11 -0
- package/docs/agents/issue-tracker.md +29 -0
- package/docs/agents/triage-labels.md +15 -0
- package/docs/architecture.md +60 -35
- package/docs/capability-surface-selection.md +18 -0
- package/docs/cli.md +53 -0
- package/docs/command-map.md +59 -22
- package/docs/engine/agent-contract.md +92 -0
- package/docs/engine/commands.md +323 -0
- package/docs/engine/state-schema.md +134 -0
- package/docs/engine/workspace-schema.md +150 -0
- package/docs/extensions.md +178 -0
- package/docs/flow.md +19 -16
- package/docs/harness-compliance.md +45 -0
- package/docs/orchestration.md +6 -4
- package/docs/porting-to-a-new-harness.md +27 -0
- package/docs/quick-reference.md +22 -0
- package/docs/release.md +3 -3
- package/docs/skills.md +42 -48
- package/docs/usage.md +21 -8
- package/engine/.gosec.json +5 -0
- package/engine/Makefile +64 -0
- package/engine/commands.go +195 -0
- package/engine/go.mod +5 -0
- package/engine/harnessmatrix.go +60 -0
- package/engine/harnessmatrix_test.go +59 -0
- package/engine/hookpolicy.go +114 -0
- package/engine/hookpolicy_test.go +64 -0
- package/engine/hooks.go +336 -0
- package/engine/hooks_events_test.go +106 -0
- package/engine/hooks_workspace.go +603 -0
- package/engine/internal/devritespaths/paths.go +76 -0
- package/engine/internal/doctor/doctor.go +178 -0
- package/engine/internal/doctor/doctor_test.go +150 -0
- package/engine/internal/fsutil/copy.go +101 -0
- package/engine/internal/fsutil/replace_other.go +7 -0
- package/engine/internal/fsutil/replace_windows.go +31 -0
- package/engine/internal/gate/gate.go +243 -0
- package/engine/internal/gate/gate_test.go +145 -0
- package/engine/internal/harness/compliance.go +102 -0
- package/engine/internal/harness/harness.go +304 -0
- package/engine/internal/harness/harness_test.go +104 -0
- package/engine/internal/hostpack/hostpack.go +259 -0
- package/engine/internal/hostpack/hostpack_test.go +111 -0
- package/engine/internal/hostpack/templates/alias_skill.md.tmpl +11 -0
- package/engine/internal/hostpack/templates/devrites_readme.md.tmpl +14 -0
- package/engine/internal/install/install.go +1560 -0
- package/engine/internal/install/install_test.go +564 -0
- package/engine/internal/iohooks/detach_other.go +11 -0
- package/engine/internal/iohooks/detach_unix.go +11 -0
- package/engine/internal/iohooks/iohooks.go +546 -0
- package/engine/internal/iohooks/iohooks_test.go +130 -0
- package/engine/internal/lib/adoption.go +634 -0
- package/engine/internal/lib/adoption_test.go +91 -0
- package/engine/internal/lib/analyze.go +225 -0
- package/engine/internal/lib/archivesearch.go +93 -0
- package/engine/internal/lib/archivesearch_test.go +110 -0
- package/engine/internal/lib/budget.go +172 -0
- package/engine/internal/lib/buildreadiness.go +88 -0
- package/engine/internal/lib/checkacceptance.go +176 -0
- package/engine/internal/lib/closeout.go +69 -0
- package/engine/internal/lib/command_other.go +7 -0
- package/engine/internal/lib/command_unix.go +24 -0
- package/engine/internal/lib/context.go +236 -0
- package/engine/internal/lib/conventions.go +449 -0
- package/engine/internal/lib/coverage.go +147 -0
- package/engine/internal/lib/doubtcoverage.go +88 -0
- package/engine/internal/lib/evidencefresh.go +85 -0
- package/engine/internal/lib/extensions.go +619 -0
- package/engine/internal/lib/extensions_test.go +305 -0
- package/engine/internal/lib/footprint.go +239 -0
- package/engine/internal/lib/jsonout.go +115 -0
- package/engine/internal/lib/jsonout_test.go +57 -0
- package/engine/internal/lib/lanes.go +106 -0
- package/engine/internal/lib/learnings.go +391 -0
- package/engine/internal/lib/learnings_inject_test.go +77 -0
- package/engine/internal/lib/learnings_remediation_test.go +24 -0
- package/engine/internal/lib/ledger.go +298 -0
- package/engine/internal/lib/ledger_test.go +162 -0
- package/engine/internal/lib/mutationgate.go +85 -0
- package/engine/internal/lib/overrides.go +164 -0
- package/engine/internal/lib/overrides_test.go +112 -0
- package/engine/internal/lib/packageexistence.go +175 -0
- package/engine/internal/lib/preamble.go +159 -0
- package/engine/internal/lib/progress.go +168 -0
- package/engine/internal/lib/reconcile.go +173 -0
- package/engine/internal/lib/reconcile_test.go +197 -0
- package/engine/internal/lib/resolve.go +376 -0
- package/engine/internal/lib/resolve_remediation_test.go +49 -0
- package/engine/internal/lib/reviewers.go +143 -0
- package/engine/internal/lib/reviewers_test.go +45 -0
- package/engine/internal/lib/reviewerstats.go +199 -0
- package/engine/internal/lib/reviewerstats_test.go +104 -0
- package/engine/internal/lib/reviewintegrity.go +143 -0
- package/engine/internal/lib/reviewintegrity_test.go +103 -0
- package/engine/internal/lib/runbook.go +292 -0
- package/engine/internal/lib/runbook_context_test.go +119 -0
- package/engine/internal/lib/session.go +328 -0
- package/engine/internal/lib/session_test.go +110 -0
- package/engine/internal/lib/specparse.go +125 -0
- package/engine/internal/lib/specskeleton.go +79 -0
- package/engine/internal/lib/specvalidate.go +391 -0
- package/engine/internal/lib/specvalidate_test.go +185 -0
- package/engine/internal/lib/stuck.go +206 -0
- package/engine/internal/lib/templates/conventions_drift.tmpl +6 -0
- package/engine/internal/lib/templates/conventions_ledger_header.md +6 -0
- package/engine/internal/lib/templates/conventions_orient_header.txt +1 -0
- package/engine/internal/lib/testintegrity.go +203 -0
- package/engine/internal/lib/testintegrity_test.go +72 -0
- package/engine/internal/lib/tickafk.go +99 -0
- package/engine/internal/lib/util.go +68 -0
- package/engine/internal/migrate/migrate.go +213 -0
- package/engine/internal/migrate/migrate_test.go +105 -0
- package/engine/internal/orient/firstrun.go +50 -0
- package/engine/internal/orient/firstrun_test.go +72 -0
- package/engine/internal/orient/orient.go +69 -0
- package/engine/internal/orient/orient_test.go +25 -0
- package/engine/internal/profile/profile.go +270 -0
- package/engine/internal/state/concurrency_test.go +184 -0
- package/engine/internal/state/feature.go +309 -0
- package/engine/internal/state/lock_other.go +24 -0
- package/engine/internal/state/lock_unix.go +35 -0
- package/engine/internal/state/lock_windows.go +56 -0
- package/engine/internal/state/schema.go +102 -0
- package/engine/internal/state/snapshot.go +384 -0
- package/engine/internal/state/state_test.go +260 -0
- package/engine/internal/state/status.go +90 -0
- package/engine/internal/state/write.go +59 -0
- package/engine/internal/testutil/testutil.go +66 -0
- package/engine/internal/version/version.go +57 -0
- package/engine/internal/workflow/commands.go +64 -0
- package/engine/main.go +530 -0
- package/engine/profile_test.go +76 -0
- package/engine/subagent_orient_context.txt +6 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/decisions.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/feature.md +8 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/plan.md +5 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/spec.md +6 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/status.md +4 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/auth-tokens/tasks.md +1 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/feature.md +8 -0
- package/engine/testdata/fixtures/basic/devrites-root/features/search-ranking/spec.md +6 -0
- package/engine/testdata/golden/TestParityA1Guard/devrites-edit-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/inline-fallback-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/no-window-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/non-edit-tool.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/observe-mode-silent.golden +1 -0
- package/engine/testdata/golden/TestParityA1Guard/source-edit-enforce-denies.golden +2 -0
- package/engine/testdata/golden/TestParityA1Guard/subagent-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/noactive.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=covered.golden +15 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=dangling.golden +16 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=noac.golden +15 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=order.golden +17 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=orphan.golden +16 -0
- package/engine/testdata/golden/TestParityAnalyze/slug=uncovered.golden +16 -0
- package/engine/testdata/golden/TestParityBudget/default-active.golden +4 -0
- package/engine/testdata/golden/TestParityBudget/extra-md.golden +5 -0
- package/engine/testdata/golden/TestParityBudget/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityBudget/no-feature.golden +1 -0
- package/engine/testdata/golden/TestParityBudget/over-advisory.golden +6 -0
- package/engine/testdata/golden/TestParityBudget/over-strict.golden +6 -0
- package/engine/testdata/golden/TestParityBudget/within.golden +6 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approved.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=approvenone.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=await.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=blocked.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=emptystatus.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=noapprove.golden +1 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailhash.golden +2 -0
- package/engine/testdata/golden/TestParityBuildReadiness/arg=trailpipe.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=blank-section.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=empty.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-dropped.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-ok.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=flat-unchecked.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-gap.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=id-ok.golden +2 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-seal.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=no-section.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParityCheckAcceptance.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/active_pointed_elsewhere.golden +2 -0
- package/engine/testdata/golden/TestParityCloseOut/active_slug_cleared.golden +2 -0
- package/engine/testdata/golden/TestParityCloseOut/archive_clobber.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/missing_slug.golden +1 -0
- package/engine/testdata/golden/TestParityCloseOut/missing_workspace.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=flat.golden +7 -0
- package/engine/testdata/golden/TestParityCoverage/arg=full.golden +10 -0
- package/engine/testdata/golden/TestParityCoverage/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=nospec.golden +1 -0
- package/engine/testdata/golden/TestParityCoverage/arg=speconly.golden +9 -0
- package/engine/testdata/golden/TestParityCoverage.golden +1 -0
- package/engine/testdata/golden/TestParityCursor/bare.golden +3 -0
- package/engine/testdata/golden/TestParityCursor/full-afk.golden +6 -0
- package/engine/testdata/golden/TestParityCursor/full-hitl.golden +5 -0
- package/engine/testdata/golden/TestParityCursor/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityCursor/red.golden +5 -0
- package/engine/testdata/golden/TestParityCursor/zerogates.golden +5 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=doubted.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=ghost.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=inline.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing-inline.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=missing.golden +3 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nodoubt.golden +4 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nolog.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage/arg=nowright.golden +2 -0
- package/engine/testdata/golden/TestParityDoubtCoverage.golden +1 -0
- package/engine/testdata/golden/TestParityLearnings/add.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/list.golden +5 -0
- package/engine/testdata/golden/TestParityLearnings/mine-no-archive.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/mine.golden +5 -0
- package/engine/testdata/golden/TestParityLearnings/nudge.golden +2 -0
- package/engine/testdata/golden/TestParityLearnings/unknown.golden +1 -0
- package/engine/testdata/golden/TestParityMutationGate/active-slug.golden +3 -0
- package/engine/testdata/golden/TestParityMutationGate/explicit-slug.golden +3 -0
- package/engine/testdata/golden/TestParityMutationGate/ghost.golden +1 -0
- package/engine/testdata/golden/TestParityOrientSilentPath.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/declared.golden +2 -0
- package/engine/testdata/golden/TestParityPackageExistence/default-import-subpath.golden +2 -0
- package/engine/testdata/golden/TestParityPackageExistence/ghost-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/no-manifest.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityPackageExistence/undeclared.golden +1 -0
- package/engine/testdata/golden/TestParityPreamble/afk/a.golden +14 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/active.golden +18 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/bare.golden +10 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/full.golden +18 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/ghost.golden +2 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/nonl.golden +11 -0
- package/engine/testdata/golden/TestParityPreamble/hitl/openend.golden +13 -0
- package/engine/testdata/golden/TestParityProgress/arg=allbuilt.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=done.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=ghost.golden +1 -0
- package/engine/testdata/golden/TestParityProgress/arg=mid.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=nophase.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=noslice.golden +3 -0
- package/engine/testdata/golden/TestParityProgress/arg=plan.golden +4 -0
- package/engine/testdata/golden/TestParityProgress/arg=seal.golden +3 -0
- package/engine/testdata/golden/TestParityReconcile/bad-mode.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-clean/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-clean.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-base.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-no-claimed.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/check-violation/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/check-violation.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/inline-fallback/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/inline-fallback.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityReconcile/snapshot.golden +2 -0
- package/engine/testdata/golden/TestParityRedwatch/fail-writes-red.golden +2 -0
- package/engine/testdata/golden/TestParityRedwatch/non-bash-tool.golden +1 -0
- package/engine/testdata/golden/TestParityRedwatch/non-test-command.golden +1 -0
- package/engine/testdata/golden/TestParityRedwatch/pass-clears-red.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/answer/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/answer/state.md.golden +6 -0
- package/engine/testdata/golden/TestParityResolve/answer.golden +4 -0
- package/engine/testdata/golden/TestParityResolve/batch/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/batch-unterminated/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/batch-unterminated.golden +2 -0
- package/engine/testdata/golden/TestParityResolve/batch.golden +3 -0
- package/engine/testdata/golden/TestParityResolve/drop/questions.md.golden +9 -0
- package/engine/testdata/golden/TestParityResolve/drop/state.md.golden +8 -0
- package/engine/testdata/golden/TestParityResolve/drop.golden +4 -0
- package/engine/testdata/golden/TestParityResolve/missing-answer.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/next-qid.golden +2 -0
- package/engine/testdata/golden/TestParityResolve/no-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/not-found.golden +1 -0
- package/engine/testdata/golden/TestParityResolve/not-open.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-devrites-agent-denies.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-non-devrites-allows.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/agent-required-subagent-type-only-allows.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-git-commit.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/enforce-deny-mutating.golden +2 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/non-bash-tool.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/non-tool-input.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/observe-mutating-silent.golden +1 -0
- package/engine/testdata/golden/TestParityReviewerReadonly/safe-bash-command.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=dup.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=empty.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=flat.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=nonexistent.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=noscenario.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=noshall.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=nothen.golden +1 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid/spec.md.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate/arg=valid.golden +2 -0
- package/engine/testdata/golden/TestParitySpecValidate.golden +1 -0
- package/engine/testdata/golden/TestParityStatusline/full-afk.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/full-hitl.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/no-active.golden +1 -0
- package/engine/testdata/golden/TestParityStatusline/nophase.golden +2 -0
- package/engine/testdata/golden/TestParityStatusline/red.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/bad-cmd.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/custom-window-2.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/dominant.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/few.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/ghost.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/identical.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/no-cmd.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/no-slug.golden +1 -0
- package/engine/testdata/golden/TestParityStuckCheck/nolog.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/pingpong.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/varied.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-04-identical.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-2.5-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-4x-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-leadspace-varied4.golden +2 -0
- package/engine/testdata/golden/TestParityStuckCheck/window-plus4-identical.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent-subagent-type-key.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/devrites-agent.golden +2 -0
- package/engine/testdata/golden/TestParitySubagentOrient/garbage-input.golden +1 -0
- package/engine/testdata/golden/TestParitySubagentOrient/non-devrites-agent.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/assertion-dropped.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/clean.golden +2 -0
- package/engine/testdata/golden/TestParityTestIntegrity/deleted.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/ghost-workspace.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/not-git.golden +1 -0
- package/engine/testdata/golden/TestParityTestIntegrity/skip-added.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/budget1/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/budget1.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/budget3/state.md.golden +5 -0
- package/engine/testdata/golden/TestParityTickAfk/budget3.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/bulletPipe.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/missingField/state.md.golden +3 -0
- package/engine/testdata/golden/TestParityTickAfk/missingField.golden +2 -0
- package/engine/testdata/golden/TestParityTickAfk/missingFile.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/nonNumeric.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/none/state.md.golden +1 -0
- package/engine/testdata/golden/TestParityTickAfk/none.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/agent-required-non-wright.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/devrites-edit-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/in-scope-allowed.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/non-edit-tool.golden +1 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-enforce-denies.golden +2 -0
- package/engine/testdata/golden/TestParityWrightScope/out-of-scope-observe-silent.golden +1 -0
- package/engine/testdata/golden/TestSpecSkeleton/missing-some.golden +2 -0
- package/engine/testdata/golden/TestSpecSkeleton/present-all.golden +2 -0
- package/engine/testdata/golden/TestStatusLiveWorkspace.golden +10 -0
- package/engine/testdata/golden/TestStuckLogHashParity.golden +1 -0
- package/engine/testdata/golden/status/auth-tokens.txt +9 -0
- package/engine/testdata/golden/status/search-ranking.txt +9 -0
- package/engine/tests/adr_0003_gate_exit_code_test.go +32 -0
- package/engine/tests/adr_0004_required_by_phase_test.go +62 -0
- package/engine/tests/adr_0006_clock_seam_test.go +36 -0
- package/engine/tests/budget_test.go +77 -0
- package/engine/tests/cli_test.go +209 -0
- package/engine/tests/concurrency_cli_test.go +125 -0
- package/engine/tests/conventions_test.go +106 -0
- package/engine/tests/doctor_cli_test.go +62 -0
- package/engine/tests/gate_test.go +235 -0
- package/engine/tests/hook_test.go +390 -0
- package/engine/tests/hooks_io_test.go +218 -0
- package/engine/tests/json_contract_test.go +99 -0
- package/engine/tests/lib_parity_test.go +942 -0
- package/engine/tests/meta_test.go +67 -0
- package/engine/tests/migrate_cli_test.go +193 -0
- package/engine/tests/parity_analyze_test.go +55 -0
- package/engine/tests/parity_buildreadiness_test.go +42 -0
- package/engine/tests/parity_closeout_test.go +102 -0
- package/engine/tests/parity_githelpers_test.go +41 -0
- package/engine/tests/parity_learnings_test.go +90 -0
- package/engine/tests/parity_mutationgate_test.go +36 -0
- package/engine/tests/parity_packageexistence_test.go +64 -0
- package/engine/tests/parity_reconcile_test.go +88 -0
- package/engine/tests/parity_resolve_test.go +144 -0
- package/engine/tests/parity_test.go +380 -0
- package/engine/tests/parity_testintegrity_test.go +65 -0
- package/engine/tests/parity_tickafk_test.go +83 -0
- package/engine/validatepack.go +192 -0
- package/engine/validatepack_test.go +79 -0
- package/engine/validatepackskills.go +181 -0
- package/engine/validatepackskills_test.go +171 -0
- package/install.sh +67 -913
- package/pack/.claude/agents/devrites-code-reviewer.md +20 -3
- package/pack/.claude/agents/devrites-devex-reviewer.md +13 -3
- package/pack/.claude/agents/devrites-doubt-reviewer.md +16 -3
- package/pack/.claude/agents/devrites-forge-judge.md +14 -4
- package/pack/.claude/agents/devrites-frontend-reviewer.md +27 -3
- package/pack/.claude/agents/devrites-performance-reviewer.md +18 -2
- package/pack/.claude/agents/devrites-plan-reviewer.md +13 -3
- package/pack/.claude/agents/devrites-retrospector.md +12 -7
- package/pack/.claude/agents/devrites-security-auditor.md +20 -4
- package/pack/.claude/agents/devrites-simplifier-reviewer.md +17 -2
- package/pack/.claude/agents/devrites-slice-wright.md +32 -16
- package/pack/.claude/agents/devrites-spec-reviewer.md +17 -2
- package/pack/.claude/agents/devrites-strategy-reviewer.md +12 -2
- package/pack/.claude/agents/devrites-test-analyst.md +20 -3
- package/pack/.claude/settings.json +58 -8
- package/pack/.claude/skills/devrites-api-interface/SKILL.md +22 -5
- package/pack/.claude/skills/devrites-audit/SKILL.md +1 -1
- package/pack/.claude/skills/devrites-browser-proof/SKILL.md +26 -53
- package/pack/.claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/.claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/.claude/skills/devrites-debug-recovery/SKILL.md +21 -6
- package/pack/.claude/skills/devrites-debug-recovery/reference/build-the-loop.md +11 -0
- package/pack/.claude/skills/devrites-debug-recovery/reference/regression-test.md +2 -3
- package/pack/.claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/.claude/skills/devrites-doubt/SKILL.md +10 -3
- package/pack/.claude/skills/devrites-frontend-craft/SKILL.md +16 -13
- package/pack/.claude/skills/devrites-frontend-craft/reference/craft.md +15 -3
- package/pack/.claude/skills/devrites-frontend-craft/reference/quality-standards.md +19 -0
- package/pack/.claude/skills/devrites-frontend-craft/reference/reuse-first.md +3 -3
- package/pack/.claude/skills/devrites-interview/SKILL.md +30 -7
- package/pack/.claude/skills/devrites-lib/SKILL.md +35 -36
- package/pack/.claude/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/.claude/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/.claude/skills/devrites-lib/reference/parallel-dispatch.md +104 -20
- package/pack/.claude/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/README.md +14 -6
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/afk-hitl.md +10 -18
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/agents.md +81 -16
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/anti-patterns.md +3 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/context-hygiene.md +17 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/core.md +9 -18
- package/pack/.claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/deprecation.md +21 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/developer-experience.md +3 -3
- package/pack/.claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/documentation.md +9 -1
- package/pack/.claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/observability.md +13 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/performance.md +1 -1
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/principles.md +3 -3
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/prose-style.md +18 -2
- package/pack/.claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/security.md +45 -4
- package/pack/.claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/.claude/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/tooling.md +29 -2
- package/pack/.claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/.claude/skills/devrites-prose-craft/SKILL.md +40 -76
- package/pack/.claude/skills/devrites-prose-craft/reference/examples.md +19 -5
- package/pack/.claude/skills/devrites-refresh-indexes/SKILL.md +3 -6
- package/pack/.claude/skills/devrites-source-driven/SKILL.md +17 -1
- package/pack/.claude/skills/devrites-ux-shape/SKILL.md +20 -7
- package/pack/.claude/skills/devrites-ux-shape/reference/brief-template.md +25 -10
- package/pack/.claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +2 -2
- package/pack/.claude/skills/rite/SKILL.md +67 -42
- package/pack/.claude/skills/rite/reference/menu.md +4 -1
- package/pack/.claude/skills/rite-adopt/SKILL.md +31 -22
- package/pack/.claude/skills/rite-adopt/reference/adoption.md +6 -9
- package/pack/.claude/skills/rite-adopt/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-autocomplete/SKILL.md +25 -25
- package/pack/.claude/skills/rite-autocomplete/reference/loop.md +2 -2
- package/pack/.claude/skills/rite-autocomplete/reference/stop-conditions.md +1 -1
- package/pack/.claude/skills/rite-build/SKILL.md +24 -256
- package/pack/.claude/skills/rite-build/reference/afk-discipline.md +3 -3
- package/pack/.claude/skills/rite-build/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint-protocol.md +1 -1
- package/pack/.claude/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/.claude/skills/rite-build/reference/evidence-standard.md +10 -7
- package/pack/.claude/skills/rite-build/reference/forge.md +17 -7
- package/pack/.claude/skills/rite-build/reference/one-slice-cycle.md +2 -0
- package/pack/.claude/skills/rite-build/reference/output.md +41 -0
- package/pack/.claude/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/.claude/skills/rite-build/reference/wright-dispatch.md +11 -10
- package/pack/.claude/skills/rite-converge/SKILL.md +131 -0
- package/pack/.claude/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/.claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/.claude/skills/rite-customize/SKILL.md +67 -0
- package/pack/.claude/skills/rite-define/SKILL.md +76 -93
- package/pack/.claude/skills/rite-define/reference/anti-patterns.md +2 -1
- package/pack/.claude/skills/rite-define/reference/gates.md +3 -3
- package/pack/.claude/skills/rite-define/reference/plan-template.md +35 -6
- package/pack/.claude/skills/rite-doctor/SKILL.md +41 -16
- package/pack/.claude/skills/rite-dogfood/SKILL.md +49 -0
- package/pack/.claude/skills/rite-explain/SKILL.md +148 -0
- package/pack/.claude/skills/rite-explain/reference/intake.md +79 -0
- package/pack/.claude/skills/rite-frame/SKILL.md +14 -15
- package/pack/.claude/skills/rite-frame/reference/failure-modes.md +1 -1
- package/pack/.claude/skills/rite-handoff/SKILL.md +19 -17
- package/pack/.claude/skills/rite-handoff/reference/handoff-template.md +16 -6
- package/pack/.claude/skills/rite-learn/SKILL.md +46 -24
- package/pack/.claude/skills/rite-plan/SKILL.md +35 -26
- package/pack/.claude/skills/rite-plan/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-plan/reference/dependency-graph.md +3 -3
- package/pack/.claude/skills/rite-plan/reference/slicing.md +20 -7
- package/pack/.claude/skills/rite-plan/reference/task-breakdown.md +15 -16
- package/pack/.claude/skills/rite-polish/SKILL.md +18 -23
- package/pack/.claude/skills/rite-polish/reference/anti-ai-slop.md +31 -2
- package/pack/.claude/skills/rite-polish/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-polish/reference/code.md +16 -5
- package/pack/.claude/skills/rite-polish/reference/design-system-discovery.md +5 -32
- package/pack/.claude/skills/rite-pov/SKILL.md +46 -0
- package/pack/.claude/skills/rite-pr-feedback/SKILL.md +49 -0
- package/pack/.claude/skills/rite-pressure-test/SKILL.md +40 -10
- package/pack/.claude/skills/rite-prototype/SKILL.md +23 -2
- package/pack/.claude/skills/rite-prove/SKILL.md +41 -96
- package/pack/.claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/.claude/skills/rite-prove/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-prove/reference/browser-proof.md +36 -13
- package/pack/.claude/skills/rite-quick/SKILL.md +19 -12
- package/pack/.claude/skills/rite-resolve/SKILL.md +21 -25
- package/pack/.claude/skills/rite-resolve/reference/answer-protocol.md +2 -2
- package/pack/.claude/skills/rite-review/SKILL.md +43 -45
- package/pack/.claude/skills/rite-review/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-review/reference/performance-checklist.md +1 -1
- package/pack/.claude/skills/rite-review/reference/performance-review.md +4 -22
- package/pack/.claude/skills/rite-review/reference/security-review.md +2 -2
- package/pack/.claude/skills/rite-seal/SKILL.md +40 -174
- package/pack/.claude/skills/rite-seal/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-seal/reference/conventions-ledger.md +6 -9
- package/pack/.claude/skills/rite-seal/reference/final-evidence.md +6 -14
- package/pack/.claude/skills/rite-seal/reference/go-no-go.md +3 -3
- package/pack/.claude/skills/rite-seal/reference/output.md +7 -0
- package/pack/.claude/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/.claude/skills/rite-seal/reference/seal-template.md +1 -1
- package/pack/.claude/skills/rite-ship/SKILL.md +45 -75
- package/pack/.claude/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/.claude/skills/rite-ship/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-ship/reference/close-out.md +12 -1
- package/pack/.claude/skills/rite-ship/reference/design-memory.md +2 -2
- package/pack/.claude/skills/rite-ship/reference/git-ship.md +32 -1
- package/pack/.claude/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/.claude/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/.claude/skills/rite-spec/SKILL.md +108 -60
- package/pack/.claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/.claude/skills/rite-spec/reference/anti-patterns.md +4 -1
- package/pack/.claude/skills/rite-spec/reference/investigation.md +34 -14
- package/pack/.claude/skills/rite-spec/reference/question-protocol.md +7 -37
- package/pack/.claude/skills/rite-spec/reference/references-intake.md +23 -18
- package/pack/.claude/skills/rite-spec/reference/spec-template.md +94 -118
- package/pack/.claude/skills/rite-spec/reference/state-workspace.md +128 -139
- package/pack/.claude/skills/rite-status/SKILL.md +26 -22
- package/pack/.claude/skills/rite-temper/SKILL.md +34 -27
- package/pack/.claude/skills/rite-temper/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/scope-modes.md +1 -1
- package/pack/.claude/skills/rite-temper/reference/significance.md +1 -1
- package/pack/.claude/skills/rite-vet/SKILL.md +58 -70
- package/pack/.claude/skills/rite-vet/reference/anti-patterns.md +1 -1
- package/pack/.claude/skills/rite-vet/reference/cross-model.md +7 -5
- package/pack/.claude/skills/rite-vet/reference/depth.md +1 -1
- package/pack/.claude/skills/rite-vet/reference/review-axes.md +3 -3
- package/pack/.claude/skills/rite-zoom-out/SKILL.md +16 -17
- package/pack/generated/README.md +10 -0
- package/pack/generated/claude/agents/devrites-code-reviewer.md +103 -0
- package/pack/generated/claude/agents/devrites-devex-reviewer.md +104 -0
- package/pack/generated/claude/agents/devrites-doubt-reviewer.md +68 -0
- package/pack/generated/claude/agents/devrites-forge-judge.md +102 -0
- package/pack/generated/claude/agents/devrites-frontend-reviewer.md +84 -0
- package/pack/generated/claude/agents/devrites-performance-reviewer.md +111 -0
- package/pack/generated/claude/agents/devrites-plan-reviewer.md +89 -0
- package/pack/generated/claude/agents/devrites-retrospector.md +96 -0
- package/pack/generated/claude/agents/devrites-security-auditor.md +85 -0
- package/pack/generated/claude/agents/devrites-simplifier-reviewer.md +90 -0
- package/pack/generated/claude/agents/devrites-slice-wright.md +210 -0
- package/pack/generated/claude/agents/devrites-spec-reviewer.md +87 -0
- package/pack/generated/claude/agents/devrites-strategy-reviewer.md +72 -0
- package/pack/generated/claude/agents/devrites-test-analyst.md +64 -0
- package/pack/generated/claude/settings.json +103 -0
- package/pack/generated/claude/skills/devrites-api-interface/SKILL.md +61 -0
- package/pack/generated/claude/skills/devrites-audit/SKILL.md +73 -0
- package/pack/generated/claude/skills/devrites-browser-proof/SKILL.md +76 -0
- package/pack/generated/claude/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/claude/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/SKILL.md +65 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/claude/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/claude/skills/devrites-doubt/SKILL.md +82 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/SKILL.md +99 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/craft.md +71 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/generated/claude/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/generated/claude/skills/devrites-interview/SKILL.md +104 -0
- package/pack/generated/claude/skills/devrites-lib/SKILL.md +82 -0
- package/pack/generated/claude/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/generated/claude/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
- package/pack/generated/claude/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/README.md +61 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/agents.md +192 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/coding-style.md +55 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/core.md +119 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/deprecation.md +71 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/documentation.md +35 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/error-handling.md +33 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/hooks.md +38 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/observability.md +73 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/patterns.md +48 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/performance.md +36 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/principles.md +158 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/prose-style.md +117 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/security.md +135 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/generated/claude/skills/devrites-lib/reference/standards/tooling.md +99 -0
- package/pack/generated/claude/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/generated/claude/skills/devrites-prose-craft/SKILL.md +69 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/examples.md +102 -0
- package/pack/generated/claude/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/generated/claude/skills/devrites-refresh-indexes/SKILL.md +51 -0
- package/pack/generated/claude/skills/devrites-source-driven/SKILL.md +52 -0
- package/pack/generated/claude/skills/devrites-ux-shape/SKILL.md +134 -0
- package/pack/generated/claude/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/claude/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/claude/skills/rite/SKILL.md +142 -0
- package/pack/generated/claude/skills/rite/reference/menu.md +42 -0
- package/pack/generated/claude/skills/rite-adopt/SKILL.md +104 -0
- package/pack/generated/claude/skills/rite-adopt/reference/adoption.md +55 -0
- package/pack/generated/claude/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/claude/skills/rite-autocomplete/SKILL.md +98 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/generated/claude/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/generated/claude/skills/rite-build/SKILL.md +84 -0
- package/pack/generated/claude/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/claude/skills/rite-build/reference/anti-patterns.md +37 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/generated/claude/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/claude/skills/rite-build/reference/evidence-standard.md +35 -0
- package/pack/generated/claude/skills/rite-build/reference/forge.md +181 -0
- package/pack/generated/claude/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/claude/skills/rite-build/reference/one-slice-cycle.md +42 -0
- package/pack/generated/claude/skills/rite-build/reference/output.md +41 -0
- package/pack/generated/claude/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/generated/claude/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/generated/claude/skills/rite-build/reference/tdd.md +26 -0
- package/pack/generated/claude/skills/rite-build/reference/wright-dispatch.md +140 -0
- package/pack/generated/claude/skills/rite-converge/SKILL.md +131 -0
- package/pack/generated/claude/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/claude/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/generated/claude/skills/rite-customize/SKILL.md +67 -0
- package/pack/generated/claude/skills/rite-define/SKILL.md +153 -0
- package/pack/generated/claude/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/claude/skills/rite-define/reference/gates.md +152 -0
- package/pack/generated/claude/skills/rite-define/reference/plan-template.md +94 -0
- package/pack/generated/claude/skills/rite-doctor/SKILL.md +76 -0
- package/pack/generated/claude/skills/rite-dogfood/SKILL.md +49 -0
- package/pack/generated/claude/skills/rite-explain/SKILL.md +148 -0
- package/pack/generated/claude/skills/rite-explain/reference/intake.md +79 -0
- package/pack/generated/claude/skills/rite-frame/SKILL.md +120 -0
- package/pack/generated/claude/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/generated/claude/skills/rite-handoff/SKILL.md +97 -0
- package/pack/generated/claude/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/claude/skills/rite-learn/SKILL.md +117 -0
- package/pack/generated/claude/skills/rite-plan/SKILL.md +95 -0
- package/pack/generated/claude/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/generated/claude/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/generated/claude/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/generated/claude/skills/rite-plan/reference/slicing.md +65 -0
- package/pack/generated/claude/skills/rite-plan/reference/task-breakdown.md +33 -0
- package/pack/generated/claude/skills/rite-polish/SKILL.md +87 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-ai-slop.md +206 -0
- package/pack/generated/claude/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/claude/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/claude/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/generated/claude/skills/rite-polish/reference/code.md +100 -0
- package/pack/generated/claude/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/claude/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/claude/skills/rite-polish/reference/ui.md +136 -0
- package/pack/generated/claude/skills/rite-pov/SKILL.md +46 -0
- package/pack/generated/claude/skills/rite-pr-feedback/SKILL.md +49 -0
- package/pack/generated/claude/skills/rite-pressure-test/SKILL.md +74 -0
- package/pack/generated/claude/skills/rite-prototype/SKILL.md +110 -0
- package/pack/generated/claude/skills/rite-prove/SKILL.md +104 -0
- package/pack/generated/claude/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/generated/claude/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/claude/skills/rite-prove/reference/browser-proof.md +49 -0
- package/pack/generated/claude/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/generated/claude/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/claude/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/claude/skills/rite-quick/SKILL.md +93 -0
- package/pack/generated/claude/skills/rite-resolve/SKILL.md +109 -0
- package/pack/generated/claude/skills/rite-resolve/reference/answer-protocol.md +115 -0
- package/pack/generated/claude/skills/rite-review/SKILL.md +171 -0
- package/pack/generated/claude/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/claude/skills/rite-review/reference/cognitive-load.md +92 -0
- package/pack/generated/claude/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/claude/skills/rite-review/reference/five-axis-review.md +60 -0
- package/pack/generated/claude/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/generated/claude/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/claude/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/claude/skills/rite-review/reference/security-review.md +37 -0
- package/pack/generated/claude/skills/rite-seal/SKILL.md +101 -0
- package/pack/generated/claude/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-seal/reference/conventions-ledger.md +60 -0
- package/pack/generated/claude/skills/rite-seal/reference/final-evidence.md +64 -0
- package/pack/generated/claude/skills/rite-seal/reference/go-no-go.md +53 -0
- package/pack/generated/claude/skills/rite-seal/reference/output.md +7 -0
- package/pack/generated/claude/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/generated/claude/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/generated/claude/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/generated/claude/skills/rite-ship/SKILL.md +111 -0
- package/pack/generated/claude/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/generated/claude/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/generated/claude/skills/rite-ship/reference/close-out.md +42 -0
- package/pack/generated/claude/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/generated/claude/skills/rite-ship/reference/git-ship.md +73 -0
- package/pack/generated/claude/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/generated/claude/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/generated/claude/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/generated/claude/skills/rite-spec/SKILL.md +217 -0
- package/pack/generated/claude/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/claude/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/generated/claude/skills/rite-spec/reference/anti-patterns.md +28 -0
- package/pack/generated/claude/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/claude/skills/rite-spec/reference/investigation.md +84 -0
- package/pack/generated/claude/skills/rite-spec/reference/question-protocol.md +31 -0
- package/pack/generated/claude/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/generated/claude/skills/rite-spec/reference/spec-template.md +110 -0
- package/pack/generated/claude/skills/rite-spec/reference/state-workspace.md +156 -0
- package/pack/generated/claude/skills/rite-status/SKILL.md +107 -0
- package/pack/generated/claude/skills/rite-temper/SKILL.md +126 -0
- package/pack/generated/claude/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/generated/claude/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/claude/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/claude/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/claude/skills/rite-vet/SKILL.md +175 -0
- package/pack/generated/claude/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/generated/claude/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/generated/claude/skills/rite-vet/reference/cross-model.md +43 -0
- package/pack/generated/claude/skills/rite-vet/reference/depth.md +53 -0
- package/pack/generated/claude/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/claude/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/generated/claude/skills/rite-zoom-out/SKILL.md +75 -0
- package/pack/generated/codex/AGENTS.md +23 -0
- package/pack/generated/codex/agents/devrites-code-reviewer.toml +101 -0
- package/pack/generated/codex/agents/devrites-devex-reviewer.toml +102 -0
- package/pack/generated/codex/agents/devrites-doubt-reviewer.toml +66 -0
- package/pack/generated/codex/agents/devrites-forge-judge.toml +100 -0
- package/pack/generated/codex/agents/devrites-frontend-reviewer.toml +80 -0
- package/pack/generated/codex/agents/devrites-performance-reviewer.toml +109 -0
- package/pack/generated/codex/agents/devrites-plan-reviewer.toml +93 -0
- package/pack/generated/codex/agents/devrites-retrospector.toml +94 -0
- package/pack/generated/codex/agents/devrites-security-auditor.toml +83 -0
- package/pack/generated/codex/agents/devrites-simplifier-reviewer.toml +88 -0
- package/pack/generated/codex/agents/devrites-slice-wright.toml +207 -0
- package/pack/generated/codex/agents/devrites-spec-reviewer.toml +85 -0
- package/pack/generated/codex/agents/devrites-strategy-reviewer.toml +76 -0
- package/pack/generated/codex/agents/devrites-test-analyst.toml +62 -0
- package/pack/generated/codex/hooks.json +151 -0
- package/pack/generated/codex/skills/devrites-api-interface/SKILL.md +73 -0
- package/pack/generated/codex/skills/devrites-api-interface/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-audit/SKILL.md +85 -0
- package/pack/generated/codex/skills/devrites-audit/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-browser-proof/SKILL.md +88 -0
- package/pack/generated/codex/skills/devrites-browser-proof/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-browser-proof/reference/browser-performance.md +15 -0
- package/pack/generated/codex/skills/devrites-browser-proof/reference/visual-verdict.md +34 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/SKILL.md +77 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/build-the-loop.md +58 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/cleanup-and-classify.md +17 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/hypotheses.md +17 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/instrumentation.md +21 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/regression-test.md +30 -0
- package/pack/generated/codex/skills/devrites-debug-recovery/reference/trace.md +25 -0
- package/pack/generated/codex/skills/devrites-doubt/SKILL.md +94 -0
- package/pack/generated/codex/skills/devrites-doubt/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/SKILL.md +111 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/craft.md +71 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/design-references.md +116 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/fullstack.md +45 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/quality-standards.md +234 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/reuse-first.md +59 -0
- package/pack/generated/codex/skills/devrites-frontend-craft/reference/shape.md +60 -0
- package/pack/generated/codex/skills/devrites-interview/SKILL.md +116 -0
- package/pack/generated/codex/skills/devrites-interview/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-lib/SKILL.md +94 -0
- package/pack/generated/codex/skills/devrites-lib/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-lib/reference/intent-map.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/model-tiers.md +43 -0
- package/pack/generated/codex/skills/devrites-lib/reference/parallel-dispatch.md +165 -0
- package/pack/generated/codex/skills/devrites-lib/reference/reply-contract.md +111 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/README.md +61 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/afk-hitl.md +243 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/agents.md +192 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/anti-patterns.md +58 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/browser-proof-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/ci-cd.md +62 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/code-review.md +141 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/coding-style.md +55 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/context-hygiene.md +114 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/core.md +119 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/definition-of-done.md +16 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/deprecation.md +71 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/developer-experience.md +119 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/development-workflow.md +51 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/documentation.md +35 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/edge-case-trace.md +19 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/elicitation.md +80 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/error-handling.md +33 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/git-workflow.md +65 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/hooks.md +38 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/observability.md +73 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/patterns.md +48 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/performance.md +36 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/principles.md +158 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/prose-style.md +117 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/release/ship-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/review-checklist.md +10 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/security.md +135 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/skill-authoring.md +105 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/spec-grammar.md +185 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/test-proof-checklist.md +9 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/testing.md +162 -0
- package/pack/generated/codex/skills/devrites-lib/reference/standards/tooling.md +99 -0
- package/pack/generated/codex/skills/devrites-lib/reference/workspace-artifact-schema.md +110 -0
- package/pack/generated/codex/skills/devrites-prose-craft/SKILL.md +81 -0
- package/pack/generated/codex/skills/devrites-prose-craft/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/banned-phrases.md +95 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/examples.md +102 -0
- package/pack/generated/codex/skills/devrites-prose-craft/reference/structures.md +134 -0
- package/pack/generated/codex/skills/devrites-refresh-indexes/SKILL.md +63 -0
- package/pack/generated/codex/skills/devrites-refresh-indexes/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-source-driven/SKILL.md +64 -0
- package/pack/generated/codex/skills/devrites-source-driven/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/SKILL.md +146 -0
- package/pack/generated/codex/skills/devrites-ux-shape/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/devrites-ux-shape/reference/brief-template.md +108 -0
- package/pack/generated/codex/skills/devrites-ux-shape/reference/visual-direction-probe.md +48 -0
- package/pack/generated/codex/skills/rite/SKILL.md +154 -0
- package/pack/generated/codex/skills/rite/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite/reference/menu.md +42 -0
- package/pack/generated/codex/skills/rite-adopt/SKILL.md +116 -0
- package/pack/generated/codex/skills/rite-adopt/reference/adoption.md +55 -0
- package/pack/generated/codex/skills/rite-adopt/reference/anti-patterns.md +19 -0
- package/pack/generated/codex/skills/rite-autocomplete/SKILL.md +110 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/decision-policy.md +35 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/loop.md +54 -0
- package/pack/generated/codex/skills/rite-autocomplete/reference/stop-conditions.md +59 -0
- package/pack/generated/codex/skills/rite-build/SKILL.md +96 -0
- package/pack/generated/codex/skills/rite-build/reference/afk-discipline.md +145 -0
- package/pack/generated/codex/skills/rite-build/reference/anti-patterns.md +37 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint-protocol.md +149 -0
- package/pack/generated/codex/skills/rite-build/reference/checkpoint.md +44 -0
- package/pack/generated/codex/skills/rite-build/reference/evidence-standard.md +35 -0
- package/pack/generated/codex/skills/rite-build/reference/forge.md +181 -0
- package/pack/generated/codex/skills/rite-build/reference/frontend-trigger.md +39 -0
- package/pack/generated/codex/skills/rite-build/reference/one-slice-cycle.md +42 -0
- package/pack/generated/codex/skills/rite-build/reference/output.md +41 -0
- package/pack/generated/codex/skills/rite-build/reference/phase-contract.md +258 -0
- package/pack/generated/codex/skills/rite-build/reference/spec-drift-guard.md +43 -0
- package/pack/generated/codex/skills/rite-build/reference/tdd.md +26 -0
- package/pack/generated/codex/skills/rite-build/reference/wright-dispatch.md +140 -0
- package/pack/generated/codex/skills/rite-converge/SKILL.md +143 -0
- package/pack/generated/codex/skills/rite-converge/reference/anti-patterns.md +35 -0
- package/pack/generated/codex/skills/rite-converge/reference/convergence-assessment.md +61 -0
- package/pack/generated/codex/skills/rite-customize/SKILL.md +79 -0
- package/pack/generated/codex/skills/rite-customize/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-define/SKILL.md +165 -0
- package/pack/generated/codex/skills/rite-define/reference/anti-patterns.md +26 -0
- package/pack/generated/codex/skills/rite-define/reference/gates.md +152 -0
- package/pack/generated/codex/skills/rite-define/reference/plan-template.md +94 -0
- package/pack/generated/codex/skills/rite-doctor/SKILL.md +88 -0
- package/pack/generated/codex/skills/rite-dogfood/SKILL.md +61 -0
- package/pack/generated/codex/skills/rite-dogfood/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-explain/SKILL.md +160 -0
- package/pack/generated/codex/skills/rite-explain/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-explain/reference/intake.md +79 -0
- package/pack/generated/codex/skills/rite-frame/SKILL.md +132 -0
- package/pack/generated/codex/skills/rite-frame/reference/failure-modes.md +68 -0
- package/pack/generated/codex/skills/rite-handoff/SKILL.md +109 -0
- package/pack/generated/codex/skills/rite-handoff/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-handoff/reference/handoff-template.md +44 -0
- package/pack/generated/codex/skills/rite-learn/SKILL.md +129 -0
- package/pack/generated/codex/skills/rite-learn/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-plan/SKILL.md +107 -0
- package/pack/generated/codex/skills/rite-plan/reference/anti-patterns.md +24 -0
- package/pack/generated/codex/skills/rite-plan/reference/dependency-graph.md +33 -0
- package/pack/generated/codex/skills/rite-plan/reference/replan-and-repair.md +42 -0
- package/pack/generated/codex/skills/rite-plan/reference/slicing.md +65 -0
- package/pack/generated/codex/skills/rite-plan/reference/task-breakdown.md +33 -0
- package/pack/generated/codex/skills/rite-polish/SKILL.md +99 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-ai-slop.md +206 -0
- package/pack/generated/codex/skills/rite-polish/reference/anti-patterns.md +30 -0
- package/pack/generated/codex/skills/rite-polish/reference/backend-polish.md +80 -0
- package/pack/generated/codex/skills/rite-polish/reference/browser-polish-evidence.md +31 -0
- package/pack/generated/codex/skills/rite-polish/reference/code.md +100 -0
- package/pack/generated/codex/skills/rite-polish/reference/design-system-discovery.md +8 -0
- package/pack/generated/codex/skills/rite-polish/reference/harden-checklist.md +109 -0
- package/pack/generated/codex/skills/rite-polish/reference/ui.md +136 -0
- package/pack/generated/codex/skills/rite-pov/SKILL.md +58 -0
- package/pack/generated/codex/skills/rite-pr-feedback/SKILL.md +61 -0
- package/pack/generated/codex/skills/rite-pr-feedback/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-pressure-test/SKILL.md +86 -0
- package/pack/generated/codex/skills/rite-prototype/SKILL.md +122 -0
- package/pack/generated/codex/skills/rite-prototype/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-prove/SKILL.md +116 -0
- package/pack/generated/codex/skills/rite-prove/reference/acceptance-proof.md +48 -0
- package/pack/generated/codex/skills/rite-prove/reference/anti-patterns.md +25 -0
- package/pack/generated/codex/skills/rite-prove/reference/browser-proof.md +49 -0
- package/pack/generated/codex/skills/rite-prove/reference/failure-triage.md +25 -0
- package/pack/generated/codex/skills/rite-prove/reference/proof-ladder.md +28 -0
- package/pack/generated/codex/skills/rite-prove/reference/test-command-discovery.md +30 -0
- package/pack/generated/codex/skills/rite-quick/SKILL.md +105 -0
- package/pack/generated/codex/skills/rite-resolve/SKILL.md +121 -0
- package/pack/generated/codex/skills/rite-resolve/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-resolve/reference/answer-protocol.md +115 -0
- package/pack/generated/codex/skills/rite-review/SKILL.md +183 -0
- package/pack/generated/codex/skills/rite-review/reference/anti-patterns.md +32 -0
- package/pack/generated/codex/skills/rite-review/reference/cognitive-load.md +92 -0
- package/pack/generated/codex/skills/rite-review/reference/feature-scoped-review.md +26 -0
- package/pack/generated/codex/skills/rite-review/reference/five-axis-review.md +60 -0
- package/pack/generated/codex/skills/rite-review/reference/nielsen-heuristics.md +130 -0
- package/pack/generated/codex/skills/rite-review/reference/performance-checklist.md +80 -0
- package/pack/generated/codex/skills/rite-review/reference/performance-review.md +14 -0
- package/pack/generated/codex/skills/rite-review/reference/security-review.md +37 -0
- package/pack/generated/codex/skills/rite-seal/SKILL.md +113 -0
- package/pack/generated/codex/skills/rite-seal/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-seal/reference/conventions-ledger.md +60 -0
- package/pack/generated/codex/skills/rite-seal/reference/final-evidence.md +64 -0
- package/pack/generated/codex/skills/rite-seal/reference/go-no-go.md +53 -0
- package/pack/generated/codex/skills/rite-seal/reference/output.md +7 -0
- package/pack/generated/codex/skills/rite-seal/reference/phase-contract.md +211 -0
- package/pack/generated/codex/skills/rite-seal/reference/risk-and-rollback.md +30 -0
- package/pack/generated/codex/skills/rite-seal/reference/seal-template.md +36 -0
- package/pack/generated/codex/skills/rite-ship/SKILL.md +123 -0
- package/pack/generated/codex/skills/rite-ship/reference/adr-promotion.md +9 -0
- package/pack/generated/codex/skills/rite-ship/reference/anti-patterns.md +25 -0
- package/pack/generated/codex/skills/rite-ship/reference/close-out.md +42 -0
- package/pack/generated/codex/skills/rite-ship/reference/design-memory.md +120 -0
- package/pack/generated/codex/skills/rite-ship/reference/git-ship.md +73 -0
- package/pack/generated/codex/skills/rite-ship/reference/ledger.md +56 -0
- package/pack/generated/codex/skills/rite-ship/reference/rollout.md +43 -0
- package/pack/generated/codex/skills/rite-ship/reference/ship-template.md +33 -0
- package/pack/generated/codex/skills/rite-spec/SKILL.md +229 -0
- package/pack/generated/codex/skills/rite-spec/reference/acceptance-criteria.md +31 -0
- package/pack/generated/codex/skills/rite-spec/reference/ai-spec-template.md +33 -0
- package/pack/generated/codex/skills/rite-spec/reference/anti-patterns.md +28 -0
- package/pack/generated/codex/skills/rite-spec/reference/interview-patterns.md +56 -0
- package/pack/generated/codex/skills/rite-spec/reference/investigation.md +84 -0
- package/pack/generated/codex/skills/rite-spec/reference/question-protocol.md +31 -0
- package/pack/generated/codex/skills/rite-spec/reference/references-intake.md +62 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-checklists.md +73 -0
- package/pack/generated/codex/skills/rite-spec/reference/spec-template.md +110 -0
- package/pack/generated/codex/skills/rite-spec/reference/state-workspace.md +156 -0
- package/pack/generated/codex/skills/rite-status/SKILL.md +119 -0
- package/pack/generated/codex/skills/rite-status/agents/openai.yaml +2 -0
- package/pack/generated/codex/skills/rite-temper/SKILL.md +138 -0
- package/pack/generated/codex/skills/rite-temper/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-temper/reference/review-dimensions.md +65 -0
- package/pack/generated/codex/skills/rite-temper/reference/scope-modes.md +53 -0
- package/pack/generated/codex/skills/rite-temper/reference/significance.md +46 -0
- package/pack/generated/codex/skills/rite-temper/reference/strategy-template.md +90 -0
- package/pack/generated/codex/skills/rite-vet/SKILL.md +187 -0
- package/pack/generated/codex/skills/rite-vet/reference/anti-patterns.md +29 -0
- package/pack/generated/codex/skills/rite-vet/reference/artifacts.md +135 -0
- package/pack/generated/codex/skills/rite-vet/reference/cross-model.md +43 -0
- package/pack/generated/codex/skills/rite-vet/reference/depth.md +53 -0
- package/pack/generated/codex/skills/rite-vet/reference/eng-lenses.md +48 -0
- package/pack/generated/codex/skills/rite-vet/reference/review-axes.md +167 -0
- package/pack/generated/codex/skills/rite-zoom-out/SKILL.md +87 -0
- package/pack/generated/codex/skills/rite-zoom-out/agents/openai.yaml +2 -0
- package/package.json +8 -4
- package/scripts/build-binaries.sh +75 -0
- package/scripts/build-host-artifacts.sh +100 -0
- package/scripts/build-release-tarball.sh +16 -2
- package/scripts/check-cross-refs.py +17 -3
- package/scripts/check-generated-skill-budget.mjs +41 -0
- package/scripts/check-instruction-size-baseline.mjs +79 -0
- package/scripts/check-invocation-integrity.py +113 -0
- package/scripts/check-no-global-writes.sh +22 -0
- package/scripts/check-no-personal-paths.py +50 -0
- package/scripts/check-reference-governance.mjs +82 -0
- package/scripts/check-reply-contract.sh +64 -0
- package/scripts/check-rule-uniqueness.sh +4 -32
- package/scripts/codex-generate.sh +300 -0
- package/scripts/devrites-detect.sh +2 -1
- package/scripts/eval-runner.py +4 -2
- package/scripts/eval-scorer.mjs +46 -0
- package/scripts/grade-feature.sh +24 -7
- package/scripts/install-lib.sh +112 -19
- package/scripts/pin.sh +4 -4
- package/scripts/release-check.sh +71 -0
- package/scripts/run-behavioral-evals.sh +34 -2
- package/scripts/run-evals.sh +45 -30
- package/scripts/run-live-behavioral-evals.py +180 -0
- package/scripts/run-outcome-evals.sh +27 -0
- package/scripts/run-routing-evals.py +342 -0
- package/scripts/run-tests.mjs +203 -0
- package/scripts/skill-pruning-audit.mjs +120 -0
- package/scripts/skills-inventory.mjs +107 -0
- package/scripts/validate-agent-composition.py +57 -0
- package/scripts/validate-command-parity.py +70 -0
- package/scripts/validate-frontmatter.py +43 -7
- package/scripts/validate-skill-anatomy.py +139 -0
- package/scripts/validate-workflow-security.py +22 -3
- package/scripts/validate-workspace-schema.py +512 -0
- package/scripts/validate.sh +174 -34
- package/uninstall.sh +22 -183
- package/update.sh +29 -185
- package/docs/cli-mcp.md +0 -62
- package/mcp/devrites-mcp.mjs +0 -105
- package/pack/.claude/hooks/devrites-a1-guard.sh +0 -99
- package/pack/.claude/hooks/devrites-allow.sh +0 -44
- package/pack/.claude/hooks/devrites-cursor.sh +0 -28
- package/pack/.claude/hooks/devrites-orient.sh +0 -53
- package/pack/.claude/hooks/devrites-redwatch.sh +0 -39
- package/pack/.claude/hooks/devrites-refresh-indexes.sh +0 -127
- package/pack/.claude/hooks/devrites-reviewer-readonly.sh +0 -37
- package/pack/.claude/hooks/devrites-statusline.sh +0 -18
- package/pack/.claude/hooks/devrites-stop-gate.sh +0 -45
- package/pack/.claude/hooks/devrites-wright-scope.sh +0 -64
- package/pack/.claude/hooks/hooks.json +0 -52
- package/pack/.claude/rules/code-review.md +0 -48
- package/pack/.claude/rules/development-workflow.md +0 -40
- package/pack/.claude/rules/git-workflow.md +0 -35
- package/pack/.claude/rules/spec-grammar.md +0 -106
- package/pack/.claude/rules/testing.md +0 -88
- package/pack/.claude/skills/devrites-lib/scripts/analyze.sh +0 -78
- package/pack/.claude/skills/devrites-lib/scripts/check-acceptance.sh +0 -75
- package/pack/.claude/skills/devrites-lib/scripts/close-out.sh +0 -47
- package/pack/.claude/skills/devrites-lib/scripts/conventions.py +0 -273
- package/pack/.claude/skills/devrites-lib/scripts/coverage.sh +0 -51
- package/pack/.claude/skills/devrites-lib/scripts/devrites.sh +0 -77
- package/pack/.claude/skills/devrites-lib/scripts/doctor.sh +0 -156
- package/pack/.claude/skills/devrites-lib/scripts/doubt-coverage.sh +0 -59
- package/pack/.claude/skills/devrites-lib/scripts/evidence-fresh.sh +0 -63
- package/pack/.claude/skills/devrites-lib/scripts/footprint.sh +0 -45
- package/pack/.claude/skills/devrites-lib/scripts/learnings.sh +0 -74
- package/pack/.claude/skills/devrites-lib/scripts/mutation-gate.sh +0 -52
- package/pack/.claude/skills/devrites-lib/scripts/package-existence.sh +0 -68
- package/pack/.claude/skills/devrites-lib/scripts/preamble.sh +0 -76
- package/pack/.claude/skills/devrites-lib/scripts/progress.sh +0 -103
- package/pack/.claude/skills/devrites-lib/scripts/readiness.sh +0 -62
- package/pack/.claude/skills/devrites-lib/scripts/reconcile.sh +0 -123
- package/pack/.claude/skills/devrites-lib/scripts/resolve.sh +0 -279
- package/pack/.claude/skills/devrites-lib/scripts/rites.sh +0 -41
- package/pack/.claude/skills/devrites-lib/scripts/spec-validate.sh +0 -130
- package/pack/.claude/skills/devrites-lib/scripts/stuck.sh +0 -67
- package/pack/.claude/skills/devrites-lib/scripts/test-integrity.sh +0 -87
- package/pack/.claude/skills/devrites-lib/scripts/tick-afk.sh +0 -52
- package/scripts/merge-codex-hooks.mjs +0 -78
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/coding-style.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/error-handling.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/hooks.md +0 -0
- /package/pack/.claude/{rules → skills/devrites-lib/reference/standards}/patterns.md +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Checkpoint protocol — what `/rite-build` does when a slice is HITL
|
|
2
|
+
|
|
3
|
+
When `/rite-build` reaches a slice with `Mode: HITL`, it does **not** start writing code. It
|
|
4
|
+
surfaces the checkpoint as a ranked **option set** and resolves it **before** any code lands:
|
|
5
|
+
|
|
6
|
+
- **Human present (interactive)** — ask inline via `AskUserQuestion` (the option set below).
|
|
7
|
+
The human picks; record the pick to `questions.md` (`answered`) + `decisions.md`, clear the
|
|
8
|
+
gate, and **continue building in place** — no STOP, no `/rite-resolve` round-trip.
|
|
9
|
+
- **Human absent / AFK-pausing / notify-only** — persist the checkpoint (`questions.md` open +
|
|
10
|
+
`state.md` `Awaiting human`), fire the `notify:` hook, and **stop**. Resume later via
|
|
11
|
+
`/rite-resolve` (or `--batch`).
|
|
12
|
+
|
|
13
|
+
Either way the pause is **pre-action**, not post-action: code never lands before the gate.
|
|
14
|
+
|
|
15
|
+
## Render contract
|
|
16
|
+
|
|
17
|
+
The checkpoint must be rendered in user-facing output **and** persisted to the workspace.
|
|
18
|
+
Both are required — the output is for the human in the room (or the notification target),
|
|
19
|
+
the persisted form is for the next session or the AFK observer.
|
|
20
|
+
|
|
21
|
+
### User-facing render — the option set
|
|
22
|
+
|
|
23
|
+
Present the checkpoint as an `AskUserQuestion` with a ranked **option set**
|
|
24
|
+
(`afk-hitl.md` → "Option set"): 2–4 options, **recommended first** + labelled `(Recommended)`,
|
|
25
|
+
each option's description carrying the dimension-tagged rationale + the trade-off it accepts,
|
|
26
|
+
plus the escape hatch. The header names the slice + gate:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Slice <N — name> — HITL (<gate>, SLA <SLA>). <Checkpoint text from tasks.md>
|
|
30
|
+
|
|
31
|
+
▸ 1. <recommended> (Recommended)
|
|
32
|
+
logic: … · infra: … · business: … · architecture: … (+ security/UX/risk if in scope)
|
|
33
|
+
2. <alternative> — <rationale + the trade-off it accepts>
|
|
34
|
+
3. <alternative> — <rationale>
|
|
35
|
+
4. Something else — I'll describe it
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The recommended option (#1) is **required** — a checkpoint without a recommendation is a worse
|
|
39
|
+
interrupt than one with shape; the human reacts to a ranked draft faster than to a blank prompt
|
|
40
|
+
(the "give the human something to approve" rule). The recommendation reflects *this* project
|
|
41
|
+
(its conventions, stack, scale), not a generic default. On an interactive pick, resolve in
|
|
42
|
+
place; when persisting a pause instead, the same set is written to `questions.md` `options:`
|
|
43
|
+
and the resume line is `/rite-resolve <qid> "<answer>"` (or `--drop <qid> "<reason>"`).
|
|
44
|
+
|
|
45
|
+
### Workspace mutations
|
|
46
|
+
|
|
47
|
+
In one atomic write (one `state.md` rewrite + one `questions.md` append):
|
|
48
|
+
|
|
49
|
+
1. **`questions.md` append:**
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## q-<YYYY-MM-DD>-<NNN>
|
|
53
|
+
status: open
|
|
54
|
+
slice: <N — name>
|
|
55
|
+
gate: <gate from tasks.md>
|
|
56
|
+
question: <Checkpoint text from tasks.md>
|
|
57
|
+
options: | # the ranked set, recommended first (matches the render)
|
|
58
|
+
1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
|
|
59
|
+
2. <alternative> — <rationale>
|
|
60
|
+
proposed: <the recommended option restated; matches option 1>
|
|
61
|
+
raised_at: <iso>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
2. **`state.md` updates:**
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
- Status: awaiting_human
|
|
68
|
+
- Active slice: <N — name>
|
|
69
|
+
- Slice mode: HITL
|
|
70
|
+
- Next step: /rite-resolve <qid> "<answer>"
|
|
71
|
+
|
|
72
|
+
## Awaiting human
|
|
73
|
+
- qid: <q-...-NNN>
|
|
74
|
+
- gate: <gate>
|
|
75
|
+
- question: <Checkpoint text>
|
|
76
|
+
- proposed: <one-paragraph best-guess>
|
|
77
|
+
- raised_at: <iso>
|
|
78
|
+
- blocking_slices: [<list, from `Blocked by` lookups>]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
3. **`notify:` hook (if `.devrites/AFK` defines one):** export all six env vars from the
|
|
82
|
+
canonical contract in [`afk-discipline.md`](afk-discipline.md) (the `notify:` hook
|
|
83
|
+
contract table is the source of truth):
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
DEVRITES_QID="$qid" \
|
|
87
|
+
DEVRITES_GATE="$gate" \
|
|
88
|
+
DEVRITES_SLICE="$slice_id" \
|
|
89
|
+
DEVRITES_SLUG="$slug" \
|
|
90
|
+
DEVRITES_QUESTION="$question" \
|
|
91
|
+
DEVRITES_PROPOSED="$proposed" \
|
|
92
|
+
sh -c "$notify_cmd"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The hook fires after the workspace write so the notification target sees a workspace
|
|
96
|
+
that already records the pause. Failures in the hook **do not** roll back the pause —
|
|
97
|
+
the gate is authoritative; the notification is best-effort.
|
|
98
|
+
|
|
99
|
+
## qid generation
|
|
100
|
+
|
|
101
|
+
Format: `q-YYYY-MM-DD-NNN`, where `NNN` is the next sequential integer for that date in
|
|
102
|
+
`questions.md`. For the write side, call
|
|
103
|
+
`devrites-engine resolve next-qid <questions.md path>` — it
|
|
104
|
+
counts existing `## q-YYYY-MM-DD-` headers for today, prints the next zero-padded id, and
|
|
105
|
+
refuses to print an id whose header already exists. Use that id verbatim so each qid is
|
|
106
|
+
unique within the date.
|
|
107
|
+
|
|
108
|
+
## When AFK is active
|
|
109
|
+
|
|
110
|
+
If `.devrites/AFK` exists and the slice's `Gate` is in `allow_gates`, `/rite-build` does
|
|
111
|
+
**not** invoke the checkpoint protocol. Instead:
|
|
112
|
+
|
|
113
|
+
- For `advisory`: log a `gate: advisory` entry to `questions.md`, record the trade-off in
|
|
114
|
+
`decisions.md`, and **dispatch the wright** to build the slice (workflow step 3).
|
|
115
|
+
- For `validating` (only when `allow_gates` includes it): **dispatch the wright** (step 3); on
|
|
116
|
+
return, write a `gate: validating` entry to `questions.md`, mark the slice
|
|
117
|
+
`built (pending review)` in `state.md`, and continue. A slice's only states are `pending` and `built` —
|
|
118
|
+
acceptance is proven at the **feature** level by `/rite-prove` (recorded in
|
|
119
|
+
`evidence.md`), not per slice. The `built (pending review)` slice is not done until the
|
|
120
|
+
open `validating` gate resolves via `/rite-resolve`; an open `validating` gate is a
|
|
121
|
+
NO-GO at seal.
|
|
122
|
+
|
|
123
|
+
For gates in `allow_gates`, AFK **auto-picks the recommended option** (option 1 of the set)
|
|
124
|
+
instead of pausing, recording it as above. For `blocking` and `escalating` (and every
|
|
125
|
+
irreversible-risk item), AFK **always** invokes the checkpoint protocol — the sentinel does
|
|
126
|
+
not unlock these gates — **unless `allow_irreversible: true`** is set, which makes AFK
|
|
127
|
+
auto-pick the recommendation on *every* gate, irreversible included (maximal autonomy, opt-in;
|
|
128
|
+
see `afk-hitl.md`). See `afk-discipline.md` for the irreversible-risk list.
|
|
129
|
+
|
|
130
|
+
## Multi-question pauses
|
|
131
|
+
|
|
132
|
+
The current protocol is **one question per pause**. If a slice has multiple HITL
|
|
133
|
+
checkpoints, split it into sub-slices via `/rite-plan reslice` so each pause is
|
|
134
|
+
single-question. Multi-question pauses are reserved future shape; `Awaiting human` is
|
|
135
|
+
written as a single block.
|
|
136
|
+
|
|
137
|
+
## What NOT to do
|
|
138
|
+
|
|
139
|
+
- **Don't write code first and pause after.** The pre-action rule is the whole point.
|
|
140
|
+
- **Don't render the checkpoint without persisting.** Output without `state.md` + `questions.md`
|
|
141
|
+
updates means the workspace lies on `/clear`.
|
|
142
|
+
- **Don't self-answer a question that *paused* for a human.** When a gate stopped the session
|
|
143
|
+
(an AFK queue, or a HITL pause the human walked away from), `/rite-resolve` requires an
|
|
144
|
+
explicit answer — the agent doesn't confirm its own `proposed:` on resume. This is distinct
|
|
145
|
+
from the two legitimate auto-resolutions: an interactive `AskUserQuestion` pick the human
|
|
146
|
+
just made, and an AFK auto-pick of the recommended option on a gate `allow_gates` permits.
|
|
147
|
+
- **Don't bundle the `notify:` hook output into chat.** Fire-and-forget; the chat already
|
|
148
|
+
has the user-facing render.
|
|
149
|
+
- **Don't fire `notify:` on `advisory`-downgraded entries.** It's reserved for true pauses.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Checkpoint — crash-survivable WIP commits (opt-in)
|
|
2
|
+
|
|
3
|
+
`.devrites/` markdown survives compaction, but a slice's *source* stays uncommitted until
|
|
4
|
+
`/rite-ship`. A crash or killed session mid-build — the AFK / `/rite-autocomplete` case —
|
|
5
|
+
loses that source **and** the reasoning behind it. Checkpoint mode commits each proven
|
|
6
|
+
slice as a local `WIP`, so the work and its context outlive the session.
|
|
7
|
+
|
|
8
|
+
## When it's on
|
|
9
|
+
Opt-in via the `.devrites/CHECKPOINT` sentinel — the mirror of `.devrites/AFK`. Absent →
|
|
10
|
+
no checkpoints; `/rite-build` behaves exactly as before. A long unattended run
|
|
11
|
+
(`/rite-autocomplete`) is the case it earns its keep, so that path sets the sentinel for
|
|
12
|
+
the run. **Local-only by rule:** a checkpoint is never pushed — scratch work must not
|
|
13
|
+
trigger CI.
|
|
14
|
+
|
|
15
|
+
## The checkpoint commit — orchestrator, at RECORD, after gates are green
|
|
16
|
+
A checkpoint records a **proven** slice; it fires only after PROVE is green, never on a red
|
|
17
|
+
gate. Stage only the slice's `touched-files.md`, then commit locally with a
|
|
18
|
+
`[devrites-context]` body a cold reader can restore from:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
[ -f .devrites/CHECKPOINT ] || exit 0 # sentinel absent → no-op, silent
|
|
22
|
+
git commit -m "WIP(<slug>): <slice>" -m "$(cat <<'BODY'
|
|
23
|
+
[devrites-context]
|
|
24
|
+
decisions: <one-line delta this slice added to decisions.md>
|
|
25
|
+
remaining: <pending slices — count or names>
|
|
26
|
+
dead-ends: <approaches ruled out this slice, if any>
|
|
27
|
+
BODY
|
|
28
|
+
)"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Restore
|
|
32
|
+
The commit body is a durable record, not just a marker. After a crash, a fresh session —
|
|
33
|
+
or `/rite-status` — reads the last `WIP(<slug>)` body to reconstruct the decisions,
|
|
34
|
+
remaining slices, and dead-ends that in-session `.devrites/` state would have held. No
|
|
35
|
+
special tooling: it's a git log entry any agent can read.
|
|
36
|
+
|
|
37
|
+
## Collapse at ship
|
|
38
|
+
WIP commits are scratch and never reach shared history. `/rite-ship` folds them into the
|
|
39
|
+
one atomic feature commit before the Conventional-Commit ladder — see the collapse step in
|
|
40
|
+
[git-ship.md](../../rite-ship/reference/git-ship.md). Result: one clean commit, bisect
|
|
41
|
+
stays green.
|
|
42
|
+
|
|
43
|
+
## Autocomplete clean-baseline use
|
|
44
|
+
`/rite-autocomplete` may arm checkpoint mode after it verifies a clean or explicitly accepted baseline. Checkpoints are local-only crash recovery, not authorization to continue across red gates or to ship. `/rite-build` remains one-slice-at-a-time; autocomplete is the only opt-in loop that may invoke multiple builds.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Evidence standard
|
|
2
|
+
|
|
3
|
+
Evidence beats confidence. A slice isn't built until there's a record that proves it.
|
|
4
|
+
|
|
5
|
+
## What counts as evidence
|
|
6
|
+
- A **command + its output**: `npm test src/export.test.ts` → `3 passing`.
|
|
7
|
+
- A **build/typecheck/lint** result for touched code.
|
|
8
|
+
- **Runtime observation**: a request/response, a log line, a CLI output.
|
|
9
|
+
- **Browser evidence** for UI (see `devrites-browser-proof`): route, viewport,
|
|
10
|
+
screenshot path (opened and described), console state, interaction path.
|
|
11
|
+
|
|
12
|
+
## What does NOT count
|
|
13
|
+
- "It should work" / "this looks right" / "I'm confident".
|
|
14
|
+
- A green test you never saw fail (for new behavior).
|
|
15
|
+
- "No type errors" as proof that a *feature* works (it proves types, not behavior).
|
|
16
|
+
- A screenshot path you didn't open.
|
|
17
|
+
|
|
18
|
+
## Record format (`evidence.md`)
|
|
19
|
+
```markdown
|
|
20
|
+
# Evidence
|
|
21
|
+
|
|
22
|
+
## Evidence log
|
|
23
|
+
| Evidence ID | Command / action | Result | Timestamp | Related IDs | Limitation |
|
|
24
|
+
| --- | --- | --- | --- | --- | --- |
|
|
25
|
+
| EVID-001 | <command/action> | <pass/fail + key output line> | <iso if available> | AC-001, SLICE-001 | <what remains unproven, or none> |
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Honesty rules
|
|
29
|
+
- If a test fails, record the failure and the output — don't hide it.
|
|
30
|
+
- If a step was skipped (no browser available, command not found), say so and record
|
|
31
|
+
the manual verification steps instead.
|
|
32
|
+
- Unproven acceptance criteria stay unchecked. The seal will catch them.
|
|
33
|
+
- Every evidence row uses `EVID-###` and names the related `AC-###` and `SLICE-###`.
|
|
34
|
+
- UI/browser proof goes in `browser-evidence.md`; `evidence.md` links to its `EVID-###`
|
|
35
|
+
instead of copying screenshot notes.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Forge — competing candidate builds for one slice
|
|
2
|
+
|
|
3
|
+
How `/rite-build` builds a slice that `/rite-vet` flagged `Forge: yes`: instead of one wright,
|
|
4
|
+
**K = 2–3 candidate wrights** each build the slice a genuinely different way in **isolation**, a
|
|
5
|
+
read-only judge scores them, and exactly **one** winner's diff lands in the working tree. Loaded
|
|
6
|
+
on demand by `/rite-build` step 3; the sibling of single-path
|
|
7
|
+
[`wright-dispatch.md`](wright-dispatch.md).
|
|
8
|
+
|
|
9
|
+
Forge is the **rare** path. Most slices are single-path (cheaper, and the default). A slice
|
|
10
|
+
forges only when the work is a genuine architecture fork — two or three approaches that actually
|
|
11
|
+
differ, no clear winner on paper, at high enough stakes that building the wrong one costs more
|
|
12
|
+
than building all of them. That judgment is made at `/rite-vet` and recorded as the slice's
|
|
13
|
+
`Forge:` field; build acts on the flag, it does not invent it.
|
|
14
|
+
|
|
15
|
+
## Why this doesn't break the single-writer invariant
|
|
16
|
+
|
|
17
|
+
DevRites forbids a parallel fan-out of writers **sharing one tree** — concurrent writers on one
|
|
18
|
+
working tree make conflicting implicit decisions and produce incoherent code
|
|
19
|
+
([`wright-dispatch.md`](wright-dispatch.md)). Forge keeps that invariant intact by **isolation**:
|
|
20
|
+
every candidate writes in its own worktree (or its own throwaway branch), never touching another
|
|
21
|
+
candidate's tree, and the orchestrator lands exactly one. No tree ever has two authors; exactly
|
|
22
|
+
one author's work ships. "N isolated complete attempts, winner-takes-all" is not "N writers on
|
|
23
|
+
one slice."
|
|
24
|
+
|
|
25
|
+
## Trust the flag, but clear a stale one
|
|
26
|
+
|
|
27
|
+
Before competing anything, confirm the flag still earns its cost — `/rite-vet` set it, but the
|
|
28
|
+
plan may have moved:
|
|
29
|
+
|
|
30
|
+
- **No objective scorecard** — the slice has no acceptance criteria and no `test-plan.md`
|
|
31
|
+
coverage the judge can score against → clear `Forge` to `no`, build single-path. A competition
|
|
32
|
+
with no rubric is a coin toss with K× the cost.
|
|
33
|
+
- **Can't name two genuinely different strategies** — if the candidates would be variations of
|
|
34
|
+
one approach, there is nothing to compete → single-path.
|
|
35
|
+
- **Slice shrank below the bar** (now Complexity ≤3, or a dependency landed that picks the
|
|
36
|
+
approach) → single-path.
|
|
37
|
+
|
|
38
|
+
A cleared flag is recorded in `decisions.md` (one line: why forge was dropped). Never forge a
|
|
39
|
+
slice you can't score, and never forge to avoid making a decision the plan already made.
|
|
40
|
+
|
|
41
|
+
## Mechanics
|
|
42
|
+
|
|
43
|
+
The orchestrator runs F1–F7. Steps 4–7 of the [one-slice-cycle](one-slice-cycle.md) (doubt,
|
|
44
|
+
fail-on-red, reconcile, record, stop) then run **unchanged** on the winner.
|
|
45
|
+
|
|
46
|
+
### F1 — Confirm the K strategies
|
|
47
|
+
Take the 2–3 candidate strategies `/rite-vet` named (in the slice brief). Each must be a
|
|
48
|
+
**distinct, complete approach** to the same slice contract — a different seam, data shape,
|
|
49
|
+
reuse-vs-build call, or algorithm — not a tweak of one. Name them `A`, `B`, (`C`) with a
|
|
50
|
+
one-line description each. K is capped at 3: a fourth candidate rarely changes the winner and
|
|
51
|
+
multiplies cost.
|
|
52
|
+
|
|
53
|
+
### F2 — Snapshot, then isolate each candidate
|
|
54
|
+
Snapshot the working tree first (the winner's landing is reconciled against it later), then give
|
|
55
|
+
each candidate its own isolated tree. **Prefer parallel isolated worktrees** when the harness can
|
|
56
|
+
dispatch a sub-agent with worktree isolation; the **always-available** path is one throwaway git
|
|
57
|
+
branch per candidate, built sequentially (slower, universally works — the
|
|
58
|
+
[`tooling.md`](../../devrites-lib/reference/standards/tooling.md) "fallback is first-class" discipline):
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
SLUG="$(cat .devrites/ACTIVE 2>/dev/null)"
|
|
62
|
+
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)"
|
|
63
|
+
BASE="$(git rev-parse --abbrev-ref HEAD)"
|
|
64
|
+
# one isolated worktree per candidate (parallel-capable); falls back to branches if worktrees are unavailable
|
|
65
|
+
for C in A B; do
|
|
66
|
+
git worktree add ".devrites/work/$SLUG/forge/cand-$C" -b "forge/$SLUG/cand-$C" 2>/dev/null \
|
|
67
|
+
|| git branch "forge/$SLUG/cand-$C" "$BASE"
|
|
68
|
+
done
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### F3 — Dispatch K candidate wrights
|
|
72
|
+
Send **each** candidate the identical single-path slice contract from
|
|
73
|
+
[`wright-dispatch.md`](wright-dispatch.md), with **one** line added naming its assigned strategy
|
|
74
|
+
and its isolated tree:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Forge candidate <A|B|C> of <K>. Build this slice using ONLY this approach:
|
|
78
|
+
Strategy: <the distinct approach, one or two sentences — the seam / data shape / reuse call>
|
|
79
|
+
Work in your isolated tree: <worktree path | branch name>. Do not consult or merge another
|
|
80
|
+
candidate's work. Same discipline as always — orient → RED → implement smallest complete →
|
|
81
|
+
verify → return your structured artifact. Code + tests only.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Each is still **one wright, one tree** — the invariant holds per candidate. Parallel where the
|
|
85
|
+
harness isolates them; otherwise build candidate A to green, capture its diff, reset to `BASE`,
|
|
86
|
+
then candidate B. A candidate that hits an irreversible-risk item escalates exactly as a
|
|
87
|
+
single-path wright does — **forge never bypasses a gate** (see AFK below).
|
|
88
|
+
|
|
89
|
+
### F4 — Judge (read-only, fresh context)
|
|
90
|
+
Dispatch [`devrites-forge-judge`](../../../agents/devrites-forge-judge.md) with the K finished
|
|
91
|
+
candidate diffs and the scorecard inputs (slice acceptance, `test-plan.md`, `.devrites/principles.md`,
|
|
92
|
+
the anti-slop charter). It scores each candidate, ranks them, names the **winner** and the
|
|
93
|
+
specific runner-up ideas worth grafting, and returns the structured verdict. The judge **never
|
|
94
|
+
writes code** — it reads the diffs and returns findings, like every reviewer agent. If sub-agent
|
|
95
|
+
dispatch is unavailable, do the judge's rubric pass yourself in a fresh read, discarding your
|
|
96
|
+
authoring reasoning (a flagged fallback, not an independent judgment).
|
|
97
|
+
|
|
98
|
+
### F5 — Land the winner, graft sparingly
|
|
99
|
+
Apply **only** the winner's diff to the working tree (merge its worktree / cherry-pick its
|
|
100
|
+
branch). If the judge named a cheap, specific improvement in a runner-up, graft it by
|
|
101
|
+
**continuing the winning wright once** with that instruction — never hand-merge two candidates'
|
|
102
|
+
code (that re-creates the incoherent-tree failure the invariant exists to prevent). The landed
|
|
103
|
+
tree has exactly one author: the winner (plus its own grafted follow-up).
|
|
104
|
+
|
|
105
|
+
### F6 — Write `forge-report.md`
|
|
106
|
+
The durable record of the competition (template below). One per forged slice; archived with the
|
|
107
|
+
feature.
|
|
108
|
+
|
|
109
|
+
### F7 — Clean up, then return to the cycle
|
|
110
|
+
Remove only clean losing worktrees / delete their candidate branches. If a losing worktree is dirty,
|
|
111
|
+
preserve it and record the path in `forge-report.md`; never `--force` away unlanded work.
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
SLUG="$(cat .devrites/ACTIVE 2>/dev/null)"
|
|
115
|
+
for C in A B; do
|
|
116
|
+
WT=".devrites/work/$SLUG/forge/cand-$C"
|
|
117
|
+
if [ -d "$WT/.git" ] || git -C "$WT" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
118
|
+
if git -C "$WT" diff --quiet && git -C "$WT" diff --cached --quiet; then
|
|
119
|
+
git worktree remove "$WT" 2>/dev/null || true
|
|
120
|
+
git branch -D "forge/$SLUG/cand-$C" 2>/dev/null || true
|
|
121
|
+
else
|
|
122
|
+
echo "preserved dirty forge worktree: $WT"
|
|
123
|
+
fi
|
|
124
|
+
else
|
|
125
|
+
git branch -D "forge/$SLUG/cand-$C" 2>/dev/null || true
|
|
126
|
+
fi
|
|
127
|
+
done
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Then hand the **winner's** structured artifact to [one-slice-cycle](one-slice-cycle.md) step 4 as
|
|
131
|
+
if a single wright produced it. Doubt, fail-on-red, reconcile (against the F2 snapshot, claimed =
|
|
132
|
+
the winner's files), record, and stop all run unchanged.
|
|
133
|
+
|
|
134
|
+
## `forge-report.md` template
|
|
135
|
+
|
|
136
|
+
```markdown
|
|
137
|
+
# Forge report: <slice id — name>
|
|
138
|
+
Forged on <iso>. Reason: <the architecture fork /rite-vet flagged>.
|
|
139
|
+
|
|
140
|
+
## Candidates
|
|
141
|
+
| # | Strategy | Gates | Score | Notes |
|
|
142
|
+
|---|---|---|---|---|
|
|
143
|
+
| A | <approach> | green/red | <judge score> | <one line> |
|
|
144
|
+
| B | <approach> | green/red | <judge score> | <one line> |
|
|
145
|
+
|
|
146
|
+
## Verdict
|
|
147
|
+
Winner: <A|B|C> — <why it won, in the judge's terms: acceptance coverage, simplicity, principle
|
|
148
|
+
fit, anti-slop, reuse>.
|
|
149
|
+
Grafted from runner-up: <specific idea + which candidate | none>.
|
|
150
|
+
Discarded: <the losing approaches + the one-line reason each lost — load-bearing for a later
|
|
151
|
+
slice that might be tempted to retry one>.
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
The **Discarded** section matters: it is a dead-end record at the slice level, the same role
|
|
155
|
+
`decisions.md` "Dead ends" plays for the feature — a later slice shouldn't re-litigate an
|
|
156
|
+
approach forge already rejected.
|
|
157
|
+
|
|
158
|
+
## AFK & budget
|
|
159
|
+
|
|
160
|
+
- **Cost.** Forge multiplies the build by K. Under `.devrites/AFK`, each candidate counts against
|
|
161
|
+
the slice budget (`devrites-engine tick-afk` once per candidate dispatched), so a forge slice can exhaust the
|
|
162
|
+
cap faster — that is intended back-pressure, not a bug.
|
|
163
|
+
- **Gates are unchanged.** Forge changes *how many candidates build*, never *what pauses*. An
|
|
164
|
+
irreversible-risk item, a blocking/escalating gate, or a red-on-completion in **any** candidate
|
|
165
|
+
pauses per [`afk-hitl.md`](../../devrites-lib/reference/standards/afk-hitl.md) exactly as single-path. AFK widens what is
|
|
166
|
+
automatic, never what is irreversible — forge included.
|
|
167
|
+
- **Stuck loop still applies.** Re-dispatching the same candidate without progress trips
|
|
168
|
+
`devrites-engine stuck` the same as a single wright.
|
|
169
|
+
|
|
170
|
+
## When isolation is impossible
|
|
171
|
+
|
|
172
|
+
No git, or neither worktrees nor throwaway branches are usable → **degrade to single-path** and
|
|
173
|
+
say so. Forge is an accelerator for choosing between real alternatives; it is never a requirement
|
|
174
|
+
for building the slice. A slice always has a single-path build available — the competition is the
|
|
175
|
+
optional part.
|
|
176
|
+
|
|
177
|
+
## Anti-patterns
|
|
178
|
+
|
|
179
|
+
See [`anti-patterns.md`](anti-patterns.md) § Forge — the short version: don't forge a decided or
|
|
180
|
+
trivial slice, don't forge to dodge a decision, don't hand-merge candidates, don't exceed K=3,
|
|
181
|
+
and don't let a forged slice skip the post-return doubt because "the judge already looked."
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Frontend trigger
|
|
2
|
+
|
|
3
|
+
A slice is **frontend/UI** if it touches or plans to touch any of:
|
|
4
|
+
|
|
5
|
+
- React / TSX / JSX; Vue, Svelte, Astro, Angular;
|
|
6
|
+
- Rails Slim / Haml / ERB views; any server-rendered template;
|
|
7
|
+
- CSS, SCSS, Tailwind, design tokens, theme files;
|
|
8
|
+
- components, forms, layout, navigation, dashboard, landing/marketing page;
|
|
9
|
+
- UI copy, empty states, error states, onboarding, settings;
|
|
10
|
+
- screenshots, mockups, visual direction;
|
|
11
|
+
- browser behavior, responsive behavior, accessibility, frontend performance.
|
|
12
|
+
|
|
13
|
+
## When triggered
|
|
14
|
+
- `/rite-spec` applies **`devrites-ux-shape`** (spec step 3a) to write the feature-level
|
|
15
|
+
**`design-brief.md`** before any code — design direction, key states, interaction model,
|
|
16
|
+
optional Figma/image visual-direction probe.
|
|
17
|
+
- `/rite-build` applies **`devrites-frontend-craft`**, building **to** that `design-brief.md`
|
|
18
|
+
(register detection, refine the brief per slice, existing design system, all states,
|
|
19
|
+
anti-AI-slop) before/while implementing.
|
|
20
|
+
- `/rite-prove` applies **`devrites-browser-proof`** (proof ladder + evidence schema).
|
|
21
|
+
- `/rite-polish` runs the full **normalize + polish** workflow.
|
|
22
|
+
- `/rite-review` and `/rite-seal` include frontend UX / a11y / responsive / design-
|
|
23
|
+
system checks.
|
|
24
|
+
|
|
25
|
+
## Fullstack (UI slice that also needs backend)
|
|
26
|
+
If the slice spans both layers, it's both a frontend **and** a backend slice. Define the
|
|
27
|
+
**API/data contract first** (`devrites-api-interface`), build it as one **vertical slice**
|
|
28
|
+
(DB → service → API → UI), apply the engineering rules to the backend and
|
|
29
|
+
`devrites-frontend-craft` to the UI, map each contract error to a real UI state, and
|
|
30
|
+
**prove both layers** (contract tests + browser proof). See
|
|
31
|
+
`devrites-frontend-craft/reference/fullstack.md`.
|
|
32
|
+
|
|
33
|
+
## When NOT triggered
|
|
34
|
+
Pure backend/data/CLI/infra slices skip craft and browser proof — but still get tests
|
|
35
|
+
and evidence. If unsure whether a slice is "UI enough", treat copy/empty/error states
|
|
36
|
+
and any rendered output as UI.
|
|
37
|
+
|
|
38
|
+
Mark `Frontend craft required: yes/no` and `Browser proof required: yes/no` on the
|
|
39
|
+
slice in `tasks.md` so the trigger is explicit, not rediscovered each cycle.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# One-slice cycle
|
|
2
|
+
|
|
3
|
+
The discipline that makes large features manageable: build one thin slice, leave it
|
|
4
|
+
working and proven, stop. Never implement the whole feature in one pass.
|
|
5
|
+
|
|
6
|
+
## The cycle
|
|
7
|
+
The orchestrator (`/rite-build`) gates and records; the **wright** writes. See
|
|
8
|
+
[`wright-dispatch.md`](wright-dispatch.md).
|
|
9
|
+
```
|
|
10
|
+
SELECT → orchestrator: restate slice goal + acceptance + scope boundary; HITL gate (pause pre-code)
|
|
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, compete K=2–3 isolated candidate wrights →
|
|
13
|
+
devrites-forge-judge → land one winner → forge-report.md, then continue at DOUBT (forge.md)
|
|
14
|
+
DISPATCH → hand the slice contract to devrites-slice-wright (fresh context). Inside the wright:
|
|
15
|
+
ORIENT → load only the files this slice touches; learn the project's idiom; reuse-first
|
|
16
|
+
(RED) → if behavior change: write the failing test first
|
|
17
|
+
IMPLEMENT → smallest complete version; match conventions; devrites-frontend-craft for UI
|
|
18
|
+
VERIFY → targeted tests (+ types/lint/build); fail-on-red; return artifact — code + tests only
|
|
19
|
+
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
20
|
+
PROVE → orchestrator: fail-on-red check on the wright's gates; browser proof for UI
|
|
21
|
+
RECORD → orchestrator: state.md, evidence.md, touched-files.md (the canonical writer)
|
|
22
|
+
(CHECKPOINT) → orchestrator: if .devrites/CHECKPOINT is set, commit the proven slice
|
|
23
|
+
local-only as WIP(<slug>) with a [devrites-context] body → survives a crash (checkpoint.md)
|
|
24
|
+
STOP → report + recommend next; do not start slice N+1
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Why stop after one slice
|
|
28
|
+
- Keeps the diff reviewable (~one capability, roughly ≤100 lines of meaningful change).
|
|
29
|
+
- Surfaces integration/drift problems while they're cheap.
|
|
30
|
+
- Gives the user a decision point — they may reprioritize, reslice, or polish now.
|
|
31
|
+
- Prevents the "90% done" pile-up where nothing is actually proven.
|
|
32
|
+
|
|
33
|
+
## Restate the scope boundary
|
|
34
|
+
Before coding, write what this slice will and will **not** touch. This is the contract
|
|
35
|
+
you check yourself against — anything outside it is scope creep or a drift event.
|
|
36
|
+
|
|
37
|
+
## When the slice can't be completed cleanly
|
|
38
|
+
- Discovered the plan is wrong → **Spec Drift Guard** (stop, record, classify, maybe
|
|
39
|
+
ask, `/rite-plan` repair).
|
|
40
|
+
- Slice is bigger than one cycle → stop and `/rite-plan reslice`.
|
|
41
|
+
- Blocked on a failing dependency → record in `state.md`, `/rite-plan unblock`.
|
|
42
|
+
Never power through by guessing.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# rite-build output
|
|
2
|
+
|
|
3
|
+
This is the normative output contract for `/rite-build`. `../SKILL.md` points
|
|
4
|
+
here so the root skill can stay focused without weakening response shape.
|
|
5
|
+
|
|
6
|
+
Run `devrites-engine progress` first. It prints the deterministic header, slice
|
|
7
|
+
meter, and flow ribbon. Put the compact fact lines below it using the shared
|
|
8
|
+
completion reply contract
|
|
9
|
+
([`devrites-lib/reference/reply-contract.md`](../../devrites-lib/reference/reply-contract.md)).
|
|
10
|
+
|
|
11
|
+
**Slice built; slices remain:**
|
|
12
|
+
```text
|
|
13
|
+
Done: built slice <n> — <name>.
|
|
14
|
+
Changed: <files touched>; state.md, touched-files.md, evidence.md
|
|
15
|
+
Evidence: acceptance met; tests <cmd -> pass>; browser <summary | n/a>; drift <none|handled>
|
|
16
|
+
Open: <none | blockers | questions>
|
|
17
|
+
Next: /rite-build
|
|
18
|
+
Record: .devrites/work/<slug>/evidence.md
|
|
19
|
+
↻ Hygiene: /clear between slices; /rite-handoff if away > a few hours
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Slice built; all slices built:**
|
|
23
|
+
```text
|
|
24
|
+
Done: built slice <n> — <name>; all slices built.
|
|
25
|
+
Changed: <files touched>; state.md, touched-files.md, evidence.md
|
|
26
|
+
Evidence: acceptance met; tests <cmd -> pass>; browser <summary | n/a>; drift <none|handled>
|
|
27
|
+
Open: <none | blockers | questions>
|
|
28
|
+
Next: /rite-prove
|
|
29
|
+
Record: .devrites/work/<slug>/evidence.md
|
|
30
|
+
↻ Hygiene: /clear before /rite-prove; /rite-handoff if away > a few hours
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For awaiting-human or stopped states, use the typed templates from the reply contract.
|
|
34
|
+
Keep fact lines terse. The meter and ribbon carry progress; don't duplicate them in
|
|
35
|
+
prose.
|
|
36
|
+
|
|
37
|
+
For a **forged slice**, the `Built` line names the competition and points at the record, e.g.
|
|
38
|
+
`Done: built slice 3 — csv-streaming (forged: 3 candidates, winner B).` and
|
|
39
|
+
`Record: .devrites/work/<slug>/forge-report.md`.
|
|
40
|
+
|
|
41
|
+
**DO NOT continue to the next slice automatically** — even at `✅ ALL BUILT`, `/rite-prove` is the user's call.
|