← Commit history

record the publish learnings: runtime-only zip payload rule (16.7MB->456KB) + brief-vs-description field split (Install card is not a README)

John Lauer ·950b6f5f7d ·3mo ago ·parent 7ec87dc
2 files changed +67
PUBLISHING.md+45
@@ -50,6 +50,29 @@ print("sha256:", hashlib.sha256(open(out,"rb").read()).hexdigest(), "size:", os. # sanity: confirm your change is inside, e.g. zipfile.ZipFile(out).read('server.py') ``` +### The zip is RUNTIME ONLY (16.7 MB -> 456 KB, learned the hard way 2026-07-17)++Do NOT zip `git ls-files` wholesale. That sweeps in everything that belongs on the PAGE - hero+images, screenshots, demo MP4s, architecture diagrams, long docs - and streams it to EVERY user's+machine on `bridge_install`. v1.6.76 shipped 16.7 MB of which **15.3 MB was media**. Runtime-only+rebuild: **456 KB, 97% smaller, zero functional change.**++Build from `git ls-files` MINUS media:++```python+EXCLUDE_EXT = {'.mp4','.png','.jpg','.jpeg','.gif','.svg','.webm','.zip'}+files = [f for f in git_ls_files()+         if os.path.splitext(f)[1].lower() not in EXCLUDE_EXT+         and not f.startswith('screenshots/')]+```++Keep: `server.py`, `aps.py`, `describe.py`, `handlers/`, `addin/`, `resources/`, text `skills/`,+manifests. **Sanity threshold: a bridge runtime zip is well under 1 MB. If yours is bigger, LIST+ITS CONTENTS before uploading** - something non-runtime is inside.++The same rule applies to the **pkg tarball**: keep `page.json` `files[]` a text-only whitelist+(`SKILL.md`, `skills/**`, install scripts). Never a broad glob that catches images.+ ## Step 3 - publish the zip as a RELEASE asset  ```bash@@ -119,8 +142,30 @@ repo-root READMEs into the skill folder before building the zip**, rewriting the wiki URLs (`https://wiki.adom.inc/<org>/<slug>/files/<img>.png`). Otherwise the bundled copy drifts from the canonical root copy. (See the `fusion-bridge-dev` skill, "Bundle deep READMEs INTO each skill".) +## page.json: `brief` vs `description` (they render in DIFFERENT places)++The wiki renders these two fields in two very different spots, and mixing them up makes the Install+card read like a README (done it, got told off):++| Field | Renders as | Content |+|---|---|---|+| `brief` | the **page header** one-liner under the title | WHAT THE BRIDGE DOES - the feature copy |+| `description` | the **Install card body**, right above the `pkg install` command | ONLY what `pkg install` gives you |++Correct `description` for any bridge is ~2 sentences, no feature list:++> "Installs this bridge's skills into your container so your AI knows how to drive the bridge. The+> bridge runtime itself is loaded by Adom Desktop from the release zip."++That sentence also does real work: it tells users the package is **not** the bridge. See+adom/adom-desktop issues #20 and #21 for the SDK-wide asks (state the pkg-vs-runtime split on every+bridge page; lint release/pkg payloads for media bloat).+ ## Pitfall checklist (the short version) +- **Zip is runtime-only** - no mp4/png/svg/screenshots. Over ~1 MB? list contents before uploading.+- **`description` = what pkg install does** (2 sentences). Feature copy goes in `brief`.+ - `.zip` -> `release upload`, never `repo push` (gitignored + silently skipped). - Manifest JSON -> `repo push`; its `url` is the **release download URL**, not `/files/`. - `sha256`/`size` must match the **served** asset (re-download to confirm).
skills/fusion-bridge-dev/SKILL.md+22
@@ -327,3 +327,25 @@ never in the installer. Build the zip with the runtime whitelist (git ls-files M .mp4/.png/.jpg/.svg/.gif/.webm/.zip and screenshots/): server.py, aps.py, describe.py, handlers/, addin/, resources/, skills/ (text), manifests. Result: 456 KB. If the zip is over ~1 MB, something wrong is inside - list its contents before uploading.++## page.json `brief` vs `description` - they render in DIFFERENT places++The wiki puts these two fields in two different spots, and confusing them turns the Install card+into a README (John: "stop trying to turn that into a mine readme"):++- **`brief`** -> the **page-header one-liner** under the title. This is where the FEATURE COPY goes+  (what the bridge does: libraries, exports, APS search, modeling...).+- **`description`** -> the **Install card body**, directly above the `adom-wiki pkg install` command.+  This must say ONLY what the package install gives you. ~2 sentences. No feature list.++The canonical bridge `description`:++> "Installs this bridge's skills into your container so your AI knows how to drive the bridge. The+> bridge runtime itself is loaded by Adom Desktop from the release zip."++It matters beyond tidiness: users and AIs assume `pkg install` installs the BRIDGE. It does not - it+installs SKILLS into the container. The runtime is the release zip that AD streams via+`bridge_install`. Say that in the Install card, once, plainly.++Filed as SDK-wide asks on adom/adom-desktop: **#20** (every bridge page must state the pkg-vs-runtime+split) and **#21** (document + lint keeping the release zip and pkg tarball free of media bloat).