<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>bolt8, branch HEAD</title>
<subtitle>Encrypted and authenticated transport, per BOLT #8 (docs.ppad.tech/bolt8).
</subtitle>
<entry>
<id>ca737a5e3d1970d51078cee6cc10279351759870</id>
<published>2026-04-18T02:47:37Z</published>
<updated>2026-04-18T02:47:37Z</updated>
<title type="text">readme: pre-release note</title>
<link rel="alternate" type="text/html" href="commit/ca737a5e3d1970d51078cee6cc10279351759870.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit ca737a5e3d1970d51078cee6cc10279351759870
parent 76f871d6ac71873c5aa078c1079dd03dad74ad01
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sat, 18 Apr 2026 10:47:37 +0800

readme: pre-release note

</content>
</entry>
<entry>
<id>76f871d6ac71873c5aa078c1079dd03dad74ad01</id>
<published>2026-01-25T07:01:20Z</published>
<updated>2026-01-25T07:01:20Z</updated>
<title type="text">test: add property-based tests</title>
<link rel="alternate" type="text/html" href="commit/76f871d6ac71873c5aa078c1079dd03dad74ad01.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 76f871d6ac71873c5aa078c1079dd03dad74ad01
parent cfae46878f0df71b63fc5d131b1fa11ef043131c
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 11:01:20 +0400

test: add property-based tests

Add QuickCheck properties for:
- Handshake round-trip with random valid keys
- Encrypt/decrypt round-trip with random payloads (0-256 bytes)
- decrypt_frame consuming exactly one frame
- decrypt_frame_partial returning NeedMore on short buffers

Uses fixed ephemeral keys for determinism. All 26 tests pass.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>cfae46878f0df71b63fc5d131b1fa11ef043131c</id>
<published>2026-01-25T06:55:30Z</published>
<updated>2026-01-25T06:56:43Z</updated>
<title type="text">meta: add README with usage examples</title>
<link rel="alternate" type="text/html" href="commit/cfae46878f0df71b63fc5d131b1fa11ef043131c.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit cfae46878f0df71b63fc5d131b1fa11ef043131c
parent 19c3972a136c164219c357c00ee359480fa8f01c
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:55:30 +0400

meta: add README with usage examples

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>19c3972a136c164219c357c00ee359480fa8f01c</id>
<published>2026-01-25T06:55:30Z</published>
<updated>2026-01-25T06:55:30Z</updated>
<title type="text">doc: add framing section to module header</title>
<link rel="alternate" type="text/html" href="commit/19c3972a136c164219c357c00ee359480fa8f01c.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 19c3972a136c164219c357c00ee359480fa8f01c
parent 90533d227b2bad3d44051fd709854651082266da
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:55:30 +0400

doc: add framing section to module header

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>90533d227b2bad3d44051fd709854651082266da</id>
<published>2026-01-25T06:55:30Z</published>
<updated>2026-01-25T06:55:30Z</updated>
<title type="text">meta: add guidance on non-exhaustive pattern matches</title>
<link rel="alternate" type="text/html" href="commit/90533d227b2bad3d44051fd709854651082266da.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 90533d227b2bad3d44051fd709854651082266da
parent 5e83d290b828178f360e53a1349f46bae09db625
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:55:30 +0400

meta: add guidance on non-exhaustive pattern matches

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>5e83d290b828178f360e53a1349f46bae09db625</id>
<published>2026-01-25T06:22:55Z</published>
<updated>2026-01-25T06:22:55Z</updated>
<title type="text">test: eliminate non-exhaustive pattern matches</title>
<link rel="alternate" type="text/html" href="commit/5e83d290b828178f360e53a1349f46bae09db625.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 5e83d290b828178f360e53a1349f46bae09db625
parent 991f84308a8597540ddbceb608b189ddfab42353
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 10:22:55 +0400

test: eliminate non-exhaustive pattern matches

Add expectJust/expectRight helpers that fail tests with clear messages
instead of using partial &#39;let Just&#39; patterns. Make flip_byte total by
returning IO. All 22 tests pass with no pattern match warnings.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>991f84308a8597540ddbceb608b189ddfab42353</id>
<published>2026-01-25T05:45:50Z</published>
<updated>2026-01-25T05:45:50Z</updated>
<title type="text">meta: docs</title>
<link rel="alternate" type="text/html" href="commit/991f84308a8597540ddbceb608b189ddfab42353.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 991f84308a8597540ddbceb608b189ddfab42353
parent a2adc22ba86ac58835d283a9b1fdabcf0ad8ce31
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:45:50 +0400

meta: docs

</content>
</entry>
<entry>
<id>a2adc22ba86ac58835d283a9b1fdabcf0ad8ce31</id>
<published>2026-01-25T05:44:29Z</published>
<updated>2026-01-25T05:44:29Z</updated>
<title type="text">doc: add IMPL4 plan</title>
<link rel="alternate" type="text/html" href="commit/a2adc22ba86ac58835d283a9b1fdabcf0ad8ce31.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit a2adc22ba86ac58835d283a9b1fdabcf0ad8ce31
parent c890b7a7ca091a1a684253480c940a485b7af8e9
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:44:29 +0400

doc: add IMPL4 plan

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>c890b7a7ca091a1a684253480c940a485b7af8e9</id>
<published>2026-01-25T05:44:20Z</published>
<updated>2026-01-25T05:44:20Z</updated>
<title type="text">(IMPL4): Recoverable partial framing</title>
<link rel="alternate" type="text/html" href="commit/c890b7a7ca091a1a684253480c940a485b7af8e9.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c890b7a7ca091a1a684253480c940a485b7af8e9
parent 73edeb4503c449cfdafd7a0817ce686b297960a8
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:44:20 +0400

(IMPL4): Recoverable partial framing

Add FrameResult ADT and decrypt_frame_partial for non-blocking I/O:
- NeedMore indicates how many additional bytes are required
- FrameOk returns plaintext, remainder, and updated session
- FrameError wraps decryption errors

This enables incremental buffer processing without exceptions,
useful for async/event-driven network code.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>42afaddad44020e841f7ec0468b6626b8ee0d913</id>
<published>2026-01-25T05:43:56Z</published>
<updated>2026-01-25T05:43:56Z</updated>
<title type="text">test: add partial framing tests</title>
<link rel="alternate" type="text/html" href="commit/42afaddad44020e841f7ec0468b6626b8ee0d913.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 42afaddad44020e841f7ec0468b6626b8ee0d913
parent 2b87813654c338fef2cb90795ec24d031615df20
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:43:56 +0400

test: add partial framing tests

Test decrypt_frame_partial behavior:
- Short buffer (&lt; 18 bytes) returns NeedMore
- Partial body (header complete, body incomplete) returns NeedMore
- Full frame returns FrameOk with plaintext and remainder

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>2b87813654c338fef2cb90795ec24d031615df20</id>
<published>2026-01-25T05:43:52Z</published>
<updated>2026-01-25T05:43:52Z</updated>
<title type="text">lib: add FrameResult and decrypt_frame_partial</title>
<link rel="alternate" type="text/html" href="commit/2b87813654c338fef2cb90795ec24d031615df20.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 2b87813654c338fef2cb90795ec24d031615df20
parent 4af1d8ed7eac2b14b8d4ada83183237f1625ac11
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:43:52 +0400

lib: add FrameResult and decrypt_frame_partial

Add recoverable partial framing support:
- FrameResult ADT with NeedMore, FrameOk, FrameError constructors
- decrypt_frame_partial returns NeedMore when buffer incomplete
- Useful for non-blocking I/O with incremental data arrival

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>73edeb4503c449cfdafd7a0817ce686b297960a8</id>
<published>2026-01-25T05:43:27Z</published>
<updated>2026-01-25T05:43:27Z</updated>
<title type="text">test: add bounds check to flip_byte helper</title>
<link rel="alternate" type="text/html" href="commit/73edeb4503c449cfdafd7a0817ce686b297960a8.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 73edeb4503c449cfdafd7a0817ce686b297960a8
parent 4af1d8ed7eac2b14b8d4ada83183237f1625ac11
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:43:27 +0400

test: add bounds check to flip_byte helper

Guard against out-of-bounds index to give a clear error message
rather than crashing on BS.index. Addresses review finding from
REVIEW-ebf75f4.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>4af1d8ed7eac2b14b8d4ada83183237f1625ac11</id>
<published>2026-01-25T05:39:17Z</published>
<updated>2026-01-25T05:39:17Z</updated>
<title type="text">doc: add IMPL3 plan</title>
<link rel="alternate" type="text/html" href="commit/4af1d8ed7eac2b14b8d4ada83183237f1625ac11.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 4af1d8ed7eac2b14b8d4ada83183237f1625ac11
parent ebf75f4de8031a369868aba3a94ef89b6a25422b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:39:17 +0400

doc: add IMPL3 plan

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>ebf75f4de8031a369868aba3a94ef89b6a25422b</id>
<published>2026-01-25T05:38:55Z</published>
<updated>2026-01-25T05:38:55Z</updated>
<title type="text">(IMPL3): Doc fixes and negative tests</title>
<link rel="alternate" type="text/html" href="commit/ebf75f4de8031a369868aba3a94ef89b6a25422b.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit ebf75f4de8031a369868aba3a94ef89b6a25422b
parent 81aae98a5edd7607f0f1074101fb1d16b5e7bcae
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:38:55 +0400

(IMPL3): Doc fixes and negative tests

Fix Haddock comments for encrypt/decrypt to correctly describe key
rotation timing (at nonce 1000). Add comprehensive negative tests
verifying proper rejection of:
- Wrong version byte in act2
- Wrong message length in act2
- Invalid MAC in act3/finalize
- Short packets in decrypt

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>d819f8f89352481cf227aeb18e3316a98a959074</id>
<published>2026-01-25T05:38:33Z</published>
<updated>2026-01-25T05:38:33Z</updated>
<title type="text">test: add negative tests for handshake and decrypt</title>
<link rel="alternate" type="text/html" href="commit/d819f8f89352481cf227aeb18e3316a98a959074.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit d819f8f89352481cf227aeb18e3316a98a959074
parent dd8b8b337a890f37e8b98a478cffbcd4c469ea31
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:38:33 +0400

test: add negative tests for handshake and decrypt

Add tests verifying rejection of malformed inputs:
- act2 rejects wrong version byte
- act2 rejects wrong message length
- act3 rejects invalid MAC (corrupted ciphertext)
- finalize rejects invalid MAC (corrupted ciphertext)
- decrypt rejects short packet

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>dd8b8b337a890f37e8b98a478cffbcd4c469ea31</id>
<published>2026-01-25T05:38:28Z</published>
<updated>2026-01-25T05:38:28Z</updated>
<title type="text">doc: fix key rotation comment (1000 not 500)</title>
<link rel="alternate" type="text/html" href="commit/dd8b8b337a890f37e8b98a478cffbcd4c469ea31.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit dd8b8b337a890f37e8b98a478cffbcd4c469ea31
parent 81aae98a5edd7607f0f1074101fb1d16b5e7bcae
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:38:28 +0400

doc: fix key rotation comment (1000 not 500)

Haddock for encrypt/decrypt incorrectly described key rotation
timing. It occurs at nonce 1000, not &quot;every 500 messages&quot;.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>81aae98a5edd7607f0f1074101fb1d16b5e7bcae</id>
<published>2026-01-25T05:35:53Z</published>
<updated>2026-01-25T05:35:53Z</updated>
<title type="text">(IMPL2): Document HKDF invariant</title>
<link rel="alternate" type="text/html" href="commit/81aae98a5edd7607f0f1074101fb1d16b5e7bcae.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 81aae98a5edd7607f0f1074101fb1d16b5e7bcae
parent c3040f68303ff39e02a8b61074f02074662315d6
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:35:53 +0400

(IMPL2): Document HKDF invariant

Add comment near mix_key explaining why HKDF.derive cannot return
Nothing: the limit is 255 * hashlen (8160 bytes for SHA256), well
above the 64 bytes requested.

No behavioral changes.

</content>
</entry>
<entry>
<id>4934458985c631128ddf96b891ca609a415fd4b6</id>
<published>2026-01-25T05:34:57Z</published>
<updated>2026-01-25T05:34:57Z</updated>
<title type="text">doc: document HKDF length invariant in mix_key</title>
<link rel="alternate" type="text/html" href="commit/4934458985c631128ddf96b891ca609a415fd4b6.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 4934458985c631128ddf96b891ca609a415fd4b6
parent c3040f68303ff39e02a8b61074f02074662315d6
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:34:57 +0400

doc: document HKDF length invariant in mix_key

Explain why the Nothing case from HKDF.derive is impossible:
HKDF limits output to 255 * hashlen (8160 bytes for SHA256),
well above the 64 bytes requested.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

</content>
</entry>
<entry>
<id>c3040f68303ff39e02a8b61074f02074662315d6</id>
<published>2026-01-25T05:32:09Z</published>
<updated>2026-01-25T05:32:09Z</updated>
<title type="text">(IMPL1): Packet framing for decrypt</title>
<link rel="alternate" type="text/html" href="commit/c3040f68303ff39e02a8b61074f02074662315d6.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c3040f68303ff39e02a8b61074f02074662315d6
parent c47ceec3852147cc3d10f1ca586ad37e8e4aace2
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:32:09 +0400

