aboutsummaryrefslogtreecommitdiffstats
path: root/docs/access.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/access.md')
-rw-r--r--docs/access.md37
1 files changed, 35 insertions, 2 deletions
diff --git a/docs/access.md b/docs/access.md
index 5941bdb..9bd99cc 100644
--- a/docs/access.md
+++ b/docs/access.md
@@ -380,8 +380,11 @@ API changes nothing (`409`). Values there before the policy stay as they are unt
replaced: a registry whose entries hold the users' keys turns strict as it is. As it is
means trusted as it is: whatever entries, policy and bans it holds then count, plain
values and envelopes alike, checked or not, whoever wrote them before (under a policy
-that isn't strict, a member may write as any user). Look them over before turning
-strict (`continuum-signed verify` on each entry). A value there that isn't an envelope
+that isn't strict, a member may write as any user). So a swarm is best strict from its
+start (`--bootstrap-keys`, A new swarm, above); one already running turns strict
+through a remake (Turning a swarm strict, below), which keeps only what an operator
+looked over. Writing the strict policy into it directly trusts it as it is: look it
+over first (`continuum-signed verify` on each entry). A value there that isn't an envelope
starts its chain anew: any envelope its user once signed for that path replacing
nothing (`prev` empty) can be put there again. Without the policy, signed values may
be written all the same, and plain ones too.
@@ -397,6 +400,36 @@ replacing or deleting what holds one (a map made where there is none yet is fine
a member writing to its document directly gets nothing there past the others: the
registry, the policy and the bans change only as a user who may change them signed.
+### Turning a swarm strict
+
+A running swarm turns strict through a remake of its own kind, `strict`: compaction
+that keeps, at the places values are signed (the registry, `_continuum/access`, the
+bans, the paths listed in `userSigned`), only the values an operator looked over and
+signed, and sets the strict policy. What was written after its base reaches the new
+epoch only by replays, which every node judges by the strict policy: a value planted
+before, plain or signed by a key its planter put there itself, is gone unless the
+operator kept it.
+
+Every node is given the keys whose signature it takes on such a remake, out of the
+document (`--strict-keys`, `authorized_keys` lines): one an operator holds. A node
+votes for a strict remake only with its manifest signed by one of them; without any,
+it votes for none (logged, `Not voting for a strict remake`), unless
+`--follow-strict-remakes`. Once a majority commits one, every node switches, as with
+any remake.
+
+```sh
+continuum-signed strict
+```
+
+shows the values it would keep (`GET /admin/strict-manifest`: every value at a signed
+place now, by its digest, and the policy with `"values": "signed"`), signs the
+manifest once confirmed (`ssh-keygen -Y sign -n continuum-strict`, with a key of
+`--strict-keys`), and proposes the remake at the heads it was made at (`{"kind":
+"strict", "spec": {"manifest": "<its line>\n<its signature>"}, "baseHeads": […]}`). To
+keep less, take the manifest from `GET /admin/strict-manifest`, leave out of its `keep`
+what should go, and sign that instead. Reading it needs reading `_continuum`, proposing
+writing `_continuum/remakes`.
+
## Values sealed for their readers
Anyone may read the whole document: every member holds it. A value only some may read