The user list of 2026-10-27 09:21 granted no holder for nine seats: the seeded placements hold only the seats the controller had on record, and the grants part read those holds as every holder (records.go heldWherePlaced). A placement's holds are now the holders on record, as catalogue.World's Holdings are: a mesh seat no placement holds is held by derivation, wherever its claimant is placed. The membership loss guard (Losses) did not cover the user list: after take-over the list that lost those seats went out. UserLosses applies the same guard per user against the loaded list, and holdsBack holds a list that would lose a grant, or whose loaded grants cannot be read, raising the held warning. Quick fix chosen over moving the on-record rule into mesh-sdk: mesh-grants is the only part reading placement holds itself; the others pass them to the catalogue.
327 lines
4.9 KiB
JSON
327 lines
4.9 KiB
JSON
{
|
|
"v": 1,
|
|
"node": "novox",
|
|
"modules": [
|
|
{
|
|
"module": "artifact-store-tools"
|
|
},
|
|
{
|
|
"module": "avahi"
|
|
},
|
|
{
|
|
"module": "ca-trust"
|
|
},
|
|
{
|
|
"module": "claude-code"
|
|
},
|
|
{
|
|
"module": "claude-licence-manager"
|
|
},
|
|
{
|
|
"module": "dbus"
|
|
},
|
|
{
|
|
"module": "de-spiegel"
|
|
},
|
|
{
|
|
"module": "desk-channel"
|
|
},
|
|
{
|
|
"module": "dev-tools"
|
|
},
|
|
{
|
|
"module": "disk-load"
|
|
},
|
|
{
|
|
"module": "distribution"
|
|
},
|
|
{
|
|
"module": "dnsmasq"
|
|
},
|
|
{
|
|
"module": "docker"
|
|
},
|
|
{
|
|
"module": "fail2ban"
|
|
},
|
|
{
|
|
"module": "gitea"
|
|
},
|
|
{
|
|
"module": "go"
|
|
},
|
|
{
|
|
"module": "hostname"
|
|
},
|
|
{
|
|
"module": "invoicing"
|
|
},
|
|
{
|
|
"module": "kernel"
|
|
},
|
|
{
|
|
"module": "keycloak"
|
|
},
|
|
{
|
|
"module": "link2pay"
|
|
},
|
|
{
|
|
"module": "localization"
|
|
},
|
|
{
|
|
"module": "logrotate"
|
|
},
|
|
{
|
|
"module": "mailu"
|
|
},
|
|
{
|
|
"module": "mesh-build-go"
|
|
},
|
|
{
|
|
"module": "mesh-build-node"
|
|
},
|
|
{
|
|
"module": "mesh-catalog"
|
|
},
|
|
{
|
|
"module": "mesh-cli"
|
|
},
|
|
{
|
|
"module": "mesh-config"
|
|
},
|
|
{
|
|
"module": "mesh-controller"
|
|
},
|
|
{
|
|
"module": "mesh-delivery-checker"
|
|
},
|
|
{
|
|
"module": "mesh-delivery-forge-bridge"
|
|
},
|
|
{
|
|
"module": "mesh-delivery-gate"
|
|
},
|
|
{
|
|
"module": "mesh-delivery-indexer"
|
|
},
|
|
{
|
|
"module": "mesh-delivery-teller"
|
|
},
|
|
{
|
|
"module": "mesh-delivery-watchman"
|
|
},
|
|
{
|
|
"module": "mesh-files"
|
|
},
|
|
{
|
|
"module": "mesh-grants"
|
|
},
|
|
{
|
|
"module": "mesh-host"
|
|
},
|
|
{
|
|
"module": "mesh-issues"
|
|
},
|
|
{
|
|
"module": "mesh-knowledge"
|
|
},
|
|
{
|
|
"module": "mesh-mail"
|
|
},
|
|
{
|
|
"module": "mesh-mail-reader"
|
|
},
|
|
{
|
|
"module": "mesh-mail-web"
|
|
},
|
|
{
|
|
"module": "mesh-provisioner"
|
|
},
|
|
{
|
|
"module": "mesh-provisioner-client"
|
|
},
|
|
{
|
|
"module": "mesh-reads"
|
|
},
|
|
{
|
|
"module": "mesh-vault"
|
|
},
|
|
{
|
|
"module": "mesh-wireguard"
|
|
},
|
|
{
|
|
"module": "messenger"
|
|
},
|
|
{
|
|
"module": "minio"
|
|
},
|
|
{
|
|
"module": "mongodb"
|
|
},
|
|
{
|
|
"module": "mssql"
|
|
},
|
|
{
|
|
"module": "nats"
|
|
},
|
|
{
|
|
"module": "netcheck"
|
|
},
|
|
{
|
|
"module": "nextcloud"
|
|
},
|
|
{
|
|
"module": "nftables"
|
|
},
|
|
{
|
|
"module": "node-env"
|
|
},
|
|
{
|
|
"module": "node-tools"
|
|
},
|
|
{
|
|
"module": "nodejs"
|
|
},
|
|
{
|
|
"module": "only-office"
|
|
},
|
|
{
|
|
"module": "pacman"
|
|
},
|
|
{
|
|
"module": "photos"
|
|
},
|
|
{
|
|
"module": "postgres"
|
|
},
|
|
{
|
|
"module": "power"
|
|
},
|
|
{
|
|
"module": "powerlevel10k"
|
|
},
|
|
{
|
|
"module": "records"
|
|
},
|
|
{
|
|
"module": "restic"
|
|
},
|
|
{
|
|
"module": "route-proxy"
|
|
},
|
|
{
|
|
"module": "ssh-client"
|
|
},
|
|
{
|
|
"module": "sshd"
|
|
},
|
|
{
|
|
"module": "step-ca"
|
|
},
|
|
{
|
|
"module": "sudo"
|
|
},
|
|
{
|
|
"module": "systemd"
|
|
},
|
|
{
|
|
"module": "systemd-networkd"
|
|
},
|
|
{
|
|
"module": "telegram"
|
|
},
|
|
{
|
|
"module": "time-sync"
|
|
},
|
|
{
|
|
"module": "umami"
|
|
},
|
|
{
|
|
"module": "website"
|
|
},
|
|
{
|
|
"module": "zsh"
|
|
},
|
|
{
|
|
"module": "zsh-autosuggestions"
|
|
},
|
|
{
|
|
"module": "zsh-syntax-highlighting"
|
|
}
|
|
],
|
|
"holds": [
|
|
{
|
|
"claim": "git",
|
|
"scope": "mesh",
|
|
"module": "gitea",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-artifact-store",
|
|
"scope": "mesh",
|
|
"module": "distribution",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-broker",
|
|
"scope": "mesh",
|
|
"module": "nats",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-catalog",
|
|
"scope": "mesh",
|
|
"module": "mesh-catalog",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-config",
|
|
"scope": "mesh",
|
|
"module": "mesh-config",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-controller",
|
|
"scope": "mesh",
|
|
"module": "mesh-controller",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-delivery",
|
|
"scope": "mesh",
|
|
"module": "mesh-delivery-gate",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-dns-resolver",
|
|
"scope": "mesh",
|
|
"module": "dnsmasq",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-provisioner",
|
|
"scope": "mesh",
|
|
"module": "mesh-provisioner",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-store",
|
|
"scope": "mesh",
|
|
"module": "postgres",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "mesh-vault",
|
|
"scope": "mesh",
|
|
"module": "mesh-vault",
|
|
"site": "hosting"
|
|
},
|
|
{
|
|
"claim": "npm-package-registry",
|
|
"scope": "mesh",
|
|
"module": "gitea",
|
|
"site": "hosting"
|
|
}
|
|
]
|
|
}
|