Releases: faustbrian/go-log
Release list
github.com/faustbrian/go-log v1.0.0
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.
Documentation
-
Replace obsolete standalone-repository links and workflow claims with
monorepo-canonical targets and current release guidance. -
Link the package README to the repository-wide Golib documentation portal.
Changed
- Publish the module from its standalone
github.com/faustbrian/go-logidentity while preserving its documented API and behavior. - Execute API compatibility tooling against the isolated module graph so owned
dependency source changes cannot conflict with release checksums. - Use the repository-pinned current
apidiffrevision for the canonical API
compatibility gate.
Added
- Standard
*slog.Logger, JSON, and text constructors with ordered handler
options. - Synchronous fan-out with inclusive per-handler level routing, isolated record
clones, and joined sink errors. - Structural key and path redaction with configurable replacement values.
- Concurrency-safe every-N and deterministic key sampling with counters.
- Bounded asynchronous delivery with block, drop-newest, drop-oldest, and
synchronous-fallback overflow policies. - Deadline-aware flush and repeatable shutdown with explicit delivery and loss
accounting. - Concurrent capture handler, record snapshots, reset, and test assertions.
- Permission-enforced local file rotation with bounded numbered backups.
- Optional OpenTelemetry trace, span, and trace-flags correlation bridge.
- Race, failure-injection, fuzz, allocation-budget, latency-budget, and
benchmark coverage.
Fixed
- Give every stack route an independently owned
WithAttrsslice so one
downstream handler cannot mutate attributes observed by another. - Deep-clone nested group slices for stack fan-out and bound attributes so
group mutation cannot cross sink boundaries. - Preserve context values while stripping cancellation from async delivery, and
make block overflow independent of cancellation as required byslog.Handler. - Normalize capture output by ignoring zero and empty-group attributes, inlining
empty-key groups, and deep-cloning nested groups in returned snapshots. - Return successful repeated shutdown deterministically once async draining has
completed, even when a later caller supplies an already canceled context. - Deep-clone nested groups before invoking custom samplers so sampler mutation
cannot alter the downstream record. - Isolate every redaction rule from nested group storage so a custom rule cannot
mutate structure and bypass later secret rules.
Release integrity
- Source commit:
fc1898e72be8827f3c591f73d127c2642b96022e - Exact-head CI: https://github.com/faustbrian/go-log/actions/runs/32907574403
- Release dry-run: urn:sha256:45fbbe38692303e7be9f542720c6ed5f72fbe352f86a2add4a2cccc82e26b2da
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS