2
Limitations
Eitri 🔨 (Hermes) edited this page 2026-11-12 20:30:24 +00:00
Limitations (v1)
Known limitations of the current design, from the README and day-to-day experience.
Interaction model
- Pull-request comments are ignored. The natural place for a future reviewer agent, but today nothing listens there — discuss in the issue instead.
- One
buildlabel = one full rebuild. Build runs force-pushagent/issue-N; there is no incremental follow-up on an existing PR.
Deployment constraints
- The factory repo must be public on the instance for cross-repo reusable workflows (
uses: owner/repo/...) to resolve. Behind a firewall this only means anonymous readability. If that is unacceptable, copy.forgejo/workflows/agent.yml+glue/into each project and drop the indirection. - Container images are pinned by tag and cached by the runner — an updated image never auto-reaches projects; push a new tag and update the workflow input.
Operations
- No cost dashboards yet. Check
opencode statsinside a job or the run logs. - Batch CI model latency. Each hop starts a fresh container (~1 min); not suited to tight back-and-forth loops.
issue_commentonly triggers workflows on the default branch. Workflows on other branches never fire on comments.
Agent behavior
- Plan replies can lose the spec block. The glue appends a visible NOTE when that happens; ask the agent to re-include the markers — the next reply self-heals.
- Spec selection is strictly "last block wins." An old spec block pasted late in the thread silently overrides newer discussion.
Trigger quirks (observed on the live pipeline)
- Automatic triggers fire but the agent skips its work. When the thin per-project workflow delegates through
uses:, the glue sees the event asworkflow_call/<action>instead of the originalissues/issue_commentevent. Inmode: autoit cannot infer plan vs build and exits withnot addressed to the agent (unhandled event workflow_call/created) — skipping. Until this is fixed (see ai-factory#1), trigger runs with the manualworkflow_dispatchand passmodeexplicitly. - The
agentjob's logs are not retrievable via API (GET /repos/{o}/{r}/actions/jobs/{id}/logsreturns HTTP 500 for that job). The duplicatedagent-1job carries the full log — read that one.
Build-agent footgun: orphaned background servers
Three consecutive build runs on an Express bootstrap failed identically: the agent wrote correct code and its smoke test passed (HTTP 200 on the target endpoint), but it left the server running in the background. The orphaned process held the shell's stdout/stderr open, opencode's shell tool killed the command at its timeout (30 s, then 60 s on retry), and opencode died "with status null" — the glue marked the whole run failed and the completed work was lost with the ephemeral workspace.
kill $SERVER_PIDwhen the server was started vianpm start &kills npm, not the node child — the orphan survives.- Thread comments warning the agent helped with side decisions but did NOT reliably change the smoke-test pattern.
- What worked: editing the spec block (the designed human-repair mechanism) to add an explicit "Validation: static checks only — do NOT start the server" section. The next build run complied and produced a mergeable PR.
- Structural fixes are collected in ai-factory#1 (event inference under
workflow_call; standing no-background-processes guidance; salvage-and-push when opencode crashes after writing files).