@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,284 @@
|
|
|
1
|
+
# Reference — Cross-Repo Wiki Crosslink (federation at the boundary)
|
|
2
|
+
|
|
3
|
+
Lets one repo's wiki reference *another repo's* wiki at integration boundaries
|
|
4
|
+
(BE↔FE, BE→gRPC service, …) so executors build against real cross-repo contracts
|
|
5
|
+
instead of guessing. Crosslink is a **subsystem of orc-wiki** — no slash command,
|
|
6
|
+
no standalone runtime role. It federates on the *boundary surface*, not the whole
|
|
7
|
+
wiki. Shapes: `../schemas/crosslink-tag.md`. Kinds: `crosslink-kinds.md`.
|
|
8
|
+
|
|
9
|
+
## Load-bearing invariant: advisory, never blocking
|
|
10
|
+
|
|
11
|
+
You cannot control another team's repo — its wiki version, scan freshness, or
|
|
12
|
+
whether it adopted crosslink. So **every** failure mode (missing repo, no wiki,
|
|
13
|
+
old schema, drift, breaking change) degrades to a *warning + reduced context*,
|
|
14
|
+
never a gate. Cross-repo output is always labeled "hints, not verified".
|
|
15
|
+
|
|
16
|
+
## Hard boundary: read foreign WIKI only, never foreign SOURCE, never WRITE
|
|
17
|
+
|
|
18
|
+
The entire foreign footprint is read-only on a handful of the linked repo's
|
|
19
|
+
files, resolved from its `repo_path` (repo root):
|
|
20
|
+
|
|
21
|
+
- `<repo_path>/wiki/crosslink/**` — per-point tag files (the surface)
|
|
22
|
+
- `<repo_path>/wiki/orc-reference-api-surface.md` — coarse fallback for v1 repos
|
|
23
|
+
- `<repo_path>/.claude/orc/wiki-meta.json` — its freshness manifest + provider registry
|
|
24
|
+
- `<repo_path>/.claude/orc-crosslink.config.yaml` — bulk-add peek only
|
|
25
|
+
- read-only git queries in `<repo_path>` (`git rev-list --count`, `git diff
|
|
26
|
+
--name-only`) — wiki tiers are commit-distance computed, not mtime-derivable
|
|
27
|
+
|
|
28
|
+
Never read the linked repo's *source*, never write anything in it. The only
|
|
29
|
+
writes are inside THIS repo: `.claude/orc/crosslink/needs.json`,
|
|
30
|
+
`.claude/orc/crosslink/cache/**`, and this repo's own `wiki/crosslink/**`.
|
|
31
|
+
|
|
32
|
+
**Exactly TWO sanctioned exceptions to never-write-foreign — both file writes
|
|
33
|
+
only, NEVER a commit, NEVER a push, never any other peer path:**
|
|
34
|
+
|
|
35
|
+
1. **The orc-poly handoff plan** — orc-poly writes each peer repo's plan file
|
|
36
|
+
into that repo at its Phase 5 (the orc-poly skill owns that rule).
|
|
37
|
+
2. **The ATLAS + the CLAUDE.md pointer block (v0.33.0)** — after generating the
|
|
38
|
+
local atlas, the session writes the SAME `wiki/crosslink/atlas.md` into each
|
|
39
|
+
linked repo, and `/orc-wiki crosslink compile` additionally updates each
|
|
40
|
+
linked repo's CLAUDE.md pointer block (in-place block update, user content
|
|
41
|
+
byte-preserved). Any peer-write failure (missing path, permissions, repo
|
|
42
|
+
gone) WARNS and continues — advisory, never blocking.
|
|
43
|
+
|
|
44
|
+
Everything else in a peer stays untouchable, and even these two never run
|
|
45
|
+
`git add`/`git commit`/`git push` in the peer.
|
|
46
|
+
|
|
47
|
+
## Two surfaces, one direction rule
|
|
48
|
+
|
|
49
|
+
- **Provided (inbound)** — what a repo exposes (gRPC handlers, routers). Read by
|
|
50
|
+
whoever *calls* it.
|
|
51
|
+
- **Consumed (outbound)** — what a repo reaches for (its client calls). Its edges.
|
|
52
|
+
|
|
53
|
+
Direction decides **which side runs drift: you only drift-check what you
|
|
54
|
+
consume.** An edge `from: self to: z via: grpc` means self consumes z → watch z's
|
|
55
|
+
tags. `from: fe to: self via: api-client` means self is the provider → no drift
|
|
56
|
+
on our side (we publish; they watch us).
|
|
57
|
+
|
|
58
|
+
## The config (CLI-composed, skill-read)
|
|
59
|
+
|
|
60
|
+
`.claude/orc-crosslink.config.yaml` is written ONLY by the `orc crosslink` CLI
|
|
61
|
+
(the DIY pattern — human configs live directly under `.claude/`). orc-wiki only
|
|
62
|
+
READS it. Nodes + a directed edge list; `self` is node 1:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
version: 1
|
|
66
|
+
self: service-x-be
|
|
67
|
+
nodes:
|
|
68
|
+
- name: service-z-be
|
|
69
|
+
repo_path: ../service-z # repo ROOT — wiki/, wiki-meta, config, .git derive from it
|
|
70
|
+
kinds: [grpc, repository]
|
|
71
|
+
links:
|
|
72
|
+
- from: service-x-be to: service-z-be via: grpc # we consume z
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`links` is an edge list (not `linked_to` per node) because one pair can have
|
|
76
|
+
edges in both directions/kinds (x→z gRPC AND z→x webhook).
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Provider emission (this repo publishes its surface — ALWAYS ON, per scan-task)
|
|
81
|
+
|
|
82
|
+
Publish is **not** a Phase-3 add-on and has **no enable switch** (v0.24.0). It is
|
|
83
|
+
a per-scan-task byproduct of reading the code, the same pattern registration
|
|
84
|
+
follows — so it can never be skipped by a run that pauses (every 5 tasks, by
|
|
85
|
+
design) or by an incremental refresh with no drift.
|
|
86
|
+
|
|
87
|
+
Each scan agent, having already read the area's files to write the `Contracts &
|
|
88
|
+
shapes` rows, returns a REQUIRED `crosslink_tags` field alongside its `doc_body`
|
|
89
|
+
(schemas/wiki-doc.md): either **one tag body per OUTWARD boundary point** it
|
|
90
|
+
found (routes, gRPC handlers, produced events — pulled from source, NOT from the
|
|
91
|
+
doc prose, which is what kills the "thin docs starve the publish" failure), or
|
|
92
|
+
the token **`none` + a one-line reason**. A return missing `crosslink_tags`
|
|
93
|
+
entirely is MALFORMED → requeue.
|
|
94
|
+
|
|
95
|
+
The orchestrator then, in the SAME pass:
|
|
96
|
+
|
|
97
|
+
1. Writes the doc to `wiki/` AND each tag to `wiki/crosslink/<kind>/<slug>.md`
|
|
98
|
+
(schema §1; slug rule is Windows-safe + reversible).
|
|
99
|
+
2. Runs `orc wiki sync` — derives `wiki-meta.json`'s `crosslink_provided` array
|
|
100
|
+
from the tag files just written (schema §2). This registry — NOT
|
|
101
|
+
`wiki/INDEX.md` or `docs` — is where tags live, so the human index and
|
|
102
|
+
`pages` count stay clean. Never hand-maintain the array. Sync's boundary
|
|
103
|
+
detector flags a documented boundary with zero tags (`--check` exit 1).
|
|
104
|
+
3. Traces the scan-task's `DISPATCH`/`VERIFY` with a `tags:N` (or `tags:none`)
|
|
105
|
+
count so the boundary is visibly accumulating.
|
|
106
|
+
|
|
107
|
+
So the boundary accumulates from the FIRST scan-task, however the run ends — a
|
|
108
|
+
paused run has a live partial boundary matching its live partial docs.
|
|
109
|
+
`crosslink_tags: none` is an auditable claim, never silence; a zero-tag
|
|
110
|
+
completion additionally states "crosslink: no outward boundary ({reason})" in
|
|
111
|
+
the final report.
|
|
112
|
+
|
|
113
|
+
## Preservation — replace per-point, never bulk-delete
|
|
114
|
+
|
|
115
|
+
A refresh (including full regenerate) NEVER clears `wiki/crosslink/` first; each
|
|
116
|
+
tag is overwritten per-point as its owning area re-scans. A tag whose boundary
|
|
117
|
+
genuinely disappeared is retired ONLY by the **dead-tag sweep** (staleness.md,
|
|
118
|
+
beside the dead-doc sweep): a tag whose `anchor` file no longer exists, or whose
|
|
119
|
+
re-scanned area returned `crosslink_tags` without it → offer archive/delete per
|
|
120
|
+
tag, never silent, never automatic. A whole-surface vanish trips the `orc wiki
|
|
121
|
+
sync` N→0 tripwire (loud warning + `--check` exit 1) — a regenerate can no
|
|
122
|
+
longer wipe the boundary the way it once did.
|
|
123
|
+
|
|
124
|
+
## Legacy backfill — `/orc-wiki crosslink` (CROSSLINK-ONLY, SKILL.md Phase 3c)
|
|
125
|
+
|
|
126
|
+
For wikis whose docs predate v0.24.0 (docs exist, `wiki/crosslink/` absent), the
|
|
127
|
+
boundary is already on disk in the evidence-anchored `Contracts & shapes` rows,
|
|
128
|
+
so recovering it needs no repo scan: read the rows, open ONLY the files they
|
|
129
|
+
anchor, emit the tags, `orc wiki sync` to index. On a ≥v0.24.0 wiki, missing
|
|
130
|
+
tags are NOT a backfill case — the sync boundary guard fired and names the fix.
|
|
131
|
+
**Never answer "no crosslink tags" with a re-scan.** When the rows are genuinely
|
|
132
|
+
too thin to tag, SAY so and recommend an incremental refresh of just those areas
|
|
133
|
+
(an honest cost, stated as such) — the one case where a refresh IS the answer.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Consumer discovery (this repo resolves what it needs — Phase 3 add-on)
|
|
138
|
+
|
|
139
|
+
Also at scan/refresh, when `orc-crosslink.config.yaml` exists:
|
|
140
|
+
|
|
141
|
+
1. Read the config → linked nodes + `repo_path`s + edges.
|
|
142
|
+
2. Walk THIS repo's code; at each call site whose shape matches an edge's
|
|
143
|
+
`via: <kind>` toward a linked node, resolve that node's tag file at
|
|
144
|
+
`<repo_path>/wiki/crosslink/<kind>/<slug>.md`.
|
|
145
|
+
3. Record the dependency in `.claude/orc/crosslink/needs.json` (schema §3) — the
|
|
146
|
+
drift baseline. The human never hand-lists tags; discovery fills them.
|
|
147
|
+
4. Sync a snapshot into `.claude/orc/crosslink/cache/<node>/…` (schema §4),
|
|
148
|
+
stamped `synced_at` + provider `content_hash` + provider tier +
|
|
149
|
+
provider `scan_commit`.
|
|
150
|
+
5. Compute drift on everything already in `needs.json` (below) → **warn only**.
|
|
151
|
+
|
|
152
|
+
Discovery runs only the **consume** side of edges. Provider-only edges
|
|
153
|
+
(`from: fe to: self`) create no needs here.
|
|
154
|
+
|
|
155
|
+
**So every report is direction-scoped.** A linked repo's tags/freshness matter
|
|
156
|
+
ONLY on edges where we CALL them. On an inbound-only edge we read nothing from
|
|
157
|
+
that repo, so "no crosslink tags" there is both irrelevant and unfixable — a
|
|
158
|
+
pure consumer (a frontend `api-client`) has no API of its own and will never
|
|
159
|
+
grow tags. `orc crosslink list`/`status` therefore report inbound-only nodes as
|
|
160
|
+
"inbound only (they call us)" and never send anyone to publish a boundary that
|
|
161
|
+
legitimately does not exist. **The graph is drawn in the CONSUMER**: the repo
|
|
162
|
+
that calls is the one that needs the config, the edge, and the resolved cache.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## ATLAS — the federation super-context (`wiki/crosslink/atlas.md`, v0.33.0)
|
|
167
|
+
|
|
168
|
+
ONE federation-scoped document, present in EACH linked repo at
|
|
169
|
+
`wiki/crosslink/atlas.md`. Content is **repo-agnostic** — the same document
|
|
170
|
+
serves every node — with a header recording `generated_from` (which repo built
|
|
171
|
+
it), the `generated` timestamp, and per-peer peek freshness. Sections:
|
|
172
|
+
|
|
173
|
+
- **Federation map** — every known node + the `links[]` edges (including
|
|
174
|
+
TRANSITIVE nodes learned from peer atlases), with relation kinds. This is how
|
|
175
|
+
a repo discovers a repo it never linked directly.
|
|
176
|
+
- **Per-node profile** — what each repo provides, what it needs/consumes from
|
|
177
|
+
whom (from boundary rows + peer atlas), and **peek hints**: which of that
|
|
178
|
+
repo's wiki docs answer which questions (so a consumer peeks ONE doc, not a
|
|
179
|
+
wiki).
|
|
180
|
+
- **Freshness ledger** — per-peek age. Freshness on READ =
|
|
181
|
+
`min(own wiki tier, oldest peek age)` — computed on read, NEVER stored as a
|
|
182
|
+
status (the constellation-wide rule).
|
|
183
|
+
|
|
184
|
+
**Generation + propagation (the sanctioned write — exception #2 above):**
|
|
185
|
+
|
|
186
|
+
- Generated at: the end of every orc-wiki scan/refresh (Phase 3, and the delta
|
|
187
|
+
refresh's derived-regenerate step); during CROSSLINK resolve in build lanes
|
|
188
|
+
when the atlas is missing/stale (a cheap regenerate from `needs.json` +
|
|
189
|
+
`cache/` — never a scan); and by `/orc-wiki crosslink compile`.
|
|
190
|
+
- After writing the LOCAL atlas, the session writes the SAME file into each
|
|
191
|
+
linked repo's `wiki/crosslink/atlas.md` (repo paths from the config's
|
|
192
|
+
`links[]`/nodes). File write ONLY — never commit, never push, never any
|
|
193
|
+
other peer path. Any peer-write failure WARNS and continues.
|
|
194
|
+
- **Newest-wins on read:** if a peer session regenerated its copy later, the
|
|
195
|
+
local consumer trusts the newer `generated` timestamp when peeking.
|
|
196
|
+
- `orc wiki sync` treats `atlas.md` as a DERIVED crosslink artifact — never an
|
|
197
|
+
unregistered doc, never counted in `pages`, never bulk-deleted by a refresh
|
|
198
|
+
(same preservation rule as the tags).
|
|
199
|
+
|
|
200
|
+
**Consumption:** the `wiki-consult.md` CROSSLINK step reads the atlas FIRST,
|
|
201
|
+
then makes targeted peer-wiki peeks the atlas' peek hints point at. orc-poly's
|
|
202
|
+
context gathering reads it, and its slug resolution lists transitive nodes
|
|
203
|
+
discovered via the atlas (paste-a-path fallback unchanged).
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Freshness — two orthogonal signals, computed on read
|
|
208
|
+
|
|
209
|
+
A cross-ref is trustworthy only if BOTH hold; the weakest link governs.
|
|
210
|
+
`effective = min(Signal-A, Signal-B)`.
|
|
211
|
+
|
|
212
|
+
- **Signal A — provider wiki tier.** Does the provider's wiki match its code?
|
|
213
|
+
Computed by staleness.md's existing rule — **git commit distance**
|
|
214
|
+
(`git rev-list --count <scan_commit>..HEAD` run read-only in `<repo_path>`),
|
|
215
|
+
NOT days. Use the standard default edges (`wiki_fresh_max` 10 / `wiki_aging_max`
|
|
216
|
+
30); do NOT read the provider's `orc.config.yaml` for custom thresholds (their
|
|
217
|
+
tuning is their business; defaults keep the compute self-contained). When the
|
|
218
|
+
provider isn't checked out or git fails there, fall back to `source_tier`
|
|
219
|
+
stamped in the cache at sync time, labeled "as of last sync".
|
|
220
|
+
- **Signal B — snapshot age.** How long since we synced? This is the ONLY
|
|
221
|
+
day-based tier in the constellation (there is no shared commit axis between two
|
|
222
|
+
repos): `days = today − synced_at`, compared against `crosslink_fresh_days`
|
|
223
|
+
(default 10) and `crosslink_aging_days` (default 15). ≤ fresh → FRESH,
|
|
224
|
+
≤ aging → AGING, else STALE.
|
|
225
|
+
|
|
226
|
+
Never store the effective tier — the cache stamp is a fallback INPUT, the tier is
|
|
227
|
+
always recomputed on read. Inject the linked surface labeled with `effective` +
|
|
228
|
+
precedence rank.
|
|
229
|
+
|
|
230
|
+
## Drift (per-point, warn only)
|
|
231
|
+
|
|
232
|
+
Per-point tags → per-endpoint drift. Compare cached `source_content_hash` vs the
|
|
233
|
+
provider's current tag `content_hash`:
|
|
234
|
+
|
|
235
|
+
- changed → **contract drifted** → warn ("`grpc:billing.v1.CreateInvoice` changed
|
|
236
|
+
under you since last sync")
|
|
237
|
+
- tag file gone → **breaking change** (a tag in `needs.json`) → **warn only**
|
|
238
|
+
(never blocks — advisory invariant)
|
|
239
|
+
- unchanged → clean
|
|
240
|
+
|
|
241
|
+
Topology-drift bonus (free): if `needs.json`/config says we consume z over a
|
|
242
|
+
kind but z's own `orc-crosslink.config.yaml` declares no matching provider edge,
|
|
243
|
+
note it — warn only.
|
|
244
|
+
|
|
245
|
+
## Degradation ladder (every rung continues)
|
|
246
|
+
|
|
247
|
+
| Provider state | What you get | Warn |
|
|
248
|
+
|---|---|---|
|
|
249
|
+
| v2 wiki + crosslink tags | per-point tags → precise drift | — |
|
|
250
|
+
| v2 wiki, boundary documented but tags unpublished (legacy pre-v0.24.0, or a fired sync guard) | api-surface prose → coarse hints, no per-point drift | "boundary documented, tags unpublished — `orc wiki sync --check` there names it; `/orc-wiki crosslink` backfills from the docs, no re-scan" |
|
|
251
|
+
| v2 wiki, no boundary at all | nothing to resolve (they expose no API) | — (valid; not a fixable gap) |
|
|
252
|
+
| v1 wiki | api-surface only → coarse hints, no per-point drift | "older schema — coarse" |
|
|
253
|
+
| wiki UNREGISTERED (docs, no manifest) | edge inert until registered — **but nothing needs scanning** | "run `orc wiki sync` there — instant, no re-scan" |
|
|
254
|
+
| manifest CORRUPT (unparseable) | edge inert until rebuilt | "run `orc wiki sync` there to rebuild it" |
|
|
255
|
+
| no wiki | edge inert until provider scanned | "run `/orc-wiki` there" |
|
|
256
|
+
| path missing | pending edge, resolves when path appears | "path not found — pending" |
|
|
257
|
+
|
|
258
|
+
Never collapse UNREGISTERED into "no wiki": a repo whose docs are complete but
|
|
259
|
+
unindexed looks identical to an unscanned one from the manifest alone, and
|
|
260
|
+
telling that team to scan sends them to re-buy a wiki they already own. `orc
|
|
261
|
+
crosslink` distinguishes the two by looking for docs under `<repo_path>/wiki/`
|
|
262
|
+
before it concludes anything from a missing manifest.
|
|
263
|
+
|
|
264
|
+
Version skew is expected: a crosslink to a v1/tagless repo gets richer for free
|
|
265
|
+
the day that repo re-scans with crosslink. No cross-team coordination needed.
|
|
266
|
+
|
|
267
|
+
## Run-time injection (how the lanes benefit)
|
|
268
|
+
|
|
269
|
+
orc / orc-fast / orc-mini inject the linked surface into a task's slice ONLY when
|
|
270
|
+
that task touches a boundary — same mechanism as the `pattern` slice. The
|
|
271
|
+
orchestrator reads `.claude/orc/crosslink/needs.json`, and for a task whose
|
|
272
|
+
declared files include a call site with a matching need, prepends the cached tag
|
|
273
|
+
contract (from `crosslink/cache/`) to the slice, labeled with `effective` tier +
|
|
274
|
+
"cross-repo hints, not verified". No executor return contract changes — crosslink
|
|
275
|
+
is advisory, so there is nothing to attest. A task with no boundary gets nothing.
|
|
276
|
+
|
|
277
|
+
## Precedence
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
local code > local fresh wiki > cross-repo fresh wiki (hints)
|
|
281
|
+
> cross-repo stale wiki (weak hints) > model priors
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Cross-repo can never outrank local hints — we cannot verify foreign code.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Routing a scan-task off Claude — the two POSITIONS
|
|
2
|
+
|
|
3
|
+
Load this at the scan phase, once, when `extra_enabled` is true. Canonical
|
|
4
|
+
cross-lane prose: `../../_shared/extra-dispatch.md`.
|
|
5
|
+
|
|
6
|
+
## The row was DEAD until v0.55.0
|
|
7
|
+
|
|
8
|
+
`/orc-wiki` was declared as routing foreign and asked for a role named `scanner`
|
|
9
|
+
in `config.extra_roles` — a spelling that key **refuses by name**, alongside
|
|
10
|
+
`wiki-scanner`, which it also does not have. So the lane could never route
|
|
11
|
+
however it was configured, and `orc extra lanes` printed
|
|
12
|
+
`/orc-wiki → claude` forever with a reason that read like a user's choice.
|
|
13
|
+
|
|
14
|
+
It is a **POSITION** now, not a role name and not a band. Two of them, one per
|
|
15
|
+
tier:
|
|
16
|
+
|
|
17
|
+
| slot | the Claude agent it displaces |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `wiki-scanner-deep` | `orc-wiki-scanner-opus-4-8-high` |
|
|
20
|
+
| `wiki-scanner-light` | `orc-wiki-scanner-sonnet-5-high` |
|
|
21
|
+
|
|
22
|
+
Both collapse onto `orc-wiki-scanner-opus-5-med` while `opus5_only` is on, which
|
|
23
|
+
is why this adds **no agent and no pair**. Two slots and one Opus 5 agent is not
|
|
24
|
+
a contradiction: a slot names the POSITION, not the model.
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
orc extra role set wiki-scanner-light ds/deepseek-chat
|
|
28
|
+
orc extra resolve --slot wiki-scanner-light --json # 0 = extra · 1 = claude
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**No row on a slot means Claude, and that is an answer rather than a gap.**
|
|
32
|
+
|
|
33
|
+
## The tier is picked first, and its target is printed with it
|
|
34
|
+
|
|
35
|
+
Resolve the tier (`wiki_scan_tier`, `references/partial-refresh.md`), then ask
|
|
36
|
+
the resolver for **that tier's** slot. The resolved tier already prints; now
|
|
37
|
+
print its target on the same block — a cheaper model is never a quiet
|
|
38
|
+
substitution, and neither is a different company's:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
scan-task 3/7 tier LIGHT (small delta, no new surface)
|
|
42
|
+
-> deepseek/deepseek-chat via `ds` (displaces orc-wiki-scanner-sonnet-5-high)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`orc wiki plan` names every scan-task that would run off Claude **before any of
|
|
46
|
+
it is paid for**, and **free repairs still come first**: sync → orientation →
|
|
47
|
+
crosslink backfill → and only then a paid refresh. A free repair is never
|
|
48
|
+
skipped because a cheap model is available.
|
|
49
|
+
|
|
50
|
+
## Dispatch, validate, recover
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
orc extra dispatch --task <slice.json> --json
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The slice carries `slot: "wiki-scanner-deep"` or `"wiki-scanner-light"` and
|
|
57
|
+
**no `score`** — this lane has none, and both fields together is refused by
|
|
58
|
+
name. Everything else about the slice is identical to what the pinned Claude
|
|
59
|
+
scanner would receive, including **the kind catalog**
|
|
60
|
+
(`references/crosslink-kinds.md`): an agent never shown it invents synonym kinds,
|
|
61
|
+
which are permanent duplicates, and that is true of a foreign agent too.
|
|
62
|
+
|
|
63
|
+
Validate the return with `../../_shared/return-validation.md` **§2b, not §2** — a
|
|
64
|
+
foreign worker reports no `actual_model` and that must never be faked. What it
|
|
65
|
+
says it read is a CLAIM: the doc body it returns is still anchored, and an
|
|
66
|
+
unanchored claim is still omitted rather than guessed.
|
|
67
|
+
|
|
68
|
+
On a failure, run **`orc extra reconcile <task_id>` FIRST** — free, zero tokens,
|
|
69
|
+
and it is what stops the fallback from re-doing work the worktree already
|
|
70
|
+
contains. Then `extra_on_failure` decides: `fallback` re-dispatches to **that
|
|
71
|
+
tier's pinned Claude agent, by name**, announced, and the scan continues;
|
|
72
|
+
`stop` stops.
|
|
73
|
+
|
|
74
|
+
## What never routes
|
|
75
|
+
|
|
76
|
+
`orc wiki sync` **never** routes foreign. Registration is 100% derived from doc
|
|
77
|
+
headers by the CLI — there is no model in it to replace. The same is true of
|
|
78
|
+
`orc wiki plan`, the delta probe, `orc wiki status` and the crosslink registry
|
|
79
|
+
walk: they compute, they do not produce.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Reference — Scan-End Integrity Self-Check (anti-drift gate)
|
|
2
|
+
|
|
3
|
+
Runs at the END of every scan/refresh (full, incremental, selective), AFTER
|
|
4
|
+
all docs are written and AFTER the closing `orc wiki sync` — it VALIDATES the
|
|
5
|
+
derived registration rather than racing it. The orchestrator runs it itself —
|
|
6
|
+
it is checklist work (file existence + cross-referencing), not scanning, so it
|
|
7
|
+
needs no agent. Any failed item is FIXED before the run is declared done; if a
|
|
8
|
+
fix needs a re-scan, that re-scan rides the current run's consent (no new
|
|
9
|
+
warning).
|
|
10
|
+
|
|
11
|
+
When logging is on, emit ONE trace line per item:
|
|
12
|
+
`WIKI-CHECK <item> ✅ PASS` or `WIKI-CHECK <item> ⛔ FAIL <what>` — and after
|
|
13
|
+
fixes a final `WIKI-CHECK all ✅`.
|
|
14
|
+
|
|
15
|
+
## Items 1, 2, 5 and 7 — now structural
|
|
16
|
+
|
|
17
|
+
index-sync, registry-sync, counts-match and crosslink-sync used to compare four
|
|
18
|
+
hand-maintained artifacts against each other. Since `orc wiki sync` DERIVES
|
|
19
|
+
`wiki/INDEX.md` and `.claude/orc/wiki-meta.json` — the `docs` registry with each
|
|
20
|
+
doc's `covers` + `covered_files`, the `pages` count, and the
|
|
21
|
+
`crosslink_provided` index of `wiki/crosslink/` — from the one source those
|
|
22
|
+
artifacts were supposed to agree with (the doc headers), they cannot disagree
|
|
23
|
+
unless registration was never run. So the four collapse into one command:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
orc wiki sync --check # exit 0 = registration matches the docs on disk
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Exit 0 → emit `WIKI-CHECK registration ✅ PASS`. Non-zero → sync was skipped or
|
|
30
|
+
a doc changed after it; run `orc wiki sync` and re-check. Never fix these by
|
|
31
|
+
hand-editing INDEX.md or the manifest: that re-creates the very drift the
|
|
32
|
+
derivation removes. Only the manifest's `commands` key is hand-maintained, and
|
|
33
|
+
only per staleness.md.
|
|
34
|
+
|
|
35
|
+
## The checklist
|
|
36
|
+
|
|
37
|
+
1. **covers-resolve** — every doc's `covers` globs match ≥ 1 real file. Zero
|
|
38
|
+
matches → route into the dead-doc sweep (staleness.md), never leave a dead
|
|
39
|
+
doc indexed as live.
|
|
40
|
+
2. **coverage-report** — union of all docs' `covers` vs the repo's source
|
|
41
|
+
tree: print coverage % and the top uncovered directories. Informational
|
|
42
|
+
(feeds the coverage-gap sweep) — uncovered dirs are REPORTED with a
|
|
43
|
+
proposed-area suggestion, never auto-scanned.
|
|
44
|
+
3. **claudemd-match** — the CLAUDE.md pointer block's doc count + "Last
|
|
45
|
+
updated" match the manifest. (The manifest's own `pages` is derived, so it
|
|
46
|
+
cannot drift; the pointer block is hand-injected, so it can.)
|
|
47
|
+
4. **schema-upgrade-note** — list docs whose headers are still v1 (no
|
|
48
|
+
`wiki_schema: 2`: no `keywords`, a single `covered_hash` instead of per-file
|
|
49
|
+
`covered_files`). Derivation keeps them usable and indexed, so this is a
|
|
50
|
+
NOTE for lazy upgrade on the next refresh, never a failure — the one thing
|
|
51
|
+
the derived registration can't tell you, since a v1 entry looks merely
|
|
52
|
+
sparse rather than wrong.
|
|
53
|
+
5. **anchor-spot-check** — for each doc written THIS run, pick 2 evidence
|
|
54
|
+
anchors from its contract sections and confirm the cited files exist
|
|
55
|
+
(existence only — cheap). A missing file = the agent cited something it
|
|
56
|
+
didn't read → re-queue that doc's scan.
|
|
57
|
+
6. **crosslink-anchors** (UNCONDITIONAL as of v0.24.0 — this is the guard that
|
|
58
|
+
catches "boundary exists but no tags", the exact silent-zero the old
|
|
59
|
+
"only when this repo published a boundary this run" clause allowed). Trigger:
|
|
60
|
+
if ANY doc written this run reported boundaries (`crosslink_tags` ≠ `none`)
|
|
61
|
+
OR carries a non-empty `## Contracts & shapes` table, then `wiki/crosslink/`
|
|
62
|
+
MUST exist and every reported tag must be on disk AND registered in
|
|
63
|
+
`crosslink_provided` — else FAIL and fix before the run is declared done (the
|
|
64
|
+
fix is publishing the tags, NOT a re-scan). Each `crosslink_provided` entry's
|
|
65
|
+
`anchor` file must also exist (an anchor pointing at a deleted file is real
|
|
66
|
+
drift no derivation can see). A ZERO-tag completion is allowed ONLY when the
|
|
67
|
+
final report carries the explicit line
|
|
68
|
+
"crosslink: no outward boundary ({reason})" — a bare zero-tag finish FAILS.
|
|
69
|
+
Emit `WIKI-CHECK crosslink …` when logging. Consume-side needs/cache stay
|
|
70
|
+
advisory and are NOT gated (a stale cache warns, never fails).
|
|
71
|
+
7. **orientation-check** (v0.33.0) — `wiki/orc-orientation.md` exists (it is a
|
|
72
|
+
derived assemble-step output, so a scan/refresh that ends without one
|
|
73
|
+
skipped a step), every `Reading order` pointer resolves to a REGISTERED doc,
|
|
74
|
+
and one spot-checked `Journeys` anchor's file exists. Neighbors section
|
|
75
|
+
present only when crosslink cache/atlas exists; otherwise the explicit
|
|
76
|
+
"no outward crosslink configured" line. A failed item is fixed by
|
|
77
|
+
re-deriving the orientation doc (free) — never a re-scan.
|
|
78
|
+
|
|
79
|
+
## Why it exists
|
|
80
|
+
|
|
81
|
+
A wiki that disagrees with itself cannot be a source of truth. Deriving the
|
|
82
|
+
index and manifest from the docs removes one whole class of that disagreement
|
|
83
|
+
by construction; this gate covers what derivation cannot see — claims pointing
|
|
84
|
+
at files that don't exist, docs covering nothing, and the hand-injected
|
|
85
|
+
CLAUDE.md block — so internal consistency is a shipped property of every run,
|
|
86
|
+
not a hope.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Reference — The Orientation & Journey Doc (`wiki/orc-orientation.md`, v0.33.0)
|
|
2
|
+
|
|
3
|
+
The wiki's front door: how a fresh session (or a human) self-orients in this
|
|
4
|
+
repo in one read. **DERIVED at Phase 3 (assemble) from the already-written
|
|
5
|
+
docs + the architecture overview — never a new scan area**, so it costs one
|
|
6
|
+
assemble-time write. Consumers read it FIRST (`wiki-consult.md`), then dive
|
|
7
|
+
into the docs it points at.
|
|
8
|
+
|
|
9
|
+
## Sections (in order)
|
|
10
|
+
|
|
11
|
+
1. **`Repo identity`** — what the repo is, the stack, the entry points — each
|
|
12
|
+
claim anchored to a real file (evidence-anchored v2 rule applies here as
|
|
13
|
+
everywhere: unanchored = omitted, never guessed).
|
|
14
|
+
2. **`Reading order`** — ordered pointers into the other wiki docs, one line
|
|
15
|
+
of WHY per hop ("start at orc-architecture-overview for the map → then
|
|
16
|
+
orc-feature-orders because most requests land there → …").
|
|
17
|
+
3. **`Journeys`** — 2–4 traced end-to-end flows (a request in, a job run, a
|
|
18
|
+
deploy), each step anchored `file:line`. A journey step that cannot be
|
|
19
|
+
anchored to a file a scan actually covered is OMITTED, never guessed.
|
|
20
|
+
4. **`Neighbors`** *(conditional)* — present ONLY when crosslink is configured
|
|
21
|
+
AND the resolved cache / ATLAS exists: one paragraph per linked repo (what
|
|
22
|
+
it provides us, what we consume from it), sourced from
|
|
23
|
+
`.claude/orc/crosslink/cache/` + `wiki/crosslink/atlas.md`. No crosslink →
|
|
24
|
+
the section is omitted with the explicit style line
|
|
25
|
+
`Neighbors: none — no outward crosslink configured.` (never silent).
|
|
26
|
+
|
|
27
|
+
## Rules
|
|
28
|
+
|
|
29
|
+
- **Registered like any doc:** standard wiki-doc header (schemas/wiki-doc.md —
|
|
30
|
+
`doc_type: reference`, `area: orientation`) → `orc wiki sync` registers it;
|
|
31
|
+
freshness computed on read, existing tiers, NO new config keys. `covers` lists the entry-point
|
|
32
|
+
source files its Repo identity anchors — **plus every source file the docs it
|
|
33
|
+
summarizes cover** (the union of their `covers`). Its CONTENT derives from
|
|
34
|
+
those docs, so anchoring staleness only to `src/app.js` + `package.json` let
|
|
35
|
+
it read CLEAN in the same impact table where three docs it points at were
|
|
36
|
+
TOUCHED, while its Journeys described a handler that had changed. This is the
|
|
37
|
+
doc every consuming lane reads FIRST, so it is the highest-leverage stale doc
|
|
38
|
+
in the wiki — it needs a machine backstop, not only an obligation.
|
|
39
|
+
- **`derived_from` (v0.34.5):** the header also records
|
|
40
|
+
`derived_from: {<doc file>: <content_hash>}` for every doc it summarizes. A
|
|
41
|
+
hash that no longer matches means orientation is stale even when no source
|
|
42
|
+
file moved (e.g. a doc was rewritten from the same code) — the Phase 3
|
|
43
|
+
integrity check reads it.
|
|
44
|
+
- **Regenerated (free, derived) whenever any doc it points to is refreshed** —
|
|
45
|
+
including the delta refresh (staleness.md mode 1) and after an atlas
|
|
46
|
+
regeneration. Regeneration is an assemble step, never a scan.
|
|
47
|
+
- **Consumption:** `wiki-consult.md` reads orientation FIRST, then dives into
|
|
48
|
+
the referenced docs. orc-learn's topic picker may offer the Journeys as
|
|
49
|
+
learnable topics.
|
|
50
|
+
- **Integrity:** the Phase 3 self-check verifies the Reading-order pointers
|
|
51
|
+
resolve to registered docs and spot-checks one Journey anchor.
|