Skip to content

Retroactive review followup: Fix API details and style nits in warm pools guide#2430

Merged
kcmartin merged 7 commits into
mainfrom
warm-pool-blueprint-fixes
Jul 15, 2026
Merged

Retroactive review followup: Fix API details and style nits in warm pools guide#2430
kcmartin merged 7 commits into
mainfrom
warm-pool-blueprint-fixes

Conversation

@kcmartin

@kcmartin kcmartin commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Follow-up review fixes for the warm pools blueprint (#2427).

Technical:

  • Use port 80 with the http handler for the Flycast service. Flycast is HTTP-only, and .flycast hostnames can't get public certs, so a tls handler on 443 would force clients to skip cert verification. This matches the config in the Connecting to User Machines blueprint.
  • Allocate the Flycast address into the app's own network. The network field on the allocation doesn't default to the app's network; left empty, the address lands in the org's default network and can't reach a Machine on the app's isolated per-app network.
  • Drop min_machines_running from the Machine config example; it only has an effect when autostop is enabled, and this config sets autostop: "off" deliberately.
  • Name the specific 422 status for app-name collisions (verified against the live API by @kylemclaren), and add 422 to the Response Codes table in the Machines API reference so the guide cites a documented code.
  • Note that the wait endpoint's 60s timeout is both the default and the max.

Links:

  • Repoint the lease link to #create-a-machine-lease (the #machine-leases anchor doesn't exist), and point the exec link at the generated API reference on docs.machines.dev, since exec isn't in the hand-written reference yet.
  • Use canonical /docs/launch/processes/ instead of the /docs/apps/processes/ redirect.

Style, matching other blueprints: sentence-case "Pointers and footguns" heading, colon separators in Related reading.

Added missing entry for this guide on the side navigation.

Not included here: bringing the hand-written Machines API reference pages up to date with exec and ip_assignments (both are documented in the generated reference at docs.machines.dev). That's left for a separate PR.

- Use port 80 with the http handler for the Flycast service; Flycast is
  HTTP-only and .flycast hostnames can't get public certs
- Drop min_machines_running from the example; it's inert with autostop off
- Don't claim a specific 422 status for app-name collisions or a 60s max
  on the wait endpoint (docs and OpenAPI spec say 60s is the default)
- Repoint the lease link to an anchor that exists and drop the anchor on
  the exec link (exec isn't in the API reference yet)
- Use the canonical /docs/launch/processes/ URL instead of a redirect
- Match blueprint conventions: sentence-case heading, colon separators in
  Related reading
@kcmartin

kcmartin commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

Hey @kylemclaren, this is the follow-up from the retroactive review of your warm pools blueprint (#2427). The API usage is good overall (I checked it against the OpenAPI spec at docs.machines.dev). A few things that would be good if you can answer from your testing:

  1. App-name collision status code: the guide said app creation returns 422 when the name is taken, but neither our response-code docs nor the OpenAPI spec mention 422. Did you observe that in your testing? If so we should add it to the reference; this PR softens the wording in the meantime.
  2. Wait endpoint timeout: the guide called 60s the max, but everything we have documents 60s as the default. Did you hit a real server-side cap?
  3. "network": "" in the Flycast allocation call: the app is created on a named network, so is the empty string intentional (meaning "use the app's own network")? If so, worth a line of prose saying that.

Related: exec and ip_assignments aren't in our Machines API reference at all, even though your guide leans on both and they're in the published API spec. Before we document them, can you (or the Machines folks) confirm they're considered public and stable?

@kcmartin kcmartin changed the title Fix API details and style nits in warm pools blueprint Retroactive review followup: Fix API details and style nits in warm pools guide Jul 14, 2026
The blueprint was added to the index page but not to
partials/_guides_nav.html.erb, so it never appeared in the side nav.
Placed under Architecture Patterns, matching the index page order.

@kylemclaren kylemclaren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing, thanks @kcmartin

The allocation call passed "network": "", which allocates the Flycast
address into the organization's default network, not the app's isolated
per-app network. Verified against the live Machines API: an empty (or
omitted) network lands the IP in the org default 6PN segment, while
passing the app's network name places it in the app's own segment
alongside its Machines. As written, the Flycast address could not reach
a Machine in a custom-network app.

Allocate with the same network name used to create the app, and add
prose explaining the field does not default to the app's network.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@kylemclaren kylemclaren left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two follow-ups from verifying details against the live Machines API. Both are inline suggestions below.

Comment thread blueprints/warm-pool-user-machines.html.md Outdated
Comment thread blueprints/warm-pool-user-machines.html.md Outdated
@kylemclaren

Copy link
Copy Markdown
Contributor

@kcmartin comments 1 - 3 all addressed, thanks!

On exec and ip_assignments, those are documented:

@kcmartin
kcmartin merged commit 1c9a647 into main Jul 15, 2026
2 checks passed
@kcmartin
kcmartin deleted the warm-pool-blueprint-fixes branch July 15, 2026 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants