Skip to content

v1.0.2 - Release PR - #2

Merged
urda merged 8 commits into
releasefrom
master
Aug 26, 2026
Merged

urda merged 8 commits into
releasefrom
master

Conversation

@urda

@urda urda commented Aug 3, 2026

Copy link
Copy Markdown
Owner

No description provided.

urda added 3 commits August 3, 2026 01:24
Normalize every epoch (debug clock, resets, update state, lock age)
before it reaches arithmetic, so a malformed value degrades instead
of breaking countdown and throttle math.

Write all state files (rate-limit cache, last_check, remote_version)
through private mktemp+mv swaps: modes go 0600, planted symlinks and
non-empty directories are refused, an empty planted directory is
rmdir-healed. Adds 15 test cases covering the new behavior.
@urda urda self-assigned this Aug 3, 2026
@urda urda added the release label Aug 3, 2026
urda added 5 commits August 3, 2026 11:08
perm_case probed BSD-first, but GNU stat treats -f as filesystem
status: it emits noise while failing, so the captured mode was
garbage and all four permission cases failed on Linux. Probe
GNU-first like the renderer's held_at check.

The same Linux run exposed a latent flake: piping into grep -q
under pipefail dies with SIGPIPE when grep exits at an early match.
Replace the four pipelines with herestrings. Static cases now pin
both conventions so either platform catches them at author time.
An idle session's hours-old percentage shares the live reset epoch, so
the non-regressing-reset guard admitted it and overwrote the fresh
reading. The window guard is now reset-keyed: a newer reset takes the
incoming pair whole, an equal reset keeps the higher percentage, and an
older reset never replaces the cached pair. Every writer applies the
same rule, so the unlocked write race converges.

written_at stays "last touched". observed_at moves only when an
effective percentage changes, so consumers can spot a stale value.
Schema bumps to 2; consumers read named keys and are unaffected.
@urda
urda merged commit 673a46f into release Aug 26, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant