Skip to content

docs: hosting topology for humans and machines - #332

Merged
hyperpolymath merged 1 commit into
mainfrom
docs/hosting-and-deployment-state
Jul 29, 2026
Merged

docs: hosting topology for humans and machines#332
hyperpolymath merged 1 commit into
mainfrom
docs/hosting-and-deployment-state

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Documents where ECHIDNA actually runs — the map that was missing after the site and deploy work landed in #329/#330.

What's here

docs/HOSTING.md (humans) — the three public surfaces and how each is built:

Surface Host
nesy-prover.dev — website Cloudflare Pages, built by pages.yml (Ddraig SSG)
api.nesy-prover.dev — HTTP API Hetzner, rootless podman quadlets behind Caddy
sudo@nesy-prover.dev — contact Cloudflare Email Routing forwarder

It also captures the two site constraints that bite when editing: the SSG hard-fails the build on any a11y violation (more than one h1, a skipped heading level, a missing alt), and its copyTree is text-only and corrupts binaries — which is why the playground has a separate cp step.

.machine_readable/deployment.a2ml (machines) — the same topology as structured data, including the API's limits (30/min/ip, 1 MB body, --memory=1500m --pids-limit=512, no published host port) and an explicit risk block: the API has no authentication and spawns prover binaries on user input, rate limiting bounds request count rather than the cost of one request, and a per-request prover timeout is outstanding.

Honest about what is broken

Both files record the two live blockers rather than describing an aspirational happy path:

  1. Repository-wide Actions startup_failure — every workflow, including pages.yml. A minimal probe workflow containing one SHA-pinned actions/checkout fails identically, so this is not a workflow-file fault.
  2. The apex has no originnesy-prover.dev resolves to Cloudflare, the TLS handshake completes, and the request then hangs. The DNS records are likely already right; the Pages project behind them is what is missing.

Both also carry the diagnostic that keeps costing time here: a workflow that fails at startup registers no check run, so gh pr checks reports success while every real gate is dead — and a workflow listed by path instead of name has never been parsed.

Stale doc neutralised

docs/deployment/DEPLOYMENT_GUIDE.md becomes a superseded stub. It described a 2025-11 v0.1.0 deployment whose next step was "deploy to GitLab", referenced an unrelated zotero-voyant-export migration, and quoted a fixed prover count that the canonical-reference policy forbids in prose. Kept as a stub so existing links don't dead-end.

Verification

.githooks/validate-a2ml.sh passes (exit 0) with the new manifest present — the same validator the dogfood gate runs.

Note that CI cannot verify this PR: see blocker 1 above.

Adds the missing map of where ECHIDNA actually runs, in both registers:

- docs/HOSTING.md — the three public surfaces (Cloudflare Pages for the
  site, Hetzner behind Caddy for the API, Cloudflare Email Routing for
  contact), how each is built, and the two constraints that bite when
  editing the site: the SSG hard-fails on a11y violations, and its
  copyTree is text-only so binaries need cp.
- .machine_readable/deployment.a2ml — the same topology as structured
  data, including the API's limits and the risks of exposing an
  unauthenticated service that spawns provers on user input.

Both record the two current blockers honestly: repository-wide Actions
startup_failure (a minimal probe workflow fails identically, so it is
not a workflow-file fault), and an apex that resolves to Cloudflare but
has no origin behind it.

Both also carry the diagnostic that keeps catching people out: a
workflow which fails at startup registers no check run, so gh pr checks
reports success while every gate is dead — and a workflow listed by
path rather than name has never been parsed.

docs/deployment/DEPLOYMENT_GUIDE.md is reduced to a superseded stub. It
described a 2025-11 v0.1.0 deployment whose next step was 'deploy to
GitLab', referenced an unrelated migration, and quoted a fixed prover
count that the canonical-reference policy forbids in prose. Kept as a
stub so existing links do not dead-end.

Verified: .githooks/validate-a2ml.sh passes (exit 0) with the new
manifest present.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gitar-bot

gitar-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved

Documents the production hosting topology for both human readers and machine consumers in HOSTING.md and deployment.a2ml, while neutralizing outdated deployment guides. No issues found.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) July 29, 2026 07:17
@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Jul 29, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Gitar has auto-approved this PR and enabled auto-merge (configure)

@hyperpolymath
hyperpolymath disabled auto-merge July 29, 2026 07:29
@hyperpolymath
hyperpolymath merged commit 665580b into main Jul 29, 2026
1 check passed
@hyperpolymath
hyperpolymath deleted the docs/hosting-and-deployment-state branch July 29, 2026 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant