feat(ci): packaging, release and the frozen manifest #2
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/phase-2-packaging"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 2 of
docs/modules/rust/PLAN.md— packaging and release.Phase 1 built five guards and ran them by hand. This repo had no
.gitea/workflows/at all, so nothing gated the branch that gets released and there was no way to release it. This adds both halves.What is here
.gitea/workflows/release.ymllink,installerandModule-uoalready run — assembles the bundle, publishes the tarball, the install manifest with itssha256, andSHA256SUMS.gitea/workflows/pr-checks.ymlcheck:imports·check:bundle·check:swagger· client build · client tests ·check:externals· frozen-manifestci/bundle.jsonci/core-ref.jsonefa9db7,main@ MODULE_API 1.10.0server/scripts/checkBundle.jsserver/scripts/frozenManifest.jsroutes.manifest.jsonThe frozen manifest already paid for itself
It was run locally against the pinned ref before being committed: six routes, all documented, no core route removed or changed.
That is the first time a running core has confirmed
/rustcollides with nothing. Phase 1 could only check it by reading — §13's own registration comment says so — because core answers several public routes mounted at the tier root (/status,/version) that the loader's collision probe cannot see. From here, a core answers it on every PR.The bundle ships no
node_modulesThe shipped half declares no runtime dependencies; everything it needs arrives on
ctx. So the release runs nonpm ciand packs no dependency tree (org lead decision, phase 2). The whole value of that is the day it stops being true being a loud day, socheckBundle.jsholds both halves: the include list still covers everythingserver/index.jsreaches, and nodependenciesentry has appeared without the release learning to pack it.Verified by breaking it — dropping
"model"from the list:Module-uo's v1.0.0 is why this exists:
server/commands/arrived in a cutover, the include list did not learn about it, and the module installed and then died at the register stage on the operator's box. This module has the check from its first release rather than after its first outage.Checked locally
npm test --prefix server— 72 → 88 passing (16 new across the two scripts)check:imports,check:bundle,check:swagger— greenAssemble the bundlestep, run step-for-step withnodestanding in forjq: bundle contents check ok, every relative require in the tarball resolves, 38,997 bytes, 30 entries, nonode_modules, no tests, noclient/src, noci/One prerequisite this PR cannot satisfy
release.ymlneeds the Actions secretREGISTRY_TOKEN(a Gitea token withwrite:repository) onRunicGateway/Module-Rust. The bot account cannot read or set repo secrets, so I could not confirm whether it is already there. The workflow checks for it before it builds or tags anything and fails with a named error if it is missing — deliberately, because the failure it is avoiding is a tag pushed and a release that 401s, which is the stateservuo-pluginsgot stuck in.The phase's acceptance criterion — an operator installs the module from Admin → Modules and it reaches
started— needs a published release, so that is the next step once this merges.🤖 Generated with Claude Code
https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4