attenu

Docs › attenu-derive › Three frameworks, live source: docs/A3-FRAMEWORKS.md · updated · markdown

A3 — framework breadth: CrewAI + LangGraph on a customer-domain workload

Closes the register/pack bound "every customer-domain app measured is Google ADK." Live enforce on the two non-ADK frameworks whose adapters were built but only exercised on code-analysis, now on a customer domain (travel booking) with real delegation and a held payment. Haiku. Raw runs reproducible via attenu_derive.sample.a3_crewai_enforce / a3_langgraph_enforce.

Setup (identical across frameworks)

A travel_planner delegates to a booking_agent coworker/sub-agent with three tools: search_flights, get_weather (both data.read, granted) and book_flight (payments.transfer, held requires_grant). Enforce mode: the framework's own adapter (CrewAIGuardBridge / GuardedDelegation middleware) with the derived authority; the shim's meet + ledger.

Results

framework delegation booker's granted calls book_flight (payments held) offline bundle verify
CrewAI (1.15) planner → booking_agent (Delegate-to-coworker fired) search_flights, get_weather ran (0 benign blocks) DENIED live (payments.transfer scope_not_granted) integrity / monotonicity / containment ✓
LangGraph (deepagents) planner → booking_agent (task sub-agent) search_flights, get_weather ran (0 benign blocks) DENIED live (payments.transfer scope_not_granted) integrity / monotonicity / containment ✓

No divergence across ADK (earlier), CrewAI and LangGraph: the granted reads pass, the held payment is denied at the tool call, and the exported bundle verifies offline. Enforcement is adapter mechanics over the shim's meet/ledger — it does not depend on the framework, as it does not depend on the model (Haiku ≡ Sonnet). T16/T17 on the new travel-booking domain: over-reach (payments/mail/write) blocked; 24×3 poisoned variants of the travel task produce 0 widening (tests/test_a3_frameworks.py).

Honest bound

These are configured crews/graphs in the travel domain, not scraped third-party apps: the open-source crewAI-examples target an old crewai/crewai_tools API (heavy RAG deps) and do not load on crewai 1.15, and real LangGraph apps are heterogeneous custom graphs. So what A3 proves is the enforcement adapters work on a non-ADK framework in a customer domain with real delegation and a held tier-2 tool — the framework mechanics, not a blind third-party app test. Onboarding a scraped third-party customer-domain app on either framework is a design-partner activity (a naive-operator onboarding number, per the G4 bound, is the same).