Skip to content

Name packaging artifacts after the tool, not "app" - #28

Merged
jcelerier merged 1 commit into
mainfrom
2026-10
Oct 11, 2026
Merged

jcelerier merged 1 commit into
mainfrom
2026-10

Conversation

@jcelerier

@jcelerier jcelerier commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Part of a six-repo pass standardizing Suite SAT packaging on one convention, with livepose as the reference.

Generic artifact names

spm released under app-* for both the upload and the download pattern. Two problems:

  1. It says nothing about which tool a download is -- every tool in the suite could claim it.
  2. pattern: app-* would silently collect any other artifact in the run whose name starts with app-. That is the same class of mistake that once put a basic Domeport build into a release labelled Pro, just waiting for a second artifact to exist.

Now spm-*, matching the suite convention: <tool>-<platform>, with the release pattern <tool>-*.

Path override shape

The wasm row carried the whole upload path (artifact-path: packages/*.zip) rather than just its file glob. Overriding the path does not compose with a second edition -- one override would point both uploads at the same directory, publishing the basic package under the pro artifact name. The matrix now supplies artifact-file and the upload keeps its own output directory:

path: packages/${{ matrix.artifact-file || '' }}

spm has one edition today; the shape is shared across the suite so it stays correct if a pro build is added.

No pro edition here

spm has a qmlcomponents submodule but does not use InputSourceSelector for a camera-versus-NDI split -- it is an OSC remapper with no video input. Nothing to gate, so it stays single-edition.

Verification

value
upload spm-${{ matrix.artifact-name }}
release pattern spm-* -- matches
filename Spatial-Protocol-Mapper-*

build.yml passes yaml.safe_load. CI is the verification path.

Note: this branch is 2026-10, created from main -- spm was the one repo in the set without a 2026-10 branch, so one was made to keep the five PRs uniform.


The set

One convention across the Suite SAT tools; review these together:

speaker-setup-format-converter needs no change: it is not a score app and has no editions, and its speaker-layout-converter-* uploads already match its speaker-layout-converter-* release pattern.

qmlcomponents is unchanged. It is a git submodule in livepose, DomeportPro and spm, not a vendored copy, so there is one source of truth and no drift. InputSourceSelector is agnostic by contract — the host computes allowedBackends, the widget does the platform filtering — which is exactly what these PRs rely on.

Every Suite SAT tool now follows one packaging convention: artifacts are
named <tool>-<platform> (and <tool>-pro-<platform> where there is a pro
edition), and the release job's download pattern is <tool>-*, which must
match every edition's upload.

spm diverged by using the generic app-* for both, which is a pattern that
would silently collect any other artifact whose name starts with "app-" --
the same class of mistake that once put a basic Domeport build into a
release labelled Pro. A tool-specific prefix makes that impossible.

The wasm row also carried the whole upload path (artifact-path) rather
than just its file glob. Overriding the path does not compose with a
second edition -- one override would point both uploads at the same
directory -- so the matrix now supplies artifact-file and each upload
keeps its own output directory. spm has one edition today; the shape is
shared so it stays correct if a pro build is added.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant