Without explicit transaction boundaries and queue-based collection, concurrent writes to SQLite will fail with `sqlite3.OperationalError: database is locked`. The repo's approach forces local serialization on DB I/O to sidestep SQLite’s broken concurrency. ADK doesn’t handle this: you need coordination or you’ll see lock errors and data loss. ## Inline Routing Chains Collide With Real-World Logic Changes Chaining agents inline—a common beginner move, e.g., `result = agent2(agent1(input))`—collapses when the routing requires dynamic selection, error retries, or any post-processing. This fragile spaghetti can’t absorb workflow changes. The repository’s router decouples the workflow from the agents. The core pattern: