<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>radrootsd, branch HEAD</title>
<subtitle>JSON-RPC bridge for Radroots event publishing
</subtitle>
<entry>
<id>941d2b87bea7c6f583e0643dda4e3d50b6386e69</id>
<published>2026-06-23T22:05:09Z</published>
<updated>2026-06-23T22:05:09Z</updated>
<title>publish-proxy: prove HTTP DNS rejection</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/941d2b87bea7c6f583e0643dda4e3d50b6386e69.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 941d2b87bea7c6f583e0643dda4e3d50b6386e69
parent 1ed09f90a4fdf16acb411b93c6eb3d54f8830138
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 22:05:09 +0000

publish-proxy: prove HTTP DNS rejection

- expose the test relay resolver hook to server tests
- add raw HTTP public relay-policy rejection coverage
- resolve the public relay to a forbidden localhost address
- assert rejected unattempted relay evidence and no publish

</content>
</entry>
<entry>
<id>1ed09f90a4fdf16acb411b93c6eb3d54f8830138</id>
<published>2026-06-23T22:03:42Z</published>
<updated>2026-06-23T22:03:42Z</updated>
<title>publish-proxy: close job list params</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/1ed09f90a4fdf16acb411b93c6eb3d54f8830138.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 1ed09f90a4fdf16acb411b93c6eb3d54f8830138
parent 51a5fefe711824643ae4d817ab2fc67537651278
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 22:03:42 +0000

publish-proxy: close job list params

- reject unknown publish.job.list object fields
- keep limit as the only v1 job-list parameter
- prove cursor status and extra fields return InvalidParams
- cover omitted empty-array and capped limit behavior

</content>
</entry>
<entry>
<id>51a5fefe711824643ae4d817ab2fc67537651278</id>
<published>2026-06-23T22:02:49Z</published>
<updated>2026-06-23T22:02:49Z</updated>
<title>publish-proxy: preserve author relay outcomes</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/51a5fefe711824643ae4d817ab2fc67537651278.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 51a5fefe711824643ae4d817ab2fc67537651278
parent 204046dff715289199ddee562240fabb21272c32
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 22:02:49 +0000

publish-proxy: preserve author relay outcomes

- keep cached author-write rejection evidence through fallback
- keep discovery relay rejection evidence after successful discovery
- record invalid author-write relay URLs as rejected outcomes
- add deterministic author relay preservation tests

</content>
</entry>
<entry>
<id>204046dff715289199ddee562240fabb21272c32</id>
<published>2026-06-23T21:15:07Z</published>
<updated>2026-06-23T21:15:07Z</updated>
<title>publish-proxy: harden rpc coverage</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/204046dff715289199ddee562240fabb21272c32.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 204046dff715289199ddee562240fabb21272c32
parent 3d2363b31982d0b548fe9124ec2f9b14e04fdcf3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 21:15:07 +0000

publish-proxy: harden rpc coverage

- reject malformed publish.job.list params
- reject zero job list limits before store access
- prove raw HTTP publish get and list requests
- assert raw HTTP preserves submitted signed events

</content>
</entry>
<entry>
<id>3d2363b31982d0b548fe9124ec2f9b14e04fdcf3</id>
<published>2026-06-23T21:09:34Z</published>
<updated>2026-06-23T21:09:34Z</updated>
<title>publish-proxy: recover interrupted jobs</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/3d2363b31982d0b548fe9124ec2f9b14e04fdcf3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 3d2363b31982d0b548fe9124ec2f9b14e04fdcf3
parent 5889b8d30cea8a4756f9eef882a9b8c4c82d3306
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 21:09:34 +0000

publish-proxy: recover interrupted jobs

- recover persisted publishing jobs on store open
- mark interrupted attempts retryable with explicit last_error
- preserve existing job rows without daemon background retry
- add file-backed store recovery coverage

</content>
</entry>
<entry>
<id>5889b8d30cea8a4756f9eef882a9b8c4c82d3306</id>
<published>2026-06-23T20:57:23Z</published>
<updated>2026-06-23T20:57:23Z</updated>
<title>publish-proxy: bound publish requests</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/5889b8d30cea8a4756f9eef882a9b8c4c82d3306.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 5889b8d30cea8a4756f9eef882a9b8c4c82d3306
parent 8f50bc2ff1cb2ea293edb5c37506f93046cf7b5a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 20:57:23 +0000

publish-proxy: bound publish requests

- add max_concurrent_publish_jobs config with validation
- reject zero and excessive publish timeout requests
- include normalized timeout in publish intent fingerprints
- enforce concurrency permits before creating publish jobs

</content>
</entry>
<entry>
<id>8f50bc2ff1cb2ea293edb5c37506f93046cf7b5a</id>
<published>2026-06-23T20:53:16Z</published>
<updated>2026-06-23T20:53:16Z</updated>
<title>publish-proxy: validate resolved relay destinations</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/8f50bc2ff1cb2ea293edb5c37506f93046cf7b5a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8f50bc2ff1cb2ea293edb5c37506f93046cf7b5a
parent 3e48a9b4f4dd7a915b9ce97afe5b559529b3c408
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 20:53:16 +0000

publish-proxy: validate resolved relay destinations

- resolve public relay hostnames before daemon publish or discovery use
- reject forbidden resolved addresses as unattempted relay outcomes
- record DNS lookup failures as retryable unattempted outcomes
- add deterministic resolver tests for public and localhost policies

</content>
</entry>
<entry>
<id>3e48a9b4f4dd7a915b9ce97afe5b559529b3c408</id>
<published>2026-06-23T11:05:02Z</published>
<updated>2026-06-23T11:05:02Z</updated>
<title>publish-proxy: remove legacy scan identifiers</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/3e48a9b4f4dd7a915b9ce97afe5b559529b3c408.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 3e48a9b4f4dd7a915b9ce97afe5b559529b3c408
parent 40b44da6728dd587fe9a6825468ec812fd0035c5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 11:05:02 +0000

publish-proxy: remove legacy scan identifiers

- Rename obsolete config detection internals while still rejecting config.bridge.
- Rename NIP-46 provider authority session metadata away from signer-session terminology.
- Leave external legacy rejection text intact for invalid obsolete configuration.
- Validation: cargo fmt --all --check; cargo check --all-targets; cargo test --all-targets; final surface scan.

</content>
</entry>
<entry>
<id>40b44da6728dd587fe9a6825468ec812fd0035c5</id>
<published>2026-06-23T08:55:23Z</published>
<updated>2026-06-23T08:55:23Z</updated>
<title>publish-proxy: execute daemon relay publishing</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/40b44da6728dd587fe9a6825468ec812fd0035c5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 40b44da6728dd587fe9a6825468ec812fd0035c5
parent ae44b3c0408139ae819bd9779b953f61cb9eef6f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 08:55:23 +0000

publish-proxy: execute daemon relay publishing

- verify signed publish events before relay transport
- resolve request, author, and daemon relay targets
- persist idempotent jobs and relay outcomes in SQLite
- cover scope, delivery, notification, and batch behavior

</content>
</entry>
<entry>
<id>ae44b3c0408139ae819bd9779b953f61cb9eef6f</id>
<published>2026-06-23T08:34:05Z</published>
<updated>2026-06-23T08:34:05Z</updated>
<title>publish-proxy: replace bridge daemon ingress</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/ae44b3c0408139ae819bd9779b953f61cb9eef6f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ae44b3c0408139ae819bd9779b953f61cb9eef6f
parent 1b468871eb1e63c41e88ca395d4d2c2b6cad4fd8
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 23 Jun 2026 08:34:05 +0000

publish-proxy: replace bridge daemon ingress

- add publish proxy config, runtime paths, and principal bootstrap command
- store scoped principals and publish jobs in SQLite with hashed bearer tokens
- expose authenticated publish.* JSON-RPC method shells
- remove public bridge publish modules and state storage

</content>
</entry>
<entry>
<id>1b468871eb1e63c41e88ca395d4d2c2b6cad4fd8</id>
<published>2026-06-14T09:31:58Z</published>
<updated>2026-06-14T09:31:58Z</updated>
<title>bridge: align listing publish prep</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/1b468871eb1e63c41e88ca395d4d2c2b6cad4fd8.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 1b468871eb1e63c41e88ca395d4d2c2b6cad4fd8
parent 214b068ddb1085ff89ac08f5839462b7fe708454
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 14 Jun 2026 02:31:58 -0700

bridge: align listing publish prep

- replace deleted trade publish helpers with direct listing validation
- keep bridge listing kind normalization local to radrootsd
- update bridge order test fixtures for typed rr-rs IDs
- validate with nix run .#check and nix run .#test

</content>
</entry>
<entry>
<id>214b068ddb1085ff89ac08f5839462b7fe708454</id>
<published>2026-06-13T07:45:36Z</published>
<updated>2026-06-13T07:45:36Z</updated>
<title>bridge: align typed order ids</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/214b068ddb1085ff89ac08f5839462b7fe708454.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 214b068ddb1085ff89ac08f5839462b7fe708454
parent 8912fddd6a3e1c2fd1b102c16b80e63fe2709fee
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 13 Jun 2026 00:45:36 -0700

bridge: align typed order ids

- Refresh the service lockfile for the rr-rs event contract graph
- Convert typed listing addresses at the JSON-RPC bridge response boundary
- Preserve the bridge order request wire response shape for callers
- Validate the service with format and cargo check lanes

</content>
</entry>
<entry>
<id>8912fddd6a3e1c2fd1b102c16b80e63fe2709fee</id>
<published>2026-06-13T03:11:53Z</published>
<updated>2026-06-13T03:11:53Z</updated>
<title>radrootsd: align bridge order contracts</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/8912fddd6a3e1c2fd1b102c16b80e63fe2709fee.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8912fddd6a3e1c2fd1b102c16b80e63fe2709fee
parent 132310dfe4295570d9d821d37dc716a70e785eac
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 12 Jun 2026 20:11:53 -0700

radrootsd: align bridge order contracts

</content>
</entry>
<entry>
<id>132310dfe4295570d9d821d37dc716a70e785eac</id>
<published>2026-06-04T20:16:46Z</published>
<updated>2026-06-04T20:16:46Z</updated>
<title>build: remove release builder metadata</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/132310dfe4295570d9d821d37dc716a70e785eac.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 132310dfe4295570d9d821d37dc716a70e785eac
parent 86866c30f337c9451b22ebd263985455b2d728d6
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  4 Jun 2026 13:16:46 -0700

build: remove release builder metadata

</content>
</entry>
<entry>
<id>86866c30f337c9451b22ebd263985455b2d728d6</id>
<published>2026-06-04T19:41:40Z</published>
<updated>2026-06-04T19:41:40Z</updated>
<title>docs: clarify release boundary</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/86866c30f337c9451b22ebd263985455b2d728d6.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 86866c30f337c9451b22ebd263985455b2d728d6
parent 88bfcd1af694f92320a51e4b82b63f2fb934574e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  4 Jun 2026 12:41:40 -0700

docs: clarify release boundary

- distinguish source authority from official artifacts
- preserve repo-local release-candidate validation
- keep builder and target policy outside this repo
- document standalone build and test expectations

</content>
</entry>
<entry>
<id>88bfcd1af694f92320a51e4b82b63f2fb934574e</id>
<published>2026-05-27T04:58:43Z</published>
<updated>2026-05-27T04:58:43Z</updated>
<title>build: update trade lock dependency</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/88bfcd1af694f92320a51e4b82b63f2fb934574e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 88bfcd1af694f92320a51e4b82b63f2fb934574e
parent 28715fad5165fc6eaea1ca5b3d9b05655ac30685
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 27 May 2026 04:58:43 +0000

build: update trade lock dependency

- refresh Cargo.lock for the radroots_trade dependency set
- include the resolved base64 package edge in the daemon lockfile
- preserve the standalone radrootsd workspace source tree
- validate the lockfile diff with git diff --check

</content>
</entry>
<entry>
<id>28715fad5165fc6eaea1ca5b3d9b05655ac30685</id>
<published>2026-05-08T17:17:59Z</published>
<updated>2026-05-08T17:17:59Z</updated>
<title>bridge: publish active order requests</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/28715fad5165fc6eaea1ca5b3d9b05655ac30685.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 28715fad5165fc6eaea1ca5b3d9b05655ac30685
parent ef33ca1ec24b3b17e3171dae80f911c810d60ebf
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri,  8 May 2026 17:17:59 +0000

bridge: publish active order requests

- require bridge.order.request callers to provide the listing event pointer
- canonicalize and build order-request events with active trade request contracts
- remove daemon-side listing snapshot fallback and generic request envelope publishing
- validate radrootsd fmt, check, tests, diff checks, and legacy scans

</content>
</entry>
<entry>
<id>ef33ca1ec24b3b17e3171dae80f911c810d60ebf</id>
<published>2026-04-25T09:06:34Z</published>
<updated>2026-04-25T09:06:34Z</updated>
<title>nip46: cover hydrated user pubkey views</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/ef33ca1ec24b3b17e3171dae80f911c810d60ebf.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ef33ca1ec24b3b17e3171dae80f911c810d60ebf
parent da1db945e8f5c7ea4662ffc507f3ff951521d226
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 25 Apr 2026 09:06:34 +0000

nip46: cover hydrated user pubkey views

</content>
</entry>
<entry>
<id>da1db945e8f5c7ea4662ffc507f3ff951521d226</id>
<published>2026-04-23T21:20:17Z</published>
<updated>2026-04-23T21:20:17Z</updated>
<title>build: configure cross release backend</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/da1db945e8f5c7ea4662ffc507f3ff951521d226.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit da1db945e8f5c7ea4662ffc507f3ff951521d226
parent d4b77b1af47a469326a65b708356b972edd8317a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu, 23 Apr 2026 21:20:17 +0000

build: configure cross release backend

- set package metadata release build backend to cross
- keep the manifest as the source of build backend truth for releasectl
- preserve existing workspace dependency and runtime settings
- enable deterministic docker-backed linux artifact builds in the release lane

</content>
</entry>
<entry>
<id>d4b77b1af47a469326a65b708356b972edd8317a</id>
<published>2026-04-16T01:31:26Z</published>
<updated>2026-04-16T01:31:26Z</updated>
<title>radrootsd: add farm bridge publish methods</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/d4b77b1af47a469326a65b708356b972edd8317a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d4b77b1af47a469326a65b708356b972edd8317a
parent 0041cc208d14a0fba3b443f6bdc4ff2026d69615
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu, 16 Apr 2026 01:31:26 +0000

radrootsd: add farm bridge publish methods

</content>
</entry>
<entry>
<id>0041cc208d14a0fba3b443f6bdc4ff2026d69615</id>
<published>2026-04-15T21:26:18Z</published>
<updated>2026-04-15T21:26:18Z</updated>
<title>radrootsd: align listing publish farm ref</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/0041cc208d14a0fba3b443f6bdc4ff2026d69615.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 0041cc208d14a0fba3b443f6bdc4ff2026d69615
parent 78428be7536af3029542baf2e16aa5637500a525
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed, 15 Apr 2026 21:26:18 +0000

radrootsd: align listing publish farm ref

</content>
</entry>
<entry>
<id>78428be7536af3029542baf2e16aa5637500a525</id>
<published>2026-04-13T17:47:42Z</published>
<updated>2026-04-13T17:47:42Z</updated>
<title>lock: refresh radrootsd service deps</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/78428be7536af3029542baf2e16aa5637500a525.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 78428be7536af3029542baf2e16aa5637500a525
parent e5f4a7ce27df79096fe9b7da1363dc0875a85739
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Mon, 13 Apr 2026 17:47:42 +0000

lock: refresh radrootsd service deps

</content>
</entry>
<entry>
<id>e5f4a7ce27df79096fe9b7da1363dc0875a85739</id>
<published>2026-04-12T17:40:45Z</published>
<updated>2026-04-12T17:40:45Z</updated>
<title>paths: consume shared runtime contract scaffolding</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/e5f4a7ce27df79096fe9b7da1363dc0875a85739.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e5f4a7ce27df79096fe9b7da1363dc0875a85739
parent 3c3d9442b4f10407cd241dff865ffc78c57b7b6a
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 12 Apr 2026 17:40:45 +0000

paths: consume shared runtime contract scaffolding

</content>
</entry>
<entry>
<id>3c3d9442b4f10407cd241dff865ffc78c57b7b6a</id>
<published>2026-04-12T16:53:53Z</published>
<updated>2026-04-12T16:53:53Z</updated>
<title>radrootsd: reconcile runtime repo fallout</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/3c3d9442b4f10407cd241dff865ffc78c57b7b6a.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 3c3d9442b4f10407cd241dff865ffc78c57b7b6a
parent 68a299cb9752e6e4dbb71edddf67ce7d1b9ba4d3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 12 Apr 2026 16:53:53 +0000

radrootsd: reconcile runtime repo fallout

</content>
</entry>
<entry>
<id>68a299cb9752e6e4dbb71edddf67ce7d1b9ba4d3</id>
<published>2026-04-12T04:37:39Z</published>
<updated>2026-04-12T04:37:39Z</updated>
<title>paths: consume shared runtime selection helpers</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/68a299cb9752e6e4dbb71edddf67ce7d1b9ba4d3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 68a299cb9752e6e4dbb71edddf67ce7d1b9ba4d3
parent f548cdbf400ac1759bd2100f9a8576759d7f6e62
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 12 Apr 2026 04:37:39 +0000

paths: consume shared runtime selection helpers

</content>
</entry>
<entry>
<id>f548cdbf400ac1759bd2100f9a8576759d7f6e62</id>
<published>2026-04-12T04:21:43Z</published>
<updated>2026-04-12T04:21:43Z</updated>
<title>bridge: consume shared trade workflow helpers</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/f548cdbf400ac1759bd2100f9a8576759d7f6e62.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit f548cdbf400ac1759bd2100f9a8576759d7f6e62
parent 8c98d750c8f11a9b8230a09ce51c38b66bd4a952
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 12 Apr 2026 04:21:43 +0000

bridge: consume shared trade workflow helpers

</content>
</entry>
<entry>
<id>8c98d750c8f11a9b8230a09ce51c38b66bd4a952</id>
<published>2026-04-10T21:00:59Z</published>
<updated>2026-04-10T21:00:59Z</updated>
<title>bridge: enforce signer authority continuity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/8c98d750c8f11a9b8230a09ce51c38b66bd4a952.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8c98d750c8f11a9b8230a09ce51c38b66bd4a952
parent 795c7fc148ef8d2fb41b0efa386f7ad48054b220
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 10 Apr 2026 21:00:59 +0000

bridge: enforce signer authority continuity

</content>
</entry>
<entry>
<id>795c7fc148ef8d2fb41b0efa386f7ad48054b220</id>
<published>2026-04-10T16:59:09Z</published>
<updated>2026-04-10T16:59:09Z</updated>
<title>radrootsd: update crate metadata</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/795c7fc148ef8d2fb41b0efa386f7ad48054b220.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 795c7fc148ef8d2fb41b0efa386f7ad48054b220
parent c9977d64d340f6802a4b20ebc979ba9410b2178b
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 10 Apr 2026 16:59:09 +0000

radrootsd: update crate metadata

</content>
</entry>
<entry>
<id>c9977d64d340f6802a4b20ebc979ba9410b2178b</id>
<published>2026-04-09T17:18:30Z</published>
<updated>2026-04-09T17:18:30Z</updated>
<title>runtime: detect legacy startup paths</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/c9977d64d340f6802a4b20ebc979ba9410b2178b.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit c9977d64d340f6802a4b20ebc979ba9410b2178b
parent 1265c34e656243fb3288d463f45c2e9ab7eb5563
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  9 Apr 2026 17:18:30 +0000

runtime: detect legacy startup paths

</content>
</entry>
<entry>
<id>1265c34e656243fb3288d463f45c2e9ab7eb5563</id>
<published>2026-04-09T16:55:37Z</published>
<updated>2026-04-09T16:55:37Z</updated>
<title>runtime: report path provenance</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/1265c34e656243fb3288d463f45c2e9ab7eb5563.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 1265c34e656243fb3288d463f45c2e9ab7eb5563
parent 35ea3c747c4ab9d5aa06711db7fb78f126e69dee
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  9 Apr 2026 16:55:37 +0000

runtime: report path provenance

</content>
</entry>
<entry>
<id>35ea3c747c4ab9d5aa06711db7fb78f126e69dee</id>
<published>2026-04-09T05:17:13Z</published>
<updated>2026-04-09T05:25:44Z</updated>
<title>docs: update readme</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/35ea3c747c4ab9d5aa06711db7fb78f126e69dee.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 35ea3c747c4ab9d5aa06711db7fb78f126e69dee
parent 0cd116c17277d8c1096131a26163a728322da6c3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  9 Apr 2026 05:17:13 +0000

docs: update readme

</content>
</entry>
<entry>
<id>0cd116c17277d8c1096131a26163a728322da6c3</id>
<published>2026-04-09T04:26:33Z</published>
<updated>2026-04-09T04:26:33Z</updated>
<title>config: align radrootsd repo-local sample guidance</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/0cd116c17277d8c1096131a26163a728322da6c3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 0cd116c17277d8c1096131a26163a728322da6c3
parent 8e8827a3eead103d1a9a7949c8dc3f24dce2bcb2
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  9 Apr 2026 04:26:33 +0000

config: align radrootsd repo-local sample guidance

</content>
</entry>
<entry>
<id>8e8827a3eead103d1a9a7949c8dc3f24dce2bcb2</id>
<published>2026-04-09T03:55:32Z</published>
<updated>2026-04-09T03:55:32Z</updated>
<title>radrootsd: extract runtime paths module</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/8e8827a3eead103d1a9a7949c8dc3f24dce2bcb2.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8e8827a3eead103d1a9a7949c8dc3f24dce2bcb2
parent 31c079e490cbd3b0e4f0408ab4226518d20d5398
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  9 Apr 2026 03:55:32 +0000

radrootsd: extract runtime paths module

</content>
</entry>
<entry>
<id>31c079e490cbd3b0e4f0408ab4226518d20d5398</id>
<published>2026-04-08T19:21:49Z</published>
<updated>2026-04-08T19:21:49Z</updated>
<title>surface signer session in bridge job views</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/31c079e490cbd3b0e4f0408ab4226518d20d5398.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 31c079e490cbd3b0e4f0408ab4226518d20d5398
parent a826c67923d3fd8eee9e8b7fca3e1739ec6c3223
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  8 Apr 2026 19:21:49 +0000

surface signer session in bridge job views

</content>
</entry>
<entry>
<id>a826c67923d3fd8eee9e8b7fca3e1739ec6c3223</id>
<published>2026-04-08T18:57:29Z</published>
<updated>2026-04-08T18:57:29Z</updated>
<title>bridge: require signer sessions for actor-authored writes</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/a826c67923d3fd8eee9e8b7fca3e1739ec6c3223.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit a826c67923d3fd8eee9e8b7fca3e1739ec6c3223
parent ba89a74a3c5756d7bdd0a772e949641f4f1bcc87
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  8 Apr 2026 18:57:29 +0000

bridge: require signer sessions for actor-authored writes

</content>
</entry>
<entry>
<id>ba89a74a3c5756d7bdd0a772e949641f4f1bcc87</id>
<published>2026-04-08T18:18:47Z</published>
<updated>2026-04-08T18:18:47Z</updated>
<title>docs: freeze actor-authored bridge signing contract</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/ba89a74a3c5756d7bdd0a772e949641f4f1bcc87.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ba89a74a3c5756d7bdd0a772e949641f4f1bcc87
parent 902a330a0d2e84226e5ee721013f6ca32e58c04f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  8 Apr 2026 18:18:47 +0000

docs: freeze actor-authored bridge signing contract

</content>
</entry>
<entry>
<id>902a330a0d2e84226e5ee721013f6ca32e58c04f</id>
<published>2026-04-08T17:08:46Z</published>
<updated>2026-04-08T17:08:46Z</updated>
<title>config: align runtime contract surfaces</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/902a330a0d2e84226e5ee721013f6ca32e58c04f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 902a330a0d2e84226e5ee721013f6ca32e58c04f
parent 0c2674a0be83d35b7e171e79873db4e37359dc03
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  8 Apr 2026 17:08:46 +0000

config: align runtime contract surfaces

</content>
</entry>
<entry>
<id>0c2674a0be83d35b7e171e79873db4e37359dc03</id>
<published>2026-04-08T01:22:48Z</published>
<updated>2026-04-08T01:22:48Z</updated>
<title>config: cover repo local path defaults</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/0c2674a0be83d35b7e171e79873db4e37359dc03.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 0c2674a0be83d35b7e171e79873db4e37359dc03
parent 41c964d7c34ac01c19f10792791ac623d61fdff7
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  8 Apr 2026 01:22:48 +0000

config: cover repo local path defaults

- add a repo-local path contract test for the canonical radrootsd runtime roots
- assert config logs identity and bridge state paths under the explicit repo-local base
- keep the daemon profile matrix aligned with the interactive_user and service_host coverage
- give the outer runtime-path verification lane a direct radrootsd repo_local proof point

