Skip to content

synchronize_mip_package.py's PROFILE_REPOSITORIES still hardcodes audioinstruments/audioeffects to audioif, blocking their MIP publication from audiocomponents #35

Description

@bdbarnett

What's blocked

audiocomponents v0.2.0 is the first release of audioinstruments and
audioeffects from their new home (the audioif/audiocomponents split,
audiocomponents#2). The board session repointed pydevices-lock.json on
PyDevices/mip's PyDevices branch to name PyDevices/audiocomponents at
v0.2.0 for both entries (commit f94ef5e9), which is the fix
reusable-synchronize-mip-package.yml's own "Record this release in the
lockfile" step is designed to require.

That was not enough. Both queued publication runs still fail identically,
before and after the lockfile fix and after a rerun of each:

  • audioinstruments: run 33814552433 — failure (rerun after the lockfile fix, same result)
  • audioeffects: run 33814552790 — failure (rerun after the lockfile fix, same result)

Both fail with:

profile 'audioinstruments' requires PyDevices/audioif, not PyDevices/audiocomponents
##[error]Process completed with exit code 1.

(The audioeffects run hits the same line because "Synchronize every locked
source" iterates every profile in the lockfile, alphabetically, and dies on
audioinstruments first regardless of which profile was actually
dispatched.)

Root cause

This check is not lockfile-driven. scripts/synchronize_mip_package.py
(fetched by reusable-synchronize-mip-package.yml into
.pydevices-publishing-tools, at whatever tag publishing-tools-ref
resolves to — publishing-v6 by default, since PyDevices/mip's
process-mip-publication-request.yml doesn't override it) hardcodes a
second, independent source of truth:

PROFILE_REPOSITORIES = {
    "palettes": "PyDevices/palettes",
    "pdwidgets": "PyDevices/pdwidgets",
    "pygraphics": "PyDevices/pygraphics",
    "pydevices": "PyDevices/pydevices",
    "audioinstruments": "PyDevices/audioif",
    "audioeffects": "PyDevices/audioif",
}
...
expected_repository = PROFILE_REPOSITORIES[args.profile]
if args.source_repository_name != expected_repository:
    raise SystemExit(
        f"profile {args.profile!r} requires {expected_repository}, "
        f"not {args.source_repository_name}"
    )

Confirmed identical at both publishing-v6 (mip's coordinator default) and
publishing-v8 (audiocomponents' and audioif's current pin) — this map was
never updated for the split. Publishing tags are immutable by policy, so
neither existing tag can be patched in place.

What's needed

  1. Update PROFILE_REPOSITORIES in scripts/synchronize_mip_package.py so
    audioinstruments and audioeffects map to PyDevices/audiocomponents
    (or, better, derive the expected repository from pydevices-lock.json
    itself rather than hardcoding it a second time — the lockfile is already
    the source of truth the "Record this release" step writes to, and having
    two disagreeing sources of truth is exactly what produced this outage).
  2. Cut a new publishing tag (e.g. publishing-v9) carrying the fix, per
    publishing-automation.md's own rule that a reusable-workflow contract
    change is "an automation rollout, not a package release."
  3. Update PyDevices/mip's process-mip-publication-request.yml uses:
    pin (currently @publishing-v6) to the new tag.
  4. Retry the two queued audiocomponents publications
    (gh run rerun 33814552433 -R PyDevices/mip,
    gh run rerun 33814552790 -R PyDevices/mip, or a fresh manual dispatch
    with the same source-repository/source-ref/version/profile) once the new
    tag is live.

Current state

As of 2026-09-03 22:56 UTC, the live index still reports 0.1.1 for both
audioinstruments and audioeffects
(https://PyDevices.github.io/mip/package/6/audioinstruments/latest.json,
.../audioeffects/latest.json) — audioif's last publish. TestPyPI already
has both packages at 0.2.0
(https://test.pypi.org/project/pydevices-audioinstruments/0.2.0/,
https://test.pypi.org/project/pydevices-audioeffects/0.2.0/); only the MIP
index is stuck behind this script fix.

Related: #34 (a second, independent release-health race hit by this same
release).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions