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:
File diff suppressed because it is too large
Load Diff
+704
-105
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user