• # ConfigKit v0.10.2

    eric released this 2026-10-26 01:22:27 +00:00 | 4 commits to main since this release

    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

    Downloads