Repository navigation
fix(local-delivery): let an offline ticket reach done (git in image, no-op deploy success, .env footgun) - #10
Merged
Conversation
Three blockers surfaced taking a ticket through the full lifecycle with DELIVERY_BACKEND=local (no GitHub), plus a route convenience: - Dockerfile: install `git`. The local-git DeliveryAdapter and the QA repo-context reader shell out to git, but node:24-slim has none — every commit failed with `spawn git ENOENT`, so nothing was committed and QA blocked every ticket. - local adapter: report the no-op deploy as `success` (was `null` → `checkDeployStatus` returned `pending` forever, leaving the ticket stuck in `deploying`). There is no deploy target locally; the ship step should complete, not poll indefinitely. - .env.example: move the inline comment off `GITHUB_DEPLOY_WORKFLOW=`. docker compose's env_file parser keeps everything after `=`, so the trailing `# e.g. deploy.yml` became the value — tricking startDeploy into dispatching a deploy that can never finish. Documented the footgun. - POST /api/tickets now accepts `description` + `acceptanceCriteria`, so a ticket can carry a real spec for QA to verify (previously hard-coded empty). Verified live: a self-contained ticket ran implement → commit → QA pass → merge gate → deploy gate → done, with the agent's code merged to the local repo's main branch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Taking a single ticket all the way to
donewithDELIVERY_BACKEND=local(no GitHub) on a real model surfaced three blockers. All are fixed here and verified live.Blockers fixed
spawn git ENOENT— the local-gitDeliveryAdapterand the QA repo-context reader shell out togit, but thenode:24-bookworm-slimimage has none. Every commit failed → nothing committed → QA blocked every ticket. Fix:apt-get install gitinapps/server/Dockerfile.deploying— the local adapter'sdeploymentRunAfter()returnednull, socheckDeployStatusreportedpendingforever. There's no deploy target locally; the ship step should complete. Fix: report the no-op deploy assuccess..envfootgun —GITHUB_DEPLOY_WORKFLOW= # e.g. deploy.yml: docker compose'senv_fileparser keeps everything after=, so the trailing comment became the value, trickingstartDeployinto dispatching a deploy that can never finish. Fix: moved the comment to its own line in.env.exampleand documented the footgun.Convenience
POST /api/ticketsnow acceptsdescription+acceptanceCriteriaso a manually-created ticket can carry a real spec for QA to verify (previously hard-coded empty).Verified live
A self-contained "minimal URL shortener" ticket ran the full lifecycle:
implement → code_pushed → qa_passed → [merge gate] → pr_merged → [deploy gate] → deployed(success) → done, with the agent'ssrc/shortener.jsmerged to the local repo'smainbranch. Ticket model spend: $0.0045 (Haiku).Tests
Added a regression test asserting the local no-op deploy reports
success.pnpm typecheck·lint·test(103) ·buildall pass.🤖 Generated with Claude Code