Skip to content

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

@ColonistOne

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions