Skip to content

feat: adopt bomly-sdk v0.7.0 - #1

Merged
bomly-guy merged 3 commits into
mainfrom
claude/sdk-v0.7.0
Sep 1, 2026
Merged

bomly-guy merged 3 commits into
mainfrom
claude/sdk-v0.7.0

Conversation

@bomly-guy

@bomly-guy bomly-guy commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Unblocked. bomly-sdk v0.8.0 is released and pinned here; the suite is green against the real tag, with no go.work overlay.

Mechanical migration to the typed GraphNode union: sdk.Dependencysdk.DependencyNode, and fixtures route through the testkit constructors because identity is minted there and the fields holding it are unexported — a hand-built literal has no node ID at all.

Why this one is blocked

The migration surfaced a user-visible regression that shipped in v0.7.0. matcherkit.NormalizeLicenseSet wrote this matcher's name into PackageLicense.Type; phase 1.4 turned Type into the closed declared/concluded vocabulary, so the model gate silently emptied it — and licenses[].source is a field docs/matchers/depsdev-license-matcher.md promises and the CLI publishes.

It surfaced here only because a fixture comparison printed Type:"" where Type:"external-depsdev" was expected. Nothing else would have caught it.

The fix belongs in the SDK, not here (ADR-0040): a license source is an independent fact from the kind of claim, and they were sharing one field. bomly-sdk#31 gives it its own. This repo needs no change for it beyond the pin.

Verification

go vet, gofmt, full suite — clean against the SDK branch.

🤖 Generated with Claude Code

Mechanical migration to the typed GraphNode union: sdk.Dependency becomes
sdk.DependencyNode, and fixtures route through the testkit constructors,
because identity is minted there and the fields holding it are unexported --
a hand-built literal has no node ID at all.

The migration surfaced a user-visible regression that shipped in v0.7.0, and
it is fixed in the SDK rather than here: NormalizeLicenseSet wrote this
matcher's name into PackageLicense.Type, which phase 1.4 turned into the
closed declared/concluded vocabulary, so the model gate silently emptied the
"licenses[].source" field the docs promise. bomly-sdk#31 gives a license
source its own field. This repo needs no change for it beyond the pin.

BLOCKED on a v0.7.1 tag carrying bomly-sdk#31. Verified locally against that
branch through a go.work overlay; the pin here is still v0.7.0 and must be
bumped once the tag exists, which is the one line left on this PR.
NormalizeLicenseSet's second argument is a license type -- "declared" or
"concluded" -- and always was; this matcher was passing a matcher name into
it, which is how the name reached a field that later became a closed
vocabulary. It now calls NormalizeLicenseSetFrom, which takes the two as the
independent facts they are.
The migration was developed against the release candidate through a go.work
overlay; this pins the published tag. v0.8.0 rather than v0.7.1 because the
SDK fixes added exported API, which is a minor bump under semver -- gorelease
named the version.

Full suite green under -race against the real tag, with no overlay.
@bomly-guy
bomly-guy merged commit cce230b into main Sep 1, 2026
1 check passed
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.

1 participant