Commit 329bf8c
authored
fix(changesets): correct twelve semver bumps that would have shipped breaking changes as patch (#3175)
The release was one command from publishing. A changeset decides the version
BUMP as well as the changelog text, and nobody had reviewed the changesets --
CodeRabbit was rate-limited across the batch and both review passes were aimed
at code and tests.
Twelve frontmatter corrections. Each was derived from what the referenced
commit actually did to the public surface, not from the changeset's own prose,
and the level follows AGENTS.md:68 ("major (>=1.0 pkg) or minor (0.x), never
patch when the surface shrank") rather than generic semver:
bcf-validate-against-official-xsds bcf patch -> major
writeBCF throws where it returned a Blob. Probed both sides: at e19aa0e^
"wrote blob, size = 1662"; on main "THREW -> BCF 3.0 requires a positive
Camera/AspectRatio". No camera factory in the package sets that field, so
the package's own documented createBCFFromIDSReport -> writeBCF path fails.
recommended-scale-units drawing-2d + sdk minor -> major
getRecommendedScale throws for 0/negative/NaN/Infinity where it returned
1:1000, and the SDK forwards with no catch.
export-step-fails-closed-on-... wasm patch -> major
export_step_json went String -> Result<String, String> on a root-level
pub use. The Rust crate version derives from the highest npm workspace
version, so patch would publish ifc-lite-export 5.0.1 with a hard compile
break inside ^5.0.0. Precedent: #2766 took major for this shape.
ifcx-writer-discards-globalid ifcx patch -> major
ids-summarize-not-applicable sdk patch -> minor, + cli patch
New required property on a RETURNED type. Minor, not major: nothing in
the SDK accepts an IDSValidationSummary, so consumers never construct one.
branch-merge-layer-overlay collab patch -> minor
collab-snapshot-invented-provenance collab + ifcx patch -> minor
symbolic-cycle-truncation-reason server-client patch -> minor
symbolic-output-cap + wasm minor
csv-numeric-cells-export-as-numbers + wasm major
csv-cell-escaper-unification + viewer patch
sun-shadows-depth-prepass + viewer minor
Effect: packages receiving a major bump go from four to eight. bcf, ifcx, sdk
and wasm would each have shipped a breaking change as patch or minor.
A fourth body correction, found by review of this commit rather than of the
batch: changing recommended-scale-units to major left its own body still
arguing "this is minor rather than patch". Correcting a bump without correcting
the sentence that justifies it reproduces the exact defect this commit exists to
fix. Rationale rewritten to state the narrowed input domain as the reason.
Swept the other eleven for the same contradiction; none.
Three body corrections, where the text ships AS the changelog:
wasm-step-export-non-ascii-x2-directive said encode_ifc_string "was never
wired into this writer; it now is". It is still not called: the function
is defined at rust/core/src/step_encoding.rs:146 and its only appearance
outside rust/core is a comment. The encoding was reimplemented inline.
bounded-glb-rep-instancing announced export_step_to_writer under
a wasm heading. It is exported from the Rust crate and appears nowhere in
rust/wasm-bindings, so npm consumers cannot reach it. Qualified.
wasm-bound-symbolic-item-walk-cycle said "none of the three bounds
reports anything". That was true when written; a later change in this same
release gives them a truncation reason, so the shipped changelog would
have contradicted itself. The stale sentence is DELETED rather than
annotated: a first attempt added a cross-reference to the superseding
changeset, but changesets never render the changeset filename, so it
pointed at something no reader can find -- and the two entries land in
different CHANGELOG sections (patch vs minor) anyway. The superseding
entry states the current behaviour positively, so nothing is lost.
NOT changed, after two reviewers disagreed and the evidence settled it:
placement-memo-truncation, geometry-bound-layer-slicing-identity-chase and
validate-export-formats-externally were flagged for naming an npm package
against a Rust-only commit. That is the documented house convention, stated in
74a55a9: "Attribution follows the split precedent already on main:
rust/geometry -> @ifc-lite/geometry". Correct as they stand.
csv-numeric-cells-export-as-numbers was flagged as export minor -> major for a
flipped default. escapeCsvCell and guardSpreadsheetFormula have never been
published: added by #3102, still unreleased, shipping for the first time in
this release. npm view @ifc-lite/export version = 2.9.4 and its CHANGELOG has
no csv-cell entry. A default cannot break callers of a function no consumer
can have called. Minor is right; only the missing wasm entry was real.
A fifth body correction: dxf-insunits-survey-units stated the scale error
BACKWARDS. It said a survey-foot DXF "came in at roughly 1/3.28 scale", i.e. too
small. `unitScale` is a MULTIPLIER (convert.ts:232 `wx = p.x * state.unitScale`)
and the unknown-code fallback is `unitScale = 1` (convert.ts:129, warning
"drawing units treated as metres"), so coordinate 100 in survey feet became
100.0000 m against a true 30.4801 m -- 3.28x TOO LARGE. Corrected.
Two reviewers had independently failed to find that import path and this was
recorded as unverified rather than edited on a guess; a third look found it at
packages/drawing-2d/src/dxf/convert.ts:48. Recording the gap rather than
guessing is what made it findable.1 parent e513c23 commit 329bf8c
16 files changed
Lines changed: 31 additions & 22 deletions
File tree
- .changeset
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
| 7 | + | |
6 | 8 | | |
7 | 9 | | |
8 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | | - | |
7 | | - | |
8 | | - | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
0 commit comments