Root-caused during PR #358 review (FIX-358-REVIEW-ROOTCAUSE, comp2, 2026-08-11), replacing what every prior Phase K/L sprint treated as an unexplained "known pre-existing sc-boundary/sc-lint#84 gate."
Root cause
setup-sc-lint (the CI setup action) installs the sc-lint-boundary binary into the consumer workspace, but the pinned sc-lint 0.4.0 release's .just/lint_sc_boundary.py invokes it via:
cargo run -p sc-lint-boundary
sc-lint-boundary is a workspace member of the sc-lint tool's own repo, not of consumer workspaces like sc-compose (whose root Cargo.toml correctly only has sc-compose/sc-composer/sc-compose-py as members — this is not a bug in sc-compose). cargo run -p sc-lint-boundary fails with:
error: package(s) `sc-lint-boundary` not found in workspace `<consumer-repo-root>`
surfaced by the CLI as CLI.BACKEND_EXEC_FAILURE, causing just lint (and CI's "Run shared sc-lint contract" step) to fail on every platform, every sprint, since this was introduced.
Verification
- Running the installed
sc-lint-boundary binary directly against sc-compose passes with 0 findings (also confirmed for sc-lint-portability).
- This is not fixable from the consumer side by registering a package — the source for
sc-lint-boundary isn't vendored into consumer workspaces, only its compiled binary is installed.
Fix
lint_sc_boundary.py (or the sc-lint release itself) needs to invoke the already-installed sc-lint-boundary binary directly (e.g. resolve it from PATH/cargo-install bin dir) instead of shelling out to cargo run -p sc-lint-boundary in the consumer's workspace.
This is an sc-lint tool/release defect, not an sc-compose defect. No sc-compose PR should continue to carry this as a "known non-blocking" CI red herring once this is fixed upstream.
Root-caused during PR #358 review (FIX-358-REVIEW-ROOTCAUSE, comp2, 2026-08-11), replacing what every prior Phase K/L sprint treated as an unexplained "known pre-existing sc-boundary/sc-lint#84 gate."
Root cause
setup-sc-lint(the CI setup action) installs thesc-lint-boundarybinary into the consumer workspace, but the pinned sc-lint 0.4.0 release's.just/lint_sc_boundary.pyinvokes it via:sc-lint-boundaryis a workspace member of the sc-lint tool's own repo, not of consumer workspaces like sc-compose (whose rootCargo.tomlcorrectly only hassc-compose/sc-composer/sc-compose-pyas members — this is not a bug in sc-compose).cargo run -p sc-lint-boundaryfails with:surfaced by the CLI as
CLI.BACKEND_EXEC_FAILURE, causingjust lint(and CI's "Run shared sc-lint contract" step) to fail on every platform, every sprint, since this was introduced.Verification
sc-lint-boundarybinary directly against sc-compose passes with 0 findings (also confirmed forsc-lint-portability).sc-lint-boundaryisn't vendored into consumer workspaces, only its compiled binary is installed.Fix
lint_sc_boundary.py(or the sc-lint release itself) needs to invoke the already-installedsc-lint-boundarybinary directly (e.g. resolve it fromPATH/cargo-install bin dir) instead of shelling out tocargo run -p sc-lint-boundaryin the consumer's workspace.This is an sc-lint tool/release defect, not an sc-compose defect. No sc-compose PR should continue to carry this as a "known non-blocking" CI red herring once this is fixed upstream.