@ai-ecoverse/slicc-bios 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -461,7 +461,11 @@ Limits:
461
461
 
462
462
  [`.github/workflows/canary.yml`](.github/workflows/canary.yml) answers "is bios main green with these candidate versions?" before anyone asks for a pin. It never pushes, pins or opens a PR: it reports.
463
463
 
464
- - **Triggers:** `workflow_dispatch` and `workflow_call` with `overrides`, a JSON list of `name@version` (`["@ai-ecoverse/slicc-kernel@1.81.0"]`), and optionally `runner`, `shards` (names from [`scripts/canary/shards.json`](scripts/canary/shards.json); ci.yml's `follow-chat`, `remote-pydata`, `users-agent-ui`, `packages-update-cdp`, `guard`, `k4-link` and `rest` by default, or `sweep` for just the base-set sweep and the certs check), `expect` and `bios-ref` (any branch or sha of slicc-bios: the shard jobs check it out and lay this ref's `scripts/canary`, and `sweep.test.mjs` if it has none, over it; a ref whose `pins.test.mjs` has no canary mode gets the candidates in its working copy of `certs.json` instead, and the report still lists them as candidates). A proof in `proofs.json` can name its own `ref` the same way. An hourly `schedule` checks npm's `latest` of every kernel, jsh, cdp, agent, `wasm-*`, `wasi-*`, `wasix-*` and `py-*` package that a `src/packages/**/package.json` pins, and runs once with every newer one as the overrides, only when that list differs from the last scheduled canary's (its inputs are kept in the Actions cache). A `pull_request` trigger, filtered to the canary's own files, runs the proof in [`scripts/canary/proofs.json`](scripts/canary/proofs.json) from one plan job, cancelling a superseded run: kernel 1.78.0 on the `sweep` shard must regress grep, sed, jq, xz, findutils, diffutils and patch with exit 70 (kernel #483).
464
+ - **Triggers:** `workflow_dispatch` and `workflow_call` with `overrides`, a JSON list of `name@version` (`["@ai-ecoverse/slicc-kernel@1.81.0"]`), and optionally `runner`, `shards` (names from [`scripts/canary/shards.json`](scripts/canary/shards.json); ci.yml's `follow-chat`, `remote-pydata`, `users-agent-ui`, `packages-update-cdp`, `guard`, `k4-link` and `rest` by default, or `sweep` for just the base-set sweep and the certs check), `expect` and `bios-ref` (any branch or sha of slicc-bios: the shard jobs check it out and lay this ref's `scripts/canary`, and `sweep.test.mjs` if it has none, over it; a ref whose `pins.test.mjs` has no canary mode gets the candidates in its working copy of `certs.json` instead, and the report still lists them as candidates). A proof in `proofs.json` can name its own `ref` the same way. An hourly `schedule` checks npm's `latest` of every kernel, jsh, cdp, agent, `wasm-*`, `wasi-*`, `wasix-*` and `py-*` package that a `src/packages/**/package.json` pins, and runs once with every newer one as the overrides, only when that list differs from the last scheduled canary's (its inputs are kept in the Actions cache). A `pull_request` trigger, filtered to the canary's own files, runs the proof in [`scripts/canary/proofs.json`](scripts/canary/proofs.json) from one plan job, cancelling a superseded run: kernel 1.78.0 on the `sweep` shard must regress grep, sed, jq, xz, findutils, diffutils and patch with exit 70 (kernel #483). A second proof packs `@ai-ecoverse/slicc-cdp@1.26.2` with `npm pack`, uploads it from the plan job, and runs it as a candidate artifact on `packages-update-cdp` and `guard` with `repeat: 3`.
465
+ - **A candidate from another repo's run:** `candidate-package` (the package it replaces, `@ai-ecoverse/slicc-cdp`), `candidate-artifact` (an artifact holding one `npm pack` tarball of it), `candidate-run` (the run that uploaded it), `candidate-sha256` and optionally `candidate-repo` (the caller's repository by default). Each shard job downloads the artifact with `github.token`, which under `workflow_call` is the caller's, so the caller's job needs `actions: read`. [`override-pins.mjs`](scripts/canary/override-pins.mjs) checks the tarball's sha256 before it reads anything and refuses a mismatch, then checks the tarball is that package with an exact version. It seeds the harness download cache with the bytes at the npm URL of that version, and rewrites the pins and locks through a local registry that serves npm's packuments with that version added, so an unpublished `x.y.z-pr.N.M` locks like a published one (npm's lock gets the registry URL back). Everything else stays a registry version. The report lists it as `candidate (artifact <run>/<name>, sha256 …)`.
466
+ - **`repeat`** (1 to 10, default 1): each selected test file runs that many times with the candidates, and the files with a failure run that many times on main's pins. A test failing in every candidate run and no baseline run is a regression, one failing in every run of both is a failure on both, and anything mixed is flaky. Each row carries its counts, `candidate 2/3, baseline 0/3`.
467
+ - **`result`**, a `workflow_call` output next to `ok`: the JSON summary (`ok`, `counts`, `regressions`, `both`, `flaky`, `failures`, `missingShards`, `unexplainedExits`, `candidates`, `overrides`, `repeat`) plus the `canary` artifact's name and URL.
468
+ - **Permissions:** `contents: read` and `actions: read`, no secrets and no `id-token`. A caller outside bios runs the plan with its inputs: the PR proofs and the hourly npm check run only for bios's own triggers.
465
469
  - **Jobs:** one plan job, one job per shard of each run, and one report job, because the queue for a runner costs more than the work.
466
470
  - **Runner:** fork code never runs on the org's Cloud Run pools. A same-repo `pull_request` (the proofs from our own branches), or a `schedule`, `workflow_dispatch`, `workflow_run` or `release` run on `main` (any `bios-ref`), puts the shard jobs on the `runner` input, else the `CERT_RUNNER` repository variable (`cloud-run-bench`), and the light plan and report jobs on `CERT_LIGHT_RUNNER` (`cloud-run`). Everything else runs on `ubuntu-latest`, and the `runner` input is ignored: fork pull requests, and dispatches from any other branch. Under `workflow_call` the same check reads the caller's event. The pools run with "no new privileges", so `sudo` can't become root there: the shard job installs Chromium's system libraries only when `sudo -n true` works, and otherwise relies on the image's.
467
471
  - **Pins:** [`scripts/canary/override-pins.mjs`](scripts/canary/override-pins.mjs) `name@version …` fetches each tarball through the harness download cache (so the tests find it there), checks it against npm's sha512 and records its sha256. It sets the version in every `package.json` under `src/packages` that pins the package and lets npm (`--package-lock-only`) and pnpm 12 (`--lockfile-only`) rewrite that directory's lockfiles, so a dependency that moves with the package (an agent release taking a newer slicc-browsers) moves in the lock too. A package that is only a dependency in a pnpm lock is forced with an `overrides` entry in that directory's `pnpm-workspace.yaml`. One that is only a dependency in an npm lock (wasm-git's own wasm-bash in the optional catalog) is left alone and reported as held. It writes `node_modules/.cache/slicc-canary/pins.json`, whose `candidates` are the gated packages the locks now pin that `certs.json` doesn't certify.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-bios",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "Slim loader that boots SLICC into OPFS and serves the UI from there",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -45,7 +45,7 @@
