@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,213 @@
|
|
|
1
|
+
# Example — a TSD, fail → fix → pass
|
|
2
|
+
|
|
3
|
+
> The annotated maintainer's walkthrough. Every gate that fires is called out.
|
|
4
|
+
> For the reader-facing version see `mock-run/orc-challenge.md`.
|
|
5
|
+
|
|
6
|
+
## Session 1 — C1 intake, and the refusal that proves rule 0
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
> /orc-challenge docs/tsd-payments.md
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Before I can judge this, I need to know what "good" means for it.
|
|
14
|
+
Six questions, one round:
|
|
15
|
+
|
|
16
|
+
1 What must this document achieve?
|
|
17
|
+
2 Who reads it, and what do they already know?
|
|
18
|
+
3 What would you accept as finished?
|
|
19
|
+
4 Do you have a template it should follow?
|
|
20
|
+
5 Anything deliberately OUT of scope?
|
|
21
|
+
6 When you fix it, where will the fixed version go?
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The user answers: *"just tell me if it's good"*.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
That is not enough for me to judge it, and guessing would be worse than useless:
|
|
28
|
+
every finding I raised would be defensible, and you would spend three iterations
|
|
29
|
+
fixing things that did not matter.
|
|
30
|
+
|
|
31
|
+
Concretely — which of these is closest?
|
|
32
|
+
|
|
33
|
+
a a backend team must implement it without asking me anything
|
|
34
|
+
b it has to survive Tuesday's architecture review board
|
|
35
|
+
c our offshore team, several non-native English readers, must read it cold
|
|
36
|
+
d I just want to know if I forgot anything obvious
|
|
37
|
+
e your own words
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**The gate:** ORC did not proceed, and it did not pick `d` as a safe default.
|
|
41
|
+
`orc challenge init` would have refused anyway — `--goal` has no default value.
|
|
42
|
+
|
|
43
|
+
User picks (a), audience "backend engineers, 2 of 5 non-native English readers",
|
|
44
|
+
done means "no open interface question and no TBD in §3–§7", pastes the team's
|
|
45
|
+
TSD template, out of scope "the mobile client", revision `docs/tsd-payments-v{n}.md`.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
orc challenge init tsd-payments \
|
|
49
|
+
--artifact docs/tsd-payments.md --kind tsd \
|
|
50
|
+
--goal "a backend team implements this without asking me anything" \
|
|
51
|
+
--audience "backend engineers, 2 of 5 non-native English readers" \
|
|
52
|
+
--done-means "no open interface question and no TBD in §3–§7" \
|
|
53
|
+
--out-of-scope "the mobile client" \
|
|
54
|
+
--template docs/templates/tsd.md \
|
|
55
|
+
--dimensions D1,D2,D3,D4,D5,D6 \
|
|
56
|
+
--revision new-file --revision-pattern "docs/tsd-payments-v{n}.md"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`goals.md` and `template.md` are now FROZEN at v1.
|
|
60
|
+
|
|
61
|
+
## C2 — lint (free)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
orc challenge lint docs/tsd-payments.md \
|
|
65
|
+
--template orc/orc-challenge/tsd-payments/template.md --json \
|
|
66
|
+
> orc/orc-challenge/tsd-payments/iteration-01/lint.json
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
13 findings · 5 sentences · p50 8w / p90 43w · passive 40% · grade 8.1
|
|
71
|
+
template: 4/5 required sections present, missing 1
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Zero model tokens. The judge will never re-count any of this.
|
|
75
|
+
|
|
76
|
+
## C3 — the cold read
|
|
77
|
+
|
|
78
|
+
DISPATCH `orc-challenge-reader-opus-5-low`. Its slice is the artifact path, the
|
|
79
|
+
questionnaire protocol, and the audience line. **Not the goal** — telling the
|
|
80
|
+
reader what the document is trying to achieve hands it the answers.
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
questions_asked: 12
|
|
84
|
+
answered_from_artifact: 8
|
|
85
|
+
answered_by_guessing: 3
|
|
86
|
+
unanswerable: 1
|
|
87
|
+
comprehension_score: "8/12"
|
|
88
|
+
terms_undefined_on_first_use: ["idempotency window", "SoR", "cutover"]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## C4 — the judge, with the SEALED slice
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
goals: orc/orc-challenge/tsd-payments/goals.md (frozen, v1)
|
|
95
|
+
artifact: docs/tsd-payments.md
|
|
96
|
+
template: orc/orc-challenge/tsd-payments/template.md (frozen, v1)
|
|
97
|
+
dimensions: <skill>/references/dimensions.md (selected: D1 D2 D3 D4 D5 D6)
|
|
98
|
+
lint: orc/orc-challenge/tsd-payments/iteration-01/lint.json
|
|
99
|
+
reader: orc/orc-challenge/tsd-payments/iteration-01/reader-report.md
|
|
100
|
+
carry_ids: (none — first iteration)
|
|
101
|
+
rebuttal_ids: (none)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Paths and ids. Nothing else. No conversation, no diff, no "the user says".
|
|
105
|
+
|
|
106
|
+
## C5 — record, and one finding gets DROPPED
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
iteration 1: FAIL — 4 blocking findings, coverage 100%
|
|
110
|
+
1 finding dropped for having no `serves` (out of scope of the stated goal).
|
|
111
|
+
CHALLENGE iter=1 findings=P0:1/P1:3/P2:1 coverage=100% verdict=FAIL
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
The dropped one was *"no mention of the mobile client"* — which the user
|
|
115
|
+
explicitly declared out of scope. **Rule 0, made structural:** the judge did not
|
|
116
|
+
have to be trusted to remember, and the CLI did not have to guess.
|
|
117
|
+
|
|
118
|
+
## C6 → C8 — advise, then STOP
|
|
119
|
+
|
|
120
|
+
The advisor groups 5 findings into 2 causes and orders them. ORC writes
|
|
121
|
+
`fix-brief-01.md`, `RESUME.md`, re-derives `CHALLENGE.md`, dispatches the
|
|
122
|
+
iteration's trace packet, prints the paste block, and **ends the turn**. It does
|
|
123
|
+
not ask whether you would like it to fix anything.
|
|
124
|
+
|
|
125
|
+
## Session 2 — the fix session
|
|
126
|
+
|
|
127
|
+
A DIFFERENT session. It reads the brief, reads `goals.md`, edits
|
|
128
|
+
`docs/tsd-payments-v2.md`, and stops. It runs no ORC command except one:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
orc challenge rebut tsd-payments F-004 "the phrasal verbs are quoted from JIRA-4412"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**This session never runs `/orc-challenge`.** That is the beat that teaches the
|
|
135
|
+
contract.
|
|
136
|
+
|
|
137
|
+
## Session 3 — the re-judge
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
> /orc-challenge tsd-payments
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
expected revision: docs/tsd-payments-v2.md FOUND (6fd76797 → f475e8e4, +24 −0)
|
|
145
|
+
carried findings: 5 · 5 touched · 0 untouched
|
|
146
|
+
|
|
147
|
+
touched/untouched is a hint for you. The judge re-reads the artifact either way.
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
The judge answers the rebuttal (`withdrawn` — "agreed, it is a quotation") and
|
|
151
|
+
gives every carried finding an outcome.
|
|
152
|
+
|
|
153
|
+
**What happens if it forgets one:**
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
❌ malformed verdict — coverage is 20% — every finding carried in must get
|
|
157
|
+
exactly ONE outcome. Missing: F-002, F-003, F-004, F-005
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**What happens if it ignores the rebuttal:**
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
❌ malformed verdict — these rebuttals were not addressed: F-004
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**What happens if a selected dimension says nothing:**
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
❌ malformed verdict — dimension D5 is selected but reported nothing.
|
|
170
|
+
NOT-CHECKED with a reason is allowed; silence is not.
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Three different gates, three different rules, all in the CLI where a model cannot
|
|
174
|
+
route around them.
|
|
175
|
+
|
|
176
|
+
Clean run:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
iteration 2: FAIL — 1 blocking finding, coverage 100%
|
|
180
|
+
CHALLENGE iter=2 findings=P0:0/P1:1/P2:0 coverage=100% verdict=FAIL
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
9 → 4 → 1. The last one is `F-003`: Scope still says `TBD`, and the user knows
|
|
184
|
+
why — the endpoint list lives in the sibling API spec.
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
orc challenge accept tsd-payments F-003 "the endpoints land in the sibling API spec, not here"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
✓ F-003 accepted as a known gap. It stops blocking, and it stays visible in
|
|
192
|
+
every report with your reason.
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
The state recomputes immediately — an accept is a decision, and it takes effect
|
|
196
|
+
the moment it is recorded, not one paid iteration later.
|
|
197
|
+
|
|
198
|
+
## PASS
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
PASSED passed at iteration 2; nothing has changed since
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**No advisor is dispatched.** `orc challenge report` writes `CHALLENGE.md` and
|
|
205
|
+
`final-report-<DDMMYY>-<HHMMSS>.md`, `RESUME.md` is deleted, the `FINISH` packet
|
|
206
|
+
goes out, `.current` is deleted.
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
Not staged. Commit them if your team should see the review trail:
|
|
210
|
+
git add orc/orc-challenge/tsd-payments/
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
It prints the command. It does not run it.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Conservation — nothing evaporates
|
|
2
|
+
|
|
3
|
+
Borrowed from `context-combiner`, applied to findings instead of requirements.
|
|
4
|
+
|
|
5
|
+
> Every finding from iteration N−1 appears in iteration N with exactly ONE
|
|
6
|
+
> outcome and a reason.
|
|
7
|
+
|
|
8
|
+
**A silently dropped finding is indistinguishable from a fixed one.** That is the
|
|
9
|
+
classic way a review cycle appears to "converge": nobody removed anything, the
|
|
10
|
+
list just got shorter.
|
|
11
|
+
|
|
12
|
+
## The outcome set — closed
|
|
13
|
+
|
|
14
|
+
| Outcome | Meaning | Set by |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| `resolved` | the judge re-read the anchor and the problem is gone | judge |
|
|
17
|
+
| `still-open` | unchanged, or changed and still wrong | judge |
|
|
18
|
+
| `superseded` | the artifact moved; this finding is replaced by a new one (**the replacing id is required**) | judge |
|
|
19
|
+
| `withdrawn` | the judge now agrees it was not a finding (**reason required**) — the only outcome a rebuttal can force | judge |
|
|
20
|
+
| `accepted` | the user accepted it as a known gap | **the CLI, never the judge** |
|
|
21
|
+
|
|
22
|
+
## The gate
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
coverage_pct = (findings carried in that got an outcome) / (findings carried in) × 100
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Below 100, the verdict is malformed.** `orc challenge record` rejects it with
|
|
29
|
+
exit 2 and NAMES THE MISSING IDS:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
❌ malformed verdict — coverage is 20% — every finding carried in must get
|
|
33
|
+
exactly ONE outcome. Missing: F-002, F-003, F-004, F-005
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Fix the return and re-record. Never argue with the gate, and never re-record a
|
|
37
|
+
trimmed finding list to make the number go up.
|
|
38
|
+
|
|
39
|
+
## The open set
|
|
40
|
+
|
|
41
|
+
Everything downstream — PASS, the convergence chart, the fix brief, the panel —
|
|
42
|
+
reads one definition, so there is exactly one idea of "still open":
|
|
43
|
+
|
|
44
|
+
> the last iteration's findings whose outcome is `null` (newly raised) or
|
|
45
|
+
> `still-open`, minus everything the user has accepted.
|
|
46
|
+
|
|
47
|
+
## What conservation is NOT
|
|
48
|
+
|
|
49
|
+
- It is not a requirement that the judge keep agreeing with itself. `withdrawn`
|
|
50
|
+
exists, and a judge that withdraws a finding with a clear reason is doing its
|
|
51
|
+
job.
|
|
52
|
+
- It is not a requirement that findings only ever decrease. A revision can
|
|
53
|
+
legitimately introduce new problems, and the convergence chart showing 9 → 4 →
|
|
54
|
+
6 is information, not a failure of the process.
|
|
55
|
+
- It is not a licence to renumber. **An id is permanent.** `F-003` means the same
|
|
56
|
+
thing in iteration 7 as it did in iteration 1, or the history is worthless.
|
|
57
|
+
|
|
58
|
+
## Conservation of INPUT — the council (v0.49.1)
|
|
59
|
+
|
|
60
|
+
Everything above conserves findings ACROSS iterations. The council needs the same
|
|
61
|
+
rule pointed the other way, at the input to one iteration:
|
|
62
|
+
|
|
63
|
+
> **Every id the council raised must appear in the judge's return with exactly
|
|
64
|
+
> ONE disposition and a reason. `council_coverage_pct` must be 100.**
|
|
65
|
+
|
|
66
|
+
The obvious failure of adding five reviewers is that the judge quietly ignores
|
|
67
|
+
four of them and the run looks identical while costing five times more. So
|
|
68
|
+
`orc challenge record` **reads `iteration-NN/council/*.json` itself** and derives
|
|
69
|
+
the id set. The judge cannot shrink it by omission, because the set was never the
|
|
70
|
+
judge's to report.
|
|
71
|
+
|
|
72
|
+
### The disposition set — closed
|
|
73
|
+
|
|
74
|
+
| Disposition | Meaning | Requires |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| `adopted` | the judge agrees; the finding enters `findings[]` under its own id | `severity`, `dimension`, `serves` |
|
|
77
|
+
| `merged` | the same defect as another finding | `merged_into` (a resolvable id) |
|
|
78
|
+
| `rejected` | the judge read the anchor and disagrees | `reason` |
|
|
79
|
+
| `out-of-goal` | real, but traceable to no goal element | `reason` — **reported**, never silently dropped |
|
|
80
|
+
|
|
81
|
+
**An id is permanent, across prefixes.** `C-004` adopted by the judge stays
|
|
82
|
+
`C-004` in the verdict, in the report, and in iteration 9. That is what lets a
|
|
83
|
+
user find out whether a lens is earning its dispatch — and it is why a lens may
|
|
84
|
+
only RAISE. **A lens raises; only the judge resolves.**
|
|
85
|
+
|
|
86
|
+
### Across a changed roster
|
|
87
|
+
|
|
88
|
+
Rule 11 already says a carried finding is re-judged from the artifact on disk,
|
|
89
|
+
never from an account of what changed — so the judge never needed the original
|
|
90
|
+
raiser. **The judge resolves every carried finding, whatever prefix it carries**,
|
|
91
|
+
which makes the roster freely variable between iterations at zero cost to
|
|
92
|
+
conservation.
|
|
93
|
+
|
|
94
|
+
### The classes that are conserved but never gated
|
|
95
|
+
|
|
96
|
+
An `opportunity` and a `premise` never enter `findings[]` and never touch the
|
|
97
|
+
pass gate — but neither may evaporate. An opportunity lands `taken` or `dropped`
|
|
98
|
+
with a reason (`orc challenge opportunity`); a premise lands `adopted` (a
|
|
99
|
+
`regoal`) or `dismissed` with a reason (`orc challenge premise`). **Neither is
|
|
100
|
+
ever automatic**, and a dismissed premise stays visible in the report forever.
|
|
101
|
+
|
|
102
|
+
## Rebuttals interact with conservation
|
|
103
|
+
|
|
104
|
+
An open rebuttal is a second obligation on top of the outcome: the next verdict
|
|
105
|
+
must ALSO return `{ id, result: withdrawn|upheld, reason }`. An ignored rebuttal
|
|
106
|
+
makes the iteration malformed even when coverage is 100%, because a user who
|
|
107
|
+
cannot be answered has no move except giving up.
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# The council
|
|
2
|
+
|
|
3
|
+
> **A lens raises; only the judge resolves. ORC proposes the council; the user
|
|
4
|
+
> picks it.**
|
|
5
|
+
|
|
6
|
+
**a lane that picks its own council has broken this contract.**
|
|
7
|
+
|
|
8
|
+
That is the fourth member of a family, and the split is the same every time —
|
|
9
|
+
the facts are ORC's to look up, the decision is the user's to take:
|
|
10
|
+
|
|
11
|
+
| Lane | Broken by |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `../../_shared/interview.md` | `a lane that answers its own interview question` |
|
|
14
|
+
| `/orc-brainstorm` | `a lane that picks its own favourite` |
|
|
15
|
+
| `/orc-challenge` | `a lane that fixes what it judged` |
|
|
16
|
+
| `/orc-doc` | `a lane that reads its own document` |
|
|
17
|
+
| **`/orc-challenge` council** | **`a lane that picks its own council`** |
|
|
18
|
+
|
|
19
|
+
A council chosen by ORC is ORC deciding **which kinds of criticism the user is
|
|
20
|
+
allowed to hear** — a bigger decision than any single finding in the run.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## The roster — seven lenses
|
|
25
|
+
|
|
26
|
+
One always runs. Six are selectable. **The user selects them.**
|
|
27
|
+
|
|
28
|
+
| Lens | Display | Agent | Effort | Class | Ids | Blocks? |
|
|
29
|
+
|---|---|---|---|---|---|---|
|
|
30
|
+
| `judge` | The Judge | `orc-challenge-judge-opus-5-high` | high | finding | `F-` | yes |
|
|
31
|
+
| `reader` | The Cold Reader | `orc-challenge-reader-opus-5-low` | low | finding | `R-` | yes |
|
|
32
|
+
| `contrarian` | The Contrarian | `orc-challenge-contrarian-opus-5-high` | high | finding | `C-` | yes |
|
|
33
|
+
| `outsider` | The Outsider | `orc-challenge-outsider-opus-5-low` | low | finding | `O-` | yes |
|
|
34
|
+
| `executor` | The Executor | `orc-challenge-executor-opus-5-med` | medium | finding | `E-` | yes |
|
|
35
|
+
| `principles` | The First Principles Thinker | `orc-challenge-principles-opus-5-high` | high | **premise** | `Q-` | **never** |
|
|
36
|
+
| `expansionist` | The Expansionist | `orc-challenge-expansionist-opus-5-med` | medium | **opportunity** | `X-` | **never** |
|
|
37
|
+
|
|
38
|
+
`orc-challenge-advisor-opus-5-med` is **not a lens.** It never inspects the
|
|
39
|
+
artifact for defects; it turns a FAIL into a fix strategy, and rule 5 still
|
|
40
|
+
holds: **no advisor on PASS.**
|
|
41
|
+
|
|
42
|
+
**Never hand-list these anywhere else.** `orc challenge roles --json` is the
|
|
43
|
+
catalogue; the P0 ask in `intake.md` renders it, and `orc ui` draws the roster
|
|
44
|
+
card from it. One list, three renderers — the Flow-stepper rule.
|
|
45
|
+
|
|
46
|
+
### What each one is for, and how each one fails
|
|
47
|
+
|
|
48
|
+
| Role | It asks | It fails when |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| The Contrarian | "where is the fatal flaw?" | it assumes the artifact is fine and stops looking |
|
|
51
|
+
| The First Principles Thinker | "are we even solving the right problem?" | it accepts the framing it was handed |
|
|
52
|
+
| The Expansionist | "what is being undervalued here?" | it only counts what is wrong |
|
|
53
|
+
| The Outsider | "what does this assume I already know?" | it is an expert and cannot un-know things |
|
|
54
|
+
| The Executor | "what do you actually do on Monday morning?" | it grades the theory and never the first step |
|
|
55
|
+
|
|
56
|
+
### Why each effort — and the rule that protects it
|
|
57
|
+
|
|
58
|
+
**Effort here is a measurement choice, not a cost choice.** The same sentence
|
|
59
|
+
governs the cold reader and the `/orc-doc` checker, and it now governs two more:
|
|
60
|
+
|
|
61
|
+
- **`outsider` is `low` for the same reason `reader` is.** A harder-thinking
|
|
62
|
+
outsider reasons its way *around* an unexplained acronym and reports that the
|
|
63
|
+
document is fine. The whole instrument is "do not reconstruct — report what is
|
|
64
|
+
actually on the page." **Nothing may ever upgrade it.**
|
|
65
|
+
- **`contrarian` is `high` because a shallow contrarian finds only the obvious.**
|
|
66
|
+
At low effort it returns the same three surface complaints the free lint
|
|
67
|
+
already caught.
|
|
68
|
+
- **`principles` is `high`** — rebuilding a problem statement from the ground up
|
|
69
|
+
is the deepest reasoning any role in this lane does.
|
|
70
|
+
- **`expansionist` and `executor` are `medium`** — pattern work against a
|
|
71
|
+
concrete artifact, the same class as the advisor.
|
|
72
|
+
|
|
73
|
+
All seven are `claude-opus-5`, so **`opus5_only` is a no-op for this lane: it is
|
|
74
|
+
unaffected, not exempt.** The agent count rises by exactly five, with no paired
|
|
75
|
+
variants (the v0.47.0 precedent).
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## The reader / outsider seam — read this before touching either
|
|
80
|
+
|
|
81
|
+
These two are the closest pair in ORC, and the one place this design can produce
|
|
82
|
+
a duplicate instrument. The distinction is **structural, not stylistic**:
|
|
83
|
+
|
|
84
|
+
| | `reader` | `outsider` |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| Told the audience | **yes** | **no** |
|
|
87
|
+
| Told the goal / kind / template | no | no |
|
|
88
|
+
| What it generates | 8–15 questions **the artifact promised to answer**, from its own headings | nothing — it reacts to what is in front of it |
|
|
89
|
+
| What it returns | a **scored** questionnaire (`8/12`) + `R-###` | an **unscored** ranked list of assumed knowledge + `O-###` |
|
|
90
|
+
| The measurement | *can this be answered from the page?* | *what does this page assume you already know?* |
|
|
91
|
+
| Feeds | D4 | D5, and D4 where an assumption is load-bearing |
|
|
92
|
+
|
|
93
|
+
They are dispatched **with no knowledge of each other**, and their reports are
|
|
94
|
+
never merged before the judge reads them. **Where they agree, that is the
|
|
95
|
+
strongest comprehension evidence this lane can produce** — recorded as
|
|
96
|
+
`corroborated_by: [reader, outsider]`, and **never an automatic severity bump**
|
|
97
|
+
(the `/orc-aftermath` rule: churn is a signal, not a verdict).
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Three output classes — the honest split
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
class: finding → judge, reader, contrarian, outsider, executor
|
|
105
|
+
class: opportunity → expansionist
|
|
106
|
+
class: premise → principles
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Two of the six cannot produce a finding **without lying**, and forcing them to
|
|
110
|
+
would be the single worst decision available here.
|
|
111
|
+
|
|
112
|
+
### Why the expansionist cannot produce a finding
|
|
113
|
+
|
|
114
|
+
A finding must carry `serves` — the goal element it advances — and `record`
|
|
115
|
+
DROPS a finding without one (rule 0, structural). The expansionist's brief is
|
|
116
|
+
*"what upside is everyone missing?"*, which by construction is **not** in the
|
|
117
|
+
stated goal. Given a `serves` field it would either invent a goal element or be
|
|
118
|
+
silently dropped by the CLI.
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
opportunity:
|
|
122
|
+
id: X-002
|
|
123
|
+
what: "the retry table generalises to every idempotent write in the service"
|
|
124
|
+
upside: "…"
|
|
125
|
+
first_step: "…" # concrete; an upside with no first step is a daydream
|
|
126
|
+
anchor: "docs/tsd-payments.md:212"
|
|
127
|
+
confidence: medium
|
|
128
|
+
route: brainstorm # brainstorm | pact | grill | none
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**An opportunity never blocks, never has a severity, and never enters
|
|
132
|
+
`findings[]`.** It is conserved — `orc challenge opportunity <slug> <id>
|
|
133
|
+
--take|--drop --reason "…"`, both requiring a reason — and it is ROUTED: an
|
|
134
|
+
adopted one belongs in `/orc-brainstorm`, and one the user wants to commit to
|
|
135
|
+
belongs in `/orc-pact`. **This lane never builds it.**
|
|
136
|
+
|
|
137
|
+
### Why the first-principles thinker cannot produce a finding
|
|
138
|
+
|
|
139
|
+
Its most valuable output is *"you are asking the wrong question entirely"* — and
|
|
140
|
+
in this lane the question is the **frozen goal**. A finding is measured against
|
|
141
|
+
the goal; a premise challenge disputes the **yardstick**. Those cannot be the
|
|
142
|
+
same object.
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
premise:
|
|
146
|
+
id: Q-001
|
|
147
|
+
disputes: goal # goal | audience | done_means | out_of_scope
|
|
148
|
+
quote: "<the exact line from goals.md it disputes>"
|
|
149
|
+
reframe: "…" # the problem restated from the ground up
|
|
150
|
+
what_changes: "…" # what this review would attack instead
|
|
151
|
+
cheapest_test: "…" # how to settle it without a rewrite
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**A premise challenge is resolved by a HUMAN and by nobody else.** Exactly two
|
|
155
|
+
resolutions exist:
|
|
156
|
+
|
|
157
|
+
1. **Adopt** → `orc challenge goals <slug> --set <path> --reason "…"` — a
|
|
158
|
+
`regoal` event; `goals.version` increments, prior iterations keep their stamp,
|
|
159
|
+
and the iteration rail draws the version break. That mechanism has existed
|
|
160
|
+
since v0.47.0; the council is the first thing that can legitimately move it.
|
|
161
|
+
2. **Dismiss** → `orc challenge premise <slug> <id> --dismiss --reason "…"`. The
|
|
162
|
+
reason is mandatory and stays visible in the report forever.
|
|
163
|
+
|
|
164
|
+
**The judge NEVER sees the premise report.** Handing a judge a document arguing
|
|
165
|
+
that the frozen goal is wrong biases every finding it produces afterwards.
|
|
166
|
+
|
|
167
|
+
> **The three finding lenses feed the judge. The two non-finding lenses feed the
|
|
168
|
+
> user.** That sentence is the whole architecture.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## C3 — dispatch discipline
|
|
173
|
+
|
|
174
|
+
The **judge slice is SEALED** as it always was — one row per FINDING lens, and
|
|
175
|
+
`principles.md` / `expansionist.md` are named as forbidden in `sealed-slice.md`.
|
|
176
|
+
|
|
177
|
+
- Every lens is dispatched **BY NAME**. An unnamed dispatch cannot enforce the
|
|
178
|
+
pin and is invisible to the trace hook (the v0.34.5 wiki-scanner lesson) — and
|
|
179
|
+
a by-name dispatch gets `SPAWN`/`RETURN` for free, which is how `/orc-retro`
|
|
180
|
+
can finally answer *"is the contrarian earning its dispatch?"*
|
|
181
|
+
- **Hard cap: 3 in flight**, announced when it bites, **no config key**. Six
|
|
182
|
+
simultaneous returns is six `../../_shared/return-validation.md` blocks in one
|
|
183
|
+
orchestrator context, and this lane's orchestrator has a document to hold too.
|
|
184
|
+
- Every return is validated per `../../_shared/return-validation.md`:
|
|
185
|
+
`actual_model` and `actual_effort`, **quoted, never guessed**.
|
|
186
|
+
- **A selected lens that did not run is NOT-RUN with a reason** — rule 6
|
|
187
|
+
(`NOT-CHECKED` is never silent) extended to roles. The orchestrator writes
|
|
188
|
+
`{ "lens": "contrarian", "ran": false, "reason": "…" }` into the verdict's
|
|
189
|
+
`council[]`, and `record` accepts it. **Silence is rejected by name.**
|
|
190
|
+
|
|
191
|
+
### What each lens writes
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
orc/orc-challenge/<slug>/iteration-NN/council/
|
|
195
|
+
reader.md reader.json
|
|
196
|
+
contrarian.md contrarian.json
|
|
197
|
+
outsider.md outsider.json
|
|
198
|
+
executor.md executor.json
|
|
199
|
+
principles.md principles.json ← recorded by `note`, never by `record`
|
|
200
|
+
expansionist.md expansionist.json ← recorded by `note`, never by `record`
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
The `.md` is for the human and for the judge's slice. The `.json` is the machine
|
|
204
|
+
half, and it is what makes the next section possible.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Council conservation — the gate that makes this safe
|
|
209
|
+
|
|
210
|
+
The obvious failure of adding five reviewers is that **the judge quietly ignores
|
|
211
|
+
four of them** and the run looks identical while costing five times more.
|
|
212
|
+
|
|
213
|
+
> **Every id the council raised must appear in the judge's return with exactly
|
|
214
|
+
> ONE disposition and a reason. `council_coverage_pct` must be 100.**
|
|
215
|
+
|
|
216
|
+
That is `conservation.md` applied to **input** instead of to carry-forward, and
|
|
217
|
+
`orc challenge record` enforces it without reading a word of prose: **it reads
|
|
218
|
+
`iteration-NN/council/*.json` ITSELF and derives the id set.** The judge cannot
|
|
219
|
+
shrink it by omission, because the set was never the judge's to report.
|
|
220
|
+
|
|
221
|
+
### The disposition set — closed
|
|
222
|
+
|
|
223
|
+
| Disposition | Meaning | Requires |
|
|
224
|
+
|---|---|---|
|
|
225
|
+
| `adopted` | the judge agrees; the finding enters `findings[]` under its own id | `severity`, `dimension`, `serves` |
|
|
226
|
+
| `merged` | the same defect as another finding | `merged_into` (a resolvable id) |
|
|
227
|
+
| `rejected` | the judge read the anchor and disagrees | `reason` |
|
|
228
|
+
| `out-of-goal` | real, but traceable to no goal element | `reason` — and it is **reported**, never silently dropped |
|
|
229
|
+
|
|
230
|
+
**`adopted` keeps the raiser's id.** `C-004` stays `C-004` in the verdict, in the
|
|
231
|
+
report, in iteration 9. An id is permanent (`conservation.md`), and this is what
|
|
232
|
+
lets the panel say *"the contrarian raised four of the six blockers this
|
|
233
|
+
iteration"* — which is how a user finds out whether a lens is worth its money.
|
|
234
|
+
|
|
235
|
+
### Carrying forward across a changed roster
|
|
236
|
+
|
|
237
|
+
Iteration 2 runs the contrarian, iteration 3 does not, and `C-004` is still open.
|
|
238
|
+
Who resolves it?
|
|
239
|
+
|
|
240
|
+
> **The judge resolves every carried finding, whatever prefix it carries.**
|
|
241
|
+
|
|
242
|
+
Rule 11 already says a carried finding is re-judged **from the artifact on disk**,
|
|
243
|
+
never from an account of what changed — so the judge never needed the original
|
|
244
|
+
raiser. That makes the roster freely variable between iterations at zero cost to
|
|
245
|
+
conservation, and it is why lenses may only *raise*.
|
|
246
|
+
|
|
247
|
+
`record` therefore keeps its existing `coverage_pct` gate exactly as it was and
|
|
248
|
+
adds `council_coverage_pct` beside it.
|
|
249
|
+
|
|
250
|
+
### The gates, each rejecting BY NAME (all exit 2)
|
|
251
|
+
|
|
252
|
+
| Gate | Rejects |
|
|
253
|
+
|---|---|
|
|
254
|
+
| `council-unset` | the cycle's roster is `null` (a migrated v1 cycle) |
|
|
255
|
+
| `unknown-lens` | a `lens` outside the catalogue |
|
|
256
|
+
| `bad-prefix` | a finding whose id prefix disagrees with its lens |
|
|
257
|
+
| `duplicate-id` | the same id from two lenses |
|
|
258
|
+
| `lens-silent` | a roster lens with neither a report on disk nor `ran: false` + a reason |
|
|
259
|
+
| `council-coverage` | any raised id missing a disposition — **the missing ids are named** |
|
|
260
|
+
| `bad-disposition` | outside the set, `merged` without a resolvable `merged_into`, or `rejected`/`out-of-goal` with no reason |
|
|
261
|
+
| `class-mismatch` | an opportunity or a premise inside `findings[]` |
|
|
262
|
+
| `unknown-corroborator` | `corroborated_by` naming a lens that did not run this iteration |
|
|
263
|
+
|
|
264
|
+
**PASS is computed exactly as before.** An adopted council finding is an ordinary
|
|
265
|
+
finding from that moment on; `challengeBlocking()`, `challengeOpen()`,
|
|
266
|
+
`challengeCounts()` and `challengeStateOf()` are untouched. **The pass gate
|
|
267
|
+
learns nothing about the council**, which is what keeps rule 2 true.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## The frozen roster
|
|
272
|
+
|
|
273
|
+
The roster is **not a config key.** A global default would silently answer the
|
|
274
|
+
one question this whole design exists to ask. It is a per-cycle FROZEN decision
|
|
275
|
+
in the ledger, changed only by a recorded `recouncil` event:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
orc challenge council <slug> --set contrarian,executor --reason "…"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
`council_version` increments exactly like `goals.version` and
|
|
282
|
+
`template.version`, and the iteration rail draws a **third** version break for
|
|
283
|
+
it — because comparing an iteration judged by three lenses to one judged by six
|
|
284
|
+
is not a comparison.
|
|
285
|
+
|
|
286
|
+
A cycle opened before v0.49.1 reads back with `council: null`, and `record`
|
|
287
|
+
refuses the next iteration by name until the roster is answered. **A silent
|
|
288
|
+
default would be ORC picking the council.**
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## The trace
|
|
293
|
+
|
|
294
|
+
`record` returns the line and the skill copies it **VERBATIM**:
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
CHALLENGE iter=2 findings=P0:1/P1:3/P2:6 coverage=100% council=4/5 raised=C:6,O:3,E:2 adopted=9 verdict=FAIL
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
`council=4/5` is *lenses that ran / lenses on the roster*, so a NOT-RUN lens is
|
|
301
|
+
visible in the trace, in `orc stats`, and to `/orc-retro` — not only in the
|
|
302
|
+
panel.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## How the council fails — and what prevents each
|
|
307
|
+
|
|
308
|
+
| Failure | Prevention |
|
|
309
|
+
|---|---|
|
|
310
|
+
| Five reviewers run and the judge ignores four | `council_coverage_pct`, computed from disk, never from the judge's account |
|
|
311
|
+
| The expansionist's ideas get dropped for having no `serves` | the `opportunity` class — it never enters `findings[]` |
|
|
312
|
+
| ORC decides which criticism the user is allowed to hear | rule 12, and `--council` has no default |
|
|
313
|
+
| Six lenses, six wordings of one defect | `merged` + `corroborated_by`, and the per-lens raise counts make a useless lens visible within two iterations |
|
|
314
|
+
| Reader and outsider collapse into one instrument | two different slices and two different return contracts — and when they agree, that is recorded as corroboration, not duplication |
|
|
315
|
+
| A premise challenge destabilises every review | it never blocks, it resolves only by a human decision with a recorded reason, and a user who does not want their premise questioned simply does not select it |
|