diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index aeddabd1..fad12cb7 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -39,7 +39,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - name: Install dependencies run: bun install --frozen-lockfile @@ -68,7 +68,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - name: Install dependencies run: bun install --frozen-lockfile @@ -79,7 +79,7 @@ jobs: bun test packages/core/changeset-engine/test/changeset-engine.test.ts verify: - # Full verify runs once per OS at Node 22.22.x; Node 24.x and 25.x run only Node-runtime checks because Bun 1.4.3 executes the test suite. + # Full verify runs once per OS at Node 22.22.x; Node 24.x and 25.x run only Node-runtime checks because Bun 1.4.4 executes the test suite. if: github.event_name != 'workflow_dispatch' && needs.verify-topology.outputs.lane == 'matrix' needs: verify-topology name: "Verify execution: ${{ matrix.os }} / Node ${{ matrix.node-version }} / node compat" @@ -111,7 +111,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - name: Install dependencies run: bun install --frozen-lockfile @@ -179,7 +179,7 @@ jobs: name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - &split-install name: Install dependencies run: bun install --frozen-lockfile @@ -242,7 +242,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - name: Install dependencies run: bun install --frozen-lockfile - &split-plan-download @@ -292,7 +292,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - name: Install dependencies run: bun install --frozen-lockfile - name: Download run-bound discovery plan diff --git a/.github/workflows/windows-acl-diagnostics.yml b/.github/workflows/windows-acl-diagnostics.yml index acc7a53f..095f1858 100644 --- a/.github/workflows/windows-acl-diagnostics.yml +++ b/.github/workflows/windows-acl-diagnostics.yml @@ -30,7 +30,7 @@ jobs: node-version: 24.x - uses: oven-sh/setup-bun@v2 with: - bun-version: 1.4.3 + bun-version: 1.4.4 - run: bun install --frozen-lockfile # No prewarm: the existing creation case must perform the first native ACL call. - name: Existing first-create regression diff --git a/bun.lock b/bun.lock index aa8c5fb5..21a36a51 100644 --- a/bun.lock +++ b/bun.lock @@ -12,7 +12,7 @@ "@mermaid-js/mermaid-cli": "11.16.0", "@modelcontextprotocol/sdk": "1.30.1", "@types/node": "^26.0.0", - "bun-types": "1.4.3", + "bun-types": "1.4.4", "linkedom": "0.18.13", "mermaid": "11.16.1", "typescript": "^7.0.2", @@ -53,7 +53,7 @@ "name": "@archcontext/surfaces", "version": "0.14.1", "bin": { - "archctx": "./cli/src/main.ts", + "archctx": "./cli/bin/archctx", }, "dependencies": { "@archcontext/cloud": "workspace:*", @@ -372,7 +372,7 @@ "boolbase": ["boolbase@2.0.0", "", {}, "sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA=="], - "bun-types": ["bun-types@1.4.3", "", { "dependencies": { "@types/node": "*", "undici-types": "*" } }, "sha512-tinRJNGOmUN+tEAsn2y2e942n9JHRHR42iUYzDH75NmhJqVBokGSQkkfSFdNWwsANIdrK6ACH9t01M452YyTwg=="], + "bun-types": ["bun-types@1.4.4", "", { "dependencies": { "@types/node": "*", "undici-types": "*" } }, "sha512-yjrJh5oGX7mMPKGd19YXyIjmEuj4G4zNC30bs7PM9Az7NQ3ndF3j6hbeRdvJTRQEhJ/FYQwW0a2moweEi2hMxQ=="], "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], diff --git a/docs/runbooks/governance-revalidation.md b/docs/runbooks/governance-revalidation.md index 4562dce8..4980f24f 100644 --- a/docs/runbooks/governance-revalidation.md +++ b/docs/runbooks/governance-revalidation.md @@ -1,6 +1,6 @@ # Governance revalidation -The existing Verify workflow accepts a manual event that runs exactly N + 3 jobs: the Linux pre job, the N Linux shard jobs and the Linux post job (`Verify execution: ubuntu-latest / Node 22.22.x / pre`, `/ shard 1` … `/ shard N`, `/ post`, with N from `.github/verify-sharding.json`), then Governance. The Linux jobs run full local Verify as pre-gates, whole-file test shards with a coverage proof, and post-gates, each within its 20-minute timeout. Governance checks the composite receipt that [ADR-0055](../adr/ADR-0055-governance-receipt-spans-run-attempts.md) defines, then runs `bun run verify:governance --ci-inspect` within its 15-minute timeout; no inspection command follows the receipt check. All of them use Node 22.22.x, Bun 1.4.3 and read-only repository permissions. Topology, node compat, the generic split matrix, Linux arm64, job evidence, summaries and runner cost do not run on manual dispatch. Locally, `bun run verify:governance` runs full Verify only. Pushes to main and matrix-lane pull requests run all nine targets: full Verify at Node 22.22.x on each OS and Node compatibility jobs for Node 24.x and 25.x; linux-lane pull requests run only the Linux split jobs and Governance (see [verify-sharding.md](verify-sharding.md#pull-request-lanes)). Event-specific concurrency prevents a manual run from cancelling an automatic matrix. +The existing Verify workflow accepts a manual event that runs exactly N + 3 jobs: the Linux pre job, the N Linux shard jobs and the Linux post job (`Verify execution: ubuntu-latest / Node 22.22.x / pre`, `/ shard 1` … `/ shard N`, `/ post`, with N from `.github/verify-sharding.json`), then Governance. The Linux jobs run full local Verify as pre-gates, whole-file test shards with a coverage proof, and post-gates, each within its 20-minute timeout. Governance checks the composite receipt that [ADR-0055](../adr/ADR-0055-governance-receipt-spans-run-attempts.md) defines, then runs `bun run verify:governance --ci-inspect` within its 15-minute timeout; no inspection command follows the receipt check. All of them use Node 22.22.x, Bun 1.4.4 and read-only repository permissions. Topology, node compat, the generic split matrix, Linux arm64, job evidence, summaries and runner cost do not run on manual dispatch. Locally, `bun run verify:governance` runs full Verify only. Pushes to main and matrix-lane pull requests run all nine targets: full Verify at Node 22.22.x on each OS and Node compatibility jobs for Node 24.x and 25.x; linux-lane pull requests run only the Linux split jobs and Governance (see [verify-sharding.md](verify-sharding.md#pull-request-lanes)). Event-specific concurrency prevents a manual run from cancelling an automatic matrix. ## Operator procedure diff --git a/docs/runbooks/verify-sharding.md b/docs/runbooks/verify-sharding.md index 7324907e..6b136e3b 100644 --- a/docs/runbooks/verify-sharding.md +++ b/docs/runbooks/verify-sharding.md @@ -20,7 +20,7 @@ No test machine state is migrated. The pre CodeGraph Node-selector gate creates ## Discovery and coverage -The pinned Bun1.4.3 runner performs its real discovery with an impossible test-name pattern, writing a **fresh native timing inventory**. This metadata-only process executes module registration but no test bodies. Its documented-by-fixture no-match exit is accepted only for this inventory operation; import/evaluation failures are rejected. The inventory includes files with no registered tests. It respects Bun's own patterns, exclusions and path handling rather than duplicating them in a glob. +The pinned Bun1.4.4 runner performs its real discovery with an impossible test-name pattern, writing a **fresh native timing inventory**. This metadata-only process executes module registration but no test bodies. Its documented-by-fixture no-match exit is accepted only for this inventory operation; import/evaluation failures are rejected. The inventory includes files with no registered tests. It respects Bun's own patterns, exclusions and path handling rather than duplicating them in a glob. The controller balances all currently discovered paths using the historical cost weights, assigning an explicit default scheduling weight to newly added paths and ignoring weights for deleted paths. Each shard executes unfiltered, exact file arguments through `spawn` argument arrays, so spaces are preserved. Its measured timing inventory starts empty and is never seeded with weights. An empty planned shard writes an explicit zero-file report and never launches an accidental unfiltered full suite. @@ -30,7 +30,7 @@ The nine final required-check names remain `OS / Node version`, as required by t ## Node version coverage -Full verification runs once per OS at Node 22.22.x, the `engines` minimum (`>=22.22 <26`). Every `bun test` file executes on the pinned Bun 1.4.3 regardless of the installed Node, so repeating the whole suite on Node 24.x and 25.x re-ran identical Bun tests. Those six targets now run one `node compat` job each, which executes `bun run verify:node-compat`: the CodeGraph Node-selector gate, the packaged CLI smoke, the test files that spawn the `node` executable from `PATH`, and the contracts publishability test, whose `npm pack` comes from the npm bundled with each Node version. The workflow runs 35 jobs: 21 execution jobs (three split targets of pre, three shards and post, and six node compat), the topology, collector, cost and arm64 jobs, Governance and nine summaries. +Full verification runs once per OS at Node 22.22.x, the `engines` minimum (`>=22.22 <26`). Every `bun test` file executes on the pinned Bun 1.4.4 regardless of the installed Node, so repeating the whole suite on Node 24.x and 25.x re-ran identical Bun tests. Those six targets now run one `node compat` job each, which executes `bun run verify:node-compat`: the CodeGraph Node-selector gate, the packaged CLI smoke, the test files that spawn the `node` executable from `PATH`, and the contracts publishability test, whose `npm pack` comes from the npm bundled with each Node version. The workflow runs 35 jobs: 21 execution jobs (three split targets of pre, three shards and post, and six node compat), the topology, collector, cost and arm64 jobs, Governance and nine summaries. The nine `OS / Node version` check names and the nine `platform-ipc-permission-OS-node-version` artifacts remain, each produced once on the real OS runner with the real Node version. A Node 24.x or 25.x cell now means Node runtime compatibility, not a full suite pass; Node 22.22.x is the full-suite floor. The split configuration refuses a split target at any other Node version. A new test file that spawns `node` must be added to `verify:node-compat`. diff --git a/package.json b/package.json index 3d647c66..d635809b 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.14.1", "private": true, "type": "module", - "packageManager": "bun@1.4.3", + "packageManager": "bun@1.4.4", "workspaces": [ "packages/contracts", "packages/core", @@ -86,7 +86,7 @@ "@mermaid-js/mermaid-cli": "11.16.0", "@modelcontextprotocol/sdk": "1.30.1", "@types/node": "^26.0.0", - "bun-types": "1.4.3", + "bun-types": "1.4.4", "linkedom": "0.18.13", "mermaid": "11.16.1", "typescript": "^7.0.2" diff --git a/packages/contracts/fixtures/valid/product-version-manifest.json b/packages/contracts/fixtures/valid/product-version-manifest.json index 2842093e..76d84783 100644 --- a/packages/contracts/fixtures/valid/product-version-manifest.json +++ b/packages/contracts/fixtures/valid/product-version-manifest.json @@ -5,7 +5,7 @@ "version": "0.14.1", "distribution": "one-package" }, - "packageManager": "bun@1.4.3", + "packageManager": "bun@1.4.4", "engines": { "node": ">=22.22 <26" }, diff --git a/packages/contracts/src/product-version.ts b/packages/contracts/src/product-version.ts index 58489c78..25d6e715 100644 --- a/packages/contracts/src/product-version.ts +++ b/packages/contracts/src/product-version.ts @@ -1,6 +1,6 @@ export const ARCHCONTEXT_PRODUCT_NAME = "archctx"; export const ARCHCONTEXT_PRODUCT_VERSION = "0.14.1"; -export const ARCHCONTEXT_PACKAGE_MANAGER = "bun@1.4.3"; +export const ARCHCONTEXT_PACKAGE_MANAGER = "bun@1.4.4"; export const ARCHCONTEXT_NODE_RANGE = ">=22.22 <26"; export const LOCAL_RUNTIME_RPC_SCHEMA_VERSION = "archcontext.runtime-rpc/v2"; export const ARCHCONTEXT_SCHEMA_SET_VERSION = "2026-07-11.explorer-view-v2"; diff --git a/scripts/verify-ci.mjs b/scripts/verify-ci.mjs index eaf4c7f9..652e33b7 100644 --- a/scripts/verify-ci.mjs +++ b/scripts/verify-ci.mjs @@ -129,7 +129,7 @@ export function discoverTestFiles(root, bun = "bun") { }); const output = `${result.stdout ?? ""}\n${result.stderr ?? ""}`; if (result.error) throw result.error; - // Bun 1.4.3 deliberately exits 1 when a name pattern matches no tests. Other failures are refused. + // Bun 1.4.4 deliberately exits 1 when a name pattern matches no tests. Other failures are refused. const inventoryOnly = /error: regex "a\^" matched 0 tests\. Searched (\d+) files?\b/.exec(output); if (!inventoryOnly || result.status !== 1 || /\(fail\)|\n\s*[1-9]\d* fail\b/.test(output) || (output.match(/\berror:/g) ?? []).length !== 1) {