-
Notifications
You must be signed in to change notification settings - Fork 0
Requirements and Roadmap
Source: competitive scan of SWE-agent, OpenHands, Aider, Cognition Devin, GitHub Copilot coding agent, Sweep.dev, Codegen.com, Factory.ai (Droid), and Google Jules (2026). Each competitor's headline feature is restated as a requirement (R1–R15) below. Full detail — status against the actual atomic-forge codebase, and the state-of-the-art research literature backing each one — now lives in its own document under Agent-Computer-Interface per requirement below.
| # | Requirement | Status | Doc |
|---|---|---|---|
| R1 | Purpose-built agent-computer interface (structured navigate/view/edit/execute) instead of raw shell | ✅ Done | Agent-Computer-Interface |
| R2 | Independent critic/gate that can withhold a low-confidence patch | ✅ Already met | Critic-Verification-Gate |
| R3 | Planner (strong model) / executor (cheap model) role split | ✅ Done (opt-in, default off) | Planner-Executor-Split |
| R4 | Whole-codebase symbol map for structural awareness | ✅ Already met | Repo-Scale-Context |
| R5 | Auto-commit each accepted edit with a descriptive message | ✅ Already met | Auto-Commit-Messages |
| R6 | Persistent sandbox with terminal, editor, and browser | Not a goal (by design) | Persistent-Sandbox |
| R7 | Multi-channel task intake (chat, issue tracker, UI) | ✅ Done (stdin path) | Multi-Channel-Intake |
| R8 | Fix PR generated directly from a review comment | ✅ Done | Review-Comment-Driven-Fix |
| R9 | Zero new developer tooling — operate inside the host platform | ✅ Done | Zero-Friction-Integration |
| R10 | Self-review that the patch resolves the stated issue | ✅ Already met (fix pipeline) | Self-Review-Issue-Resolution |
| R11 | Scale to large/enterprise monorepos without prohibitive indexing cost | Statement-level graph shipped 2026-08-29 | Enterprise-Scale-Indexing |
| R12 | Terminal-native CLI fitting into existing CI/CD | ✅ Already met | CLI-CI-Native |
| R13 | Fully async, per-task isolated, parallel execution | ✅ Done (within-task); cross-task still open | Parallel-Execution |
| R14 | Execute the test suite to select a patch, not model judgment | ✅ Already met (+ correctness fix) | Execution-Guided-Repair |
| R15 | No training on private code by default | ✅ Done (--local-only) |
Data-Privacy-No-Training |
| R16 | Bootstrap any GitHub repo (language/build-agnostic) to a runnable state before repair begins | Deterministic gate + checkpoint + C/C++ shipped; agentic fallback open | Environment-Bootstrap |
Not matched by name in the competitor set above — worth keeping front-and-center rather than diluting with the R1–R15 backlog:
-
Machine-checked task contract —
AtomicTaskwith a requiredtest_triad(positive/negative/recovery), enforced by pydantic at construction time. - Crash-safe, resumable runs — every phase transition checkpointed to SQLite before work starts; resume re-hashes files on disk and regenerates only what changed.
- Blast-radius gate — statically rejects a winning patch that changes or removes a function/method signature while an external caller still depends on the old one. Directly supported by research in Critic-Verification-Gate.
-
7-way verdict taxonomy (
passed/failed/partial/timeout/lint_error/crashed/skipped) instead of a pass/fail boolean, with full phase-by-phase run history. See Execution-Guided-Repair for a research-backed upgrade path (execution-trace-level signal). - Adaptive concurrency control — ramps LLM-call parallelism up by 1 per success, down by 2 on a 429, with a monotonic counter to avoid a race between an in-flight success and a rate-limit step-down.
Before implementing, R1–R16 were re-audited against the real codebase (the
original docs were written from the README alone). Result: several
"Partial"/"Not implemented" rows were already substantively met in code —
tools.py was already an ACI (R1), the blast-radius gate already fed
rejections back into the next round's prompt (R2), codegraph.py was
already a precomputed, incrementally-hashed SQLite graph with multi-hop
depth support (R4, most of R11), fix.py already re-verified the
generated test's result independently rather than trusting the repair
loop's self-report (R10), and the repair loop's execution-based selection
was already more sophisticated than scoped, including flake-tolerance
(R14). Those got their status corrected rather than re-implemented.
Genuine gaps were then implemented, tested (191→201 tests passing across the pass, all green), and in several cases validated by actually building and running the Docker image, not just reading the YAML:
-
R1:
view_window(center_line, radius)convenience, both backends + the ripgrep reference. -
R3: opt-in
architect_mode(one extra planning call before K-sampling), default OFF — SAFEdit's counter-signal means this shouldn't ship default-on without a live-LLM benchmark this environment can't run. -
R7:
--issue-body-file -reads the bug description from stdin. -
R8:
run_fix_from_comment— review-comment-driven fix, same pipeline asfix, scoped to the commented file (CLI:fix-comment). -
R9:
action.ymlgained acommandinput (run/fix/fix-comment),entrypoint.shdispatches accordingly,Dockerfilenow installsgh+CIE+mcp(previously entirely absent, sofix/fix-commentcould never have worked via the Action at all). -
R13: K-sampled repair attempts now run in parallel (
ThreadPoolExecutor, default on) — required makingCodeGraph's SQLite connection thread-safe (check_same_thread=False+ anRLock). -
R15:
--local-onlyrefuses to run against a non-loopback/private LLM endpoint — makes the "nothing has to leave your machine" claim enforced, not just possible. -
R16: registered Java (Maven/Gradle), Go, and Rust stacks alongside the existing Python/Node —
fix <url>now bootstraps 5 ecosystems instead of 2.
A real, pre-existing correctness bug was found and fixed along the way
(not something introduced by this pass, but exposed by it): a
write→retest→write→retest sequence — exactly what K-sampling and
multi-round repair both do — could intermittently evaluate a STALE cached
.pyc instead of the just-written fix, silently corrupting the
execution-based candidate selection R14 depends on being trustworthy.
Root-caused and fixed in sandbox.py::_purge_pycache; see
Parallel-Execution and Execution-Guided-Repair for the
full writeup. Verified 15/15 clean (was ~50% flaky) after the fix.
What's left, honestly, not silently deferred:
- R6 — deliberately not built; a doc-only decision (see its own file).
-
R11 — statement-level def-use graph granularity (per ARISE). The
"iterative query" half of the original plan turned out to already be met
(
callers/calleesalready acceptdepthand BFS-traverse). The remaining piece is a real schema/parser change to a module several other requirements now depend on being correct (R1, R4, R13) — not attempted partially/untested in this pass. - R16's harder half — C/C++ (no single dominant build-marker) and the Repo2Run-style agentic bootstrap fallback for repos matching none of the 5 registered stacks (~1-2 week estimate in the original plan; genuinely out of reach for one pass).
- Any change gated on a live LLM benchmark comparison (R3's SAFEdit-style validation) — this environment has no configured LLM endpoint/credentials, so those flags are shipped correctly-wired-but-conservatively-off rather than validated.
atomic-forge — an agentic generate → test → repair loop with a machine-checked task contract, crash-safe checkpointing, and execution-selected repairs. BSL 1.1 licensed.
Start here
Workflows
Reference
Background
Requirements (R1–R16)
- Requirements-and-Roadmap
- Agent-Computer-Interface
- Critic-Verification-Gate
- Planner-Executor-Split
- Repo-Scale-Context
- Auto-Commit-Messages
- Persistent-Sandbox
- Multi-Channel-Intake
- Review-Comment-Driven-Fix
- Zero-Friction-Integration
- Self-Review-Issue-Resolution
- Enterprise-Scale-Indexing
- CLI-CI-Native
- Parallel-Execution
- Execution-Guided-Repair
- Data-Privacy-No-Training
- Environment-Bootstrap