Add map-router agent and map-making skill for reroute selection #869
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Reference
jared/cc-os#869
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
ADR-0258 decision 3 adds a
map-routeragent (model opus) that selects an approved map and an entry node for a reroute, with a preloaded map-making skill that teaches how to read maps. Neither exists.AgentType::ALL(model/agent_type.rb:7) globsagents/*.md, so the reroute gate ticket cannot dispatchmap-routeruntilagents/map-router.mdexists.Reproduce
n/a: new agent and skill prose, nothing to reproduce.
Approach
Slice 1 is selection only. Drafting (
maps/drafts/<name>.yaml) is slice 4; do not write it here.plugins/os-sdlc/agents/map-router.md: frontmatterdescription:,tools: Read, Glob, Grep, Bash(Bash only foros-sdlc-gateandos-sdlc-subagent-stop),skills: [os-sdlc:map-making],model: opus. Body: input = the requester handoff (situation, misfit, work already done;handoffin the brief) and the brief factapproved_maps(the joined approved maps, each under aMap: <name>line; #885 adds the fact). map-router is an in-map node gated byreroute(ADR-0259 decision 7). Job: choose one approved map whosefits:matches the situation, and choose the entry node = the first node in that map'sentries:whose work is not yet verified ("bridging"). It never edits code or maps. Runos-sdlc-gate DISPATCH_IDuntil it is green, then stop with a YAML handoff:summary:,map: <name>,node: <entry node>,situation:andmisfit:(carried from the requester handoff; thereroutegate refuses a handoff without them). If no approved map fits, say so insummary:and leave outmap:; the gate fails and the run returns to the orchestrator atneeds-orchestrator. Submit withos-sdlc-subagent-stoplikeagents/seam-designer.md:65-68.plugins/os-sdlc/skills/map-making/SKILL.md: how to read a map — header (name,fits,entries,entry,dispatch_cap,ticket_shape), nodes (agent nodes, routing nodes, and waiting nodes such asneeds-orchestrator),verdict.source,gateswithexpect, edges andbound, terminals; why every entry must reachmerge-readythrough[required-work, suite]; how to pick the entry node from the work already done. Frontmatter hasdescription:andwhen_to_use:; per cc-os naming it has NOname:field, and there is nocommands/directory.Authoring guidance (user ruling, 2026-10-01, verbatim):
"Use existing project agents/skills (plugins/os-sdlc/agents/.md, plugins/os-sdlc/skills/) as examples, plus the orwell-writing skill, the os-sdlc:technical-communication skill, cc-architect (plugins/cc-architect, incl. references/conventions/cc-os-naming.md: never
name:in SKILL.md frontmatter, no commands/ dir), and the mattpocock-skills:writing-for-agents skill, to guide language and structure."Required work:
skills: [os-sdlc:map-making]inplugins/os-sdlc/agents/map-router.mdmodel: opusinplugins/os-sdlc/agents/map-router.mdwhen_to_use:inplugins/os-sdlc/skills/map-making/SKILL.mdname: map-makinginplugins/os-sdlc/skills/map-making/SKILL.mdmisfit:inplugins/os-sdlc/agents/map-router.mdapproved_mapsinplugins/os-sdlc/agents/map-router.mdOrchestrator work: run
bin/refresh-pluginsafter merge; restart the session before the first live map-router dispatch (new agent types load at session start).Acceptance criteria
approved_mapsfact, and its output as a YAML handoff withsummary:,map:,node:,situation:, andmisfit:.map:when no approved map fits.fits:,entries:, and the rule that every entry reachesmerge-readythrough therequired-workandsuitegates.Owner sketch
Origin
Parent: #859
jared referenced this issue2026-10-01 14:26:18 +00:00
Work started on branch ticket-869 (os-sdlc pipeline, map poodr-ticket-implementation).
Resolution
Done: map-router agent (opus, skills [os-sdlc:map-making], reads requester handoff + approved_maps, writes summary/map/node/situation/misfit, leaves out map: when nothing fits, never edits code or maps) and the map-making skill (fits, entries, the merge-ready rule through required-work and suite). Deviation: ran on map poodr-implementation instead of poodr-ticket-implementation because the ticket is prose only (implement skill rule). Note: new agent types load at session start, so a live map-router dispatch needs a session restart.
Evidence: main
bcd0a3cc(Runner commit, implementation 1 implementation_complete, 8 dispatches, 0 retries), History row; six Required-work checks verified by grep; bin/test on main: 9 suites passed.Follow-ups: none