feat(model-router): wave 3-A — first-use route confirmation, decision memory, project exceptions

routing.json (tracked, reached through the plugin directory) is now the
single source of the phase table and of every skill/agent row, plus the
decisions: confirmed rows/phases, changed rows (from/to) and projects
exceptions keyed by a normalized git remote (credentials never stored, no
machine paths). First use of a rowed typed skill, a rowed agent spawn or a
main-loop phase opens the engine's dialog (Later / Keep / two alternative
phases; Other = a phase name); a change asks Everywhere or This project
only. One dialog at a time, never in headless, never inside an agent,
never written by the model: only a dialog answer or /route ask writes,
serialized, size-capped, never creating the file. Layers: routing.json <
~/.claude/model-router.json; the project tree is never read. /route
pending, /route ask on|off. Census reads rows and phases from the file and
tolerates a user-changed row (WARN). Kit suite 86 → 190 tests.

Contract .claude/tasks/contracts/2026-10-10-model-router-w3a-confirm-1201.md,
plan r4: 3 lenses + 1 confirmation, feater + 4 rounds, GATE 0 MET,
verifier CONFORME then re-verify after security, security BLOCK(1) fixed
then PASS. Live: T2 dialogs answered by the user from the hot-loaded mod.
This commit is contained in:
bchanot
2026-10-11 11:48:25 +02:00
parent 45bb86ff1d
commit 22455c051f
5 changed files with 2299 additions and 174 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+144
View File
@@ -0,0 +1,144 @@
{
"phases": {
"plan": {
"tier": "best",
"effort": "xhigh"
},
"reflect": {
"tier": "best",
"effort": "high"
},
"orchestrate": {
"tier": "best",
"effort": "medium"
},
"escalate": {
"tier": "best",
"effort": "max"
},
"judge": {
"tier": "big",
"effort": "xhigh"
},
"implement": {
"tier": "work",
"effort": "medium"
},
"write": {
"tier": "work",
"effort": "high"
},
"verify": {
"tier": "work",
"effort": "xhigh"
},
"explore": {
"tier": "work",
"effort": "medium"
},
"apply": {
"tier": "work",
"effort": "low"
},
"mechanical": {
"tier": "cheap",
"effort": "low"
}
},
"skills": {
"ship-feature": "plan",
"init-project": "plan",
"onboard": "plan",
"tour": "plan",
"audit-delta": "plan",
"analyze": "plan",
"code-clean": "plan",
"client-handover": "plan",
"brainstorming": "plan",
"writing-plans": "plan",
"requesting-code-review": "plan",
"21st-ui-review": "plan",
"feat": "reflect",
"hotfix": "reflect",
"bugfix": "reflect",
"refactor": "reflect",
"web-validate": "reflect",
"harden": "reflect",
"seo": "reflect",
"geo": "reflect",
"site-motion": "reflect",
"frontend-design": "reflect",
"emil-design-eng": "reflect",
"design-motion-principles": "reflect",
"21st-ui-build": "reflect",
"scroll-world-storytelling": "reflect",
"build-threejs-scroll-worlds": "reflect",
"scroll-scrubbed-visual-sequence": "reflect",
"scroll-scrubbed-word-reveal": "reflect",
"scroll-progress-timeline": "reflect",
"subagent-driven-development": "reflect",
"writing-skills": "reflect",
"deprecation-and-migration": "reflect",
"21st-ai": "reflect",
"21st-ui-explore": "reflect",
"gitflow": "implement",
"prune-memory": "implement",
"pdf-translate": "implement",
"ci-cd-and-automation": "implement",
"observability-and-instrumentation": "implement",
"test-driven-development": "implement",
"commit-change": "apply",
"release-candidate": "apply",
"doc": "apply",
"capitalize": "apply",
"close": "apply",
"reconcile": "apply",
"deploy": "apply",
"status": "mechanical",
"profile": "mechanical",
"plugin-check": "mechanical",
"skills-perso": "mechanical",
"using-git-worktrees": "mechanical",
"21st-cli-use": "mechanical",
"21st-registry": "mechanical",
"21st-design-sync": "mechanical"
},
"agents": {
"Explore": "explore",
"Plan": "judge",
"plan-challenger": "judge",
"plugin-advisor": "judge",
"seo-analyzer": "judge",
"geo-analyzer": "judge",
"analyzer": "judge",
"feater": "implement",
"bugfixer": "implement",
"code-cleaner": "implement",
"scaffolder": "implement",
"onboarder": "implement",
"commit-changer": "write",
"doc-syncer": "write",
"handover-doc-writer": "write",
"refactorer": "write",
"hotfixer": "apply",
"release-executor": "apply",
"plugin-probe": "apply",
"validator-analyzer": "apply",
"verifier": "verify",
"security-auditor": "verify",
"status-reporter": "mechanical"
},
"projects": {},
"confirmed": {
"agents": {
"verifier": "verify",
"feater": "implement"
},
"phases": {
"verify": "verify",
"implement": "implement"
}
},
"changed": {},
"ask": true
}