ACG Glossary¶
Bidirectional mapping between the Agentic Computation Graph (ACG) formalism (arXiv:2603.22386) and SynthOrg's architecture.
For the full evaluation including survey findings validation, structural credit assignment
design, and agent pruning recommendations, see
docs/research/acg-formalism-evaluation.md.
ACG to SynthOrg¶
Core Graph Concepts¶
| ACG Concept | SynthOrg Equivalent | Source | Fidelity | Notes |
|---|---|---|---|---|
| ACG Template | CompanyConfig + Company YAML / WorkflowDefinition |
core/company.py, config/schema.py |
Partial | ACG templates are graph-level (workflow topology). SynthOrg's YAML is org-level (agent roster, tool permissions, budget). WorkflowDefinition is the closer analogue for workflow templates. |
| Realised Graph | AgentContext + TaskExecution + CoordinationResult |
engine/context.py, engine/coordination/models.py |
Strong | The realised graph IS the running state: context, history, accumulated cost, current position. Multi-agent coordination adds CoordinationPhaseResult per phase. |
| Execution Trace | tuple[TurnRecord, ...] in ExecutionResult + observability events |
engine/loop_protocol.py, observability/events/ |
Strong | SynthOrg's trace is richer than ACG baseline: per-turn cost, token usage, tool fingerprints, stagnation signals, quality scores. numerous event constant domains (see observability/events/). |
| Nodes (atomic actions) | LLM calls (call_provider), tool invocations (execute_tool_calls), validation gates (check_budget, check_stagnation) |
engine/loop_helpers.py |
Partial | Node typing is implicit in loop control flow, not a first-class abstraction. There is no Node type; actions are identified by function names and turn records. |
| Edges (control/data flow) | SubtaskDefinition.dependencies DAG, DecompositionPlan.dependency_edges |
engine/decomposition/models.py |
Strong (multi-agent) | Edges are explicit in multi-agent decomposition (dependency DAG). Implicit in single-agent loops (sequential execution order, no formal edge representation). |
| Scheduling Policies | AutoLoopConfig + select_loop_type() + CoordinationConfig + AutoTopologyConfig |
engine/loop_selector.py, engine/routing/models.py |
Strong | Three-way loop selection (react/plan-execute/hybrid) and topology selection (SAS/centralised/decentralised/context-dependent) are scheduling policies. Budget-aware downgrade is a resource-constrained policy. |
Dynamic Behaviour Concepts¶
| ACG Concept | SynthOrg Equivalent | Source | Fidelity | Notes |
|---|---|---|---|---|
| Conditional branching | HybridLoop replan decisions, PlanExecuteLoop step completion | engine/hybrid_loop.py, engine/hybrid/step_helpers.py, engine/hybrid/replan_helpers.py |
Partial | Branching is embedded in loop logic (replan if step fails), not graph-level conditional edges. No formal "if node X succeeds, take edge Y" representation. |
| Parallel composition | ParallelExecutor, CoordinationWave, asyncio.TaskGroup |
engine/parallel.py, engine/coordination/models.py |
Strong | Parallel waves in coordination are first-class. ParallelExecutor handles concurrent subtask dispatch with fail_fast semantics. |
| Graph mutation | Hybrid replanning (attempt_replan), stagnation correction injection |
engine/hybrid/replan_helpers.py, engine/stagnation/ |
Partial | Replanning mutates the execution plan (new subtask list). Stagnation correction injects a new message. These are graph mutations but are not described in those terms. |
| Termination conditions | TerminationReason enum (7 values: COMPLETED, MAX_TURNS, BUDGET_EXHAUSTED, SHUTDOWN, PARKED, STAGNATION, ERROR) |
engine/loop_protocol.py |
Strong | Richer than typical ACG termination models. 7 named reasons provide precise signal for recovery and routing decisions. |
Resource and Cost Concepts¶
| ACG Concept | SynthOrg Equivalent | Source | Fidelity | Notes |
|---|---|---|---|---|
| Node cost | TurnRecord.cost per turn, TokenUsage per completion |
engine/loop_protocol.py, providers/models.py |
Strong | Per-turn cost tracking with provider breakdown. Accumulated over execution via ctx.accumulated_cost. |
| Resource constraints | BudgetEnforcer (3-layer), quota degradation, context budget |
budget/enforcer.py, engine/context_budget.py |
Strong | SynthOrg's resource model is more sophisticated than ACG: multi-layer enforcement, per-agent daily limits, context fill tracking, risk budget. |
| Quality-cost tradeoffs | Budget-aware loop downgrade (hybrid->plan_execute at 80%), model auto-downgrade, quota degradation strategies | engine/loop_selector.py, budget/enforcer.py |
Strong | Explicit tradeoff mechanisms with hard budget caps. Downgrade only at task boundaries (consistency guarantee). |
SynthOrg to ACG¶
Reverse lookup for readers starting from SynthOrg terminology.
| SynthOrg Concept | ACG Equivalent | Notes |
|---|---|---|
CompanyConfig / Company YAML |
ACG Template | Org-level; WorkflowDefinition maps more precisely to graph-level templates |
AgentContext + TaskExecution |
Realised Graph | Running state with full context |
TurnRecord tuple |
Execution Trace | Per-turn cost/token data exceeds ACG baseline |
| LLM calls, tool invocations, validation gates | Nodes | Implicit typing via function names, not a Node type |
SubtaskDefinition.dependencies |
Edges | Explicit in multi-agent DAG, implicit in single-agent |
AutoLoopConfig + select_loop_type() |
Scheduling Policies | 3-way loop + topology selection |
HybridLoop replan |
Conditional branching + Graph mutation | Embedded in loop logic |
ParallelExecutor, CoordinationWave |
Parallel composition | First-class with fail_fast |
TerminationReason (7 values) |
Termination conditions | Richer taxonomy |
BudgetEnforcer (3-layer) |
Resource constraints | Multi-layer enforcement exceeds ACG |
TurnRecord.cost, TokenUsage |
Node cost | Per-turn + per-completion |
| Budget-aware downgrade | Quality-cost tradeoffs | Task-boundary-only downgrade |
SynthOrg Extensions Beyond ACG¶
The following SynthOrg concepts have no equivalent in the ACG formalism:
| Concept | Module | Description |
|---|---|---|
| Progressive trust | security/trust/service.py |
Agent trust levels (RESTRICTED/STANDARD/ELEVATED) with mandatory human approval for promotion. |
| Personality and behavioural config | core/personality.py |
Big Five traits + behavioural enums affecting decision style. |
| Memory injection | memory/retrieval/ |
Episodic and procedural memory retrieval shaping context before execution. |
| Prompt profiles | engine/prompt/profiles.py |
Verbosity adaptation by model tier. |
| Autonomy levels | security/autonomy/resolver.py |
4 presets (full/semi/supervised/locked) with tool permission gating. |
ACG Concepts SynthOrg Handles Differently¶
Where fidelity is "Partial," SynthOrg implements the concept but through different abstractions than ACG prescribes:
-
Node typing: ACG defines explicit node types. SynthOrg's nodes are implicit in loop control flow; actions are identified by function names and turn records, not a
Nodetype. A lightweightNodeTypeenum (LLM_CALL, TOOL_INVOCATION, QUALITY_CHECK, etc.) onTurnRecordis a recommended future addition. -
Conditional branching: ACG uses graph-level conditional edges. SynthOrg embeds branching in loop logic (replan if step fails), without formal "if node X succeeds, take edge Y" representation.
-
Graph mutation: ACG describes runtime graph topology changes. SynthOrg's replanning and stagnation correction are functionally equivalent but are not described in graph mutation terms internally.