Review follow-up from the #117-#123 merge train.
Problem:
compare_versions in src/coding_scaffold/scaffold_version.py currently compares dotted chunks with a lightweight tuple strategy. That makes 0.5.1.dev0 sort as newer than 0.5.1, so a dev build can pass a project min_supported_scaffold_version floor for the corresponding release.
Why it matters:
The compatibility gate is meant to prevent older writers from touching a project last updated by a newer scaffold. Treating pre-release/dev builds as newer than the final release weakens that safety check for contributors and CI jobs running from source.
Suggested fix:
Implement a deterministic semver-ish parser that orders pre-release/dev suffixes before the final release, without adding a runtime dependency. Add explicit tests for dev, alpha, beta, rc, final release, and short versions like 0.5 vs 0.5.0.
Review follow-up from the #117-#123 merge train.
Problem:
compare_versions in src/coding_scaffold/scaffold_version.py currently compares dotted chunks with a lightweight tuple strategy. That makes 0.5.1.dev0 sort as newer than 0.5.1, so a dev build can pass a project min_supported_scaffold_version floor for the corresponding release.
Why it matters:
The compatibility gate is meant to prevent older writers from touching a project last updated by a newer scaffold. Treating pre-release/dev builds as newer than the final release weakens that safety check for contributors and CI jobs running from source.
Suggested fix:
Implement a deterministic semver-ish parser that orders pre-release/dev suffixes before the final release, without adding a runtime dependency. Add explicit tests for dev, alpha, beta, rc, final release, and short versions like 0.5 vs 0.5.0.