chore(#512): pin v2.0.0-kernel.3, carrying 0025 and the revised 0018 - #769
Conversation
Two patches moved after `kernel.2` was published, both within the hour: `0025` (#597) landed new, and `0018` (#555) changed following upstream review on OCCT#1417. The pinned asset held neither, so `build-and-test` was again resolving a kernel that is not the one this branch's tests are written against, which is #585's shape. `occt-src` was reset to a clean `V8_0_1` before applying rather than patched incrementally. The revised `0018` will not stack on the old one, and an incremental apply would either have failed or, worse, half-succeeded. Verified: 15/15 applied, 50 files owned by a patch and 50 modified with **zero stray**, objects at 23:18 against sources at 22:35, and 5481 tests with 0 failures. The released asset was re-downloaded and its checksum recomputed against the pin. That check earned its place this time: the first upload was named `OCCT3.zip` rather than `OCCT.xcframework.zip`, so the conventional URL 404'd. The checksum was correct and the asset was intact; every consumer would have failed to fetch it. Renamed and re-verified. CLAUDE.md's patch-count check also earned its place, having gone stale within minutes of being written. Its note now records that both `kernel.1` and `kernel.2` drifted, rather than implying the first was a one-off. Closes #512
secondmouseAU-bot
left a comment
There was a problem hiding this comment.
Automated review (medium effort): everything in the actual diff (CLAUDE.md, Package.swift) checked out — patch counts, the release URL, and the new checksum all match the live v2.0.0-kernel.3 asset.
One cross-file finding, not inline-commentable because the file isn't part of this PR's diff:
docs/v2.0.0-plan.md's RESOLVED 2026-08-07 block is now stale. Lines 172-180 still describe the superseded kernel.2/fourteen-patch state ("Cleared by v2.0.0-kernel.2... all fourteen applied... 5442 tests, 0 failures"). That's notable specifically because this block explicitly predicted this PR: "0025 (#597) is already in flight and will reopen it. Watch for it at release: the count in Package.swift's comment and the patch count in Scripts/patches/ must agree, and if they do not, the difference is the set nothing is testing." 0025 did land here, reopening exactly the gap the block described, and this PR re-closes it (15/15 patches, 5481 tests) — but that resolution isn't recorded in the doc, so a reader of this durable reference sees stale verification numbers instead of the current state.
…uperseded Review on PR #769. The block still recorded `kernel.2`, fourteen patches and 5442 tests, which was true for about an hour. The pointed part is that this block **predicted this PR**: it ended by warning that `0025` was in flight and would reopen the gap, and telling the reader to watch the patch counts at release. It did reopen, `0018` changed alongside it so the pin went two stale rather than one, and the block recording all of that was itself the stale artifact. Rewritten to record the reopening and re-closure rather than replacing one snapshot with another, because a durable reference that has been wrong twice is more useful when it says so. Also captures the two things the rebuild taught: reset `occt-src` to a clean tag before applying, since a patch whose content changed will not stack on its earlier form; and verify a published asset by re-downloading it, since `kernel.3`'s first upload had a correct checksum and a 404 URL.
|
Finding accepted and fixed, and it is a sharper catch than it looks. That block predicted this PR. It ended by warning that Rewritten to record the reopening and the re-closure rather than swapping one snapshot for another, Added the two things the rebuild taught, which were not in the doc anywhere:
Thanks for going cross-file on this one. The diff itself was two files and clean; the stale text was |
Reopens and re-closes #512.
kernel.2was accurate for about an hour.Why another one
0025(#597, PR #757)GeomFill_Sweep::BuildAlloverwrote the measured C1-conversion error with the requested tolerance.0018(#555, PR #759)Neither was in the pinned asset, so
build-and-testwas resolving a kernel that is not the one thisbranch's tests are written against. That is #585.
0018is the interesting oneIn a
No_Exceptionbuild (which is how we build) the old form already reduced to exactly the newone, because
Standard_ConstructionError_Raise_ifcompiles to nothing and the duplicate guard belowit was doing all the work. The only revision that can move a compiled result is
Distance() <= theTolbecomingSquareDistance() <= aTol2, which differs only by rounding at theboundary. A 13,534-configuration sweep found 0 differences.
So this pin is not expected to change any answer. It is pinned anyway, because "we measured that it
does not matter" and "the binary contains the source in the tree" are different claims and only the
second one survives someone editing the patch later.
Build discipline
occt-srcwas reset to cleanV8_0_1before applying, not patched incrementally over the previousbuild. The revised
0018will not stack on the old one, and an incremental apply would either failor half-succeed.
Verification
The round-trip check caught a real defect this time. The first upload was named
OCCT3.zip, notOCCT.xcframework.zipaskernel.1andkernel.2are, so the conventional URL returned 404. Thechecksum was correct and the archive intact; every consumer would simply have failed to fetch it,
and a checksum-only check would have passed. Renamed the asset, waited out CDN propagation, verified
again.
CLAUDE.md
The patch-count check added with
kernel.2went stale within minutes of being written, which isexactly what it predicted would happen and why it is phrased as a check rather than a number. Its
note now records that both
kernel.1andkernel.2drifted, so it does not read as a one-off.CHANGELOG entry
SemVer impact
NONE. No Swift API changes, and0018's revision is measured to change no answer in aNo_Exceptionbuild.