Skip to the content.

Track D — Agent Framework Parity (epic #304) — status tracker

Umbrella tracker for #304“N=100+ benchmarks, LangChain/AutoGen/CrewAI integration, workflow orchestration.”

#304 is a pure roll-up: it closes only when all 8 children close. This doc does not claim the epic is done — it records the honest on-disk state of each child so an operator (or the next agent) can see exactly what shipped, what is wire-supported but acceptance-open, what is a scaffold tracked by a sibling epic, and what is not built at all. House rule: every number comes from a real run. The one benchmark child’s published table is deferred to a bench node and says so plainly; no token/throughput figure is invented here. Written 2026-06-25 on a win32 dev box (no live-model bench node, no LangGraph/AutoGen/CrewAI install reachable from this host).

Updated 2026-06-26: D-007 (#241) regraded — its RFC shipped (docs/multi-agent-coordination-protocol.md, commit 4d0392e), binding three race/contract-tested pillars; the issue’s stated acceptance is now met in-process. See §1 (row D-007), §3, and §4. No other child’s status changed.


The migrated epic body (#304) lists its children as #314, #316, #319, #321, #324, #326, #328, #331. Those numbers are wrong — they are pre-migration internal-tracker ids that GitHub renumbered on import, and every one now points at an unrelated issue (e.g. #314 is a closed examples: auth-hardening walkthrough, #328 is a closed examples: operator observability walkthrough, #326 is a serve(gateway) error-envelope issue). The epic’s note “cross-references are auto-maintained” is therefore not holding for this epic. The real children — the issues actually tagged track/D-agent-framework with a D-00x slug — are:

Slug Live issue Priority Title Epic body shows (WRONG)
D-001 #255 P0 N=100-1000 Agent Benchmark #314
D-002 #253 P1 LangChain/LangGraph Integration (CLOSED) #316
D-003 #250 P1 CrewAI Pattern Support #319
D-004 #248 P1 AutoGen Integration #321
D-005 #245 P2 Workflow Orchestration Layer #324
D-006 #243 P2 Tool Ecosystem Expansion #326
D-007 #241 P2 Multi-Agent Coordination Protocol #328
D-008 #238 P2 Agent Testing Framework #331

The children’s own migrated bodies still cite the internal epic id “Epic #264”; the live GitHub umbrella is #304. Both refer to the same Track D.

This doc keys everything off the live numbers above.

Operator action (the one GitHub-side fix): for #304’s “closes when all children close” mechanism to actually fire, repoint the epic body’s checkbox list from the stale ids to the live ones — #314→#255, #316→#253, #319→#250, #321→#248, #324→#245, #326→#243, #328→#241, #331→#238. Until then the epic tracks eight unrelated (and partly closed) issues and will never auto-close from its children. This in-repo tracker is the authoritative map in the meantime.


1. Honest status — each child, verified against the working tree (2026-06-25)

Status is read from the tree + git log, not from any worker’s say-so. “Scaffold” means a host-correct, test-witnessed implementation whose published acceptance is a run deferred to a bench node. “Wire-supported” means the framework already reaches fak by repointing its OpenAI base URL (the kernel’s intended integration shape), but the issue’s bespoke adapter / example / benchmark acceptance is not yet built.

Slug · issue On-disk state What is real today Deciding file(s)
D-001 #255 benchmark (P0) 🟡 Scaffold shipped; published run bench-node-gated A host-runnable N=1/100/500/1000 fan-out scale harness (N≥1024 capable) that computes coordination-overhead-vs-N=1 and cross-agent-reuse-uplift deterministically (turnbench is in-process kernel arithmetic, not model calls), wrapping the already-witnessed fan-out engine. cmd/fanbench --grid canonical now emits the exact D-001 ladder as a user-facing command path. CPU smoke green (go test ./internal/bench -run FanScaleok). The published HEADLINE — live-model wall-clock + the LangGraph/AutoGen/CrewAI comparison + the results table — is explicitly deferred to a bench node (DeferredRun), not fabricated here. internal/bench/fanscale.go · internal/bench/fanscale_test.go · internal/turnbench/fanout.go · cmd/fanbench/main.go
D-002 #253 LangChain/LangGraph (P1) 🟢 CLOSED — works by wire repoint LangChain (ChatOpenAI) and LangGraph (via its underlying LangChain chat model) reach the fak gateway by setting base_url to fak’s OpenAI-compatible endpoint — documented and marked supported in the compatibility matrix (rows 58-59). fak’s intended integration shape is “repoint the base URL,” so no bespoke adapter is required. The only closed child. docs/integrations/compatibility-matrix.md · docs/integrations/README.md
D-003 #250 CrewAI (P1) 🟢 Host-tractable acceptance shipped; live-model wall-clock folded into D-001 CrewAI’s LLM(base_url=...) (routed through LiteLLM) reaches the gateway today (matrix row 61, “Yes”). A runnable, dependency-free example crew (examples/crewai-crew/) now demonstrates the manager-worker pattern: governance over every worker tool call (verdicts match fak preflight) and the manager-role coordination-overhead reduction, documented with a deterministic performance model (modeled 4.93× prefill reduction at the illustrative geometry). The only open piece — the live-model CrewAI-vs-native wall-clock — is the deferred bench-node run owned by D-001 (#255), not asserted here. examples/crewai-crew/ · docs/integrations/compatibility-matrix.md (row 61)
D-004 #248 AutoGen (P1) 🟢 Host-tractable acceptance shipped; live-model wall-clock folded into D-001 AutoGen v0.4 OpenAIChatCompletionClient(base_url=...) reaches the gateway today (matrix row 62, “Yes”). A runnable, dependency-free example group chat (examples/autogen-groupchat/) now demonstrates the multi-agent pattern: governance over every agent tool call and speaker hand-off (verdicts match fak preflight) and conversation-state preservation through the shared transcript, documented with a deterministic performance model (modeled 7.67× prefill reduction at the illustrative geometry). The only open piece — the live-model AutoGen-vs-native wall-clock — is the deferred bench-node run owned by D-001 (#255), not asserted here. examples/autogen-groupchat/ · docs/integrations/compatibility-matrix.md (row 62)
D-005 #245 Workflow Orchestration (P2) 🔴 Not implemented No workflow DSL (YAML/JSON), no DAG execution engine, no built-in map-reduce / fan-out product layer. The fan-out topology in turnbench/fanbench is the D-001 benchmark harness, not a user-facing orchestration layer. Design-only. — (none)
D-006 #243 Tool Ecosystem (P2) 🔴 Not implemented No built-in 20+ tool library (filesystem/HTTP/DB connectors). fak’s architecture gates the agent’s existing tools (deny-by-structure / repair / quarantine); it is not a tool provider — so this child is partly an architecture-fit question, not just unbuilt code. Design-only. — (none)
D-007 #241 Coordination Protocol (P2) 🟢 RFC + message/coordination pillars shipped & tested; shared-state contract + fixtures shipped, its runtime fold the named next rung Three of the four #241 acceptance items map to a shipped, race/contract-tested artifact, bound under one normative spec; the shared-state rung ships as data (contract + schemas + fixtures): message passing = internal/a2achan (Send/Recv/TryRecv + Publish/Subscribe over a fail-closed capability floor); shared KV/cache space = the shared-task record contract + tools/schemas/shared-*.json + examples/shared-task-record/ fixtures (the scoped, taint-tracked, patch-merged record spec, self-validating as data), with the internal/sharedtask runtime fold the named next rung (not yet wired); coordination primitives = internal/comm collectives + internal/agenttopo declared topology DAG; RFC/spec = the Multi-Agent Coordination Protocol RFC. Honest scope (RFC §7): the InKernel message locale + every collective ship in-process; durable cross-process delivery (a session-image-backed Session/Window mailbox that survives a process boundary) is the named next rung, tracked under sibling epic #639. docs/multi-agent-coordination-protocol.md · internal/a2achan · shared-task-record-contract.md · examples/shared-task-record/ · internal/comm/comm.go · internal/agenttopo
D-008 #238 Testing Framework (P2) 🟡 Partial — internal harness; public API not shipped Deterministic seeded agent-session generation + fixture-based scoring (turnbench), plus a transcript corpus + the trajectory-replay substrate (epic #498). No public assertion library, mock-tool-response API, or reproduce-from-transcript CLI yet. internal/turnbench/ · examples/trajectory

Legend: 🟢 done · 🟡 partial (scaffold / wire-supported / sibling-epic) · 🔴 not implemented.

Roll-up: 1 / 8 children closed (#253). Of the 7 open: 1 is a scaffold whose published run is bench-node-gated (D-001); D-003 (CrewAI), D-004 (AutoGen), and D-007 (Coordination Protocol) have all shipped their host-tractable acceptance — D-003/D-004 a dependency-free example + a deterministic performance model (live-model wall-clock folded into the D-001 deferred run), and D-007 the RFC + three race/contract-tested pillars in-process (durable cross-process delivery is the named next rung under sibling epic #639); 1 is a partial scaffold whose public surface is tracked by a separate epic (D-008→#498); and 2 are unimplemented features (D-005, D-006). So #304 stays OPEN — correctly (its published headline run is still deferred, and the regraded children remain GitHub-open pending their last gate).


2. The gate — why #304 cannot honestly close here

The seven open acceptance gates fall into four classes, and none is reachable on this host:

  1. Bench-node-gated published run (D-001). The acceptance includes “Published results” and a LangGraph/AutoGen/CrewAI comparison — a live-model wall-clock sweep with the three frameworks installed. The harness is shipped and host-runnable (the deterministic geometry runs even at N=1000) and its smoke is green, but this win32 dev box has no live-model bench node and no framework install. Per BENCHMARK-AUTHORITY rules the published table stays a deferred DeferredRun; no throughput number is asserted here.

  2. Genuinely unimplemented features (D-005 workflow DSL, D-006 tool library). These are not “scaffold + gated” — there is no implementation to measure. Each is a days-of-engineering leaf (a DAG execution engine; a 20+ tool library with safety annotations), and D-006 is also an architecture-fit question (fak gates tools rather than shipping them).

  3. Live-model wall-clock gap (D-003 CrewAI, D-004 AutoGen). Both frameworks reach fak by wire repoint, and both now ship a dependency-free worked example (examples/crewai-crew/, examples/autogen-groupchat/) with a deterministic performance model. The remaining piece for each — the live-model framework-vs-native wall-clock — is the deferred bench-node run owned by D-001 (#255), not a host-tractable change here.

  4. Scaffold whose public surface is a sibling epic (D-008). The turnbench/trajectory harness exists, but the public testing API (epic #498) is tracked elsewhere and unshipped. (D-007 was in this class until 2026-06-26: its protocol RFC is now shipped — docs/multi-agent-coordination-protocol.md — binding a2achan / sharedtask / comm+agenttopo; only the durable cross-process rung remains, under #639.)

The single honest gate, stated plainly: epic #304 closes only when all 8 children meet their acceptance on GitHub, and 7 remain open — spanning a deferred bench-node run (D-001), two unbuilt features (D-005, D-006), two wire-supported integrations whose live-model wall-clock is bench-node-gated (D-003, D-004), one child whose stated acceptance is now met in-process but which stays open pending its durable next rung (D-007), and one scaffold whose public surface is tracked by a separate epic (D-008). No code or doc change on this host can flip those bits without fabricating a benchmark number or shipping multi-day features — which the repo’s witness ledger and make claims-lint would reject. So the correct deliverable is this tracker, not a closed epic.


3. Smallest next step per child (for the agent that picks one up)

Child Smallest honest next step Where it runs
D-001 #255 Stand up the headline run: install LangGraph/AutoGen/CrewAI on a bench node, run fanbench at N=100/500/1000 with a live model, record coordination-overhead + cross-agent-reuse vs the frameworks, publish the table a live-model bench node
D-002 #253 Done (closed). Optional: add a 3-workflow LangChain/LangGraph migration guide to harden the closure narrative host-tractable (docs)
D-003 #250 Shipped (examples/crewai-crew/): example crew + manager-role coordination-reduction doc + deterministic performance model. Remaining: the live-model CrewAI-vs-native wall-clock, owned by D-001 (#255) a live-model bench node (wall-clock only)
D-004 #248 Shipped (examples/autogen-groupchat/): example group chat + conversation-state-preservation model + deterministic performance model. Remaining: the live-model AutoGen-vs-native wall-clock, owned by D-001 (#255) a live-model bench node (wall-clock only)
D-005 #245 Spec a workflow DSL (YAML) + a map-reduce/fan-out/DAG executor as a new_leaf package; CPU-correct first, then fault tolerance host-tractable
D-006 #243 Decide the architecture fit first (does fak ship tools, or only gate them?); if shipping, add filesystem read/write/glob with safety annotations as the first leaf host-tractable
D-007 #241 Shipped (RFC docs/multi-agent-coordination-protocol.md + a2achan / sharedtask / comm+agenttopo, all race/contract-tested). Remaining: the durable cross-process rung — a session-image-backed Session/Window mailbox so a handoff survives a process boundary — tracked under sibling epic #639 host-tractable (next rung)
D-008 #238 Expose the turnbench fixture/scoring harness as a public assertion + mock-tool-response API; add reproduce-from-transcript over the trajectory corpus (epic #498) host-tractable

4. Provenance

5. See also