Plugin SDK Release Notes

This page tracks releases of the formae Plugin SDK packages:

  • pkg/plugin - Core SDK for building plugins
  • pkg/plugin-conformance-tests - Conformance test framework
  • formae-plugin-template - Scaffold for new plugins

March 2026

conformance-tests v0.1.25

Released March 17, 2026

Feature: Regex support for test filter

The TEST= parameter now supports /…/ delimited regular expressions for flexible test group selection. For example, TEST='/.*-chart/' selects all chart tests and TEST='/^cluster.*/' selects all cluster-scoped resources. Regex and literal segments can be mixed in a single comma-separated filter (e.g., TEST='/.*-chart/,namespace'). Invalid regex patterns cause immediate failure with a clear error message. See Filtering Tests for details.

Feature: Configurable discovery timeout

The discovery test timeout is now configurable via the FORMAE_TEST_DISCOVERY_TIMEOUT environment variable (in minutes). Previously hardcoded to 2 minutes, this can now be increased for plugins with many resource types or chart-based test cases that need more time for discovery to complete. See Environment Variables for details.


conformance-tests v0.1.24

Released March 12, 2026

Fix: Retry create/delete operations on recoverable errors

The test harness now retries CreateResource and DeleteResource operations when the plugin returns a recoverable error, instead of failing the test immediately. This reduces flaky test failures caused by transient cloud provider errors during conformance runs.


conformance-tests v0.1.23

Released March 10, 2026

Fix: Honor @HasProviderDefault annotation in property comparison

Previously, conformance tests ignored extra fields returned by plugins, which could hide issues where plugins return unexpected data. Tests now validate that extra fields in the actual state are only allowed if marked with @HasProviderDefault in the schema. Unexpected extra fields will now correctly fail the test.


conformance-tests v0.1.22

Released March 9, 2026

Fix: Property comparison for Listing fields containing resolvables

Previously, conformance tests would fail for schemas with Listing fields where elements contained resolvable references (e.g., subjects: Listing<Subject> with a resolvable namespace property inside Subject). The test framework now correctly compares these nested resolvables.


February 2026

plugin v0.1.14

Released February 23, 2026. Requires formae ≥0.82.2

Fix: Transitive pkg/model dependency

Fixed incorrect transitive dependency on pkg/model that caused EDF serialization errors. The pkg/model dependency is now pinned to v0.1.5 across all SDK modules.


conformance-tests v0.1.21

Released February 23, 2026. Requires plugin ≥0.1.14

Fix: Transitive pkg/model dependency

Bumped pkg/model to v0.1.5 to match plugin v0.1.14, fixing EDF serialization errors caused by mismatched transitive dependencies.


plugin-template

Feature: verify-schema CI job

Added a verify-schema CI job to the template that validates PKL schemas can be generated correctly, catching schema errors before they reach plugin releases.


conformance-tests v0.1.20

Released February 23, 2026

Fix: Nested Resolvables in SubResource map comparison

compareProperties() used flat string comparison for non-Resolvable, non-array values. When a SubResource map (e.g., ResourceLifecycleConfig) contained a nested Resolvable reference, the entire map was string-compared — $visibility:Clear from Pkl eval vs $value:arn:... from resolved inventory — causing false test failures.

Added recursive compareMap() that delegates to compareResolvable() for nested Resolvables, compareArrayUnordered() for arrays, and recurses into sub-maps.


plugin v0.1.13

Requires formae ≥0.82.0

Feature: HasProviderDefault field hint

New hasProviderDefault annotation for fields where cloud providers assign default values (e.g., S3 bucket encryption, SQS visibility timeout).

@formae.FieldHint { hasProviderDefault = true }
bucketEncryption: BucketEncryption?

When a field with this hint exists in actual state but is not specified by the user, formae accepts the provider's default instead of generating a "remove" operation. This prevents oscillation during reconcile cycles.

See the schema reference for details.


conformance-tests v0.1.19

Released February 10, 2026

Improvement: Robust property comparison for arrays, resolvables, and string escaping

This release significantly improves how the conformance test framework compares expected vs actual resource properties:

  • Order-independent array comparison — All array properties are now compared as unordered sets. Elements are serialized to JSON and sorted before comparison, eliminating false failures caused by CloudControl returning arrays in a different order than specified in PKL.

  • Resolvable handling inside arrays — Arrays containing resolvable references (e.g., Tags with resolved values) are now matched element-wise using metadata keys ($label, $type, $stack, $property). Resolvables are handled gracefully after extraction, where $value may no longer be present.

  • String escaping normalization — JSON/PKL round-trip differences in backslash escaping no longer cause false mismatches. Extraction comparison now reuses the same comparison logic as inventory comparison, benefiting from all the above improvements.


plugin v0.1.12

Released February 6, 2026

Fix: pkl-go race condition

Fixed a race condition in pkl-go's NewProjectEvaluator where a late message from the pkl subprocess could kill the evaluator manager's listen loop, causing evaluation failures. This primarily affected CI environments under resource pressure.


plugin v0.1.11

Released February 5, 2026

Feature: Plugin telemetry metrics

Plugins now export Ergo actor framework metrics via OpenTelemetry, providing visibility into plugin process health and performance.


conformance-tests v0.1.14

Released February 4, 2026

Feature: Configurable test timeout

Override the default 5-minute timeout for resources that take longer to provision:

make conformance-test TIMEOUT=900

Note: Requires updating your Makefile from the plugin template repository.


Feature: Config directory support

You can now create a config/ directory under testdata/ containing shared Pkl code (such as targets or stacks). Files in this directory are not picked up as test cases by the conformance test framework.


January 2026

conformance-tests v0.1.13

Released January 31, 2026. Requires plugin v0.1.9.

Feature: Parallel test execution with configurable Ergo ports

Run conformance tests in parallel to significantly reduce test execution time:

make conformance-test PARALLEL=10

When running parallel tests, multiple formae agent instances need unique ports for Ergo node communication. This release adds ergoPort configuration to prevent port conflicts.

Note: Requires updating your Makefile from the plugin template repository.


conformance-tests v0.1.12

Released January 30, 2026

Feature: Parallel test execution support

Added infrastructure for running conformance tests in parallel via FORMAE_TEST_PARALLEL environment variable.


conformance-tests v0.1.10

Released January 30, 2026

Conformance test improvements

  • Faster and more reliable discovery tests in CI environments
  • Extract validation step now runs correctly for all extractable resources
  • Improved error messages when validations fail

plugin v0.1.9

Released January 31, 2026

Feature: Configurable Ergo port

Plugins now read FORMAE_ERGO_PORT environment variable to configure Ergo acceptors, enabling parallel test execution.


plugin v0.1.8

Released January 30, 2026

Fix: Plugin log levels now preserved

Plugin logs were incorrectly routed through stderr, causing the formae agent to treat all plugin logs as errors regardless of their actual log level. Logs now route through stdout with correct log levels preserved.