Skip to content

RoboStack monorepo: remaining setup and maintainer feedback #54

Open

Description

@Tobias-Fischer

Follow-ups from @traversaro's feedback on the monorepo, as far as they aren't done yet.

1. Mutex without run_constraints (almost done)

  • Merge Drop the distro mutex's run_constraints #45: removes all mutex run_constraints; rs check and unit tests reject them coming back.
  • Mutex: honour mutex_package.build_number; run_constraints optional vinca#169: vinca publishes a new mutex build at the same version. With Drop the distro mutex's run_constraints #45 the monorepo pins Tobias-Fischer/vinca cf6833a (also makes run_constraints optional) until it's merged; re-pin to RoboStack/vinca afterwards.
  • After the next build, check that each distribution's new mutex build (e.g. lyrical lyrical_28) is published with no constraints and is what solvers pick: humble_21, jazzy_26, lyrical_28 and rolling_30 are on the test channel for linux-64, osx-arm64 and win-64 with constrains: [], and solving ros2-ros-base (test + release channel + conda-forge) picks them on all three platforms. Humble and jazzy on win-64 need channel-priority = "disabled": with strict priority the shared test channel's lyrical-only ros2-pybind11-vendor hides humble's and jazzy's from their release channels. That's an artifact of one test channel for all distributions; separate channels per distribution won't have it.
  • Remove the then-dead mutex-constraint code from tools/check_dependency_compat.py (PIN MISMATCH, --mutex-only).

2. Where users open issues

3. vinca PRs to merge

4. Channels

5. Move to the RoboStack org: setup

  • Move the repository to the RoboStack org (now RoboStack/robostack).
  • robostack-bot: the GitHub App (robostack-bot-dev, used via ROBOSTACK_BOT_CLIENT_ID / ROBOSTACK_BOT_PRIVATE_KEY) and the GHA_PAT token belong to @Tobias-Fischer. Create the app under the RoboStack org, install it on RoboStack/robostack, and set the variable and secrets there.
  • prefix.dev, Repository Access (trusted publishing, build.yaml, read/write) for RoboStack/robostack:
    • robostack-rolling and robostack-lyrical
    • robostack-humble and robostack-jazzy: today mirrors of anaconda.org; they become regular channels first.
  • anaconda.org:
    • create robostack-lyrical (robostack-humble, robostack-jazzy and robostack-rolling exist);
    • secret ANACONDA_API_TOKEN: a token of an account that can upload to all four robostack-<distro> channels;
    • secret ROBOSTACK_NOETIC_ANACONDA_API_TOKEN for noetic's staging copy (as in the website repository).
  • Variable ROBOSTACK_UPLOAD_CHANNEL: today the test channel tobias-fischer/robostack-distro-test; remove it (or set it to none) once uploads should go to the release channels.

6. Later (optional)

🤖 Claude (AI assistant), on behalf of @Tobias-Fischer

Activity

  1. traversaro commented on Oct 16, 2026

    @traversaro
    Member
    • Decide the prefix.dev channel for each (e.g. robostack-humble for humble instead of robostack-staging), set up upload access, and switch channel_name/upload_target.

    Definitely robostack-humble.

  2. traversaro commented on Oct 16, 2026

    @traversaro
    Member

    I would copy humble packages to robostack-humble, that is the channel we have document since years, so I think we should streamline that part. Also, I would take the occasion to populate the rolling and lyrical anaconda.org channels, as -c robostack-rolling is much more user friendly then -c https://prefix.dev/robostack-rolling.

  3. ruben-arts commented on Oct 16, 2026

    @ruben-arts

    Instead of a custom mirror job, can't the upload after build not just push to multiple channels?

  4. traversaro commented on Oct 16, 2026

    @traversaro
    Member

    4. Instead of a custom mirror job, can't the upload after build not just push to multiple channels?

    That also works fine for me.

  5. traversaro commented on Oct 16, 2026

    @traversaro
    Member

    Also, I overlooked:

    A package is missing? Open a Package request issue. robostack-bot opens a pull request that adds it to the build, and a maintainer reviews it.

    How does this robostack-bot works?

  6. Tobias-Fischer commented on Oct 16, 2026

    @Tobias-Fischer
    CollaboratorAuthor

    7. Also, I overlooked:
    > A package is missing? Open a Package request issue. robostack-bot opens a pull request that adds it to the build, and a maintainer reviews it.

    How does this `robostack-bot` works?
    

    It lives here: https://github.com/Tobias-Fischer/robostack-distros/blob/main/.github/workflows/bot.yaml

  7. changed the title [-]Before moving to the RoboStack org: remaining points from the maintainer feedback[/-] [+]RoboStack monorepo: remaining setup and maintainer feedback[/+] on Oct 16, 2026
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