feat(netlify): add Netlify cloud substrate (--on netlify)#6
Merged
Conversation
The second hosting target in the suite, after Fly. v0 is static-upload: a service's source files (under [services.X.netlify].root or the repo root) are deployed via Netlify's file-digest API. - crates/stackless-netlify impl Substrate: Stripe Projects provisions `netlify/project` (free) and returns a Stripe-managed token + site id (pinned by `mise run discover netlify/project`; the token surfaces on a refreshed env read). The substrate clones the pinned ref and runs the file-digest deploy (SHA1 per file, PUT only the `required` files, poll to `ready`), health-gating on the deploy's ssl_url. observe/destroy key off the Stripe resource registration (the token is ephemeral). - netlify_api.rs is hand-written reqwest/serde (Swagger-2.0 source, ~5 endpoints). - Registered across the one-row seams: workspace member, binary dep, substrates.rs (row + builder + global codes-uniqueness test), --on help, SubstrateRequired remediation, integrations KNOWN. - Tests: hermetic catalog-gap + config + Stripe-scripted observe/destroy + mock-API file-digest deploy (15). Live-validated end-to-end via `mise run smoke-netlify` (provision -> upload deploy -> HTTPS health -> verified teardown). - Docs: README, ARCHITECTURE 4d, docs/SCHEMA.md. 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.
Summary
Adds Netlify as a
--on netlifycloud substrate — the second hosting target in the suite (after Fly; stacked on #5, base isfeat/flyio-substrate). v0 is static upload: a service's source files (under[services.X.netlify].rootor the repo root) are deployed via Netlify's file-digest API.How it works
netlify/project(free) and returns a Stripe-managed token + site id (pinned bymise run discover netlify/project— the token surfaces on a refreshed env read; the suffix isNETLIFY_AUTH_TOKEN).POST /sites/{id}/deployswith the digest map →PUTonly the files Netlify reports asrequired→ poll the deploy toready→ health-gate on the deploy'sssl_url.observe/destroykey off the Stripe resource registration; the Netlify API is touched only at deploy time.netlify_api.rsis hand-writtenreqwest/serde(Swagger-2.0 source, ~5 endpoints).--onhelp, integrationsKNOWN).Validation
mise run smoke-netlify): provision → token → clone → SHA1 upload → pollready→ HTTPS health at*.netlify.app→ verified teardownNotes
--confirm-paidand no billing-card setup (unlike Fly).NETLIFY_AUTH_TOKEN(notAUTH_TOKEN) and it only appears on a refresh pull —provision_with_envalready doesenv --pull --refresh, so once the suffix was correct it resolved with no change to shared code.docs/SCHEMA.md.🤖 Generated with Claude Code