<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>tangle, branch HEAD</title>
<subtitle>
</subtitle>
<entry>
<id>54ed7f0da3232f16ad3a5f8e1bc1d961b4995ce3</id>
<published>2026-06-23T00:05:20Z</published>
<updated>2026-06-23T00:05:20Z</updated>
<title>runtime: gate host ops routes by config</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/54ed7f0da3232f16ad3a5f8e1bc1d961b4995ce3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 54ed7f0da3232f16ad3a5f8e1bc1d961b4995ce3
parent 8721915062674b7f605624e52a5d88a03a2292d2
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 00:05:20 +0000

runtime: gate host ops routes by config

- enforce host ops disablement for read endpoints
- gate tenant inventory behind explicit exposure policy
- preserve tenant NIP-11 routing when ops are disabled
- cover enabled, inventory-disabled, and disabled states

</content>
</entry>
<entry>
<id>8721915062674b7f605624e52a5d88a03a2292d2</id>
<published>2026-06-22T23:40:00Z</published>
<updated>2026-06-22T23:40:00Z</updated>
<title>tests: use neutral compatibility fixture</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/8721915062674b7f605624e52a5d88a03a2292d2.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8721915062674b7f605624e52a5d88a03a2292d2
parent bf5d6afc1fbeb045c496d585880105eddc045304
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 22 Jun 2026 23:40:00 +0000

tests: use neutral compatibility fixture

- rename source-specific unknown policy field fixture
- keep compatibility field rejection coverage intact
- preserve strict NIP-29 closed-group semantics
- verify group and runtime targeted tests

</content>
</entry>
<entry>
<id>bf5d6afc1fbeb045c496d585880105eddc045304</id>
<published>2026-06-20T00:25:04Z</published>
<updated>2026-06-20T00:25:04Z</updated>
<title>runtime: expose relay event timestamps</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/bf5d6afc1fbeb045c496d585880105eddc045304.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit bf5d6afc1fbeb045c496d585880105eddc045304
parent 670b5b59575478d57f76cc16497395ed60444e07
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 19 Jun 2026 17:25:04 -0700

runtime: expose relay event timestamps

- add created-at metadata to neutral relay event contexts
- populate hook context timestamps from Pocket events
- assert admission and stored hooks observe stable timestamps
- keep runtime hook behavior otherwise unchanged

</content>
</entry>
<entry>
<id>670b5b59575478d57f76cc16497395ed60444e07</id>
<published>2026-06-19T23:47:51Z</published>
<updated>2026-06-19T23:47:51Z</updated>
<title>runtime: add relay event hooks</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/670b5b59575478d57f76cc16497395ed60444e07.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 670b5b59575478d57f76cc16497395ed60444e07
parent e4879ff3be7a5fbd798d4143afd23198c053122f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 19 Jun 2026 16:47:51 -0700

runtime: add relay event hooks

- expose neutral event admission and stored-event hook contexts

- keep default relay runtime behavior unchanged with noop hooks

- cover hook rejection and stored-offset notification in runtime tests

</content>
</entry>
<entry>
<id>e4879ff3be7a5fbd798d4143afd23198c053122f</id>
<published>2026-06-19T23:03:20Z</published>
<updated>2026-06-19T23:03:20Z</updated>
<title>host: isolate virtual relay host shell</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/e4879ff3be7a5fbd798d4143afd23198c053122f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e4879ff3be7a5fbd798d4143afd23198c053122f
parent 1a2c9857097e5446a920f5afeec745486630fa12
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 19 Jun 2026 16:03:20 -0700

host: isolate virtual relay host shell

- move request Host resolution into the host runtime
- expose tenant inventory as host-owned typed snapshots
- keep server HTTP handlers as thin adapters over the host shell
- guard host lookup and inventory ownership with source invariants

</content>
</entry>
<entry>
<id>1a2c9857097e5446a920f5afeec745486630fa12</id>
<published>2026-06-19T22:55:51Z</published>
<updated>2026-06-19T22:55:51Z</updated>
<title>runtime: extract neutral relay runtime boundary</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/1a2c9857097e5446a920f5afeec745486630fa12.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 1a2c9857097e5446a920f5afeec745486630fa12
parent 56cc5dc4589285464b4fb2076228082ee87a13ec
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 19 Jun 2026 15:55:51 -0700

runtime: extract neutral relay runtime boundary

- rename per-relay runtime handles away from tenant-owned terminology
- move aggregate resource permits into a neutral runtime module
- route host and websocket sessions through neutral relay resources
- add source invariants for relay runtime and session admission boundaries

</content>
</entry>
<entry>
<id>56cc5dc4589285464b4fb2076228082ee87a13ec</id>
<published>2026-06-17T23:51:43Z</published>
<updated>2026-06-17T23:51:43Z</updated>
<title>bench: add v1 mvp release gates</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/56cc5dc4589285464b4fb2076228082ee87a13ec.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 56cc5dc4589285464b4fb2076228082ee87a13ec
parent 9035a5f813ace390e4ac29f96da367a4839b06ea
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 16:51:43 -0700

bench: add v1 mvp release gates

Adds the virtual-relay tenancy benchmark profile, release acceptance coverage, and source invariants for the Tangle v1 MVP multi-tenant boundary.

</content>
</entry>
<entry>
<id>9035a5f813ace390e4ac29f96da367a4839b06ea</id>
<published>2026-06-17T23:36:00Z</published>
<updated>2026-06-17T23:36:00Z</updated>
<title>feat: add tenant backup restore export</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/9035a5f813ace390e4ac29f96da367a4839b06ea.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 9035a5f813ace390e4ac29f96da367a4839b06ea
parent 4b49dfefdf4106dc7f10ad4af00e9d38d53dcf9d
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 16:36:00 -0700

feat: add tenant backup restore export

- add tenant-scoped backup bundles with redacted config and checksums

- add checksum-verified clean-target restore

- add tenant-local JSONL export with manifests

- expose the approved tenant admin CLI commands

</content>
</entry>
<entry>
<id>4b49dfefdf4106dc7f10ad4af00e9d38d53dcf9d</id>
<published>2026-06-17T23:16:48Z</published>
<updated>2026-06-17T23:16:48Z</updated>
<title>tests: add tenant isolation proof</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/4b49dfefdf4106dc7f10ad4af00e9d38d53dcf9d.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 4b49dfefdf4106dc7f10ad4af00e9d38d53dcf9d
parent 51373b43e9566f6162e864a4da35ef68c88965f1
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 16:16:48 -0700

tests: add tenant isolation proof

- prove same event ids stay tenant-local

- cover same group ids and generated state signatures

- assert tenant-local rate limits and fanout

- reject shared Pocket store configuration

</content>
</entry>
<entry>
<id>51373b43e9566f6162e864a4da35ef68c88965f1</id>
<published>2026-06-17T22:58:31Z</published>
<updated>2026-06-17T22:58:31Z</updated>
<title>server: route requests by tenant host</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/51373b43e9566f6162e864a4da35ef68c88965f1.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 51373b43e9566f6162e864a4da35ef68c88965f1
parent 1b5f9c9afc9aad27ab178683245354c157474e27
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 15:58:31 -0700

server: route requests by tenant host

- serve Tangle through the host runtime router
- resolve tenant Host before NIP-11 and WebSocket sessions
- replace legacy ops paths with well-known host endpoints
- enforce host connection and subscription caps in sessions

</content>
</entry>
<entry>
<id>1b5f9c9afc9aad27ab178683245354c157474e27</id>
<published>2026-06-17T22:38:43Z</published>
<updated>2026-06-17T22:38:43Z</updated>
<title>host: add tenant registry runtime</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/1b5f9c9afc9aad27ab178683245354c157474e27.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 1b5f9c9afc9aad27ab178683245354c157474e27
parent a9c835bff7686b19ae61a58e51039d0ca732ab7c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 15:38:43 -0700

host: add tenant registry runtime

- add the host runtime and active tenant registry
- open active tenant runtimes without serving inactive tenants
- add host readiness shutdown metrics and cap primitives
- cover multi-tenant startup and aggregate limits with tests

</content>
</entry>
<entry>
<id>a9c835bff7686b19ae61a58e51039d0ca732ab7c</id>
<published>2026-06-17T22:31:14Z</published>
<updated>2026-06-17T22:31:14Z</updated>
<title>runtime: rename tenant runtime surface</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/a9c835bff7686b19ae61a58e51039d0ca732ab7c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit a9c835bff7686b19ae61a58e51039d0ca732ab7c
parent c14fc50442100c9592bdd8d8343c6a8088e35a7a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 15:31:14 -0700

runtime: rename tenant runtime surface

- rename the runtime and handle to tenant-owned types
- remove stale single-runtime loader exports
- update tests and benchmarks to the tenant runtime names
- guard the tenant runtime API with source invariants

</content>
</entry>
<entry>
<id>c14fc50442100c9592bdd8d8343c6a8088e35a7a</id>
<published>2026-06-17T22:23:45Z</published>
<updated>2026-06-17T22:23:45Z</updated>
<title>cli: add host config validation commands</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/c14fc50442100c9592bdd8d8343c6a8088e35a7a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit c14fc50442100c9592bdd8d8343c6a8088e35a7a
parent aa4fea1c236bed5ee7575fb236359ef07e6c4825
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 15:23:45 -0700

cli: add host config validation commands

- load tenant configs from the host config directory
- validate duplicate tenant identity and store boundaries
- add redacted config inspect and tenant list commands
- run the relay from the new host config surface

</content>
</entry>
<entry>
<id>aa4fea1c236bed5ee7575fb236359ef07e6c4825</id>
<published>2026-06-17T22:16:37Z</published>
<updated>2026-06-17T22:16:37Z</updated>
<title>config: add tenant host config contract</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/aa4fea1c236bed5ee7575fb236359ef07e6c4825.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit aa4fea1c236bed5ee7575fb236359ef07e6c4825
parent 91c6ddfdf3aba9466a2c92242de299d6a0ca540f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 17 Jun 2026 15:16:37 -0700

config: add tenant host config contract

- add typed tenant identity and canonical host primitives
- add strict v1 MVP host and tenant config parsers
- add host and tenant example config files
- guard the virtual relay tenancy source authority

</content>
</entry>
<entry>
<id>91c6ddfdf3aba9466a2c92242de299d6a0ca540f</id>
<published>2026-06-16T21:44:36Z</published>
<updated>2026-06-16T21:44:36Z</updated>
<title>runtime: suppress HLL for group targets</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/91c6ddfdf3aba9466a2c92242de299d6a0ca540f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 91c6ddfdf3aba9466a2c92242de299d6a0ca540f
parent d5c68ab256ecddefc836164de764cff7bc005d38
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 14:44:36 -0700

runtime: suppress HLL for group targets

</content>
</entry>
<entry>
<id>d5c68ab256ecddefc836164de764cff7bc005d38</id>
<published>2026-06-16T21:14:19Z</published>
<updated>2026-06-16T21:14:19Z</updated>
<title>runtime: extract HLL group targets</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/d5c68ab256ecddefc836164de764cff7bc005d38.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d5c68ab256ecddefc836164de764cff7bc005d38
parent 936e8bae39e0e824ecafcb40ff7162e43f3ed45a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 14:14:19 -0700

runtime: extract HLL group targets

</content>
</entry>
<entry>
<id>936e8bae39e0e824ecafcb40ff7162e43f3ed45a</id>
<published>2026-06-16T20:50:40Z</published>
<updated>2026-06-16T20:50:40Z</updated>
<title>runtime: forbid custom Pocket verification</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/936e8bae39e0e824ecafcb40ff7162e43f3ed45a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 936e8bae39e0e824ecafcb40ff7162e43f3ed45a
parent 88c7733777161c76940c6e1003c6bbc0948404b2
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 13:50:40 -0700

runtime: forbid custom Pocket verification

</content>
</entry>
<entry>
<id>88c7733777161c76940c6e1003c6bbc0948404b2</id>
<published>2026-06-16T20:48:06Z</published>
<updated>2026-06-16T20:48:06Z</updated>
<title>runtime: verify Pocket events natively</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/88c7733777161c76940c6e1003c6bbc0948404b2.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 88c7733777161c76940c6e1003c6bbc0948404b2
parent 26b081bf8d0929d5343f993fa069a540eb6fb620
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 13:48:06 -0700

runtime: verify Pocket events natively

</content>
</entry>
<entry>
<id>26b081bf8d0929d5343f993fa069a540eb6fb620</id>
<published>2026-06-16T20:37:09Z</published>
<updated>2026-06-16T20:37:09Z</updated>
<title>runtime: cover verifier error categories</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/26b081bf8d0929d5343f993fa069a540eb6fb620.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 26b081bf8d0929d5343f993fa069a540eb6fb620
parent e168d97755148343affcd3fd75138db3a6708b2e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 13:37:09 -0700

runtime: cover verifier error categories

</content>
</entry>
<entry>
<id>e168d97755148343affcd3fd75138db3a6708b2e</id>
<published>2026-06-16T07:47:30Z</published>
<updated>2026-06-16T07:47:30Z</updated>
<title>runtime: enforce Pocket source invariants</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/e168d97755148343affcd3fd75138db3a6708b2e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e168d97755148343affcd3fd75138db3a6708b2e
parent 350bf9d13a9b5f0eb1abec90acefd1151d6b9505
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 00:47:30 -0700

runtime: enforce Pocket source invariants

- gate protocol event conversions behind test-only adapters
- return runtime messages from Pocket query and fanout paths
- move auth and projection tests onto Pocket event views
- add a production source invariant for runtime and groups

</content>
</entry>
<entry>
<id>350bf9d13a9b5f0eb1abec90acefd1151d6b9505</id>
<published>2026-06-16T07:24:19Z</published>
<updated>2026-06-16T07:24:19Z</updated>
<title>runtime: harden HLL privacy eligibility</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/350bf9d13a9b5f0eb1abec90acefd1151d6b9505.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 350bf9d13a9b5f0eb1abec90acefd1151d6b9505
parent 3e0d1de6407e9d28f9eb2fbd0c1aa5b65ab35686
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 00:24:19 -0700

runtime: harden HLL privacy eligibility

- Add a suppressible HLL accumulator for count scans.
- Suppress HLL for private hidden unknown redacted limited and multi-filter counts.
- Preserve public single-filter HLL behavior and exact count semantics.
- Prove disabled negentropy does not validate or screen storage filters.

</content>
</entry>
<entry>
<id>3e0d1de6407e9d28f9eb2fbd0c1aa5b65ab35686</id>
<published>2026-06-16T07:16:40Z</published>
<updated>2026-06-16T07:16:40Z</updated>
<title>runtime: store generated Pocket events</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/3e0d1de6407e9d28f9eb2fbd0c1aa5b65ab35686.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 3e0d1de6407e9d28f9eb2fbd0c1aa5b65ab35686
parent de7e20d996f6558d40c2a24b177bbb0f49abe236
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 00:16:40 -0700

runtime: store generated Pocket events

- Store relay-generated group events as single Pocket-owned events.
- Remove protocol generated signing helpers from the group builder.
- Update generated recovery fixtures to materialize Pocket events directly.
- Gate protocol-to-Pocket conversion helpers to test-only adapter paths.

</content>
</entry>
<entry>
<id>de7e20d996f6558d40c2a24b177bbb0f49abe236</id>
<published>2026-06-16T07:03:29Z</published>
<updated>2026-06-16T07:03:29Z</updated>
<title>groups: sign generated Pocket events</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/de7e20d996f6558d40c2a24b177bbb0f49abe236.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit de7e20d996f6558d40c2a24b177bbb0f49abe236
parent 6b1ca6d8fb9c71194da3ff7268573b2e6edfb3be
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 16 Jun 2026 00:03:29 -0700

groups: sign generated Pocket events

- add RelaySigner support for Pocket-owned event signing
- build generated group payloads through Pocket tags
- verify generated Pocket events after signing
- cover generated NIP-29 events with stable golden ids

</content>
</entry>
<entry>
<id>6b1ca6d8fb9c71194da3ff7268573b2e6edfb3be</id>
<published>2026-06-16T06:57:46Z</published>
<updated>2026-06-16T06:57:46Z</updated>
<title>runtime: rebuild groups from Pocket events</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/6b1ca6d8fb9c71194da3ff7268573b2e6edfb3be.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 6b1ca6d8fb9c71194da3ff7268573b2e6edfb3be
parent d5ce401cfcfbc644bad990ab2e1f6570a30db71e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 23:57:46 -0700

runtime: rebuild groups from Pocket events

- store canonical group rebuild records as Pocket events
- scan Pocket storage without protocol event conversion
- replay checkpoints and missing outbox records from Pocket views
- align rebuild tests with Pocket-backed canonical events

</content>
</entry>
<entry>
<id>d5ce401cfcfbc644bad990ab2e1f6570a30db71e</id>
<published>2026-06-16T06:53:39Z</published>
<updated>2026-06-16T06:53:39Z</updated>
<title>runtime: plan group writes from event views</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/d5ce401cfcfbc644bad990ab2e1f6570a30db71e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d5ce401cfcfbc644bad990ab2e1f6570a30db71e
parent 8e8ccd0edb74a17acfe2918fd4c8710ede997f47
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 23:53:39 -0700

runtime: plan group writes from event views

- store Pocket group source events without protocol conversion
- apply projection from the stored source event view
- derive outbox records through GroupEventView helpers
- keep rebuild conversion deferred to the recovery slice

</content>
</entry>
<entry>
<id>8e8ccd0edb74a17acfe2918fd4c8710ede997f47</id>
<published>2026-06-16T06:50:46Z</published>
<updated>2026-06-16T06:50:46Z</updated>
<title>groups: apply projection from event views</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/8e8ccd0edb74a17acfe2918fd4c8710ede997f47.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8e8ccd0edb74a17acfe2918fd4c8710ede997f47
parent b182c2d7957c22b8c17bb87830befea44c80263e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 23:50:46 -0700

groups: apply projection from event views

- make projection ordering derive from GroupEventView
- parse group metadata through event views
- move projection tag handling off protocol Tag values
- prove Pocket and protocol projection state equivalence

</content>
</entry>
<entry>
<id>b182c2d7957c22b8c17bb87830befea44c80263e</id>
<published>2026-06-16T06:45:23Z</published>
<updated>2026-06-16T06:45:23Z</updated>
<title>groups: extend event view primitives</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/b182c2d7957c22b8c17bb87830befea44c80263e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit b182c2d7957c22b8c17bb87830befea44c80263e
parent 513ac06a6db8c1d7e37a6e235b0a7f66c96f3ada
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 23:45:23 -0700

groups: extend event view primitives

- add neutral created-at access to group event views
- expose full validated tag values for projection parsing
- implement the new surface for Pocket owned events
- cover Pocket view fields with focused group tests

</content>
</entry>
<entry>
<id>513ac06a6db8c1d7e37a6e235b0a7f66c96f3ada</id>
<published>2026-06-16T03:46:12Z</published>
<updated>2026-06-16T03:46:12Z</updated>
<title>runtime: close protocol relay boundaries</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/513ac06a6db8c1d7e37a6e235b0a7f66c96f3ada.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 513ac06a6db8c1d7e37a6e235b0a7f66c96f3ada
parent cc8c614a33051151a58fa7722f36648b781ba732
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 20:46:12 -0700

runtime: close protocol relay boundaries

- Add Pocket-native direct relay REQ and fanout APIs for production callers.
- Quarantine old protocol relay helpers behind explicit test-only names.
- Move benchmark and integration adapters to Pocket conversion boundaries.
- Validate runtime, workspace test, workspace check, source scans, and clippy lanes.

</content>
</entry>
<entry>
<id>cc8c614a33051151a58fa7722f36648b781ba732</id>
<published>2026-06-16T03:33:38Z</published>
<updated>2026-06-16T03:33:38Z</updated>
<title>runtime: isolate generated group Pocket storage</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/cc8c614a33051151a58fa7722f36648b781ba732.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit cc8c614a33051151a58fa7722f36648b781ba732
parent 7d173dc8bd37dc7fc6aedbb451541a289c974cc5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 20:33:38 -0700

runtime: isolate generated group Pocket storage

- Add an explicit generated group storage adapter that signs payloads and stores Pocket events.
- Keep projection application at the existing group boundary while avoiding a broad signer rewrite.
- Verify generated Pocket event id, tags, and signature at the adapter boundary.
- Validate generated, group, signing, workspace check, source scan, and clippy lanes.

</content>
</entry>
<entry>
<id>7d173dc8bd37dc7fc6aedbb451541a289c974cc5</id>
<published>2026-06-16T03:26:03Z</published>
<updated>2026-06-16T03:26:03Z</updated>
<title>runtime: count events with Pocket filters</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/7d173dc8bd37dc7fc6aedbb451541a289c974cc5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 7d173dc8bd37dc7fc6aedbb451541a289c974cc5
parent ee4e7d1ba5a4eafe27fe6f230f3ff13a992d45a1
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 20:26:03 -0700

runtime: count events with Pocket filters

- Validate and execute COUNT filters as Pocket-owned filters through runtime and relay core.
- Compute exact counts and HLL from Pocket events while preserving privacy gates and limitless count queries.
- Remove the obsolete Pocket-to-protocol filter conversion and protocol rate-limit path.
- Validate count, hll, workspace check, source scan, and clippy lanes.

</content>
</entry>
<entry>
<id>ee4e7d1ba5a4eafe27fe6f230f3ff13a992d45a1</id>
<published>2026-06-16T03:08:50Z</published>
<updated>2026-06-16T03:08:50Z</updated>
<title>runtime: query reqs with Pocket filters</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/ee4e7d1ba5a4eafe27fe6f230f3ff13a992d45a1.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ee4e7d1ba5a4eafe27fe6f230f3ff13a992d45a1
parent 6ac248f91364861379dc18f458afaf63aefc2db3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 20:08:50 -0700

runtime: query reqs with Pocket filters

- Validate and execute REQ filters as Pocket-owned filters through the shared query path.
- Move REQ rate-limit classification and live subscription decisions onto Pocket filters.
- Preserve protocol conversion only at protocol helper and COUNT/HLL boundaries.
- Validate the req, complete, redacted, workspace check, source scan, and clippy lanes.

</content>
</entry>
<entry>
<id>6ac248f91364861379dc18f458afaf63aefc2db3</id>
<published>2026-06-16T02:52:51Z</published>
<updated>2026-06-16T02:52:51Z</updated>
<title>runtime: match live subscriptions with Pocket</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/6ac248f91364861379dc18f458afaf63aefc2db3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 6ac248f91364861379dc18f458afaf63aefc2db3
parent 7421ae582d1d6c82ef8ec8ee654fa5e286adfd76
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 19:52:51 -0700

runtime: match live subscriptions with Pocket

- Store live subscription filters as Pocket-owned filters.
- Match live fanout with Pocket event_matches and return subscription ids.
- Keep runtime offset fanout Pocket-backed through outbound EVENT construction.
- Validate live, current-auth live, workspace check, source scan, and clippy lanes.

</content>
</entry>
<entry>
<id>7421ae582d1d6c82ef8ec8ee654fa5e286adfd76</id>
<published>2026-06-16T02:44:39Z</published>
<updated>2026-06-16T02:44:39Z</updated>
<title>runtime: encode outbound events from Pocket</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/7421ae582d1d6c82ef8ec8ee654fa5e286adfd76.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 7421ae582d1d6c82ef8ec8ee654fa5e286adfd76
parent 16a0af31a3a49caee23c41b3add4e98c75ff9359
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 19:44:39 -0700

runtime: encode outbound events from Pocket

- Add a runtime relay message boundary for Pocket-backed outbound EVENT replies.
- Encode outbound EVENT frames from Pocket event JSON while preserving protocol encoders for non-event replies.
- Keep offset lookup and live offset fanout payloads Pocket-owned through session enqueueing.
- Validate the offset, outbound, protocol relay-message, workspace check, and clippy lanes.

</content>
</entry>
<entry>
<id>16a0af31a3a49caee23c41b3add4e98c75ff9359</id>
<published>2026-06-16T02:19:40Z</published>
<updated>2026-06-16T02:19:40Z</updated>
<title>runtime: write groups from Pocket events</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/16a0af31a3a49caee23c41b3add4e98c75ff9359.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 16a0af31a3a49caee23c41b3add4e98c75ff9359
parent e7135aec4465f94152729da628ab01149769f28c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 19:19:40 -0700

runtime: write groups from Pocket events

- add a Pocket-native group service write entry point
- store inbound group source events without protocol reserialization
- read group delete-target and audit fields through GroupEventView
- keep protocol event storage helpers limited to tests and generated state

</content>
</entry>
<entry>
<id>e7135aec4465f94152729da628ab01149769f28c</id>
<published>2026-06-16T02:11:58Z</published>
<updated>2026-06-16T02:11:58Z</updated>
<title>runtime: admit events through Pocket storage</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/e7135aec4465f94152729da628ab01149769f28c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e7135aec4465f94152729da628ab01149769f28c
parent bfaa2cc638ef740b28ab42fb246a2a792e4805ba
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 19:11:58 -0700

runtime: admit events through Pocket storage

- add Pocket-native relay event admission APIs
- route runtime EVENT dispatch and rate limits through Pocket events
- store public non-group events without protocol event rebuilds
- quarantine protocol event admission behind test-only adapters

</content>
</entry>
<entry>
<id>bfaa2cc638ef740b28ab42fb246a2a792e4805ba</id>
<published>2026-06-16T01:58:57Z</published>
<updated>2026-06-16T01:58:57Z</updated>
<title>runtime: validate auth through Pocket events</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/bfaa2cc638ef740b28ab42fb246a2a792e4805ba.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit bfaa2cc638ef740b28ab42fb246a2a792e4805ba
parent 5868a5a46979d1c7acd588a8c760b3dfde88067e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 18:58:57 -0700

runtime: validate auth through Pocket events

- add Pocket event identity signature and protected-tag helpers
- authenticate NIP-42 AUTH events without protocol conversion
- rate limit Pocket AUTH attempts and failures directly
- cover Pocket signature protected tag and auth edge cases

</content>
</entry>
<entry>
<id>5868a5a46979d1c7acd588a8c760b3dfde88067e</id>
<published>2026-06-16T01:45:22Z</published>
<updated>2026-06-16T01:45:22Z</updated>
<title>runtime: dispatch sessions through runtime messages</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/5868a5a46979d1c7acd588a8c760b3dfde88067e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 5868a5a46979d1c7acd588a8c760b3dfde88067e
parent 15d74820da9bb4fbcfc60ce69c4937e9a2a43f2b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 18:45:22 -0700

runtime: dispatch sessions through runtime messages

- remove the session protocol message bridge
- route session and runtime dispatch through RuntimeClientMessage
- keep protocol fixtures behind test-only runtime adapters
- retarget source-shape guards to runtime message branches

</content>
</entry>
<entry>
<id>15d74820da9bb4fbcfc60ce69c4937e9a2a43f2b</id>
<published>2026-06-16T01:38:16Z</published>
<updated>2026-06-16T01:38:16Z</updated>
<title>runtime: add pocket-native client message boundary</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/15d74820da9bb4fbcfc60ce69c4937e9a2a43f2b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 15d74820da9bb4fbcfc60ce69c4937e9a2a43f2b
parent ae6ea890ea3dba4b974be661bfccc101ee74ecb5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 18:38:16 -0700

runtime: add pocket-native client message boundary

- add RuntimeClientMessage with Pocket-owned event and filter payloads
- parse EVENT and AUTH directly through Pocket event JSON
- parse REQ COUNT and NEG-OPEN filters through Pocket JSON
- keep session behavior stable for the parser boundary checkpoint

</content>
</entry>
<entry>
<id>ae6ea890ea3dba4b974be661bfccc101ee74ecb5</id>
<published>2026-06-15T21:59:05Z</published>
<updated>2026-06-15T21:59:05Z</updated>
<title>runtime: add safe count hll parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/ae6ea890ea3dba4b974be661bfccc101ee74ecb5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ae6ea890ea3dba4b974be661bfccc101ee74ecb5
parent 0a84d0a813e87869fa4d5a9e55f4ad86d1bf99d3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 14:59:05 -0700

runtime: add safe count hll parity

</content>
</entry>
<entry>
<id>0a84d0a813e87869fa4d5a9e55f4ad86d1bf99d3</id>
<published>2026-06-15T21:45:07Z</published>
<updated>2026-06-15T21:45:07Z</updated>
<title>runtime: disable negentropy surface</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/0a84d0a813e87869fa4d5a9e55f4ad86d1bf99d3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 0a84d0a813e87869fa4d5a9e55f4ad86d1bf99d3
parent 3b55068d79195f859bc789729aae3e8307ec8bff
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 14:45:07 -0700

runtime: disable negentropy surface

</content>
</entry>
<entry>
<id>3b55068d79195f859bc789729aae3e8307ec8bff</id>
<published>2026-06-15T21:33:49Z</published>
<updated>2026-06-15T21:33:49Z</updated>
<title>runtime: parse req count through Pocket</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/3b55068d79195f859bc789729aae3e8307ec8bff.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 3b55068d79195f859bc789729aae3e8307ec8bff
parent 34c47f2e83f4a4f9977d1cb685ee5f181c5e087b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 14:33:49 -0700

runtime: parse req count through Pocket

- route REQ COUNT and CLOSE through the runtime parser boundary
- convert Pocket filters back into typed Tangle filters
- preserve unsupported search and malformed filter rejection behavior
- keep protocol parser usage outside runtime WebSocket source

</content>
</entry>
<entry>
<id>34c47f2e83f4a4f9977d1cb685ee5f181c5e087b</id>
<published>2026-06-15T21:20:02Z</published>
<updated>2026-06-15T21:20:02Z</updated>
<title>runtime: parse event auth through Pocket</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/34c47f2e83f4a4f9977d1cb685ee5f181c5e087b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 34c47f2e83f4a4f9977d1cb685ee5f181c5e087b
parent b8992e9381892358079e3042ba91c07cf8a3fc21
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 14:20:02 -0700

runtime: parse event auth through Pocket

</content>
</entry>
<entry>
<id>b8992e9381892358079e3042ba91c07cf8a3fc21</id>
<published>2026-06-15T21:11:41Z</published>
<updated>2026-06-15T21:11:41Z</updated>
<title>runtime: close redacted reqs</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/b8992e9381892358079e3042ba91c07cf8a3fc21.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit b8992e9381892358079e3042ba91c07cf8a3fc21
parent 4b0a20d9cd416b5c27cdb1565d7ac3d2144e4a6b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 14:11:41 -0700

runtime: close redacted reqs

</content>
</entry>
<entry>
<id>4b0a20d9cd416b5c27cdb1565d7ac3d2144e4a6b</id>
<published>2026-06-15T20:57:06Z</published>
<updated>2026-06-15T20:57:06Z</updated>
<title>runtime: use current auth for live reqs</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/4b0a20d9cd416b5c27cdb1565d7ac3d2144e4a6b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 4b0a20d9cd416b5c27cdb1565d7ac3d2144e4a6b
parent d33f78987ee4e56fc777cb89efa13cade9858e40
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 13:57:06 -0700

runtime: use current auth for live reqs

</content>
</entry>
<entry>
<id>d33f78987ee4e56fc777cb89efa13cade9858e40</id>
<published>2026-06-15T12:02:04Z</published>
<updated>2026-06-15T12:02:04Z</updated>
<title>tests: prove group write races</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/d33f78987ee4e56fc777cb89efa13cade9858e40.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d33f78987ee4e56fc777cb89efa13cade9858e40
parent 0a6352ec30b906e2edd615da3fd1ddc28cf4920c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 05:02:04 -0700

tests: prove group write races

- Add production-path concurrency tests for duplicate create and duplicate join races.
- Cover join versus leave, delete versus write, and put versus remove races.
- Compare live group semantics with canonical Pocket replay after race handling.
- Validate group, recovery, privacy, check, clippy, and forbidden-surface lanes.

</content>
</entry>
<entry>
<id>0a6352ec30b906e2edd615da3fd1ddc28cf4920c</id>
<published>2026-06-15T11:53:42Z</published>
<updated>2026-06-15T11:53:42Z</updated>
<title>protocol: reject duplicate object fields</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/0a6352ec30b906e2edd615da3fd1ddc28cf4920c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 0a6352ec30b906e2edd615da3fd1ddc28cf4920c
parent 91e88275889d008ecefa9d7cdcb4b261c7a09c57
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 04:53:42 -0700

protocol: reject duplicate object fields

- Reject duplicate JSON object fields in the retained protocol parser.
- Cover duplicate field errors for client filters and event payloads.
- Prove addressable events preserve repeated and non-indexed tag shapes.
- Validate protocol, runtime, benchmark, workspace, and clippy lanes.

</content>
</entry>
<entry>
<id>91e88275889d008ecefa9d7cdcb4b261c7a09c57</id>
<published>2026-06-15T11:47:03Z</published>
<updated>2026-06-15T11:47:03Z</updated>
<title>tests: cover unsupported negentropy command parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/91e88275889d008ecefa9d7cdcb4b261c7a09c57.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 91e88275889d008ecefa9d7cdcb4b261c7a09c57
parent 60eab9d6947a9cdfc7e11f6e8d97cf5d130e6604
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 04:47:03 -0700

tests: cover unsupported negentropy command parity

- add explicit NEG-OPEN websocket rejection coverage
- keep negentropy unimplemented and unadvertised
- reuse the Chorus malformed command parity test
- preserve unsupported command NOTICE behavior

</content>
</entry>
<entry>
<id>60eab9d6947a9cdfc7e11f6e8d97cf5d130e6604</id>
<published>2026-06-15T11:42:13Z</published>
<updated>2026-06-15T11:42:13Z</updated>
<title>tests: extend Pocket store parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/60eab9d6947a9cdfc7e11f6e8d97cf5d130e6604.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 60eab9d6947a9cdfc7e11f6e8d97cf5d130e6604
parent 9721af957951dce0e785de5cc4878c136965ba2e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 15 Jun 2026 04:42:13 -0700

tests: extend Pocket store parity

- cover mismatch screening without redaction markers
- prove all-mismatch screens materialize no events
- assert duplicate event writes fail deterministically
- prove duplicate writes do not create duplicate scan or query results

</content>
</entry>
<entry>
<id>9721af957951dce0e785de5cc4878c136965ba2e</id>
<published>2026-06-15T04:22:30Z</published>
<updated>2026-06-15T04:22:30Z</updated>
<title>runtime: make count exact</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/9721af957951dce0e785de5cc4878c136965ba2e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 9721af957951dce0e785de5cc4878c136965ba2e
parent 39b8b42d3268f8f1c35ecf0406af9979023c9be5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 21:22:30 -0700

runtime: make count exact

- split COUNT filtering from REQ default-limit injection
- add an exact-count Pocket query mode for accepted counts
- prove default and client limits do not cap accepted COUNT results
- extend benchmark coverage for exact bounded counts above default_limit

</content>
</entry>
<entry>
<id>39b8b42d3268f8f1c35ecf0406af9979023c9be5</id>
<published>2026-06-15T04:16:17Z</published>
<updated>2026-06-15T04:16:17Z</updated>
<title>runtime: make group writes atomic</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/39b8b42d3268f8f1c35ecf0406af9979023c9be5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 39b8b42d3268f8f1c35ecf0406af9979023c9be5
parent a1a0beb4c97e8e1e8c9331308c2eccad2a0db283
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 21:16:17 -0700

runtime: make group writes atomic

- replace split group write handle methods with one locked write boundary
- keep group rejection and storage errors distinct for relay responses
- route group event storage and generated offsets through the group service
- add a source-shape guard for the atomic production path

</content>
</entry>
<entry>
<id>a1a0beb4c97e8e1e8c9331308c2eccad2a0db283</id>
<published>2026-06-15T04:11:08Z</published>
<updated>2026-06-15T04:11:08Z</updated>
<title>tests: prove pocket source boundary</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/a1a0beb4c97e8e1e8c9331308c2eccad2a0db283.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit a1a0beb4c97e8e1e8c9331308c2eccad2a0db283
parent b52b9560ed4849fe3ef2f91f2080b32a0b69f4df
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 21:11:08 -0700

tests: prove pocket source boundary

- assert Pocket manifests and lock state use the approved fork revision
- reject alternate Pocket hosts in source-boundary tests
- align benchmark provenance with the store boundary constants
- keep the dependency proof inside existing store and benchmark crates

</content>
</entry>
<entry>
<id>b52b9560ed4849fe3ef2f91f2080b32a0b69f4df</id>
<published>2026-06-15T02:37:53Z</published>
<updated>2026-06-15T02:37:53Z</updated>
<title>bench: prove benchmark profile gates</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/b52b9560ed4849fe3ef2f91f2080b32a0b69f4df.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit b52b9560ed4849fe3ef2f91f2080b32a0b69f4df
parent a548515e28abc1b5816204ddaea79e37a491958b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:37:53 -0700

bench: prove benchmark profile gates

</content>
</entry>
<entry>
<id>a548515e28abc1b5816204ddaea79e37a491958b</id>
<published>2026-06-15T02:33:20Z</published>
<updated>2026-06-15T02:33:20Z</updated>
<title>bench: extend benchmark artifact schema</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/a548515e28abc1b5816204ddaea79e37a491958b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit a548515e28abc1b5816204ddaea79e37a491958b
parent 0df82a8ec4535886b7ce39dd4895da725ab5f57d
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:33:20 -0700

bench: extend benchmark artifact schema

</content>
</entry>
<entry>
<id>0df82a8ec4535886b7ce39dd4895da725ab5f57d</id>
<published>2026-06-15T02:30:01Z</published>
<updated>2026-06-15T02:30:01Z</updated>
<title>bench: add proof benchmark profiles</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/0df82a8ec4535886b7ce39dd4895da725ab5f57d.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 0df82a8ec4535886b7ce39dd4895da725ab5f57d
parent 96acdc483d84ba70565f7c7f943b45efb4e46c72
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:30:01 -0700

bench: add proof benchmark profiles

</content>
</entry>
<entry>
<id>96acdc483d84ba70565f7c7f943b45efb4e46c72</id>
<published>2026-06-15T02:26:20Z</published>
<updated>2026-06-15T02:26:20Z</updated>
<title>bench: rename production benchmark profile</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/96acdc483d84ba70565f7c7f943b45efb4e46c72.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 96acdc483d84ba70565f7c7f943b45efb4e46c72
parent 58a171478cdeb59579141e7df8780338adf4c032
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:26:20 -0700

bench: rename production benchmark profile

</content>
</entry>
<entry>
<id>58a171478cdeb59579141e7df8780338adf4c032</id>
<published>2026-06-15T02:20:34Z</published>
<updated>2026-06-15T02:20:34Z</updated>
<title>runtime: prove tombstone visibility gates</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/58a171478cdeb59579141e7df8780338adf4c032.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 58a171478cdeb59579141e7df8780338adf4c032
parent 311f53e9b55ed32db27f96aa47532ba904f19f50
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:20:34 -0700

runtime: prove tombstone visibility gates

</content>
</entry>
<entry>
<id>311f53e9b55ed32db27f96aa47532ba904f19f50</id>
<published>2026-06-15T02:17:29Z</published>
<updated>2026-06-15T02:17:29Z</updated>
<title>runtime: harden hidden privacy coverage</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/311f53e9b55ed32db27f96aa47532ba904f19f50.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 311f53e9b55ed32db27f96aa47532ba904f19f50
parent d8e665b990b1a31ed354842cd46f5d14bf31a508
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:17:29 -0700

runtime: harden hidden privacy coverage

</content>
</entry>
<entry>
<id>d8e665b990b1a31ed354842cd46f5d14bf31a508</id>
<published>2026-06-15T02:12:49Z</published>
<updated>2026-06-15T02:12:49Z</updated>
<title>groups: prove projection rebuild equivalence</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/d8e665b990b1a31ed354842cd46f5d14bf31a508.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d8e665b990b1a31ed354842cd46f5d14bf31a508
parent 526c08413c746c43a277e5c1ab10a13e460ffddc
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:12:49 -0700

groups: prove projection rebuild equivalence

</content>
</entry>
<entry>
<id>526c08413c746c43a277e5c1ab10a13e460ffddc</id>
<published>2026-06-15T02:09:28Z</published>
<updated>2026-06-15T02:09:28Z</updated>
<title>runtime: prove generated outbox mark recovery</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/526c08413c746c43a277e5c1ab10a13e460ffddc.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 526c08413c746c43a277e5c1ab10a13e460ffddc
parent 8d81fff00db9cca391e99a3e0fe63b8a03912868
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:09:28 -0700

runtime: prove generated outbox mark recovery

</content>
</entry>
<entry>
<id>8d81fff00db9cca391e99a3e0fe63b8a03912868</id>
<published>2026-06-15T02:06:24Z</published>
<updated>2026-06-15T02:06:24Z</updated>
<title>runtime: prove pending outbox recovery</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/8d81fff00db9cca391e99a3e0fe63b8a03912868.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8d81fff00db9cca391e99a3e0fe63b8a03912868
parent 26434b9aeba54234f6aae19f67d2b73ebbd9abfa
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:06:24 -0700

runtime: prove pending outbox recovery

</content>
</entry>
<entry>
<id>26434b9aeba54234f6aae19f67d2b73ebbd9abfa</id>
<published>2026-06-15T02:02:27Z</published>
<updated>2026-06-15T02:02:27Z</updated>
<title>runtime: prove source-only recovery</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/26434b9aeba54234f6aae19f67d2b73ebbd9abfa.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 26434b9aeba54234f6aae19f67d2b73ebbd9abfa
parent 00bf0c2c5d717095c832d28538c6269f152d15a9
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 19:02:27 -0700

runtime: prove source-only recovery

</content>
</entry>
<entry>
<id>00bf0c2c5d717095c832d28538c6269f152d15a9</id>
<published>2026-06-15T01:57:00Z</published>
<updated>2026-06-15T01:57:00Z</updated>
<title>runtime: prove generated state live fanout</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/00bf0c2c5d717095c832d28538c6269f152d15a9.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 00bf0c2c5d717095c832d28538c6269f152d15a9
parent 42bb1ef88508d320d723d0925f86f14e3593bfee
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:57:00 -0700

runtime: prove generated state live fanout

</content>
</entry>
<entry>
<id>42bb1ef88508d320d723d0925f86f14e3593bfee</id>
<published>2026-06-15T01:49:30Z</published>
<updated>2026-06-15T01:49:30Z</updated>
<title>bench: cover count resource controls</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/42bb1ef88508d320d723d0925f86f14e3593bfee.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 42bb1ef88508d320d723d0925f86f14e3593bfee
parent c5492a5795298358b2963f121789ca488458ac91
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:49:30 -0700

bench: cover count resource controls

</content>
</entry>
<entry>
<id>c5492a5795298358b2963f121789ca488458ac91</id>
<published>2026-06-15T01:35:14Z</published>
<updated>2026-06-15T01:35:14Z</updated>
<title>runtime: prove exact count only</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/c5492a5795298358b2963f121789ca488458ac91.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit c5492a5795298358b2963f121789ca488458ac91
parent ca0dcf9352372ba781d7b4489694f0ae2a04219b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:35:14 -0700

runtime: prove exact count only

</content>
</entry>
<entry>
<id>ca0dcf9352372ba781d7b4489694f0ae2a04219b</id>
<published>2026-06-15T01:29:40Z</published>
<updated>2026-06-15T01:29:40Z</updated>
<title>runtime: expose safe query metrics</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/ca0dcf9352372ba781d7b4489694f0ae2a04219b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ca0dcf9352372ba781d7b4489694f0ae2a04219b
parent e429592e588e0e57721b66c66f7df0898c092023
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:29:40 -0700

runtime: expose safe query metrics

</content>
</entry>
<entry>
<id>e429592e588e0e57721b66c66f7df0898c092023</id>
<published>2026-06-15T01:20:03Z</published>
<updated>2026-06-15T01:20:03Z</updated>
<title>runtime: prove count privacy refusals</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/e429592e588e0e57721b66c66f7df0898c092023.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e429592e588e0e57721b66c66f7df0898c092023
parent d05f5d169c85a0207db6faaae0065d0f6d0ad52c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:20:03 -0700

runtime: prove count privacy refusals

</content>
</entry>
<entry>
<id>d05f5d169c85a0207db6faaae0065d0f6d0ad52c</id>
<published>2026-06-15T01:11:16Z</published>
<updated>2026-06-15T01:11:16Z</updated>
<title>runtime: refuse broad count queries</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/d05f5d169c85a0207db6faaae0065d0f6d0ad52c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d05f5d169c85a0207db6faaae0065d0f6d0ad52c
parent 67cb8a1a310e12f06b83b28654a8b34462b04c64
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:11:16 -0700

runtime: refuse broad count queries

</content>
</entry>
<entry>
<id>67cb8a1a310e12f06b83b28654a8b34462b04c64</id>
<published>2026-06-15T01:05:22Z</published>
<updated>2026-06-15T01:05:22Z</updated>
<title>runtime: classify broad count queries</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/67cb8a1a310e12f06b83b28654a8b34462b04c64.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 67cb8a1a310e12f06b83b28654a8b34462b04c64
parent a84211124edb5e6c2b6d2206b43b0406e1958b23
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 18:05:22 -0700

runtime: classify broad count queries

</content>
</entry>
<entry>
<id>a84211124edb5e6c2b6d2206b43b0406e1958b23</id>
<published>2026-06-15T00:55:53Z</published>
<updated>2026-06-15T00:55:53Z</updated>
<title>runtime: prove live chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/a84211124edb5e6c2b6d2206b43b0406e1958b23.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit a84211124edb5e6c2b6d2206b43b0406e1958b23
parent afaabd1b486f9266f3579e1403c08a5de488bc1f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:55:53 -0700

runtime: prove live chorus parity

</content>
</entry>
<entry>
<id>afaabd1b486f9266f3579e1403c08a5de488bc1f</id>
<published>2026-06-15T00:52:30Z</published>
<updated>2026-06-15T00:52:30Z</updated>
<title>runtime: prove nip11 chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/afaabd1b486f9266f3579e1403c08a5de488bc1f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit afaabd1b486f9266f3579e1403c08a5de488bc1f
parent 5ed4d80f2470e3d5693c5800a3ed6595d34a2f41
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:52:30 -0700

runtime: prove nip11 chorus parity

</content>
</entry>
<entry>
<id>5ed4d80f2470e3d5693c5800a3ed6595d34a2f41</id>
<published>2026-06-15T00:49:12Z</published>
<updated>2026-06-15T00:49:12Z</updated>
<title>runtime: prove auth chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/5ed4d80f2470e3d5693c5800a3ed6595d34a2f41.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 5ed4d80f2470e3d5693c5800a3ed6595d34a2f41
parent 94a60f76952af42db453ba2d127c103b871b73ac
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:49:12 -0700

runtime: prove auth chorus parity

</content>
</entry>
<entry>
<id>94a60f76952af42db453ba2d127c103b871b73ac</id>
<published>2026-06-15T00:43:49Z</published>
<updated>2026-06-15T00:43:49Z</updated>
<title>runtime: prove close chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/94a60f76952af42db453ba2d127c103b871b73ac.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 94a60f76952af42db453ba2d127c103b871b73ac
parent 726cc097ddcf2e6ff304c38a85374828f9ddb0cc
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:43:49 -0700

runtime: prove close chorus parity

</content>
</entry>
<entry>
<id>726cc097ddcf2e6ff304c38a85374828f9ddb0cc</id>
<published>2026-06-15T00:38:25Z</published>
<updated>2026-06-15T00:38:25Z</updated>
<title>runtime: prove req count chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/726cc097ddcf2e6ff304c38a85374828f9ddb0cc.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 726cc097ddcf2e6ff304c38a85374828f9ddb0cc
parent 6fef1da8c6441701aca28af2e26bbd7cd0dd734a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:38:25 -0700

runtime: prove req count chorus parity

</content>
</entry>
<entry>
<id>6fef1da8c6441701aca28af2e26bbd7cd0dd734a</id>
<published>2026-06-15T00:33:26Z</published>
<updated>2026-06-15T00:33:26Z</updated>
<title>runtime: prove event chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/6fef1da8c6441701aca28af2e26bbd7cd0dd734a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 6fef1da8c6441701aca28af2e26bbd7cd0dd734a
parent 59d8c284e6b41437a03c14366b925212eb448e5b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:33:26 -0700

runtime: prove event chorus parity

</content>
</entry>
<entry>
<id>59d8c284e6b41437a03c14366b925212eb448e5b</id>
<published>2026-06-15T00:30:13Z</published>
<updated>2026-06-15T00:30:13Z</updated>
<title>runtime: prove malformed chorus parity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/59d8c284e6b41437a03c14366b925212eb448e5b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 59d8c284e6b41437a03c14366b925212eb448e5b
parent a45d9b443f1ff42f99a846c04678b909e46d8850
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:30:13 -0700

runtime: prove malformed chorus parity

</content>
</entry>
<entry>
<id>a45d9b443f1ff42f99a846c04678b909e46d8850</id>
<published>2026-06-15T00:23:24Z</published>
<updated>2026-06-15T00:23:24Z</updated>
<title>protocol: prove hot path coverage</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/a45d9b443f1ff42f99a846c04678b909e46d8850.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit a45d9b443f1ff42f99a846c04678b909e46d8850
parent 561fa31180e332da0796f7008d5e1467d1b50711
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:23:24 -0700

protocol: prove hot path coverage

</content>
</entry>
<entry>
<id>561fa31180e332da0796f7008d5e1467d1b50711</id>
<published>2026-06-15T00:15:01Z</published>
<updated>2026-06-15T00:15:01Z</updated>
<title>runtime: harden live backpressure</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/561fa31180e332da0796f7008d5e1467d1b50711.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 561fa31180e332da0796f7008d5e1467d1b50711
parent 304238cd7f9f1a458bd8fce25843bc3344a5f0f5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:15:01 -0700

runtime: harden live backpressure

</content>
</entry>
<entry>
<id>304238cd7f9f1a458bd8fce25843bc3344a5f0f5</id>
<published>2026-06-15T00:07:29Z</published>
<updated>2026-06-15T00:07:29Z</updated>
<title>runtime: stress shared service concurrency</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/304238cd7f9f1a458bd8fce25843bc3344a5f0f5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 304238cd7f9f1a458bd8fce25843bc3344a5f0f5
parent 817b3031a3e44860144e331fb3e67d41b2f4af3a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:07:29 -0700

runtime: stress shared service concurrency

</content>
</entry>
<entry>
<id>817b3031a3e44860144e331fb3e67d41b2f4af3a</id>
<published>2026-06-15T00:00:39Z</published>
<updated>2026-06-15T00:00:39Z</updated>
<title>runtime: remove base relay mutex</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/817b3031a3e44860144e331fb3e67d41b2f4af3a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 817b3031a3e44860144e331fb3e67d41b2f4af3a
parent 9ef58e4f38c26d4affdaea768d4fccdd935028d6
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 17:00:39 -0700

runtime: remove base relay mutex

</content>
</entry>
<entry>
<id>9ef58e4f38c26d4affdaea768d4fccdd935028d6</id>
<published>2026-06-14T23:56:30Z</published>
<updated>2026-06-14T23:56:30Z</updated>
<title>runtime: prove fanout offset lock boundary</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/9ef58e4f38c26d4affdaea768d4fccdd935028d6.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 9ef58e4f38c26d4affdaea768d4fccdd935028d6
parent 78edbcd5c77e36ba7fcbeaf1441dad6133c3149c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:56:30 -0700

runtime: prove fanout offset lock boundary

</content>
</entry>
<entry>
<id>78edbcd5c77e36ba7fcbeaf1441dad6133c3149c</id>
<published>2026-06-14T23:53:10Z</published>
<updated>2026-06-14T23:53:10Z</updated>
<title>runtime: remove count relay lock</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/78edbcd5c77e36ba7fcbeaf1441dad6133c3149c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 78edbcd5c77e36ba7fcbeaf1441dad6133c3149c
parent ba1ebbb8c81cc72eb5831899f40fff9236b337cd
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:53:10 -0700

runtime: remove count relay lock

</content>
</entry>
<entry>
<id>ba1ebbb8c81cc72eb5831899f40fff9236b337cd</id>
<published>2026-06-14T23:44:21Z</published>
<updated>2026-06-14T23:44:21Z</updated>
<title>runtime: remove req relay lock</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/ba1ebbb8c81cc72eb5831899f40fff9236b337cd.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ba1ebbb8c81cc72eb5831899f40fff9236b337cd
parent b357b27818a0ac898ecb6da1b0e83775715211a5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:44:21 -0700

runtime: remove req relay lock

</content>
</entry>
<entry>
<id>b357b27818a0ac898ecb6da1b0e83775715211a5</id>
<published>2026-06-14T23:38:57Z</published>
<updated>2026-06-14T23:38:57Z</updated>
<title>runtime: remove event relay lock</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/b357b27818a0ac898ecb6da1b0e83775715211a5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit b357b27818a0ac898ecb6da1b0e83775715211a5
parent 6c55c2b65a60652decc87f5645641ce0605d2c26
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:38:57 -0700

runtime: remove event relay lock

</content>
</entry>
<entry>
<id>6c55c2b65a60652decc87f5645641ce0605d2c26</id>
<published>2026-06-14T23:33:40Z</published>
<updated>2026-06-14T23:33:40Z</updated>
<title>groups: narrow write-side relay access</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/6c55c2b65a60652decc87f5645641ce0605d2c26.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 6c55c2b65a60652decc87f5645641ce0605d2c26
parent dadd67536a5b7fc6e0b24666db1a8b6eb3d39a1f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:33:40 -0700

groups: narrow write-side relay access

</content>
</entry>
<entry>
<id>dadd67536a5b7fc6e0b24666db1a8b6eb3d39a1f</id>
<published>2026-06-14T23:27:34Z</published>
<updated>2026-06-14T23:27:34Z</updated>
<title>runtime: use shared group read gates</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/dadd67536a5b7fc6e0b24666db1a8b6eb3d39a1f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit dadd67536a5b7fc6e0b24666db1a8b6eb3d39a1f
parent bc9481e065a652aa0d3486e296454b35d5073ae3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:27:34 -0700

runtime: use shared group read gates

</content>
</entry>
<entry>
<id>bc9481e065a652aa0d3486e296454b35d5073ae3</id>
<published>2026-06-14T23:24:29Z</published>
<updated>2026-06-14T23:24:29Z</updated>
<title>groups: introduce service handle state</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/bc9481e065a652aa0d3486e296454b35d5073ae3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit bc9481e065a652aa0d3486e296454b35d5073ae3
parent b70d855cf5f63dc8993c9bdcf433600d11aba27b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:24:29 -0700

groups: introduce service handle state

</content>
</entry>
<entry>
<id>b70d855cf5f63dc8993c9bdcf433600d11aba27b</id>
<published>2026-06-14T23:19:38Z</published>
<updated>2026-06-14T23:19:38Z</updated>
<title>storage: share pocket store handle</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/b70d855cf5f63dc8993c9bdcf433600d11aba27b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit b70d855cf5f63dc8993c9bdcf433600d11aba27b
parent 2897f545c1705ef43a29ac5d53094b7e93df7237
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:19:38 -0700

storage: share pocket store handle

</content>
</entry>
<entry>
<id>2897f545c1705ef43a29ac5d53094b7e93df7237</id>
<published>2026-06-14T23:14:51Z</published>
<updated>2026-06-14T23:14:51Z</updated>
<title>runtime: introduce shared handle state</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/2897f545c1705ef43a29ac5d53094b7e93df7237.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 2897f545c1705ef43a29ac5d53094b7e93df7237
parent 23fb3e1ceba3fec8fadfad293ede580b1e6f91fb
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:14:51 -0700

runtime: introduce shared handle state

</content>
</entry>
<entry>
<id>23fb3e1ceba3fec8fadfad293ede580b1e6f91fb</id>
<published>2026-06-14T23:05:37Z</published>
<updated>2026-06-14T23:05:37Z</updated>
<title>query: reject unsupported search filters</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/23fb3e1ceba3fec8fadfad293ede580b1e6f91fb.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 23fb3e1ceba3fec8fadfad293ede580b1e6f91fb
parent db67342c7416e1e4b03bd20ed8f17e0cf02caa44
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:05:37 -0700

query: reject unsupported search filters

</content>
</entry>
<entry>
<id>db67342c7416e1e4b03bd20ed8f17e0cf02caa44</id>
<published>2026-06-14T23:02:08Z</published>
<updated>2026-06-14T23:02:08Z</updated>
<title>query: wire pocket scrape controls</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/db67342c7416e1e4b03bd20ed8f17e0cf02caa44.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit db67342c7416e1e4b03bd20ed8f17e0cf02caa44
parent 89c88d56c832052d2cb2d8b44025ce80c7160f1c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 16:02:08 -0700

query: wire pocket scrape controls

</content>
</entry>
<entry>
<id>89c88d56c832052d2cb2d8b44025ce80c7160f1c</id>
<published>2026-06-14T22:52:13Z</published>
<updated>2026-06-14T22:52:13Z</updated>
<title>storage: honor pocket sync policy</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/89c88d56c832052d2cb2d8b44025ce80c7160f1c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 89c88d56c832052d2cb2d8b44025ce80c7160f1c
parent 2294160193addfdfb64099453ead4bfb7a535221
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 15:52:13 -0700

storage: honor pocket sync policy

</content>
</entry>
<entry>
<id>2294160193addfdfb64099453ead4bfb7a535221</id>
<published>2026-06-14T22:50:16Z</published>
<updated>2026-06-14T22:50:16Z</updated>
<title>config: remove fake pocket storage knobs</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/2294160193addfdfb64099453ead4bfb7a535221.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 2294160193addfdfb64099453ead4bfb7a535221
parent 05d6103a019e529deeb64f6a5b2ff5afa4fb93c6
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 15:50:16 -0700

config: remove fake pocket storage knobs

</content>
</entry>
<entry>
<id>05d6103a019e529deeb64f6a5b2ff5afa4fb93c6</id>
<published>2026-06-14T22:47:08Z</published>
<updated>2026-06-14T22:47:08Z</updated>
<title>tests: prove pocket boundary operations</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/05d6103a019e529deeb64f6a5b2ff5afa4fb93c6.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 05d6103a019e529deeb64f6a5b2ff5afa4fb93c6
parent f0121ffe789a07fa699c30d17f872866b992f0cc
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 15:47:08 -0700

tests: prove pocket boundary operations

</content>
</entry>
<entry>
<id>f0121ffe789a07fa699c30d17f872866b992f0cc</id>
<published>2026-06-14T21:43:55Z</published>
<updated>2026-06-14T21:43:55Z</updated>
<title>repo: inline validation app surface</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/f0121ffe789a07fa699c30d17f872866b992f0cc.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit f0121ffe789a07fa699c30d17f872866b992f0cc
parent 7766cefd12ce18e5f3b9e47bb283d47d414d6fdc
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 14:43:55 -0700

repo: inline validation app surface

- Remove the scripts and ci scaffolding directories.
- Inline check, test, coverage, ci, and release-acceptance commands in flake apps.
- Update validation guards to assert the flake command surface directly.
- Keep the release acceptance and benchmark proof gates available without shell wrappers.

</content>
</entry>
<entry>
<id>7766cefd12ce18e5f3b9e47bb283d47d414d6fdc</id>
<published>2026-06-14T21:39:34Z</published>
<updated>2026-06-14T21:39:34Z</updated>
<title>config: move relay example config</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/7766cefd12ce18e5f3b9e47bb283d47d414d6fdc.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 7766cefd12ce18e5f3b9e47bb283d47d414d6fdc
parent 00f506fe318e69a0e4933513c061e3d49215ac4b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 14:39:34 -0700

config: move relay example config

- Move the checked-in relay example config out of ops/production.
- Update runtime config and logging fixtures to use config/tangle.example.json.
- Align CLI tests with the neutral example config path.
- Remove the misleading production ops directory from the repo tree.

</content>
</entry>
<entry>
<id>00f506fe318e69a0e4933513c061e3d49215ac4b</id>
<published>2026-06-14T20:40:14Z</published>
<updated>2026-06-14T20:40:14Z</updated>
<title>bench: add explicit profile claim gates</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/00f506fe318e69a0e4933513c061e3d49215ac4b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 00f506fe318e69a0e4933513c061e3d49215ac4b
parent 194529f5d21901c3e6bc9f7a34fb3f2c1da52b6b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 13:40:14 -0700

bench: add explicit profile claim gates

- Add smoke, medium, and production benchmark profiles with named threshold sources.
- Allow strict JSON threshold overrides while rejecting missing, unknown, and zero fields.
- Record profile, threshold source, and production-claim eligibility in benchmark summaries.
- Require target-hardware evidence before production-profile runs can be production-claim eligible.

</content>
</entry>
<entry>
<id>194529f5d21901c3e6bc9f7a34fb3f2c1da52b6b</id>
<published>2026-06-14T20:34:04Z</published>
<updated>2026-06-14T20:34:04Z</updated>
<title>logging: audit group moderation decisions</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/194529f5d21901c3e6bc9f7a34fb3f2c1da52b6b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 194529f5d21901c3e6bc9f7a34fb3f2c1da52b6b
parent 80f7feb411ef94c9f08cac71f0c3813576fbce20
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 13:34:04 -0700

logging: audit group moderation decisions

- Add structured group moderation audit events with stable action and result fields.
- Emit accepted and rejected audit logs from group write validation paths.
- Redact group identifiers while avoiding event content, invite codes, and relay secrets.
- Cover required action families, target counts, field presence, and sensitive-value exclusion.

</content>
</entry>
<entry>
<id>80f7feb411ef94c9f08cac71f0c3813576fbce20</id>
<published>2026-06-14T20:26:26Z</published>
<updated>2026-06-14T20:26:26Z</updated>
<title>rate-limits: add ip-scoped client buckets</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/80f7feb411ef94c9f08cac71f0c3813576fbce20.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 80f7feb411ef94c9f08cac71f0c3813576fbce20
parent 32b02ea45824890518f482f77e6b87e4d39bd984
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 13:26:26 -0700

rate-limits: add ip-scoped client buckets

- Add required auth, event, group write, and group join IP rate-limit config rules.
- Carry peer context through the general client-message handler and WebSocket session path.
- Enforce IP buckets before narrower pubkey, kind, group, and join-flow buckets.
- Cover IP partitioning, rotation resistance, required config fields, and updated fixture configs.

</content>
</entry>
<entry>
<id>32b02ea45824890518f482f77e6b87e4d39bd984</id>
<published>2026-06-14T20:15:14Z</published>
<updated>2026-06-14T20:15:14Z</updated>
<title>metrics: expose ops contract keys</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/32b02ea45824890518f482f77e6b87e4d39bd984.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 32b02ea45824890518f482f77e6b87e4d39bd984
parent c7bf59b3aac5beb37223823aa5bdae6f33b0ccad
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 13:15:14 -0700

metrics: expose ops contract keys

- serialize stable tangle-prefixed metrics from /metricsz
- record auth event query event-bus and outbox counters
- include live readiness disk usage and latency fields
- prove metric keys through runtime ops and server tests

</content>
</entry>
<entry>
<id>c7bf59b3aac5beb37223823aa5bdae6f33b0ccad</id>
<published>2026-06-14T19:57:20Z</published>
<updated>2026-06-14T19:57:20Z</updated>
<title>ops: make readiness live</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/tanglecommit/c7bf59b3aac5beb37223823aa5bdae6f33b0ccad.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit c7bf59b3aac5beb37223823aa5bdae6f33b0ccad
parent a4131641c7f27893b3825254fe58648fbf3aff53
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 12:57:20 -0700

ops: make readiness live

- introduce a shared readiness handle for ops routes
- expose event bus readiness in readyz checks
- update server startup to mark the live bind state
- cover live readiness changes and recovery readiness

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