Skip to content

Latest commit

 

History

History
167 lines (115 loc) · 10.1 KB

phases.md

File metadata and controls

167 lines (115 loc) · 10.1 KB

Ateles Implementation Phases

Mirror of Neotoma plan ent_99ace4dd6673aa36ed08b1fe, field phases_markdown. Do not edit this file directly — correct the plan field in Neotoma, then regenerate with python3 execution/scripts/render_plan_docs.py (use --check to verify disk matches Neotoma).

Purpose

Tracks the Ateles implementation roadmap across ten phases from initial scaffolding (Phase 0) to full swarm operational status (Phase 9). Serves as the public mirror of the Neotoma plan entity.

Scope

Covers Phase 0–9 goals and task checklists. Each phase has a defined goal and a list of deliverables. Deferred items (not scheduled to any phase) are listed at the end. For agent details see taxonomy.md; for design rationale see architecture.md.


Phase 0 — Foundations ✅

Goal: Public repo exists, taxonomy documented, env vars renamed, daemon code clean.

  • Create markmhendrickson/ateles public repo
  • Write docs/taxonomy.md canonical agent table
  • Write docs/architecture.md system design
  • Refactor Monedula handlers: therapy.py + yoga.py → generic WiseTransferHandler + BtcTransferHandler + PaymentProfile (env-var driven, no PII in public code)
  • Rename TELEGRAM_TOPIC_PAYMENTS → TELEGRAM_TOPIC_MONEDULA (legacy alias kept)
  • Create markmhendrickson/ateles-private private repo
  • Write .env.example with all required env var names (no values)
  • Rename Strix daemon (mic recorder) in codebase

Phase 1 — Schema + identity ✅

