Adom Wiki CLI
Public Made by Adomby adom
The Adom Wiki CLI: publish and install packages with verified signatures, cut releases, open PRs and discussions, and discover and administer the wiki, all from your terminal. Replaces adompkg.
Stage 3 wire rename + kind axis + page-edit route: the full contract (adom/wiki#111)
The hardware taxonomy (adom/wiki#111) is done on the wiki side and staged: kinds, per-kind categories, the /hardware browse, per-kind metadata, and a full prod data cleanup. Prod ships once stage 3, the wire rename, lands in lockstep with you. This is the complete contract, everything already live on staging (https://helium.stg.adom.internal).
1. The wire rename (stage 3, the coordinated part)
The component page type becomes hardware on the wire. Sequencing mirrors the earlier drain gates:
- Server side (lands on staging next): every place that accepts
type: "component"on WRITE (create, page.json at index, search and filter params) also accepts"hardware"as a synonym, forever. - CLI side, phase 1 (your ack): treat
componentandhardwareas synonyms on READ everywhere (labels, filters, table rendering, type checks). Ship it and tell us the version. - Server side, phase 2: once sub-that-version traffic drains, response
typeflips to"hardware".componentstays accepted on write permanently, so nothing old ever breaks on send; only readers that string-matchtype === "component"would break, which phase 1 removes. - URLs: /hardware is canonical; /components 301s with query preserved (already live). Any CLI-printed web links should say /hardware.
- CLI phase 3 (whenever): emit
"hardware"on create and scaffold.
2. The kind axis (already on the wire since stage 1)
- Pages carry
kind:component | molecule | project | equipment(nullable;boardis accepted on write as an alias forproject). - Surface kind in
page get/ listings; hardware scaffolds should offer it. Semantics: component = purchasable part, molecule = Adom-built module (scaffolds are molecules), project = factory scaffold layout designed in the 3D editor, equipment = factory gear. - Projects need no MPN: the server derives the display identifier from the slug (COSMIIC-IMPLANTABLES style). If the CLI lints manifests locally, mirror the exemption: kind project or board skips the component.mpn requirement.
- Projects must ship at least one layout JSON (the 3D editor molecules-and-wires shape); the server warns PROJECT_MISSING_LAYOUT otherwise.
3. New hint codes (passthrough only, no release needed, listed for your docs)
KIND_MISSING (hardware page with no kind), TAG_IS_A_CATEGORY, CATEGORY_NONCANONICAL (carries data.canonical, the valid list for the page's kind; molecules are exempt, their categories are free-pick), PROJECT_MISSING_LAYOUT. Existing codes unchanged.
4. New route, shipped for hero-studio's Apply (your ask, closed)
PATCH /api/pages/{owner}/{slug} is live on staging: body {title?, brief?, tags?, changelog?} under normal page auth (author, org member, or admin). It merges into page.json, commits with the changelog string as the commit message (changelog never enters the manifest), and reindexes in one call, so gate-time edits no longer stash for the next publish. PUT on the same path is a synonym; malformed tags 400; wrong owner is a uniform 404. Suggested verb: adom-wiki page edit <owner>/<slug> --title --brief --tag --changelog.
5. One bug report for you
adom-wiki config set-insecure true is rejected by clap (unexpected positional), and the bare no-arg form sets false, so there is no way to turn insecure ON from the CLI; we script around it by writing config.json directly. A --value true|false or an explicit set-insecure <BOOL> positional would fix it.
6. Staging test recipe
- Point at staging: registry_url https://helium.stg.adom.internal, insecure true (see the bug above; edit ~/.config/adom-wiki/config.json directly), your normal token works.
- The corpus is real: 145+ hardware pages already classified into kinds with canonical categories, so filters and listings exercise everything.
- Suggested matrix: create a hardware page declaring each kind; create a project with no component block (should pass, identifier derived); publish a project without a layout (expect PROJECT_MISSING_LAYOUT warn); PATCH title/brief/tags with a changelog and confirm the commit message; filter and list by both type spellings once the synonym lands; confirm printed links say /hardware.
- Cleanup: DELETE the throwaway pages (soft) when done.
Sequencing ask: reply here with the CLI version that ships phase 1 (read-synonym + kind surfacing + the page edit verb if you take it), and we schedule the emission flip behind a drain gate on that version, same as 1.0.78/1.0.81.