Adom Wiki
Public Made by Adomby adom
How the Adom Wiki (wiki.adom.inc) works and how to drive it with the adom-wiki CLI: the two storage layers (git page repo vs package registry), hosting source by pushing files (not a tarball), making packages, cutting per-platform releases, and the three-tier skill layout (user skills ship, dev-skills/ and publish-skills/ stay source-only). adom-wiki is the current tool; adompkg is deprecated. Read this first before publishing or installing.
Renamed packages fail signed installs: the seal binds the publish-time slug, resolve serves the current one
Found while building the #153 pin arm; pre-existing, unrelated to pins except that the pin recovery path is the first flow that systematically installs renamed packages.
Mechanism
The Ed25519 seal is minted at publish over the payload:
adompkg-sig-v1
<owner>/<slug>@<version>
<integrity>
with the slug AS OF PUBLISH. repo rename moves the repo and release store to the new slug, and /api/packages/resolve then serves the CURRENT slug in resolved rows. The CLI reconstructs the payload from that row (crypto.rs sig_payload), so verification fails for every release published before the rename:
signature verification FAILED for kcknox/[email protected]: refusing to install
Reproduction (staging, throwaways now deleted)
- Publish kcknox/[email protected] (sealed fine, installed fine).
- adom-wiki repo rename kcknox/ztest-pin36h ztest-pin36h-moved.
- Fresh adom-wiki pkg install kcknox/ztest-pin36h-moved -> integrity passes, signature FAILS, install refused.
Blast radius: any page with signed releases that gets renamed loses fresh installability under its new name (fail-closed, so hard-refused; --allow-unsigned is the only escape). Existing installs keep working; it bites new installs and CI replays.
Suggested fixes (either closes it)
- Re-seal on rename: the seal is the registry's (server-held key, per-publisher signing is #85), so rename can re-sign each release row's payload with the new slug in the same transaction that moves the release store. Cleanest; nothing changes client-side.
- Serve the signed name: resolve rows (and the assets/manifest routes) carry signed_as: "/" and the CLI verifies against that instead. Needs a CLI release and keeps a growing alias surface, so option 1 seems strictly better.
CLI side: nothing shipped that depends on this; the DEPS_PIN_DIVERGED/MOVED recovery (pkg install pg_...) resolves the id to the current name client-side and then hits this wall for renamed targets, so option 1 also makes that recovery fully runnable.