Product path
Default — Research → Synthesis
Fixed two-step governed chain. Goal in, protocol brief out. Atomize is skipped; the plan is the template; executors are registry cards; synthesize is the aggregator.
implemented · research-synthesis
Architecture note
Conceptual mapping of Recursive Open Meta-Agents onto this platform. Documentation only — no recursive runtime, no new workflow entry point. Version 1.0.0.
Product path
Fixed two-step governed chain. Goal in, protocol brief out. Atomize is skipped; the plan is the template; executors are registry cards; synthesize is the aggregator.
implemented · research-synthesis
Future
Optional later mode: atomize → plan a requirement DAG → execute via the same registry selection → aggregate. Not a replacement for the default product path. No entry point exists in this version.
not implemented · roma-recursive
ROMA roles attach to components that already exist. They do not introduce a second orchestrator.
| ROMA role | Platform mapping | Status |
|---|---|---|
Atomizer atomizer | Orchestrator planning decision (atomic vs composite) Would decide whether a goal is a single governed task or a composite graph. Today that decision is implicit: Research → Synthesis is always a two-step chain. No atomizer runtime is invoked. | mapped |
Planner planner | Orchestrator plan generation and/or a planner-capable Agent Card Would emit a DAG of capability requirements (not agent IDs). Today the plan is the Research → Synthesis template: research then synthesize. A planner card may exist later; it must not select executors. | mapped |
Executor executor | Registered Agent Cards selected by capability The executor pool is the Agent Card registry. Selection uses current hard filters (active, capability, endpoint, privacy, MCP tool policy), then scoring. literature-research and protocol-synthesis are the default research and synthesis executors. | mapped |
Aggregator aggregator | Synthesis-capable agents / aggregation step Today this is the synthesize step (requirements synthesis, briefing) and parallel aggregation when mode is synthesize. protocol-synthesis is the preferred specialist. Nested aggregation loops are out of scope. | mapped |
Verifier verifier | Policy, unified audit, or a dedicated verifier Agent Card Optional future role. Current stand-ins are MCP tool policy, privacy filters, and the unified audit trail. No verifier agent is required for the default path. | future |
Executors in any future ROMA-style tree must be selected from the existing Agent Card registry using the current hard filters, scoring, privacy, and MCP tool policy. The planner proposes requirements; it does not pick agent IDs.
Default executors stay literature-research.agent for research and protocol-synthesis.agent for synthesis, when both are active and privacy-compatible.
Placeholders only. This phase does not add audit event types. Reuse the unified 1.0 envelope when a recursive runtime lands.
correlation.nodeId + parentNodeId
Hierarchical parent–child links in a future task tree
correlation.nodeId exists on DAG events; parentNodeId is not written
plan → execute → aggregate sequence
Ordered ROMA stages on one run
CHAIN_STEP_* / WORKFLOW_* cover the two-step chain; no ATOMIZED / PLANNED / AGGREGATED types
subject.id + subject.version
Preserve agentId@version on every executor step
Already recorded on SELECTED, RESULT_RECEIVED, and workflow step views
correlation.chainId | dagId | parallelId | stepId | branchId
Join executor work back to the parent graph
Present on the unified 1.0 envelope; reuse rather than invent a parallel id scheme
Source of truth for this note.
{
"$schema": "https://agentcard.schema/roma-role-mapping.v1",
"id": "roma.role-mapping.v1",
"title": "ROMA Role Mapping v1",
"version": "1.0.0",
"defaultMode": "research-synthesis",
"advancedMode": "roma-recursive",
"advancedImplemented": false,
"executorRule": "Executors in any future ROMA-style tree must be selected from the existing Agent Card registry using the current hard filters, scoring, privacy, and MCP tool policy. The planner proposes requirements; it does not pick agent IDs.",
"roles": [
{
"role": "atomizer",
"title": "Atomizer",
"platform": "Orchestrator planning decision (atomic vs composite)",
"detail": "Would decide whether a goal is a single governed task or a composite graph. Today that decision is implicit: Research → Synthesis is always a two-step chain. No atomizer runtime is invoked.",
"status": "mapped"
},
{
"role": "planner",
"title": "Planner",
"platform": "Orchestrator plan generation and/or a planner-capable Agent Card",
"detail": "Would emit a DAG of capability requirements (not agent IDs). Today the plan is the Research → Synthesis template: research then synthesize. A planner card may exist later; it must not select executors.",
"status": "mapped"
},
{
"role": "executor",
"title": "Executor",
"platform": "Registered Agent Cards selected by capability",
"detail": "The executor pool is the Agent Card registry. Selection uses current hard filters (active, capability, endpoint, privacy, MCP tool policy), then scoring. literature-research and protocol-synthesis are the default research and synthesis executors.",
"status": "mapped"
},
{
"role": "aggregator",
"title": "Aggregator",
"platform": "Synthesis-capable agents / aggregation step",
"detail": "Today this is the synthesize step (requirements synthesis, briefing) and parallel aggregation when mode is synthesize. protocol-synthesis is the preferred specialist. Nested aggregation loops are out of scope.",
"status": "mapped"
},
{
"role": "verifier",
"title": "Verifier",
"platform": "Policy, unified audit, or a dedicated verifier Agent Card",
"detail": "Optional future role. Current stand-ins are MCP tool policy, privacy filters, and the unified audit trail. No verifier agent is required for the default path.",
"status": "future"
}
],
"modes": [
{
"id": "research-synthesis",
"title": "Default — Research → Synthesis",
"product": "default",
"implemented": true,
"summary": "Fixed two-step governed chain. Goal in, protocol brief out. Atomize is skipped; the plan is the template; executors are registry cards; synthesize is the aggregator."
},
{
"id": "roma-recursive",
"title": "Advanced — ROMA recursive (future)",
"product": "advanced-future",
"implemented": false,
"summary": "Optional later mode: atomize → plan a requirement DAG → execute via the same registry selection → aggregate. Not a replacement for the default product path. No entry point exists in this version."
}
],
"auditPlaceholders": [
{
"field": "correlation.nodeId + parentNodeId",
"purpose": "Hierarchical parent–child links in a future task tree",
"today": "correlation.nodeId exists on DAG events; parentNodeId is not written"
},
{
"field": "plan → execute → aggregate sequence",
"purpose": "Ordered ROMA stages on one run",
"today": "CHAIN_STEP_* / WORKFLOW_* cover the two-step chain; no ATOMIZED / PLANNED / AGGREGATED types"
},
{
"field": "subject.id + subject.version",
"purpose": "Preserve agentId@version on every executor step",
"today": "Already recorded on SELECTED, RESULT_RECEIVED, and workflow step views"
},
{
"field": "correlation.chainId | dagId | parallelId | stepId | branchId",
"purpose": "Join executor work back to the parent graph",
"today": "Present on the unified 1.0 envelope; reuse rather than invent a parallel id scheme"
}
],
"nonGoals": [
"Recursive task tree runtime",
"Automatic goal decomposition",
"Nested aggregation loops",
"New workflow entry points (no submitRoma)",
"Changes to Research → Synthesis defaults",
"New audit event types in this phase",
"Trust learning or live MCP runtime",
"Scoring or privacy-filter changes"
]
}Product path stays Research → Synthesis. Generic compose remains on Orchestrate.