Charm Tech pulse 2026#05

This pulse we made a few welcome additions to ops.testing and worked on several other fixes across the board. We also investigated using Copilot for migrating integration tests and continued preparing the relation interface design specification. We’re pleased to welcome two new interface libraries to Charmlibs!

Ops

  • Added support for automatically loading charm metadata in testing when using charmcraft extensions (such as the 12-factor ones) (#2367)
  • Updated testing.State.get_relation so you can pass a relation in, guaranteeing that the type of the relation you get out matches (#2359)
  • Make breakpoints in charm code work in testing (#2363)
  • Avoid holding onto references to user created dictionaries in testing (#2349)
  • Added type checking of our example charms with mypy to our CI to help avoid breakages for charms that use mypy – though we recommend pyright (#2360)

Charming

  • Published some guidance for using Copilot to do the bulk of the work migrating integration tests to Jubilant.
  • Fixed an issue with Concierge where running with an already-bootstrapped K8s would break that K8s (#161)
  • Simplified the SSH key Jubilant integration tests to slightly decrease running time (#264)
  • Fixed a regression in Juju where exec results would have trailing newlines stripped in JSON format (#21929)
  • Investigated moving the Kubeflow User Acceptance tests to Jubilant.
  • The relation interface design specification has gone through the first round of reviews and subsequent updates. Feedback from the wider charming community is very welcome!
  • Planning how to allow charms to express to Juju that this charm can only run on a machine substrate.

Charmlibs

  • Updated docs to make it clear that you should use just interface init when adding a new interface library (#354)
  • Added CI to ensure that charm libraries maintain up-to-date lock files (#356)
  • Oversaw the addition of the new K8s backup-target interface library (#353)
  • Oversaw the addition of the new OTLP interface library (#352)
1 Like