Conversation
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
marked this pull request as ready for review
July 14, 2026 16:20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.mts,.cts, dynamic imports, type imports, and TypeScript path aliasesdevand guard setup-worktree cleanlinessWhy
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
check, provenance, and CodeQL passedtimeout 1800 bash ./scripts/ci/run-local-ci-equivalent.shdev:timeout 180 node --test tests/validation-python.test.mjs tests/opcore-facade.test.mjsdev:timeout 180 npm run pack:checkdev:timeout 120 npm run lint