(IMPL1): Packet framing for decrypt

Add decrypt_frame that returns the remainder after consuming one frame,
enabling streaming decryption. Update decrypt to be strict, rejecting
trailing bytes.

Changes:
- decrypt_frame :: Session -&gt; ByteString
    -&gt; Either Error (ByteString, ByteString, Session)
- decrypt now wraps decrypt_frame and rejects non-empty remainder
- Added tests for framing behavior

</content>
</entry>
<entry>
<id>b35594af9fe488daffa823331c81339e4f5c9a93</id>
<published>2026-01-25T05:31:34Z</published>
<updated>2026-01-25T05:31:34Z</updated>
<title type="text">lib: add decrypt_frame, make decrypt strict</title>
<link rel="alternate" type="text/html" href="commit/b35594af9fe488daffa823331c81339e4f5c9a93.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit b35594af9fe488daffa823331c81339e4f5c9a93
parent c47ceec3852147cc3d10f1ca586ad37e8e4aace2
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:31:34 +0400

lib: add decrypt_frame, make decrypt strict

- decrypt_frame decrypts a single frame and returns the remainder,
  useful for streaming scenarios with buffered data
- decrypt now rejects trailing bytes (wraps decrypt_frame)
- added tests for framing behavior

</content>
</entry>
<entry>
<id>c47ceec3852147cc3d10f1ca586ad37e8e4aace2</id>
<published>2026-01-25T05:15:43Z</published>
<updated>2026-01-25T05:15:43Z</updated>
<title type="text">doc: add CLAUDE.md and BOLT #8 spec</title>
<link rel="alternate" type="text/html" href="commit/c47ceec3852147cc3d10f1ca586ad37e8e4aace2.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit c47ceec3852147cc3d10f1ca586ad37e8e4aace2
parent 7aea70c1f1c6c49f83a4537daedd6fee14ac0e3b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:15:43 +0400

doc: add CLAUDE.md and BOLT #8 spec

</content>
</entry>
<entry>
<id>7aea70c1f1c6c49f83a4537daedd6fee14ac0e3b</id>
<published>2026-01-25T05:15:26Z</published>
<updated>2026-01-25T05:15:26Z</updated>
<title type="text">doc: add AGENTS.md</title>
<link rel="alternate" type="text/html" href="commit/7aea70c1f1c6c49f83a4537daedd6fee14ac0e3b.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 7aea70c1f1c6c49f83a4537daedd6fee14ac0e3b
parent 38eaaf17c0bdaf264f26f08e5bbb9efb9149956c
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:15:26 +0400

doc: add AGENTS.md

</content>
</entry>
<entry>
<id>38eaaf17c0bdaf264f26f08e5bbb9efb9149956c</id>
<published>2026-01-25T05:14:56Z</published>
<updated>2026-01-25T05:14:56Z</updated>
<title type="text">etc: add bolt8 spec</title>
<link rel="alternate" type="text/html" href="commit/38eaaf17c0bdaf264f26f08e5bbb9efb9149956c.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 38eaaf17c0bdaf264f26f08e5bbb9efb9149956c
parent 7a30233a1417f34e9dae47455f2332bbf6d5b7f1
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 25 Jan 2026 09:14:56 +0400

etc: add bolt8 spec

</content>
</entry>
<entry>
<id>7a30233a1417f34e9dae47455f2332bbf6d5b7f1</id>
<published>2026-01-12T10:04:54Z</published>
<updated>2026-01-12T10:04:54Z</updated>
<title type="text">lib: basic module header</title>
<link rel="alternate" type="text/html" href="commit/7a30233a1417f34e9dae47455f2332bbf6d5b7f1.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 7a30233a1417f34e9dae47455f2332bbf6d5b7f1
parent 6a8fe194e7148d95adcc5c803c7bc52f5a0b60af
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Mon, 12 Jan 2026 14:04:54 +0400

lib: basic module header

</content>
</entry>
<entry>
<id>6a8fe194e7148d95adcc5c803c7bc52f5a0b60af</id>
<published>2026-01-12T09:54:20Z</published>
<updated>2026-01-12T09:54:20Z</updated>
<title type="text">lib: general refactor</title>
<link rel="alternate" type="text/html" href="commit/6a8fe194e7148d95adcc5c803c7bc52f5a0b60af.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 6a8fe194e7148d95adcc5c803c7bc52f5a0b60af
parent a2df1e41a98a39eea2adbd5253932ed187769416
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Mon, 12 Jan 2026 13:54:20 +0400

lib: general refactor

</content>
</entry>
<entry>
<id>a2df1e41a98a39eea2adbd5253932ed187769416</id>
<published>2026-01-11T10:16:52Z</published>
<updated>2026-01-11T10:16:52Z</updated>
<title type="text">bench: skeleton</title>
<link rel="alternate" type="text/html" href="commit/a2df1e41a98a39eea2adbd5253932ed187769416.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit a2df1e41a98a39eea2adbd5253932ed187769416
parent 29d72235097657273919adcf73f4030d6d7a9b7d
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 14:16:52 +0400

bench: skeleton

</content>
</entry>
<entry>
<id>29d72235097657273919adcf73f4030d6d7a9b7d</id>
<published>2026-01-11T07:29:01Z</published>
<updated>2026-01-11T07:29:01Z</updated>
<title type="text">lib: minor refactoring</title>
<link rel="alternate" type="text/html" href="commit/29d72235097657273919adcf73f4030d6d7a9b7d.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 29d72235097657273919adcf73f4030d6d7a9b7d
parent a82df07d3cf43cb46d609887b555e3cc587ebb58
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 11:29:01 +0400

lib: minor refactoring

</content>
</entry>
<entry>
<id>a82df07d3cf43cb46d609887b555e3cc587ebb58</id>
<published>2026-01-11T07:22:39Z</published>
<updated>2026-01-11T07:22:39Z</updated>
<title type="text">lib: basic haddock examples</title>
<link rel="alternate" type="text/html" href="commit/a82df07d3cf43cb46d609887b555e3cc587ebb58.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit a82df07d3cf43cb46d609887b555e3cc587ebb58
parent 8f15422892a73ba5f44b47b530ccacccb25a7a1d
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 11:22:39 +0400

lib: basic haddock examples

</content>
</entry>
<entry>
<id>8f15422892a73ba5f44b47b530ccacccb25a7a1d</id>
<published>2026-01-11T07:18:35Z</published>
<updated>2026-01-11T07:18:35Z</updated>
<title type="text">lib: fleshed-out skeleton</title>
<link rel="alternate" type="text/html" href="commit/8f15422892a73ba5f44b47b530ccacccb25a7a1d.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 8f15422892a73ba5f44b47b530ccacccb25a7a1d
parent 9122d67da4937c6146bdb33755068b75f0d3383f
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 11:18:35 +0400

lib: fleshed-out skeleton

</content>
</entry>
<entry>
<id>9122d67da4937c6146bdb33755068b75f0d3383f</id>
<published>2026-01-11T06:27:15Z</published>
<updated>2026-01-11T06:27:15Z</updated>
<title type="text">flake: update</title>
<link rel="alternate" type="text/html" href="commit/9122d67da4937c6146bdb33755068b75f0d3383f.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 9122d67da4937c6146bdb33755068b75f0d3383f
parent 5bed2126efb3a6d91224b05a6395ddc2e566470b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 10:27:15 +0400

flake: update

</content>
</entry>
<entry>
<id>5bed2126efb3a6d91224b05a6395ddc2e566470b</id>
<published>2026-01-11T05:37:24Z</published>
<updated>2026-01-11T05:37:24Z</updated>
<title type="text">lib: update deps</title>
<link rel="alternate" type="text/html" href="commit/5bed2126efb3a6d91224b05a6395ddc2e566470b.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 5bed2126efb3a6d91224b05a6395ddc2e566470b
parent 5c168f3f037616a3c64986d82bb5b0c4f0317d2b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 09:37:24 +0400

lib: update deps

</content>
</entry>
<entry>
<id>5c168f3f037616a3c64986d82bb5b0c4f0317d2b</id>
<published>2026-01-11T05:35:45Z</published>
<updated>2026-01-11T05:35:45Z</updated>
<title type="text">lib: initial commit</title>
<link rel="alternate" type="text/html" href="commit/5c168f3f037616a3c64986d82bb5b0c4f0317d2b.html" />
<author>
<name>Jared Tobin</name>
<email>jared@jtobin.io</email>
</author>
<content type="text">commit 5c168f3f037616a3c64986d82bb5b0c4f0317d2b
Author: Jared Tobin &lt;jared@jtobin.io&gt;
Date:   Sun, 11 Jan 2026 09:35:45 +0400

lib: initial commit

</content>
</entry>
</feed>
