Back to projects

GDDP

A control plane for bounded agent autonomy. GDDP turns a software project into an explicit dependency graph of bounded work, dispatches nodes to agent executors, and stops at human review — no silent writeback to graph truth.

PythonSQLiteGitHub ActionsYAMLAgent Orchestration

What it is

GDDP is a system for turning software projects into explicit maps of work, then using agents to move through those maps without losing human control. It lives across two repositories:

  • gddp-runtime — the execution and orchestration machinery. Reads project truth from gddp-config, finds ready nodes, builds job payloads, dispatches to executor adapters, and persists structured receipts in SQLite.
  • gddp-config — the human-owned project graph. Each node carries its own scope, acceptance criteria, and dependency edges.

Why it matters

Most agentic developer tools fall into two camps:

  • Inline assistants (Cursor, Windsurf, Copilot agent mode) operate synchronously inside a single editor session. Useful for line-by-line work, but bounded by whatever the developer happens to be looking at.
  • Async cloud agents (Jules, Devin, Codex) take a task description, open PRs, and ship code while you sleep — but they decide their own scope. You give them a goal and trust the model to figure out what counts as done.

GDDP sits between those camps with a different premise: scope is not the agent's job. Work is decomposed up front into a dependency graph with explicit acceptance criteria and bounded scopes. Agents read nodes from that graph, execute, and produce structured receipts. The system does not automatically declare work complete — it stops at review. A human decides whether to accept, retry, or block each piece of work before graph truth advances.

How it works

  • Graph-driven dispatch — a heartbeat loop reads the project graph from YAML, identifies ready nodes (deps complete, no active jobs), classifies events, and dispatches via executor adapters.
  • Receipt-based return flow — when a PR merges, the system converts it into a structured receipt with artifact references and moves the job into awaiting_review. No silent writeback to graph truth.
  • Executor-agnostic — today the adapter routes work to Jules via GitHub Actions labels. Codex, a local harness, or any custom executor can plug in behind the same dispatch contract.

This is a working answer to the question of who decides what an agent should do next on a project that spans weeks and multiple repos.