Skip to content

Move the ktsu.Semantics pins to 4.3.1 - #179

Merged
matt-edmondson merged 1 commit into
mainfrom
claude/blissful-euler-fzuap2
Sep 12, 2026
Merged

matt-edmondson merged 1 commit into
mainfrom
claude/blissful-euler-fzuap2

Conversation

@matt-edmondson

@matt-edmondson matt-edmondson commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

What

Directory.Packages.props: ktsu.Semantics.Quantities, .Strings and .Paths move from 4.0.0 to 4.3.1.

Why

The 4.0.0 pin predates the angle dimensional axis. CppReflectionBuilder.Axes declares eight axes — length, mass, time, angle, electricCurrent, temperature, amountOfSubstance, luminousIntensity — and looks each one up in the resolved unit's DimensionalFormula. Under 4.0.0 that dictionary had the seven SI keys and no unit could supply the eighth, so every member's angle exponent was zero because the key was missing rather than because the unit said so. The generated table happened to be right; nothing made it right.

Strings and Paths move with it because they are one repository's release. Neither depends on the other (all three declare empty dependency groups), so they move together because they are the same release rather than because one requires it.

What this does not fix

A radian still reaches the reflection table as { 0, 0, 0, 0, 0, 0, 0, 0 }, and the bump alone cannot change that. Five angular units — Radian, Degree, Gradian, Milliradian, Revolution — appear in availableUnits on both Dimensionless and AngularDisplacement in dimensions.json, and UnitsGenerator resolves a unit claimed twice by taking the first declared dimension. Dimensionless is the first entry in the file, so Radian.Dimension is PhysicalDimensions.Dimensionless, whose formula is empty.

That is upstream's to fix; it is filed as ktsu-dev/Semantics#223. This PR is what has to be true before that fix is visible here, and the assertion pinning a radian to { 0, 0, 0, 1, 0, 0, 0, 0 } belongs in the change that consumes the release carrying it.

Testing

dotnet build over the whole solution (Schema cross-targets net10.0;net9.0;net8.0, Schema.Cpp net10.0;net9.0): succeeded, 0 warnings, 0 errors. dotnet test -f net10.0: 708 passed, 0 failed. The net9.0/net8.0 legs are not runnable in this container, which has only the .NET 10 runtime.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UGHDsYaaTQdzVR4XBR6miu

The 4.0.0 pin predates the `angle` dimensional axis, so a unit's
`DimensionalFormula` had the seven SI keys and `CppReflectionBuilder.Axes`
looked up an eighth that no unit could supply. Every member's dimension
was therefore right by accident: the angle exponent was zero because the
key was missing, not because the unit said so.

Strings and Paths move with it. They are one repository's release and
there is no reading under which Schema wants three different versions of
it; neither carries a dependency on the other, so the three move together
because they are the same release rather than because one requires it.

Nothing generated changes yet. The five angular units -- Radian, Degree,
Gradian, Milliradian, Revolution -- are listed under `Dimensionless` as
well as `AngularDisplacement`, and the units generator resolves that by
taking the first, so a radian still reports a dimensionless dimension and
still reaches the reflection table as eight zeroes. That is upstream's to
fix; this is what has to be true before the fix is visible here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UGHDsYaaTQdzVR4XBR6miu
@sonarqubecloud

Copy link
Copy Markdown

@matt-edmondson
matt-edmondson merged commit 45dd269 into main Sep 12, 2026
12 checks passed
@matt-edmondson
matt-edmondson deleted the claude/blissful-euler-fzuap2 branch September 12, 2026 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants