@ai-ecoverse/slicc-bios 1.31.4 → 1.31.6

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
@@ -501,17 +501,27 @@ Limits:
501
501
 
502
502
  ## Certified packages
503
503
 
504
- [`src/packages/certs.json`](src/packages/certs.json) lists every certified version of the gated packages: slicc-kernel, slicc-cdp, mcpcat, and the `wasi-*`, `wasix-*`, `wasm-*` and `py-*` packages. Each entry has its npm integrity, and its tarball sha256 where the cert gave one. `test/integration/pins.test.mjs` fails when any lockfile seven ships (the base set, `/opt/agent`, the optional catalog with its nested dependencies, and Tailscale) pins a gated package that isn't listed there with the same integrity. It also fails when a pinned package's `engines.slicc-kernel` or kernel peer range isn't met by the pinned kernel. An uncertified bump, from Renovate or anyone, turns CI red. When homescoop (or the CDP coordinator, for slicc-cdp) certifies a version, add it here in the same PR that pins it.
504
+ Seven certifies a gated package (slicc-kernel, slicc-cdp, slicc-clipboard, slicc-jsh, mcpcat, and the `wasi-*`, `wasix-*`, `wasm-*` and `py-*` packages) by its integrity: a version is certified when [`src/packages/certs.json`](src/packages/certs.json) (the historic list, with its recorded `exception`s) or one of the lockfiles seven ships (the base set, `/opt/agent`, the optional catalog) carries it with that integrity. `src/seed/layer.js`'s `certifiedSet()` reads that union in the page, and a user's or a project's install that needs anything else is refused. A pin on main is certified because every pin a PR or merge group changes passes **release-state** in `ci / test` and bios's own cert-review in the queue. `test/integration/pins.test.mjs` checks the union covers every gated pin with its integrity (Tailscale's project included), and fails when a pinned package's `engines.slicc-kernel` or kernel peer range isn't met by the pinned kernel.
505
+
506
+ **release-state** ([`scripts/cert/release-state.mjs`](scripts/cert/release-state.mjs), code only) judges each gated pin and each `certs.json` line that a change adds, against the registry and its own repository's certification:
507
+ - **Always:** the registry's integrity equals the lockfile's (or the line's).
508
+ - **slicc-kernel, slicc-jsh, mcpcat, wasi-slicc (slicc-cli's):** npm provenance names the tarball and `<repo>/.github/workflows/release.yml` at `refs/heads/main`; that commit is on main and carries `cert-review` success, either a check run from app 15368 whose suite is a `merge_group` run of `.github/workflows/cert-review.yml` on that commit (cert-review v2), or, until the repo is on v2, a `cert-review` commit status from `github-actions[bot]`. A version-only release commit is judged by its parent. The kernel also passes on its npm `certified` tag. wasi-slicc counts only from 1.44.1, its first PR-certified version, and never 1.44.4, whose release run failed (slicc-cli coordinator). Residual until each of these repos is on v2 check runs: the commit-status rule trusts any same-repo workflow with `statuses: write`, so it trusts that repo's collaborators.
509
+ - **slicc-cdp, slicc-clipboard, wasm-tailscale:** the npm `certified` dist-tag is this version.
510
+ - **homescoop (`wasm-*`, `wasi-*`, `wasix-*`, `py-*`):** npm provenance names the tarball and homescoop's `ladder-build.yml` (or `publish.yml`) at `refs/heads/main`, any version, and homescoop's `certification-exceptions.json`, read at the commit pinned in `release-state.mjs`, neither fails the version (`verdict: fail`) nor requires a kernel bios doesn't pin (`verdict: requires`). An unreadable or unknown-shaped file fails closed.
511
+ It runs twice: in `ci / test` for quick feedback, and as cert-review's code check, from main's tree with the pull request's head as data, so the pull request's own code can't make it pass. A failure names the package and why, and the PR stays red until it pins a certified version. An `@ai-ecoverse` lockfile entry that doesn't resolve to a registry tarball with its integrity (a `tarball:` resolution, an alias, a link) fails it.
505
512
 
506
513
  ### Renovate keeps the pins current
507
514
 
508
515
  [`renovate.json`](renovate.json) bumps every `@ai-ecoverse/*` pin in the base set (`src/packages/package.json`), the optional catalog (`src/packages/optional/package.json`) and `/opt/agent` (`src/packages/agent/package.json`), with their npm and pnpm lockfiles.
509
516
 
510
517
  - **PRs:** homescoop's packages (`wasi-*`, `wasix-*`, `wasm-*`, `py-*`, `wasi-pnpm` included) come as one PR a day, between 00:00 and 06:00 UTC. The kernel (its base-set and `/opt/agent` pins together), slicc-cdp, slicc-agent, slicc-spectrum and slicc-jsh each get their own PR, and so does every other package. The grammars and Tailscale projects stay on the dependency dashboard.
511
- - **Automerge only when certified:** Renovate turns on auto-merge, so a PR goes through the merge queue once `ci / test` is green. `ci / test` ends with [`scripts/ci/certified.mjs`](scripts/ci/certified.mjs), on every PR. On a Renovate PR it checks each `@ai-ecoverse` pin the PR changes in those three files. On any other PR it checks each gated pin (`scripts/cert/apply.mjs`'s `GATED`: slicc-kernel, slicc-cdp, slicc-clipboard, slicc-jsh, mcpcat, `wasi-*`, `wasix-*`, `wasm-*`, `py-*`) the PR changes in those files, `src/packages/tailscale/package.json` or `src/packages/grammars/package.json`, so a hand-made pin needs the `cert-review` label. Cert review never runs fork code, so a fork's gated pin change has to come from a branch of this repository, and the gate says so. The gate fails unless, for each such pin, the latest cert review comment that names it (posted by `github-actions[bot]`, with `sha check ok`) has its `certified` line. Its verdict line is `cert-gate: CERTIFIED …`, `cert-gate: FAIL …` or `cert-gate: PASS <why it doesn't apply>`. So the first CI run of such a PR is red.
512
- - **Then cert review** (the `workflow_run` after CI) writes its verdict. After a certified verdict, its `cert / queue` job runs [`scripts/cert/apply.mjs`](scripts/cert/apply.mjs) from the base, which runs no code from the PR. That script runs the sha check again and adds each certified `certs.json:` line for a gated package that the PR's lockfiles pin with that integrity. The job commits the lines to the Renovate branch as `github-actions[bot]`, whose email is in `gitIgnoredAuthors`, so Renovate keeps rebasing the branch. Then it dispatches CI on it (`workflow_dispatch` with `pr`), since a push with `GITHUB_TOKEN` starts no workflow. That run's `ci / test` counts for the PR's head, and the queue takes it from there.
518
+ - **Automerge only when certified:** Renovate turns on auto-merge, so a PR goes through the merge queue once its required checks are green: `ci / test` (with release-state for every gated pin it changes) and `cert-review` (see [Certification review](#certification-review)). No bot writes to a Renovate branch: the shipped lockfiles are part of what seven certifies, so a certified pin needs no `certs.json` line.
513
519
  - **Known breaks** are `packageRules` with `allowedVersions`, each with its reason and issue in `description`: wasm-bash stays below 5.3.0-20 until a kernel with slicc-kernel#1146 is pinned, and wasi-pnpm skips the deprecated 12.9.1-11 and 12.9.1-12 (homescoop#1128). `test/integration/renovate.test.mjs` checks the config, the gate and the queue in plain node.
514
520
 
521
+ ### Certification review
522
+
523
+ [`.github/workflows/cert-review.yml`](.github/workflows/cert-review.yml) calls slicc-shared-web's cert-review v2 on every non-draft pull request into main and every merge group, and sets one `cert-review` check run on the head. Pull-request code runs only in CI: the `ci / cert evidence` job (`pull_request`, a read-only token, no secrets) re-runs each test file the shards failed three times on the head's tree and on main's, each with its own slicc CLI, runs each changed gated pin's scenario ([`scripts/cert/scenarios/<package>.txt`](scripts/cert/scenarios/), one command per line, with `# pass:` lines saying what output passes) in seven on both trees through `test:cert`, inspects each changed pin, and records release-state, all in the `cert-evidence` artifact ([`scripts/cert/evidence.mjs`](scripts/cert/evidence.mjs)). cert-review fetches that artifact and the shards' artifacts, from this PR's CI run and main's, by id and digest; the review reads them with Read, Glob and Grep only, against the rules in [`scripts/cert/review.txt`](scripts/cert/review.txt). A gated pin with no scenario is a known gap ("can't judge <package> in seven"). Changes to `scripts/cert/**`, `scripts/ci/**` or any workflow need the coordinator's `cert-review-approved`.
524
+
515
525
  ### Canary
516
526
 
517
527
  [`.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-bios",
3
- "version": "1.31.4",
3
+ "version": "1.31.6",
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",
@@ -42,12 +42,12 @@
42
42
  "format": "biome check --write ."
43
43
  },
44
44
  "devDependencies": {
45
- "@ai-ecoverse/slicc": "1.46.0",
45
+ "@ai-ecoverse/slicc": "1.46.1",
46
46
  "@ai-ecoverse/slicc-browsers": "1.9.0",
47
47
  "@ai-ecoverse/slicc-node": "2.5.1",
48
48
  "@ai-ecoverse/slicc-shared-web": "1.24.2",
49
49
  "@ai-ecoverse/slicc-spectrum": "1.100.0",
50
- "@ai-ecoverse/slicc-vault": "1.13.0",
50
+ "@ai-ecoverse/slicc-vault": "1.15.0",
51
51
  "@biomejs/biome": "2.5.15",
52
52
  "es-module-lexer": "3.0.3",
53
53
  "fake-indexeddb": "6.2.5",
@@ -56,6 +56,7 @@
56
56
  "monocart-coverage-reports": "2.13.2",
57
57
  "playwright-core": "1.64.0",
58
58
  "semantic-release": "25.0.9",
59
+ "semver": "7.8.5",
59
60
  "wrangler": "4.149.0",
60
61
  "ws": "8.22.0"
61
62
  }
@@ -6,7 +6,7 @@
6
6
  "": {
7
7
  "name": "slicc-bios-optional",
8
8
  "dependencies": {
9
- "@ai-ecoverse/mcpcat": "0.17.0",
9
+ "@ai-ecoverse/mcpcat": "0.17.1",
10
10
  "@ai-ecoverse/slicc-jsh": "0.45.4",
11
11
  "@ai-ecoverse/sliccy-browser": "0.1.29",
12
12
  "@ai-ecoverse/wasi-biome": "2.5.15-4",
@@ -33,9 +33,9 @@
33
33
  }
34
34
  },
35
35
  "node_modules/@ai-ecoverse/mcpcat": {
36
- "version": "0.17.0",
37
- "resolved": "https://registry.npmjs.org/@ai-ecoverse/mcpcat/-/mcpcat-0.17.0.tgz",
38
- "integrity": "sha512-LmiT/Ecom6SiUl9sR+4WVg6CYS+CpunXlL0Qvf1r01fuT06J08K5G3e6dO9wQXRYz4ST9Vp4firKIQM230GCiw==",
36
+ "version": "0.17.1",
37
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/mcpcat/-/mcpcat-0.17.1.tgz",
38
+ "integrity": "sha512-nBL0iokxOoGrH6URSfOQ1vnMd7uEMHIWH5B143XUI/92lplbtIARB27HcFv60n0gDfFhq1Z3fIJpFWumO4JZ7g==",
39
39
  "license": "Apache-2.0",
40
40
  "bin": {
41
41
  "mcpcat": "dist/host/mcpcat.mjs"
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "description": "The certified versions of the optional packages that seven's Install / Update panel offers. Never installed as a project: the panel runs pnpm add -g for each one.",
5
5
  "dependencies": {
6
- "@ai-ecoverse/mcpcat": "0.17.0",
6
+ "@ai-ecoverse/mcpcat": "0.17.1",
7
7
  "@ai-ecoverse/slicc-jsh": "0.45.4",
8
8
  "@ai-ecoverse/sliccy-browser": "0.1.29",
9
9
  "@ai-ecoverse/wasi-biome": "2.5.15-4",