Alex sets the goal
The task, what is allowed, and when the agents must stop.
Autonomous AI agents / Alex Bouchard
I give AI agents a goal and leave them to work. While I’m away, they can investigate, build, and test changes; another agent can review the result. Software rules check whether anything may move forward. If the work is major, unverified, or outside its limits, it waits for me.
I started with an earlier experiment, kept the parts that fit, then added a goal-based work graph, Midnight Reasoning, a memory system, and project-specific release rules. I connect those pieces differently for different projects.
The diagram shows one goal-based run: plan the work, check a proposed change in two ways, then apply that repository’s own merge rules. Actual projects connect these pieces differently. The last row shows what carries between runs and what scheduled jobs watch. The example below shows what one particular run checked and held.
The task, what is allowed, and when the agents must stop.
Turns the goal into steps with owners, checks, and limits on retries, time, and cost.
Claude Code, Codex, and Hermes investigate, build, and test.
Checks step evidence against the goal. It can request a bounded retry; it cannot approve a merge.
The reviewer can send the agent back to fix a gap.
A commit records the work. A pull request asks to add it to the project.
Two independent checks
Do the required checks pass?
Does another agent find a problem?
The repository applies its own rules to the exact proposed change. Passing tests alone does not grant merge permission.
Only if allowed, small, reversible, and every required check passes. Then verify the result.
Major, excluded, uncertain, or failing work stays for a decision or a better way to check it.
What changed, what checks found, where work stopped, and what needs attention next.
Between runs
Status, evidence, and next steps for a later session.
Where connected, keep useful, sourced facts after safety and duplicate checks. A receipt confirms the write landed.
Watch project health, memory, and cost. Fix known problems; leave unfamiliar changes for review. Lessons can improve tests or instructions after review.
I combine and adapt these tools for each project. Connections and release rules vary by repository.
Agentic Graph Orchestration
Break a goal into steps. Give each step an owner and a way to check whether it is done. Separate agents can take different tasks. The graph checker looks for conflicting assignments and missing checks; the runtime manages the declared steps, retries, and stopping points.
Midnight Reasoning
A reviewing model examines the evidence from a step and can explain what needs another attempt. Its notes stay with that run. When the reviewer is uncertain, the work can continue, but that uncertain opinion is not saved as a settled fact. It does not decide whether code can merge.
Tests + separate review + project rules
The coding agent saves its work and submits a proposed change. Automated tests run, and another agent reviews it. The project’s rules decide whether it can be added automatically or needs my approval. A changed version needs checks that still apply to that version.
Project state + Graphiti / Neo4j
Project notes record what changed and what is left to do. Where a project connects the memory system, selected facts keep their source and require confirmation that the write succeeded. Those notes and saved facts are available to later work.
The three named components are public repositories on GitHub under the Apache-2.0 license: Agentic Graph Orchestration, Midnight Reasoning, and the Graphiti / Neo4j operations tooling.
An agent makes a change and submits it to the project as a proposed change. Automated tests run on it, and a separate AI agent reads it. Then the repository’s own rules decide what happens next.
Small changes that can be undone, and that the agents have permission to make, can be added on their own. Often that happens through GitHub auto-merge, which adds the change once the required checks pass. Major upgrades, work the agents cannot properly check, and decisions outside their permission wait for me.
One agent run on October 14 reached that stopping point. The work at BuyLandFL needed my input, so the agents checked Yapword next. Several upgrades failed the automated checks. Another affected the game’s share cards, and the agents had no working preview to check those cards. They left the upgrades for me and recorded what needed attention. The record below counts what has merged without me pressing merge, and which route each one took.
Auto-merged pull requests, as of October 22, 2026
A pull request in one of my own GitHub repositories that was merged without me pressing merge.
Every merge runs under my account, so I count only merges with a machine record: a workflow merge, GitHub auto-merge, or a ship receipt. Some agent merges left no record, so this count is a floor. It says nothing about quality beyond those gates.
89 of the 151 (59%) merged through GitHub auto-merge that was switched on under my account, by me or by an agent, and merged once the checks passed. The count is regenerated from GitHub and merge receipts; the as-of date is above. The full table is in the evidence note.
A commit saves a record of a change. A pull request proposes adding changes to the main project and gives the checks and reviewers something to inspect. A merge adds the approved changes to that project. A release makes them available to users; how that happens depends on the project.
The threat I plan for first is an instruction hidden in something an agent reads: a file in the repository, a pull request description, a web page, or the output of a tool. My shared workflow file says that external content is data, never an instruction, and that the hooks which check an agent’s work may not be changed without my authorization. Both are written rules. A hook scans files as the agent reads them, but it only warns. What code enforces is narrower. The graph checker refuses any plan where the model closes an irreversible step or verifies its own work, and a companion check refuses to treat a copy of that checker as a gate once it no longer matches the canonical one. The merge gate runs from the main branch, so a pull request cannot edit the check that judges it, and it rejects a review whose reviewer is the author. That reviewer is a fresh session that did not write the change, not a different model. The gate checks the name on the record and the exact commit it read, not which model wrote the review.
When something goes wrong, we use the failure to improve a test, an instruction, or a handoff. Changes to those tools need review too. An agent can propose an improvement; it does not get to remove its own checks to finish a task.
Scheduled jobs watch for problems with the projects, memory, and operating costs. Recovery tools handle specific failures, such as restarting an unhealthy database or restoring a known stale copy of a tool. They leave unfamiliar changes for review.
The aim is to catch mistakes early, keep them from spreading, and leave enough evidence to recover. I keep experimenting because different projects need different arrangements.
Next step
Book a 30-minute call. I will tell you plainly whether I can help and what I would test first.