Goal: Neotoma has agent_definition entity type; first AAuth identities minted; lib/notify/ and lib/daemon_runtime/ scaffolded.

  • Neotoma: register agent_definition entity type with prompt_markdown, allowed_tools, agent_grant, override_policy fields
  • Neotoma PR: src/services/override_validation.ts — enforce override_policy at write time (PR #398)
  • Create agent_definition entities for Ateles, Monedula, neotoma-agent, Formica, Menura in Neotoma
  • Mint AAuth keypairs for Ateles, Monedula, Formica, neotoma-agent (stored in ateles-private/keys/)
  • lib/notify/ — Apprise wrapper + priority_rubric loader (notifier.py ~130 LOC)
  • lib/daemon_runtime/ — SSE subscription + agent_definition loader + AAuth signer (3 modules ~250 LOC)
  • Create priority_rubric entity in Neotoma (ent_29ca079940c1e996a8c782f2)
  • neotoma-agent daemon: Python, neotoma-repo automation skeleton

Phase 2 — Mirror system + Ateles migration

Goal: Neotoma → git mirror pipeline live; Ateles config migrated to Neotoma.

  • Apus daemon: HTTPS webhook receiver (~200 LOC)
  • Neotoma webhook subscription registered (subscription ID 7ce524e4, entity ent_6ba1914462908f682f206b56)
  • Apus env vars wired into installed plist (~/Library/LaunchAgents/com.ateles.apus.plist)
  • Migrate Ateles SOUL.md → prompt_markdown field in agent_definition entity
  • Neotoma CLI mirror profile configured for SKILL.md generation
  • Cloudflare Tunnel at apus.markmhendrickson.com (was ateles#17)
  • Apus: handle all four mirror profiles; commit via ateles-agent GitHub identity; log delivery status to Neotoma (blocked on ateles-agent machine account)
  • OpenClaw PR: workspace-neotoma.ts with file→API fallback chain (branch pushed; PR pending)
  • Anthus daemon: swarm coordinator — SSE-driven workflow dispatch (Tier 2–5 smoke test validation in flight, see swarm_smoke_test_plan.md)
  • Tyto daemon: screenshot watcher + meeting-recording transcription, running under launchd

Phase 3 — Public agents + Phase 1 hardening

Goal: Menura live at markmhendrickson.com/agent/; all Phase 1 daemons using lib/daemon_runtime/.

  • Formica: Python rewrite using lib/daemon_runtime/ (core rewrite done — ateles#1 tracks final production wire-up)
  • agent_definition_override entity type: registered schema in Neotoma (schema ID 308d67b1); enforcement via PR #398
  • Lanius (GitHub workflow coordinator): GHA cron + workflow_definition schema landed
  • All daemons using lib/notify/ for notifications
  • Menura: separate OpenClaw instance, public-scoped AAuth identity, live at markmhendrickson.com/agent/
  • Loxia: GHA-invoked baseline PR reviewer on every PR, with per-domain specialist fan-out (Monedula on finance paths, Gorilla on health paths)
  • Temporal evaluation: adopt only if a daemon crash causes lost in-flight state that demonstrably hurts operations; Inngest as fallback
  • neotoma-agent: due-date hygiene T4 skill — fires on task entity creation to add due dates and domain tags

Phase 4 — Apis + task automation

Goal: Apis replaces Monedula's task scope; payment profiles migrate to Neotoma entities.

  • Apis daemon: universal task dispatcher with confidence × blast-radius execution gate, checkpoint resolution loop, and A2A inbound gateway
  • payment_profile entity type in Neotoma (visibility=private); Monedula loads profiles from Neotoma
  • Turdus daemon: Gmail triage → Neotoma entities + tasks for Apis; invoice detection routed to Monedula

Phase 5 — Full agent_definition coverage + AAuth activation

Goal: All daemons have populated agent_definition entities; AAuth fully active for all running daemons.

  • All 12 product-panel agent_definition entities populated with prompt_markdown, context_entity_types, operational_entity_types, allowed_tools
  • participation_record, agent_action_observation, agent_policy schemas registered (ateles#16 — implementation ongoing)
  • Strategy hierarchy schemas registered (business_strategy, domain_strategy, agent_strategy, strategy_drift_signal)
  • agent_grant entities provisioned for Cicada and Vanellus
  • agent_grant entities for all remaining daemons: Apus, Formica, Monedula, neotoma-agent, Ateles, Anthus
  • All daemon public keys published to JWKS endpoint (today only sw-cursor-1 published)
  • Per-entity-type grant tightening — convert * grants to allowlists derived from context_entity_types + operational_entity_types
  • Quarterly AAuth keypair rotation via neotoma-agent
  • Public "last 30 agent actions" feed via Menura (proof artifact for Neotoma Tier 1 ICPs)

Phase 6 — Swarm smoke test + harness integrity

Goal: All five smoke test tiers pass; github_harness MCP operational; Anthus fully autonomous.

  • Operator-driven Tier 1 smoke test: single-agent gate satisfaction (12 agents, artifact-header convention)
  • Tier 2: phase ordering + parallelism on synthetic issues
  • github_harness MCP server implemented (was ateles#2)
  • Tier 3: multi-repo identity correctness (AAuth → PAT mapping) — validation pending
  • Tier 4: real product work end-to-end
  • Tier 5: fully autonomous Anthus dispatch
  • Input attribution: retrieval_event auto-stamping + inputs_consulted population — ateles#19, remaining sub-issues #23–#25
  • Tool-level authorization: agent_grant extended to MCP tool calls + parameter constraints, enforced via grant proxy (ateles#26)
  • Webhook signing-key quarterly rotation with 7-day grace period

Phase 7 — Ingestion agents

Goal: All external data sources flowing into Neotoma via dedicated ingestion agents.

  • Cygnus: Google Calendar polling via gws CLI
  • Aix: Asana webhook + bidirectional sync
  • Mergus: Coinbase + Wise + Plaid + BTC + Stacks daily snapshots
  • Geococcyx: Twilio SMS webhook
  • Tinamus: HomeAssistant polling (5 min cadence)
  • Turdus: email triage daemon — Gmail poll → Neotoma entities + tasks for Apis
  • Strigops: analytics gatherer — GA4, GSC, Umami, X, Typefully, Instagram backends

Phase 8 — Product role panel

Goal: Product perspective agents operational for product development workflows.

  • Wire Sturnus to product_feedback.created subscription
  • Build product role panel: Pavo (PM), Manucode (designer), Waxwing (architect), Phoenicurus (QA)

Phase 9 — Meta-agent + remaining invocables

Goal: Cathartes can define new agents; all planned invocable agents operational.

  • Cathartes meta-agent: writes new agent_definition entities from operator description
  • Remaining invocable agents: Anas, Aquila, Falco, Tachornis, Procyon, Lutra, Lupinus
  • Expand Loxia/Cicada to handle PRs across all ateles-agents/<genus> repos

Pending setup (not phase-gated)

  • ateles-agent GitHub machine account: create account; generate fine-grained PAT (Contents: write on ateles repo); store in ateles-private/.env as ATELES_AGENT_PAT; wire into Apus installed plist
  • neotoma-agent GitHub identity: castor-agent account (Pull Shark x2) remains as-is; create new neotoma-agent GitHub account for future automation (tracked in ateles#15)
  • Agent strategy hierarchy + drift signals: ateles#14 — schemas registered, per-agent entities pending
  • Installable package: ateles#18 — ten blockers to package-based adoption; depends on architecture stabilising through Phase 6

Completed setup (done)

  • Apus env wiring: all env vars wired into installed plist (~/Library/LaunchAgents/com.ateles.apus.plist) including Neotoma auth env var
  • Neotoma webhook subscription: Apus endpoint (https://apus.markmhendrickson.com/webhook) registered as Neotoma webhook subscriber (subscription ID 7ce524e4, entity ent_6ba1914462908f682f206b56)

Deferred

  • Temporal orchestration: evaluate at Phase 3 when 5+ daemons active and in-flight state loss has occurred; Inngest as fallback
  • YubiKey hardware tier: planned for Cursor, operator, Monedula, Ateles, Apus — see docs/aauth.md