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
|
@@ -19,6 +19,8 @@ DISPATCH → hand the slice contract to devrites-slice-wright (fresh context).
|
|
|
19
19
|
(DOUBT) → orchestrator, on return: devrites-doubt each non-trivial decision the wright stood up
|
|
20
20
|
PROVE → orchestrator: fail-on-red check on the wright's gates; browser proof for UI
|
|
21
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)
|
|
22
24
|
STOP → report + recommend next; do not start slice N+1
|
|
23
25
|
```
|
|
24
26
|
|
|
@@ -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.
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# rite-build phase contract
|
|
2
|
+
|
|
3
|
+
See also [`one-slice-cycle.md`](one-slice-cycle.md).
|
|
4
|
+
|
|
5
|
+
## Execution spine
|
|
6
|
+
|
|
7
|
+
Run the engine gates at these moments:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
devrites-engine preamble
|
|
11
|
+
devrites-engine snapshot
|
|
12
|
+
devrites-engine build-readiness; echo "readiness rc=$?"
|
|
13
|
+
|
|
14
|
+
devrites-engine reconcile snapshot
|
|
15
|
+
devrites-engine stuck log "$(cat .devrites/ACTIVE 2>/dev/null)" dispatch "<slice id>"
|
|
16
|
+
|
|
17
|
+
devrites-engine footprint log <slug> doubt "<decision id>"
|
|
18
|
+
|
|
19
|
+
devrites-engine reconcile check; echo "reconcile rc=$?"
|
|
20
|
+
devrites-engine test-integrity; echo "test-integrity rc=$?"
|
|
21
|
+
devrites-engine package-existence; echo "package-existence rc=$?"
|
|
22
|
+
|
|
23
|
+
devrites-engine conventions contradict --key <key> --slug <slug> \
|
|
24
|
+
--evidence "<what the live code does>" --drift-file .devrites/work/<slug>/drift.md
|
|
25
|
+
devrites-engine footprint log <slug> wright "<slice id>"
|
|
26
|
+
devrites-engine tick-afk <state.md path>
|
|
27
|
+
|
|
28
|
+
devrites-engine progress
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Conditional calls still obey the detailed rules below: doubt logging runs for
|
|
32
|
+
each stood decision; convention contradiction runs only when the wright reports
|
|
33
|
+
or exposes a contradiction; `tick-afk` runs only under AFK; forge follows
|
|
34
|
+
[`forge.md`](forge.md) and still returns to the same doubt, record, and stop
|
|
35
|
+
gates.
|
|
36
|
+
|
|
37
|
+
> **Running the gate helpers.** Each gated `bash` block calls the installed engine
|
|
38
|
+
> directly: `devrites-engine <command> [args]`. It **propagates its exit code**,
|
|
39
|
+
> so the `rc=$?` checks below still hold; host hooks fail open when the binary is absent,
|
|
40
|
+
> but phase gates should treat a missing engine as a setup problem.
|
|
41
|
+
|
|
42
|
+
0. **Rules + AFK + readiness check.** Read `.claude/skills/devrites-lib/reference/standards/core.md` first. Then **run the
|
|
43
|
+
shared orientation preamble** — it prints `state.md`, the artifacts present, the run
|
|
44
|
+
mode (HITL/AFK), and the open-question tally by gate, deterministically:
|
|
45
|
+
```bash
|
|
46
|
+
devrites-engine preamble
|
|
47
|
+
devrites-engine snapshot
|
|
48
|
+
```
|
|
49
|
+
Treat the snapshot as the canonical machine-readable status; if you need to tell the
|
|
50
|
+
user the next command, use `nextCommands.claude` in Claude Code or `nextCommands.codex`
|
|
51
|
+
in Codex. Then **run the readiness gate** — it enforces the step-0 stop conditions by exit code,
|
|
52
|
+
not by memory:
|
|
53
|
+
```bash
|
|
54
|
+
devrites-engine build-readiness; echo "readiness rc=$?"
|
|
55
|
+
```
|
|
56
|
+
A non-zero `rc` is a hard STOP: `2` → `/rite-define` (plan not approved), `3` →
|
|
57
|
+
`/rite-resolve` (awaiting human), `4` → `/rite-plan` (blocked). The prose below is the
|
|
58
|
+
same gate for installs without the script.
|
|
59
|
+
Orient from its digest. If `Status == awaiting_human` → **STOP**, tell the user to run
|
|
60
|
+
`/rite-resolve <qid> "<answer>"`. If `state.md` has no `Plan approved: <iso>` field
|
|
61
|
+
→ **STOP**, tell the user the plan isn't approved yet (`/rite-define` writes it when
|
|
62
|
+
the human confirms). If `.devrites/AFK` is present, re-derive the remaining AFK budget
|
|
63
|
+
from `state.md`'s `AFK slices remaining: <n>` field (initialized from `.devrites/AFK`
|
|
64
|
+
`max_slices` on the first AFK build); if it is `0` → **STOP** (forced HITL stop; raise
|
|
65
|
+
the count in `state.md` or remove the sentinel to continue). See
|
|
66
|
+
[`afk-discipline.md`](afk-discipline.md).
|
|
67
|
+
1. Read `spec.md`, `plan.md`, `tasks.md`, `assumptions.md`, `drift.md`, and `test-plan.md`
|
|
68
|
+
if present (the vetted coverage target from `/rite-vet` — the slice's tests come from
|
|
69
|
+
here when it exists). `state.md` and the open-`questions.md` tally are already in the
|
|
70
|
+
preamble digest from step 0 — re-read `questions.md` only for the full text of a flagged
|
|
71
|
+
blocking question.
|
|
72
|
+
If a **blocking `[NEEDS CLARIFICATION]`** remains or the spec/plan readiness gates
|
|
73
|
+
don't pass, stop → `/rite-spec` (to resolve) or `/rite-plan` (to repair). Don't build
|
|
74
|
+
on an unresolved spec.
|
|
75
|
+
2. Select the next pending slice (or the one in `$ARGUMENTS`). **Restate its goal,
|
|
76
|
+
acceptance criteria, and scope boundary** in one short block. Confirm it's still the
|
|
77
|
+
right next slice. Write the slice's `Mode` to `state.md` as `Slice mode: <HITL|AFK>` on
|
|
78
|
+
**every** selection (not only on the HITL pause path); `/rite-resolve` clears or updates
|
|
79
|
+
it on resume.
|
|
80
|
+
2a. **HITL gate (pre-action pause).** Read the slice's `Mode`. If `HITL`, surface the
|
|
81
|
+
checkpoint as a ranked **option set** and resolve it **before** any code lands, per
|
|
82
|
+
[`checkpoint-protocol.md`](checkpoint-protocol.md). Branch on whether
|
|
83
|
+
a human is here:
|
|
84
|
+
- **Human present (interactive — no `.devrites/AFK`) → ask inline via `AskUserQuestion`.**
|
|
85
|
+
This is the default for an interactive build. Render 2-4 options, the recommended one
|
|
86
|
+
**first and labelled `(Recommended)`**, each with its dimension-tagged rationale + the
|
|
87
|
+
trade-off it accepts, plus the `Something else — I'll describe it` escape hatch. The
|
|
88
|
+
human picks; record the pick to `questions.md` (`answered`) + `decisions.md` (through the
|
|
89
|
+
`devrites-engine resolve` writer), clear the gate, and **continue to step 3 in place** — do **not**
|
|
90
|
+
STOP, do **not** route through `/rite-resolve`.
|
|
91
|
+
- **Human absent / AFK (`.devrites/AFK` present) → auto-pick or persist + STOP.** For a gate
|
|
92
|
+
in `allow_gates`, auto-pick the recommended option (option 1) and proceed; otherwise
|
|
93
|
+
append the `questions.md` entry, write the `Awaiting human` block to `state.md`, set
|
|
94
|
+
`Status: awaiting_human`, fire the `notify:` hook, then **STOP** — resume when the user
|
|
95
|
+
runs `/rite-resolve <qid> "<answer>"`. `blocking` / `escalating` / irreversible-risk gates
|
|
96
|
+
always take this stop path, never the AFK auto-pick.
|
|
97
|
+
3. **Snapshot the tree, then dispatch the build core to `devrites-slice-wright`** — one `Task`
|
|
98
|
+
call, fresh context. **First**, capture the pre-dispatch tree so the reconcile gate (step 6)
|
|
99
|
+
can prove you never touched source — run this immediately before the `Task` call:
|
|
100
|
+
```bash
|
|
101
|
+
devrites-engine reconcile snapshot
|
|
102
|
+
```
|
|
103
|
+
Then log the dispatch so the stuck-loop detector can catch a slice that keeps being
|
|
104
|
+
re-dispatched without progress (it pauses the build even under AFK):
|
|
105
|
+
```bash
|
|
106
|
+
devrites-engine stuck log "$(cat .devrites/ACTIVE 2>/dev/null)" dispatch "<slice id>"
|
|
107
|
+
```
|
|
108
|
+
**Forge branch — only if the selected slice is `Forge: yes`.** Instead of the single dispatch
|
|
109
|
+
below, run the competitive build per [`forge.md`](forge.md): K=2-3 candidate
|
|
110
|
+
wrights, each in an **isolated git worktree** on the distinct strategy `/rite-vet` named, then a
|
|
111
|
+
fresh-context [`devrites-forge-judge`](../../../agents/devrites-forge-judge.md) scores them against
|
|
112
|
+
acceptance + `test-plan.md` + `.devrites/principles.md` + the anti-slop charter, and you land
|
|
113
|
+
exactly **one** winner's diff in the working tree, graft any cheap runner-up improvement by
|
|
114
|
+
continuing the winning wright once, and write `forge-report.md`. Forge returns the **same shape**
|
|
115
|
+
a single wright does (one structured artifact, for the winner), so steps 4-7 (doubt, fail-on-red,
|
|
116
|
+
reconcile against the winner's claimed set, record, stop) run **unchanged**. If you cannot give
|
|
117
|
+
the judge an objective scorecard (the slice lacks acceptance / `test-plan.md` coverage) or cannot
|
|
118
|
+
name two genuinely different strategies, the flag is stale — clear it and build single-path. The
|
|
119
|
+
single-writer invariant is intact: each candidate owns its own tree, exactly one author's diff
|
|
120
|
+
lands. Then **stop** here for this slice; the steps below are the default single-path dispatch.
|
|
121
|
+
|
|
122
|
+
Then assemble the slice contract and send it per
|
|
123
|
+
[`wright-dispatch.md`](wright-dispatch.md): the slice goal, acceptance
|
|
124
|
+
criteria, and **scope boundary**; the paths it may touch (`touched-files.md`); the context
|
|
125
|
+
paths to read (`spec.md`, `plan.md`, `decisions.md`, `assumptions.md`, `.devrites/principles.md`
|
|
126
|
+
when present — the binding invariants the slice must honor — plus `test-plan.md`
|
|
127
|
+
when present — its per-gap test requirements + regression-criticals for this slice are the
|
|
128
|
+
coverage the wright must write — and `design-brief.md`
|
|
129
|
+
when the slice touches UI per [`frontend-trigger.md`](frontend-trigger.md)); and the
|
|
130
|
+
`.claude/skills/devrites-lib/reference/standards/` files in scope. The wright **orients** on the project's idiom (using a
|
|
131
|
+
code-intelligence index **if available** — `codebase-memory-mcp` first, cross-checked with
|
|
132
|
+
`codegraph` (`.codegraph/` / `codegraph_*`) + `graphify` (`graphify-out/`), else standard
|
|
133
|
+
methods (LSP / `Read`/`Grep`/`Glob`); see `.claude/skills/devrites-lib/reference/standards/tooling.md` — for
|
|
134
|
+
placement/callers/impact), writes the **failing test first** when
|
|
135
|
+
behaviour changes ([`tdd.md`](tdd.md)), implements the **smallest complete** version in
|
|
136
|
+
the project's style (applying `devrites-frontend-craft` to `design-brief.md` for UI, and
|
|
137
|
+
`devrites-source-driven` — with context7 if available — for uncertain framework facts), runs the slice's **targeted tests**
|
|
138
|
+
(plus typecheck / lint / build where the project has them), and returns a structured artifact
|
|
139
|
+
— **code + tests only; it does not write the workspace files.** If the slice is UI but no `design-brief.md` exists (e.g. a spec written before
|
|
140
|
+
shaping), shape it via `devrites-ux-shape` before the wright codes. If the `Task` tool is
|
|
141
|
+
unavailable, run the wright's discipline **inline** as a flagged fallback (see the reference)
|
|
142
|
+
— same one-slice cycle, no isolation; in that case write
|
|
143
|
+
`.devrites/work/<slug>/.reconcile-inline` so the reconcile gate skips (you are legitimately
|
|
144
|
+
the writer in this fallback).
|
|
145
|
+
4. **Doubt the decisions it stood up.** For each entry in the wright's `Decisions stood`
|
|
146
|
+
(branching, boundary crossing, data model, auth, public API, migration, user-flow change,
|
|
147
|
+
"this is safe/scales") apply `devrites-doubt` **before accepting the slice** — the writer
|
|
148
|
+
doesn't grade its own decisions. Each `devrites-doubt` invocation **dispatches the
|
|
149
|
+
`devrites-doubt-reviewer` subagent** (doing the adversarial pass inline is the writer grading
|
|
150
|
+
itself — the thing this step exists to forbid). **Completion criterion (checkable):** step 4
|
|
151
|
+
is done only when **every** `Decisions stood` entry carries a recorded `devrites-doubt`
|
|
152
|
+
verdict — `accept`, or `reject` + the required changes — in `decisions.md` (accepted
|
|
153
|
+
trade-offs) / `questions.md` (open gates). A `Decisions stood` entry with **no verdict on
|
|
154
|
+
record** means doubt did not run for it: **do not enter step 5 and do not mark the slice
|
|
155
|
+
`built`.** Log each dispatch so the seal can prove doubt ran (the footprint already counts a
|
|
156
|
+
`doubt` kind):
|
|
157
|
+
```bash
|
|
158
|
+
devrites-engine footprint log <slug> doubt "<decision id>"
|
|
159
|
+
```
|
|
160
|
+
The doubt loop honours `.devrites/AFK` (see its AFK exception): findings below the slice's gate ceiling become advisory entries in `questions.md`;
|
|
161
|
+
destructive / auth / public-API concerns always pause regardless. A non-empty `Escalation` in
|
|
162
|
+
the artifact is handled here too: irreversible-risk / blockers → blocking question + set
|
|
163
|
+
`Status: awaiting_human`; a scope-changing answer → `/rite-plan repair` (Spec Drift Guard),
|
|
164
|
+
never silently into the slice. **If an irreversible-risk item shows up under the wright's
|
|
165
|
+
`Decisions stood` rather than `Escalation`**, treat that misclassification as itself a
|
|
166
|
+
blocking protocol violation — pause and re-dispatch with the item flagged out-of-bounds, do
|
|
167
|
+
**not** doubt-and-accept it. (The wright's return is the not-yet-load-bearing moment — the
|
|
168
|
+
slice isn't `built` or merged yet — so this post-return doubt is still pre-commit.)
|
|
169
|
+
**Principle check (same standing):** a wright return that breaks a declared principle
|
|
170
|
+
(reported in its `Principles` field, or that you detect against `.devrites/principles.md`) is
|
|
171
|
+
handled here like an irreversible-risk item — block, route to a human-approved scoped
|
|
172
|
+
exception in the register or stop; never doubt-and-accept a principle violation into the slice.
|
|
173
|
+
5. **Fail-on-red.** If the wright's `Gates` were red (targeted tests / types / lint) or it
|
|
174
|
+
couldn't verify: do **not** mark the slice `built`, and **do not fix the code yourself**.
|
|
175
|
+
First remedy — **continue the same wright once** (`SendMessage` to it, carrying the failing
|
|
176
|
+
gate + its real output) so it fixes in its own context. This retry is for **objective
|
|
177
|
+
failures only** — red gate / type / lint / missing test coverage / UI browser-proof fail —
|
|
178
|
+
never a contested decision (that routes to `/rite-plan repair`). **Still red after the one
|
|
179
|
+
retry** → escalate: AFK → append a blocking question to `questions.md` (gate=blocking,
|
|
180
|
+
slice's SLA) + set `Status: awaiting_human`; HITL → pause as a blocking gate. Either way,
|
|
181
|
+
`Next step: /rite-plan unblock` until resolved.
|
|
182
|
+
6. **Record — you are the canonical writer.** **First, run the reconcile gate (A1):** write the
|
|
183
|
+
wright's reported `Files changed` paths (one per line) to
|
|
184
|
+
`.devrites/work/<slug>/.reconcile-claimed` (or the active legacy
|
|
185
|
+
`.devrites/features/<slug>/` workspace during migration), then:
|
|
186
|
+
```bash
|
|
187
|
+
devrites-engine reconcile check; echo "reconcile rc=$?"
|
|
188
|
+
```
|
|
189
|
+
**Exit 5 → hard STOP:** a source file changed outside the wright's claimed set — code was
|
|
190
|
+
edited by something other than the wright (A1 breach). Revert it and re-dispatch the wright;
|
|
191
|
+
do **not** mark the slice `built`.
|
|
192
|
+
|
|
193
|
+
**Then run the test-integrity gate (anti-reward-hacking)** — prove the slice didn't reach
|
|
194
|
+
green by weakening its tests:
|
|
195
|
+
```bash
|
|
196
|
+
devrites-engine test-integrity; echo "test-integrity rc=$?"
|
|
197
|
+
```
|
|
198
|
+
**Exit 3 → hard STOP:** a test was deleted, skipped, or de-asserted since the slice base — the
|
|
199
|
+
slice went green by weakening its tests, a Critical protocol violation. Revert the weakening and
|
|
200
|
+
re-dispatch the wright; do **not** mark the slice `built`.
|
|
201
|
+
|
|
202
|
+
**Then run the package-existence gate (anti-hallucination)** — every new third-party import must
|
|
203
|
+
be declared in a project manifest, not just imported:
|
|
204
|
+
```bash
|
|
205
|
+
devrites-engine package-existence; echo "package-existence rc=$?"
|
|
206
|
+
```
|
|
207
|
+
**Exit 3 → STOP:** an imported package is not declared in any manifest (`package.json`, `go.mod`,
|
|
208
|
+
`requirements.txt`, `pyproject.toml`, `Pipfile`, `Cargo.toml`) — the classic shape of a
|
|
209
|
+
hallucinated or typo-squatted dependency. Confirm the name on the registry and declare it via the
|
|
210
|
+
package manager, or remove the import; do **not** mark the slice `built`. The gate is deterministic
|
|
211
|
+
and fail-open (not a git repo / no manifest / stdlib-only import → rc 0).
|
|
212
|
+
|
|
213
|
+
Then, from the wright's artifact, update `state.md`,
|
|
214
|
+
`evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI). Add a `## Review trail`
|
|
215
|
+
to `touched-files.md`: group the slice's important `path:line` stops by concern (design intent,
|
|
216
|
+
not file order), 1–5 concerns, each stop under 15 words. This is for a later human walkthrough;
|
|
217
|
+
keep it factual and skip invented rationale. **Persist every
|
|
218
|
+
`Decisions stood` entry from the wright's artifact to a `## Decisions stood` section in
|
|
219
|
+
`decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`** — the
|
|
220
|
+
verdict from step 4, or `MISSING` if step 4 was skipped for that entry. Write this ledger at
|
|
221
|
+
record-time **independent of the doubt step**, so a stood decision lands on disk even when it
|
|
222
|
+
was never doubted: `/rite-seal` cross-checks the ledger, and a `doubt: MISSING` entry is the
|
|
223
|
+
skipped-doubt finding that would otherwise leave no trace (the per-slice skip the footprint
|
|
224
|
+
count alone can't catch). If the wright stood no decisions, write `## Decisions stood` with
|
|
225
|
+
`- none` so the absence is recorded, not assumed. If the wright reported
|
|
226
|
+
an approach it tried and backed out of, record it under a `## Dead ends` section in
|
|
227
|
+
`decisions.md` so a retry or the next agent doesn't repeat it.
|
|
228
|
+
**If the wright's `Conventions` field reports a contradiction** (the live code now
|
|
229
|
+
disagrees with a held convention), record the drift — you own this bookkeeping:
|
|
230
|
+
```bash
|
|
231
|
+
devrites-engine conventions contradict --key <key> --slug <slug> \
|
|
232
|
+
--evidence "<what the live code does>" --drift-file .devrites/work/<slug>/drift.md
|
|
233
|
+
```
|
|
234
|
+
It lowers the convention's band (or retires it) and appends a `convention-drift` entry to
|
|
235
|
+
`drift.md`. The ledger is **promoted only at `/rite-seal` on GO** — build only records
|
|
236
|
+
contradictions, never new conventions. **Evidence is the
|
|
237
|
+
wright's real command output, not its say-so.** Capture per
|
|
238
|
+
[`evidence-standard.md`](evidence-standard.md). Append a footprint record for this
|
|
239
|
+
slice's wright dispatch (deterministic run-weight bookkeeping the seal reports):
|
|
240
|
+
```bash
|
|
241
|
+
devrites-engine footprint log <slug> wright "<slice id>"
|
|
242
|
+
```
|
|
243
|
+
If `.devrites/AFK` is present, decrement
|
|
244
|
+
the budget by running `devrites-engine tick-afk <state.md path>` —
|
|
245
|
+
it decrements `state.md`'s `AFK slices remaining` field, prints the new value, and exits `3`
|
|
246
|
+
when it hits 0. **Exit 3 → STOP** (forced HITL stop; the cap is exhausted). Never rewrite
|
|
247
|
+
`.devrites/AFK` `max_slices` in place — it is read-only initial budget.
|
|
248
|
+
7. **STOP.** Render the progress footer, then report and recommend the next step. Run the
|
|
249
|
+
shared footer (mirror of the step-0 preamble) so the slice meter + flow ribbon are
|
|
250
|
+
deterministic, not model-typed:
|
|
251
|
+
```bash
|
|
252
|
+
devrites-engine progress
|
|
253
|
+
```
|
|
254
|
+
It reads `state.md` (already updated in step 6), so the meter reflects the slice you
|
|
255
|
+
just built. **When every slice is built** (`✅ ALL BUILT`) say so explicitly — the build
|
|
256
|
+
phase is complete, the next phase is `/rite-prove` — don't leave completion implicit.
|
|
257
|
+
|
|
258
|
+
> **Mid-flight discipline.** The wright (or you, in the inline fallback) must resist doing two slices, skipping TDD, adding a defensive check, or wandering outside `touched-files.md`; you must resist skipping the post-return `devrites-doubt` because the wright "seems confident" — see [`anti-patterns.md`](anti-patterns.md). Load it the moment you reach for the excuse.
|
|
@@ -34,13 +34,14 @@ Workspace: .devrites/work/<slug>/
|
|
|
34
34
|
Slice: <id — name>
|
|
35
35
|
Goal: <one or two sentences>
|
|
36
36
|
Acceptance criteria: <the slice's criteria, verbatim>
|
|
37
|
+
UI visual acceptance: <if UI — state × viewport × input + target R-id/brief rule, verbatim from tasks.md>
|
|
37
38
|
Scope boundary: <what it WILL and will NOT touch>
|
|
38
39
|
Mode: <HITL | AFK> (+ AFK budget note if a cap is set)
|
|
39
40
|
|
|
40
41
|
Targets (stay inside these — from touched-files.md): <paths>
|
|
41
42
|
Interfaces / signatures to match: <if any>
|
|
42
43
|
Read yourself: spec.md, plan.md, decisions.md, assumptions.md, rite-polish/reference/anti-ai-slop.md<, design-brief.md if UI>
|
|
43
|
-
Rules in scope (.claude/
|
|
44
|
+
Rules in scope (.claude/skills/devrites-lib/reference/standards/): coding-style, error-handling, testing, patterns<, security if input/auth/data><, performance if hot path / query / large payload>
|
|
44
45
|
Test completeness: write ≥1 asserting test for EVERY interactive element + user flow in this
|
|
45
46
|
slice's test-plan.md interaction inventory, each at the right level (fields/elements →
|
|
46
47
|
unit/component; critical journeys → one E2E; never one-per-field). No element ships
|
|
@@ -48,7 +49,8 @@ Test completeness: write ≥1 asserting test for EVERY interactive element + use
|
|
|
48
49
|
element/flow list from the slice's own UI surface and cover it the same way.
|
|
49
50
|
|
|
50
51
|
Apply your documented discipline (orient → RED → implement smallest complete → verify →
|
|
51
|
-
return). Frontend slice → build to design-brief.md with devrites-frontend-craft
|
|
52
|
+
return). Frontend slice → build to design-brief.md with devrites-frontend-craft and close
|
|
53
|
+
the slice's visual-acceptance deltas before returning. Uncertain
|
|
52
54
|
framework fact → verify at the source. Code + tests only — do NOT write the workspace
|
|
53
55
|
bookkeeping files; return that data. Return your structured artifact, not your transcript.
|
|
54
56
|
```
|
|
@@ -63,8 +65,7 @@ Rules:
|
|
|
63
65
|
## On return — the orchestrator's job (don't delegate these)
|
|
64
66
|
**You never edit source here.** The wright is the only writer of code + tests; you write only
|
|
65
67
|
`.devrites/` bookkeeping. Every remedy below is **continue the same wright once** or **stop +
|
|
66
|
-
escalate** — never an inline patch. You snapshotted the tree before dispatch (`reconcile
|
|
67
|
-
snapshot`); the reconcile check in step 4 proves no source changed outside the wright's claimed
|
|
68
|
+
escalate** — never an inline patch. You snapshotted the tree before dispatch (`devrites-engine reconcile snapshot`); the reconcile check in step 4 proves no source changed outside the wright's claimed
|
|
68
69
|
set.
|
|
69
70
|
|
|
70
71
|
1. **Doubt the surfaced decisions.** For each entry in the wright's `Decisions stood`, apply
|
|
@@ -87,16 +88,16 @@ set.
|
|
|
87
88
|
**no asserting test** has the same standing as red: an unverified-element gap blocks the
|
|
88
89
|
slice (don't mark it built). Continue the same wright to cover it, or record a blocker.
|
|
89
90
|
4. **Reconcile, then record.** First prove A1 held: write the wright's `Files changed` paths
|
|
90
|
-
(one per line) to `.devrites/work/<slug>/.reconcile-claimed` and run `reconcile
|
|
91
|
+
(one per line) to `.devrites/work/<slug>/.reconcile-claimed` and run `devrites-engine reconcile check`.
|
|
91
92
|
**Exit 5 → STOP** — a source file changed outside the wright's claimed set (A1 breach); revert
|
|
92
93
|
it and re-dispatch, don't mark the slice built. Then persist the wright's artifact to
|
|
93
94
|
`state.md`, `evidence.md`, `touched-files.md` (and `browser-evidence.md` for UI) per
|
|
94
95
|
[`evidence-standard.md`](evidence-standard.md). Evidence is the wright's real command output,
|
|
95
|
-
not its say-so. **Persist every `Decisions stood` entry to a `## Decisions stood` section in
|
|
96
|
+
not its say-so. Add a concern-ordered `## Review trail` to `touched-files.md` from the wright's changed paths and summary so a human can review by design intent instead of file order. **Persist every `Decisions stood` entry to a `## Decisions stood` section in
|
|
96
97
|
`decisions.md`, one line each ending `— doubt: <accept | reject-resolved | MISSING>`** —
|
|
97
98
|
independent of the doubt step (step 1 above), so a skipped decision still lands on record for
|
|
98
99
|
the seal's doubt-coverage cross-check (`- none` when the wright stood nothing). Then tick AFK if
|
|
99
|
-
`.devrites/AFK` is present (`tick-afk
|
|
100
|
+
`.devrites/AFK` is present (`devrites-engine tick-afk`; exit 3 → STOP).
|
|
100
101
|
|
|
101
102
|
## Forge — competing candidates (the deliberate exception)
|
|
102
103
|
|
|
@@ -126,10 +127,10 @@ fallback in
|
|
|
126
127
|
[`../../devrites-lib/reference/parallel-dispatch.md`](../../devrites-lib/reference/parallel-dispatch.md).
|
|
127
128
|
|
|
128
129
|
## Optional pre-block hook (defense in depth)
|
|
129
|
-
`reconcile
|
|
130
|
-
A companion **pre-block** hook,
|
|
130
|
+
`devrites-engine reconcile` is the **post-hoc** gate — it always runs and catches an A1 breach at record time.
|
|
131
|
+
A companion **pre-block** hook, `devrites-engine hook a1-guard` (a `PreToolUse` matcher on
|
|
131
132
|
`Edit|Write|MultiEdit`), stops the breach *before* the write lands. It is armed only inside the
|
|
132
|
-
mid-build window (between `reconcile
|
|
133
|
+
mid-build window (between `devrites-engine reconcile snapshot` and a clean `check`, keyed on `.reconcile-base`),
|
|
133
134
|
allows the wright (subagent calls carry `agent_id`), the inline fallback (`.reconcile-inline`),
|
|
134
135
|
and any `.devrites/` write — so it never touches `/rite-polish`, `/rite-quick`, or ordinary
|
|
135
136
|
manual edits. It ships **observe-only** (logs would-be blocks to `.a1-guard.log`, never blocks);
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rite-converge
|
|
3
|
+
description: Converge intent and live code. Use when resuming a half-built feature, after `/rite-adopt` drift, or the user asks "what's left to build". Not for initial planning.
|
|
4
|
+
argument-hint: "[feature-slug]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /rite-converge — make the code and the intent converge
|
|
9
|
+
|
|
10
|
+
Read `spec.md` + `plan.md` + `tasks.md` as the **sole source of intent** (with
|
|
11
|
+
`.devrites/principles.md` as governing constraints), assess what the **live codebase**
|
|
12
|
+
actually implements, and **append every unmet piece as a new traceable `SLICE-###`** at the
|
|
13
|
+
bottom of `tasks.md` so `/rite-build` can finish it. The recovery bridge for work that fell
|
|
14
|
+
out of sync with its plan: a half-built feature picked up cold, a `/rite-adopt`'d codebase
|
|
15
|
+
that drifted from its derived spec, or a build that stalled mid-slice. **Read the active
|
|
16
|
+
workspace first**; if there's no `spec.md`/`plan.md`/`tasks.md`, tell the user which
|
|
17
|
+
prerequisite skill to run.
|
|
18
|
+
|
|
19
|
+
> **Not a diff tool.** `/rite-converge` assesses the **present state** of the code against
|
|
20
|
+
> intent — no git, no branch comparison, no history. "What does this codebase do *now* vs
|
|
21
|
+
> what the artifacts asked for" — not "what changed since commit X". For a change-scoped
|
|
22
|
+
> review use `/rite-review`; to prove a finished feature use `/rite-prove`.
|
|
23
|
+
|
|
24
|
+
## Rules consulted (read on demand from `.claude/skills/devrites-lib/reference/standards/`)
|
|
25
|
+
Pull on demand:
|
|
26
|
+
- `principles.md` — the project invariants (`.devrites/principles.md`); code that violates a
|
|
27
|
+
MUST principle is the highest-severity gap and produces a remediation slice.
|
|
28
|
+
- `spec-grammar.md` — buildable acceptance criteria vs `## Success metrics` (outcome KPIs the
|
|
29
|
+
code can't make true and this pass never enqueues); structured `### Requirement:` /
|
|
30
|
+
`#### Scenario:` blocks, each scenario one behavior to check as built / partial / absent.
|
|
31
|
+
- `tooling.md` — prefer a code-intelligence index (codebase-memory-mcp → codegraph → graphify,
|
|
32
|
+
else LSP / Read/Grep/Glob) to read the live code, not assumptions.
|
|
33
|
+
- `testing.md` — a criterion with code but no covering test is *partial*, not done.
|
|
34
|
+
|
|
35
|
+
## Operating rules
|
|
36
|
+
- **APPEND-ONLY, never rewrite.** The only write to `tasks.md` is **appending** new
|
|
37
|
+
`SLICE-###` entries. Never rewrite, renumber, reorder, or delete an existing slice
|
|
38
|
+
(including slices a prior convergence appended). Never edit `spec.md` or `plan.md`. Never
|
|
39
|
+
touch application code — completing the appended slices is `/rite-build`'s job, not this
|
|
40
|
+
skill's.
|
|
41
|
+
- **Clean means byte-for-byte unchanged.** When the code already satisfies everything, leave
|
|
42
|
+
`tasks.md` untouched — no empty convergence header — and report a clean result. Recommend
|
|
43
|
+
`/rite-prove`.
|
|
44
|
+
- **Intent is the artifacts, not your memory.** The spec/plan/tasks (+ principles) are the
|
|
45
|
+
contract. If assessing reveals the *spec* is wrong (the code is right and the requirement is
|
|
46
|
+
stale), that's **Spec Drift** — stop and route it through the Spec Drift Guard
|
|
47
|
+
(`rite-build/reference/spec-drift-guard.md`) + a recorded decision; never paper over a spec
|
|
48
|
+
bug by appending a task that "fixes" the code to a wrong requirement.
|
|
49
|
+
- **Partial is not done.** Code that exists but is untested, half-wired, or covers only the
|
|
50
|
+
happy path is an unmet gap — enqueue the remainder, don't round it up.
|
|
51
|
+
- **Principles are non-negotiable.** A live violation of a declared invariant with no recorded
|
|
52
|
+
exception is the top-severity gap, walked first. Absent/empty principles file → none declared
|
|
53
|
+
→ skip the check gracefully, never block for its absence.
|
|
54
|
+
|
|
55
|
+
## Workflow
|
|
56
|
+
0. **Read `.claude/skills/devrites-lib/reference/standards/core.md`** first (the always-on
|
|
57
|
+
operating rules), then run `devrites-engine preamble` for deterministic workspace orientation.
|
|
58
|
+
1. **Confirm the gate.** Require `spec.md` + `plan.md` + `tasks.md` in the active workspace. If
|
|
59
|
+
any is missing, **STOP** and name the prerequisite (`/rite-spec` for a missing spec,
|
|
60
|
+
`/rite-define` for a missing plan/tasks, `/rite-adopt` to onboard existing code). Do not
|
|
61
|
+
produce partial output.
|
|
62
|
+
2. **Load intent** — [`reference/convergence-assessment.md`](reference/convergence-assessment.md).
|
|
63
|
+
From `spec.md`: buildable `AC-###` / `### Requirement:` scenarios (skip `## Success metrics`);
|
|
64
|
+
from `plan.md`: architecture decisions + named touch-points (files/components the plan says
|
|
65
|
+
get built); from `tasks.md`: existing slices + their `Satisfies:`; from
|
|
66
|
+
`.devrites/principles.md`: the invariants.
|
|
67
|
+
**Completion:** every buildable criterion, touch-point, slice output, and principle is in the assessment inventory.
|
|
68
|
+
3. **Run the mechanical backbone**, then read the code. `devrites-engine analyze` gives coverage +
|
|
69
|
+
consistency; `devrites-engine coverage` gives the AC→slice→proven matrix. They catch *unmapped*
|
|
70
|
+
criteria; they do **not** see whether mapped code is actually built and correct — for that,
|
|
71
|
+
read the live code (code-intelligence index per `tooling.md`).
|
|
72
|
+
```bash
|
|
73
|
+
S="$(cat .devrites/ACTIVE 2>/dev/null)"
|
|
74
|
+
devrites-engine analyze "$S"; echo "analyze rc=$?"
|
|
75
|
+
devrites-engine coverage "$S" > /dev/null; echo "coverage rc=$?"
|
|
76
|
+
```
|
|
77
|
+
4. **Assess each unit as built / partial / absent** against the live code (the rubric is in
|
|
78
|
+
[`reference/convergence-assessment.md`](reference/convergence-assessment.md)): every
|
|
79
|
+
acceptance criterion / scenario, every plan touch-point, and every existing slice's stated
|
|
80
|
+
Produces. A principle violated in the current code is its own top-severity gap.
|
|
81
|
+
**Completion:** every inventory unit is classified once with live-code evidence.
|
|
82
|
+
5. **Enqueue the remainder as new slices.** For each *partial* or *absent* unit, append a
|
|
83
|
+
`## SLICE-###` (continue the numbering after the highest existing id) in the `rite-define`
|
|
84
|
+
slice grammar, each with a `Satisfies:` line tracing to the AC/REQ it closes and a
|
|
85
|
+
`Convergence: <iso>` marker line. Dependency-order them after the existing slices; a
|
|
86
|
+
principle-remediation slice sorts first. **If every unit is built → append nothing.**
|
|
87
|
+
**Completion:** every partial/absent unit has one traceable appended slice, or the file is byte-for-byte unchanged.
|
|
88
|
+
6. **Write append-only + bookkeeping.** Append the slice batch to `tasks.md` (nothing else in
|
|
89
|
+
that file changes); refresh `traceability.md` (`devrites-engine coverage` → new rows for the
|
|
90
|
+
appended slices); update `state.md` (`Phase: converge`, `Next step: /rite-build`; or, when
|
|
91
|
+
nothing was unmet, `Next step: /rite-prove`). Append `decisions.md` for any material call.
|
|
92
|
+
7. **STOP.** Report units assessed, built / partial / absent counts, slices appended, and any
|
|
93
|
+
principle violation found; recommend `/rite-build` (or `/rite-prove` if the code already
|
|
94
|
+
converged).
|
|
95
|
+
|
|
96
|
+
## Appended slice format
|
|
97
|
+
Use the complete
|
|
98
|
+
[`canonical slice grammar`](../devrites-lib/reference/workspace-artifact-schema.md#canonical-slice-grammar)
|
|
99
|
+
with one added `Convergence:` field after `Satisfies:`:
|
|
100
|
+
```markdown
|
|
101
|
+
<!-- Convergence 2026-07-07: slices below appended by /rite-converge — live code assessed against intent. -->
|
|
102
|
+
## SLICE-014 <name of the unmet capability>
|
|
103
|
+
Satisfies: AC-007 # the criterion / scenario this closes
|
|
104
|
+
Convergence: 2026-07-07 # marks this as a convergence-appended slice, not an original
|
|
105
|
+
<all remaining canonical slice fields>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
> **Mid-flight discipline.** When tempted to rewrite an existing slice instead of appending, to
|
|
109
|
+
> edit the code directly "while you're in there", to mark a happy-path-only implementation as
|
|
110
|
+
> built, or to enqueue a task that bends the code to a spec you suspect is wrong — see
|
|
111
|
+
> [`reference/anti-patterns.md`](reference/anti-patterns.md). Load it the moment you reach for
|
|
112
|
+
> the excuse.
|
|
113
|
+
|
|
114
|
+
## Output
|
|
115
|
+
|
|
116
|
+
**Progress first** — run `devrites-engine progress`, then use the shared completion reply contract
|
|
117
|
+
([`devrites-lib/reference/reply-contract.md`](../devrites-lib/reference/reply-contract.md)).
|
|
118
|
+
Default success shape:
|
|
119
|
+
```
|
|
120
|
+
Done: convergence assessed for <slug>; <n> slices appended.
|
|
121
|
+
Changed: tasks.md <appended|unchanged>, traceability.md, state.md
|
|
122
|
+
Evidence: units <built>/<total> built · <partial> partial · <absent> absent · principle violations 0
|
|
123
|
+
Open: none
|
|
124
|
+
Next: /rite-build
|
|
125
|
+
Record: .devrites/work/<slug>/tasks.md
|
|
126
|
+
↻ Hygiene: /clear before /rite-build
|
|
127
|
+
```
|
|
128
|
+
When nothing was unmet, render the same green form with `Next: /rite-prove`.
|
|
129
|
+
If spec drift or another blocker remains, use the shared `Stopped / blocked` form
|
|
130
|
+
and route `Fix:` to `/rite-plan`; do not recommend `/rite-build`.
|
|
131
|
+
**DO NOT write application code, rewrite existing slices, or edit spec.md/plan.md here** — convergence assesses and enqueues; `/rite-build` implements.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# /rite-converge anti-patterns
|
|
2
|
+
|
|
3
|
+
Load the moment you reach for one of these excuses.
|
|
4
|
+
|
|
5
|
+
## Common rationalizations
|
|
6
|
+
|
|
7
|
+
- *"I'll just fix this existing slice instead of appending a new one."* — No. The append-only
|
|
8
|
+
rule is what makes convergence **re-runnable** and its output **auditable**: a reader diffs
|
|
9
|
+
`tasks.md` and sees exactly what this pass added. Rewriting an existing slice destroys that
|
|
10
|
+
and can silently drop coverage. Append; never edit an existing `SLICE-###`.
|
|
11
|
+
- *"The gap is tiny — I'll just patch the code while I'm here."* — No. Convergence **assesses
|
|
12
|
+
and enqueues**; `/rite-build` implements. The moment you edit application code you've skipped
|
|
13
|
+
the build's slice discipline, tests, and reviewer. Enqueue it, however small.
|
|
14
|
+
- *"It's basically built — I'll call it done."* — Happy-path-only, untested, or half-wired is
|
|
15
|
+
**partial**, not built (`convergence-assessment.md`). Rounding partial up to built is how a
|
|
16
|
+
feature ships with the edge cases that were the whole reason for the scenario.
|
|
17
|
+
- *"The code does X, the spec says Y — I'll enqueue a slice to make the code match the spec."* —
|
|
18
|
+
Only if you're sure the **spec** is right. If the code is right and the requirement is stale,
|
|
19
|
+
that's **Spec Drift** — route it through the guard, don't launder a spec bug into a code task.
|
|
20
|
+
- *"The spec has no `AC-###` ids, so there's nothing to converge."* — Assess plan touch-points
|
|
21
|
+
and existing-slice Produces directly against the code; a coverage id is convenient, not
|
|
22
|
+
required. (And flag the untagged spec so `/rite-spec` can add ids.)
|
|
23
|
+
- *"I'll rewrite the whole tasks.md to be clean while I'm at it."* — That is a **reslice**, and
|
|
24
|
+
it belongs to `/rite-plan`, not here. Convergence only ever *appends*.
|
|
25
|
+
|
|
26
|
+
## Red flags in your own output
|
|
27
|
+
|
|
28
|
+
- An edit to `tasks.md` that touches a line **above** the appended batch → you rewrote history.
|
|
29
|
+
Revert; append only.
|
|
30
|
+
- Any change to `spec.md`, `plan.md`, or a source file in this pass → out of scope.
|
|
31
|
+
- An appended slice with no `Satisfies:` line → it traces to nothing; either tie it to a
|
|
32
|
+
criterion/touch-point or it isn't convergence work.
|
|
33
|
+
- A "clean" report that still left a `## Convergence` header or marker in `tasks.md` → clean
|
|
34
|
+
must be **byte-for-byte unchanged**.
|
|
35
|
+
- Reusing or renumbering an existing `SLICE-###` id → ids are append-only and stable.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Convergence assessment — built / partial / absent
|
|
2
|
+
|
|
3
|
+
The rubric `/rite-converge` applies to every unit of intent. Load when running step 2–5.
|
|
4
|
+
|
|
5
|
+
## The unit set
|
|
6
|
+
|
|
7
|
+
Assess three kinds of unit against the live code:
|
|
8
|
+
|
|
9
|
+
1. **Acceptance criteria / scenarios** — each buildable `AC-###` and each `#### Scenario:`
|
|
10
|
+
(WHEN/THEN) in `spec.md`. `## Success metrics` lines are **not** units — they carry no
|
|
11
|
+
`AC-###` id, no slice can satisfy them, and this pass never enqueues one (`spec-grammar.md`).
|
|
12
|
+
2. **Plan touch-points** — the files/components/modules `plan.md` says get built or edited, and
|
|
13
|
+
each existing slice's stated **Produces** (the interface it was meant to expose).
|
|
14
|
+
3. **Principles** — each invariant in `.devrites/principles.md`, checked against the code as it
|
|
15
|
+
stands.
|
|
16
|
+
|
|
17
|
+
## The three verdicts
|
|
18
|
+
|
|
19
|
+
For each unit, decide **built / partial / absent** — and only *partial* and *absent* enqueue a
|
|
20
|
+
slice.
|
|
21
|
+
|
|
22
|
+
| Verdict | Test | Action |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| **built** | The behavior exists in the code **and** a test covers it (a criterion with code but no covering test is not built — `testing.md`). | Nothing — do not append. |
|
|
25
|
+
| **partial** | Some of it exists: happy path only, un-wired, untested, a TODO stub, or an edge case from the scenario's WHEN/THEN missing. | Append a slice for the **remainder**, its `Known-Gotchas` naming what's already there so `/rite-build` extends rather than rebuilds. |
|
|
26
|
+
| **absent** | No code implements it. | Append a full slice. |
|
|
27
|
+
|
|
28
|
+
Read the code to decide — do not infer from the plan. Use the code-intelligence index
|
|
29
|
+
(codebase-memory-mcp → codegraph → graphify, else LSP / grep) so the verdict reflects live
|
|
30
|
+
code, not the artifacts' claims. `devrites-engine analyze` / `devrites-engine coverage` tell you what's
|
|
31
|
+
*mapped*; only reading the code tells you what's *built*.
|
|
32
|
+
|
|
33
|
+
## Principle violations
|
|
34
|
+
|
|
35
|
+
A live violation of a declared invariant (secret in logs, money as float, a datastore added
|
|
36
|
+
with no ADR) is the **top-severity** gap regardless of coverage. It sorts **first** in the
|
|
37
|
+
appended batch as a remediation slice, and — because reshaping to honor an invariant can be an
|
|
38
|
+
irreversible-risk change — it pauses for a human even under AFK. Absent/empty principles file →
|
|
39
|
+
none declared → skip, never block.
|
|
40
|
+
|
|
41
|
+
## Spec drift vs code gap
|
|
42
|
+
|
|
43
|
+
Before appending a slice, separate the two failure directions:
|
|
44
|
+
|
|
45
|
+
- **Code gap** — the spec is right, the code falls short. → append a slice. (This skill's job.)
|
|
46
|
+
- **Spec drift** — the code is right, the requirement is stale or wrong. → **do not** append a
|
|
47
|
+
slice that bends correct code to a wrong spec. Stop, route through the Spec Drift Guard
|
|
48
|
+
(`rite-build/reference/spec-drift-guard.md`) + a recorded decision, and let `/rite-plan
|
|
49
|
+
repair` reshape intent. Convergence enqueues work; it never launders a spec bug into a code
|
|
50
|
+
task.
|
|
51
|
+
|
|
52
|
+
## Numbering + ordering the appended batch
|
|
53
|
+
|
|
54
|
+
- **Continue the ids** — the highest existing `SLICE-###` + 1, ascending. Never reuse or
|
|
55
|
+
renumber an existing id.
|
|
56
|
+
- **Order after the existing slices**, dependency-first among the new ones (`depends_on`);
|
|
57
|
+
a principle-remediation slice sorts before feature gaps.
|
|
58
|
+
- **Mark each** with `Convergence: <iso>` so a later reader (and `/rite-status`) can tell an
|
|
59
|
+
original slice from a converged-in one.
|
|
60
|
+
- **Nothing unmet → append nothing.** No batch header, no marker, `tasks.md` byte-for-byte
|
|
61
|
+
unchanged.
|