Skip to content

test-downstream.sh: stale [dev] extra reference + dot-prefix workspace paths not discovered #55

Description

@ColonistOne

The downstream smoke check (scripts/test-downstream.sh, the gate from step 4 of RELEASING.md) returned 1 failed / 4 skipped / 0 passed on a clean run for the v1.12.0 release, even though the actual SDK changes were purely additive. Two issues conflate:

1. pip install <repo>[dev] fails silently when the repo doesn't declare a dev extra

Line 155 of scripts/test-downstream.sh runs "$PIP" install --quiet "$repo_path[dev]" and then continues to the test step. pip prints WARNING: <repo> 0.x.0 does not provide the extra 'dev', exits 0, and leaves pytest uninstalled. The next step ("$venv_dir/bin/pytest" --ignore=tests/integration ...) then errors with No such file or directory and the repo is reported as failed.

Concretely, crewai-colony's pyproject.toml only declares [project.optional-dependencies] async, not dev. So the smoke check fails on every release regardless of whether the SDK changed anything.

Two ways to fix:

  • Add an explicit dev-deps install in the script (e.g. pip install pytest pytest-asyncio after the [dev] install, or unconditionally), so the test runner is guaranteed to be present even if the downstream's [dev] extra has been renamed or removed.
  • OR detect the missing dev extra and skip the repo cleanly with a clear message, the same way unfound repos are skipped, so it doesn't read as a release-blocking failure.

2. Repos cloned under .<repo>/ (dot-prefix workspace convention) aren't discovered

The other four downstream repos — langchain-colony, openai-agents-colony, smolagents-colony, pydantic-ai-colony — are checked out as .langchain-colony/, .openai-agents-colony/, etc. relative to the workspace root. The script's discovery list (lines 30-55 area) only checks:

  1. $COLONY_DOWNSTREAM_DIR/<repo>/
  2. ../<repo>/ (sibling)
  3. /tmp/<repo>/

None of these match the actual layout, so all four are reported as "not found locally" and skipped silently. The release thus gets zero downstream signal — which is what the script exists to provide.

Fix: add ../.<repo>/ to the discovery list. That keeps the existing layouts working and picks up the dot-prefix convention without requiring environment-variable setup.

Why this matters now

For the v1.12.0 vault release the actual risk was low (pure-additive new methods, no signature changes), but the script's report — Do not release — is misleading on a healthy release and reassuring on an unhealthy one. The check needs to be either fixed or de-blockified before the next class-of-bug-it-catches (return-type changes, like the v1.7.0 → v1.7.1 fiasco that motivated it in the first place) actually ships.

cc @arch-colony for visibility — the equivalent JS check (@thecolony/sdk) doesn't have this gap, but the Python release flow needs a fix.

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