Skip to content

Platform boundary Dylint: structural scanner, owner enforcement, exact migration baseline (#152) - #351

Merged
zackees merged 11 commits into
mainfrom
feat/152-platform-boundary-enforcement
Sep 26, 2026
Merged

zackees merged 11 commits into
mainfrom
feat/152-platform-boundary-enforcement

Conversation

@zackees

@zackees zackees commented Sep 25, 2026

Copy link
Copy Markdown
Owner

Part of #152 (detector + baseline slice; the migration to zero follows in per-capability PRs).

  • Pre-expansion structural scanner in kernal_api_platform_boundary; the owner package is no longer exempt, cfg-elided out-of-line modules are scanned, every manifest is classified (native / guest / lint).
  • Exact shrink-only baseline (src/baseline.txt, zccache's former format): 1006 occurrences keyed by path, kind, construct, ordinal. New, stale, duplicate and unsorted entries fail; the resolving pass skips only baselined hits.
  • UI diagnostics now use the compiler's own file spelling (fixes $SRC_DIR/$DIR mismatches).
  • Wiring normalized with soldr/zccache: per-lint Cargo home/target ignored, lints in workspace.exclude, lint fmt check in CI, scan nightly read from the lint's rust-toolchain.toml with a test that the dylints job pin agrees.
  • AGENTS.md, DYLINT.md, docs/platform-boundary.md describe the baseline instead of claiming zero debt.

Local validation: both lint crates' tests + UI (22+5, 6+5), RED probe (added #[cfg(windows)] to a baselined file → rejected as new), CI unittest guards (85), cargo fmt --check, default clippy. The local resolving cargo dylint pass could not finish: vendored openssl-sys fails to build on this NixOS host (no lint diagnostics emitted); CI's full mode covers it.

🤖 Generated with Claude Code

zackees and others added 11 commits September 25, 2026 16:05
…ring the owner (#152)

Replace the text scan and the kernal-api package exemption with a token-tree
scanner that follows every out-of-line module whatever cfg guards it. Only the
modules declared by the exactly shaped root host selector are native
locations; the wasm guest tree accepts guest-target predicates only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… it (#152)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Loading an already-loaded file again by its absolute path made UI
diagnostics name $SRC_DIR/$DIR instead of the file rustc was given.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…oundary (#152)

Records the 1006 existing violations in zccache's former baseline format
(path, kind, construct, ordinal; # total header). The repository scan
rejects new, stale, duplicate and unsorted entries; the resolving pass
skips only baselined occurrences. Docs no longer claim zero debt.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Ignore per-lint Cargo homes and target dirs, exclude the lints from the
workspace, format-check them in CI, and take the scan's nightly from the
lint's rust-toolchain.toml, asserting the dylints job pin agrees.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Canonicalizing only the side that exists split macOS's /var ->
/private/var, failing only_the_owner_library_root_may_select there.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@zackees
zackees force-pushed the feat/152-platform-boundary-enforcement branch from a4c5ab7 to b17149a Compare September 25, 2026 23:06
@zackees
zackees merged commit a615174 into main Sep 26, 2026
26 of 28 checks passed
@zackees
zackees deleted the feat/152-platform-boundary-enforcement branch September 26, 2026 00:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-full Run the complete release-equivalent CI matrix on this PR SHA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant