Deploy the skeleton to green-tea-mcp on Fly #196

Open
time wants to merge 5 commits from time/card-98 into main
pull from: time/card-98
Collaborator

Adds a stateless streamable-HTTP entrypoint (havre/src/http.js) with /health and /mcp, a Dockerfile, and havre/fly.toml targeting the existing app green-tea-mcp. The machine is shared-cpu-1x/256mb and auto-stops when idle, so it adds no new paid infrastructure. The Fly health check hits /health. The stdio entrypoint is unchanged.

Checked: npm test in havre passes (new HTTP test covers /health, 404, and a real MCP client doing initialize and a tool call over HTTP). I also ran the server by hand and curl'd /health and tools/list.

NOT done: the CI deploy step. The task rules forbid touching .github/workflows, so it needs a follow-up (flyctl deploy --remote-only in havre/ with a FLY_API_TOKEN secret on push to main). I did not run fly deploy, so reachability at the live URL is unverified.

Closes #98

worker: Claude Sonnet (Anthropic) via Time

Adds a stateless streamable-HTTP entrypoint (havre/src/http.js) with /health and /mcp, a Dockerfile, and havre/fly.toml targeting the existing app green-tea-mcp. The machine is shared-cpu-1x/256mb and auto-stops when idle, so it adds no new paid infrastructure. The Fly health check hits /health. The stdio entrypoint is unchanged. Checked: `npm test` in havre passes (new HTTP test covers /health, 404, and a real MCP client doing initialize and a tool call over HTTP). I also ran the server by hand and curl'd /health and tools/list. NOT done: the CI deploy step. The task rules forbid touching .github/workflows, so it needs a follow-up (`flyctl deploy --remote-only` in havre/ with a FLY_API_TOKEN secret on push to main). I did not run `fly deploy`, so reachability at the live URL is unverified. Closes #98 <sub>worker: Claude Sonnet (Anthropic) via Time</sub>
time added 5 commits 2026-10-19 16:15:21 +00:00
card #98: update havre/package.json
time/worker-run cd havre && npm ci >/dev/null 2>&1 && npm test 2>&1 | tail -20; (PORT=8099 node src/http.js & sleep
ci / test (pull_request) Successful in 43s
heartbeat / tick (pull_request_review) Canceled after 0s
166591fc09
haiku left a comment
Collaborator

Object

The PR doesn't meet the card's finish line, and one of the card's three deliverables is missing.

  • Finish line not met. The DONE criterion is that the server is reachable at the green-tea-mcp URL from an MCP client. The PR says fly deploy was not run and reachability is "unverified". Nothing in the diff or checks shows the live server responding, so the card can't be closed on this evidence.
  • CI deploy step missing. The card lists "Deploy step in CI" as a deliverable. The PR skips it, citing a rule against touching .github/workflows. That conflict should have been raised for a human decision rather than silently dropped. The card's deliverable is still open.
  • Cost claim is unverified. The PR says the app is existing and adds no new paid infrastructure. havre/fly.toml:2 targets green-tea-mcp, but nothing confirms that app exists or that its current sizing matches the shared-cpu-1x/256mb config. Deploying with a different [[vm]] could change the bill.
  • Test teardown may hang. havre/test/http.test.js:20-21 calls http.close() without destroying open keep-alive sockets, so node --test can stall after the assertions pass. Worth confirming the test exits cleanly in CI.
  • Entrypoint guard is fragile. havre/src/http.js:23 compares import.meta.url to file://${process.argv[1]}. This works for node src/http.js but breaks on paths with special characters or symlinks. url.pathToFileURL would be more robust.

What looks fine: the /health and /mcp routing, stateless per-request transport handling, the USER node Dockerfile, and the /health Fly check. The ci / test and time/worker-run checks are green.

To approve: either deploy and show a successful MCP tool call against the live URL, or explicitly scope the card down and split the CI deploy step into a follow-up with a human decision on the workflow rule.

review by haiku · claude-haiku-5-5 · via Time

**Object** The PR doesn't meet the card's finish line, and one of the card's three deliverables is missing. - **Finish line not met.** The DONE criterion is that the server is reachable at the green-tea-mcp URL from an MCP client. The PR says `fly deploy` was not run and reachability is "unverified". Nothing in the diff or checks shows the live server responding, so the card can't be closed on this evidence. - **CI deploy step missing.** The card lists "Deploy step in CI" as a deliverable. The PR skips it, citing a rule against touching `.github/workflows`. That conflict should have been raised for a human decision rather than silently dropped. The card's deliverable is still open. - **Cost claim is unverified.** The PR says the app is existing and adds no new paid infrastructure. `havre/fly.toml:2` targets `green-tea-mcp`, but nothing confirms that app exists or that its current sizing matches the `shared-cpu-1x/256mb` config. Deploying with a different `[[vm]]` could change the bill. - **Test teardown may hang.** `havre/test/http.test.js:20-21` calls `http.close()` without destroying open keep-alive sockets, so `node --test` can stall after the assertions pass. Worth confirming the test exits cleanly in CI. - **Entrypoint guard is fragile.** `havre/src/http.js:23` compares `import.meta.url` to `file://${process.argv[1]}`. This works for `node src/http.js` but breaks on paths with special characters or symlinks. `url.pathToFileURL` would be more robust. What looks fine: the `/health` and `/mcp` routing, stateless per-request transport handling, the `USER node` Dockerfile, and the `/health` Fly check. The `ci / test` and `time/worker-run` checks are green. To approve: either deploy and show a successful MCP tool call against the live URL, or explicitly scope the card down and split the CI deploy step into a follow-up with a human decision on the workflow rule. <sub>review by haiku · claude-haiku-5-5 · via Time</sub>
time added the needs-human label 2026-10-19 17:12:47 +00:00
Some required checks failed
time/worker-run cd havre && npm ci >/dev/null 2>&1 && npm test 2>&1 | tail -20; (PORT=8099 node src/http.js & sleep
ci / test (pull_request) Successful in 43s
heartbeat / tick (pull_request_review) Canceled after 0s
You are not authorized to merge this pull request.
This pull request can be merged automatically.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin time/card-98:time/card-98
git checkout time/card-98
Sign in to join this conversation.