fix: reject stale sc-compose Python bindings below version floor - #531
fix: reject stale sc-compose Python bindings below version floor#531randlee wants to merge 4 commits into
Conversation
QA Findings UpdateGenerated: 2026-08-20 Machine Status (JSON){
"sprint": "SC-COMPOSE-VERSION-FLOOR-QA1",
"task": "SC-COMPOSE-VERSION-FLOOR-01",
"branch": "fix/sc-compose-version-floor-check",
"commit": "dee4b7b",
"pr": 531,
"verdict": "FAIL",
"deliverables": {
"complete": 5,
"total": 7,
"percent": 71
},
"findings": {
"blocking": 2,
"important": 2,
"minor": 0
},
"blocking_ids": ["ARCH-001", "ATM-QA-001"],
"merge_readiness": "not ready",
"merge_reason": "2 Blocking findings unresolved: RULE-012 vendoring-boundary violation (arch-qa) and missing CI enforcement of the new regression tests (req-qa). CI is green (14/14) but that does not offset either finding.",
"next_action": "Revert the hand-edit to the vendored/self-installed install.py copies and route the version-floor fix upstream through sc-publish (or obtain a team-lead ruling for an explicit one-time exception); wire test_install.py into ci.yml; address the 2 Important findings in the same round.",
"owner": "comp (via team-lead routing)"
}Findings Summary
Blocking Findings
Detailed FindingsImportant
Confirmed Clean
Resolved Since Last Pass
Merge Readiness
Next Action
|
QA Findings UpdateGenerated: 2026-08-20 Machine Status (JSON){
"sprint": "SC-COMPOSE-VERSION-FLOOR-QA2",
"task": "sc-compose-version-floor-check",
"branch": "fix/sc-compose-version-floor-check",
"commit": "c90b1d6",
"pr": 531,
"verdict": "FAIL",
"deliverables": {
"complete": 3,
"total": 5,
"percent": 60
},
"findings": {
"blocking": 1,
"important": 1,
"minor": 0
},
"blocking_ids": ["ARCH-001-recheck", "ATM-QA2-001"],
"merge_readiness": "not-ready",
"merge_reason": "One confirmed Blocking finding (RULE-012 recurrence): the round-1 vendored-file hand-edit violation was reverted in install.py/test_install.py but reappeared in a different vendored file, .github/scripts/bootstrap_sc_compose.py, which install.py's package_files() installs byte-for-byte and which comp incorrectly claimed was consumer-owned. CI is 14/14 green but has no parity check that would catch this class of drift.",
"next_action": "Route back to comp: file the version-floor requirement as an sc-publish upstream issue/PR (with parity test update), merge, re-vendor plugins/sc-publish/ into this repo, and confirm root/vendored bootstrap_sc_compose.py copies are byte-identical again. Consider adding a CI parity/dry-run check for sc-publish vendored-file drift.",
"owner": "comp"
}Findings Summary
Blocking Findings
Detailed FindingsBlocking
Important
Deliverable-by-deliverable
Resolved Since Last Pass
Merge Readiness
Next Action
|
This reverts commit c90b1d6.
|
Closing without merge. Round 1 and round 2 QA both confirmed the version-floor check is correct but repeatedly landed on vendored sc-publish files (plugins/sc-publish/install.py, then .github/scripts/bootstrap_sc_compose.py — both byte-for-byte vendored per install.py's package_files()). Per user ruling, the fix goes upstream instead: dispatched as SC-PUBLISH-VERSION-FLOOR-01 in randlee/sc-publish (branch fix/version-floor-bootstrap). This branch is confirmed zero-diff vs develop (69dd074) — nothing to merge here. sc-compose will re-vendor once the upstream fix lands, via a normal consume-update sprint (Q.3/Q.4 pattern). |
Summary
install.py(and the vendoredplugins/sc-publish/install.pycopy) that inspects installedsc-composedistribution metadata before the firstsc_composeimport, and rejects anything below the current minimum (1.4.1) with an explicit installed-vs-required error instead of silently running against a stale binding.Why
An ambient/global
sc-compose==1.2.0wheel produced an identical spuriousunknown filter: tojsonpytest failure across two separate QA rounds (sc-publish PR #48 and sc-compose Sprint Q.4 / PR #530), each time costing a reviewer a full diagnosis cycle to rule out a real regression. This is a standalone bug fix, not Phase Q sprint work — branched directly offdevelop.Test plan
just testPASSgit diff --checkPASS🤖 Generated with Claude Code