Repository navigation
docs(apply): an unknown --build-id is refused before anything is applied (forge-cli#808) - #193
Merged
Merged
Conversation
…ied (forge-cli#808) fluid apply in a build mode now checks that --build-id names one of the contract's builds, before the apply hooks, tofu and any build, and refuses with apply_build_id_not_found. Documented in cli/apply.md (Build ids, the --build-id row, Errors you can hit), upgrading.md, the troubleshooting table the CLI's docs link opens (with #803's apply_build_identifier_invalid, also missing there) and operating-in-ci.md.
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
Documents forge-cli #808. Under
--mode amend-and-buildorreplace-and-build,fluid applynow checks that--build-idnames one of the contract'sbuilds[].id, right after the build-id check from #803. Ids match exactly, case and spaces included, as in the build runner. The check runs before the apply hooks,tofuand any build. An id that matches no build is refused withapply_build_id_not_found, which lists the ids the contract has.Before this, only the build runner checked the id. On the OpenTofu engine it starts after
tofu apply, so a mistyped--build-idprovisioned the product, and the run then stopped withBuild not foundand exit 1.forge-cli #808 is on main (squash-merged as
635ea30e, 2026-11-04), so the "onmain" wording is now true and this is ready to merge.edb5bc0a. On the files the squash touched, the only difference from that head is #806, which merged in between: two unrelated CHANGELOG entries and three other error-catalog entries.cli/apply.pyis identical, and so is theapply_build_id_not_foundcatalog entry the output block quotes. The documented behaviour and output are unchanged.main, not yet in a release" markers become "since X.Y.Z".Related CLI PR
Areas Updated
docs/cli/apply.md.--build-idmatch, a real output block and what changed.--build-idrow of "Build execution" gets a sentence.apply_build_id_not_foundrow.docs/upgrading.md: a bullet under "On forge-climainsince 0.26.0", after #803's. It notes that the exit code stays1and that a Command Center run recordsapply_build_id_not_foundwhere it recordedbuild_not_found:<id>.docs/advanced/production-troubleshooting.md: rows forapply_build_id_not_foundand for #803'sapply_build_identifier_invalidin "Environment, mode and plan-file errors". Neither event has a docs route of its own, so the CLI's "📖 Documentation" link for both opens this page, which did not mention either.docs/advanced/operating-in-ci.md: one sentence. A Jenkins stage 7 given anAPPLY_BUILD_IDthat names no build now fails before it applies anything.Checklist
npm run docs:devor built it withnpm run docs:buildNotes
fluid applyrun of the #808 branch. It is the full refusal as printed, suggestions included, and it was diffed byte for byte against that run.forge/core/pipeline_systems/_base.py. Stage 7 runsfluid apply runtime/plan.json … --mode "$MODE"and appends--build-id "$BUILD_ID"in the build modes. #808's gate refuses on the plan.json path too.data-product-forge==0.26.0; all pass.check_cli_docs.py(1,371 documentedfluidinvocations, the new one included), its--version-onlyand--markers-onlymodes,check_providers.pyandgen_contract_reference.py --check.npm run docs:build, thenscripts/check-dist-links.mjs: clean over 244 pages. The#build-idsanchor is in the builtcli/apply.html.lychee --offlineover the four pages: no new errors. The only 3 errors are existing root-relative links inapply.md, which CI resolves with its staged root dir.