Regenerate the configuration page after editing its source

🔴 The exact trap this repo already documented. `docs/CONFIGURATION.md` gained
two rows for the proof-of-work settings and `configuration.leaf` is GENERATED
from it — the page is what people read; the markdown is not served. The
doc-pages gate caught it, which is what it is for.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Paul Hitt
2026-09-07 09:39:58 -04:00
co-authored by Claude Opus 5
parent 01625a6cbb
commit a068786445
+28 -1
View File
@@ -3,7 +3,7 @@
<!-- GENERATED by Scripts/build-doc-pages.sh from docs/CONFIGURATION.md.
Edits made HERE are deleted the next time that script runs.
Change the markdown source and re-run it.
source-sha256: e7df9a44b7dc7de3 -->
source-sha256: d8399ab5e51fe535 -->
<article class="band doc doc-generated">
<div class="wrap wrap-narrow">
<h1 id="configuring-a-relay">Configuring a relay</h1>
@@ -314,6 +314,33 @@ network, and refusing them is the worse failure. <strong><code>0</code>
switches network counting off</strong>, leaving only the per-address
limit.</td>
</tr>
<tr>
<td><code>FN_SIGNUP_POW_BITS</code></td>
<td><code>0</code> (off)</td>
<td>Leading zero bits of SHA-256 work a new account must do before it is
created (relay#("#")52). ⚠️ <strong>Not a CAPTCHA on purpose</strong> — a
CAPTCHA hands a third party every visitor's connection, which is a
strange thing for a product whose argument is that it collects almost
nothing. This collects nothing at all. Capped at <code>24</code> however
it is set: higher does not read as spam protection to the person it
hits, it reads as an app that hangs on the sign-up button.</td>
</tr>
<tr>
<td><code>FN_SIGNUP_MAX_PER_HOUR_WITHOUT_POW</code></td>
<td><code>5</code>/hr</td>
<td>What a client too old to answer the challenge gets instead, per
address. 🔴 <strong>This is what makes <code>FN_SIGNUP_POW_BITS</code>
switchable on at all.</strong> Refusing an unanswered sign-up outright
would break every build already in somebody's hand, and break it
invisibly — the APK in the field is Android 0.6 (2026-08-31) and the
client-side solver landed 2026-09-01, one day later. An old build now
drops to this strict allowance rather than hitting a wall, so the
opt-out costs something without stranding anyone. ⚠️ Per-address is
trivially rotated, so this bounds a lazy attacker, not a determined one;
the gain is that the strong thing can be enabled at all.
<strong><code>0</code> restores the wall</strong> — the right setting
once both shipped clients solve challenges.</td>
</tr>
</tbody>
</table>
<p>| <code>FN_VOUCH_REQUIRED</code> | <code>false</code> | Require an