Roadmap and status¶
The implementation order is a numbered phase list. It lives in
PLAN.md,
which is the authoritative record. This page summarizes it.
Phases 0–14 and Phases 16–17 are implemented and integrated. Five Phase 15 sub-phases were explicitly requested and are implemented. Every other Phase 15 item is deferred. Staging and deployment remain deferred.
Phases¶
| Phase | Scope | Status |
|---|---|---|
| 0 | Architecture sanity check | done |
| 1 | Deterministic vertical slice | done |
| 2 | Real Copilot planner | done (CopilotAgentRuntime) |
| 3 | Real specification + triage | done |
| 4 | Real implementer | done |
| 5 | Repository verification policy | done (governance.RepositoryVerifier) |
| 6 | Tester + reviewer | done (independent TestReport/ReviewReport) |
| 7 | Routing calibration | done (routing.ModelRouter) |
| 8 | Research | done (optional, at most once per run) |
| 9 | Scope drift | done (governance.ScopeDriftPolicy) |
| 10 | Pull request creation | done, opt-in (pull_request.enabled) |
| 11 | GitHub Actions observation | done, opt-in (ci.enabled) |
| 12 | CI repair | done, bounded by ci.repair_attempts |
| 13 | Local backlog daemon | done (factory start, opt-in) |
| 14 | Parallelism | done (max_concurrent_tasks 1 or 2) |
| 15.0 | Factory CI for this repository | done |
| 15.1 | Tag-driven release / continuous delivery | done |
| 15.2 | macOS packaging + user launchd service | done |
| 15.3 | Staging environment | deferred |
| 15.4 | Deployment / promotion | deferred |
| 15.5 | Local monitoring and health | done (factory doctor, factory status) |
| 15.6 | Docker sandboxed execution | deferred |
| 15.7 | Remote workers | deferred |
| 15.8 | Postgres run store | deferred |
| 15.9 | Temporal / durable workflow engine | deferred |
| 15.10 | Jira and other trackers | deferred |
| 15.11 | Read-only local dashboard | done (factory dashboard) |
| 15.12 | Kubernetes workers | deferred |
| 16 | Repository capability layer + bounded post-green polish | done |
| 17 | Project brief decomposition + bounded project execution | done (factory project) |
| 18 | Opt-in autonomous PR/CI/merge project delivery and checkpoint recovery | implemented |
Known limits¶
- Platform. The supported platform is macOS, native arm64 and native
x86_64, with no
universal2. A source checkout needs Python 3.13+. Other platforms are not tested or supported. - Signing. Release archives are unsigned or ad-hoc signed. Developer ID signing and notarization are deferred, so Gatekeeper quarantine is expected. See Releases.
- Release immutability. The release workflow refuses to replace an existing
release. GitHub immutability is enabled for new releases, and existing
releases from
v0.3.0onward reportimmutable=true. Older historical releases remain mutable through the platform. VerifySHA256SUMS. - Billing conversion. Copilot runtime usage is persisted when reported, and missing fields remain unknown. The dashboard derives a USD usage value from nano-AIU when available, but this is not necessarily the invoice charge. Premium-request units remain separate.
- Trackers. GitHub Issues is the only backlog provider.
- Projects. Project plans are flat DAGs capped at 12 tasks. Local mode composes an integration branch. Opt-in merge mode delivers task PRs serially to the target. Optional GitHub issues are not labelled for daemon dispatch.
- Delivery recovery. Explicit project resume reuses persisted delivery checkpoints. Ambiguous interrupted implementation still requires a human. Merge queues, automatic conflict resolution and branch-protection bypass are not implemented.
- Concurrency.
scheduler.max_concurrent_tasksis validated to1or2. - Capabilities. The Researcher generates repository guidance per
repository and dependency fingerprint. Web access is limited to
polish.official_documentation_originsandpolish.practice_reference_urls. Later runs reuse guidance from repository storage underfactory.data_dir. Generation is not serialized across processes. Two concurrent first runs for the same fingerprint can each make an initial call and one bounded retry. Atomic no-clobber publication selects the single winner that both runs revalidate. Invalid output carries its bounded rejection reason into that retry. The storage key is the local Git common directory. A moved or re-cloned repository starts again at a new key. Human customization is a separaterepository-skill-overlay.yamlthat the factory never edits. There is no fixed built-in catalog and no repository plugin system. Guidance that cannot be generated or verified is skipped rather than failing the run. - Two release behaviours can only be proven in CI. Publishing a real
v*tag, and the native Intel (macos-15-intel) build. Both are implemented and statically tested. The first real tag exercises them end to end.
Deliberately not planned¶
Deferred means "not now". These items are stronger than deferred: they are design constraints for V1:
- unrestricted autonomous merge (the bounded opt-in exception is ADR-022)
- autonomous deployment
- a hosted, multi-user or networked service
- a control plane, or any dashboard write path
- telemetry, analytics or a metrics exporter
- long-term semantic memory or a vector database
- an agent swarm
- a generic workflow DSL or plugin architecture
- LangGraph
The read-only local dashboard is the single, documented exception to the V1 ban on web UIs. Its bounds are recorded in ADR-016.
How scope changes¶
The rule in
AGENTS.md
is strict. If implementation reveals that architecture must change, stop and
describe the problem. Propose the smallest correction, update the architecture
documentation, and then implement. Silent redesign is not allowed.
New decisions are recorded as ADRs in Decisions.