Announce every state another module reads as readable, and refuse a catalogue that does not (issue 774)

The controller grants a read only from the owner's announcement (ADR 0495 clause 3). gitea announced `bound`
unreadable, so mesh-provisioner bound no forge account; disk-load announced `readings` unreadable, refused to restic,
nfs-server and mounts; restic announced `good` unreadable, which the self-check reads. Nothing in the catalogue
compared readers with announcements since the gate's manifest check went (clause 5).

Quick fix: mark those three states readable. Thorough fix: also checks/readable, which reads every owner's Go and
TypeScript announcement and refuses any `reads` of a state it does not announce readable, so the next owner to
announce cannot repeat it. Chose thorough: the same kind hit three owners at once.
Reads of other repositories' owners (mesh-controller.lease, mesh-grants.accounts) are not judged here.
This commit is contained in:
2026-10-30 18:07:53 +01:00
parent bc27189627
commit aec2ed3c24
9 changed files with 450 additions and 10 deletions
+2 -1
View File
@@ -56,7 +56,8 @@ func main() {
case "awake":
counting(b)
case "":
if err := stdio.Keeps(announce.State{Name: health.GoodState}); err != nil {
// Readable: the self-check reads it (its manifest's `reads`); checks/readable holds it.
if err := stdio.Keeps(announce.State{Name: health.GoodState, Readable: true}); err != nil {
say("%v", err)
os.Exit(1)
}