45
45
  "@ai-ecoverse/slicc": "1.42.0",
46
46
  "@ai-ecoverse/slicc-browsers": "1.7.6",
47
47
  "@ai-ecoverse/slicc-node": "2.5.1",
48
- "@ai-ecoverse/slicc-shared-web": "1.20.0",
48
+ "@ai-ecoverse/slicc-shared-web": "1.23.1",
49
49
  "@ai-ecoverse/slicc-spectrum": "1.77.0",
50
50
  "@ai-ecoverse/slicc-vault": "1.9.1",
51
51
  "@biomejs/biome": "2.5.15",
@@ -4,6 +4,6 @@
4
4
  "description": "SLICC's agent, which the UI installs with pnpm in the background into /opt/agent in OPFS",
5
5
  "dependencies": {
6
6
  "@ai-ecoverse/slicc-agent": "5.0.3",
7
- "@ai-ecoverse/slicc-kernel": "1.110.1"
7
+ "@ai-ecoverse/slicc-kernel": "1.113.0"
8
8
  }
9
9
  }
@@ -13,10 +13,10 @@ importers:
13
13
  dependencies:
14
14
  '@ai-ecoverse/slicc-agent':
15
15
  specifier: 5.0.3
16
- version: 5.0.3(@ai-ecoverse/slicc-kernel@1.110.1)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
16
+ version: 5.0.3(@ai-ecoverse/slicc-kernel@1.113.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
17
17
  '@ai-ecoverse/slicc-kernel':
18
- specifier: 1.110.1
19
- version: 1.110.1
18
+ specifier: 1.113.0
19
+ version: 1.113.0
20
20
 
21
21
  packages:
22
22
 
@@ -34,8 +34,8 @@ packages:
34
34
  resolution: {integrity: sha512-35vGFMbZrl33ZQ9/VgjwZDBXp0RP87mKY0hnIG31tW5Nt5hh+icdp+3Y/t1kypoENAre+jnVEDa9W/H+yK6zyA==}
35
35
  engines: {node: '>=24'}
36
36
 
37
- '@ai-ecoverse/slicc-kernel@1.110.1':
38
- resolution: {integrity: sha512-9Qh5eitnzfi61tX4mLnCmGyJAMirdYgUN+FSLQvwGoOGY0XydTgJUJ+96jk2gtqmH3c1iyUHYYf2g0a9KUdJ9g==}
37
+ '@ai-ecoverse/slicc-kernel@1.113.0':
38
+ resolution: {integrity: sha512-PGJvZUm/oQYuS9pbUxDIpBSCeyaW91wDN2yWPCZIv664WDWKsiCTeQ1c4i8xU4Bq7C66viFK6EzZhvvofQ6b3Q==}
39
39
  engines: {node: '>=24'}
40
40
 
41
41
  '@ai-ecoverse/slicc-vault@1.9.1':
@@ -324,10 +324,10 @@ packages:
324
324
 
325
325
  snapshots:
326
326
 
327
- '@ai-ecoverse/slicc-agent@5.0.3(@ai-ecoverse/slicc-kernel@1.110.1)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
327
+ '@ai-ecoverse/slicc-agent@5.0.3(@ai-ecoverse/slicc-kernel@1.113.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
328
328
  dependencies:
329
329
  '@ai-ecoverse/slicc-browsers': 1.7.1
330
- '@ai-ecoverse/slicc-kernel': 1.110.1
330
+ '@ai-ecoverse/slicc-kernel': 1.113.0
331
331
  '@ai-ecoverse/slicc-vault': 1.9.1
332
332
  '@earendil-works/chord': 1.2.0
333
333
  '@earendil-works/pi-ai': 1.2.0(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
@@ -348,7 +348,7 @@ snapshots:
348
348
 
349
349
  '@ai-ecoverse/slicc-browsers@1.7.1': {}
350
350
 
351
- '@ai-ecoverse/slicc-kernel@1.110.1': {}
351
+ '@ai-ecoverse/slicc-kernel@1.113.0': {}
352
352
 
353
353
  '@ai-ecoverse/slicc-vault@1.9.1': {}
354
354
 
@@ -283,6 +283,10 @@
283
283
  "integrity": "sha512-9Qh5eitnzfi61tX4mLnCmGyJAMirdYgUN+FSLQvwGoOGY0XydTgJUJ+96jk2gtqmH3c1iyUHYYf2g0a9KUdJ9g==",
284
284
  "sha256": "f59beab296b367cf84c28d0343d656b12fe9d3ebdc5045d0106376bd904c3f68"
285
285
  },
286
+ "@ai-ecoverse/slicc-kernel@1.113.0": {
287
+ "integrity": "sha512-PGJvZUm/oQYuS9pbUxDIpBSCeyaW91wDN2yWPCZIv664WDWKsiCTeQ1c4i8xU4Bq7C66viFK6EzZhvvofQ6b3Q==",
288
+ "sha256": "a2669581cdf276e288ae4681a10eefc865a4a435ff07591b1d69de58275e3782"
289
+ },
286
290
  "@ai-ecoverse/wasi-biome@2.5.15-2": {
287
291
  "integrity": "sha512-5oIfngw8Ln2/ddCJ0wtqMoSnW+UO2zuih0+x1CNDbwKkB18TxuWoI60QFQySjd69N6eP+blL/stz/AZyoYpeuw==",
288
292
  "sha256": "25599e4317ec2e7ca9a447ff99ac01f271358cd06bd2d727e6b28b10c05bf44a"
@@ -9,7 +9,7 @@
9
9
  "@ai-ecoverse/slicc-browsers": "1.7.6",
10
10
  "@ai-ecoverse/slicc-cdp": "1.25.1",
11
11
  "@ai-ecoverse/slicc-clipboard": "1.0.2",
12
- "@ai-ecoverse/slicc-kernel": "1.110.1",
12
+ "@ai-ecoverse/slicc-kernel": "1.113.0",
13
13
  "@ai-ecoverse/slicc-spectrum": "1.77.0",
14
14
  "@ai-ecoverse/wasi-pnpm": "12.9.1-8",
15
15
  "@ai-ecoverse/wasi-ripgrep": "15.2.0-3",
@@ -68,9 +68,9 @@
68
68
  }
69
69
  },
