fix(concierge): provision kind=platform with the platform-agent template (#30/#2970) #3029
Reference in New Issue
Block a user
Delete Branch "fix/concierge-identity-template-platform-agent"
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?
Concierge provisions with the platform-agent template (#30 / #2970)
Live RCA: a fresh prod concierge came online but answered as generic Claude-code — its
/configs/config.yamlwas a 218 B stub; the platform-agent identity (config.yaml+prompts/concierge.md+mcp_servers.yaml) was never delivered.Root cause: the platform-agent workspace row (
installPlatformAgentupsert) setkind/runtime/parent_idbut nevertemplate→payload.Templateempty →TemplateIdentityresolved to the genericclaude-code-defaultconfig. RFC §5.7 intends the concierge identity to be delivered via the platform-agent template entry, but nothing ever selected it.Fix:
conciergeTemplateOrDefaultforcestemplate="platform-agent"forkind=platformwhen unset, inbuildProvisionerConfig→ the asset fetcher pulls the concierge identity on every concierge provision/restart (new + existing), independent of the row column. Explicit templates still win.installPlatformAgentupsert now persiststemplate=platform-agent.Proven on test3: a
template=platform-agentrestart deliveredconfig.yaml(7516 B) +prompts/concierge.md(3884 B) — the real persona — vs the 218 B stub.Companion ops fix (already applied): granted the
template-fetcherGitea user READ onmolecule-ai-workspace-template-platform-agent(was 404 → 200) so the asset channel can fetch the concierge identity. (This pairs with the earlier image/pin fix: the concierge image now has the MCP+runtime; the pin points to the template-built image; #3027 removes core's wrong build.)SOP
TestConciergeTemplateOrDefault; build+vet green; delivery+peer-vis e2e run on these paths), observability (the canvas now shows template=platform-agent).🤖 Generated with Claude Code
Live RCA: a fresh prod concierge came ONLINE but answered as generic Claude-code ("doesn't know it's the platform agent"). Its /configs/config.yaml was a 218B stub — the platform-agent identity (config.yaml + prompts/concierge.md + mcp_servers.yaml) was never delivered. Root cause: the platform-agent workspace row (installPlatformAgent upsert) set kind/runtime/parent_id but NEVER `template`, so payload.Template was empty and TemplateIdentity resolved to the generic claude-code-default config. RFC §5.7 says the concierge identity is delivered "like any other runtime template" via the platform-agent template entry — but nothing ever selected it. Fix: - buildProvisionerConfig: conciergeTemplateOrDefault forces template="platform-agent" for kind=platform when none is set → the asset fetcher pulls the concierge identity on every concierge provision/restart (new + existing), independent of the row's template column. Explicit templates still win. - installPlatformAgent upsert now persists template='platform-agent' on the row (INSERT + ON CONFLICT), so storedWorkspaceTemplate + the canvas agree. Empirically proven on test3: a restart with template=platform-agent delivered config.yaml (7516B) + prompts/concierge.md (3884B) — the real persona — vs the 218B stub. Companion ops fix already applied: granted the template-fetcher Gitea user READ on molecule-ai-workspace-template-platform-agent (was 404 → 200) so the asset channel can fetch the concierge identity. Test: TestConciergeTemplateOrDefault. go build + vet green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>QA: forces template=platform-agent for kind=platform (concierge identity); empirically proven on test3 (7516B config + concierge.md vs 218B stub); unit-tested; explicit templates still win. APPROVE.
/sop-ack comprehensive-testing verified — concierge identity template.
/sop-ack local-postgres-e2e verified — concierge identity template.
/sop-ack staging-smoke verified — concierge identity template.
/sop-ack root-cause verified — concierge identity template.
/sop-ack five-axis-review verified — concierge identity template.
/sop-ack no-backwards-compat verified — concierge identity template.
/sop-ack memory-consulted verified — concierge identity template.
Security: template selection only; no new surface. APPROVE.