<feed xmlns='http://www.w3.org/2005/Atom'>
<title>remembering, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://euandre.org/git/remembering/atom?h=main</id>
<link rel='self' href='http://euandre.org/git/remembering/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/'/>
<updated>2026-07-02T11:26:13Z</updated>
<entry>
<title>install: place manpages with instool</title>
<updated>2026-07-02T11:26:13Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-07-02T11:26:13Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=9477c60bf70929af818ba1036b9edebab6799303'/>
<id>urn:sha1:9477c60bf70929af818ba1036b9edebab6799303</id>
<content type='text'>
Replace the ad-hoc `for f in $(manpages)` copy loop with instool (from
eut), matching the fleet convention.  instool lays pages out under
&lt;lang&gt;/man&lt;section&gt;/ with a base-dir symlink, so `man &lt;name&gt;` resolves
under any locale; the install/uninstall mirror is preserved.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01Lj1GkEuQUPFPEGLsnAp2x1
</content>
</entry>
<entry>
<title>meta: rename to meta.txt</title>
<updated>2026-07-01T02:20:54Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-07-01T02:20:54Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=d431056d3101ccb9ae0539aa39b50da91d317374'/>
<id>urn:sha1:d431056d3101ccb9ae0539aa39b50da91d317374</id>
<content type='text'>
</content>
</entry>
<entry>
<title>doc: spell it SYNOPSIS, not SYNOPSYS</title>
<updated>2026-06-25T14:43:05Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-25T14:43:05Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=15ae04927454eba936a2726db25c0d1f5cd7d990'/>
<id>urn:sha1:15ae04927454eba936a2726db25c0d1f5cd7d990</id>
<content type='text'>
Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01Lj1GkEuQUPFPEGLsnAp2x1
</content>
</entry>
<entry>
<title>Add meta: set, maturity, and deps</title>
<updated>2026-06-24T21:29:29Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-24T21:00:46Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=5fe2b0a60d4c8561fdb10e2ab549d27f02c0e8ef'/>
<id>urn:sha1:5fe2b0a60d4c8561fdb10e2ab549d27f02c0e8ef</id>
<content type='text'>
Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Rank by frecency: weight recent picks over stale ones</title>
<updated>2026-06-19T21:48:58Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-19T21:48:58Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=531aee9ec22e9b54a68ff638107d12f1e4119996'/>
<id>urn:sha1:531aee9ec22e9b54a68ff638107d12f1e4119996</id>
<content type='text'>
The ranking was pure frequency --- pick count, descending.  Now each
pick is an event that ages every score by a decay factor (0.9) before
bumping the pick, so an entry chosen recently and often leads while one
left idle fades; a score halves about every seven picks.

The on-disk COUNT becomes a frecency SCORE: a float kept to four
decimals and pinned back to zero once it fades below epsilon, so a
single pick still reads as "1" and profiles stay tidy --- only
multi-pick entries show decayed values.  parseProfile rejects
non-finite scores (NaN/Inf become 0) and round4 is overflow-safe, so
the parse/serialize round-trip the fuzz pins still holds.

The ranking tests that pinned count-tie byte order are replaced by
recency tests (a recent run outranks an equally-frequent stale one; a
frequent, recent item overtakes a stale one).  Single-pick profile
content is unchanged.

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>tests: fuzz a fixed count (1000x), not a 1s wall-clock budget</title>
<updated>2026-06-13T02:35:12Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-13T02:35:12Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=750a04b613d7d8e7de9ab18863ad2a27055b58a2'/>
<id>urn:sha1:750a04b613d7d8e7de9ab18863ad2a27055b58a2</id>
<content type='text'>
-fuzztime=1s is a wall-clock deadline; under parallel-build load the
fuzzer's setup (worker spawn + baseline coverage) can overrun it and
the run fails with "context deadline exceeded" --- a flake unrelated to
the code. A count budget (1000x) has no wall-clock deadline: it always
runs the seeds + 1000 iterations regardless of load, just slower when
busy. Renamed FUZZSEC -&gt; FUZZTIME since it is no longer seconds.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>tests/remembering.go: Pin getopt(3) positional parsing</title>
<updated>2026-06-12T15:05:01Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-12T15:05:01Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=8e0694629aaedc886bbf2388d383d108a96999dd'/>
<id>urn:sha1:8e0694629aaedc886bbf2388d383d108a96999dd</id>
<content type='text'>
The first operand ends the options, with or without "--": a
wrapped command's option-looking argv tokens are never rewritten.
Comes from gobang's ExpandBundles turning positional.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Accept getopts-style attached -pPROFILE again</title>
<updated>2026-06-12T13:59:00Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-12T13:59:00Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=b9f2ad6b22fe6808a5cd2a1476172a1131adb3ed'/>
<id>urn:sha1:b9f2ad6b22fe6808a5cd2a1476172a1131adb3ed</id>
<content type='text'>
Via gobang.ExpandBundles("p:", argv), now that it understands
optstring value flags: -pp1 expands to -p p1 before stdlib flag
parsing, and nothing after "--" is expanded, so the wrapped
command's own argv passes through byte-for-byte.

signals.sh goes back to its original attached-form invocations,
which now double as the compat test.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Rewrite remembering in Go</title>
<updated>2026-06-12T12:19:28Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2026-06-12T12:19:28Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=46fd0362bce11d709e5efe6d540358533985d363'/>
<id>urn:sha1:46fd0362bce11d709e5efe6d540358533985d363</id>
<content type='text'>
The shell pipeline (sed | sort | tee | awk | sort | cut | "$@"
plus the cut | uniq | awk profile rewrite) becomes a single static
binary with the same observable behaviour, pinned by the original
ranking.sh, signals.sh and cli-opts.sh suites, now aimed at
remembering.bin:

- the profile keeps the exact on-disk format, COUNT profile TEXT,
  byte-sorted with new picks appended at 1 and offered-but-never-
  picked entries persisted at 0;
- the menu stays count-descending with byte-order ties, stdin
  alone defines what is offered, and duplicate profile lines sum
  for ranking but collapse to the highest count on rewrite, as
  sort | uniq -f1 did;
- the wrapped command's exit status is forwarded as-is (128+sig
  for signal deaths), its stderr passes through, and an empty pick
  learns nothing;
- the profile rewrite stays atomic via .tmp plus rename.

Per the house CLI conventions, -h/-V/--help/--version are gone
(the manpage is the documentation; bad options print the usage on
stderr and exit 2), and getopts-style attached option arguments
(-pNAME) are not accepted any more --- no script in the wild used
them.

The project layout follows rot: raw go tool compile/link Makefile,
mkdeps.sh-generated deps.mk, white-box unit suite, fuzz target
over the profile parse/serialize roundtrip, functional pick
roundtrip, a 1M-line ranking benchmark, and a single English
asciidoc manpage absorbing the old .5 page; the po4a/aux release
machinery goes away.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>rm .tdrc COPYING</title>
<updated>2025-03-20T19:13:33Z</updated>
<author>
<name>EuAndreh</name>
<email>eu@euandre.org</email>
</author>
<published>2025-03-20T19:13:33Z</published>
<link rel='alternate' type='text/html' href='http://euandre.org/git/remembering/commit/?id=13fcc1412b8cb8b20807dbf56e7d49d7f5892bd4'/>
<id>urn:sha1:13fcc1412b8cb8b20807dbf56e7d49d7f5892bd4</id>
<content type='text'>
</content>
</entry>
</feed>
