Files
ConfigKit/docs/releases/v0.10.2.md

3.8 KiB

ConfigKit v0.10.2

This patch release fixes edge-case loading failures, resource cleanup, and limit accounting, and simplifies ConfigKit's internal loading machinery. Public APIs and documented configuration semantics remain unchanged from v0.10.1.

Fixes

  • Terminate pointer-only recursive type traversal safely during decoding and schema-path resolution, preserving nullable values and supported recursive structures. Roll back failed dynamic descriptor construction so subsequent operations do not reuse incomplete state or panic.
  • Accept finite, non-cyclic slice views that share backing storage while retaining cycle detection and detached output.
  • Deactivate resolution, validation, and version-check contexts when callbacks panic, and close library-owned import roots during panic unwinding. The original application panic continues to propagate.
  • Report directory enumeration and close failures instead of treating them as optional absence, including failures reported as not-exist after a successful open. Genuinely missing optional directories retain their existing behavior.
  • Reuse completed symlink dependencies during host and native import discovery, avoiding exponential repeated expansion of finite link graphs while retaining cycle detection and containment checks.
  • Check existing projection budgets before bulk container allocation and account for the complete retained inspection-history graph, including replay and separately copied inheritance evidence.
  • Apply the documented append/upsert sequence requirements to non-sequence contributions at retained collection-policy destinations.

Internal improvements

  • Index collection-policy retirement and prepare sparse incoming policy changes instead of repeatedly scanning or copying unrelated retained policy.
  • Reuse successful dynamic-type eligibility checks within an operation and index tier-history lookups, compound identity restoration, and secret-failure source attribution to avoid repeated scans.
  • Remove unused snapshots, evidence, helpers, fields, and test-only production paths. Clarify acquisition handoffs and separate collection preparation, application, and finalization while sharing sequence-history construction.
  • Separate patterned glob entry preparation from traversal. Consolidate engine import defaults, snapshot them during load preflight, and construct placement directly across the facade while keeping public types root-owned.
  • Add regression coverage for the corrected failures, public historical paths, defaults snapshots, and resource ownership. Strengthen fuzz detachment checks and replace redundant or implementation-coupled assertions.
  • Update release tooling from ReleaseKit v0.4.1 to v0.4.2.

These changes remove redundant work and improve scaling in the identified paths; no end-to-end performance improvement has been quantified.

Compatibility and upgrade

No consumer API or configuration-format migration is required. The configuration contract remains authoritative.

Loads that previously succeeded despite directory acquisition failures, invalid append/upsert contributions, or incomplete retained-history accounting may now return the documented structured errors. These corrections enforce existing requirements and limits rather than introducing new ones.

Select this version and rebuild:

go get gitea.maximumdirect.net/eric/ConfigKit@v0.10.2

The consumer minimum remains Go 1.26.0. The YAML dependency and platform support are unchanged. Publication follows the existing release procedure.

COPYRIGHT | LICENSE | ATTRIBUTION