@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,224 @@
|
|
|
1
|
+
# Reference — Effort, Dispatch Style, and Task Scoring
|
|
2
|
+
|
|
3
|
+
**Subagents ALWAYS do the work — the orchestrator never implements** (hard
|
|
4
|
+
rule 1). The orchestrator is Opus 4.8 high: it doing implementation is the most
|
|
5
|
+
costly way possible, and it burns the context that must survive the whole run.
|
|
6
|
+
Spawning keeps orchestrator context lean so runs last longer before any pause.
|
|
7
|
+
|
|
8
|
+
Two INDEPENDENT axes. Never conflate them:
|
|
9
|
+
- **Run-level effort** (low/medium/high) → picks the **dispatch style**
|
|
10
|
+
(sequential vs parallel), which controls only **intra-wave concurrency** —
|
|
11
|
+
never WHO does the work, and never WHETHER waves exist.
|
|
12
|
+
- **Per-task score** (0–100) → picks each **worker's model**. Always applies.
|
|
13
|
+
|
|
14
|
+
A medium run can contain a 30-score task and a 95-score task in the same wave.
|
|
15
|
+
|
|
16
|
+
## Waves always exist; dispatch style is intra-wave only
|
|
17
|
+
|
|
18
|
+
**Wave computation runs for every run with ≥2 tasks, sequential included**
|
|
19
|
+
(dependency layers + conflict graph + `max_wave_tasks` cap — see
|
|
20
|
+
`wave-grouping.md`). Dispatch style does NOT decide whether there are waves; it
|
|
21
|
+
decides how a wave's tasks fire:
|
|
22
|
+
|
|
23
|
+
- **sequential** → a wave's tasks dispatch one at a time, in order; the wave
|
|
24
|
+
closes when all its tasks close;
|
|
25
|
+
- **parallel** → a wave's non-conflicting tasks dispatch at once (up to
|
|
26
|
+
`max_wave_tasks`).
|
|
27
|
+
|
|
28
|
+
The **wave-boundary batch pause binds to wave numbers, identically in both
|
|
29
|
+
styles** — a sequential run is NOT "no waves / per-task pauses". Show the wave
|
|
30
|
+
plan (wave → tasks → pause marks) to the user BEFORE wave 1 in both styles.
|
|
31
|
+
|
|
32
|
+
## Run-level effort → dispatch style (recommend, user confirms)
|
|
33
|
+
|
|
34
|
+
- **Low**, or heavy shared data/code → **sequential**: one scored subagent at a
|
|
35
|
+
time, in dependency order (still grouped into waves). Even a single trivial
|
|
36
|
+
task = one cheap subagent (typically Sonnet 4.6 medium), never the
|
|
37
|
+
orchestrator itself.
|
|
38
|
+
- **Medium** → sequential by default; **parallel** intra-wave if 3+ genuinely
|
|
39
|
+
independent areas.
|
|
40
|
+
- **High** with independent areas → **parallel** waves; consider worktrees for
|
|
41
|
+
isolation (merge at end).
|
|
42
|
+
|
|
43
|
+
Always RECOMMEND with a one-line why, and let the user pick. Tell them the
|
|
44
|
+
agent/task/wave counts, each task's scored model, and where batch pauses fall
|
|
45
|
+
BEFORE dispatching.
|
|
46
|
+
|
|
47
|
+
## Per-task scoring — facet-scored, arithmetic, two-writer
|
|
48
|
+
|
|
49
|
+
The score is **not judged** from a task title. The **planner** — the one party
|
|
50
|
+
that globbed and read every declared file — emits per-task `facets` (facts). The
|
|
51
|
+
**orchestrator** — who never read the code — computes the number arithmetically
|
|
52
|
+
and audits the facts. No vibes anywhere. Every task is scored, including tiny ones.
|
|
53
|
+
|
|
54
|
+
**1. Planner-emitted facets** (`planning-output.md` `facets` block, filled during
|
|
55
|
+
grounding — zero extra passes):
|
|
56
|
+
|
|
57
|
+
| Facet | Values |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `breadth` | `len(declared_files)` — computed, not judged |
|
|
60
|
+
| `novelty` | mechanical · imitate · new-surface · novel-algorithm |
|
|
61
|
+
| `logic` | none · branching · stateful · algorithmic |
|
|
62
|
+
| `test_surface` | none · update-existing · new-tests |
|
|
63
|
+
| `risk` | `[]` or `[{class, cite}]` — class ∈ auth·money·migration·security·concurrency·data-integrity; **each entry MUST cite the file/requirement** |
|
|
64
|
+
| `uncertainty` | low · medium · high (+ one-line reason if not low) |
|
|
65
|
+
|
|
66
|
+
`fan_in`/`fan_out` are NOT emitted — the orchestrator computes them from
|
|
67
|
+
`depends_on` (forward = fan_in, reverse = fan_out).
|
|
68
|
+
|
|
69
|
+
**2. Orchestrator validation gate (Phase 2, deterministic — same bounce
|
|
70
|
+
mechanics as grounding):** emit `GATE facet pass|bounce`. Three checks:
|
|
71
|
+
|
|
72
|
+
- **Recompute** `breadth` (= `len(declared_files)`) and `fan_in`/`fan_out` from
|
|
73
|
+
the plan itself — a mismatch bounces.
|
|
74
|
+
- **MEMBERSHIP (v0.34.4):** `novelty`, `logic`, `test_surface` and `uncertainty`
|
|
75
|
+
must each be a member of their CLOSED set above, and every `risk[].class` must
|
|
76
|
+
be one of the six risk classes. A set lookup, as deterministic as the grounding
|
|
77
|
+
Glob. This is the check that was missing: the gate validated only the two
|
|
78
|
+
facets it could recompute and TRUSTED the four it could not, so a planner that
|
|
79
|
+
invented a `low|medium|high` scale produced an **arithmetically unscorable**
|
|
80
|
+
plan that passed the stated gate. There is no `N("low")` — and an orchestrator
|
|
81
|
+
applying `risk != [] -> floor 70` to prose risk strings floors EVERY task, a
|
|
82
|
+
two-band overshoot caused by a field's shape rather than by the work.
|
|
83
|
+
- **Cite check:** a `risk` entry with no `cite` bounces (unchanged).
|
|
84
|
+
|
|
85
|
+
A facet-vocabulary miss is a **FIELD-SHAPE bounce**: hand back the miss list and
|
|
86
|
+
say *do not re-plan* — the planner corrects only the offending `facets` blocks.
|
|
87
|
+
(It may also legitimately DROP a risk entry on the correction pass: implementation
|
|
88
|
+
hazards like test seeding or dependency discipline are not risk CLASSES. That
|
|
89
|
+
judgment is the planner's to make and is worth accepting.) Without this clause a
|
|
90
|
+
shape bounce risks costing a correct plan. A plan with no `facets` at all
|
|
91
|
+
(pre-v0.31.0) resumes on the legacy path — never bounced for the missing block.
|
|
92
|
+
|
|
93
|
+
**3. The fixed formula (the ONLY scoring text — this replaces base+adjusters):**
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
score = B(breadth) + N(novelty) + L(logic) + T(test_surface)
|
|
97
|
+
+ 5*min(fan_in,3) + 3*min(fan_out,3) + U(uncertainty)
|
|
98
|
+
|
|
99
|
+
B: 1f=2 2-3f=6 4-5f=10 6+f=15
|
|
100
|
+
N: mechanical=0 imitate=8 new-surface=18 novel-algorithm=30
|
|
101
|
+
L: none=0 branching=8 stateful=16 algorithmic=24
|
|
102
|
+
T: none=0 update-existing=4 new-tests=8
|
|
103
|
+
U: low=0 medium=6 high=12
|
|
104
|
+
|
|
105
|
+
risk ≠ [] → floor 70 (DERIVED from a cited risk facet, never remembered).
|
|
106
|
+
clamp 0..100 → the RESOLVED table (below).
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Which table (highest wins):** `opus5_only: true` (the 3-band Opus-5-only
|
|
110
|
+
preset: `[0,40)` low · `[40,80)` medium · `[80,100]` high) → `rubric_bands_override`
|
|
111
|
+
(hand-written rows) → the default 8-band table. All three are in `config.md`.
|
|
112
|
+
The formula, the facets and the risk floor are IDENTICAL in every case — only
|
|
113
|
+
the score→agent mapping changes. Three consequences worth stating so nobody
|
|
114
|
+
re-derives them per run:
|
|
115
|
+
|
|
116
|
+
- **The risk floor still applies** — it raises the SCORE, then the resolved table
|
|
117
|
+
maps it. Under the Opus-5-only preset a floored task lands `opus-5-med`, not
|
|
118
|
+
`opus-4-7-high`.
|
|
119
|
+
- **`opus5_only` FORCES** — while on, a hand-written `rubric_bands_override` is
|
|
120
|
+
ignored, and so is the entire Fable 5 block. It is the one selector that can
|
|
121
|
+
shadow another; that is deliberate.
|
|
122
|
+
- **`fable5_roles` never covers executors** (analyze/plan/advisor/judge/review
|
|
123
|
+
only), so those two features are orthogonal and cannot disagree on a band.
|
|
124
|
+
|
|
125
|
+
Show the user the full table (task, the facet vector, the arithmetic
|
|
126
|
+
`B+N+L+T+fan+U = raw`, any risk floor, final, override+reason if any, dispatched
|
|
127
|
+
model) BEFORE dispatching — an un-shown number is not a scored number. **Head it
|
|
128
|
+
with the RESOLVED table's name** (`8-band default` / `Opus-5-only ladder
|
|
129
|
+
(opus5_only)` / `custom (rubric_bands_override)`): the same logic
|
|
130
|
+
applies to the mapping as to the number.
|
|
131
|
+
|
|
132
|
+
**Extra (v0.50.0, `extra_enabled`) adds a `via` column and can make the head a
|
|
133
|
+
PAIR.** An Extra route row is an OVERLAY that outranks the tables above **only
|
|
134
|
+
for the scores it covers**, so a run can genuinely be running two tables at once
|
|
135
|
+
and the head names both (`8-band default + extra rows [0,30) [30,70)`). The
|
|
136
|
+
column reads `claude` or `extra:<profile> (<engine>)` and comes from
|
|
137
|
+
`orc extra resolve --json` — the formula, the facets and the risk floor are
|
|
138
|
+
untouched, and **the score is computed before the routing, never after it**. Two
|
|
139
|
+
consequences the table has to show rather than imply: a cited `risk[]` HOLDS THE
|
|
140
|
+
TASK BACK to its Claude band whatever the row says (`extra_risk_tasks: off`), and
|
|
141
|
+
the `model` for a foreign task is the FOREIGN model id, not a Claude tier.
|
|
142
|
+
Canonical: `../../_shared/extra-dispatch.md`.
|
|
143
|
+
|
|
144
|
+
**4. Consistency check:** two tasks whose facet vectors differ in **≤1 facet must
|
|
145
|
+
land in the same band** — or the SCORE line for the outlier **cites the one
|
|
146
|
+
differing facet**. This is the specific fix for sibling tasks in the same domain
|
|
147
|
+
drifting into three different bands.
|
|
148
|
+
|
|
149
|
+
**5. Override protocol** (unchanged): you may override the computed score. Record
|
|
150
|
+
`{computed_score, override_score, reason}` in the dispatch log. An override
|
|
151
|
+
without a reason is invalid.
|
|
152
|
+
|
|
153
|
+
## EVERY dispatch is scored — the fix-cycle rule
|
|
154
|
+
|
|
155
|
+
Fix-cycle dispatches — review-fix, verify-fix, the Phase-7 P2-batch, and any
|
|
156
|
+
requeue — are scored through the **same formula**, with two floors that stop a
|
|
157
|
+
fix in a risk area from silently dropping to a cheap model:
|
|
158
|
+
|
|
159
|
+
- **Inherit the ORIGINAL task's `risk` facets** when the fix touches its files —
|
|
160
|
+
a fix in a risk-floor area keeps the ≥70 floor (a userID/context-key fix can
|
|
161
|
+
never dispatch below `opus-4-7-high` again);
|
|
162
|
+
- a **P0/P1 fix never dispatches below the band of the task that produced the
|
|
163
|
+
finding.**
|
|
164
|
+
|
|
165
|
+
Emit a `SCORE task=fix-<n> …` line for each (they appear in the dispatch log and
|
|
166
|
+
the completion table like any task).
|
|
167
|
+
|
|
168
|
+
## Worked scoring examples (facet vectors — compare facet-by-facet, not by vibes)
|
|
169
|
+
|
|
170
|
+
Each row is the facet vector run through the formula. The number is arithmetic;
|
|
171
|
+
the band is what matters. Compare a new task to these facet-by-facet.
|
|
172
|
+
|
|
173
|
+
| Task | breadth·novelty·logic·test · fan_in/out · unc | Arithmetic | Band |
|
|
174
|
+
|---|---|---|---|
|
|
175
|
+
| Rename a config key across 4 files + its test | 5·mechanical·none·update-existing · 0/0 · low | 10+0+0+4 = **14** | haiku [0,30) |
|
|
176
|
+
| New CRUD endpoint following a sibling route | 3·imitate·branching·new-tests · 1/0 · low | 6+8+8+8+5 = **35** | sonnet-4-6-med [30,40) |
|
|
177
|
+
| Bug fix across 2 files with a repro test | 3·imitate·branching·new-tests · 0/0 · medium | 6+8+8+8+6 = **36** | sonnet-4-6-med [30,40) |
|
|
178
|
+
| Isolated component from the design system | 3·new-surface·branching·new-tests · 0/0 · low | 6+18+8+8 = **40** | sonnet-4-6-high [40,55) |
|
|
179
|
+
| Notification model + enum other tasks consume | 3·new-surface·stateful·new-tests · 0/3 · low | 6+18+16+8+9 = **57** | sonnet-5-high [55,65) |
|
|
180
|
+
| Service-layer refactor behind a stable interface | 5·imitate·stateful·update-existing · 0/3 · medium | 10+8+16+4+9+6 = **53** | sonnet-4-6-high [40,55) |
|
|
181
|
+
| Add role check to payment-refund endpoint | 3·imitate·branching·new-tests · 0/0 · low · **risk=[auth,money]** | 30 raw → **floor 70** | opus-4-7-high [70,80) |
|
|
182
|
+
| Migrate orders table to split-name + backfill | 6·new-surface·stateful·new-tests · 1/3 · high · **risk=[migration,data-integrity]** | 15+18+16+8+5+9+12 = 83 (floor 70) → **83** | opus-4-8-high [80,90) |
|
|
183
|
+
|
|
184
|
+
Two disciplines the vectors encode: (1) a small diff is NOT a low score when a
|
|
185
|
+
cited `risk` facet forces the floor (the refund row — 30 raw, floored to 70); (2)
|
|
186
|
+
a big-looking task IS low when its facets are mechanical (the rename). The risk
|
|
187
|
+
floor is always DERIVED from a cited facet — the SCORE line names it, never
|
|
188
|
+
applies it silently.
|
|
189
|
+
|
|
190
|
+
## Model ladder → the single score→model table
|
|
191
|
+
|
|
192
|
+
The score→model mapping is NOT hardcoded here — it lives in `config.md` as ONE
|
|
193
|
+
canonical 8-band table (there is no longer a narrow/wide preset). Read config at
|
|
194
|
+
run start and map each task's final score through that table (or
|
|
195
|
+
`rubric_bands_override`). The orchestrator dispatches the executor agent BY NAME;
|
|
196
|
+
it does not request a raw model. `rubric_bands` sets only how many bands the
|
|
197
|
+
rubric REPORTS (score granularity), never which table is used.
|
|
198
|
+
|
|
199
|
+
The 8 bands (see config.md for the exact edges): `haiku-4-5` [0,30) ·
|
|
200
|
+
`sonnet-4-6-med` [30,40) · `sonnet-4-6-high` [40,55) · `sonnet-5-high` [55,65) ·
|
|
201
|
+
`opus-4-7-med` [65,70) · `opus-4-7-high` [70,80) · `opus-4-8-high` [80,90) ·
|
|
202
|
+
`opus-5-high` [90,100]. Effort tiers rank `low < medium < high < xhigh < max`.
|
|
203
|
+
|
|
204
|
+
## Fixed model assignments (not scored)
|
|
205
|
+
|
|
206
|
+
- **Orchestrator (you):** Opus 4.8 high — or Opus 5 / Fable 5 at medium+, the
|
|
207
|
+
two models that clear the guard from medium up. Never downgrade yourself.
|
|
208
|
+
- **Review** — Superpowers path: Sonnet 4.6, medium. OpenSpec/self path:
|
|
209
|
+
Opus 5, medium (`orc-reviewer-opus-5-med`).
|
|
210
|
+
- **Verify:** Opus 5, medium (`orc-verifier-opus-5-med`).
|
|
211
|
+
- **Analyst:** Opus 5, high. **Planner:** Opus 5, medium. **Test author:**
|
|
212
|
+
Opus 5, medium. **Combiner:** Opus 5, high. **Ultra advisor/judge:** Opus 5,
|
|
213
|
+
xhigh — every core fixed role is pinned to Opus 5 as of v0.34.0.
|
|
214
|
+
- **Merge-conflict resolver:** Opus 4.8, medium.
|
|
215
|
+
|
|
216
|
+
Note: every band in the table above is a real dispatch target (haiku through
|
|
217
|
+
opus-5). If a model tier is unavailable in the environment, fall back UP to the
|
|
218
|
+
next capable tier (never silently substitute a different family/effort).
|
|
219
|
+
|
|
220
|
+
## Dispatch log (lives in the checkpoint)
|
|
221
|
+
|
|
222
|
+
Every spawn records: `{task_id, computed_score, override_score|null,
|
|
223
|
+
override_reason|null, model, effort, spawned_at}`. Feeds the usage report at
|
|
224
|
+
every stop.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# ORC House Rules (standing behavioral card)
|
|
2
|
+
|
|
3
|
+
Injected LITERALLY into every executor slice as `house_rules` — never a file
|
|
4
|
+
pointer. Keep the card ≤ 10 lines: it rides in EVERY dispatch, so every
|
|
5
|
+
redundant line is paid on every spawn. Do NOT add rules the slice contract
|
|
6
|
+
already enforces (constraints, pattern-matching, stay-in-slice, invariant
|
|
7
|
+
re-check) — duplication dilutes.
|
|
8
|
+
|
|
9
|
+
## The card (inject exactly the lines between the markers)
|
|
10
|
+
|
|
11
|
+
<!-- card-start -->
|
|
12
|
+
HOUSE RULES (standing, apply to every change):
|
|
13
|
+
1. Surgical changes only — touch nothing orthogonal to your task, even "easy wins".
|
|
14
|
+
2. Simplicity first — no speculative abstraction, no config for needs that don't exist yet.
|
|
15
|
+
3. No unrequested scope — build exactly what the task asks, nothing extra.
|
|
16
|
+
4. Prefer the boring solution — the obvious approach over the clever one, every time.
|
|
17
|
+
5. Never claim what you haven't observed — name a file/symbol/behavior only after reading it this session; mark inferences as inferences.
|
|
18
|
+
6. An honest partial beats a false done — report what's unmet, never round up.
|
|
19
|
+
7. Never revert, discard or rewrite files you did not write — `git checkout/restore/reset/stash/clean` are forbidden in your slice; an impossible assertion is `unmet`, never something to make true.
|
|
20
|
+
<!-- card-end -->
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Reference — Phase 0 Intake
|
|
2
|
+
|
|
3
|
+
Goal: extract just enough that the intent-spec can't be misread, then get out of
|
|
4
|
+
the way. A wrong understanding parallelized is worse than a wrong understanding
|
|
5
|
+
done serially. Never interrogate; never ask what the repo can tell you.
|
|
6
|
+
|
|
7
|
+
**Before anything — plan-input trigger (see `plan-handoff.md`):** if the run
|
|
8
|
+
input IS a plan (pasted planning-output, a `plan-{name}.md` path, or an
|
|
9
|
+
`orc/planner/{name}/` checkpoint), do NOT run intake — switch to the plan-handoff
|
|
10
|
+
entry contract (`references/plan-handoff.md`): bootstrap the trace, schema-
|
|
11
|
+
validate, apply the `plan_head` staleness valve, re-run the full Phase 1 exit
|
|
12
|
+
gate in this session, relay `open_questions[]`, then continue at Phase 2. A plain
|
|
13
|
+
prose request is not a plan — run intake normally.
|
|
14
|
+
|
|
15
|
+
**Before intake questions — analyst auto-trigger (see SKILL.md Phase 0):** if the
|
|
16
|
+
input includes a document OR the requirement is ambiguous/underspecified, dispatch
|
|
17
|
+
the System Analyst FIRST (doc-optional; standard/deep gate; scouts in deep mode).
|
|
18
|
+
It resolves scope + accuracy with evidence-or-mark and recommended-option
|
|
19
|
+
questions before any intent-spec is drafted. When it hands back "take into build",
|
|
20
|
+
its confirmed spec feeds Phase 1 planning.
|
|
21
|
+
|
|
22
|
+
## Step 0 — Create the run folder FIRST
|
|
23
|
+
|
|
24
|
+
Before anything else, derive a `{run-slug}` from the user's request (short,
|
|
25
|
+
lowercased, hyphenated intent name, e.g. "merchant-notifications") and create
|
|
26
|
+
`.claude/orc/run/{run-slug}/` (config `run_dir`). ALL run artifacts
|
|
27
|
+
(intent-spec, checkpoint, state-of-play, decision log) live here — never in the
|
|
28
|
+
project root, never loose in run/. If a folder with that slug exists, append a
|
|
29
|
+
short timestamp.
|
|
30
|
+
|
|
31
|
+
## Step 1 — Rough-size (picks the question tier)
|
|
32
|
+
|
|
33
|
+
Fast read: how many distinct feature areas does the request imply? Use the
|
|
34
|
+
request text + a quick repo glance. If genuinely unclear, ask ONE sizing
|
|
35
|
+
question ("roughly how big — a small change, a feature, or multiple features?").
|
|
36
|
+
This is a rough size for tier selection only; the REAL effort estimate happens
|
|
37
|
+
in Phase 2 with the intent-spec in hand.
|
|
38
|
+
|
|
39
|
+
## Step 2 — Tiered questions (ask in ONE batched round)
|
|
40
|
+
|
|
41
|
+
**Always (even small tasks):**
|
|
42
|
+
1. In one or two sentences, what should exist when this is done that doesn't now?
|
|
43
|
+
2. What's explicitly *out* of scope?
|
|
44
|
+
|
|
45
|
+
**Add for medium+:**
|
|
46
|
+
3. How will we know it's done — what should work/pass?
|
|
47
|
+
(→ becomes Phase 6 verify's acceptance criteria)
|
|
48
|
+
4. Anything the code must respect or avoid — patterns to follow, libraries not
|
|
49
|
+
to add, files not to touch? (→ hard rules in every worker slice)
|
|
50
|
+
|
|
51
|
+
**Add for high / multi-feature:**
|
|
52
|
+
5. What existing parts of the system does this touch that it must not break?
|
|
53
|
+
(→ feeds the conflict graph / integration surface)
|
|
54
|
+
6. Anything you're unsure about or expect to change mid-build?
|
|
55
|
+
(→ pre-empts mid-run escalations)
|
|
56
|
+
|
|
57
|
+
Infer stack, test framework, file layout, existing patterns from the repo.
|
|
58
|
+
Only intent, scope, and priorities are askable.
|
|
59
|
+
|
|
60
|
+
## Step 3 — Draft the intent-spec
|
|
61
|
+
|
|
62
|
+
Write `run/{run-slug}/intent-spec.md` per `schemas/intent-spec.md`. Restate the
|
|
63
|
+
user's intent in YOUR words — restating is what surfaces misreadings.
|
|
64
|
+
|
|
65
|
+
## Step 3.5 — Repo cross-check of the draft (evidence-or-mark, proportional)
|
|
66
|
+
|
|
67
|
+
Before showing the spec, cross-check its claims against the repo — the direct
|
|
68
|
+
path (no analyst) is the only lane where a spec can reach planning ungrounded.
|
|
69
|
+
Same vocabulary as the analyst: confirm or tag `UNVERIFIED`, never silently
|
|
70
|
+
assume.
|
|
71
|
+
|
|
72
|
+
- **What to check:** every file, module, command, or existing behavior the
|
|
73
|
+
draft NAMES — in Definition of done, Constraints, and Integration surface.
|
|
74
|
+
A quick Glob/Grep per item; you are confirming the noun exists as described,
|
|
75
|
+
not analyzing it.
|
|
76
|
+
- **Proportional to the tier:** 2-question tier → check named files/modules
|
|
77
|
+
only. 4/6-question tiers → full pass over the three sections above.
|
|
78
|
+
- **Anything unconfirmable gets an `UNVERIFIED` tag in the spec** and the tags
|
|
79
|
+
become ONE batched question in the sign-off round ("These I could not confirm
|
|
80
|
+
in the repo: … — confirm, correct, or drop?"). Never more than one round.
|
|
81
|
+
- **Escalation valve:** more than 3 tags means the request is under-grounded
|
|
82
|
+
for a direct intake — stretching intake into a second analyst is the one thing
|
|
83
|
+
not to do. Two exits, and they answer DIFFERENT questions. Offer them in this
|
|
84
|
+
order; the user chooses:
|
|
85
|
+
1. **`/orc-grill`** — when the **intent** is unclear ("I want notifications",
|
|
86
|
+
"something is wrong with refunds"). A conversation: minutes, no scan, no
|
|
87
|
+
scout tokens. It comes back with a scoped idea, and its exit 2 feeds
|
|
88
|
+
`orc-analyze` directly.
|
|
89
|
+
2. **`/orc-analyze`** (requirement mode) — when the intent is clear but its
|
|
90
|
+
**grounding in the code** is not. A scan: tokens, evidence, `file:line`.
|
|
91
|
+
|
|
92
|
+
Naming them in that order matters: a scan cannot fix a vague intent, it can
|
|
93
|
+
only re-ask it at scan prices.
|
|
94
|
+
(The standalone planner has the same valve: a request below its plannable
|
|
95
|
+
floor routes to the analyst instead of being planned thin — no side door.)
|
|
96
|
+
|
|
97
|
+
## Question rounds that run long — borrow the interview format
|
|
98
|
+
|
|
99
|
+
The tiers above are a fixed questionnaire, which is right for a request that
|
|
100
|
+
arrives well-formed. When a tier's round runs long or the answers keep opening
|
|
101
|
+
new questions, switch that round to the frontier format in
|
|
102
|
+
`../../_shared/interview.md`: ask every question whose prerequisites are settled
|
|
103
|
+
in ONE round (never two questions where one depends on the other), each in the
|
|
104
|
+
shape `❓ **Q1** — **<title>**: <body>` with the recommendation alone on a `➡️`
|
|
105
|
+
line. Two rules from that contract still bind here — resolve FACTS yourself
|
|
106
|
+
before asking (wiki → pattern → gotchas), and never adopt a DECISION by default.
|
|
107
|
+
Same primitive, a different front door; do not fork a second version of it.
|
|
108
|
+
|
|
109
|
+
## Step 4 — Sign-off
|
|
110
|
+
|
|
111
|
+
Ask: hard gate (nothing proceeds until explicit approval) or soft (proceed
|
|
112
|
+
unless objection)? **Default when unspecified: GATE.**
|
|
113
|
+
Show the spec. Gate mode: wait for approval or edits. Soft: proceed after
|
|
114
|
+
showing unless the user objects.
|
|
115
|
+
|
|
116
|
+
## Fresh-session reconfirm
|
|
117
|
+
|
|
118
|
+
When resuming a run in a fresh session, show a ONE-LINE reconfirm of the
|
|
119
|
+
intent-spec's scope ("Resuming: <one-line scope>. Still correct?") before
|
|
120
|
+
continuing. Catches requirements that changed between sessions, costs one line.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Reference — Decision Log Protocol
|
|
2
|
+
|
|
3
|
+
How workers pass knowledge across waves without peer-to-peer IPC. Load during
|
|
4
|
+
Phase 3.
|
|
5
|
+
|
|
6
|
+
## What it is
|
|
7
|
+
|
|
8
|
+
- File: `run/{title}-{subtitle}-{DDMMYY}.md`. Append-only.
|
|
9
|
+
- Workers read a COMPACTED DIGEST at start (via their slice's `log_digest`
|
|
10
|
+
field) and return `log_entries[]` at end; the ORCHESTRATOR appends them.
|
|
11
|
+
- Holds: cross-cutting decisions, discovered constraints, interface changes,
|
|
12
|
+
broadcast escalation answers.
|
|
13
|
+
- Deleted on successful completion. (Checkpoint survives; the log does not.)
|
|
14
|
+
- Log = agent knowledge. Checkpoint = orchestration state. Never mix them.
|
|
15
|
+
|
|
16
|
+
## Write discipline (no corruption)
|
|
17
|
+
|
|
18
|
+
1. Every entry prefixed with **agent-id + millisecond timestamp**:
|
|
19
|
+
`[Agent-C | 020726 14:28:41.507] <entry>`
|
|
20
|
+
Agent-id makes same-millisecond writes still distinct.
|
|
21
|
+
2. Append-only; no edits to existing lines. One logical entry = one atomic append.
|
|
22
|
+
3. Accept a bloated raw log — it's the audit trail. Clarity beats size.
|
|
23
|
+
|
|
24
|
+
## Compaction (what workers actually read)
|
|
25
|
+
|
|
26
|
+
1. Before each wave, YOU produce a compacted digest: dedup, sort by timestamp,
|
|
27
|
+
drop superseded decisions, group by area, keep only what's relevant to the
|
|
28
|
+
upcoming tasks' areas.
|
|
29
|
+
2. **Compact a COPY** (digest passed inline in slices, or
|
|
30
|
+
`run/{...}-digest.md` regenerated per wave). NEVER mutate the raw log.
|
|
31
|
+
|
|
32
|
+
## Entry tags (so the compactor can group and workers can scan)
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
[Agent-A | 020726 14:25:10.001] DECISION: notification.type enum = {in_app, email, system}.
|
|
36
|
+
[USER via Agent-C | 020726 14:28:41.507] ANSWER: digest send = 07:00 fixed.
|
|
37
|
+
[Agent-D | 020726 14:31:02.118] CONSTRAINT: pref model includes digest_frequency.
|
|
38
|
+
[Agent-B | 020726 14:33:40.020] INTERFACE: NotificationAPI.list(paginated) — consumers use cursor param.
|
|
39
|
+
```
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Reference — Code-Pattern Gate (orchestrator side)
|
|
2
|
+
|
|
3
|
+
How the full lane resolves, injects, and enforces per-language code-patterns so
|
|
4
|
+
executors MATCH the existing codebase instead of writing generic-template code.
|
|
5
|
+
The engine (playbooks, codifier slice, reconcile rules) is the sibling skill
|
|
6
|
+
`../../orc-pattern/SKILL.md`; this file is the orchestrator's gate + wiring.
|
|
7
|
+
Load at Phase 2 (tagging) and Phase 3 (resolve gate + slice injection).
|
|
8
|
+
|
|
9
|
+
Principle: **conventions defer to the project; security/correctness invariants
|
|
10
|
+
are always enforced.**
|
|
11
|
+
|
|
12
|
+
## Phase 2 — Tag each task while scoring
|
|
13
|
+
|
|
14
|
+
From its `declared_files` extensions + repo deps (see
|
|
15
|
+
`../../orc-pattern/references/INDEX.md`):
|
|
16
|
+
`{domain: FE|BE|null, lang: react|nextjs|vue|fastapi|nestjs|go|…|null}`.
|
|
17
|
+
Tasks with no FE/BE language need no pattern.
|
|
18
|
+
|
|
19
|
+
**Postgres secondary tag:** on a Postgres project (`pg`/`psycopg`/`asyncpg`/
|
|
20
|
+
`pgx`/`lib/pq`/`Npgsql`/Prisma `postgresql`/`postgrex` in deps), add
|
|
21
|
+
`db: postgres` to any task whose `declared_files` touch the data-access layer
|
|
22
|
+
(repositories/dao/models/queries, `*.sql`, ORM entities/migrations). `db`
|
|
23
|
+
co-applies WITH the framework `lang`, never instead of it — it pulls the
|
|
24
|
+
cross-cutting `postgres` playbook into the same resolve gate.
|
|
25
|
+
|
|
26
|
+
## Phase 3 — Resolve gate (once, before the first wave)
|
|
27
|
+
|
|
28
|
+
For each distinct tagged language (including `postgres` when any task is
|
|
29
|
+
`db`-tagged), resolve against the cache `.claude/orc/patterns/<lang>-pattern.md`
|
|
30
|
+
— test existence with the deterministic probe `orc pattern status <lang>`
|
|
31
|
+
(exit 0 = cached; see `../../_shared/detecting-artifacts.md`), never an ad-hoc
|
|
32
|
+
`find`, so a codified pattern is never missed:
|
|
33
|
+
|
|
34
|
+
Every resolved language prints exactly ONE user-visible line (no cost, no ask —
|
|
35
|
+
visibility only, so the user always knows which house style is in force):
|
|
36
|
+
|
|
37
|
+
- **Cache hit, no drift** → no ask, no cost, but print
|
|
38
|
+
`pattern: <lang>-pattern.md applied (cached)`.
|
|
39
|
+
- **Cache miss** → apply config `pattern_findings` (default `ask`):
|
|
40
|
+
- `ask` → ONE P0 prompt batched across ALL missing languages ("Learn
|
|
41
|
+
conventions for {…} via orc-pattern, or proceed language-agnostic?");
|
|
42
|
+
- `on` → codify without asking; print `pattern: <lang> — codifying (cache miss)`;
|
|
43
|
+
- `off` → agnostic; print `pattern: <lang> — running language-agnostic (no cached pattern)`.
|
|
44
|
+
- **On learn/`on`** → dispatch `orc-pattern-codifier-sonnet-5-high` per missing
|
|
45
|
+
language (`orc-pattern-codifier-opus-5-med` when `opus5_only` — see
|
|
46
|
+
`../../_shared/opus5-only.md`; slice per `../../orc-pattern/SKILL.md`
|
|
47
|
+
Phase 1); YOU write the returned pattern to the cache.
|
|
48
|
+
- **Agnostic fallback** (declined / `off` / no playbook for the language): no
|
|
49
|
+
codifier, no scan — the executor enforces the universal invariants and
|
|
50
|
+
imitates the neighbor files it already reads. ~Zero added cost.
|
|
51
|
+
|
|
52
|
+
Hold the resolved pattern per language in run state (survives
|
|
53
|
+
checkpoint/resume) — it is injected at dispatch and reused at Phase 5/6.
|
|
54
|
+
|
|
55
|
+
## Slice injection (anti-skip layer 1)
|
|
56
|
+
|
|
57
|
+
Inject the resolved conventions + blocking invariants + the enforceable
|
|
58
|
+
`validation_gate[]` lines LITERALLY into each FE/BE task's slice as `pattern` —
|
|
59
|
+
never a file pointer. Agnostic tasks get the universal invariants only.
|
|
60
|
+
|
|
61
|
+
**Gotchas ride BESIDE the pattern block, never inside it** (config `gotchas`;
|
|
62
|
+
canonical `../../_shared/gotchas.md`). Same slice, same literal injection, one
|
|
63
|
+
hard difference: the pattern applies to a LANGUAGE, so it goes to every task
|
|
64
|
+
tagged with that language — a gotcha applies to a `scope` GLOB, so it goes only to
|
|
65
|
+
tasks whose `declared_files` match it, capped at 3, highest `hits` first. Zero
|
|
66
|
+
matches = no gotcha block at all. Never inject unfiltered: a pattern is what this
|
|
67
|
+
project always does, a gotcha is what it got wrong ONCE, somewhere specific.
|
|
68
|
+
|
|
69
|
+
For a `db:postgres`-tagged task, ALSO merge the resolved `postgres` pattern's
|
|
70
|
+
Conventions + Invariants + gate lines into the SAME `pattern` block (appended
|
|
71
|
+
to the framework pattern, or standalone if the task has no framework lang) —
|
|
72
|
+
query invariants (bound params only, pooled connections, transactional
|
|
73
|
+
multi-writes) ride the same anti-skip path. Record the postgres
|
|
74
|
+
`pattern_version` in run state/log too.
|
|
75
|
+
|
|
76
|
+
## Return validation (anti-skip layer 2)
|
|
77
|
+
|
|
78
|
+
A task that was given a `pattern` must return `invariants_checked: true` + a
|
|
79
|
+
`pattern_version` matching what you injected — the single attestation covers a
|
|
80
|
+
merged block. Missing/false attestation = malformed return (requeue). Record
|
|
81
|
+
the applied `pattern_version` in the trace.
|
|
82
|
+
|
|
83
|
+
## Review/verify re-check (anti-skip layer 3)
|
|
84
|
+
|
|
85
|
+
- **Phase 5 (review):** pass the resolved pattern as `code_pattern` AND its
|
|
86
|
+
blocking `invariants[]` + `validation_gate[]` lines for the re-check — don't
|
|
87
|
+
re-ask the user. An invariant violation or unmet gate line is P0.
|
|
88
|
+
- **Phase 6 (verify):** pass the `validation_gate[]` lines in the slice — each
|
|
89
|
+
line is an acceptance criterion; an unmet line is P0.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Reference — Plan Handoff (executing a plan from another session)
|
|
2
|
+
|
|
3
|
+
The entry contract for the case ORC had no defined path for: **the run input
|
|
4
|
+
IS a plan**, not a request. A plan was produced in one session (or saved to a
|
|
5
|
+
file) and handed to a fresh session to build. Load `references/plan-handoff.md`
|
|
6
|
+
at Phase 0 the moment you recognise a plan input; it turns a pasted plan into a
|
|
7
|
+
real ORC run instead of an ad-hoc task-by-task improvisation.
|
|
8
|
+
|
|
9
|
+
## Trigger — the input IS a plan
|
|
10
|
+
|
|
11
|
+
Recognise a plan input when the run starts from any of:
|
|
12
|
+
|
|
13
|
+
- **pasted planning-output** — a YAML/markdown block matching
|
|
14
|
+
`schemas/planning-output.md` (has a `tasks:` list with `declared_files`,
|
|
15
|
+
`depends_on`, `grounding[]`);
|
|
16
|
+
- **a `plan-{name}.md` path** the user points at;
|
|
17
|
+
- **an `orc/planner/{name}/` checkpoint** (the planner's "Save & stop" artifact).
|
|
18
|
+
|
|
19
|
+
A plain-language feature request is NOT a plan input — that is ordinary Phase 0
|
|
20
|
+
intake. When in doubt (a prose paragraph with no task structure), treat it as a
|
|
21
|
+
request and run intake normally.
|
|
22
|
+
|
|
23
|
+
## Why this exists (the failure it prevents)
|
|
24
|
+
|
|
25
|
+
A plan built in session A and executed in session B used to improvise: no spine
|
|
26
|
+
load, no trace protocol (the hook bootstrapped a generic `run-*.txt`), no Phase
|
|
27
|
+
1 exit gate re-run, no Phase 2 scoring or pause schedule, no Phase 3 wave
|
|
28
|
+
grouping. The result was a bare SPAWN/RETURN trace, per-task ad-hoc pauses, and
|
|
29
|
+
**phantom-file drift** — the plan declared a file that never (or no longer)
|
|
30
|
+
existed, invisible because the plan's grounding Glob ran at *planning* time in
|
|
31
|
+
the other session and nothing re-ran it here.
|
|
32
|
+
|
|
33
|
+
## Mandatory sequence (never execute a plan task-by-task ad hoc)
|
|
34
|
+
|
|
35
|
+
Do these IN ORDER before any dispatch. Skipping any step is a protocol
|
|
36
|
+
violation.
|
|
37
|
+
|
|
38
|
+
1. **This IS a run — bootstrap it.** Load the spine (`orc/SKILL.md`) and
|
|
39
|
+
`references/trace-protocol.md`; create `log_dir`, write `log_dir/.current` =
|
|
40
|
+
`run-orc-<slug>-<DDMMYY>-<HHMMSS>.txt` AND `touch the trace file` of that name
|
|
41
|
+
in the SAME step (both, or neither — a pointer naming a file that does not
|
|
42
|
+
exist is what splits a run across two files), store `trace_path` in the
|
|
43
|
+
checkpoint. Record `PHASE intake start` into this phase's packet.
|
|
44
|
+
2. **Schema-validate against `schemas/planning-output.md`.** Every task needs
|
|
45
|
+
`declared_files`, `grounding[]`, `depends_on`, `requirements[]`,
|
|
46
|
+
`acceptance[]`, `owns_area`, `spec_ref`, and the `facets` block (Part D). A
|
|
47
|
+
malformed plan → show exactly what field is missing and offer a re-plan via
|
|
48
|
+
`orc-planner` (dispatch it with the miss list). **Never improvise a missing
|
|
49
|
+
field** — a guessed `declared_files` or an invented `facets` vector defeats
|
|
50
|
+
the point of consuming a plan.
|
|
51
|
+
3. **Staleness valve (`plan_head`).** The plan carries `plan_head` — HEAD at
|
|
52
|
+
plan time (the mirror of a requirement-spec's `git_head`). If `plan_head` ≠
|
|
53
|
+
current HEAD, OR the field is absent (a pre-v0.31.0 plan), the grounding
|
|
54
|
+
spot-check in step 4 is **compulsory** and its misses are surfaced, not
|
|
55
|
+
waved through. Matching heads still run the gate — they only lower the
|
|
56
|
+
suspicion.
|
|
57
|
+
4. **Re-run the FULL Phase 1 exit gate in THIS session** (deterministic — the
|
|
58
|
+
checks live in `analyst-gates.md`; emit `GATE` lines): Glob every
|
|
59
|
+
`disposition: exists` path, recompute coverage (no `orphan` requirements),
|
|
60
|
+
cycle detection over `depends_on`, same-file collision over `declared_files`.
|
|
61
|
+
This is the deterministic catch for phantom-file drift — a declared path that
|
|
62
|
+
no longer (or never) existed bounces **before** any dispatch. On a miss,
|
|
63
|
+
offer a targeted re-ground (one `orc-planner` re-dispatch with the miss list)
|
|
64
|
+
or a user correction; never dispatch past an unresolved miss.
|
|
65
|
+
5. **Relay unresolved `open_questions[]`** (Part E) in ONE batch before
|
|
66
|
+
proceeding: blocking questions must be answered; non-blocking show their
|
|
67
|
+
`proposed_default` for tacit approval. A `plan_confidence: low` plan →
|
|
68
|
+
recommend stepping back to `orc-analyze` (the user may override).
|
|
69
|
+
6. **Then the NORMAL pipeline.** Emit `PHASE planning end`, then run Phase 2
|
|
70
|
+
(facet scoring + dispatch-style recommendation + the batch-pause schedule
|
|
71
|
+
question) → Phase 3 (wave grouping — waves are computed regardless of
|
|
72
|
+
dispatch style, see `wave-grouping.md`) → review → verify → ship. **A plan
|
|
73
|
+
input never skips Phase 2/3.** The plan supplied the tasks; the orchestrator
|
|
74
|
+
still owns scoring, waves, and pauses.
|
|
75
|
+
|
|
76
|
+
## Not this
|
|
77
|
+
|
|
78
|
+
- **Not** a re-plan. If the plan validates and grounds clean, DO NOT re-run the
|
|
79
|
+
planner — the plan is authoritative; you are scoring and scheduling it.
|
|
80
|
+
- **Not** a scope re-litigation. Scope was settled where the plan (or its
|
|
81
|
+
upstream spec) was produced. The gate checks structural integrity, not intent.
|
|
82
|
+
- **Not** a poly-spec path. A poly-spec (`orc-poly:spec`) is split-and-STOP at
|
|
83
|
+
Phase 1 (see SKILL.md) — that is a different input than a per-repo
|
|
84
|
+
planning-output handed here to build.
|