Skip to content

v0.2 — CLI backend, Allium dual-tier, pipeline resilience

Choose a tag to compare

@bhanneke bhanneke released this 14 May 19:36
· 170 commits to dev since this release

v0.2 — CLI backend, Allium dual-tier, pipeline resilience

Second milestone release of E2ER v3. The big themes:

Zero-cost LLM backend

A third LLM backend, claude_code, shells out to the claude CLI subprocess and runs at $0/token under a Max plan. Eight live runs were used to flush out CLI-mode-specific bugs (tool-name translation between SDK and CLI, workspace-as-cwd, subprocess env injection, tool-call counting). All three backends — anthropic, openrouter, claude_code — now go through the same tool_loop() interface.

Allium data layer: two providers

  • AlliumProvider (src/modules/data/allium.py): SQL Explorer client using Allium's 4-step async API (/explorer/queriesrun-asyncquery-runs/{rid}/statusquery-runs/{rid}/results). 429 retries on every step. INFORMATION_SCHEMA-based list_tables, describe_table, distinct_values discovery primitives.

  • AlliumDeveloperProvider (src/modules/data/allium_developer.py, new this release): REST client for Allium's Developer-tier endpoints — /tokens/transfers, /wallet/transactions, /wallet/balances/history, /prices/history, /prices. Works on accounts that don't have Explorer SQL access. Module-level request pacing (0.5s minimum spacing) plus 60s 429-retry budget per call.

Same e2er-allium-query bash wrapper exposes both providers as subcommands, and the same Bash(e2er-allium-query:*) allow-list pattern governs CLI access. No bare Bash is allowed.

Pipeline resilience

  • Cascade detection: if a specialist "succeeds" but doesn't write its canonical artifact, the pipeline halts before downstream specialists run on missing inputs.
  • Atomic state save with .bak fallback.
  • Transient Anthropic API errors (429/500/502/503/504/529 inside CLI subprocess output) now retry with 5s + 15s backoff instead of failing the pipeline.
  • 221 tests passing, including 18+ resilience tests.

Specialist system

  • New theory_specialist ported from v2 with a methodology selector (empirical / theoretical / mixed).
  • _MAX_TURNS bumped to 80 for data-heavy phases.
  • Review aggregator parser handles four reviewer output formats, reads scores from disk first (not chat summary).

GitHub adoption polish

  • CI on Python 3.11 and 3.12 (ruff, mypy, pytest) with branch protection.
  • Bearer-token auth on write endpoints, restricted CORS, scrubbed errors.
  • First-run cost guardrail ($1 cap unless acknowledge_unproven_tuple=true).
  • mypy in CI, pre-commit hooks, CHANGELOG, SECURITY.md, troubleshooting docs.

Acknowledgments

Built and live-validated through ~17 paper runs covering theoretical and empirical research designs. The Allium Developer-tier provider was added after a real research session where the SQL Explorer tier turned out to be unavailable on the test key; the pipeline now demonstrably runs end-to-end on either tier.