Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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"
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows-acl-diagnostics.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/runbooks/governance-revalidation.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down
4 changes: 2 additions & 2 deletions docs/runbooks/verify-sharding.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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`.

Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/contracts/src/product-version.ts
Original file line number Diff line number Diff line change
@@ -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";
Expand Down
2 changes: 1 addition & 1 deletion scripts/verify-ci.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Loading