v0.2.0: Merge pull request #301 from matt82198/chore/state-refresh
Aesop 0.2.0
Multi-model orchestration portability shipped. AgentDriver Phase 1-3 enables orchestration to work with any backend: Claude Code (reference), OpenAI-compatible services (Ollama, OpenRouter, Hugging Face Inference, etc.), and extensible driver architecture for future backends. Verification safety auto-adapts to backend capability — weaker models get stronger safety checking without code changes. Multi-instance identity and lease-by-append coordination enable team-scale deployments on single-machine SQLite.
A source-available, portable orchestration harness for any coding-capable backend; durable git-backed state for team coordination; Haiku-first cost optimization; and transparent verification that adapts to driver capability.
What's New in 0.2.0
Multi-model driver abstraction:
- AgentDriver Phase 1-3 complete. Three production drivers ship: Claude Code reference adapter (full capability), OpenAI-compatible driver (Ollama, OpenRouter, local Hugging Face), and Phase 3 wave bridge for end-to-end task execution with verified-honest decisions.
- Backend configuration. Single
aesop.config.jsonfile configures model, base_url, and API key for any OpenAI-compatible backend; no code changes required. - Honest verification-tier system. Weaker backends automatically get higher verification (tier 2→tier 4); orchestrator probes backend capability at startup and adapts safety rigor transparently.
Team-scale coordination:
- Multi-instance identity & claims. Instance ID tagging (hostname:pid:nonce) and lease-by-append state mutations enable safe multi-writer coordination on shared git repo and SQLite without collisions.
- Cost-ceiling enforcement. Per-wave spend limit enforced at dispatch time; blocks work if budget exceeded, preventing runaway costs.
Observability and extensibility:
- Transcript-sampled benchmark Phase 1. Infrastructure extracts coding tasks from real Claude Code transcripts; benchmark grows dynamically beyond hand-written examples.
- Backend config & role resolution.
backend_config.pymaps per-deployment model roles (worker/setup/verify) without orchestrator changes.
What's Fixed Since 0.1.1
- Authorization header cross-origin stripping (PR #221): Blocks Authorization headers on cross-origin redirects to prevent credential leakage; security hardening.
- Secret-scan fail-closed on read errors (PR #226):
secret_scan.pynow fails CLOSED when unable to read files or git data, blocking pushes instead of silently passing. - Driver subsystem in npm package (PR #220): Multi-model AgentDriver backend abstraction now ships in the npm package.
- CI/publish Node version parity (PR #225): Unified Node.js version across CI and npm publish workflows for reproducible builds.
- Adversarial-review safety fixes (wave-32): Multiple orchestration loop hardening fixes identified and validated by external review.
Security & Hardening (Post-Release Fixes)
Hardening round integrated after release-artifact preparation (fe6bb04):
AI & Prompt Security:
- Codex prompt-injection hardening (fix/codex-prompt-injection, fix/codex-frame-integrity): JSON-wrapped framing to prevent prompt injection attacks in orchestration context; SHA-256 digest + retry nudge for frame integrity verification across API boundaries.
- Codex path containment (fix/codex-driver-path-containment): Cross-platform path normalization (Windows/Unix) with
resolve()+commonpath()to block directory traversal in task execution.
System & Daemon Hardening:
- Daemon fail-closed on lock errors (fix/daemons-lock-portability): Pre-push and coordination daemons now fail CLOSED on file-write errors or lock-acquisition timeouts, preventing silently-skipped enforcements; portability fixes for CONDUCTOR_ROOT.
- Cost-ceiling fail-closed (fix/cost_ceiling): Enforced at every dispatch gate on ALL backends: drivers reporting live token spend are metered directly; drivers that cannot observe per-instance spend (the Claude Code reference driver, by honest contract) return None and the ceiling reads the outcomes ledger itself with proper period windowing.
Data & Audit Security:
- Audit log JSON escaping (fix/audit-log-repo-escape): Escape repo_name and other fields in audit-log JSON to block injection attacks on durable audit trail.
- Audit-tail verdict fix (fix/audit-tail-verdict): Correct column index and validation whitelist in wave_audit_tail.py to prevent misclassified verdicts.
- Redaction-proof transcript hardening (verify_ui_trio.py): Single-source redaction patterns in transcript digest to ensure sensitive data is consistently masked across all observability paths.
Pre-Push & CI Hardening:
- Pre-push delete-refspec handling (fix/prepush-delete-refspecs): Enforce branch-protection on force-delete operations; empty-stdin handling to block stalled CI merge-waits.
Install
npx @matt82198/aesop my-fleet --name "my-orchestration" --repos "/path/to/coding/repo"Then configure your backend in aesop.config.json:
{
"backend": "openai-compatible",
"model": "mistral-small",
"base_url": "http://localhost:1234/v1",
"api_key_env": "OPENAI_API_KEY"
}Honest Limits
- Small-N benchmark. The Haiku≈Opus result in 0.1.0 was measured over 39 judgment tasks — directional for this workload, not universal. Benchmark grows with Phase 1 transcript sampling.
- Out-of-repo dispatch core. Orchestration loop runs via Claude Code and your operator workflow; this package ships harness, guardrails, dashboard, and tooling.
- Early 0.x. This is stable 0.2.0; APIs, config, and dashboard contracts may evolve across future 0.x versions. Pin exact version if you need stability.
- Single-box SQLite. State lives in git + local SQLite; multi-machine deployments use git as serializer with lease-by-append claims. Postgres/hosted control plane unscheduled.
- Driver extensibility proof. Three drivers (Claude Code, OpenAI-compatible, bridge) demonstrated end-to-end. Fourth-driver proof (local Ollama) not yet shipped; on roadmap.
See CHANGELOG.md for the full itemized list.
Aesop 0.1.1
Patch release for production adopters. Aesop 0.1.1 addresses first-hour blockers discovered
during 0.1.0 adoption and adds critical production observability: port-conflict detection,
doctor preflight validation, wave-dispatch performance fixes, OUTCOMES-LEDGER for fleet
analytics, gitignore-aware secret scanning, CI workflow linting, and the full aesop fleet CLI.
A source-available, self-building orchestration harness for Claude Code with a plain-file
"brain", git as the durable state layer, cheap Haiku-first subagent fleets, and guardrails
enforced in code.
What's in 0.1.1
First-hour fixes for early adopters:
- Port-conflict detection. CLI and doctor preflight now detect port-binding conflicts before
dashboard startup; helpful error messages point adopters to resolution steps. - Doctor preflight validation. New
aesop doctorsubcommand validates configuration, hooks,
state store health, and port availability before wave startup — a safety harness for first runs. - Git init + --no-git option. Scaffolder now supports
--no-gitflag for adopters integrating
into existing repos without re-initializing version control;git initin new repos works out of the box.
Production orchestration improvements:
- Wave-dispatch latency fixes. Template self-check parallelization, postBuild hooks, and
multi-testCmd batching provide faster feedback cycles on active waves. - OUTCOMES-LEDGER producer. Append-only ledger tracks per-wave execution outcomes (dispatch
time, duration, merge timing) for fleet analytics and historical trend analysis. - CI workflow linter. New
tools/ci_workflow_lint.pystatically validates GitHub Actions YAML (lockfile + suite-coverage checks)
(phase structure, job naming, cost-log artifacts); CI gate catches schema drift at merge time. - CI merge-wait fail-closed.
ci_merge_waittimeout now blocks dispatch instead of silently
passing — prevents merging while CI is still running.
Observability and production readiness:
- Gitignore-respecting secret scan.
secret_scan.pynow respects.gitignorepatterns;
skips ephemeral runtime files to reduce false positives and scan time on large repos. - Failure drilldown + cost analytics. Enhanced dashboard drill-down shows failure reasons,
cost metrics per model, per-day spend bar chart (pure SVG), and verdict scorecard. - Aesop fleet CLI. New
aesop fleetsubcommand suite for production fleet inspection: list
agents, query costs, export telemetry for monitoring and troubleshooting. - Transcript digest + domain-map linting. New tools for post-wave transcript summarization
and CLAUDE.md scope enforcement (3-line max per section).
Documentation and portability:
- ANY-REPO scaffolding. Aesop now deploys into any existing Node/Python repo; includes
setup guides, CONTRIBUTING.md, and GitHub community files (SECURITY.md, issue templates). - MCP cost tools. Read-only MCP server exposes cost-ledger and cost-ceiling for external
Claude integrations in monitoring dashboards.
See CHANGELOG.md for full details.