refactor(cli): install the operator by appVersion tag, not a pinned digest#109
Merged
Conversation
…igest P5 prep. The embedded operator install pinned the manager image to a hardcoded digest (v0.1.1), which predates the genesis-funded faucet wallet — so `yacd devnet`/`yacd install` deployed an operator that creates no funded wallet. The operator and CLI ship in one coupled release, so the CLI cannot digest-pin its own release (the image digest does not exist until the release builds). Instead, let the default install resolve the manager image to the chart's appVersion (`repository:appVersion`) — which, because operator and CLI release together, always points at the matching, already-published image. `Default()` now sets only the image repository; the chart's existing `yacd.image` helper falls back to `repository:appVersion` when no digest/tag is set. Behavior change: an explicit `--set image.digest` override still produces a digest-pinned render (digest wins in the helper), but a `--set image.tag` override now REPOINTS the image (`repository:tag`) rather than being shadowed by the old embedded digest. Both remain unsupported configurations; the supported way to change the operator version is to upgrade the CLI. - values.go: drop defaultManagerDigest; Default() sets only Repository - render/values/install tests: assert repository:appVersion (derived from the embedded chart's appVersion, version-agnostic); cover digest-override-pins and tag-override-repoints; install help/Model-A text rewritten for tag pinning Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jmgilman
added a commit
that referenced
this pull request
Jun 5, 2026
…ion install pin, 0.2.0
Sessions 059 and 061 removed the in-cluster HTTP faucet entirely: `yacd topup`
is gone, `spec.chainAPI.{faucet,wallet}` and the FaucetReady/WalletReady
conditions are deleted, and the YACD_FAUCET_* env vars and endpoints.json
faucetUrl are removed. Funding is now CLI-native: every local network gets a
genesis-funded `faucet` wallet, and `yacd wallet {list,add,topup,export,remove}`
builds, signs, and submits transactions directly over Ogmios/Kupo.
- Rewrote funding.md around `yacd wallet`; updated getting-started step 5,
connecting-tools, testing, troubleshooting, recipes, index, and the
architecture/security concepts to the wallet model (security now covers wallet
key custody + local signing instead of the deleted topup trust gate).
- reference/cli.md: replaced the `topup` section with a `wallet` section, dropped
the faucet rows from the YACD_* contract / endpoints.json / list / info,
retabled the Commands list.
- reference/cardanonetwork.md / environment.md: removed the faucet/wallet spec,
status, conditions, and explicit-field rows.
- Install (#109/#87): operator is now appVersion-tag-pinned (not digest); fixed
the install docs (`image.*` all repoint now), bumped version references to
0.2.0/v0.2.0, and dropped the removed faucet image/flag from configuration.md.
Verified: mkdocs build --strict clean; full residual-reference sweep clean;
`yacd wallet`/`install` --help match. Live smoke pending.
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
P5 prep — the first step toward shipping the faucet-free, genesis-wallet
operator end to end.
The CLI's embedded operator install pinned the manager image to a hardcoded
digest (v0.1.1), which predates the genesis-funded
faucetwallet (#97). Sotoday
yacd devnet/yacd installdeploy an operator that creates no fundedwallet. Because the operator and CLI ship in one coupled release (release-please
root
yacd), the CLI can't digest-pin its own release — the image digest doesn'texist until the release builds.
This makes the default install resolve the manager image to the chart's
appVersion (
repository:appVersion). Since operator and CLI release together,that tag always points at the matching, already-published image — so the next
release's CLI installs the next release's operator with no digest chicken-and-egg
and no version lag. (Maintainer-chosen approach.)
Change
cli/internal/operator/values.go: dropdefaultManagerDigest;Default()setsonly the image repository. The chart's existing
yacd.imagehelper falls back torepository:appVersionwhen no digest/tag is set.Behavior change (override semantics)
--set image.digeststill produces a digest-pinned render (digest wins in the helper).--set image.tagnow repoints the image (repository:tag) instead of beingshadowed by the old embedded digest.
Both remain unsupported configurations; the supported way to change the operator
version is to upgrade the CLI. The
installhelp text and the in-code comment areupdated accordingly.
Tests
values_test.go:Default()sets only the repository (no digest/tag).ssa/render_test.go: default render isrepository:appVersion, derived from theembedded chart's appVersion (version-agnostic, so it survives the 0.1.x→0.2.0
bump); added coverage that an
image.digestoverride pins and animage.tagoverride repoints.
install_test.go: default install image is appVersion-pinned (no digest).moon run root:checkandmoon run root:testgreen.Sequencing
This must merge before the release-please PR #87 (
chore(master): release 0.2.0)so the v0.2.0 CLI ships with appVersion pinning and installs the v0.2.0 operator.
🤖 Generated with Claude Code