Skip to content

fix(apidump): line-ending-agnostic API baseline comparison#54

Merged
monstercameron merged 1 commit into
masterfrom
v4
Jun 29, 2026
Merged

fix(apidump): line-ending-agnostic API baseline comparison#54
monstercameron merged 1 commit into
masterfrom
v4

Conversation

@monstercameron

Copy link
Copy Markdown
Owner

The release workflow's build-and-test (windows-latest) failed TestPublicAPIBaseline
for all V4 packages: the goldens are checked out with CRLF on Windows, but the
generated API uses LF, so the byte comparison mismatched despite identical content.
(The ubuntu Unit Lane passed; local Windows passed because the working-tree goldens
were already LF.)

Fix: normalize CRLF->LF on the golden before comparing in apidump.Check.

🤖 Generated with Claude Code

TestPublicAPIBaseline compared the generated API (LF-joined) against the raw
golden bytes. On a Windows checkout (autocrlf), the committed api_baseline.txt
goldens carry CRLF, so every line mismatched despite identical content — the
release workflow's build-and-test (windows-latest) failed the baseline tests
for all V4 packages, while the ubuntu Unit Lane passed.

Normalize CRLF->LF on the golden before comparing, so the gate is stable
across platforms and checkout line-ending settings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@monstercameron monstercameron merged commit 4f8661a into master Jun 29, 2026
monstercameron pushed a commit that referenced this pull request Jul 6, 2026
…ved)

pluginContext.ResolveService now treats a plugin's manifest as an access
boundary: a plugin can resolve only the services it declared in RequiredServices
or OptionalServices. An undeclared key is reported unavailable ((nil,false)) even
when the kernel has it registered, so a plugin — including a compromised one —
cannot reach for a service it never asked for (least privilege). The kernel
owner's own Kernel.ResolveService stays unrestricted; enforcement is per-plugin.

Breaking-change coordination (as the deferral required): the one real in-repo
resolution site, devtools.kernel's runtime2-summary section, now declares
ServiceKeyRuntime2Meta as OptionalServices; the two tests that resolved a service
without declaring it now declare it. New pin (negative-verified):
TestPluginContextEnforcesServiceAllowlist — declared resolves, undeclared is
denied, kernel-owner resolution stays open. Full native gate green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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