Skip to content

ci(publish): default the damlc component to 3.5.2 - #42

Merged
monsieurleberre merged 1 commit into
mainfrom
ci/damlc-default-3.5.2
Sep 2, 2026
Merged

ci(publish): default the damlc component to 3.5.2#42
monsieurleberre merged 1 commit into
mainfrom
ci/damlc-default-3.5.2

Conversation

@monsieurleberre

Copy link
Copy Markdown
Contributor

Defaults the DAR publish pipeline's damlc component to 3.5.2.

The mismatch

The pipeline declared damlc 3.4.11 while every archive it processes is newer — the vendored Splice DARs embed Sdk-Version: 3.5.2, and all six daml.yaml files in this repo pin sdk-version: 3.5.2.

To be precise about the blast radius: the component is written into a generated dpm-workspace/daml.yaml (_publish-dar-packages.yaml:126-133) alongside the dpm-codegen-cs OCI bundle, and it is the bundle — not damlc — that reads the DARs. So this was never miscompiling anything. It did leave the pipeline's stated contract untrue, and it invites a real mismatch the first time something does read it.

Why it has to land before the next tag

release.yaml contains no reference to damlc at all: it calls publish-splice.yaml and publish-daml-finance.yaml without a damlc_version, so each leg falls back to its own default. Those workflows then forward the value explicitly to the reusable, which means the reusable's default and resolve-inputs.sh's ${DAMLC_VERSION_INPUT:-…} fallback are never consulted.

The upshot is that these defaults are the effective value on a tag push, and there is no dispatch input that can override them. The last release ran with DAMLC_VERSION: 3.4.11 for exactly this reason.

Seven sites, not five

The literal was duplicated beyond the two workflow inputs that advertise it — both the workflow_call and workflow_dispatch triggers of each publish workflow carry it:

  • publish-splice.yaml:19 and :60
  • publish-daml-finance.yaml:20 and :62
  • _publish-dar-packages.yaml:35 — the shared reusable's own default
  • .github/scripts/resolve-inputs.sh:43EFFECTIVE_DAMLC="${DAMLC_VERSION_INPUT:-3.4.11}", the actual runtime fallback
  • .github/scripts/resolve-inputs.sh:17 — its usage text

Zero 3.4.11 literals remain under .github/.

Deliberately not touched

Four 3.4.11 references elsewhere in the repo are unrelated or historical and stay as they are: two CHANGELOG.md entries (one of which records the fixtures moving 3.4.11 → 3.5.2), a doc-comment in SignatureErasure.scala naming the daml-lf-archive 3.4.11 API, and an opaque fixture string in check-license-headers.test.sh.

On the value

3.5.2 is the newest damlc that exists — the highest tag under components/damlc, with the 3.5, devnet, testnet and mainnet channel tags all resolving to it. Note that the newest SDK is 3.5.7, but damlc_version names a component, and passing an SDK version clears the regex in resolve-inputs.sh:53 and then fails at component pull. daml-script, driven by the same input (_publish-dar-packages.yaml:140), tops out at 3.5.2 as well.

Verification

Planned before the release tag: a publish-splice.yaml dispatch with dry_run=true, which exercises the component pull and the DAR processing without touching nuget.org or the release counters.

No CHANGELOG entry: publish-pipeline tooling, no emitted output and no public-surface change.

The DAR publish pipeline declared damlc 3.4.11 while every archive it
processes is newer: the vendored Splice DARs embed Sdk-Version 3.5.2, and
all six daml.yaml files in this repo pin sdk-version: 3.5.2.

The component is written into a generated dpm-workspace/daml.yaml
alongside the dpm-codegen-cs OCI bundle, and it is the bundle -- not
damlc -- that reads the DARs, so this was never miscompiling anything.
It did leave the pipeline's stated contract untrue, and there is no way
to correct it at release time: release.yaml passes no damlc_version to
either DAR leg, so these defaults are the effective value on a tag push.

The literal was duplicated across seven sites -- both triggers of each
publish workflow, the shared reusable, and resolve-inputs.sh (the actual
runtime fallback, plus its usage text). No 3.4.11 remains under .github/.

3.5.2 is the newest damlc that exists: it is the highest tag under
components/damlc, and the 3.5, devnet, testnet and mainnet channel tags
all resolve to it. daml-script, driven by the same input, tops out there
too.
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Scala coverage

Code Coverage

Package Line Rate Branch Rate Health
studio.peaceful.daml.codegen.helper 97% 96%
Summary 97% (691 / 711) 96% (159 / 165)

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

C# coverage

Code Coverage

Package Line Rate Branch Rate Complexity Health
Daml.Codegen.CSharp 97% 97% 1394
Daml.Codegen.CSharp.Cli 100% 100% 3
Daml.Codegen.Intermediate 100% 88% 30
Daml.Codegen.Testing.Conformance 48% 47% 389
Daml.Ledger.Abstractions 93% 94% 40
Daml.Ledger.Abstractions.Testing.Conformance 77% 55% 22
Daml.Runtime 94% 90% 872
Summary 86% (5807 / 6722) 88% (2274 / 2582) 2750

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

C# build matrix

shard result duration
macos-amd64 ✅ success 1m 43s
macos-arm64 ✅ success 1m 27s
ubuntu-amd64 ✅ success 1m 44s
ubuntu-arm64 ✅ success 1m 09s
windows-amd64 ✅ success 1m 56s
windows-arm64 ✅ success 1m 54s

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Scala build matrix

shard result duration
macos-amd64 ✅ success 2m 22s
macos-arm64 ✅ success 50s
ubuntu-amd64 ✅ success 1m 04s
ubuntu-arm64 ✅ success 50s
windows-amd64 ✅ success 1m 42s

@monsieurleberre
monsieurleberre merged commit 59c2801 into main Sep 2, 2026
24 checks passed
@monsieurleberre
monsieurleberre deleted the ci/damlc-default-3.5.2 branch September 2, 2026 07:57
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