Roster recall pass: retitle the seats Kai cannot recall, keep the slugs #344
Labels
No labels
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agent-compose#344
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?
Design record for a seat naming pass. Kai opened it by naming which seats she can recall on demand and which she cannot. Nothing is decided yet, and the open questions are at the bottom.
The observed signal
Kai recalls three seats without effort: Delphi (frontend), Angie (platform), Gem (devrel). She gave Gale (gamedev) an explicit pass on different grounds, that gamedev does not intersect the other lanes until it becomes the sole point of contact. She cannot recall Olaf (sysadmin), Lucia (eval), or Saiya (tpm), and she named Olaf as a name she regrets choosing.
What separates the keepers from the misses
Reading the seven
internal/person/data/role-*/role.kdlidentities against that signal, the keepers are each hooked to their own domain and the misses are opaque.Delphi- frontend - phonetic hook,Delphianddesignshare the openingdeAngie- platform - phonetic hook,Angieandengineeringshare thengiclusterGale- gamedev - phonetic hook on the initial,GaleandgameGem- devrel - semantic hook, a gem is the polished artifact you hand to a readerOlaf- sysadmin - carries a franchise association that fights the protective and grounded meldLucia- eval - means light, which says nothing about measurementSaiya- tpm - no hook of either kindSo the generative rule is that a seat name earns recall by carrying its own job, either in sound or in meaning, and every current miss carries neither.
The second problem, title collision
Three of the seven display names lead with or contain
Developer, and Kai says three different words for one seat. For platform she saysengineering, the title saysDeveloper Platform Engineer, and the slug saysplatform. That gap is its own recall tax, separate from the name.Developer Platform Engineer- platformDeveloper Advocate- devrelGame Developer- gamedevKai floated
Agentic Platformfor the first one. That resolves the collision and adds anAhook for Angie at the same time. It introduces a new collision with the eval titleAgent Evaluation Engineer, which drops cleanly by shortening eval toEvaluation Engineer.Proposed roster
platform-Agentic Platform Engineer- Angie (she) - retitle only, Kai's own proposal, restores theAhooksysadmin-Systems Administrator- rename the seat - candidates beloweval-Evaluation Engineer- rename the seat - candidateEvie, which carriesevalin its first two lettersfrontend-Design Engineer- Delphi (she) - retitle only, leads with the word Kai actually saysgamedev-Game Developer- Gale (they) - untouched by Kai's explicit passtpm- retitle open, see below - rename the seatdevrel-Developer Advocate- Gem (they) - untouched, the collision resolves itself once platform dropsDeveloperThe tpm retitle
Kai called tpm very misnamed and had no starting point. The role definition says the purpose is to decide what the portfolio does next and carry each decision to its gate, it owns
seek-external-validation, and its meld is decisive plus outward. That is a seat that decides priority and scouts outside the local frame, whichTechnical Program Managerdoes not describe, because that title implies coordinating programs other people own.Portfolio Strategist- fits both the stated purpose and the owned boundaryChief of Staff- fits deciding and carrying to a gate, implies serving a principalPortfolio Director- accurate, butdirectoralready names Ward's merge lane, so it collidesTechnical Program Manager- keepCost, and why slugs should probably not move
Blast radius measured across the checkouts on 2026-08-25.
tpmalone is 25 files in agent-compose and 30 in agentic-os - expensiveThe decisive evidence against another slug move is
agentic-os#1223. The v3 roster reflow renamed twenty composed sources on 2026-08-23 and deliberately stopped, leaving roughly 169 candidate stale prose sites that need a per-occurrence read rather than a regex. That debt is open and unpaid. A second slug rename two days later doubles it before the first pass has run.The one argument for moving the
tpmslug anyway is that the#1223editorial pass has to walk those sites by hand regardless, so folding a single slug rename into that same pass costs one judgement pass rather than two.Open questions for Kai
Orla(she), which keeps theOtoopshook that was already working under the franchise problem,Otis(he), which keeps that hook and preserves the roster's onlyheseat, andVera(she), which has no letter hook but reads as vigil and matches the protective meld.tpmslug moves with its title, or whether this pass changes titles and seat names only.Boundary
Filed from the eval seat. Landing this in
internal/person/dataisboundary-build-foundational-software, which eval defers to platform. This issue is the specification and the handover.Kai's decisions, 2026-08-25
Three of the four open questions are settled. The tpm title is reopened rather than answered, on new information.
Settled
Vera(she) - chosen overOrlaandOtis. No letter hook, so the roster loses its onlyheseat and the O-to-ops mnemonic. Kai took the vibe fit with the protective and grounded meld instead.Evie, retitle toEvaluation Engineeragentic-os#1223keeps the prose debt it already has and gains none.Carried from the proposal unvetoed:
Agentic Platform Engineer,AngieunchangedDesign Engineer,DelphiunchangedDeveloper Advocatestays, and it is the only leading-Developertitle once platform retitlesThe tpm title, reopened
Kai answered the title question with new information rather than a pick: Ward is being fully deprecated, and the mismatch resolves through that deprecation.
That voids the only objection this issue raised against
Portfolio Director, which was the collision with Ward's director merge lane. With Ward going away,Portfolio Directoris available and arguably the better of the two candidates, because the purpose sentence leads withDecide what the portfolio does nextandDirectorcarries deciding authority whereStrategistcarries advice.Both candidates lead with
Portfolio, so the say-it handle isportfolioeither way and the seat name wants aPhook.Saiyahas no successor yet. Candidates put to Kai:Portia- sharesPortwithportfolio, the tightest phonetic hook in the roster, and its literary namesake renders the decisive verdict, which matches the decisive meldPiper- real, warm, short, no sound collision with Angie, Delphi, Gem, Gale, Evie, or VeraPia- shortest option, weakest semantic hookPronouns stay
theyunless Kai says otherwise, preserving the existing tpm seat and consistent with the estate rule that a name is not a source for pronouns.Buildable specification, ready for platform
All four questions are answered. tpm becomes
Portfolio Directorwith seatPortia, on Kai's confirmation that Ward's full deprecation removes the director-lane collision this issue originally raised against it.Handing this to platform as a bounded buildable definition. Filed from eval, which defers
build-foundational-software:internal/person/datais executable configuration every seat's bundle consumes, so it sits past eval's scope of its own runners, probes, graders, and aggregation.Final roster
platform-Agentic Platform Engineer-Angie(she) - title onlysysadmin-Systems Administrator-Olaf(he) becomesVera(she) - seat onlyeval-Agent Evaluation EngineerbecomesEvaluation Engineer-Lucia(she) becomesEvie(she)frontend-Frontend Design EngineerbecomesDesign Engineer-Delphi(she) - title onlygamedev-Game Developer-Gale(they) - unchangedtpm-Technical Program ManagerbecomesPortfolio Director-Saiya(they) becomesPortia(they)devrel-Developer Advocate-Gem(they) - unchangedNo slug moves. No personality, boundary, model-tier, skill, or agent-list changes. Favorite colors and theme tokens derive from personalities rather than names, so
internal/palette/role-palette.txtand every palette-derived color stay byte-identical and the theme files need only their name string swapped.Source of truth, five files
internal/person/data/role-platform/role.kdl:3-display-nameinternal/person/data/role-frontend/role.kdl:3-display-nameinternal/person/data/role-eval/role.kdl:3-display-name, and:12-identityinternal/person/data/role-sysadmin/role.kdl:12-identity, both name and pronounsinternal/person/data/role-tpm/role.kdl:3-display-name, and:11-identityname only, pronouns staytheyDownstream in agent-compose
Role and boundary bodies, where a title names the owning role and a stale one makes the doctrine point at a role that no longer exists:
internal/person/data/role-eval/SKILL.md-:3frontmatter description,:6heading,:22internal/person/data/role-frontend/SKILL.md-:3,:6,:34internal/person/data/role-platform/SKILL.md-:3,:6internal/person/data/role-tpm/SKILL.md-:3,:6internal/person/data/role-devrel/SKILL.md-:25,:40,:41internal/person/data/role-gamedev/SKILL.md-:36internal/person/data/boundary-build-foundational-software/SKILL.md:3andboundary.kdl:1internal/person/data/boundary-seek-external-validation/SKILL.md:3andboundary.kdl:1Tests, which assert rendered names and will fail loudly rather than silently:
internal/compose/compose_test.go:460internal/statusline/subagent_test.go:120,138internal/schema/schema_test.go:155internal/nativelaunch/shortid_test.go:38,internal/nativelaunch/launch_test.go:305,306,363,365internal/roster/roster_test.go:184,186internal/overlay/overlay_test.go:49,50,52,53,77evalkit/tests/test_matrix.py:21,63,226Docs and examples:
README.md:48,49challenges.yaml:102,131docs/identity.md:84,102,docs/role-adjacency.md:9,docs/role-briefings.md:15,51,59,68,docs/eval-engineer.md:3,7,docs/claude-launch-identity.md:14,docs/overlay.md:45examples/claude-native-ui/settings.{platform,frontend,eval,sysadmin,tpm}.json:25examples/claude-native-ui/themes/aos-{platform,frontend,eval,sysadmin,tpm}.json:2Downstream outside agent-compose
coilyco-flight-deck/agentic-os-agent-terminal/brand_test.goat 118, 119, 122, 149, 153, 175, 180, 280 and its fixtureagent-terminal/testdata/tpm-overlay.jsonat 6, 10, 13. Thendocs/role-composed-skills.mdat 84, 86, 88, 89, 97, 99, 118 anddocs/FEATURES.md:31.coilyco-bridge/agentic-os-kai-docs/role-skill-coverage-audit.mdat 19, 24, 27, 31 anddocs/role-composed-skill-loading.md:42.coilyco-gaming/sirens-echo-internal/community/continuingwork_test.go:42andinternal/community/exceptions_test.go:208are seat names inside explanatory test comments, cosmetic only.Four judgement calls, not mechanical
docs/release.md:54,56,57records what the v3 release did, in the formengineer becomes platform, displayed as Developer Platform Engineer. That is a historical record and rewriting it makes it false. Leave those lines and add a new release entry for this pass.docs/role-composed-skills.md:117records thatExecutive Strategist merged into Technical Program Manager. Same reasoning, leave it.docs/identity.md:84uses Olaf as the live worked example of why seat renaming exists, in the sirens-echo case. That one is current behavior rather than history, so update it to Vera. Note the line also carries an em-dash against house voice, worth fixing on contact.sirens-echoagent/rendered/roles/exec.bundle.txtandai.bundle.txtstill carry the pre-v3 slugsexecandaialongsideSaiyaandLucia. They are rendered output that is already stale from the last rename, so regenerate them rather than hand-editing.Acceptance conditions
just testgreen, covering Go tests, palette tests, and the pre-commit suitejust buildgreeninternal/palette/role-palette.txtunchanged, proving no color driftgrep -rw -e Olaf -e Lucia -e Saiyaacross agent-compose returns nothing outside a marked historical recordgrep -rfor the four retired titles returns only the historical lines named in calls 1 and 2agentic-osandagentic-os-kailand their own doc and fixture updates, since fleet rollout is not authored hereNot in scope
agentic-os#1223and its roughly 169 stale prose sites are untouched by this pass. No slug moves, so this adds no new debt to it.Landed, from the platform seat
ae06747on agent-composemain, released green. The final roster from the buildable spec shipped unchanged.Acceptance conditions
just testgreen, covering Go tests, palette tests, and the pre-commit suitejust buildgreeninternal/palette/role-palette.txtuntouched, so no color driftgrep -rw -e Olaf -e Lucia -e Saiyaacross agent-compose returns nothinggrep -rfor the four retired titles returns only thedocs/release.mdv3 historyTwo things the spec's line list did not have
The tree had moved 13 commits since the audit, so two live sites were not on it:
internal/statusline/whoami_test.go(fourSaiyafixtures) andREADME.md:78-80. Both landed. Line-wrapped titles were the other trap:grep "Technical Program Manager"missesTechnical Program\nManager, and four sites wrapped mid-title.The release entry cost more than a paragraph
docs/release.mdwas already at exactly the 120-linedocumentation-layoutcap, anddocs/was at exactly the 40-doc cap for the large band. So splitting the roster history into its own page trades one violation for another, which is what the hook says in as many words. The entry landed inside the existing doc, paid for by compressing v2 prose that v3 already supersedes: the duplicated upgrade paragraph and two rewrapped bullet lists. The v2 and v3 destination records themselves keep the titles they were written against.The four judgement calls
docs/release.mdv3 destinations left as written, new entry added above them. Done.role-composed-skills.mdin this repo. Its agentic-os twin'sExecutive Strategist merged into Technical Program Managerline is left as written, along with the rest of that coverage-audit paragraph, which is one record rather than a line.docs/identity.md:84updated to Vera as current behavior, and the em-dash on that line fixed on contact.Downstream
coilyco-flight-deck/agentic-os- PR #1238, merged,maingreen. Composed-skill matrix, handoffs, the code-review FEATURES entry, and the agent-terminal brand fixtures.coilyco-bridge/agentic-os-kai-7bfd78eonmain. The coverage audit and the composed-skill loading page.coilyco-gaming/sirens-echo- PR #1154 open and blocked, with the two comment lines. Not blocked by its own diff.What sirens-echo turned up
Judgement call 4 read those bundles as stale rendered output. They are, but the cause is bigger than a rename:
scripts/stage-compose-sources.shtakes its role list from the installed agent-compose roster, and the dev-base image has now picked up a post-v3 agent-compose. So sirens-echomainhas been red onci / testandci / image-buildsince 2026-08-23, before this pass existed.Three breaks under one root, all verified in run 1602's logs: the tracked records are the pre-v3 nine against a post-v3 seven, every allowlist grants nothing (
role platform: 0 sources admitted, and the same for all seven, becauseroles.kdlkeys onengineerandcreator), andseat_identity()still matchesops, so theEcho (it)override never fires and thesysadminbundle bakes with the core seat instead. That override is the worked example in this repo's owndocs/identity.md.Regenerating now would produce a record that goes stale again the moment the image carries this release, so the fix waits for that image. Filed as
coilyco-gaming/sirens-echo#1155with the done condition.agentic-os#1223and its stale prose sites are untouched, and this pass added nothing to that debt.