← Commit history

Publish 0.23.3

Colby Knox ·4360e0c984 ·14d ago ·parent f073c24
4 files changed +25−24
SKILL.md+9−10
@@ -67,16 +67,15 @@ this call, so the attestation a batch hero carries is your record, not an enforced one; keep the human in the loop anyway.  Generation is local (no wiki calls, no rate limits). Publishing is rate-limited PER signed-in account over a sliding one-minute window: pkg-publish 30/min, repo push 60/min, page hero (POST .../hero) 20/min, page-edit (PUT: title, brief, tags, source) 10/min, page create 10/min, history-reads (repo log) 600/min (60 anonymous). Existing pages: repo push + page-hero, so page hero binds at 20 parts/min (3 s apart). New pages: pkg-publish alone creates the page (the reference script never calls page-create), so 30/min (2 s apart). A part whose part.json has `source` also-gets `page edit --source`, which binds at 10/min (6 s apart). The reference-script picks that pace per part from the path it takes (`--pace <s>`-overrides). A 429 returns `{"error":"Rate limit exceeded","retry_after":N,+limited PER signed-in account over a sliding one-minute window; the full+table is in the `wiki-publish-safely` skill (adom/adom-wiki-skillpack).+What binds here: existing pages make a repo push (60/min) and a page hero+(20/min), plus a page edit (20/min) when part.json has `source`, so 20+parts/min (3 s apart). New pages make a pkg publish alone (30/min; it+creates the page, the reference script never calls page create, which is+10/min), so 2 s apart, or 3 s when a `source` page edit follows. The+reference script picks that pace per part (`--pace <s>` overrides). A 429+returns `{"error":"Rate limit exceeded","retry_after":N, "code":"RATE_LIMITED"}` plus a Retry-After header; wait that long, then back off. You do not have to write the loop: a complete runnable reference ships with this package at docs/bulk-publish-reference.mjs
docs/bulk-publish-reference.mjs+14−12
@@ -29,21 +29,22 @@    force the update path, --new to force publish; the default probes each    page once (`adom-wiki page stats`, a read). -   Rate limits (wiki, 2026-10-06): sliding 60-second window PER signed-in-   account.+   Rate limits (wiki, 2026-10-06; the full table lives in the+   wiki-publish-safely skill of adom/adom-wiki-skillpack): sliding+   60-second window PER signed-in account.      pkg publish            30/min      repo push              60/min      page hero (POST)       20/min-     page edit (PUT)        10/min   title/brief/tags/source+     page edit (PUT)        20/min   title/brief/tags/source      page create (POST)     10/min   this script never calls it      history reads (log)   600/min   (60 anonymous)-   Existing page = repo push + page hero, so page hero binds: 20 parts/min,-   3 s apart. New page = pkg publish only (it creates the page itself; no-   separate page create call): 30/min, 2 s apart. A part whose part.json-   has "source" also gets `page edit --source`, which binds at 10/min, so-   that part paces 6 s. The default pace is picked PER PART from the path it-   takes; --pace <s> overrides it for every part. 300 existing pages take-   about 15 minutes, 300 new pages about 10.+   Existing page = repo push + page hero (+ page edit when part.json has+   "source"): 20 parts/min, 3 s apart. New page = pkg publish alone (it+   creates the page itself; no separate page create call): 30/min, 2 s+   apart; with "source" it also makes a page edit, so 3 s. The default+   pace is picked PER PART from the path it takes; --pace <s> overrides it+   for every part. 300 existing pages take about 15 minutes, 300 new pages+   about 10.    A 429 carries {"error":"Rate limit exceeded","retry_after":N,    "code":"RATE_LIMITED"} plus a Retry-After header; this script honors    whichever the CLI printed (body, header, or its RATE_LIMITED hint's@@ -71,8 +72,9 @@ if (!PARTS || !STYLE || !HUMAN || !QUOTE) { const AI_THREAD = process.env.ADOM_AI_THREAD || 'hardware bulk publish'; const sleep = (s) => new Promise((r) => setTimeout(r, s * 1000)); // Seconds between parts, from the write that binds on the path taken (see-// the rate table above), unless --pace overrides it.-const paceFor = (existing, meta) => PACE !== null ? PACE : meta.source ? 6 : existing ? 3 : 2;+// the rate table above), unless --pace overrides it: page hero and page+// edit (20/min) bind at 3 s; pkg publish alone (30/min) at 2 s.+const paceFor = (existing, meta) => PACE !== null ? PACE : existing || meta.source ? 3 : 2; // A 429's wait, in whatever form the CLI printed it: the JSON body's // retry_after, the Retry-After header, or the RATE_LIMITED hint's // "wait Ns and retry".
package.json+1−1
@@ -2,7 +2,7 @@   "slug": "hero-studio",   "title": "Hero Studio",   "type": "app",-  "version": "0.23.2",+  "version": "0.23.3",   "description": "The hero-image lab with a human gate: `hero-studio pose <owner/slug>` opens the studio in front of the human, posed for their package, and blocks until they click Generate, producing the provenance-stamped 2000x1250 PNG the registry's hero gate requires. The image carries the title and artwork; the exported image also bakes the type pill (top right) and full wiki slug (bottom right); the page shows the hero bare, and only the homepage marquee overlays its own dynamic info. Every hero wears its PAGE OWNER's brand guide (<owner>/brand): colors, type, logo and background themes, Adom's included; an unresolved guide holds unbranded rather than borrowing Adom's look. Placement is fixed for all. The floating app window is the showcase: it auto-loads a real screenshot from the package's wiki page (screenshots/, docs/), takes a manual import, or a full-hero import (the human-ratified re-stamp path for existing heroes). The pose gate opens in verification mode: per-item checklist (title, subtitle, showcase, type match) and a Generate that unlocks only fully confirmed. Includes showcase bleeds, brand tile themes, gradient angles, pixel-faithful wiki marquee and index-card previews, and a component-hero mode with a photo/raytrace/phong fallback ladder.",   "license": "MIT",   "tags": [
page.json+1−1
@@ -2,7 +2,7 @@   "slug": "hero-studio",   "title": "Hero Studio",   "type": "app",-  "version": "0.23.2",+  "version": "0.23.3",   "description": "The hero-image lab with a human gate: `hero-studio pose <owner/slug>` opens the studio in front of the human, posed for their package, and blocks until they click Generate, producing the provenance-stamped 2000x1250 PNG the registry's hero gate requires. The image carries the title and artwork; the exported image also bakes the type pill (top right) and full wiki slug (bottom right); the page shows the hero bare, and only the homepage marquee overlays its own dynamic info. Every hero wears its PAGE OWNER's brand guide (<owner>/brand): colors, type, logo and background themes, Adom's included; an unresolved guide holds unbranded rather than borrowing Adom's look. Placement is fixed for all. The floating app window is the showcase: it auto-loads a real screenshot from the package's wiki page (screenshots/, docs/), takes a manual import, or a full-hero import (the human-ratified re-stamp path for existing heroes). The pose gate opens in verification mode: per-item checklist (title, subtitle, showcase, type match) and a Generate that unlocks only fully confirmed. Includes showcase bleeds, brand tile themes, gradient angles, pixel-faithful wiki marquee and index-card previews, and a component-hero mode with a photo/raytrace/phong fallback ladder.",   "license": "MIT",   "tags": [