@azure-id/orc 0.55.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 +2017 -0
- package/README-id.md +521 -0
- package/README.md +485 -0
- package/bin/build-agents.js +86 -0
- package/bin/cli.js +29050 -0
- package/bin/mockrun-catalog.js +267 -0
- package/bin/onboarding-content.js +172 -0
- package/bin/pricing.json +200 -0
- package/bin/providers.json +437 -0
- package/bin/ui.js +95 -0
- package/bin/verify-contracts.js +3277 -0
- package/bin/verify-package.js +498 -0
- package/bin/webui/api.js +1163 -0
- package/bin/webui/app.html +198 -0
- package/bin/webui/css/00-tokens.css +92 -0
- package/bin/webui/css/01-base.css +42 -0
- package/bin/webui/css/02-shell.css +103 -0
- package/bin/webui/css/03-components.css +462 -0
- package/bin/webui/css/04-motion.css +91 -0
- package/bin/webui/css/05-tour.css +100 -0
- package/bin/webui/css/06-responsive.css +108 -0
- package/bin/webui/css/panels/boundary.css +26 -0
- package/bin/webui/css/panels/challenge.css +151 -0
- package/bin/webui/css/panels/crosslink.css +194 -0
- package/bin/webui/css/panels/docs.css +254 -0
- package/bin/webui/css/panels/experiment.css +23 -0
- package/bin/webui/css/panels/extra.css +536 -0
- package/bin/webui/css/panels/flow.css +177 -0
- package/bin/webui/css/panels/handoff.css +67 -0
- package/bin/webui/css/panels/knowledge.css +86 -0
- package/bin/webui/css/panels/learn.css +154 -0
- package/bin/webui/css/panels/maintenance.css +55 -0
- package/bin/webui/css/panels/mockrun.css +268 -0
- package/bin/webui/css/panels/overview.css +100 -0
- package/bin/webui/css/panels/pact.css +43 -0
- package/bin/webui/css/panels/runs.css +105 -0
- package/bin/webui/css/panels/settings.css +227 -0
- package/bin/webui/css/panels/stats.css +87 -0
- package/bin/webui/fixtures/boundary.js +92 -0
- package/bin/webui/fixtures/challenge.js +825 -0
- package/bin/webui/fixtures/crosslink.js +31 -0
- package/bin/webui/fixtures/docs.js +982 -0
- package/bin/webui/fixtures/extra.js +1934 -0
- package/bin/webui/fixtures/flow.js +81 -0
- package/bin/webui/fixtures/handoff.js +35 -0
- package/bin/webui/fixtures/index.js +486 -0
- package/bin/webui/fixtures/knowledge.js +291 -0
- package/bin/webui/fixtures/maintenance.js +42 -0
- package/bin/webui/fixtures/mockrun.js +36 -0
- package/bin/webui/fixtures/pact.js +111 -0
- package/bin/webui/fixtures/runs.js +109 -0
- package/bin/webui/fixtures/settings.js +78 -0
- package/bin/webui/fixtures/shell.js +48 -0
- package/bin/webui/fixtures/stats.js +104 -0
- package/bin/webui/i18n/TERMS.md +134 -0
- package/bin/webui/i18n/en/banner.json +29 -0
- package/bin/webui/i18n/en/boundary.json +20 -0
- package/bin/webui/i18n/en/challenge.json +106 -0
- package/bin/webui/i18n/en/common.json +69 -0
- package/bin/webui/i18n/en/crosslink.json +69 -0
- package/bin/webui/i18n/en/docs.json +175 -0
- package/bin/webui/i18n/en/experiment.json +17 -0
- package/bin/webui/i18n/en/extra.json +313 -0
- package/bin/webui/i18n/en/flow.json +30 -0
- package/bin/webui/i18n/en/handoff.json +37 -0
- package/bin/webui/i18n/en/knowledge.json +141 -0
- package/bin/webui/i18n/en/learn.json +16 -0
- package/bin/webui/i18n/en/maintenance.json +52 -0
- package/bin/webui/i18n/en/mockrun.json +19 -0
- package/bin/webui/i18n/en/nav.json +19 -0
- package/bin/webui/i18n/en/overview.json +89 -0
- package/bin/webui/i18n/en/pact.json +36 -0
- package/bin/webui/i18n/en/runs.json +51 -0
- package/bin/webui/i18n/en/settings.json +49 -0
- package/bin/webui/i18n/en/stats.json +69 -0
- package/bin/webui/i18n/en/tour.json +33 -0
- package/bin/webui/i18n/id/banner.json +29 -0
- package/bin/webui/i18n/id/boundary.json +20 -0
- package/bin/webui/i18n/id/challenge.json +106 -0
- package/bin/webui/i18n/id/common.json +70 -0
- package/bin/webui/i18n/id/crosslink.json +69 -0
- package/bin/webui/i18n/id/docs.json +175 -0
- package/bin/webui/i18n/id/experiment.json +17 -0
- package/bin/webui/i18n/id/extra.json +313 -0
- package/bin/webui/i18n/id/flow.json +30 -0
- package/bin/webui/i18n/id/handoff.json +37 -0
- package/bin/webui/i18n/id/knowledge.json +141 -0
- package/bin/webui/i18n/id/learn.json +16 -0
- package/bin/webui/i18n/id/maintenance.json +52 -0
- package/bin/webui/i18n/id/mockrun.json +19 -0
- package/bin/webui/i18n/id/nav.json +19 -0
- package/bin/webui/i18n/id/overview.json +89 -0
- package/bin/webui/i18n/id/pact.json +36 -0
- package/bin/webui/i18n/id/runs.json +51 -0
- package/bin/webui/i18n/id/settings.json +49 -0
- package/bin/webui/i18n/id/stats.json +69 -0
- package/bin/webui/i18n/id/tour.json +33 -0
- package/bin/webui/js/00-core.js +115 -0
- package/bin/webui/js/01-i18n.js +149 -0
- package/bin/webui/js/02-ui.js +211 -0
- package/bin/webui/js/03-md.js +286 -0
- package/bin/webui/js/04-router.js +51 -0
- package/bin/webui/js/05-banners.js +172 -0
- package/bin/webui/js/06-edit.js +183 -0
- package/bin/webui/js/90-tour.js +488 -0
- package/bin/webui/js/91-shortcuts.js +126 -0
- package/bin/webui/js/99-boot.js +118 -0
- package/bin/webui/js/panels/boundary.js +104 -0
- package/bin/webui/js/panels/challenge.js +781 -0
- package/bin/webui/js/panels/crosslink.js +654 -0
- package/bin/webui/js/panels/docs.js +1338 -0
- package/bin/webui/js/panels/experiment.js +98 -0
- package/bin/webui/js/panels/extra.js +3011 -0
- package/bin/webui/js/panels/flow.js +297 -0
- package/bin/webui/js/panels/handoff.js +169 -0
- package/bin/webui/js/panels/knowledge.js +890 -0
- package/bin/webui/js/panels/learn.js +220 -0
- package/bin/webui/js/panels/maintenance.js +235 -0
- package/bin/webui/js/panels/mockrun.js +227 -0
- package/bin/webui/js/panels/overview.js +447 -0
- package/bin/webui/js/panels/pact.js +189 -0
- package/bin/webui/js/panels/runs.js +416 -0
- package/bin/webui/js/panels/settings.js +573 -0
- package/bin/webui/js/panels/stats.js +378 -0
- package/bin/webui/serve.js +557 -0
- package/mock-run/INDEX.md +106 -0
- package/mock-run/a-normal-day.md +587 -0
- package/mock-run/context-combiner.md +100 -0
- package/mock-run/extra-recovery.md +330 -0
- package/mock-run/extra-slots.md +177 -0
- package/mock-run/media/README.md +43 -0
- package/mock-run/orc-aftermath.md +392 -0
- package/mock-run/orc-boundary.md +356 -0
- package/mock-run/orc-brainstorm.md +177 -0
- package/mock-run/orc-budget.md +534 -0
- package/mock-run/orc-challenge-council.md +262 -0
- package/mock-run/orc-challenge.md +416 -0
- package/mock-run/orc-cli.md +200 -0
- package/mock-run/orc-diy.md +129 -0
- package/mock-run/orc-doc.md +448 -0
- package/mock-run/orc-explain.md +86 -0
- package/mock-run/orc-export.md +423 -0
- package/mock-run/orc-extra.md +392 -0
- package/mock-run/orc-fast.md +106 -0
- package/mock-run/orc-grill.md +151 -0
- package/mock-run/orc-handoff.md +480 -0
- package/mock-run/orc-pact.md +421 -0
- package/mock-run/orc-pattern.md +112 -0
- package/mock-run/orc-plan.md +108 -0
- package/mock-run/orc-pr-setup.md +126 -0
- package/mock-run/orc-quick.md +113 -0
- package/mock-run/orc-route.md +93 -0
- package/mock-run/orc-ui.md +125 -0
- package/mock-run/orc-ultra.md +103 -0
- package/mock-run/orc.md +157 -0
- package/mock-run/the-example-project.md +55 -0
- package/package.json +39 -0
- package/templates/agents/MODEL-MAPPING.md +168 -0
- package/templates/agents/orc-advisor-fable-5.md +50 -0
- package/templates/agents/orc-advisor-opus-5-xhigh.md +56 -0
- package/templates/agents/orc-analyst-fable-5.md +115 -0
- package/templates/agents/orc-analyze-mini-opus-5-med.md +60 -0
- package/templates/agents/orc-analyze-mini-sonnet-5-high.md +58 -0
- package/templates/agents/orc-challenge-advisor-opus-5-med.md +75 -0
- package/templates/agents/orc-challenge-contrarian-opus-5-high.md +110 -0
- package/templates/agents/orc-challenge-executor-opus-5-med.md +114 -0
- package/templates/agents/orc-challenge-expansionist-opus-5-med.md +112 -0
- package/templates/agents/orc-challenge-judge-opus-5-high.md +132 -0
- package/templates/agents/orc-challenge-outsider-opus-5-low.md +109 -0
- package/templates/agents/orc-challenge-principles-opus-5-high.md +109 -0
- package/templates/agents/orc-challenge-reader-opus-5-low.md +90 -0
- package/templates/agents/orc-claude-writer-opus-4-8-high.md +53 -0
- package/templates/agents/orc-claude-writer-opus-5-med.md +55 -0
- package/templates/agents/orc-context-combiner-opus-5-high.md +88 -0
- package/templates/agents/orc-doc-checker-opus-5-low.md +108 -0
- package/templates/agents/orc-doc-writer-opus-5-med.md +134 -0
- package/templates/agents/orc-executor-haiku-4-5.md +113 -0
- package/templates/agents/orc-executor-opus-4-7-high.md +114 -0
- package/templates/agents/orc-executor-opus-4-7-med.md +114 -0
- package/templates/agents/orc-executor-opus-4-8-high.md +114 -0
- package/templates/agents/orc-executor-opus-5-high.md +114 -0
- package/templates/agents/orc-executor-opus-5-low.md +114 -0
- package/templates/agents/orc-executor-opus-5-med.md +114 -0
- package/templates/agents/orc-executor-sonnet-4-6-high.md +114 -0
- package/templates/agents/orc-executor-sonnet-4-6-med.md +114 -0
- package/templates/agents/orc-executor-sonnet-5-high.md +114 -0
- package/templates/agents/orc-judge-fable-5.md +79 -0
- package/templates/agents/orc-judge-opus-5-xhigh.md +85 -0
- package/templates/agents/orc-learn-writer-opus-5-low.md +73 -0
- package/templates/agents/orc-pattern-codifier-opus-5-med.md +65 -0
- package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +63 -0
- package/templates/agents/orc-planner-fable-5.md +152 -0
- package/templates/agents/orc-planner-mini-opus-5-med.md +69 -0
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +67 -0
- package/templates/agents/orc-planner-opus-5-med.md +160 -0
- package/templates/agents/orc-retro-opus-5-med.md +73 -0
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -0
- package/templates/agents/orc-reviewer-fable-5.md +57 -0
- package/templates/agents/orc-reviewer-opus-5-med.md +60 -0
- package/templates/agents/orc-scout-opus-5-low.md +40 -0
- package/templates/agents/orc-scout-sonnet-4-6-high.md +39 -0
- package/templates/agents/orc-system-analyst-opus-5-high.md +120 -0
- package/templates/agents/orc-test-author-opus-5-med.md +71 -0
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -0
- package/templates/agents/orc-verifier-opus-5-med.md +69 -0
- package/templates/agents/orc-wiki-scanner-opus-4-8-high.md +79 -0
- package/templates/agents/orc-wiki-scanner-opus-5-med.md +81 -0
- package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +106 -0
- package/templates/commands/orc-aftermath.md +49 -0
- package/templates/commands/orc-analyze.md +21 -0
- package/templates/commands/orc-boundary.md +46 -0
- package/templates/commands/orc-brainstorm.md +51 -0
- package/templates/commands/orc-budget.md +54 -0
- package/templates/commands/orc-challenge.md +58 -0
- package/templates/commands/orc-claude.md +14 -0
- package/templates/commands/orc-diy.md +13 -0
- package/templates/commands/orc-doc.md +128 -0
- package/templates/commands/orc-explain.md +20 -0
- package/templates/commands/orc-export.md +46 -0
- package/templates/commands/orc-fast.md +15 -0
- package/templates/commands/orc-grill.md +40 -0
- package/templates/commands/orc-handoff.md +52 -0
- package/templates/commands/orc-learn.md +17 -0
- package/templates/commands/orc-mini.md +12 -0
- package/templates/commands/orc-pact.md +44 -0
- package/templates/commands/orc-pattern.md +15 -0
- package/templates/commands/orc-plan.md +22 -0
- package/templates/commands/orc-poly.md +21 -0
- package/templates/commands/orc-pr-driver.md +30 -0
- package/templates/commands/orc-pr-setup.md +31 -0
- package/templates/commands/orc-quick.md +33 -0
- package/templates/commands/orc-retro.md +17 -0
- package/templates/commands/orc-route.md +41 -0
- package/templates/commands/orc-ultra.md +17 -0
- package/templates/commands/orc-verify.md +11 -0
- package/templates/commands/orc-wiki.md +42 -0
- package/templates/commands/orc.md +16 -0
- package/templates/hooks/orc-effort-guard.js +178 -0
- package/templates/hooks/orc-statusline.js +305 -0
- package/templates/hooks/orc-trace.js +471 -0
- package/templates/hooks/orc-update-lib.js +125 -0
- package/templates/skills/_shared/README.md +50 -0
- package/templates/skills/_shared/detecting-artifacts.md +90 -0
- package/templates/skills/_shared/drift-recovery.md +98 -0
- package/templates/skills/_shared/extra-dispatch.md +1051 -0
- package/templates/skills/_shared/fable5-override.md +56 -0
- package/templates/skills/_shared/fallback-handoff.md +42 -0
- package/templates/skills/_shared/gh-stack-commands.md +65 -0
- package/templates/skills/_shared/gotchas.md +177 -0
- package/templates/skills/_shared/interview.md +144 -0
- package/templates/skills/_shared/lane-suspend.md +82 -0
- package/templates/skills/_shared/opus5-only.md +131 -0
- package/templates/skills/_shared/pr-templates.md +106 -0
- package/templates/skills/_shared/read-ladder.md +54 -0
- package/templates/skills/_shared/return-validation.md +145 -0
- package/templates/skills/_shared/smoke-gate.md +28 -0
- package/templates/skills/_shared/stack-plan.md +135 -0
- package/templates/skills/_shared/untrusted-input.md +63 -0
- package/templates/skills/context-combiner/SKILL.md +187 -0
- package/templates/skills/context-combiner/schemas/combined-report.md +78 -0
- package/templates/skills/context-combiner/schemas/combined-requirement-spec.md +87 -0
- package/templates/skills/orc/README.md +150 -0
- package/templates/skills/orc/SKILL.md +526 -0
- package/templates/skills/orc/config.md +389 -0
- package/templates/skills/orc/examples/full-run-mock.md +73 -0
- package/templates/skills/orc/references/analyst-gates.md +124 -0
- package/templates/skills/orc/references/effort-and-mode.md +224 -0
- package/templates/skills/orc/references/house-rules.md +20 -0
- package/templates/skills/orc/references/intake.md +120 -0
- package/templates/skills/orc/references/log-protocol.md +39 -0
- package/templates/skills/orc/references/pattern-gate.md +89 -0
- package/templates/skills/orc/references/plan-handoff.md +84 -0
- package/templates/skills/orc/references/preflight-report.md +220 -0
- package/templates/skills/orc/references/security-checklist.md +39 -0
- package/templates/skills/orc/references/stop-and-resume.md +160 -0
- package/templates/skills/orc/references/trace-protocol.md +314 -0
- package/templates/skills/orc/references/ultra-mode.md +123 -0
- package/templates/skills/orc/references/wave-grouping.md +121 -0
- package/templates/skills/orc/references/wiki-consult.md +177 -0
- package/templates/skills/orc/schemas/checkpoint.md +122 -0
- package/templates/skills/orc/schemas/intent-spec.md +42 -0
- package/templates/skills/orc/schemas/planning-output.md +279 -0
- package/templates/skills/orc/subskills/orc-checkpoint/SKILL.md +55 -0
- package/templates/skills/orc/subskills/orc-execution/SKILL.md +72 -0
- package/templates/skills/orc/subskills/orc-execution/core.md +151 -0
- package/templates/skills/orc/subskills/orc-execution/subagent.md +13 -0
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +264 -0
- package/templates/skills/orc/subskills/orc-planner-mini/SKILL.md +121 -0
- package/templates/skills/orc/subskills/orc-pr/SKILL.md +51 -0
- package/templates/skills/orc/subskills/orc-pr/pr.md +22 -0
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +108 -0
- package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +76 -0
- package/templates/skills/orc/subskills/orc-review-verify/core.md +135 -0
- package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -0
- package/templates/skills/orc/subskills/orc-testgen/SKILL.md +45 -0
- package/templates/skills/orc/subskills/orc-testgen/core.md +59 -0
- package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -0
- package/templates/skills/orc-advisor/SKILL.md +60 -0
- package/templates/skills/orc-aftermath/SKILL.md +136 -0
- package/templates/skills/orc-aftermath/references/report.md +95 -0
- package/templates/skills/orc-analyze/SKILL.md +220 -0
- package/templates/skills/orc-analyze/examples/analyze-mock.md +42 -0
- package/templates/skills/orc-analyze/references/branching.md +51 -0
- package/templates/skills/orc-analyze/references/deep-mode.md +27 -0
- package/templates/skills/orc-analyze/references/thin-input.md +77 -0
- package/templates/skills/orc-analyze/schemas/report-audit.md +83 -0
- package/templates/skills/orc-analyze/schemas/report-prose.md +63 -0
- package/templates/skills/orc-analyze/schemas/report-requirement.md +78 -0
- package/templates/skills/orc-analyze/schemas/requirement-spec.md +77 -0
- package/templates/skills/orc-analyze-mini/SKILL.md +112 -0
- package/templates/skills/orc-analyze-mini/examples/quick-analysis-mock.md +31 -0
- package/templates/skills/orc-boundary/SKILL.md +208 -0
- package/templates/skills/orc-boundary/references/card.md +78 -0
- package/templates/skills/orc-boundary/references/gate.md +113 -0
- package/templates/skills/orc-brainstorm/SKILL.md +339 -0
- package/templates/skills/orc-brainstorm/references/brainstorm-doc.md +133 -0
- package/templates/skills/orc-brainstorm/references/lenses.md +152 -0
- package/templates/skills/orc-budget/SKILL.md +225 -0
- package/templates/skills/orc-budget/references/corpus.md +87 -0
- package/templates/skills/orc-challenge/README.md +142 -0
- package/templates/skills/orc-challenge/SKILL.md +255 -0
- package/templates/skills/orc-challenge/examples/code-module.md +110 -0
- package/templates/skills/orc-challenge/examples/council-full-roster.md +273 -0
- package/templates/skills/orc-challenge/examples/tsd-two-iterations.md +213 -0
- package/templates/skills/orc-challenge/references/conservation.md +107 -0
- package/templates/skills/orc-challenge/references/council.md +315 -0
- package/templates/skills/orc-challenge/references/cycle-state.md +185 -0
- package/templates/skills/orc-challenge/references/dimensions.md +121 -0
- package/templates/skills/orc-challenge/references/fix-brief.md +130 -0
- package/templates/skills/orc-challenge/references/intake.md +171 -0
- package/templates/skills/orc-challenge/references/kinds.md +44 -0
- package/templates/skills/orc-challenge/references/plain-english.md +98 -0
- package/templates/skills/orc-challenge/references/rubric.md +109 -0
- package/templates/skills/orc-challenge/references/sealed-slice.md +97 -0
- package/templates/skills/orc-challenge/references/verdict-doc.md +154 -0
- package/templates/skills/orc-claude/SKILL.md +199 -0
- package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -0
- package/templates/skills/orc-claude/references/refresh.md +76 -0
- package/templates/skills/orc-claude/references/template.md +109 -0
- package/templates/skills/orc-diy/README.md +142 -0
- package/templates/skills/orc-diy/SKILL.md +70 -0
- package/templates/skills/orc-diy/references/blocks/analyze.md +24 -0
- package/templates/skills/orc-diy/references/blocks/execution.md +42 -0
- package/templates/skills/orc-diy/references/blocks/extra.md +55 -0
- package/templates/skills/orc-diy/references/blocks/header.md +55 -0
- package/templates/skills/orc-diy/references/blocks/mock-example.md +22 -0
- package/templates/skills/orc-diy/references/blocks/pattern.md +18 -0
- package/templates/skills/orc-diy/references/blocks/planning.md +34 -0
- package/templates/skills/orc-diy/references/blocks/review.md +18 -0
- package/templates/skills/orc-diy/references/blocks/scoring.md +16 -0
- package/templates/skills/orc-diy/references/blocks/security.md +25 -0
- package/templates/skills/orc-diy/references/blocks/ship.md +25 -0
- package/templates/skills/orc-diy/references/blocks/summary.md +18 -0
- package/templates/skills/orc-diy/references/blocks/testgen.md +17 -0
- package/templates/skills/orc-diy/references/blocks/trace.md +28 -0
- package/templates/skills/orc-diy/references/blocks/verify.md +25 -0
- package/templates/skills/orc-diy/references/blocks/wiki.md +26 -0
- package/templates/skills/orc-diy/references/compile.md +59 -0
- package/templates/skills/orc-diy/references/flow-schema.md +100 -0
- package/templates/skills/orc-diy/references/locked-blocks.md +37 -0
- package/templates/skills/orc-doc/README.md +229 -0
- package/templates/skills/orc-doc/SKILL.md +444 -0
- package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +325 -0
- package/templates/skills/orc-doc/references/chunking.md +527 -0
- package/templates/skills/orc-doc/references/gates.md +311 -0
- package/templates/skills/orc-doc/references/generation-rules.md +122 -0
- package/templates/skills/orc-doc/references/house-rules.md +170 -0
- package/templates/skills/orc-doc/references/import-targets.md +40 -0
- package/templates/skills/orc-doc/references/plain-language.md +66 -0
- package/templates/skills/orc-doc/references/portable-markdown.md +74 -0
- package/templates/skills/orc-doc/references/resume-protocol.md +228 -0
- package/templates/skills/orc-doc/references/templates/collaboration.md +118 -0
- package/templates/skills/orc-doc/references/templates/prd.md +133 -0
- package/templates/skills/orc-doc/references/templates/report.md +102 -0
- package/templates/skills/orc-doc/references/templates/tsd.md +122 -0
- package/templates/skills/orc-doc/references/templates/workflow.md +112 -0
- package/templates/skills/orc-explain/SKILL.md +57 -0
- package/templates/skills/orc-export/SKILL.md +154 -0
- package/templates/skills/orc-fast/SKILL.md +188 -0
- package/templates/skills/orc-grill/SKILL.md +207 -0
- package/templates/skills/orc-grill/references/grill-doc.md +105 -0
- package/templates/skills/orc-handoff/SKILL.md +204 -0
- package/templates/skills/orc-handoff/references/handoff-log.md +67 -0
- package/templates/skills/orc-handoff/references/surfaces.md +88 -0
- package/templates/skills/orc-judge/SKILL.md +82 -0
- package/templates/skills/orc-learn/SKILL.md +156 -0
- package/templates/skills/orc-learn/examples/learn-run-mock.md +61 -0
- package/templates/skills/orc-learn/references/deepen.md +70 -0
- package/templates/skills/orc-learn/references/refresh.md +65 -0
- package/templates/skills/orc-learn/references/template-knowledge.md +83 -0
- package/templates/skills/orc-learn/references/template-learning.md +67 -0
- package/templates/skills/orc-mini/SKILL.md +226 -0
- package/templates/skills/orc-mini/examples/mini-run-mock.md +50 -0
- package/templates/skills/orc-pact/SKILL.md +218 -0
- package/templates/skills/orc-pact/references/gate.md +70 -0
- package/templates/skills/orc-pact/references/ledger.md +99 -0
- package/templates/skills/orc-pattern/SKILL.md +124 -0
- package/templates/skills/orc-pattern/references/INDEX.md +73 -0
- package/templates/skills/orc-pattern/references/be-django.md +80 -0
- package/templates/skills/orc-pattern/references/be-express.md +82 -0
- package/templates/skills/orc-pattern/references/be-fastapi.md +107 -0
- package/templates/skills/orc-pattern/references/be-go.md +96 -0
- package/templates/skills/orc-pattern/references/be-nestjs.md +86 -0
- package/templates/skills/orc-pattern/references/be-postgres.md +98 -0
- package/templates/skills/orc-pattern/references/fe-a11y.md +36 -0
- package/templates/skills/orc-pattern/references/fe-angular.md +87 -0
- package/templates/skills/orc-pattern/references/fe-nextjs.md +65 -0
- package/templates/skills/orc-pattern/references/fe-perf.md +39 -0
- package/templates/skills/orc-pattern/references/fe-react.md +83 -0
- package/templates/skills/orc-pattern/references/fe-vue.md +75 -0
- package/templates/skills/orc-pattern/schemas/pattern-doc.md +62 -0
- package/templates/skills/orc-poly/SKILL.md +216 -0
- package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -0
- package/templates/skills/orc-poly/references/gather.md +70 -0
- package/templates/skills/orc-poly/references/poly-spec.md +84 -0
- package/templates/skills/orc-pr-driver/README.md +349 -0
- package/templates/skills/orc-pr-driver/SKILL.md +167 -0
- package/templates/skills/orc-pr-driver/references/conflict-playbook.md +78 -0
- package/templates/skills/orc-pr-driver/references/green-gate.md +105 -0
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +99 -0
- package/templates/skills/orc-pr-setup/README.md +436 -0
- package/templates/skills/orc-pr-setup/SKILL.md +184 -0
- package/templates/skills/orc-pr-setup/references/certainty-gate.md +66 -0
- package/templates/skills/orc-pr-setup/references/layer-taxonomy.md +67 -0
- package/templates/skills/orc-quick/README.md +423 -0
- package/templates/skills/orc-quick/SKILL.md +306 -0
- package/templates/skills/orc-quick/references/context-doc.md +114 -0
- package/templates/skills/orc-quick/references/dispatch-gate.md +163 -0
- package/templates/skills/orc-quick/references/gh-mode.md +127 -0
- package/templates/skills/orc-retro/SKILL.md +222 -0
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -0
- package/templates/skills/orc-route/SKILL.md +165 -0
- package/templates/skills/orc-verify/SKILL.md +86 -0
- package/templates/skills/orc-verify/examples/verify-mock.md +33 -0
- package/templates/skills/orc-wiki/README.md +325 -0
- package/templates/skills/orc-wiki/SKILL.md +322 -0
- package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -0
- package/templates/skills/orc-wiki/references/claude-md-injection.md +61 -0
- package/templates/skills/orc-wiki/references/crosslink-compile.md +39 -0
- package/templates/skills/orc-wiki/references/crosslink-kinds.md +57 -0
- package/templates/skills/orc-wiki/references/crosslink.md +284 -0
- package/templates/skills/orc-wiki/references/extra.md +79 -0
- package/templates/skills/orc-wiki/references/integrity-check.md +86 -0
- package/templates/skills/orc-wiki/references/orientation.md +51 -0
- package/templates/skills/orc-wiki/references/partial-refresh.md +203 -0
- package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -0
- package/templates/skills/orc-wiki/references/staleness.md +288 -0
- package/templates/skills/orc-wiki/schemas/crosslink-tag.md +166 -0
- package/templates/skills/orc-wiki/schemas/wiki-doc.md +120 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orc-pr-setup
|
|
3
|
+
description: >
|
|
4
|
+
Stacked-PR PLANNER. Use for "/orc-pr-setup", "plan the stacked PRs", "split
|
|
5
|
+
this change into stacked pull requests", "where do the PR cut lines go".
|
|
6
|
+
Decides the LAYERING of a big change — ordered layers, each with a purpose, a
|
|
7
|
+
value class, an explicit file list, a measured LoC/file budget and a
|
|
8
|
+
dependency reason — and writes stacked-pr/<slug>/stack-plan.md. Runs
|
|
9
|
+
INDEPENDENTLY (no orchestrator needed) and is also the lane ORC's ship phase
|
|
10
|
+
hands off to when a change is too big for one PR. It NEVER touches git
|
|
11
|
+
history: no branches, no commits, no pushes — that is orc-pr-driver's job.
|
|
12
|
+
P0 HARD GATE: when a boundary is uncertain it STOPS and asks, one decision at
|
|
13
|
+
a time, and records the answer.
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# ORC-PR-SETUP (stacked-PR planner)
|
|
17
|
+
|
|
18
|
+
Big PRs are not reviewed, they are rubber-stamped. A 3k-LoC / 40-file diff is
|
|
19
|
+
unreviewable, so review is weak, merges are big-bang, and reverts are painful.
|
|
20
|
+
GitHub's **stacked pull requests** fix the mechanics — an ordered chain of PRs in
|
|
21
|
+
one repo, each targeting the branch below it, each reviewable on its own.
|
|
22
|
+
|
|
23
|
+
The mechanics are the easy half. **The hard part is deciding where the cut lines
|
|
24
|
+
go**, and that is this skill's entire job: decide the layering correctly, prove
|
|
25
|
+
each layer stands alone, and **refuse to guess**.
|
|
26
|
+
|
|
27
|
+
This lane **plans only**. It writes one markdown file and stops. Every branch,
|
|
28
|
+
commit, push and merge belongs to `/orc-pr-driver`.
|
|
29
|
+
|
|
30
|
+
**Tier.** Not effort-gated (the effort guard matches the exact skill name `orc`),
|
|
31
|
+
so it runs at whatever tier the chat is on. Layering judgment is better at Opus
|
|
32
|
+
high; it is correct at any tier.
|
|
33
|
+
|
|
34
|
+
**Human guide:** this skill's own `README.md` (what a stack is, the whole
|
|
35
|
+
workflow, the plan file field by field, FAQ) — point the USER there when they ask
|
|
36
|
+
how any of this works; never load it to drive the run.
|
|
37
|
+
|
|
38
|
+
**Load at their phase, never preloaded:**
|
|
39
|
+
`../_shared/gh-stack-commands.md` (preflight + command surface) ·
|
|
40
|
+
`../_shared/stack-plan.md` (plan location, schema, budget math, `STACK-FROM`) ·
|
|
41
|
+
`../_shared/pr-templates.md` (template resolution) ·
|
|
42
|
+
`references/layer-taxonomy.md` (where the cut lines go) ·
|
|
43
|
+
`references/certainty-gate.md` (the P0 gate + red flags).
|
|
44
|
+
|
|
45
|
+
## Hard rules
|
|
46
|
+
|
|
47
|
+
1. **Never touches git history.** No branch, no commit, no push, no PR. Reads
|
|
48
|
+
git (`diff --numstat`, `status`, `log`) only.
|
|
49
|
+
2. **P0 HARD GATE — uncertainty ASKS.** Every candidate boundary is classified
|
|
50
|
+
CERTAIN or UNCERTAIN (`references/certainty-gate.md`). Every UNCERTAIN stops
|
|
51
|
+
the lane and asks the user, **one decision at a time**, with the cost of each
|
|
52
|
+
option and a recommendation. Never a silent default, never "I assumed and
|
|
53
|
+
noted it".
|
|
54
|
+
3. **Every layer needs a purpose and a value class.** No purpose → it is not a
|
|
55
|
+
layer, it is part of another one.
|
|
56
|
+
4. **Budgets are measured, not estimated** (`../_shared/stack-plan.md`): real
|
|
57
|
+
`git diff --numstat` numbers, exclusions applied, ceilings from config.
|
|
58
|
+
5. **Every answer is recorded** under `## Decisions` in the plan — that is the
|
|
59
|
+
audit trail and what makes the plan re-runnable after compaction.
|
|
60
|
+
6. **A ticket is required.** Branch names and layer titles derive from it. No
|
|
61
|
+
ticket after asking once → stop and recommend one regular PR.
|
|
62
|
+
|
|
63
|
+
## Phase S0 — Preflight (probe, never assume)
|
|
64
|
+
|
|
65
|
+
Per `../_shared/gh-stack-commands.md`: `gh` present and ≥ 2.0 · authed ·
|
|
66
|
+
`github/gh-stack` installed (offer the install if not) · **same repo, not a
|
|
67
|
+
fork** (a fork is a hard STOP — cross-fork stacks are unsupported) · trunk name ·
|
|
68
|
+
branch protections / required checks (this is where "N layers = N CI runs"
|
|
69
|
+
becomes a real number) · merge queue present? Report the block in a few lines.
|
|
70
|
+
|
|
71
|
+
Any hard fail → say which check failed and recommend ONE regular PR. Do not
|
|
72
|
+
plan a stack that cannot be submitted.
|
|
73
|
+
|
|
74
|
+
## Phase S1 — Intake (ticket, entry mode, template)
|
|
75
|
+
|
|
76
|
+
1. **Ticket** — ask for it if it was not given. Required (hard rule 6).
|
|
77
|
+
2. **Entry mode** (`../_shared/stack-plan.md`) — exactly two:
|
|
78
|
+
- **`greenfield`** — nothing written yet; the input is a spec / TSD / ticket.
|
|
79
|
+
- **`orc-run`** — the change already exists in the worktree (ORC built it, or
|
|
80
|
+
the user did). The split is **file-granular only**; hunk surgery is
|
|
81
|
+
forbidden.
|
|
82
|
+
Detect it: a dirty worktree with real changes → `orc-run`; a clean tree →
|
|
83
|
+
`greenfield`. Say which mode you picked. An already-open fat PR is out of
|
|
84
|
+
scope — say so and recommend one regular PR.
|
|
85
|
+
3. **`STACK-FROM` handoff?** If the invocation points at a
|
|
86
|
+
`stacked-pr/<slug>/STACK-FROM.md`, read it and skip everything it carries
|
|
87
|
+
(ticket, slug, entry mode, template, surface, run dir). `BUILD-GREEN: false`
|
|
88
|
+
is a **hard stop** — never plan a stack over a red build.
|
|
89
|
+
4. **PR template** — resolve per `../_shared/pr-templates.md` (ORC template →
|
|
90
|
+
project → CLAUDE.md → recommend three options). The user declining every
|
|
91
|
+
option means the **stack is skipped** — say so and stop; the change ships as
|
|
92
|
+
one regular PR.
|
|
93
|
+
5. Derive `<slug>` (kebab-case, from the ticket or the change).
|
|
94
|
+
|
|
95
|
+
## Phase S2 — Inventory (the real numbers)
|
|
96
|
+
|
|
97
|
+
- `orc-run`: `git diff --numstat` (staged + unstaged) → every changed file with
|
|
98
|
+
its additions/deletions. Apply the exclusion list from
|
|
99
|
+
`../_shared/stack-plan.md`, keeping excluded files in a separate LISTED bucket.
|
|
100
|
+
- `greenfield`: enumerate the files the change WILL touch from the spec, and
|
|
101
|
+
estimate each one's size — marked as estimates, refined by the driver.
|
|
102
|
+
- Build the **dependency graph** between those files (imports/callers, schema →
|
|
103
|
+
reader, type → consumer). A `RUN-DIR` from a `STACK-FROM` handoff gives you
|
|
104
|
+
ORC's per-task `declared_files` and `depends_on` — use it; it is better
|
|
105
|
+
evidence than a fresh guess.
|
|
106
|
+
- Report: total LoC, total files, excluded count, and how many layers the
|
|
107
|
+
ceilings imply.
|
|
108
|
+
|
|
109
|
+
## Phase S3 — Tier-assign
|
|
110
|
+
|
|
111
|
+
Map every file to a taxonomy tier per `references/layer-taxonomy.md` (framework
|
|
112
|
+
tiers first — data/schema → store → domain → adapter → wiring → transport →
|
|
113
|
+
async → tests-at-scale → docs/flag; generic fallback for unlisted stacks). A
|
|
114
|
+
file that fits no tier is an UNCERTAIN, not a guess.
|
|
115
|
+
|
|
116
|
+
## Phase S4 — Cut (the P0 gate lives here)
|
|
117
|
+
|
|
118
|
+
Group tiers into layers under the config ceilings (`stacked_pr_loc`,
|
|
119
|
+
`stacked_pr_files`, `stacked_pr_max_layers`). **Ordering principle: dependency
|
|
120
|
+
direction = stack direction.** Layer N may depend only on layers < N; the bottom
|
|
121
|
+
is the widest blast radius and the least reversible (schema), the top is the
|
|
122
|
+
thinnest (docs, flag flip).
|
|
123
|
+
|
|
124
|
+
At **every seam**, run the certainty classifier (`references/certainty-gate.md`).
|
|
125
|
+
CERTAIN → proceed silently. UNCERTAIN → **STOP and ask**, one decision at a
|
|
126
|
+
time, showing both candidate boundaries, the LoC/file/CI cost of each, the
|
|
127
|
+
review-experience consequence, and a recommended option. Record the answer.
|
|
128
|
+
|
|
129
|
+
Component and handler are **different layers by default** — even when both are
|
|
130
|
+
small and were written in the same sitting. Same for handler vs async consumer,
|
|
131
|
+
and migration vs the code that reads the new column.
|
|
132
|
+
|
|
133
|
+
## Phase S5 — Validate the plan (all seven, explicitly)
|
|
134
|
+
|
|
135
|
+
| # | Check | Fail → |
|
|
136
|
+
|---|-------|--------|
|
|
137
|
+
| 1 | every layer ≤ `stacked_pr_loc` | split, or log an accepted exception |
|
|
138
|
+
| 2 | every layer ≤ `stacked_pr_files` (soft target = half) | same |
|
|
139
|
+
| 3 | every layer has a purpose + value class (FOUNDATION names its consumer) | merge it into its consumer |
|
|
140
|
+
| 4 | component/handler and migration/reader are separated | re-cut |
|
|
141
|
+
| 5 | dependency order is acyclic and bottom-up | ask which seam breaks the cycle |
|
|
142
|
+
| 6 | every layer can plausibly **build + test on its own base** | re-cut, or ask |
|
|
143
|
+
| 7 | layer count ≤ `stacked_pr_max_layers` (+2 with an override, beyond → STOP) | multiple stacks or a phased release |
|
|
144
|
+
|
|
145
|
+
Check 6 is REASONED here and **verified for real by the driver** — say so, never
|
|
146
|
+
claim it as proven.
|
|
147
|
+
|
|
148
|
+
## Phase S6 — Emit the plan, then stop
|
|
149
|
+
|
|
150
|
+
Write `stacked-pr/<slug>/stack-plan.md` exactly per the schema in
|
|
151
|
+
`../_shared/stack-plan.md`, including per-layer draft PR titles/bodies built from
|
|
152
|
+
the resolved template, `## Decisions` (every P0 answer) and `## Accepted
|
|
153
|
+
exceptions`. Then:
|
|
154
|
+
|
|
155
|
+
1. Show the layer table in chat (# · branch · purpose · value · files · LoC).
|
|
156
|
+
2. State plainly that **nothing has been created yet** — no branches, no PRs.
|
|
157
|
+
3. Offer the handoff: write `stacked-pr/<slug>/STACK-FROM.md`
|
|
158
|
+
(`STACK-FROM: orc-pr-setup`, per `../_shared/stack-plan.md`) and tell the user
|
|
159
|
+
to run **`/orc-pr-driver`** — human approval sits exactly here, before any git
|
|
160
|
+
surgery.
|
|
161
|
+
|
|
162
|
+
## Behavior trace (PERMANENT — every ORC entry point traces; always on)
|
|
163
|
+
|
|
164
|
+
Resolve `log_dir` (`../orc/config.md` default ← `.claude/orc.config.yaml`) at
|
|
165
|
+
start and follow `../orc/references/trace-protocol.md`: write
|
|
166
|
+
`log_dir/.current` = `run-prsetup-<slug>-<DDMMYY>-<HHMMSS>.txt` and
|
|
167
|
+
`touch the trace file` of that name in the SAME step, first. Narration is
|
|
168
|
+
dispatched, not remembered — collect the events with their REAL timestamps
|
|
169
|
+
(`PHASE S0..S6`, `GATE stack-certainty pass|bounce` per seam decision,
|
|
170
|
+
`QUESTION count=<n>`, `FINISH`) plus `decisions` (the WHY: every boundary the
|
|
171
|
+
user chose, verbatim), dispatch the trace writer ONCE at run end (the
|
|
172
|
+
single-dispatch-lane packet), then delete `.current`. A phase ending with
|
|
173
|
+
`zero new trace lines is a protocol violation`.
|
|
174
|
+
|
|
175
|
+
## Boundaries
|
|
176
|
+
|
|
177
|
+
- **Plans only.** Never a branch, commit, push, PR, or `gh stack` write command.
|
|
178
|
+
- **Never guesses a seam.** Uncertainty is a question, not an assumption.
|
|
179
|
+
- **Never fake-splits** an unsplittable atom, and never games the budget.
|
|
180
|
+
- Out of scope: splitting an already-open PR (`gh stack link` retrofit), and
|
|
181
|
+
cross-repo stacks (unsupported by GitHub — use `/orc-poly` for cross-repo
|
|
182
|
+
planning).
|
|
183
|
+
- Reminder: to see usage limits, tell the user to run `/usage` (never invoke it
|
|
184
|
+
programmatically).
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Reference — the P0 certainty gate (never quietly pick a boundary)
|
|
2
|
+
|
|
3
|
+
Loaded at Phase S4, at **every** seam. The rule the whole lane exists to enforce:
|
|
4
|
+
**when the layering is uncertain, ASK — blocking.** A wrong seam costs re-cutting
|
|
5
|
+
N branches and force-pushing N PRs; the question costs seconds.
|
|
6
|
+
|
|
7
|
+
## Step 1 — classify every candidate boundary
|
|
8
|
+
|
|
9
|
+
**CERTAIN (proceed, no question):**
|
|
10
|
+
|
|
11
|
+
- the files sit in different taxonomy tiers **by path** (`migrations/` vs
|
|
12
|
+
`handler/` vs `repository/`);
|
|
13
|
+
- file X is imported only by files in later layers (a one-way dependency you can
|
|
14
|
+
PROVE by grep, not assume);
|
|
15
|
+
- migration/DDL files (always their own bottom layer);
|
|
16
|
+
- a config/factory-registration-only change (always the wiring layer);
|
|
17
|
+
- the layer is already within both ceilings and single-concern.
|
|
18
|
+
|
|
19
|
+
**UNCERTAIN (STOP and ask):**
|
|
20
|
+
|
|
21
|
+
- two files in the **same tier** that could be one layer or two (two handlers,
|
|
22
|
+
two providers, two components);
|
|
23
|
+
- a shared util/helper consumed by two different layers — bottom layer, or
|
|
24
|
+
duplicate-then-dedupe?
|
|
25
|
+
- a refactor/rename mixed with a behavior change in the same file;
|
|
26
|
+
- a circular dependency between candidate layers (a human picks the seam);
|
|
27
|
+
- splitting would leave a layer that cannot build/test alone with no obvious fix;
|
|
28
|
+
- the smallest coherent unit exceeds a ceiling (an oversize atom);
|
|
29
|
+
- **ordering ambiguity** — two layers with no dependency between them, where the
|
|
30
|
+
order changes what reviewers see first;
|
|
31
|
+
- **feature-flag placement** — flag in the foundation layer or in the flip layer?
|
|
32
|
+
- (`orc-run` mode) a single FILE whose content belongs in two layers — the
|
|
33
|
+
default option offered is "the whole file lands in the LOWEST layer that needs
|
|
34
|
+
it", because hunk surgery is forbidden.
|
|
35
|
+
|
|
36
|
+
## Step 2 — ask, blocking, ONE decision at a time
|
|
37
|
+
|
|
38
|
+
Use the question tool. Each question states:
|
|
39
|
+
|
|
40
|
+
- the two candidate boundaries, concretely (which files land where);
|
|
41
|
+
- the **cost of each**: LoC and file count per resulting layer, plus the extra CI
|
|
42
|
+
run a split adds;
|
|
43
|
+
- the **review-experience consequence** ("reviewer of layer 3 sees a call to a
|
|
44
|
+
function that does not exist yet");
|
|
45
|
+
- a **recommended option** — first in the list, marked as recommended.
|
|
46
|
+
|
|
47
|
+
Never batch six vague questions. Never assume and note it later.
|
|
48
|
+
|
|
49
|
+
## Step 3 — record every answer
|
|
50
|
+
|
|
51
|
+
Append to `## Decisions` in the plan: the boundary, the options offered, the
|
|
52
|
+
choice, and the rationale in the user's own words. This is the audit trail, and
|
|
53
|
+
it is what lets the plan be re-run after compaction or handed to someone else.
|
|
54
|
+
|
|
55
|
+
## Red flags — these thoughts mean STOP, you are rationalizing
|
|
56
|
+
|
|
57
|
+
| Excuse | Reality |
|
|
58
|
+
|---|---|
|
|
59
|
+
| "It's obvious these two handlers go together" | Same tier ≠ same layer. That is the DEFINITION of UNCERTAIN. Ask. |
|
|
60
|
+
| "I'll pick one and note the assumption in the plan" | The gate is blocking, not a footnote. Ask before cutting. |
|
|
61
|
+
| "Asking is slow, the user wants speed" | A wrong seam means re-cutting N branches and force-pushing N PRs. The question costs seconds. |
|
|
62
|
+
| "It's under the LoC ceiling, so the layer is fine" | The budget is a ceiling, not a definition. Mixed concerns fail at any size. |
|
|
63
|
+
| "I'll put everything in layer 1 and split later" | Post-hoc splitting is hunk surgery plus N force-pushes. Cut before submitting. |
|
|
64
|
+
| "Layer 2 doesn't compile alone but the stack does" | Merging layer 1 alone then breaks the trunk. Re-cut the seam. |
|
|
65
|
+
| "12 layers = maximum reviewability" | 12 layers = 12 CI runs + 12 review contexts. Reviewability peaks, then collapses. |
|
|
66
|
+
| "The user said 'just split it', so no questions" | "Split it" is the goal, not permission to guess the seams. |
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Reference — layer taxonomy (where the cut lines go)
|
|
2
|
+
|
|
3
|
+
Loaded at Phase S3/S4. **Ordering principle: dependency direction = stack
|
|
4
|
+
direction.** Layer N may depend only on layers < N. The bottom layer has the
|
|
5
|
+
widest blast radius and is the least reversible (schema); the top is the
|
|
6
|
+
thinnest (docs, a flag flip).
|
|
7
|
+
|
|
8
|
+
## Generic tiers (the fallback — any stack)
|
|
9
|
+
|
|
10
|
+
`data/schema → store → domain logic → external adapter → wiring → transport →
|
|
11
|
+
async consumers → tests-at-scale → docs & flag flip`
|
|
12
|
+
|
|
13
|
+
Use the framework tiers below when they match; fall back to the generic four
|
|
14
|
+
(**data → logic → transport → wiring**) for anything unlisted.
|
|
15
|
+
|
|
16
|
+
## Backend service (Go / Java / Node / Python — layered service shape)
|
|
17
|
+
|
|
18
|
+
| # | Tier | What it contains | Typical value class |
|
|
19
|
+
|---|------|------------------|---------------------|
|
|
20
|
+
| 1 | **Migrations / schema** | DDL only. Deployable ahead of code, reversible | CONTRACT or FOUNDATION |
|
|
21
|
+
| 2 | **Models + repository / store** | structs/entities, queries, repo tests. Consumes 1 | FOUNDATION |
|
|
22
|
+
| 3 | **Domain / service logic** | business rules, unit-tested in isolation | FOUNDATION or CONTRACT |
|
|
23
|
+
| 4 | **Adapter / external client** | provider HTTP/gRPC client, signing, DTO mapping | FOUNDATION |
|
|
24
|
+
| 5 | **Wiring** | factory registration, config, DI, feature flag default-OFF | FOUNDATION |
|
|
25
|
+
| 6 | **Handler / route / API contract** | transport layer, request validation, response shape | CONTRACT |
|
|
26
|
+
| 7 | **Callbacks / async consumers** | webhook + queue handlers — separate from 6: different reviewer, different risk | CONTRACT or OPERATOR |
|
|
27
|
+
| 8 | **Tests-at-scale / e2e** | only when they would blow the budget of the layer they belong to | FOUNDATION |
|
|
28
|
+
| 9 | **Docs / dashboards / flag flip** | the flip that turns the feature on for users | USER or OPERATOR |
|
|
29
|
+
|
|
30
|
+
## Frontend
|
|
31
|
+
|
|
32
|
+
`types + API client → presentational component (+ stories/tests) → state/store →
|
|
33
|
+
page/route + wiring → flag flip`
|
|
34
|
+
|
|
35
|
+
## Separation rule (the one people break)
|
|
36
|
+
|
|
37
|
+
A **component** and its **handler** are different concerns → **different layers
|
|
38
|
+
by default**, even when both are small and were written in the same sitting.
|
|
39
|
+
Likewise:
|
|
40
|
+
|
|
41
|
+
- handler vs async consumer (webhook/queue),
|
|
42
|
+
- migration vs the code that reads the new column,
|
|
43
|
+
- provider adapter vs the domain logic that calls it,
|
|
44
|
+
- refactor/rename vs behavior change in the same file (this one is an UNCERTAIN —
|
|
45
|
+
see `certainty-gate.md`).
|
|
46
|
+
|
|
47
|
+
## Value classes (every layer carries exactly one)
|
|
48
|
+
|
|
49
|
+
- **`USER`** — an end user or merchant sees a behavior change.
|
|
50
|
+
- **`OPERATOR`** — ops/on-call gains a capability (dashboard, script, better
|
|
51
|
+
log/alert).
|
|
52
|
+
- **`CONTRACT`** — a consumer-visible API / schema / event contract lands,
|
|
53
|
+
unblocking another team or repo.
|
|
54
|
+
- **`FOUNDATION`** — no external value; it enables named upper layer(s). Allowed
|
|
55
|
+
(layer 1 of any stack is foundation by construction) but **capped**: it MUST
|
|
56
|
+
name its consumer layer, at most **2 consecutive** FOUNDATION layers, and a
|
|
57
|
+
FOUNDATION layer with no named consumer merges into its consumer.
|
|
58
|
+
|
|
59
|
+
No purpose → not a layer. No value class → not a layer.
|
|
60
|
+
|
|
61
|
+
## Layer ordering when there is no dependency
|
|
62
|
+
|
|
63
|
+
Two layers with no dependency between them can go in either order — which means
|
|
64
|
+
**the order is a review decision, not a technical one**, and that makes it an
|
|
65
|
+
UNCERTAIN (ask). Default recommendation when you ask: the layer that gives a
|
|
66
|
+
reviewer the most context first (usually schema/contract before the code that
|
|
67
|
+
consumes it).
|