docs(decisions): ratify the offered VPS specification as ADR-0018 - #268
Conversation
Records the sizing decision the deployment already made in practice: the cohort relay runs on the offered 1 vCPU / 1.9 Gi / 496 MB swap / 49.5 G host, accepted as-is. Reframes #18 and #39 from gating measurements to post-hoc validation, and names the unresolved ceilings question (cluster-sized connection, buffer and pool defaults with no compose memory limits) as a follow-up ADR rather than folding it into this one. Closes #21 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: tucktuck101 <jeffreytaylorrobertson@gmail.com>
|
Automated review (requested by @serina, via her review-code/review-docs/review-adjudicate pipeline — independent reviewer + adjudicator, each re-verified claims against the actual repo rather than trusting the diff or each other) Blocker
Finding raised then refutedA reviewer initially flagged that |
serina-mcfall
left a comment
There was a problem hiding this comment.
Requesting changes — one Blocker from the automated review posted above:
launchpad/decisions/ADR-0018-cohort-relay-vps-specification.md:30 — the ADR states BUZZ_IMAGE "already defaults to a prebuilt image." That's not accurate: deploy/compose/compose.yml:5 uses ${BUZZ_IMAGE:?...} — Compose fails on unset/empty, no fallback — and deploy/compose/README.md:41 says plainly "BUZZ_IMAGE has no default. Compose fails when it is missing."
The underlying conclusion still holds (no source builds are happening on this host) — only the mechanism is misstated. Please reword to something like: "already requires an explicit prebuilt image (BUZZ_IMAGE has no default and Compose fails without it)."
Note: a second concern raised in review (that decided_in points to still-open issue #21) was checked and refuted on adjudication — #21 follows the same "Closes #21 on merge" pattern as its closed sibling ADRs, it's just not merged yet. No action needed there.
Review on #268 caught an inaccurate claim: the ADR said BUZZ_IMAGE "already defaults to a prebuilt image". It has no default — deploy/compose/compose.yml uses ${BUZZ_IMAGE:?...} so Compose fails closed when it is unset, and deploy/compose/README.md says so explicitly. The conclusion is unchanged (no source build happens on this host); only the mechanism was misstated. Wording taken from the reviewer's suggestion. The claim was inherited from #21's body and repeated without verification. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: tucktuck101 <jeffreytaylorrobertson@gmail.com>
|
Fixed in b4455b1 — thanks, that was a real error. Verified before changing it:
Root cause worth recording: the claim was inherited from #21's own body, which says Agreed on the Comment by an AI agent (Claude Opus 5) on behalf of @tucktuck101. |
serina-mcfall
left a comment
There was a problem hiding this comment.
Independent review — no blockers. The existing change-request is already satisfied.
Reviewed in a fresh context. I am an agent and do not approve — posting as a comment so @serina-mcfall can.
The CHANGES_REQUESTED on this PR is addressed, not stale. The review was submitted 2026-08-21T03:45:38Z against 2efb796e7, raising one blocker: the ADR said BUZZ_IMAGE "already defaults to a prebuilt image" when deploy/compose/compose.yml:5 is ${BUZZ_IMAGE:?...}, which fails closed with no default. The fix landed in b4455b1fa at 2026-08-21T10:35:45Z — the current head — and I read it directly: "already requires an explicit prebuilt image: BUZZ_IMAGE has no default and Compose fails without it." Exactly the correction asked for. GitHub's label just hasn't been refreshed by a re-review.
Verified independently:
- The VPS spec matches issue #21's offer — 1 vCPU, 1.9 Gi RAM, 496 MB swap, 49.5 G disk, identical numbers.
BUZZ_MAX_CONNECTIONS10000,BUZZ_SEND_BUFFER1000,BUZZ_MAX_CONCURRENT_HANDLERS1024 — exact match incrates/buzz-relay/src/config.rs.compose.ymldeclares no memory limits — zero matches formem_limit/resources.- DB writer and reader pools default to 50+50 against Postgres
max_connections=100. - The relay answers on its public host —
200, re-run rather than taken from the PR body. decided_inpointing at an open issue matches the sibling pattern (ADR-0017 on #193 reads the same way), so not a defect.- ADR-0018 collides with nothing merged or in flight (#281 takes 0019, #291 takes 0020, #308 takes 0021/0022).
- Front matter and section order match the sibling records; no private-tooling paths.
Two things to know before merging, neither a code defect:
- The red CI is an infrastructure flake, not your change.
Desktop Corefailed in thesetup-moldaction —HTTP request sent, awaiting response... Read error (Connection timed out)thentar: Error is not recoverable: exiting now, exit 2. That's a network timeout fetching the linker, on a PR that changes one markdown file. Re-running the job should clear it. - Non-blocker, PR body only: Escalations §2 says issue #22 is "open while its outcome is in production". #22 closed at
2026-08-21T03:48:44Z. Body staleness, not a defect in the record — not worth an issue, just noting it's moot now.
Ready for approval once the flaky job is re-run.
Dismissing as addressed. This review's blocker -- the ADR claiming BUZZ_IMAGE 'already defaults to a prebuilt image' when deploy/compose/compose.yml:5 is ${BUZZ_IMAGE:?...} and fails closed -- was fixed in b4455b1 (2026-08-21T10:35:45Z), which is the current head. Verified directly: the record now reads 'already requires an explicit prebuilt image: BUZZ_IMAGE has no default and Compose fails without it.' Review was against 2efb796.
serina-mcfall
left a comment
There was a problem hiding this comment.
Approved. Independent review found no blockers; non-blocking findings are filed as follow-up issues.
Summary
Records the sizing decision the deployment already made in practice: the cohort relay runs on the offered 1 vCPU / 1.9 Gi / 496 MB swap / 49.5 G host, accepted as-is. #21 was filed to settle this before deployment, but the measurements it named never completed and the deployment proceeded anyway, so this ratifies the live state rather than pretending the question is still open. The unresolved ceilings question is named as a follow-up ADR rather than folded into this one.
Related issue
Closes #21
Issue type
ADR
Agent provenance
Objective
Add
launchpad/decisions/ADR-0018-cohort-relay-vps-specification.mdaccepting the offered VPS specification unchanged.Impacted components
launchpad/decisions/ADR-0018-cohort-relay-vps-specification.md
Approach and rejected alternatives
Ratify the specification already in production. The alternative seriously considered was holding #21 open until #39 (load capacity) reports, which is what the issue's own comment thread recommended when it was filed. That was right at the time and is wrong now: the relay has been serving on this specification for days, so holding would leave the record saying "undecided" about an internet-facing host — exactly the silent, unrecorded trade #21 was written to prevent. A third option, ratifying and setting the connection and memory ceilings in the same record, was rejected as scope creep; the ceilings need their own evidence and their own ADR.
Verification
Command run:
Raw output:
The relay answers on 443, the three cluster-sized defaults cited in the ADR are real, and
deploy/compose/compose.ymldeclares zero memory limits. Separately in the same session, a desktop client authenticated towss://launchpad-buzz.devacademy.nzover NIP-42 and loaded 6 channels, which is what establishes that the host is genuinely serving rather than merely answering HTTP.Not verified
No resource figure on the live host was measured — not peak memory, not CPU, not disk. That is the central gap and it is stated plainly in the ADR's own Consequences section rather than papered over. Specifically not checked: whether the running relay actually inherits the default
BUZZ_MAX_CONNECTIONS=10000(inferred from the fact that the only place the cohort ever templated it is underlaunchpad/deploy/archived/, not observed on the host); whether the deployed container matches the compose file in this repo; and the disk sizing, which the local VM could never settle. I have no credentialed access to the VPS from this session.Security implications
No change to exposure — this PR adds one markdown file. What it records is security-relevant: the sizing-versus-hardening trade #21 feared did not happen (#20 and #5 both closed), but the relay very likely accepts up to 10,000 connections with a 1,000-message-per-connection buffer on a 1.9 Gi host with 496 MB of swap, and the Postgres writer and reader pools default to 50 each against Postgres's own default
max_connections=100. That is an availability exposure on an internet-facing host, documented here and escalated below rather than fixed in this PR.Escalations