Plan (updated 2026-10-06). The project Safe doesn’t exist on chain yet. The code is ready for it:
- release approvals, in the console, the app and
tools/release;- the
"project"slot infirmware/quorum_cfg.py.Done: the name, picoquorum.eth, is registered from the hardware wallet; the domains picoquorum.app, .com, .org and .dev are bought; the repository is public. What exists today: STATUS.md.
PicoQuorum’s own decisions should go through the same kind of Safe it secures, approved on the same consoles. Those decisions are which releases the project stands behind, who controls its name, and later its website and funds. One Safe holds them. You hold it alone at first, and it is built to be handed over.
One Safe, at the same address on Ethereum and Base.
| Ethereum (canonical) | Base | |
|---|---|---|
| Owns the ENS name | yes | — |
| Approves releases (SignMessageLib), what the app checks | yes | — |
| Day-to-day: test Safes’ gas, small payments, later grants | — | yes |
Owners to start: 2 of 3, three technologies, all yours.
HEGOTA-WATCH.md).EMU-WEB.md) or on a YubiKey. Its owner address
comes from the same factory.Two of three means losing one key costs nothing, and one compromised technology can’t act alone. That’s the rule as owners are added: no technology, and no person, holds a threshold’s worth of keys.
A Safe’s address follows from its factory, singleton, setup data and salt. Use the same four on both chains and you get the same address.
tools/quorum live enroll). A passkey owner’s signature only verifies where its proxy exists.Owners and threshold live separately on each chain. Make every owner change on both chains the
same day. tools/quorum governance check (planned) will read both and report any drift. Until
then, compare the two Safes’ owners and thresholds in the app.
The project Safe approves each release on Ethereum (RELEASES.md, Approval by the project Safe):
tools/release approval prints the transaction: a delegatecall to Safe’s SignMessageLib, with
the release in a short note.isValidSignature(D, "0x") on the Safe says so for good, even after owners
change. The Releases page shows Approved by the project Safe.Setting "project": {"chainId": 1, "address": "0x…"} in firmware/quorum_cfg.py, in a reviewed
commit, is what turns those checks on.
Git tags stay signed by maintainers’ SSH keys (.github/allowed_signers). The tag says who cut a
release. The Safe says the project stands behind it, and the Safe is what people check.
The name is picoquorum.eth, registered from the hardware wallet
0x682De3ad16F47Acd01e97A73f1619be93672a9f3 until 2031-10-06 (STATUS.md).
multicall):
addr: Ethereum = the Safe; Base (coin type 0x80002105) = the Safe.url: the site, https://picoquorum.app.text org.picoquorum.release: the latest approved release and its digest. A convenience
only: the approval itself is on the Safe.contenthash: the IPFS CID of a release’s docs/ build. The site at
picoquorum.eth.limo is then whatever the owners approved, not whatever the server sends.For the console: today a resolver call is a contract call the console can’t decode, so it shows
up red and unread. A firmware item to come: decode setText, setAddr, setContenthash and
multicall on the pinned Public Resolver, so ENS changes are clear-signed like everything else:
Set picoquorum.eth url to ….
| Stage | Owners | Threshold | Who can act |
|---|---|---|---|
| Now | you: Trust M, hardware wallet, passkey | 2 of 3 | you |
| First co-maintainer | + their console key | 2 of 4 | you, or one of yours plus theirs |
| A real quorum | + a second co-maintainer, and a third technology for them | 3 of 5 | no single person |
.github/allowed_signers in a reviewed commit, so they can
cut releases too. Approving releases stays with the Safe.release.yml adds actions/attest-build-provenance for the firmware
zips and the web builds, checked with gh attestation verify. Anyone can also rebuild a tag
and compare BUILD.json.jmcpheron.github.io shares one;The domain is picoquorum.app: the site moves there once its DNS is set, and the project
Safe’s passkey is made there. picoquorum.com, .org and .dev only redirect to it, and
picoquorum.eth.limo comes later, with a contenthash.
.github/workflows/site-check.yml checks it from outside:
docs/ at the commit it deployed;The app’s Releases page says which release the page is, and whether this Safe approved it. With a
public repository, anyone can run tools/release check-site themselves.
quorum_cfg.py "project".RELEASES.md), then approve it from the consoles.