| 2026-06-23 00:05 | runtime: gate host ops routes by config | triesap | 1 | +141 | -18 |
| 2026-06-22 23:40 | tests: use neutral compatibility fixture | triesap | 2 | +4 | -4 |
| 2026-06-20 00:25 | runtime: expose relay event timestamps | triesap | 1 | +11 | -0 |
| 2026-06-19 23:47 | runtime: add relay event hooks | triesap | 1 | +337 | -3 |
| 2026-06-19 23:03 | host: isolate virtual relay host shell | triesap | 3 | +165 | -100 |
| 2026-06-19 22:55 | runtime: extract neutral relay runtime boundary | triesap | 10 | +334 | -321 |
| 2026-06-17 23:51 | bench: add v1 mvp release gates | triesap | 5 | +549 | -13 |
| 2026-06-17 23:36 | feat: add tenant backup restore export | triesap | 9 | +1653 | -11 |
| 2026-06-17 23:16 | tests: add tenant isolation proof | triesap | 1 | +1026 | -0 |
| 2026-06-17 22:58 | server: route requests by tenant host | triesap | 10 | +822 | -156 |
| 2026-06-17 22:38 | host: add tenant registry runtime | triesap | 3 | +919 | -1 |
| 2026-06-17 22:31 | runtime: rename tenant runtime surface | triesap | 9 | +169 | -164 |
| 2026-06-17 22:23 | cli: add host config validation commands | triesap | 7 | +670 | -28 |
| 2026-06-17 22:16 | config: add tenant host config contract | triesap | 6 | +1191 | -2 |
| 2026-06-16 21:44 | runtime: suppress HLL for group targets | triesap | 10 | +1150 | -84 |
| 2026-06-16 21:14 | runtime: extract HLL group targets | triesap | 4 | +968 | -168 |
| 2026-06-16 20:50 | runtime: forbid custom Pocket verification | triesap | 1 | +8 | -0 |
| 2026-06-16 20:48 | runtime: verify Pocket events natively | triesap | 3 | +195 | -88 |
| 2026-06-16 20:37 | runtime: cover verifier error categories | triesap | 4 | +26 | -15 |
| 2026-06-16 07:47 | runtime: enforce Pocket source invariants | triesap | 14 | +665 | -264 |
| 2026-06-16 07:24 | runtime: harden HLL privacy eligibility | triesap | 1 | +223 | -12 |
| 2026-06-16 07:16 | runtime: store generated Pocket events | triesap | 7 | +102 | -152 |
| 2026-06-16 07:03 | groups: sign generated Pocket events | triesap | 4 | +204 | -0 |
| 2026-06-16 06:57 | runtime: rebuild groups from Pocket events | triesap | 3 | +125 | -132 |
| 2026-06-16 06:53 | runtime: plan group writes from event views | triesap | 1 | +25 | -31 |
| 2026-06-16 06:50 | groups: apply projection from event views | triesap | 2 | +221 | -82 |
| 2026-06-16 06:45 | groups: extend event view primitives | triesap | 1 | +118 | -15 |
| 2026-06-16 03:46 | runtime: close protocol relay boundaries | triesap | 6 | +217 | -183 |
| 2026-06-16 03:33 | runtime: isolate generated group Pocket storage | triesap | 1 | +88 | -15 |
| 2026-06-16 03:26 | runtime: count events with Pocket filters | triesap | 6 | +388 | -552 |
| 2026-06-16 03:08 | runtime: query reqs with Pocket filters | triesap | 4 | +514 | -96 |
| 2026-06-16 02:52 | runtime: match live subscriptions with Pocket | triesap | 4 | +159 | -87 |
| 2026-06-16 02:44 | runtime: encode outbound events from Pocket | triesap | 5 | +304 | -124 |
| 2026-06-16 02:19 | runtime: write groups from Pocket events | triesap | 3 | +118 | -65 |
| 2026-06-16 02:11 | runtime: admit events through Pocket storage | triesap | 7 | +445 | -110 |
| 2026-06-16 01:58 | runtime: validate auth through Pocket events | triesap | 7 | +582 | -42 |
| 2026-06-16 01:45 | runtime: dispatch sessions through runtime messages | triesap | 3 | +311 | -184 |
| 2026-06-16 01:38 | runtime: add pocket-native client message boundary | triesap | 2 | +229 | -110 |
| 2026-06-15 21:59 | runtime: add safe count hll parity | triesap | 6 | +293 | -20 |
| 2026-06-15 21:45 | runtime: disable negentropy surface | triesap | 5 | +336 | -2 |
| 2026-06-15 21:33 | runtime: parse req count through Pocket | triesap | 3 | +503 | -31 |
| 2026-06-15 21:20 | runtime: parse event auth through Pocket | triesap | 4 | +105 | -5 |
| 2026-06-15 21:11 | runtime: close redacted reqs | triesap | 5 | +288 | -56 |
| 2026-06-15 20:57 | runtime: use current auth for live reqs | triesap | 6 | +509 | -86 |
| 2026-06-15 12:02 | tests: prove group write races | triesap | 1 | +657 | -8 |
| 2026-06-15 11:53 | protocol: reject duplicate object fields | triesap | 3 | +181 | -2 |
| 2026-06-15 11:47 | tests: cover unsupported negentropy command parity | triesap | 1 | +4 | -0 |
| 2026-06-15 11:42 | tests: extend Pocket store parity | triesap | 1 | +61 | -0 |
| 2026-06-15 04:22 | runtime: make count exact | triesap | 3 | +134 | -12 |
| 2026-06-15 04:16 | runtime: make group writes atomic | triesap | 2 | +98 | -45 |
| 2026-06-15 04:11 | tests: prove pocket source boundary | triesap | 2 | +33 | -0 |
| 2026-06-15 02:37 | bench: prove benchmark profile gates | triesap | 2 | +40 | -12 |
| 2026-06-15 02:33 | bench: extend benchmark artifact schema | triesap | 2 | +140 | -9 |
| 2026-06-15 02:30 | bench: add proof benchmark profiles | triesap | 2 | +258 | -6 |
| 2026-06-15 02:26 | bench: rename production benchmark profile | triesap | 2 | +52 | -41 |
| 2026-06-15 02:20 | runtime: prove tombstone visibility gates | triesap | 1 | +123 | -0 |
| 2026-06-15 02:17 | runtime: harden hidden privacy coverage | triesap | 2 | +182 | -19 |
| 2026-06-15 02:12 | groups: prove projection rebuild equivalence | triesap | 1 | +115 | -0 |
| 2026-06-15 02:09 | runtime: prove generated outbox mark recovery | triesap | 1 | +119 | -10 |
| 2026-06-15 02:06 | runtime: prove pending outbox recovery | triesap | 1 | +183 | -0 |
| 2026-06-15 02:02 | runtime: prove source-only recovery | triesap | 1 | +58 | -0 |
| 2026-06-15 01:57 | runtime: prove generated state live fanout | triesap | 3 | +163 | -14 |
| 2026-06-15 01:49 | bench: cover count resource controls | triesap | 4 | +255 | -12 |
| 2026-06-15 01:35 | runtime: prove exact count only | triesap | 2 | +48 | -0 |
| 2026-06-15 01:29 | runtime: expose safe query metrics | triesap | 4 | +269 | -21 |
| 2026-06-15 01:20 | runtime: prove count privacy refusals | triesap | 1 | +39 | -0 |
| 2026-06-15 01:11 | runtime: refuse broad count queries | triesap | 3 | +94 | -8 |
| 2026-06-15 01:05 | runtime: classify broad count queries | triesap | 1 | +221 | -12 |
| 2026-06-15 00:55 | runtime: prove live chorus parity | triesap | 1 | +124 | -0 |
| 2026-06-15 00:52 | runtime: prove nip11 chorus parity | triesap | 1 | +111 | -2 |
| 2026-06-15 00:49 | runtime: prove auth chorus parity | triesap | 2 | +210 | -1 |
| 2026-06-15 00:43 | runtime: prove close chorus parity | triesap | 1 | +118 | -0 |
| 2026-06-15 00:38 | runtime: prove req count chorus parity | triesap | 1 | +196 | -0 |
| 2026-06-15 00:33 | runtime: prove event chorus parity | triesap | 1 | +79 | -0 |
| 2026-06-15 00:30 | runtime: prove malformed chorus parity | triesap | 1 | +78 | -1 |
| 2026-06-15 00:23 | protocol: prove hot path coverage | triesap | 4 | +257 | -0 |
| 2026-06-15 00:15 | runtime: harden live backpressure | triesap | 7 | +201 | -83 |
| 2026-06-15 00:07 | runtime: stress shared service concurrency | triesap | 1 | +434 | -0 |
| 2026-06-15 00:00 | runtime: remove base relay mutex | triesap | 3 | +49 | -14 |
| 2026-06-14 23:56 | runtime: prove fanout offset lock boundary | triesap | 1 | +16 | -0 |
| 2026-06-14 23:53 | runtime: remove count relay lock | triesap | 3 | +96 | -30 |
| 2026-06-14 23:44 | runtime: remove req relay lock | triesap | 3 | +146 | -45 |
| 2026-06-14 23:38 | runtime: remove event relay lock | triesap | 3 | +84 | -25 |
| 2026-06-14 23:33 | groups: narrow write-side relay access | triesap | 6 | +25 | -25 |
| 2026-06-14 23:27 | runtime: use shared group read gates | triesap | 3 | +25 | -24 |
| 2026-06-14 23:24 | groups: introduce service handle state | triesap | 3 | +123 | -38 |
| 2026-06-14 23:19 | storage: share pocket store handle | triesap | 3 | +52 | -16 |
| 2026-06-14 23:14 | runtime: introduce shared handle state | triesap | 1 | +143 | -94 |
| 2026-06-14 23:05 | query: reject unsupported search filters | triesap | 4 | +139 | -0 |
| 2026-06-14 23:02 | query: wire pocket scrape controls | triesap | 14 | +557 | -123 |
| 2026-06-14 22:52 | storage: honor pocket sync policy | triesap | 3 | +65 | -7 |
| 2026-06-14 22:50 | config: remove fake pocket storage knobs | triesap | 14 | +49 | -165 |
| 2026-06-14 22:47 | tests: prove pocket boundary operations | triesap | 1 | +45 | -0 |
| 2026-06-14 21:43 | repo: inline validation app surface | triesap | 10 | +92 | -124 |
| 2026-06-14 21:39 | config: move relay example config | triesap | 4 | +182 | -11 |
| 2026-06-14 20:40 | bench: add explicit profile claim gates | triesap | 2 | +500 | -21 |
| 2026-06-14 20:34 | logging: audit group moderation decisions | triesap | 2 | +350 | -4 |
| 2026-06-14 20:26 | rate-limits: add ip-scoped client buckets | triesap | 10 | +659 | -88 |
| 2026-06-14 20:15 | metrics: expose ops contract keys | triesap | 7 | +768 | -111 |
| 2026-06-14 19:57 | ops: make readiness live | triesap | 5 | +125 | -31 |
| 2026-06-14 19:51 | nip11: advertise retention contract | triesap | 5 | +51 | -0 |
| 2026-06-14 19:49 | config: require explicit query complexity | triesap | 9 | +40 | -8 |
| 2026-06-14 16:13 | runtime: remove obsolete startup probe | triesap | 2 | +0 | -110 |
| 2026-06-14 16:10 | bench: fail closed on threshold validation | triesap | 1 | +104 | -46 |
| 2026-06-14 16:04 | tests: add protocol stress coverage | triesap | 2 | +87 | -1 |
| 2026-06-14 15:59 | tests: cover canonical recovery rebuild | triesap | 1 | +193 | -8 |
| 2026-06-14 15:55 | tests: cover generated event broadcast | triesap | 1 | +120 | -6 |
| 2026-06-14 15:53 | tests: cover websocket privacy gates | triesap | 1 | +338 | -0 |
| 2026-06-14 15:50 | tests: cover websocket group lifecycle | triesap | 1 | +221 | -1 |
| 2026-06-14 15:47 | tests: cover public websocket relay flows | triesap | 1 | +200 | -0 |
| 2026-06-14 15:43 | config: make strict group policy explicit | triesap | 1 | +2 | -0 |
| 2026-06-14 15:40 | ops: add truthfulness coverage | triesap | 1 | +203 | -0 |
| 2026-06-14 15:38 | ops: gate readiness on server bind | triesap | 6 | +50 | -4 |
| 2026-06-14 15:34 | nip11: guard negentropy advertising | triesap | 1 | +32 | -3 |
| 2026-06-14 15:32 | nip11: derive supported nips | triesap | 5 | +80 | -26 |
| 2026-06-14 15:28 | nip11: advertise runtime limits | triesap | 5 | +240 | -30 |
| 2026-06-14 15:20 | nip70: require author auth for protected events | triesap | 3 | +99 | -2 |
| 2026-06-14 15:15 | metrics: expose relay runtime counters | triesap | 5 | +383 | -20 |
| 2026-06-14 15:05 | logging: add redacted relay events | triesap | 9 | +534 | -18 |
| 2026-06-14 14:56 | limits: apply query rate checks | triesap | 7 | +1012 | -32 |
| 2026-06-14 14:10 | limits: enforce group write rate checks | triesap | 7 | +388 | -10 |
| 2026-06-14 14:02 | limits: apply auth and event rate checks | triesap | 8 | +596 | -24 |
| 2026-06-14 13:53 | limits: add rate limiter skeleton | triesap | 3 | +334 | -0 |
| 2026-06-14 13:40 | limits: enforce query complexity | triesap | 6 | +113 | -0 |
| 2026-06-14 13:33 | limits: enforce runtime resource caps | triesap | 10 | +1109 | -139 |
| 2026-06-14 13:13 | config: reject ignored production fields | triesap | 6 | +175 | -79 |
| 2026-06-14 13:05 | groups: cover crash recovery equivalence | triesap | 2 | +394 | -17 |
| 2026-06-14 12:58 | groups: generate admin snapshots for role changes | triesap | 2 | +248 | -10 |
| 2026-06-14 12:55 | groups: scope live outbox replay per group | triesap | 2 | +68 | -3 |
| 2026-06-14 12:49 | groups: order outbox replay per group | triesap | 1 | +73 | -8 |
| 2026-06-14 12:46 | groups: broadcast generated outbox offsets | triesap | 3 | +126 | -24 |
| 2026-06-14 12:43 | groups: cover stored generated recovery | triesap | 1 | +65 | -0 |
| 2026-06-14 12:41 | groups: require outbox replay before readiness | triesap | 2 | +119 | -6 |
| 2026-06-14 12:37 | groups: merge generated outbox payloads | triesap | 2 | +40 | -13 |
| 2026-06-14 12:33 | groups: derive missing outbox records | triesap | 2 | +170 | -123 |
| 2026-06-14 12:28 | groups: apply checkpointed canonical replay | triesap | 3 | +133 | -5 |
| 2026-06-14 12:24 | groups: persist rebuilt projection checkpoint | triesap | 2 | +86 | -2 |
| 2026-06-14 12:20 | groups: rebuild projection from canonical events | triesap | 2 | +61 | -21 |
| 2026-06-14 12:07 | groups: validate extra table schema versions | triesap | 1 | +267 | -15 |
| 2026-06-14 11:58 | groups: add canonical pocket event scanner | triesap | 2 | +282 | -12 |
| 2026-06-14 11:45 | tests: cover group privacy leak surfaces | triesap | 1 | +383 | -2 |
| 2026-06-14 11:41 | runtime: centralize group read gate | triesap | 2 | +32 | -30 |
| 2026-06-14 11:37 | tests: cover websocket group write auth | triesap | 1 | +18 | -1 |
| 2026-06-14 11:35 | tests: reject all generated group snapshots | triesap | 2 | +39 | -38 |
| 2026-06-14 11:35 | tests: cover strict closed group semantics | triesap | 1 | +59 | -3 |
| 2026-06-14 11:32 | groups: use duplicate prefix for membership conflicts | triesap | 5 | +96 | -25 |
| 2026-06-14 11:29 | groups: enforce public join policy | triesap | 4 | +183 | -24 |
| 2026-06-14 11:18 | groups: add strict group policy config | triesap | 4 | +191 | -40 |
| 2026-06-14 11:11 | groups: split private and hidden snapshot visibility | triesap | 4 | +187 | -16 |
| 2026-06-14 11:07 | runtime: remove JSON bridge from Pocket conversions | triesap | 5 | +271 | -28 |
| 2026-06-14 11:01 | groups: gate policy through event views | triesap | 6 | +284 | -185 |
| 2026-06-14 10:51 | groups: introduce pocket event view | triesap | 4 | +247 | -0 |
| 2026-06-14 10:44 | tests: cover websocket relay protocol flows | triesap | 1 | +258 | -6 |
| 2026-06-14 10:39 | runtime: close lagged websocket sessions | triesap | 1 | +84 | -11 |
| 2026-06-14 10:36 | runtime: fan out stored event offsets | triesap | 5 | +291 | -53 |
| 2026-06-14 10:27 | runtime: cover event storage replies | triesap | 1 | +41 | -0 |
| 2026-06-14 10:21 | runtime: count visible query results exactly | triesap | 2 | +78 | -1 |
| 2026-06-14 10:18 | runtime: order public req results | triesap | 1 | +124 | -26 |
| 2026-06-14 10:13 | runtime: expose screened pocket queries | triesap | 3 | +235 | -13 |
| 2026-06-14 10:05 | runtime: scope websocket subscriptions | triesap | 3 | +199 | -29 |
| 2026-06-14 10:01 | runtime: enforce auth timestamp skew | triesap | 10 | +288 | -34 |
| 2026-06-14 09:54 | runtime: issue websocket auth challenges | triesap | 5 | +77 | -16 |
| 2026-06-14 09:52 | runtime: dispatch websocket client messages | triesap | 4 | +304 | -23 |
| 2026-06-14 09:45 | runtime: prove server lifecycle integration | triesap | 2 | +159 | -16 |
| 2026-06-14 09:43 | runtime: make run serve until shutdown | triesap | 5 | +109 | -96 |
| 2026-06-14 09:40 | runtime: close websocket sessions on shutdown | triesap | 4 | +68 | -3 |
| 2026-06-14 09:35 | runtime: propagate websocket shutdown | triesap | 2 | +38 | -9 |
| 2026-06-14 09:34 | runtime: add websocket queue skeleton | triesap | 2 | +119 | -17 |
| 2026-06-14 09:31 | runtime: add websocket session skeleton | triesap | 6 | +122 | -3 |
| 2026-06-14 09:27 | runtime: add nip11 cors headers | triesap | 1 | +39 | -4 |
| 2026-06-14 09:27 | runtime: serve nip11 root route | triesap | 1 | +51 | -20 |
| 2026-06-14 09:25 | runtime: bind http lifecycle routes | triesap | 1 | +86 | -15 |
| 2026-06-14 09:24 | runtime: add async serve skeleton | triesap | 6 | +135 | -9 |
| 2026-06-14 09:19 | runtime: add offset event bus | triesap | 3 | +317 | -115 |
| 2026-06-14 09:16 | runtime: introduce tangle runtime owner | triesap | 2 | +281 | -8 |
| 2026-06-14 09:10 | runtime: move relay core module | triesap | 6 | +7 | -5 |
| 2026-06-14 09:09 | runtime: extract pocket conversion boundary | triesap | 4 | +61 | -35 |
| 2026-06-14 09:03 | runtime: extract group service module | triesap | 3 | +535 | -488 |
| 2026-06-14 08:57 | runtime: extract live subscription module | triesap | 4 | +181 | -129 |
| 2026-06-14 08:54 | runtime: extract relay auth module | triesap | 7 | +221 | -188 |
| 2026-06-14 08:52 | runtime: extract ops readiness module | triesap | 3 | +208 | -203 |
| 2026-06-14 08:49 | runtime: extract nip11 module | triesap | 4 | +273 | -235 |
| 2026-06-14 08:45 | runtime: extract relay error types | triesap | 5 | +108 | -77 |
| 2026-06-14 08:41 | runtime: extract config module | triesap | 3 | +290 | -279 |
| 2026-06-14 08:36 | test: add phase2 acceptance targets | triesap | 1 | +81 | -0 |
| 2026-06-14 08:31 | repo: anchor phase2 relay authority | triesap | 0 | +0 | -0 |
| 2026-06-14 03:16 | chore: record final validation closeout | triesap | 3 | +4 | -3 |
| 2026-06-14 03:09 | refactor: remove obsolete relay surfaces | triesap | 38 | +1119 | -41249 |
| 2026-06-14 02:51 | bench: add tangle v2 benchmark harness | triesap | 4 | +1331 | -969 |
| 2026-06-14 02:28 | test: add v2 relay integration coverage | triesap | 14 | +1233 | -168 |
| 2026-06-14 01:56 | feat: add tangle operations readiness surface | triesap | 1 | +530 | -5 |
| 2026-06-14 01:37 | feat: complete group flow gates | triesap | 5 | +1012 | -39 |
| 2026-06-14 01:19 | feat: gate group reads in base relay | triesap | 1 | +243 | -21 |
| 2026-06-14 01:10 | feat: wire group runtime generated events | triesap | 7 | +1081 | -21 |
| 2026-06-14 00:51 | feat: add strict group policy gates | triesap | 6 | +1189 | -4 |
| 2026-06-14 00:34 | feat: add projection and outbox core | triesap | 6 | +2419 | -44 |
| 2026-06-14 00:11 | feat: add group domain core | triesap | 15 | +1570 | -15 |
| 2026-06-13 23:52 | feat: add base relay protocol scaffold | triesap | 7 | +1321 | -11 |
| 2026-06-13 23:30 | build: add chorus pocket startup scaffold | triesap | 6 | +213 | -9 |
| 2026-06-13 23:18 | build: pin pocket dependency boundary | triesap | 3 | +254 | -2 |
| 2026-06-13 23:15 | build: add nip29 config skeleton crates | triesap | 6 | +738 | -0 |
| 2026-06-07 03:38 | release: record full acceptance proof | triesap | 0 | +0 | -0 |
| 2026-06-07 03:18 | release: wire benchmark artifact capture | triesap | 2 | +2 | -0 |
| 2026-06-07 03:17 | bench: capture release evidence artifacts | triesap | 5 | +248 | -2 |
| 2026-06-07 03:12 | release: add Nix acceptance app | triesap | 2 | +35 | -6 |
| 2026-06-07 03:10 | relay: update implementation status | triesap | 2 | +3 | -4 |
| 2026-06-07 03:07 | release: realign acceptance gates | triesap | 4 | +10 | -11 |
| 2026-06-07 00:28 | tests: cover surreal store edge paths | triesap | 1 | +159 | -0 |
| 2026-06-07 00:21 | tests: cover runtime route helpers | triesap | 1 | +156 | -0 |
| 2026-06-07 00:15 | tests: cover benchmark edge paths | triesap | 1 | +127 | -17 |
| 2026-06-07 00:09 | tests: cover CLI command wrappers | triesap | 2 | +312 | -36 |
| 2026-06-06 23:55 | tests: add initial coverage repair set | triesap | 8 | +2630 | -699 |
| 2026-06-06 21:52 | release: wire coverage tool paths | triesap | 2 | +9 | -0 |
| 2026-06-06 21:31 | release: finalize supported nips | triesap | 1 | +4 | -4 |
| 2026-06-06 21:28 | release: add acceptance validation | triesap | 2 | +78 | -0 |
| 2026-06-06 21:13 | quality: require full coverage | triesap | 3 | +55 | -1 |
| 2026-06-06 21:03 | quality: forbid unsafe code | triesap | 2 | +220 | -0 |
| 2026-06-06 21:01 | quality: forbid source comments | triesap | 3 | +203 | -1 |
| 2026-06-06 20:57 | security: add commerce privacy guards | triesap | 3 | +304 | -3 |
| 2026-06-06 20:49 | security: add abuse test suite | triesap | 5 | +459 | -6 |
| 2026-06-06 20:40 | tests: add moderation conformance suite | triesap | 2 | +186 | -0 |
| 2026-06-06 20:37 | tests: add discussion conformance suite | triesap | 1 | +231 | -0 |
| 2026-06-06 20:35 | tests: add nip99 conformance suite | triesap | 2 | +149 | -8 |
| 2026-06-06 20:28 | tests: add nip50 conformance suite | triesap | 2 | +87 | -1 |
| 2026-06-06 20:25 | tests: add nip42 conformance suite | triesap | 2 | +79 | -2 |
| 2026-06-06 20:23 | tests: add nip09 conformance suite | triesap | 2 | +72 | -0 |
| 2026-06-06 20:21 | tests: add nip01 conformance suite | triesap | 2 | +328 | -0 |
| 2026-06-06 20:16 | ops: add production config example | triesap | 1 | +33 | -0 |
| 2026-06-06 20:14 | ops: add readiness gates | triesap | 3 | +100 | -3 |
| 2026-06-06 20:10 | ops: add restore command | triesap | 4 | +484 | -29 |
| 2026-06-06 20:05 | ops: add backup command | triesap | 7 | +481 | -45 |
| 2026-06-06 19:54 | ops: add local surrealdb stack | triesap | 6 | +335 | -31 |
| 2026-06-06 19:39 | observability: add metrics endpoint | triesap | 3 | +420 | -8 |
| 2026-06-06 19:30 | observability: add tracing setup | triesap | 6 | +428 | -16 |
| 2026-06-06 19:13 | http: complete seller endpoint | triesap | 2 | +272 | -7 |
| 2026-06-06 19:04 | store-surreal: project seller profiles | triesap | 1 | +579 | -5 |
| 2026-06-06 18:58 | migrations: add seller profile schema | triesap | 1 | +77 | -0 |
| 2026-06-06 18:57 | nips: add seller profile parser | triesap | 2 | +255 | -13 |
| 2026-06-06 11:21 | http: add moderation review endpoints | triesap | 2 | +434 | -5 |
| 2026-06-06 11:16 | store-surreal: project reports | triesap | 1 | +523 | -8 |
| 2026-06-06 11:12 | migrations: add report projection schema | triesap | 1 | +67 | -0 |
| 2026-06-06 11:11 | nips: add report parser | triesap | 1 | +364 | -9 |
| 2026-06-06 11:07 | store-surreal: project labels | triesap | 1 | +517 | -12 |
| 2026-06-06 11:02 | migrations: add label projection schema | triesap | 1 | +65 | -0 |
| 2026-06-06 10:59 | nips: add label parser | triesap | 1 | +318 | -10 |
| 2026-06-06 10:57 | http: add forum endpoints | triesap | 2 | +645 | -8 |
| 2026-06-06 10:48 | store-surreal: project forum threads | triesap | 1 | +591 | -8 |
| 2026-06-06 10:45 | migrations: add forum thread schema | triesap | 1 | +90 | -0 |
| 2026-06-06 10:44 | nips: add forum thread parser | triesap | 1 | +174 | -8 |
| 2026-06-06 10:43 | store-surreal: project long form posts | triesap | 1 | +707 | -10 |
| 2026-06-06 10:38 | migrations: add long form projection support | triesap | 1 | +104 | -0 |
| 2026-06-06 10:36 | nips: add long form parser | triesap | 1 | +330 | -3 |
| 2026-06-06 10:34 | http: expose reaction counts | triesap | 2 | +275 | -3 |
| 2026-06-06 10:29 | store-surreal: project reactions | triesap | 1 | +458 | -8 |
| 2026-06-06 10:26 | migrations: add reaction schemas | triesap | 1 | +98 | -0 |
| 2026-06-06 10:24 | nips: add reaction parser | triesap | 1 | +274 | -6 |
| 2026-06-06 10:22 | http: add listing comments endpoint | triesap | 2 | +326 | -5 |
| 2026-06-06 10:17 | store-surreal: project comments | triesap | 1 | +451 | -10 |
| 2026-06-06 10:12 | migrations: add comment projection schema | triesap | 1 | +69 | -0 |
| 2026-06-06 10:11 | nips: add comment parser | triesap | 1 | +447 | -6 |
| 2026-06-06 10:02 | test: align seller policy fixture | triesap | 1 | +2 | -15 |
| 2026-06-06 10:00 | bench: add restore drill smoke test | triesap | 1 | +92 | -0 |
| 2026-06-06 09:59 | bench: add rebuild benchmark | triesap | 3 | +148 | -1 |
| 2026-06-06 09:57 | bench: add query plan capture | triesap | 1 | +58 | -0 |
| 2026-06-06 09:56 | bench: add search benchmark | triesap | 1 | +66 | -0 |
| 2026-06-06 09:39 | bench: add listing query benchmark | triesap | 1 | +47 | -0 |
| 2026-06-06 09:38 | bench: add ingest benchmark | triesap | 1 | +32 | -0 |
| 2026-06-06 09:38 | bench: add generic relay workload | triesap | 3 | +78 | -1 |
| 2026-06-06 09:37 | bench: add search workload | triesap | 1 | +67 | -2 |
| 2026-06-06 09:36 | bench: add listing workload | triesap | 3 | +139 | -0 |
| 2026-06-06 09:35 | bench: add deterministic dataset generator | triesap | 5 | +210 | -6 |
| 2026-06-06 09:33 | http: add minimal admin policy api | triesap | 3 | +624 | -22 |
| 2026-06-06 09:27 | policy: persist durable rate limits | triesap | 3 | +587 | -16 |
| 2026-06-06 09:21 | policy: add hidden event overlay | triesap | 1 | +419 | -5 |
| 2026-06-06 09:17 | policy: add approved seller gate | triesap | 1 | +167 | -6 |
| 2026-06-06 09:14 | policy: require authenticated writes | triesap | 1 | +28 | -0 |
| 2026-06-06 09:08 | cli: add projection rebuild command | triesap | 4 | +259 | -57 |
| 2026-06-06 09:06 | cli: add event export command | triesap | 4 | +216 | -12 |
| 2026-06-06 09:03 | cli: add event import command | triesap | 4 | +483 | -19 |
| 2026-06-06 08:57 | cli: add run command | triesap | 9 | +1060 | -23 |
| 2026-06-06 08:40 | cli: add migrate command | triesap | 6 | +410 | -23 |
| 2026-06-06 08:35 | cli: add runtime config loader | triesap | 1 | +515 | -8 |
| 2026-06-06 08:32 | cli: add tangle command model | triesap | 3 | +217 | -10 |
| 2026-06-06 08:29 | ws: add graceful shutdown | triesap | 2 | +97 | -8 |
| 2026-06-06 08:27 | ws: enforce backpressure limits | triesap | 1 | +69 | -2 |
| 2026-06-06 08:26 | ws: add live event fanout | triesap | 1 | +69 | -5 |
| 2026-06-06 08:23 | ws: handle close messages | triesap | 1 | +66 | -7 |
| 2026-06-06 08:21 | ws: handle req queries | triesap | 1 | +269 | -16 |
| 2026-06-06 08:19 | ws: handle auth messages | triesap | 1 | +126 | -7 |
| 2026-06-06 08:17 | ws: handle event messages | triesap | 2 | +234 | -12 |
| 2026-06-06 08:13 | ws: add client message loop | triesap | 1 | +147 | -9 |
| 2026-06-06 08:11 | ws: add websocket route | triesap | 3 | +129 | -6 |
| 2026-06-06 08:08 | ws: add connection model | triesap | 1 | +250 | -6 |
| 2026-06-06 08:05 | http: add seller endpoint | triesap | 1 | +181 | -0 |
| 2026-06-06 08:04 | http: add marketplace search endpoint | triesap | 1 | +275 | -2 |
| 2026-06-06 08:01 | http: add listing detail endpoint | triesap | 3 | +177 | -3 |
| 2026-06-06 07:58 | http: add listings endpoint | triesap | 3 | +534 | -5 |
| 2026-06-06 07:52 | http: add listing query parser | triesap | 3 | +527 | -1 |
| 2026-06-06 07:46 | http: add relay info endpoint | triesap | 1 | +199 | -3 |
| 2026-06-06 07:44 | http: add health endpoints | triesap | 3 | +275 | -1 |
| 2026-06-06 07:41 | http: add api error model | triesap | 4 | +220 | -0 |
| 2026-06-06 06:39 | store-surreal: close strict coverage gaps | triesap | 1 | +192 | -19 |
| 2026-06-06 06:16 | store-surreal: satisfy clippy checks | triesap | 1 | +34 | -39 |
| 2026-06-06 06:12 | store-surreal: query search documents | triesap | 1 | +196 | -3 |
| 2026-06-06 06:10 | store-surreal: query listing projections | triesap | 1 | +174 | -3 |
| 2026-06-06 06:09 | store-surreal: query current events | triesap | 1 | +147 | -0 |
| 2026-06-06 06:07 | store-surreal: query indexed tags | triesap | 1 | +206 | -0 |
| 2026-06-06 06:06 | store-surreal: query raw events | triesap | 1 | +140 | -1 |
| 2026-06-06 06:04 | store-surreal: index listing search documents | triesap | 1 | +223 | -3 |
| 2026-06-06 06:02 | store-surreal: project listing helpers | triesap | 1 | +291 | -4 |
| 2026-06-06 06:00 | store-surreal: project current listings | triesap | 1 | +347 | -5 |
| 2026-06-06 05:57 | store-surreal: store listing revisions | triesap | 1 | +297 | -5 |
| 2026-06-06 05:54 | store-surreal: apply deletion markers | triesap | 3 | +276 | -3 |
| 2026-06-06 05:51 | store-surreal: maintain current events | triesap | 1 | +278 | -3 |
| 2026-06-06 05:48 | store-surreal: index event tags | triesap | 1 | +104 | -1 |
| 2026-06-06 05:45 | store-surreal: store raw events | triesap | 3 | +167 | -1 |
| 2026-06-06 05:42 | migrations: add policy schemas | triesap | 1 | +156 | -0 |
| 2026-06-06 05:41 | migrations: add search document schema | triesap | 1 | +79 | -0 |
| 2026-06-06 05:39 | migrations: add listing helper schemas | triesap | 1 | +112 | -0 |
| 2026-06-06 05:38 | migrations: add listing current schema | triesap | 1 | +121 | -0 |
| 2026-06-06 05:37 | migrations: add listing revision schema | triesap | 1 | +69 | -0 |
| 2026-06-06 05:37 | migrations: add deletion marker schema | triesap | 1 | +43 | -0 |
| 2026-06-06 05:36 | migrations: add current event schema | triesap | 1 | +52 | -0 |
| 2026-06-06 05:36 | migrations: add event tag index schema | triesap | 1 | +62 | -19 |
| 2026-06-06 05:34 | migrations: add raw event schema | triesap | 1 | +104 | -5 |
| 2026-06-06 05:32 | migrations: add migration tracking schema | triesap | 3 | +5113 | -258 |
| 2026-06-06 05:25 | store-surreal: add migration model | triesap | 3 | +221 | -1 |
| 2026-06-06 05:24 | store-surreal: add surreal connection config | triesap | 4 | +224 | -0 |
| 2026-06-06 05:16 | core: add rate limit primitives | triesap | 1 | +321 | -10 |
| 2026-06-06 05:13 | core: add auth challenge state | triesap | 1 | +369 | -6 |
| 2026-06-06 05:10 | core: add subscription manager | triesap | 1 | +248 | -4 |
| 2026-06-06 05:08 | core: add subscription matcher | triesap | 1 | +319 | -3 |
| 2026-06-06 05:05 | core: add marketplace query model | triesap | 1 | +970 | -3 |
| 2026-06-06 04:58 | core: add nip50 query compiler | triesap | 1 | +321 | -24 |
| 2026-06-06 04:52 | core: add nostr filter compiler | triesap | 3 | +277 | -6 |
| 2026-06-06 04:47 | core: add query plan model | triesap | 1 | +552 | -3 |
| 2026-06-06 04:44 | core: add event ingestion pipeline | triesap | 3 | +762 | -9 |
| 2026-06-06 04:39 | core: add event validation pipeline | triesap | 3 | +571 | -3 |
| 2026-06-06 04:33 | core: add admission policy model | triesap | 1 | +643 | -2 |
| 2026-06-06 04:29 | core: add runtime limits | triesap | 4 | +746 | -0 |
| 2026-06-06 04:24 | test-support: add in memory repository | triesap | 3 | +162 | -4 |
| 2026-06-06 04:21 | test-support: add deterministic fixtures | triesap | 8 | +445 | -0 |
| 2026-06-06 04:16 | store: add repository traits | triesap | 4 | +261 | -0 |
| 2026-06-06 04:14 | nips: add listing projection contract | triesap | 1 | +304 | -2 |
| 2026-06-06 04:09 | nips: add listing taxonomy parser | triesap | 1 | +161 | -5 |
| 2026-06-06 04:07 | nips: add listing location parser | triesap | 1 | +218 | -2 |
| 2026-06-06 04:05 | nips: add listing status parser | triesap | 1 | +158 | -4 |
| 2026-06-06 04:03 | nips: add listing fulfillment parser | triesap | 1 | +191 | -6 |
| 2026-06-06 04:01 | nips: add listing unit parser | triesap | 1 | +197 | -6 |
| 2026-06-06 04:00 | nips: add listing price parser | triesap | 1 | +207 | -2 |
| 2026-06-06 03:58 | nips: add listing text parser | triesap | 1 | +171 | -6 |
| 2026-06-06 03:56 | nips: add listing identity parser | triesap | 1 | +138 | -6 |
| 2026-06-06 03:54 | nips: add nip50 search parser | triesap | 3 | +96 | -2 |
| 2026-06-06 03:52 | nips: add relay auth parser | triesap | 1 | +145 | -2 |
| 2026-06-06 03:51 | nips: add deletion request parser | triesap | 1 | +139 | -5 |
| 2026-06-06 03:49 | nips: add single letter tag extraction | triesap | 1 | +105 | -2 |
| 2026-06-06 03:47 | nips: add shared parser utilities | triesap | 4 | +217 | -1 |
| 2026-06-06 03:41 | crypto: add bounded verification service | triesap | 3 | +154 | -2 |
| 2026-06-06 03:40 | crypto: add pure rust schnorr verifier | triesap | 3 | +376 | -1 |
| 2026-06-06 03:37 | crypto: add nostr event id hashing | triesap | 4 | +212 | -1 |
| 2026-06-06 03:35 | protocol: add addressable coordinate model | triesap | 1 | +270 | -6 |
| 2026-06-06 03:32 | protocol: add event kind classification | triesap | 1 | +72 | -6 |
| 2026-06-06 03:31 | protocol: add nostr filter model | triesap | 1 | +465 | -17 |
| 2026-06-06 03:26 | protocol: add relay message encoder | triesap | 1 | +168 | -4 |
| 2026-06-06 03:25 | protocol: add client message parser | triesap | 1 | +422 | -3 |
| 2026-06-06 03:18 | protocol: add canonical event serialization | triesap | 7 | +202 | -2 |
| 2026-06-06 03:17 | protocol: add nostr event model | triesap | 1 | +205 | -3 |
| 2026-06-06 03:15 | protocol: add nostr tag model | triesap | 1 | +161 | -2 |
| 2026-06-06 03:13 | protocol: add nostr scalar types | triesap | 4 | +362 | -1 |
| 2026-06-06 02:51 | ci: add workspace validation workflow | triesap | 2 | +22 | -4 |
| 2026-06-06 02:50 | nix: add tangle development shell | triesap | 2 | +109 | -0 |
| 2026-06-06 02:47 | tooling: require full coverage validation | triesap | 3 | +33 | -1 |
| 2026-06-06 01:12 | tooling: add validation scripts | triesap | 4 | +24 | -0 |
| 2026-06-06 01:11 | repo: initialize tangle workspace | triesap | 7 | +88 | -10 |
| 2026-06-05 23:56 | Initial commit | triesap | 7 | +731 | -0 |