Skip to content

fix(quickstart): pin current build + force protocol 27 via SSOT#131

Merged
AquiGorka merged 2 commits into
mainfrom
fix/quickstart-protocol
Jul 8, 2026
Merged

fix(quickstart): pin current build + force protocol 27 via SSOT#131
AquiGorka merged 2 commits into
mainfrom
fix/quickstart-protocol

Conversation

@AquiGorka

Copy link
Copy Markdown
Contributor

What & why

stellar/quickstart v640+ images (current :latest = v642-b1163.1) ship stellar-core v27 but default the --local network to protocol 25, which fails every contract upload with HostError(Context, InternalError). v639 (core v26) worked, hence the earlier :v639-b1103.1-latest pin.

Root cause is the image's protocol-default misfire, not a client/toolchain problem. Forcing the protocol to match the core makes uploads/deploys work — verified: the full deploy flow (and council-console's deploy_test) is clean on the current image with --protocol-version 27, with both old and new stellar-cli. So we fix forward onto the current build instead of freezing on v639.

Changes

  • stellar-pin.env (new) — single source of truth: the pinned image tag (v642-b1163.1-latest, never floating :latest) + STELLAR_PROTOCOL_VERSION=27.
  • All 11 compose files (8 root + e2e/, lifecycle/, multi-asset/) — interpolate ${STELLAR_QUICKSTART_IMAGE} and append --protocol-version ${STELLAR_PROTOCOL_VERSION}.
  • test.sh, infra-up.sh, down.sh — source the SSOT; infra-up.sh's stellar container start now uses the pinned tag + --protocol-version.
  • lifecycle/provider.ts — reads the SSOT and passes the image + --protocol-version.
  • 4 reusable workflows — a "Load Stellar quickstart pin (SSOT)" step injects the two vars into $GITHUB_ENV before docker compose.
  • .github/workflows/quickstart-drift.yml (new) — weekly + workflow_dispatch alarm: compares live testnet protocol (Horizon, RPC fallback) to the pin and posts to Discord (secrets.DISCORD_WEBHOOK_URL, read only from the secret) on every run while testnet is ahead. Wired but dormant until the secret is set out-of-band; minimal contents: read permission.

--protocol-version is marked a workaround at each site, to remove when a fixed image ships.

Validation

  • Compose renders + boots with --local --limits unlimited --protocol-version 27; network comes up at protocol 27.
  • Deploy flow clean on v642-b1163.1-latest --protocol-version 27 (upload + instantiate + add/remove provider).
  • deno fmt --check + deno lint green in all CI matrix dirs (deno 2.9.1); shell bash -n clean; all workflow YAML parses.

No version bump: local-dev has no version field / release automation.

AquiGorka added 2 commits July 7, 2026 10:59
The quickstart v640+ images (current :latest = v642-b1163.1) ship
stellar-core v27 but default the --local network to protocol 25, which
fails every contract upload with HostError(Context, InternalError).
v639 (core v26) worked, hence the earlier :v639-b1103.1-latest pin.

Fix forward instead of freezing on v639: move every quickstart usage
onto the validated v642-b1163.1-latest build and force --protocol-version
27 (matches the bundled core and live testnet). Verified the full deploy
flow clean on the current image with the flag.

Single source of truth: stellar-pin.env holds the image tag + protocol.
Read by the docker-compose.*.yml files, e2e/lifecycle/multi-asset compose
(via ${STELLAR_QUICKSTART_IMAGE}/${STELLAR_PROTOCOL_VERSION}), test.sh,
infra-up.sh, down.sh, lifecycle/provider.ts, and the reusable CI workflows
(load step -> $GITHUB_ENV) so they cannot diverge. --protocol-version is
marked a workaround at each site, to drop when a fixed image ships.

Add quickstart-drift.yml: weekly + dispatch alarm that compares live
testnet protocol to the pin and nags Discord (secrets.DISCORD_WEBHOOK_URL,
dormant until set) on every run while testnet is ahead.
e2e.yml runs docker compose inline on PRs (it does not call the reusable),
so it also needs the SSOT loaded into $GITHUB_ENV before compose can
interpolate ${STELLAR_QUICKSTART_IMAGE}/${STELLAR_PROTOCOL_VERSION}.
@AquiGorka AquiGorka merged commit 5f1f827 into main Jul 8, 2026
10 checks passed
@AquiGorka AquiGorka deleted the fix/quickstart-protocol branch July 8, 2026 12:38
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.

1 participant