
One System, Two Languages: The Five Constraints Behind Aristotle v1.6's Architecture
TL;DR: Five constraints shaped the Watchdog-Intervention Bridge’s cross-language architecture. Watchdog must intercept LLM tool calls synchronously, so it runs in TypeScript. Intervention must reuse the existing reflection engine and rule system, so it stays in Python. The Bridge adds zero new infrastructure, so it uses subprocess. Communication can’t block every tool call, so batching replaces real-time streaming. MCP’s subprocess model already handles failure, so cross-language risk stays contained. Each decision was the least bad option under the circumstances. ...