70
70
  "node_modules/@ai-ecoverse/slicc-kernel": {
71
- "version": "1.110.1",
72
- "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-kernel/-/slicc-kernel-1.110.1.tgz",
73
- "integrity": "sha512-9Qh5eitnzfi61tX4mLnCmGyJAMirdYgUN+FSLQvwGoOGY0XydTgJUJ+96jk2gtqmH3c1iyUHYYf2g0a9KUdJ9g==",
71
+ "version": "1.113.0",
72
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-kernel/-/slicc-kernel-1.113.0.tgz",
73
+ "integrity": "sha512-PGJvZUm/oQYuS9pbUxDIpBSCeyaW91wDN2yWPCZIv664WDWKsiCTeQ1c4i8xU4Bq7C66viFK6EzZhvvofQ6b3Q==",
74
74
  "license": "Apache-2.0",
75
75
  "engines": {
76
76
  "node": ">=24"
@@ -6,7 +6,7 @@
6
6
  "@ai-ecoverse/slicc-browsers": "1.7.6",
7
7
  "@ai-ecoverse/slicc-cdp": "1.25.1",
8
8
  "@ai-ecoverse/slicc-clipboard": "1.0.2",
9
- "@ai-ecoverse/slicc-kernel": "1.110.1",
9
+ "@ai-ecoverse/slicc-kernel": "1.113.0",
10
10
  "@ai-ecoverse/slicc-spectrum": "1.77.0",
11
11
  "@ai-ecoverse/wasi-pnpm": "12.9.1-8",
12
12
  "@ai-ecoverse/wasi-ripgrep": "15.2.0-3",
@@ -18,8 +18,8 @@ importers:
18
18
  specifier: 1.0.2
19
19
  version: 1.0.2
20
20
  '@ai-ecoverse/slicc-kernel':
21
- specifier: 1.110.1
22
- version: 1.110.1
21
+ specifier: 1.113.0
22
+ version: 1.113.0
23
23
  '@ai-ecoverse/slicc-spectrum':
24
24
  specifier: 1.77.0
25
25
  version: 1.77.0
@@ -107,8 +107,8 @@ packages:
107
107
  resolution: {integrity: sha512-p7b1h85qkiU0LKjNLCLiU7GVXjGigkyR2+VUCInM1cZo2yjLFxr7tGAOO09e6OG9nB7XKiQn3W88wb3s0gxy+g==}
108
108
  engines: {node: '>=24', slicc-kernel: '>=1.75.0'}
109
109
 
110
- '@ai-ecoverse/slicc-kernel@1.110.1':
111
- resolution: {integrity: sha512-9Qh5eitnzfi61tX4mLnCmGyJAMirdYgUN+FSLQvwGoOGY0XydTgJUJ+96jk2gtqmH3c1iyUHYYf2g0a9KUdJ9g==}
110
+ '@ai-ecoverse/slicc-kernel@1.113.0':
111
+ resolution: {integrity: sha512-PGJvZUm/oQYuS9pbUxDIpBSCeyaW91wDN2yWPCZIv664WDWKsiCTeQ1c4i8xU4Bq7C66viFK6EzZhvvofQ6b3Q==}
112
112
  engines: {node: '>=24'}
113
113
 
114
114
  '@ai-ecoverse/slicc-spectrum@1.77.0':
@@ -205,7 +205,7 @@ snapshots:
205
205
 
206
206
  '@ai-ecoverse/slicc-clipboard@1.0.2': {}
207
207
 
208
- '@ai-ecoverse/slicc-kernel@1.110.1': {}
208
+ '@ai-ecoverse/slicc-kernel@1.113.0': {}
209
209
 
210
210
  '@ai-ecoverse/slicc-spectrum@1.77.0': {}
211
211