</content>
</entry>
<entry>
<id>41c964d7c34ac01c19f10792791ac623d61fdff7</id>
<published>2026-04-08T00:15:03Z</published>
<updated>2026-04-08T00:15:03Z</updated>
<title>paths: adopt runtime profiles in radrootsd</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/41c964d7c34ac01c19f10792791ac623d61fdff7.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 41c964d7c34ac01c19f10792791ac623d61fdff7
parent 69790f6f6af6dcfbb8a567f7559d9b7e28f16a46
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  8 Apr 2026 00:15:03 +0000

paths: adopt runtime profiles in radrootsd

</content>
</entry>
<entry>
<id>69790f6f6af6dcfbb8a567f7559d9b7e28f16a46</id>
<published>2026-04-07T22:00:44Z</published>
<updated>2026-04-07T22:00:44Z</updated>
<title>app: store service identity as encrypted envelope</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/69790f6f6af6dcfbb8a567f7559d9b7e28f16a46.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 69790f6f6af6dcfbb8a567f7559d9b7e28f16a46
parent 5dec0c01c8184e04b96ff3eec544d90a1df1880d
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue,  7 Apr 2026 22:00:44 +0000

app: store service identity as encrypted envelope

</content>
</entry>
<entry>
<id>5dec0c01c8184e04b96ff3eec544d90a1df1880d</id>
<published>2026-04-07T06:29:36Z</published>
<updated>2026-04-07T06:29:36Z</updated>
<title>add bridge job list rpc for cli inspection</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/5dec0c01c8184e04b96ff3eec544d90a1df1880d.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 5dec0c01c8184e04b96ff3eec544d90a1df1880d
parent 007cc6f4fe32e4571b8ddd8f7f953a7b99af5286
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue,  7 Apr 2026 06:29:36 +0000

add bridge job list rpc for cli inspection

</content>
</entry>
<entry>
<id>007cc6f4fe32e4571b8ddd8f7f953a7b99af5286</id>
<published>2026-04-02T21:39:30Z</published>
<updated>2026-04-02T21:39:30Z</updated>
<title>bridge: complete agricultural trade write plane</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/007cc6f4fe32e4571b8ddd8f7f953a7b99af5286.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 007cc6f4fe32e4571b8ddd8f7f953a7b99af5286
parent ea5f814de4cc3af9ea1e0456b2b38828dc0840cb
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  2 Apr 2026 21:39:30 +0000

bridge: complete agricultural trade write plane

- add canonical bridge methods for public agricultural trade lifecycle events
- enforce listing snapshot and trade chain invariants before bridge signing
- allow draft listing publish and fingerprint listing kind in bridge requests
- cover the expanded bridge surface with local radrootsd nix validation

</content>
</entry>
<entry>
<id>ea5f814de4cc3af9ea1e0456b2b38828dc0840cb</id>
<published>2026-04-02T20:30:00Z</published>
<updated>2026-04-02T20:30:00Z</updated>
<title>bridge: require listing snapshots for order requests</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/ea5f814de4cc3af9ea1e0456b2b38828dc0840cb.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ea5f814de4cc3af9ea1e0456b2b38828dc0840cb
parent 87a90cf6d71cbb27dfe2d64e4c2f093c2510b776
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Thu,  2 Apr 2026 20:30:00 +0000

bridge: require listing snapshots for order requests

</content>
</entry>
<entry>
<id>87a90cf6d71cbb27dfe2d64e4c2f093c2510b776</id>
<published>2026-03-31T17:14:27Z</published>
<updated>2026-03-31T17:14:27Z</updated>
<title>build: remove local coverage contract surface</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/87a90cf6d71cbb27dfe2d64e4c2f093c2510b776.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 87a90cf6d71cbb27dfe2d64e4c2f093c2510b776
parent da316347842757d2f7868597042175842e737772
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 31 Mar 2026 17:14:27 +0000

build: remove local coverage contract surface

</content>
</entry>
<entry>
<id>da316347842757d2f7868597042175842e737772</id>
<published>2026-03-31T15:37:59Z</published>
<updated>2026-03-31T15:37:59Z</updated>
<title>build: add standalone nix command surface</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/da316347842757d2f7868597042175842e737772.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit da316347842757d2f7868597042175842e737772
parent 41738647a5e46671eb9c0d9dd22b8a7b7fc9c077
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue, 31 Mar 2026 15:37:59 +0000

build: add standalone nix command surface

</content>
</entry>
<entry>
<id>41738647a5e46671eb9c0d9dd22b8a7b7fc9c077</id>
<published>2026-03-29T17:44:12Z</published>
<updated>2026-03-29T17:44:12Z</updated>
<title>bridge: use canonical trade order imports</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/41738647a5e46671eb9c0d9dd22b8a7b7fc9c077.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 41738647a5e46671eb9c0d9dd22b8a7b7fc9c077
parent 33764d271dbb54801efa635eb6b0ee0bacee5989
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 29 Mar 2026 17:44:12 +0000

bridge: use canonical trade order imports

</content>
</entry>
<entry>
<id>33764d271dbb54801efa635eb6b0ee0bacee5989</id>
<published>2026-03-29T02:15:40Z</published>
<updated>2026-03-29T02:15:40Z</updated>
<title>bridge: stabilize nip46 idempotency identity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/33764d271dbb54801efa635eb6b0ee0bacee5989.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 33764d271dbb54801efa635eb6b0ee0bacee5989
parent e2b57f62f094701d6d7d4bd006b4b138ba8ef883
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 29 Mar 2026 02:15:40 +0000

bridge: stabilize nip46 idempotency identity

</content>
</entry>
<entry>
<id>e2b57f62f094701d6d7d4bd006b4b138ba8ef883</id>
<published>2026-03-28T22:55:25Z</published>
<updated>2026-03-28T22:55:25Z</updated>
<title>bridge: report selectable signer capabilities</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/e2b57f62f094701d6d7d4bd006b4b138ba8ef883.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e2b57f62f094701d6d7d4bd006b4b138ba8ef883
parent 54b0573ea77c03dbfde9ceb21da8f9e540a18272
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 28 Mar 2026 22:55:25 +0000

bridge: report selectable signer capabilities

</content>
</entry>
<entry>
<id>54b0573ea77c03dbfde9ceb21da8f9e540a18272</id>
<published>2026-03-28T22:41:39Z</published>
<updated>2026-03-28T22:41:39Z</updated>
<title>bridge: reject invalid listing contracts before signing</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/54b0573ea77c03dbfde9ceb21da8f9e540a18272.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 54b0573ea77c03dbfde9ceb21da8f9e540a18272
parent 17c7792a905f4b2cc6af94d55823d843e4417f94
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 28 Mar 2026 22:41:39 +0000

bridge: reject invalid listing contracts before signing

</content>
</entry>
<entry>
<id>17c7792a905f4b2cc6af94d55823d843e4417f94</id>
<published>2026-03-28T22:18:20Z</published>
<updated>2026-03-28T22:18:20Z</updated>
<title>bridge: expose durable job lifecycle</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/17c7792a905f4b2cc6af94d55823d843e4417f94.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 17c7792a905f4b2cc6af94d55823d843e4417f94
parent ad5f2171ddefeaa169c252a668edeaa07bcfc556
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 28 Mar 2026 22:18:20 +0000

bridge: expose durable job lifecycle

</content>
</entry>
<entry>
<id>ad5f2171ddefeaa169c252a668edeaa07bcfc556</id>
<published>2026-03-28T22:13:08Z</published>
<updated>2026-03-28T22:13:08Z</updated>
<title>bridge: recover accepted jobs on restart</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/ad5f2171ddefeaa169c252a668edeaa07bcfc556.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit ad5f2171ddefeaa169c252a668edeaa07bcfc556
parent aef910bf5391ed04fe9f660f54d68ad33f3ec3b0
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 28 Mar 2026 22:13:08 +0000

bridge: recover accepted jobs on restart

</content>
</entry>
<entry>
<id>aef910bf5391ed04fe9f660f54d68ad33f3ec3b0</id>
<published>2026-03-28T22:09:06Z</published>
<updated>2026-03-28T22:09:06Z</updated>
<title>bridge: reserve idempotency before signing</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/aef910bf5391ed04fe9f660f54d68ad33f3ec3b0.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit aef910bf5391ed04fe9f660f54d68ad33f3ec3b0
parent d0dca92049a7c37fa2197fda209a412649783877
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 28 Mar 2026 22:09:06 +0000

bridge: reserve idempotency before signing

</content>
</entry>
<entry>
<id>d0dca92049a7c37fa2197fda209a412649783877</id>
<published>2026-03-28T04:13:19Z</published>
<updated>2026-03-28T04:13:19Z</updated>
<title>bridge: add durable jobs and delegated signer selection</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/d0dca92049a7c37fa2197fda209a412649783877.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit d0dca92049a7c37fa2197fda209a412649783877
parent 4543e7e8b500dc249624aa104dcc8b9ab20413f5
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sat, 28 Mar 2026 04:13:19 +0000

bridge: add durable jobs and delegated signer selection

- persist bridge job and idempotency state at the configured bridge state path
- allow bridge listing and order publish methods to sign through requested outbound NIP-46 sessions
- keep embedded service identity as the default signer while documenting state_path and signer_session_id
- validate with cargo metadata, cargo fmt, git diff --check, cargo check, and CARGO_INCREMENTAL=0 cargo test

</content>
</entry>
<entry>
<id>4543e7e8b500dc249624aa104dcc8b9ab20413f5</id>
<published>2026-03-27T23:03:11Z</published>
<updated>2026-03-27T23:03:11Z</updated>
<title>api: add typed bridge order request ingress</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/4543e7e8b500dc249624aa104dcc8b9ab20413f5.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 4543e7e8b500dc249624aa104dcc8b9ab20413f5
parent e923d4cc5ba7857848c91563cf73fd327aa529f7
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 27 Mar 2026 23:03:11 +0000

api: add typed bridge order request ingress

- add bridge.order.request on the rr-rs trade order envelope and NIP-99 listing address contract
- validate and canonicalize embedded-signer order requests before signing and publishing them
- share bridge publish helpers and generic job construction across listing and order write commands
- update bridge tests and radrootsd docs for order-scoped job-backed ingress

</content>
</entry>
<entry>
<id>e923d4cc5ba7857848c91563cf73fd327aa529f7</id>
<published>2026-03-27T22:50:11Z</published>
<updated>2026-03-27T22:50:11Z</updated>
<title>api: gate public nip46 and require bridge auth</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/e923d4cc5ba7857848c91563cf73fd327aa529f7.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e923d4cc5ba7857848c91563cf73fd327aa529f7
parent 6b66c168cb617b4184fa81ad1aeb8432be7c9659
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 27 Mar 2026 22:50:11 +0000

api: gate public nip46 and require bridge auth

- add bridge bearer-token config validation and default public nip46 gating
- attach transport-level auth state in json-rpc middleware and enforce it in bridge methods
- keep bridge as the default public rpc surface while leaving relay-side nip46 flows intact
- update docs and tests for authenticated bridge ingress behavior

</content>
</entry>
<entry>
<id>6b66c168cb617b4184fa81ad1aeb8432be7c9659</id>
<published>2026-03-27T20:48:23Z</published>
<updated>2026-03-27T20:48:23Z</updated>
<title>bridge: route listing publish through rr-rs signer backend</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/6b66c168cb617b4184fa81ad1aeb8432be7c9659.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 6b66c168cb617b4184fa81ad1aeb8432be7c9659
parent 8331eb5bbfbd21e4de06f2673235fd1559ac7f07
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 27 Mar 2026 20:48:23 +0000

bridge: route listing publish through rr-rs signer backend

</content>
</entry>
<entry>
<id>8331eb5bbfbd21e4de06f2673235fd1559ac7f07</id>
<published>2026-03-27T19:45:35Z</published>
<updated>2026-03-27T19:45:35Z</updated>
<title>bridge: add listing publish workflow and job status</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/8331eb5bbfbd21e4de06f2673235fd1559ac7f07.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8331eb5bbfbd21e4de06f2673235fd1559ac7f07
parent 3a8a2ef73f2b99bbe9695d473f408194927206c2
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 27 Mar 2026 19:45:35 +0000

bridge: add listing publish workflow and job status

</content>
</entry>
<entry>
<id>3a8a2ef73f2b99bbe9695d473f408194927206c2</id>
<published>2026-03-27T19:15:49Z</published>
<updated>2026-03-27T19:15:49Z</updated>
<title>api: stop exposing ad hoc nip46 session internals</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/3a8a2ef73f2b99bbe9695d473f408194927206c2.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 3a8a2ef73f2b99bbe9695d473f408194927206c2
parent dc19ff32ce0798a59024fa98eab911989ce9efe9
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 27 Mar 2026 19:15:49 +0000

api: stop exposing ad hoc nip46 session internals

</content>
</entry>
<entry>
<id>dc19ff32ce0798a59024fa98eab911989ce9efe9</id>
<published>2026-03-27T19:08:07Z</published>
<updated>2026-03-27T19:08:07Z</updated>
<title>transport: subscribe before publishing nip46 requests</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/dc19ff32ce0798a59024fa98eab911989ce9efe9.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit dc19ff32ce0798a59024fa98eab911989ce9efe9
parent 985a49fe22184ef198c84579d05af1ff726c3eec
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 27 Mar 2026 19:08:07 +0000

transport: subscribe before publishing nip46 requests

</content>
</entry>
<entry>
<id>985a49fe22184ef198c84579d05af1ff726c3eec</id>
<published>2026-03-20T14:38:54Z</published>
<updated>2026-03-20T14:38:54Z</updated>
<title>build: upgrade serde_qs and thiserror</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/985a49fe22184ef198c84579d05af1ff726c3eec.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 985a49fe22184ef198c84579d05af1ff726c3eec
parent e843e1bb6c9b0fea02e7cb255d3b99e97bc5fd29
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 20 Mar 2026 14:38:54 +0000

build: upgrade serde_qs and thiserror

</content>
</entry>
<entry>
<id>e843e1bb6c9b0fea02e7cb255d3b99e97bc5fd29</id>
<published>2026-03-20T13:27:32Z</published>
<updated>2026-03-20T13:27:32Z</updated>
<title>build: refresh dependency baseline</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/e843e1bb6c9b0fea02e7cb255d3b99e97bc5fd29.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e843e1bb6c9b0fea02e7cb255d3b99e97bc5fd29
parent 1d1ec805770c9e3d0eb3bc48c77b9c878b8adea9
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 20 Mar 2026 13:27:32 +0000

build: refresh dependency baseline

</content>
</entry>
<entry>
<id>1d1ec805770c9e3d0eb3bc48c77b9c878b8adea9</id>
<published>2026-03-20T03:26:10Z</published>
<updated>2026-03-20T03:26:10Z</updated>
<title>docs: clarify standalone repo rules</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/1d1ec805770c9e3d0eb3bc48c77b9c878b8adea9.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 1d1ec805770c9e3d0eb3bc48c77b9c878b8adea9
parent 487d979b7783c36ed72edd65d7169dbee69127f3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 20 Mar 2026 03:26:10 +0000

docs: clarify standalone repo rules

</content>
</entry>
<entry>
<id>487d979b7783c36ed72edd65d7169dbee69127f3</id>
<published>2026-03-20T03:13:13Z</published>
<updated>2026-03-20T03:13:13Z</updated>
<title>build: align rust-version with dependency floor</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/487d979b7783c36ed72edd65d7169dbee69127f3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 487d979b7783c36ed72edd65d7169dbee69127f3
parent 782a1b8219d88c713b463b97502e53c05801208e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 20 Mar 2026 03:13:13 +0000

build: align rust-version with dependency floor

</content>
</entry>
<entry>
<id>782a1b8219d88c713b463b97502e53c05801208e</id>
<published>2026-03-20T03:01:08Z</published>
<updated>2026-03-20T03:01:08Z</updated>
<title>build: use local radroots crate sources</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/782a1b8219d88c713b463b97502e53c05801208e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 782a1b8219d88c713b463b97502e53c05801208e
parent 8ef5867b63305ed041ae732ef04fcf226b5ebfd3
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 20 Mar 2026 03:01:08 +0000

build: use local radroots crate sources

</content>
</entry>
<entry>
<id>8ef5867b63305ed041ae732ef04fcf226b5ebfd3</id>
<published>2026-03-04T11:46:16Z</published>
<updated>2026-03-04T11:46:16Z</updated>
<title>tests: close remaining 100 100 100 100 coverage gaps</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/8ef5867b63305ed041ae732ef04fcf226b5ebfd3.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 8ef5867b63305ed041ae732ef04fcf226b5ebfd3
parent 7a5f43748838a8663b65aaed0fa6a53bcfb6bf1f
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  4 Mar 2026 11:46:16 +0000

tests: close remaining 100 100 100 100 coverage gaps

</content>
</entry>
<entry>
<id>7a5f43748838a8663b65aaed0fa6a53bcfb6bf1f</id>
<published>2026-03-04T11:02:55Z</published>
<updated>2026-03-04T11:02:55Z</updated>
<title>ci: add coverage contracts and workflow</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/7a5f43748838a8663b65aaed0fa6a53bcfb6bf1f.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 7a5f43748838a8663b65aaed0fa6a53bcfb6bf1f
parent 2e4cc1d6227b395b4761bd9127a38425ae7323ee
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  4 Mar 2026 11:02:55 +0000

ci: add coverage contracts and workflow

</content>
</entry>
<entry>
<id>2e4cc1d6227b395b4761bd9127a38425ae7323ee</id>
<published>2026-03-04T10:53:15Z</published>
<updated>2026-03-04T10:53:15Z</updated>
<title>ci: remove tracked local identity</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/2e4cc1d6227b395b4761bd9127a38425ae7323ee.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 2e4cc1d6227b395b4761bd9127a38425ae7323ee
parent 6481b2e8a534524d05faf3cf91b7ee37eea5f82c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Wed,  4 Mar 2026 10:53:15 +0000

ci: remove tracked local identity

</content>
</entry>
<entry>
<id>6481b2e8a534524d05faf3cf91b7ee37eea5f82c</id>
<published>2026-03-03T22:58:20Z</published>
<updated>2026-03-03T22:58:20Z</updated>
<title>build: update `Cargo.lock`</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/6481b2e8a534524d05faf3cf91b7ee37eea5f82c.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 6481b2e8a534524d05faf3cf91b7ee37eea5f82c
parent 4a6842018523c24301f5f38b42cae3a0f2fec997
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Tue,  3 Mar 2026 22:58:20 +0000

build: update `Cargo.lock`

</content>
</entry>
<entry>
<id>4a6842018523c24301f5f38b42cae3a0f2fec997</id>
<published>2026-02-20T15:32:23Z</published>
<updated>2026-02-20T15:32:23Z</updated>
<title>deps: repoint radroots workspace deps to oss/rs/radroots</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/4a6842018523c24301f5f38b42cae3a0f2fec997.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 4a6842018523c24301f5f38b42cae3a0f2fec997
parent 9429e2ef60226f17b21c9f5520fcb4ccc9860584
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Fri, 20 Feb 2026 15:32:23 +0000

deps: repoint radroots workspace deps to oss/rs/radroots

</content>
</entry>
<entry>
<id>9429e2ef60226f17b21c9f5520fcb4ccc9860584</id>
<published>2026-02-15T19:59:21Z</published>
<updated>2026-02-15T19:59:21Z</updated>
<title>deps: repoint radroots workspace deps</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/9429e2ef60226f17b21c9f5520fcb4ccc9860584.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 9429e2ef60226f17b21c9f5520fcb4ccc9860584
parent 69c92aa4d44638a35cc6e623756394d542f73b5e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 15 Feb 2026 19:59:21 +0000

deps: repoint radroots workspace deps

- update workspace dependency sources for radroots-core radroots-events and related crates
- keep workspace = true usage unchanged in service dependencies
- preserve existing crate features and runtime behavior
- verify with cargo check in radrootsd

</content>
</entry>
<entry>
<id>69c92aa4d44638a35cc6e623756394d542f73b5e</id>
<published>2026-02-15T18:13:41Z</published>
<updated>2026-02-15T18:13:41Z</updated>
<title>app: use shared runtime and presence bootstrap primitives</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/69c92aa4d44638a35cc6e623756394d542f73b5e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 69c92aa4d44638a35cc6e623756394d542f73b5e
parent 5b006af60a2b97c35436c3815968d2d8c114c027
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 15 Feb 2026 18:13:41 +0000

app: use shared runtime and presence bootstrap primitives

- replace local cli flags with shared runtime service cli args
- flatten shared nostr service config into radrootsd configuration
- switch startup presence publishing to shared nostr bootstrap helper
- route nip89 identifier and extra tags through shared service config fields

</content>
</entry>
<entry>
<id>5b006af60a2b97c35436c3815968d2d8c114c027</id>
<published>2026-02-15T17:24:20Z</published>
<updated>2026-02-15T17:24:20Z</updated>
<title>deps: move radroots deps to workspace inheritance</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/5b006af60a2b97c35436c3815968d2d8c114c027.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 5b006af60a2b97c35436c3815968d2d8c114c027
parent 7827d37441de4b1cf2e2eca54de0d6fc7bbac70e
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 15 Feb 2026 17:24:20 +0000

deps: move radroots deps to workspace inheritance

- add local workspace section for shared radroots dependency sources
- replace direct radroots path dependencies with workspace true entries
- keep existing feature flags on inherited radroots dependencies
- preserve current runtime behavior while normalizing manifest structure

</content>
</entry>
<entry>
<id>7827d37441de4b1cf2e2eca54de0d6fc7bbac70e</id>
<published>2026-02-15T17:14:44Z</published>
<updated>2026-02-15T17:14:44Z</updated>
<title>deps: sync vendor radroots dependency paths\n\n- switch radroots crate sources to vendor workspace paths\n- replace rust-nostr ref path usage with crates.io nostr\n- update toolchain pin to rust 1.92.0\n- refresh lockfile for resolved dependency graph</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/7827d37441de4b1cf2e2eca54de0d6fc7bbac70e.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit 7827d37441de4b1cf2e2eca54de0d6fc7bbac70e
parent e67b04e86f5d7f7b8c40f5bac325fb091b8261db
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 15 Feb 2026 17:14:44 +0000

deps: sync vendor radroots dependency paths\n\n- switch radroots crate sources to vendor workspace paths\n- replace rust-nostr ref path usage with crates.io nostr\n- update toolchain pin to rust 1.92.0\n- refresh lockfile for resolved dependency graph

</content>
</entry>
<entry>
<id>e67b04e86f5d7f7b8c40f5bac325fb091b8261db</id>
<published>2026-02-15T16:03:02Z</published>
<updated>2026-02-15T16:03:02Z</updated>
<title>nip89: add configurable identifier and extra tags to nip46</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/e67b04e86f5d7f7b8c40f5bac325fb091b8261db.html" />
<author>
<name>triesap</name>
<email>tyson@radroots.org</email>
</author>
<content>commit e67b04e86f5d7f7b8c40f5bac325fb091b8261db
parent c04d907f26aca84c1d0403b820780676bec7739c
Author: triesap &lt;tyson@radroots.org&gt;
Date:   Sun, 15 Feb 2026 16:03:02 +0000

nip89: add configurable identifier and extra tags to nip46

</content>
</entry>
<entry>
<id>c04d907f26aca84c1d0403b820780676bec7739c</id>
<published>2026-01-07T17:38:01Z</published>
<updated>2026-01-07T17:38:01Z</updated>
<title>nip89: pass relay metadata into radrootsd announcement</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/c04d907f26aca84c1d0403b820780676bec7739c.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit c04d907f26aca84c1d0403b820780676bec7739c
parent d06a2c4434a46f301bf94e22ca7687b689a3ce14
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 17:38:01 +0000

nip89: pass relay metadata into radrootsd announcement

- add nostrconnect_url to nip46 config
- forward relay list into handler spec
- publish handler announcement via shared helper
- keep startup publish flow intact

</content>
</entry>
<entry>
<id>d06a2c4434a46f301bf94e22ca7687b689a3ce14</id>
<published>2026-01-07T17:16:22Z</published>
<updated>2026-01-07T17:16:22Z</updated>
<title>nostr: add nip89 application handler helper</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/d06a2c4434a46f301bf94e22ca7687b689a3ce14.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit d06a2c4434a46f301bf94e22ca7687b689a3ce14
parent 17f10ab220aceea8921e3d7d6c9e94aec55e9d96
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 17:16:22 +0000

nostr: add nip89 application handler helper

- add application handler spec and builder
- publish handler events via client helper
- include metadata content when present
- re-export helpers through nostr prelude

</content>
</entry>
<entry>
<id>17f10ab220aceea8921e3d7d6c9e94aec55e9d96</id>
<published>2026-01-07T17:03:48Z</published>
<updated>2026-01-07T17:03:48Z</updated>
<title>nip89: publish handler announcement on startup</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/17f10ab220aceea8921e3d7d6c9e94aec55e9d96.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 17f10ab220aceea8921e3d7d6c9e94aec55e9d96
parent 5b62b872c753dca50b7112217256c871898dd726
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 17:03:48 +0000

nip89: publish handler announcement on startup

- build kind 31990 event with k/d tags for NIP-46
- include metadata JSON content when available
- publish via relay client during startup connect
- warn on build/publish failures without aborting

</content>
</entry>
<entry>
<id>5b62b872c753dca50b7112217256c871898dd726</id>
<published>2026-01-07T16:25:56Z</published>
<updated>2026-01-07T16:25:56Z</updated>
<title>nip46: add auth challenge and session authorize flow</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/5b62b872c753dca50b7112217256c871898dd726.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 5b62b872c753dca50b7112217256c871898dd726
parent dc1453dfeed86140c283b7d7b282ebda0651d8da
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 16:25:56 +0000

nip46: add auth challenge and session authorize flow

- track auth-required state and pending requests per session
- return auth_url responses for gated nostr requests
- add jsonrpc methods to require auth and authorize sessions
- replay pending nostr requests after authorization

</content>
</entry>
<entry>
<id>dc1453dfeed86140c283b7d7b282ebda0651d8da</id>
<published>2026-01-07T16:11:22Z</published>
<updated>2026-01-07T16:11:22Z</updated>
<title>nip46: enforce sign_event kind permissions</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/dc1453dfeed86140c283b7d7b282ebda0651d8da.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit dc1453dfeed86140c283b7d7b282ebda0651d8da
parent 4d65e37568b074d8de5ae3af14e3449c68198baa
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 16:11:22 +0000

nip46: enforce sign_event kind permissions

- allow sign_event:&lt;kind&gt; permissions through filtering
- add kind-scoped sign_event checks for jsonrpc and nostr listener
- add core unit coverage for permission parsing and kind gating
- constrain dev config to sign_event:1 for scoped tests

</content>
</entry>
<entry>
<id>4d65e37568b074d8de5ae3af14e3449c68198baa</id>
<published>2026-01-07T15:44:25Z</published>
<updated>2026-01-07T15:44:25Z</updated>
<title>nip46: add session list endpoint</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/4d65e37568b074d8de5ae3af14e3449c68198baa.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 4d65e37568b074d8de5ae3af14e3449c68198baa
parent b9f53411f42a6e1eb50f29d376bd9298c9ef97c0
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 15:44:25 +0000

nip46: add session list endpoint

- add session store list helper that filters expired entries
- expose nip46.session.list JSON-RPC method
- return session metadata with remaining TTL
- add session store test for list filtering

</content>
</entry>
<entry>
<id>b9f53411f42a6e1eb50f29d376bd9298c9ef97c0</id>
<published>2026-01-07T15:27:28Z</published>
<updated>2026-01-07T15:27:28Z</updated>
<title>nip46: fix session type imports</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/b9f53411f42a6e1eb50f29d376bd9298c9ef97c0.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit b9f53411f42a6e1eb50f29d376bd9298c9ef97c0
parent d7958d479b1d338b43dc488dcb21361361cdfd31
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Wed,  7 Jan 2026 15:27:28 +0000

nip46: fix session type imports

- import Nip46Session in get_public_key handler
- import Nip46Session in ping handler
- keep helper signatures explicit
- resolve jsonrpc nip46 compile errors

</content>
</entry>
<entry>
<id>d7958d479b1d338b43dc488dcb21361361cdfd31</id>
<published>2026-01-06T19:13:09Z</published>
<updated>2026-01-06T19:13:09Z</updated>
<title>nip46: expose session ttl in status</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/d7958d479b1d338b43dc488dcb21361361cdfd31.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit d7958d479b1d338b43dc488dcb21361361cdfd31
parent 5bcdaa7a35226d556885b9f618ce0b5a72fab284
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 19:13:09 +0000

nip46: expose session ttl in status

- add session_ttl_secs to nip46.status response
- read ttl from nip46 runtime config
- keep status response minimal and stable
- support client-side expiry checks

</content>
</entry>
<entry>
<id>5bcdaa7a35226d556885b9f618ce0b5a72fab284</id>
<published>2026-01-06T18:25:52Z</published>
<updated>2026-01-06T18:25:52Z</updated>
<title>nip46: add jsonrpc nip44 helpers</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/5bcdaa7a35226d556885b9f618ce0b5a72fab284.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 5bcdaa7a35226d556885b9f618ce0b5a72fab284
parent 283c5f93e50a9f97e7b9997291e52e99417aa802
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 18:25:52 +0000

nip46: add jsonrpc nip44 helpers

- add nip46.nip44_encrypt rpc method
- add nip46.nip44_decrypt rpc method
- validate session perms and peer pubkeys
- register nip44 endpoints in nip46 module

</content>
</entry>
<entry>
<id>283c5f93e50a9f97e7b9997291e52e99417aa802</id>
<published>2026-01-06T18:13:58Z</published>
<updated>2026-01-06T18:13:58Z</updated>
<title>nip46: add jsonrpc nip04 helpers</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/283c5f93e50a9f97e7b9997291e52e99417aa802.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 283c5f93e50a9f97e7b9997291e52e99417aa802
parent 7c4d6c4a518b242e299b27fd5e8550dae25a4cd3
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 18:13:58 +0000

nip46: add jsonrpc nip04 helpers

- add nip46.nip04_encrypt rpc method
- add nip46.nip04_decrypt rpc method
- validate session perms and peer pubkeys
- register nip04 endpoints in nip46 module

</content>
</entry>
<entry>
<id>7c4d6c4a518b242e299b27fd5e8550dae25a4cd3</id>
<published>2026-01-06T18:09:05Z</published>
<updated>2026-01-06T18:09:05Z</updated>
<title>nip46: add jsonrpc sign_event</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/7c4d6c4a518b242e299b27fd5e8550dae25a4cd3.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 7c4d6c4a518b242e299b27fd5e8550dae25a4cd3
parent ec5d8d1d80f1d1137930d1435f98f4c6c342e121
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 18:09:05 +0000

nip46: add jsonrpc sign_event

- add nip46.sign_event rpc method
- sign events via nip46 client request flow
- validate session perms and signer pubkey
- register sign_event endpoint

</content>
</entry>
<entry>
<id>ec5d8d1d80f1d1137930d1435f98f4c6c342e121</id>
<published>2026-01-06T17:54:15Z</published>
<updated>2026-01-06T17:54:15Z</updated>
<title>nip46: enforce session expiry and allowlisted permissions</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/ec5d8d1d80f1d1137930d1435f98f4c6c342e121.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit ec5d8d1d80f1d1137930d1435f98f4c6c342e121
parent 6069b5b131ea952154942ac5c075b3c9ab3a5f5a
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 17:54:15 +0000

nip46: enforce session expiry and allowlisted permissions

- add configurable TTL to NIP-46 session settings
- prune expired sessions in the session store
- gate session perms via explicit allowlist
- wire nip46 config into runtime state and connect flows

</content>
</entry>
<entry>
<id>6069b5b131ea952154942ac5c075b3c9ab3a5f5a</id>
<published>2026-01-06T17:32:49Z</published>
<updated>2026-01-06T17:32:49Z</updated>
<title>nip46: add relay-only session gating</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/6069b5b131ea952154942ac5c075b3c9ab3a5f5a.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 6069b5b131ea952154942ac5c075b3c9ab3a5f5a
parent 54ed7b466733d47a51833dd8b470848d306223d7
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 17:32:49 +0000

nip46: add relay-only session gating

- store relay sessions keyed by client pubkey on connect
- enforce allowlist for sign_event and nip04/nip44 requests
- return unauthorized when no session exists
- add tmp test for denied sign_event before connect

</content>
</entry>
<entry>
<id>54ed7b466733d47a51833dd8b470848d306223d7</id>
<published>2026-01-06T17:26:34Z</published>
<updated>2026-01-06T17:26:34Z</updated>
<title>nip46: add relay-only nip44 encrypt/decrypt</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/54ed7b466733d47a51833dd8b470848d306223d7.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 54ed7b466733d47a51833dd8b470848d306223d7
parent a78e416c96e351b93b7f88e291ad3c2c38a43f70
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 17:26:34 +0000

nip46: add relay-only nip44 encrypt/decrypt

- handle nip44 encrypt/decrypt in nostr listener
- add nip44 encrypt/decrypt flow to tmp nostr-only test
- validate plaintext round-trip and errors
- keep existing nip04/sign_event flows intact

</content>
</entry>
<entry>
<id>a78e416c96e351b93b7f88e291ad3c2c38a43f70</id>
<published>2026-01-06T17:19:51Z</published>
<updated>2026-01-06T17:19:51Z</updated>
<title>nip46: add relay-only nip04 encrypt/decrypt</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/a78e416c96e351b93b7f88e291ad3c2c38a43f70.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit a78e416c96e351b93b7f88e291ad3c2c38a43f70
parent 219c6b2c95b9cbf72d90bd5a760a0df1095d9e9f
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 17:19:51 +0000

nip46: add relay-only nip04 encrypt/decrypt

- handle nip04 encrypt/decrypt in relay listener
- add nip04 encrypt/decrypt flow to tmp nostr-only test
- validate plaintext and error handling
- keep existing sign_event and connect flows intact

</content>
</entry>
<entry>
<id>219c6b2c95b9cbf72d90bd5a760a0df1095d9e9f</id>
<published>2026-01-06T17:08:53Z</published>
<updated>2026-01-06T17:08:53Z</updated>
<title>nostr: handle signevent nip-46 requests</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/219c6b2c95b9cbf72d90bd5a760a0df1095d9e9f.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 219c6b2c95b9cbf72d90bd5a760a0df1095d9e9f
parent eb59dfdd3ee94792c9638ae17a61c83b99805d27
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 17:08:53 +0000

nostr: handle signevent nip-46 requests

- add signevent request handling in listener
- reject unsigned events with pubkey mismatch
- sign events using radrootsd keys and return signevent result
- return formatted error on signing failure

</content>
</entry>
<entry>
<id>eb59dfdd3ee94792c9638ae17a61c83b99805d27</id>
<published>2026-01-06T16:43:27Z</published>
<updated>2026-01-06T16:43:27Z</updated>
<title>nip46: accept single relay values in connect URLs</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/eb59dfdd3ee94792c9638ae17a61c83b99805d27.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit eb59dfdd3ee94792c9638ae17a61c83b99805d27
parent 6820aa55412b4d6822ebdd72a902a067e9e5865f
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 16:43:27 +0000

nip46: accept single relay values in connect URLs

- allow relay param to be string or list
- normalize relay values into a clean Vec&lt;String&gt;
- keep bunker and nostrconnect parsing consistent
- preserve existing perms and metadata parsing

</content>
</entry>
<entry>
<id>6820aa55412b4d6822ebdd72a902a067e9e5865f</id>
<published>2026-01-06T16:39:25Z</published>
<updated>2026-01-06T16:39:25Z</updated>
<title>refactor: restore minimal runtime and transports</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/6820aa55412b4d6822ebdd72a902a067e9e5865f.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 6820aa55412b4d6822ebdd72a902a067e9e5865f
parent 31216709a03aa95680e4af582d35184a61a5fc52
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 16:39:25 +0000

refactor: restore minimal runtime and transports

- reintroduce app runtime with config loading and logging
- rebuild jsonrpc transport with nip46 methods
- wire nostr listener to handle nip46 requests
- add core state for keys and session store

</content>
</entry>
<entry>
<id>31216709a03aa95680e4af582d35184a61a5fc52</id>
<published>2026-01-06T15:52:15Z</published>
<updated>2026-01-06T15:52:15Z</updated>
<title>nostr: add nip46 listener scaffold</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/31216709a03aa95680e4af582d35184a61a5fc52.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 31216709a03aa95680e4af582d35184a61a5fc52
parent cc9a808ffe1f28fa6ff8ff601ed165b42ef661d3
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 15:52:15 +0000

nostr: add nip46 listener scaffold

- add transport module and nostr listener entrypoint
- subscribe to nip46 events addressed to service pubkey
- start listener alongside relay connection when relays configured
- log incoming nip46 request events without handling

</content>
</entry>
<entry>
<id>cc9a808ffe1f28fa6ff8ff601ed165b42ef661d3</id>
<published>2026-01-06T15:05:33Z</published>
<updated>2026-01-06T15:05:33Z</updated>
<title>tests: add nip46 coverage scaffolding</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/cc9a808ffe1f28fa6ff8ff601ed165b42ef661d3.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit cc9a808ffe1f28fa6ff8ff601ed165b42ef661d3
parent 429ba5ec8a93a493a29c592383a3d3cad80b9135
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 15:05:33 +0000

tests: add nip46 coverage scaffolding

- add metadata parsing tests for bunker/nostrconnect URLs
- add connect response validation tests
- document auth_url gap via ignored test
- keep nip46 coverage focused on helpers

</content>
</entry>
<entry>
<id>429ba5ec8a93a493a29c592383a3d3cad80b9135</id>
<published>2026-01-06T14:37:28Z</published>
<updated>2026-01-06T14:37:28Z</updated>
<title>nip46: add nip04/nip44 rpc methods</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/429ba5ec8a93a493a29c592383a3d3cad80b9135.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 429ba5ec8a93a493a29c592383a3d3cad80b9135
parent b705a954a0b6e1dde8cf54f5864cdbaaeeacdc1e
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 14:37:28 +0000

nip46: add nip04/nip44 rpc methods

- add nip04 encrypt/decrypt jsonrpc handlers
- add nip44 encrypt/decrypt jsonrpc handlers
- parse pubkeys and map nip46 responses to payloads
- register new nip46 methods alongside existing flow

</content>
</entry>
<entry>
<id>b705a954a0b6e1dde8cf54f5864cdbaaeeacdc1e</id>
<published>2026-01-06T14:27:18Z</published>
<updated>2026-01-06T14:27:18Z</updated>
<title>nip46: add ping rpc</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/b705a954a0b6e1dde8cf54f5864cdbaaeeacdc1e.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit b705a954a0b6e1dde8cf54f5864cdbaaeeacdc1e
parent 498a71bf0a9f699929efa8436ce5ae0762ae73a2
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 14:27:18 +0000

nip46: add ping rpc

- add nip46.ping jsonrpc method with session lookup
- send NIP-46 ping request and parse pong response
- return pong result on success
- register ping in nip46 module

</content>
</entry>
<entry>
<id>498a71bf0a9f699929efa8436ce5ae0762ae73a2</id>
<published>2026-01-06T13:56:02Z</published>
<updated>2026-01-06T13:56:02Z</updated>
<title>nip46: subscribe for ephemeral responses</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/498a71bf0a9f699929efa8436ce5ae0762ae73a2.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 498a71bf0a9f699929efa8436ce5ae0762ae73a2
parent 933cc8d8874b242f10596e55366acedd8f9c0a2b
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 13:56:02 +0000

nip46: subscribe for ephemeral responses

- wait for relay connections before sending requests
- switch connect response handling to subscription loop
- switch nip46 client response handling to subscription loop
- add timeout and notification error handling for nip46 flow

</content>
</entry>
<entry>
<id>933cc8d8874b242f10596e55366acedd8f9c0a2b</id>
<published>2026-01-06T02:59:52Z</published>
<updated>2026-01-06T02:59:52Z</updated>
<title>nip46: add session close rpc</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/933cc8d8874b242f10596e55366acedd8f9c0a2b.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 933cc8d8874b242f10596e55366acedd8f9c0a2b
parent 5d65f2d29f9638190d3a7f2b2fb4811c4d9ecad6
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 02:59:52 +0000

nip46: add session close rpc

- add nip46.session.close endpoint
- remove sessions from in-memory store
- return closed flag in response
- register close method in nip46 module

</content>
</entry>
<entry>
<id>5d65f2d29f9638190d3a7f2b2fb4811c4d9ecad6</id>
<published>2026-01-06T02:54:21Z</published>
<updated>2026-01-06T02:54:21Z</updated>
<title>nip46: add session status rpc</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/5d65f2d29f9638190d3a7f2b2fb4811c4d9ecad6.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 5d65f2d29f9638190d3a7f2b2fb4811c4d9ecad6
parent 433f1b58b1d8dda29a8e020d891f21d6c73fb0ab
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 02:54:21 +0000

nip46: add session status rpc

- add nip46.session.status endpoint
- return session pubkeys and relays
- include optional user pubkey
- register status method in nip46 module

</content>
</entry>
<entry>
<id>433f1b58b1d8dda29a8e020d891f21d6c73fb0ab</id>
<published>2026-01-06T01:45:42Z</published>
<updated>2026-01-06T01:45:42Z</updated>
<title>events: add profile publish rpc</title>
<link rel="alternate" type="text/html" href="https://radroots.dev/git/radrootsdcommit/433f1b58b1d8dda29a8e020d891f21d6c73fb0ab.html" />
<author>
<name>triesap</name>
<email>triesap@radroots.dev</email>
</author>
<content>commit 433f1b58b1d8dda29a8e020d891f21d6c73fb0ab
parent 87a0f082773f2dc9b4f4295d2ef5bef9d7f16a57
Author: triesap &lt;triesap@radroots.dev&gt;
Date:   Tue,  6 Jan 2026 01:45:42 +0000

events: add profile publish rpc

- add events module with profile publish
- canonicalize profile metadata json
- support nip46-signed profile publishing
- reuse nip46 signing helper

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