Skip to content

B-JKXY-arm-the-outbound-publish-channel-and-cut-the-first-library

The repo side of the snapshot-mirror channel is complete and merged; everything remaining is account-level and cannot be done from inside the repo. The channel has never been armed for ANY library — intersect piloted the pattern but has never published either.

  • publish-libs.json is the roster; publish-lib.yml resolves against it with jq and triggers on the generic */v*; release-lib.ts imports it.
  • Six libraries declared: intersect, agent-call, command-seam, easy-git-ts, dir-aspect, markdown-util. Each has a LICENSE, a mirror release.yml, and (for TS) tsconfig.build.json with rewriteRelativeImportExtensions.
  • Snapshot assembly carries tsconfig.base.json into the stage and repoints the extends, then install/build/tests the stage standalone.
  1. Mirror repos. Create sksizer/command-seam and sksizer/easy-git-ts as public. Flip sksizer/agent-call from private to public. (sksizer/intersect, sksizer/rust-dir-aspect, sksizer/rust-markdown-util already exist.)
  2. OSS_PUBLISH_TOKEN. A fine-grained PAT over the mirror repos with Contents R/W and Workflows R/W — the snapshot contains .github/workflows/, which a contents-only token cannot push. Store as an Actions secret on sksizer/dev. Until it exists, a tag push validates and assembles, then skips the push with a message.
  3. Registry auth per mirror. npm trusted publishing (repo + release.yml) is preferred; a temporary NPM_TOKEN on the mirror is the bootstrap path for a package that does not exist yet.
  4. Rehearse. gh workflow run publish-lib -f lib=<lib> runs validation and snapshot assembly and never pushes. Worth doing per library before the first real tag.
  5. Cut releases. just release-lib <lib> patch --push. Order matters: command-seam before easy-git-ts, because the standalone snapshot build installs outside the monorepo and resolves @sksizer/command-seam from the registry. Declared as needs on the roster, which today logs a notice rather than enforcing an order.

GitHub Actions billing failed 2026-08-29 through 2026-09-01, so no workflow ran at all. That is resolved. The channel is a GitHub Actions workflow, so arming it during the outage would have produced a confusing dead end.


← Back to Backlog