Skip to content

Promote dev with NodeNext and Python toolchain fixes#237

Merged
EivMeyer merged 7 commits into
mainfrom
dev
Jul 14, 2026
Merged

Promote dev with NodeNext and Python toolchain fixes#237
EivMeyer merged 7 commits into
mainfrom
dev

Conversation

@mkceichelbeck

@mkceichelbeck mkceichelbeck commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • fix NodeNext source extraction across .mts, .cts, dynamic imports, type imports, and TypeScript path aliases
  • make dead-code roots, import evidence, and reachability analysis explicit so valid code is not reported as dead
  • split the status command into focused modules while preserving public behavior
  • resolve Python validation tools from repo-local virtualenvs and project config before falling back to PATH
  • keep missing Python type tools degraded instead of silently passing
  • keep Zeroshot feature runs on dev and guard setup-worktree cleanliness
  • update package/release checks for the new Python resolver artifact and forbidden-bin diagnostics

Why

NodeNext resolution did not consistently apply TypeScript module-extension families and path mapping rules. Dead-code analysis also mixed root discovery with import evidence, which produced noisy findings for code reachable through supported package entrypoints.

Python validation also reported tool availability from the runner environment instead of the repository under check. Repos with .venv, local wrappers, or project-specific config could show the wrong status.

Impact

Opcore consumers get more accurate import graphs, dead-code findings, and Python validation status. Repositories using NodeNext, conditional TypeScript extensions, type-only imports, dynamic imports, path aliases, or repo-local Python toolchains are covered by focused tests.

Validation

  • PR feat(python): resolve repo-local toolchains #238: GitHub check, provenance, and CodeQL passed
  • local: timeout 1800 bash ./scripts/ci/run-local-ci-equivalent.sh
  • local after syncing current dev: timeout 180 node --test tests/validation-python.test.mjs tests/opcore-facade.test.mjs
  • local after syncing current dev: timeout 180 npm run pack:check
  • local after syncing current dev: timeout 120 npm run lint

EivMeyer and others added 7 commits July 13, 2026 17:31
Opcore ship runs depend on setup being idempotent in a fresh worktree. Add a CI guard that runs setup in a throwaway worktree and fails if it leaves dirty files.
Align Opcore Zeroshot defaults with the enforced branch workflow: feature runs target dev and dev promotes to main.
Fix #210 by resolving Python validation tools from the repository under check before falling back to PATH.

Routes repoRoot through Python validation status, reports resolved command/source/config metadata, and keeps missing type tools degraded rather than silently passing. Also fixes release package inspection ordering so forbidden public bins fail with the intended diagnostic before packlist checks.
@EivMeyer EivMeyer changed the title Fix NodeNext graph resolution and dead-code reachability Promote dev with NodeNext and Python toolchain fixes Jul 14, 2026
@EivMeyer
EivMeyer marked this pull request as ready for review July 14, 2026 16:20
@EivMeyer
EivMeyer merged commit 62748e3 into main Jul 14, 2026
22 checks 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.

2 participants