Skip to content

release: promote Opcore 0.2.2 nested-workspace fix - #303

Merged
EivMeyer merged 16 commits into
mainfrom
dev
Sep 3, 2026
Merged

release: promote Opcore 0.2.2 nested-workspace fix#303
EivMeyer merged 16 commits into
mainfrom
dev

Conversation

@EivMeyer

@EivMeyer EivMeyer commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Promote dev to main for the Opcore 0.2.2 nested-workspace fix.

  • resolves the Git prefix so validation workspaces rooted below the worktree root read committed content correctly
  • keeps changed, staged, tree, tracked, and untracked listings scoped to the selected workspace
  • translates workspace-relative file reads back to worktree-root-relative object paths
  • bumps every workspace package, the Cargo workspace, and the three native artifactVersion values to 0.2.2
  • adds docs/release/v0.2.2.md and backfills CHANGELOG entries for 0.2.0 and 0.2.1, which both shipped undocumented

Verification

  • implementation PR fix(validation): support nested Git workspace roots #298 merged to dev at ffc828c, contributed by Sigurd Høystad (@saasom), the first outside contribution to this repo
  • version bump PR release: bump Opcore to 0.2.2 #301 merged to dev at 6cf124d
  • fix(validation): support nested Git workspace roots #298: CI and provenance passed. release: bump Opcore to 0.2.2 #301: CI, provenance, and all four CodeQL analyses passed
  • reproduced the bug before the fix on a two-package workspace: check --changed --repo packages/app returned infrastructure_failure with zero checks executed and fatal: path 'packages/app/src/index.ts' exists, but not 'src/index.ts'
  • reproduced it fixed after, running a build of this branch: reports opcore 0.2.2, runs 25 checks, catches the app's TS2322 at src/index.ts, correctly excludes the sibling package, and --repo . at the worktree root still reports both with full paths
  • OPCORE_REQUIRE_ALL_NATIVE_PACKAGES=1 npm run release:dry-run passes at 0.2.2; each native binary matches both its .sha256 and its metadata checksum
  • full local suite on this branch fails the same 3 suites as unmodified dev on the same machine (ASP dogfood receipt, cutover release receipt, installed package bins, all needing packed artifacts or a pinned Ruff). No regressions from the bump.

What this PR gates

native-artifact and aggregate are conditioned on main, so this is the first run in the sequence that rebuilds graph-core for all three targets. main requires all five contexts: check, the three native-artifact jobs, and aggregate.

Worth knowing while reviewing: the graph-core binaries committed in git are stale relative to current crates/, enough to fail three conformance suites when tests run against them instead of a fresh build. Evidence added to #227. It does not affect what ships, since the publish consumes the CI native artifacts rather than the committed ones.

On merge

Merging triggers main-branch CI and, after it succeeds, the automated npm and GitHub release for opcore@0.2.2 with dist-tag latest. Release notes come verbatim from docs/release/v0.2.2.md.

tomdps and others added 16 commits July 24, 2026 05:58
Implements #258.

Adds `python.ruff-lint` and `python.ruff-format` as validation-python-owned
warning checks with `defaultScopes: []`. They activate only through explicit
selection or `.opcore/config` `validation.checks.defaults`; `checks.disabled`
wins. Unrequested and disabled checks emit non-execution capability receipts,
report skipped runs, never probe or invoke Ruff, and never degrade enforced
coverage. `python.source-hygiene` is unchanged.

Execution reuses the #246 canonical Python project context, the #209 graph
import closure, and a shared #245-style exact after-state workspace primitive
(`python-execution-workspace.ts`) with sanitized HOME/XDG/TMP/PATH runtime.
Lint runs `ruff check --output-format=json --no-fix --no-cache --force-exclude`
and consumes strict JSON; format runs bounded `ruff format --check --no-cache
--force-exclude` batches and refines exit-1 batches by file without parsing
human prose. Target-applicable `.ruff.toml`, `ruff.toml`, and `[tool.ruff]`
configuration plus its recursive `extend` closure require non-symlink realpath
evidence and are materialized without mutating source, config, lockfiles,
environments, or caches.

Extends `PythonValidationCapabilityRun` into a portable Ruff receipt variant
with project key, context fingerprint, after-state manifest fingerprint,
source/config paths, cwd, portable executable/argv, tool provenance,
termination, duration, and diagnostic counts, plus runtime and JSON-schema
state-machine invariants that reject contradictory or incomplete failure-state
execution evidence. Status, scan, doctor, metrics, and ASP reporting are
activation-aware: missing Ruff degrades only while a Ruff check is active, the
`python.ruff_lint_findings`/`python.ruff_format_findings` signals derive only
from executed receipts, and ASP executes and reports only selected check ids.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat: P1: Run truthful opt-in Ruff lint and format checks
feat(validation-python): add opt-in pytest authority
…ev-tools

Purge deprecated toolchain and enforce strict self-validation
fix(validation): support nested Git workspace roots
Version bump only; no behavior change beyond the fix already merged in #298.

- bumps all 17 workspace package versions and their exact internal dependency pins
- bumps the Cargo workspace version and the three native artifactVersion values
  (binaries and checksums are unchanged; the CI native matrix rebuilds them for publish)
- updates the hardcoded release version in check-workspace, release-dry-run, and
  release-publish, plus RELEASE_VERSION and OPCORE_CONFIRM_PUBLISH in release.yml
- adds docs/release/v0.2.2.md, which the release workflow uses verbatim
- backfills CHANGELOG entries for 0.2.0 and 0.2.1, which shipped undocumented

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TytwH459JMysvWDj1PopjH
Five assertions pin the released version and must move with it:

- opcore-facade: `opcore --version` human output and runtimeInfo.version
- native-packaging-policy: OPCORE_CONFIRM_PUBLISH in release.yml
- graph-core-artifact: the unsupported-Windows message
- asp-provider: the canonical ASP server manifest version

Left every other 0.2.1 in tests/ alone; those are inert fixtures (sample
Cargo.toml versions, schema-contract payloads, fake host versions) that do
not compare against the live release version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TytwH459JMysvWDj1PopjH
Comment on lines +9 to +18
import {
TypeScriptProjectService,
defaultTypeScriptProjectExcludedDirectories,
isPathInside as isInside,
isSafeExistingFileInsideRepo,
normalizeModulePath,
type TypeScriptProjectContext,
type TypeScriptProjectOptions,
type TypeScriptProjectScope
} from "./typescript-project/index.js";
@@ -0,0 +1,26 @@
import { isAbsolute, relative, resolve, sep } from "node:path";
@EivMeyer
EivMeyer merged commit ab887a7 into main Sep 3, 2026
21 of 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.

3 participants