Skip to content

chore: Migrate package manager from yarn to pnpm - #170

Merged
jsteinich merged 2 commits into
open-constructs:mainfrom
X-Guardian:chore/pnpm
Jun 10, 2026
Merged

jsteinich merged 2 commits into
open-constructs:mainfrom
X-Guardian:chore/pnpm

Conversation

@X-Guardian

@X-Guardian X-Guardian commented May 9, 2026 •

Copy link
Copy Markdown
Contributor

Description

Migrates the monorepo's package manager from Yarn (Classic / v1) to pnpm. The version is pinned via package.json#packageManager and activated through corepack, so there is no separately installed pnpm to keep in sync. No runtime/library behaviour changes — this is build-, CI-, and dependency-tooling only.

Why pnpm: stricter, non-hoisted node_modules (a package can only import what it declares), a content-addressed store (faster, less disk), and first-class workspace support. The strictness is the point — it surfaces undeclared-dependency bugs that Yarn's flat hoisting silently tolerated (see the punycode and bin notes below). Also v11 has supply chain protection on by default; package installs minimumReleaseAge set to 1 day.

Core migration:

  • Lockfiles & workspace config: removed yarn.lock (root, test/, tools/documentation-generation/) and .yarnrc.yml; added pnpm-lock.yaml and pnpm-workspace.yaml. The workspace lists packages/*, packages/@cdktn/*, examples/**, and tools/generate-function-bindings, plus onlyBuiltDependencies (allow-list for postinstall builds) and overrides (@types/react, jsii).
  • test/ is a standalone pnpm project, not a workspace member — its own pnpm-workspace.yaml makes it a self-contained workspace root, so pnpm's upward discovery stops there and never pulls in the repo root. This matches how the integration suite publishes packages to a local Verdaccio registry and installs them as a consumer would. Note: test/ installs without --ignore-workspace — that flag discards the local pnpm-workspace.yaml (including its allowBuilds), which under pnpm 11 then fails with ERR_PNPM_IGNORED_BUILDS for the unrs-resolver build script. The local workspace file already provides the isolation, so the flag was both redundant and harmful.
  • Workspace dependencies switched from 0.0.0 to workspace:* across the @cdktn/* packages.
  • Scripts & package manager refs: yarn … → pnpm … / pnpm exec … across root and package scripts, package.sh files (npm pack → pnpm pack | tail -n 1), and link-packages/integration:* scripts.
  • CI: every workflow now runs actions/setup-node + a new composite action .github/actions/setup-corepack-pnpm (enables corepack, activates the pinned pnpm, caches the corepack binary and the pnpm store) before pnpm ci. Yarn caches removed.
  • HUSKY: "0" set on every CI workflow. The root prepare script is husky (installs git hooks), and pnpm runs prepare on install. In CI that's pointless and fragile (no commits happen, and hook install can fail in the container/checkout state), so the env var disables it.

Non-obvious changes the strictness forced (each surfaced as a CI failure and fixed):

  1. cdktn-cli bin decoupled from build output. The bin field pointed at bundle/bin/cdktn, which only exists after a build. pnpm validates bin targets when linking workspace packages, so this broke install. Added a committed bin/cdktn launcher (require("../bundle/bin/cdktn.js")), repointed the bin field, deleted src/bin/cdktn and its build-time copy step, and made the CLI tests resolve the bin from package.json rather than hardcoding the path. The build config now compiles to a gitignored build-config/ dir.
  2. punycode declared in cdktn-cli. build.ts aliases punycode → punycode/ (userland package, to dodge Node's deprecated builtin). pnpm doesn't expose this undeclared transitive to cdktn-cli, so the esbuild alias couldn't resolve. Declared punycode as a direct dependency; added it to knip's ignoreDependencies (it's referenced only via the alias string, which knip can't trace).
  3. Other undeclared dependencies declared. Same root cause as punycode — packages used transitives that Yarn's hoisting exposed but pnpm doesn't. Added the missing direct deps where they're actually imported, e.g. @types/fs-extra in @cdktn/hcl-tools, @types/cross-spawn + cross-spawn in test/, and assorted @types/* (babel__generator, babel__template, minimatch).
  4. Provider-generator dep resolution made static. In constructs-maker.ts and the edge-schema test cli.ts, the jsii compile-against deps were built by mapping over a ["@types/node", "constructs", "cdktn"] array through require.resolve(${dep}/package.json). Rewrote them as explicit require.resolve("constructs/package.json") calls (one per dep) so both knip and pnpm's strict isolation can see the dependency edges. Also added { dereference: true } to the jsii output fs.copy so pnpm's symlinked node_modules are materialised as real files rather than copied as dangling links.
  5. New packages/cdktn/scripts/pack.mjs. cdktn bundles runtime deps (json-stable-stringify, semver, yazl) into its published tarball so jsii-pacmak can embed them in the Python/Java/Go/.NET targets. Under pnpm's symlinked layout, npm pack (invoked by pacmak) follows the symlinks into .pnpm/ and emits ..-escape tarball paths that extractors drop — leaving the bundled deps' transitives missing. The script stages cdktn's source into a temp dir, runs npm install --omit=dev there to get a real nested node_modules, then runs jsii-pacmak against the staging dir and copies dist/ back. Replaces the previous inline packaging.
  6. Testing.fakeCdktfJsonPath fixture path. Changed cdktfRelativeModules from ["./"] to ["./test/fixtures/"] so the test no longer scans the whole package root — under pnpm's layout ./ pulled in symlinked workspace content and broke the fixture's module resolution.

Checklist

  • I have updated the PR title to match CDKTN's style guide
  • I have run the linter on my code locally
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation if applicable
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works if applicable
  • New and existing unit tests pass locally with my changes

@X-Guardian
X-Guardian force-pushed the chore/pnpm branch 5 times, most recently from bd7db52 to 2d3ec54 Compare May 12, 2026 11:57
@X-Guardian
X-Guardian force-pushed the chore/pnpm branch 4 times, most recently from 550e7a7 to 7ef1d6f Compare May 22, 2026 16:29
@X-Guardian
X-Guardian force-pushed the chore/pnpm branch 3 times, most recently from 04e931c to b60c70e Compare May 24, 2026 14:08
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request May 25, 2026
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request May 25, 2026
so0k pushed a commit to gabegorelick/cdk-terrain that referenced this pull request May 25, 2026
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request May 26, 2026
jsteinich pushed a commit that referenced this pull request May 27, 2026
### Description

Updated the example `help` files to match the current `cdktn init`
templates. This removes some of the diff from #170 (yarn references)

Also:
- Updated the nuget link to
https://www.nuget.org/packages?q=Io.Cdktn.Providers and on the template
- Updated the Maven link to https://mvnrepository.com/artifact/io.cdktn
and on the template
- Added missing EOF line feeds where applicable on the template help
files

### Checklist

- [x] I have updated the PR title to match [CDKTN's style
guide](https://github.com/open-constructs/cdk-terrain/blob/main/CONTRIBUTING.md#pull-requests-1)
- [ ] I have run the linter on my code locally
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the
[documentation](https://github.com/open-constructs/cdk-terrain-docs/tree/main/content)
if applicable
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works if applicable
- [ ] New and existing unit tests pass locally with my changes

<!-- If this is still a work in progress, feel free to open a draft PR
until you're able to check off all the items on the list above -->

---------

Co-authored-by: Simon Heather <simon.heather@yulife.com>
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request Jun 1, 2026
jsteinich pushed a commit that referenced this pull request Jun 4, 2026
### Description

Aligns every workspace package and example on TypeScript 5.9.3, and
fixes the two `WebAssembly.instantiate` call sites (`@cdktn/hcl-tools`
and `@cdktn/hcl2json`) that fail to compile under newer TS.

#### Why 

The version was drifting. `@cdktn/hcl-tools` declared `^5.7.3` while the
other 10 workspace packages were exact-pinned to `5.4.5`, and the 22
example projects were split between `5.4.5` and `^5.7.3`. Under yarn
workspaces (hoisted node_modules) this drift was invisible — every
package got whatever yarn happened to hoist at the root. Under the
upcoming pnpm migration (strict, isolated `node_modules/.pnpm/` layout)
each package resolves its own range, so `hcl-tools` lands on TS 5.9.3
while everything else lands on 5.4.5 — and the build of `hcl-tools`
fails because TS 5.9.3 resolves `WebAssembly.instantiate(buffer, …)`
differently. We hit this when reproducing the pnpm branch (see "Root
cause" below).

The structural problem is the drift itself — over thirty independent
pins inviting future divergence. Two changes fix it together:

| Change | Effect |
|---|---|
| Every workspace package and example: `"typescript": "^5.0.0"` | Each
manifest declares only its real constraint ("we compile under TS 5.x").
|
| Root `resolutions`: `"**/typescript": "5.9.3"` | Single source of
truth for the actual resolved version. Bump = one line. |

The root devDep keeps `typescript` because root-level tooling
(`tsc-files`, `typescript-eslint`, `@typescript-eslint/parser`) declares
it as a peer.

**Root cause of the `bridge.ts` failures:**

In TS 5.7+ `Buffer<TArrayBuffer extends ArrayBufferLike = ArrayBuffer>`
and `ArrayBufferView<TArrayBuffer extends ArrayBufferLike =
ArrayBufferLike>` became generic. In TS 5.9.3 the overload resolver no
longer treats `Buffer<ArrayBufferLike>` as assignable to DOM's
`BufferSource = ArrayBufferView | ArrayBuffer`, so
`WebAssembly.instantiate(buffer, importObject)` falls through from

function instantiate(bytes: BufferSource, …):
Promise<WebAssemblyInstantiatedSource>

to the second overload

    function instantiate(moduleObject: Module, …): Promise<Instance>

`WebAssemblyInstantiatedSource` has a `.instance` property; `Instance`
does not. So `result.instance` errors with `TS2339`. The same code is
fine under TS 5.4.5/5.8.x because those versions matched the first
overload. Both `packages/@cdktn/hcl-tools/src/bridge.ts` and
`packages/@cdktn/hcl2json/src/bridge.ts` use the same pattern and need
the same fix.

This is a prerequisite for #170 

**Approach:** four steps.

1. **Loosen per-package ranges to `^5.0.0`** in all eleven workspaces
(`cdktn`, `cdktn-cli`, `@cdktn/cli-core`, `@cdktn/commons`,
`@cdktn/hcl-tools`, `@cdktn/hcl2cdk`, `@cdktn/hcl2json`,
`@cdktn/provider-generator`, `@cdktn/provider-schema`,
`tools/generate-function-bindings`, root) and across the 22
`examples/typescript/**` projects. Honest declarations: each package is
built and tested under whatever TS 5.x the root resolves.
2. **Pin via root `resolutions`**: add `"**/typescript": "5.9.3"`
alongside the existing `**/@types/react` and `**/jsii` resolutions.
Future bumps touch one line.
3. **Fix both `bridge.ts` call sites** — wrap the Buffer in `new
Uint8Array(...)` before passing it to `WebAssembly.instantiate` in
`packages/@cdktn/hcl-tools/src/bridge.ts` and
`packages/@cdktn/hcl2json/src/bridge.ts`. This pins the overload to the
`BufferSource` form regardless of how TS resolves
`Buffer<ArrayBufferLike>` against `BufferSource` in any future TS
release.
4. **`yarn install`** — refreshes lockfile; every requested `typescript`
range now resolves to 5.9.3.

The `bridge.ts` changes are required for this bump — without them
`@cdktn/hcl-tools` and `@cdktn/hcl2json` do not compile under TS 5.9.3.

**One incidental fix** — `examples/typescript/aws-multiple-stacks`
declared `@types/node: 18.11.19` while every other example declared
`20.17.51`. TS 5.9.3 surfaces the staleness as a structural-typing error
("Interface 'Buffer' incorrectly extends interface
'Uint8Array<ArrayBufferLike>'"). Bumped to `20.17.51` to match the rest.

### Checklist

- [x] I have updated the PR title to match [CDKTN's style
guide](https://github.com/open-constructs/cdk-terrain/blob/main/CONTRIBUTING.md#pull-requests-1)
- [ ] I have run the linter on my code locally
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the
[documentation](https://github.com/open-constructs/cdk-terrain-docs/tree/main/content)
if applicable
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works if applicable
- [ ] New and existing unit tests pass locally with my changes

---------

Co-authored-by: Simon Heather <simon.heather@yulife.com>
@X-Guardian X-Guardian closed this Jun 5, 2026
@X-Guardian X-Guardian reopened this Jun 5, 2026
@X-Guardian
X-Guardian marked this pull request as ready for review June 6, 2026 09:23
@X-Guardian
X-Guardian requested a review from a team as a code owner June 6, 2026 09:23
@X-Guardian
X-Guardian marked this pull request as draft June 6, 2026 09:23
@X-Guardian
X-Guardian force-pushed the chore/pnpm branch 3 times, most recently from 2eb0c8a to 4ddb8b8 Compare June 6, 2026 10:46
@X-Guardian
X-Guardian marked this pull request as ready for review June 6, 2026 11:21
@sakul-learning

sakul-learning commented Jun 6, 2026 •

Copy link
Copy Markdown
Contributor

I reviewed the latest head (4ddb8b8f) for the pnpm migration.

I also reran the relevant package/build/test commands through pnpm locally, and the direct package build/test path for cdktn passed.

Things that look good:

  • The configured package/build/test path runs successfully with pnpm.
  • The shared pnpm setup action is a good direction for keeping workflow setup consistent and cacheable.

Issues to address before merge:

  1. The release prepare-next job appears to use pnpm before setting pnpm up.

    Other release jobs use the new shared pnpm setup action before installing dependencies, but prepare-next goes straight from Node setup to pnpm ci. On a fresh runner/container this can fail with pnpm: command not found or use an unexpected corepack/pnpm state.

    Suggested fix: add the same shared pnpm setup step used by the other release jobs before dependency installation in prepare-next.

  2. One reusable workflow command appears to be using invalid Nx syntax.

    The command pattern using nx run --scope <package> build fails locally. The equivalent target form, nx run <package>:build, succeeds. The PR checks are green, so this looks like a latent workflow/release-path issue rather than a currently failing PR unit-test issue.

    This is also the new PR-specific workflow security finding from zizmor: the package input is interpolated directly into a shell command. Prefer validating/allowlisting the input and passing it through env: before using it in shell.

  3. Minor cleanup: a few user-facing references still mention Yarn.

    Examples:

    • CLAUDE.md still says yarn nx test --watch is the recommended dev loop, immediately after the surrounding examples were migrated to pnpm.
    • test/run-against-dist still prints messages telling users to run yarn run package / yarn run package:$lang when dist outputs are missing.

    These are not blockers, but they would be confusing after this migration lands. The remaining examples/diagnostics should be updated to pnpm.

Security scan note:

  • I ran zizmor against the workflows/actions and compared the PR head with the existing baseline.
  • Most findings are pre-existing workflow hardening concerns, not regressions introduced by this PR.
  • I created a separate tracking issue for the broader tech debt/security-hardening work, especially cache-poisoning and workflow-permission concerns: Track GitHub Actions workflow security hardening #247

Overall: the pnpm migration itself is in good shape and the PR checks are green, but I would still fix the two workflow issues above before merging because they affect release/reusable workflow paths that the PR checks do not fully exercise.

@jsteinich jsteinich left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a check for existing mentions of yarn and found a few remaining pieces:

  1. Referenced in CLAUDE.md and run-against-dist - we should just clean these up now
  2. The dependency pinner tool - can just remove the entire tool in a follow-up PR
  3. NodePackageManager - we should probably support pnpm in the cli given that we are switching to it. Can be done a follow-up PR

Other pieces noticed:

  • The prepare-next job in release.yml is missing the corepack pnpm setup
  • The lint job in quality.yml has 2 setup-node steps (may have already been there, so not critical)
  • nx run --scope <package> build that was added to the unit-test job in unit.yml seems unnecessary
  • The TypeScript examples are a bit of a mixed story. The help says to run npm commands, but the packages are setup for pnpm workspaces. While that's nice for ci / cdktn developers, it's confusing for end users looking at the examples. They are meant for end users, so we should make sure they are presented consistently even if that means an extra step in ci.

Comment thread knip.jsonc Resolved
@X-Guardian

Copy link
Copy Markdown
Contributor Author

I've resolved all the review comments.

The typescript examples are no more or less inconsistent than they were before. i.e. a mix of pnpm and npm vs yarn and npm.

@jsteinich

Copy link
Copy Markdown
Contributor

The typescript examples are no more or less inconsistent than they were before. i.e. a mix of pnpm and npm vs yarn and npm.

While I mostly agree with that, there is a small regression.

Previously when running npm install in an exampled you'd get:

npm error notarget: No matching version found for cdktn@0.0.0.

Now you get:

npm error Unsupported URL Type "workspace:": workspace:*

Ideally it would just work, but that's more of a separate issue.

The error message in the first case is much more clear what is wrong. As there's a lot here, I can see the value in merging as is and following up on that, but if there's an easy way to resolve, I'd like to see that.

@X-Guardian

Copy link
Copy Markdown
Contributor Author

We can have a pre-processing script on the examples integration tests workflow that replaces the package.json properties in the examples with what is needed to run the tests, but lets do that in another PR.

@jsteinich
jsteinich merged commit d23da4e into open-constructs:main Jun 10, 2026
256 checks passed
@gabegorelick gabegorelick mentioned this pull request Jun 10, 2026
1 of 8 tasks
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request Jun 10, 2026
We switched to pnpm in open-constructs#170. Adding it to mise means devs don't have to
manually install it.

Mise could also eventually take over from corepack/nvm in CI. But that
is not implemented here.
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request Jun 10, 2026
We switched to pnpm in open-constructs#170. Adding it to mise means devs don't have to
manually install it.

Mise could also eventually take over from corepack/nvm in CI. But that
is not implemented here.
gabegorelick added a commit to gabegorelick/cdk-terrain that referenced this pull request Jun 10, 2026
We switched to pnpm in open-constructs#170. Adding it to mise means devs don't have to
manually install it.

Mise could also eventually take over from corepack/nvm in CI. But that
is not implemented here.
so0k pushed a commit to gabegorelick/cdk-terrain that referenced this pull request Jun 13, 2026
We switched to pnpm in open-constructs#170. Adding it to mise means devs don't have to
manually install it.

Mise could also eventually take over from corepack/nvm in CI. But that
is not implemented here.
so0k added a commit that referenced this pull request Jun 13, 2026
We switched to pnpm in #170. Adding it to mise means devs don't have to
manually install it.

Mise could also eventually take over from corepack/nvm in CI. But that
is not implemented here.

EDIT: this change also required updating lerna, nx, and knip to support
pnpm v11's multi-doc lock file format.

<!--

Unless this is a very simple 1-line-of-code change, please create a new
issue describing the change you're proposing first, then link to it from
this PR.

Read more about our process in our contributing guide:
https://github.com/open-constructs/cdk-terrain/blob/main/CONTRIBUTING.md

-->

### Related issue

Fixes # <!-- INSERT ISSUE NUMBER -->

### Description

Add pnpm to mise so devs don't have to manually install pnpm themselves.

### Checklist

- [x] I have updated the PR title to match [CDKTN's style
guide](https://github.com/open-constructs/cdk-terrain/blob/main/CONTRIBUTING.md#pull-requests-1)
- [ ] I have run the linter on my code locally
- [ ] I have performed a self-review of my code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the
[documentation](https://github.com/open-constructs/cdk-terrain-docs/tree/main/content)
if applicable
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works if applicable
- [ ] New and existing unit tests pass locally with my changes

<!-- If this is still a work in progress, feel free to open a draft PR
until you're able to check off all the items on the list above -->

---------

Co-authored-by: so0k <vincent.drl@gmail.com>
Co-authored-by: Simon Heather <32168619+X-Guardian@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
so0k pushed a commit that referenced this pull request Jul 3, 2026
🤖 Release PR — merge to cut a new release. Kept open and rebased
as commits land on `main`.
---


<details><summary>0.23.4</summary>

##
[0.23.4](v0.23.3...v0.23.4)
(2026-07-02)


### Features

* **cli:** validate Terraform CLI feature versions
([#237](#237))
([32d434c](32d434c))
* declared Terraform/OpenTofu target versions (validation foundation)
([#269](#269))
([0aa2343](0aa2343))
* **lib:** S3-backend - Add `useLockfile` field and update
`dynamodbTable` deprecated JSDoc
([#234](#234))
([32a408f](32a408f))
* **lib:** validate Fn usage against Terraform/OpenTofu versions
([#268](#268))
([cdf8115](cdf8115))


### Bug Fixes

* **cli:** don't mistake terraform error output for a missing-variable
prompt
([#267](#267))
([0ea946f](0ea946f))
* **cli:** release terraform state lock when interrupting diff/deploy
([#284](#284))
([de617db](de617db))
* **cli:** resolve prebuilt Java provider versions via repo1.maven.org
([#285](#285))
([d5af07d](d5af07d))
* **gha:** Adding CHANGELOG.md to prettier ignore list
([#258](#258))
([5160469](5160469))
* **gha:** pull jsii-terraform CI image from GHCR instead of Docker Hub
([#261](#261))
([f19d34b](f19d34b))
* **provider-generator:** copy only publishable files into the jsii
compile bundle
([#292](#292))
([562d4c7](562d4c7))
* **provider-generator:** match shorthand provider sources against
OpenTofu schema keys
([#293](#293))
([fda0103](fda0103))
* **release:** add Changelog title for correct release-please insertion
([#255](#255))
([004818a](004818a))
* **release:** drop devEngines.packageManager that broke npm publish
([ef508a6](ef508a6))
* **tools:** repair generate-function-bindings tool
([#273](#273))
([821e1cf](821e1cf))


### Miscellaneous Chores

* Add Gradle to Mise config
([#271](#271))
([1578270](1578270))
* add pnpm to mise
([#266](#266))
([48ab91f](48ab91f))
* add uv to mise
([#260](#260))
([163cf3d](163cf3d))
* **deps:** bump nrwl/nx-set-shas from
38457b511e60ee4e1da09255b658e480748a1af4 to
afb73a62d26e41464e9254689e1fd6122ee683c1
([#236](#236))
([b5ac018](b5ac018))
* **deps:** bump the github-actions-backward-compatible group across 1
directory with 7 updates
([#235](#235))
([de67d9f](de67d9f))
* **deps:** replace uuid dependency with node:crypto.randomUUID
([#291](#291))
([6d3657a](6d3657a))
* ESLint ignore test edge-provider-bindings
([#270](#270))
([ba407bb](ba407bb))
* Fix Verdaccio logging config
([#272](#272))
([aded64b](aded64b))
* **gha:** parallelize provider binding generation for documentation
examples
([#244](#244))
([0a9c955](0a9c955))
* Migrate package manager from yarn to pnpm
([#170](#170))
([d23da4e](d23da4e))
* migrate planning artifacts to cdktn-planning [skip ci]
([968c358](968c358))
* **release:** add release-please automation for versioning
([#243](#243))
([c759eec](c759eec))
* Remove dependency-pinner tool
([#250](#250))
([42c27d5](42c27d5))
* Remove unused dependencies
([#281](#281))
([c7de65e](c7de65e))
* **tests:** run verdaccio in-process
([#248](#248))
([c17677d](c17677d))
* Update JSII version constraint
([#245](#245))
([d89558f](d89558f))
* Update scheduled workflows to only run on open-constructs/cdk-terrain
([#256](#256))
([ba408cf](ba408cf))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: open-constructs-cdktn[bot] <291052431+open-constructs-cdktn[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

I'm going to lock this pull request because it has been closed for 30 days. This helps our maintainers find and focus on the active issues. If you've found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Jul 10, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants