<feed xmlns='http://www.w3.org/2005/Atom'>
<title>coinos-server.git/scripts, branch regtest-fulcrum</title>
<subtitle>coinos server — legacy coinos.io backend (Lightning, on-chain, Liquid)</subtitle>
<id>https://git.coinos.io/coinos-server.git/atom?h=regtest-fulcrum</id>
<link rel='self' href='https://git.coinos.io/coinos-server.git/atom?h=regtest-fulcrum'/>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/'/>
<updated>2026-06-18T14:41:21Z</updated>
<entry>
<title>scripts: add dedup-invoices cleanup for already-duplicated :invoices</title>
<updated>2026-06-18T14:41:21Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-18T14:41:21Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=45a988b3554f44abd03a2d89f1b9087c993186c1'/>
<id>urn:sha1:45a988b3554f44abd03a2d89f1b9087c993186c1</id>
<content type='text'>
The source fix (LPOS guard in generate, 2d2f9856) stops NEW duplicate
entries but doesn't remove the ones already accumulated. This one-time
script scrubs them: scans every &lt;id&gt;:invoices list and removes duplicate
ids, keeping each id's original creation-order position. Dry-run by
default; pass --apply to write. Idempotent.

Scope on a recent prod snapshot: 2,785 of 8,735 lists had dupes
(16,363 duplicate entries).

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>scripts: add wiped-history audit and rebalance-economics model</title>
<updated>2026-06-13T21:21:53Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-13T21:21:53Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=03f68bedddb18e92b487cc6c1358225ce9b40fe6'/>
<id>urn:sha1:03f68bedddb18e92b487cc6c1358225ce9b40fe6</id>
<content type='text'>
audit-wiped-history.ts (read-only) finds accounts whose :payments index
was wiped by the changeid bug — balance&gt;0 with empty history in both db
and arc. rebalance-economics.ts models whether the lightning-&gt;liquid
bridge throughput is fee-positive against on-chain rebalance cost.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>analytics: missing-history audit + lightning-&gt;liquid arb finder</title>
<updated>2026-06-04T19:14:15Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-04T19:14:15Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=be896868de55ef82b268d8c9f92c3f0ba857fed8'/>
<id>urn:sha1:be896868de55ef82b268d8c9f92c3f0ba857fed8</id>
<content type='text'>
audit-missing-history.ts: read-only audit classifying every user's payment
history as clean / recoverable (record in arc not db) / lost (gone from
both). Full-scan finding: of 6,330 users with history, 77% are "arc-only"
which is the NORMAL archived state — the payments route reads via gf()
(archive fallback) so those render fine in the app. True loss is 58 users
/ 59 records (0.02%). So there is no widespread history loss; "missing
history" reports are almost always either dropped receive-callbacks
(record never written, like apk403's 1100 sats) or one of the rare 59.

ln-liquid-arb.ts: finds users funding via lightning and withdrawing via
liquid (the pattern draining the liquid hot wallet / forcing threshold
cuts). Reports per-user through-flow + net liquid drainers.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>analytics: --csv flag for month-over-month trend tracking</title>
<updated>2026-06-04T07:42:15Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-04T07:42:15Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=3db24424438322c3b341623456bd235ae64f98a1'/>
<id>urn:sha1:3db24424438322c3b341623456bd235ae64f98a1</id>
<content type='text'>
Appends one metrics row per run to a CSV (header written if file is new):
date, users, MAU/WAU, payments, volume, custody, fee revenue, bolt12
recipients, and per-type volume/txn columns. Notice goes to stderr so it
doesn't pollute the saved stdout report or --json output. Drives the new
monthly snapshot cron (~/scripts/analytics-cron.sh).

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>analytics: monthly insight reports + signup instrumentation</title>
<updated>2026-06-04T06:10:20Z</updated>
<author>
<name>Adam Soltys</name>
<email>adam@coinos.io</email>
</author>
<published>2026-06-04T06:10:20Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=183a3cb03e9ca04a0b1433fa2850a47747de00d6'/>
<id>urn:sha1:183a3cb03e9ca04a0b1433fa2850a47747de00d6</id>
<content type='text'>
scripts/analytics.ts — streams live db (SCAN, never KEYS) and reports for
a trailing window (default 30d): MAU/WAU, new users, custody total + top
holders, network volume by type (lightning/liquid/bitcoin/internal/bolt12/
fund), most-active and highest-volume users, and bolt12 recipients with a
"regular" flag for the Ocean mining-reward stream.

scripts/analytics-geo.ts — top countries from the request log. Counts only
/login + /register events tied to a username (raw cf-ipcountry volume is
dominated by datacenter/nostr traffic). Surfaces a distinct-IP-per-country
column so proxy/VPN egress is visible, and filters a known credential-test
bot IP. Honest result: US #1, then GB/CA/JP/DE/ES/BR.

lib/register.ts — stamp `created` (ms epoch) and store `country` (CF/
ipregistry code) on new users, so future reports get real signup timing and
geography from the db directly instead of log archaeology. Existing users
predate this; backfill is out of scope.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>catch reverse errors</title>
<updated>2026-03-17T05:53:11Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2026-03-17T05:53:11Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=4f4e008cad9a30251926aa060f47583734ce32d2'/>
<id>urn:sha1:4f4e008cad9a30251926aa060f47583734ce32d2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>adjust ln minfee</title>
<updated>2026-03-15T22:49:17Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2026-03-15T22:49:17Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=74af7b1d0922e740c0358dfd131776fd7c877767'/>
<id>urn:sha1:74af7b1d0922e740c0358dfd131776fd7c877767</id>
<content type='text'>
</content>
</entry>
<entry>
<title>handle socket errors</title>
<updated>2026-02-25T20:06:04Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2026-02-10T19:31:36Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=0d76a676e8dba58b42f52d6b8b990bf9954db784'/>
<id>urn:sha1:0d76a676e8dba58b42f52d6b8b990bf9954db784</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tech debt jubilee</title>
<updated>2023-01-09T05:05:34Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2023-01-09T05:05:34Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=dce07aa93b3c2f47aca0c24cea6adde9ec37f1a7'/>
<id>urn:sha1:dce07aa93b3c2f47aca0c24cea6adde9ec37f1a7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>prettier</title>
<updated>2022-09-06T16:20:25Z</updated>
<author>
<name>Adam Soltys</name>
<email>asoltys@gmail.com</email>
</author>
<published>2022-09-06T16:20:25Z</published>
<link rel='alternate' type='text/html' href='https://git.coinos.io/coinos-server.git/commit/?id=c2464b2407ee23134732fd67586758dbfe18f9b5'/>
<id>urn:sha1:c2464b2407ee23134732fd67586758dbfe18f9b5</id>
<content type='text'>
</content>
</entry>
</feed>
