Skip to content

github.com/faustbrian/go-external-sort v1.0.0

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 05:47
· 40 commits to main since this release

1.0.0 - 2026-08-25

Changed

  • Exclude intentional nested modules from root local-proxy archives so local,
    bootstrap, CI, and public module checksums describe the same source
    boundary.

  • Track the pinned documentation-tool lockfile so clean CI checkouts install
    the exact validated cspell dependency.

  • Reconcile standalone dependency checksums against deterministic current
    module archives so CI, local verification, and release consumers resolve
    identical content.

  • Harden standalone documentation validation with deterministic spelling and
    link checks, package-specific documentation gates, and repository-local
    contributor guidance.

Changed

  • Publish the module from its standalone github.com/faustbrian/go-external-sort identity while preserving its documented API and behavior.

Documentation

  • Link the package README to the repository-wide Golib documentation portal.

Fixed

  • Bind all temporary create, open, and removal operations to a revalidated
    rooted directory handle so parent-path replacement cannot redirect cleanup
    outside the configured storage root.
  • Bind encrypted records to a random per-store identity so ciphertext from a
    different store is rejected even when callers reuse a key and the chunk,
    ordinal, and record-size metadata match.
  • Allocate authenticated, process-unique nonce domains across concurrent stores
    and return an owned cleanup handle when construction residue cannot be
    removed immediately.
  • Reject overlapping and callback-reentrant lifecycle calls without racing,
    deleting active iteration state, or weakening idempotent close semantics.
  • Reject whole-record truncation and trailing encrypted bytes instead of
    accepting a shortened or extended chunk as complete, while reporting
    underlying read failures as typed storage errors and sealing a store when
    failed temporary-file cleanup would otherwise permit artifact accumulation.

Added

  • Bounded lexicographic external sorting for caller-defined fixed-size records.
  • Per-record AES-256-GCM temporary-storage encryption with authenticated chunk
    and ordinal binding.
  • Explicit record, in-memory chunk, byte, and 64-file merge limits.
  • Owner-only temporary storage, typed fail-closed errors, duplicate
    preservation, deterministic cleanup, fuzzing, benchmarks, and exact
    statement-coverage evidence.
  • Exact boundary and mutation coverage for resource ceilings, merge
    termination, authenticated framing, cross-chunk substitution, nonce
    consumption, and ordering helpers.
  • Hostile-filesystem, cross-store corruption, concurrent lifecycle, process
    termination, bounded-resource, and merge-history fuzz campaigns, plus a safe
    caller-owned Kubernetes cleanup runbook.

Release integrity

Verify the checksum attestation with:

ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS