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.
Id-pinned dependencies: publish records the dep target's public_id, install resolves id-first
Phase 2 of the public-id work, split out because it touches the publish/install contract and deserves both your eyes before it ships.
What already shipped (context)
Every page now carries a minted public_id (pg_ + 10 base32 chars, no confusables), backfilled fleet-wide and minted at both insert sites. It is never rewritten: renames and transfers are UPDATE-by-id, and the indexer's conflict SET excludes it. Live today:
- /p/ 301s to the page's CURRENT owner/slug through any number of renames
- pg_ refs work anywhere a bare slug does, API-wide (one branch in resolvePageBySlug, all 56 routes inherit), so the CLI takes them with no release: adom-wiki page delete pg_x --confirm worked on staging the day it shipped
- the sidebar shows the permanent link
Names remain the presentation layer everywhere: URLs, deps, docs. slug_aliases remains the compat layer for name-shaped references.
The proposal: id-pinned dependencies
package.json deps stay exactly as authored (owner/slug, human-written). At PUBLISH, the registry resolves each dep and records the target's public_id alongside the name. At INSTALL, resolution goes id-first, name-fallback.
Effect: a rename can never break the dependency graph. The failure mode this kills is the silent one where a renamed dep keeps working through the alias 301 until someone retires the alias (the redirect-hits flatline gate), at which point installs break long after anyone remembers the rename.
Why now
The while-we're-small argument applies to exactly this: backfilling page ids cost the same at any size, but dep records are append-only history. Every publish that happens before pinning lands is a name-only record someone may need to migrate later. The graph can be id-clean almost from birth if this ships soon.
Open questions for you two
- Where the pin lives: a deps_resolved column on the release row vs a separate table. I lean release-row (immutable snapshot per publish, matches releases being immutable).
- Install fallback semantics when id and name DISAGREE (page deleted + slug reused by someone else): id-first means you get the ORIGINAL page's successor state (a deleted page 404s rather than resolving to a squatter, which reads like the safer default). Name-only today resolves to the squatter.
- Whether the CLI should print the pin (adom-wiki pkg info showing dep -> pg_x) or keep ids invisible until they matter.
- Hard delete: the id dies with the row by design (consistent with hard-delete-is-unrecoverable doctrine). Confirm that is the semantics you want for dep resolution too.