@ai-ecoverse/slicc-bios 1.27.1 → 1.28.1

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
@@ -181,8 +181,8 @@ Below the system rows, Install / Update offers **Optional packages** (spectrum
181
181
  - **Readable by everyone:** after every pnpm install of `/opt/agent`, `/opt/grammars` and an optional project in `/opt/slicc`, bios makes that tree readable by everyone, as root: one `find` selects the files without `a+r`, the executables without `a+x` and the directories without `a+x`, and runs `chmod a+rX` on only those, so a tree of 15,000 entries with one `0600` file pays for one walk and one `chmod`, not 15,000. pnpm writes some files `0600`, such as `node_modules/.pnpm-workspace-state-v1.json`, and with kernel users every user must be able to read seven's installed packages. An install from before this runs the same pass once at its next check, marked by `var/lib/slicc/<project>/readable`.
182
182
  - **Failures** lead with one sentence and keep pnpm's output, starting with the package and version, under *Install log*, with **Retry**.
183
183
  - **Withdrawn and kept as exceptions** (homescoop#858/#859, #864): uv, esbuild, tsc and buf are withdrawn until attested rebuilds. They're retired rows (*No longer offered*, with Remove for an earlier install), and their certs lines are gone. Instead, use `pip` for uv's work for now (uv returns as `@ai-ecoverse/wasi-uv`, Astral's uv, once that's certified), and install esbuild and typescript straight from npm with `pnpm add -g`; buf has no stand-in. **git** and **gh** stay as recorded supply-chain exceptions until their attested rebuilds: their `certs.json` entries carry an `exception` field, which `pins.test.mjs` lists, and any other uncertified pin still fails it.
184
- - **Python data tools are back** as homescoop's attested CI builds (A3, A4): py-numpy 2.3.2-12, py-pandas 2.3.2-12 and py-matplotlib 3.11.2-10, with contourpy, kiwisolver, pillow and their pure dependencies, on the catalog's Python 3.14.2-28. They replace the withdrawn builds (homescoop#826, #730): no py-numpy 2.3.2-4 to -10 or py-pandas 2.3.2-5 to -11 is certified, and an install from before the withdrawal (version 2026.10.12) shows as outdated, with **Update**. numpy 2.3.2-12 has homescoop#1082's fix: `numpy.linalg` raises `LinAlgError` on a singular matrix instead of returning NaN. **scipy is not back yet:** its build isn't attested, so the project leaves it out and `certs.json` has no scipy line.
185
- - **Project entries** (`kind: "project"`): **Python data tools** (numpy, pandas and matplotlib, about 160 MB on disk) can't be a global add. pnpm 12 gives each global add its own isolated project, so every py-* package would carry its own Python (about 1 GB in total), and Python wouldn't find the packages. So the entry is a pnpm project of its own in [`src/packages/optional/projects/pydata/`](src/packages/optional/projects/pydata/), which locks one numpy and no Python of its own:
184
+ - **Python data tools are back** as homescoop's attested CI builds (A3, A4): py-numpy 2.3.2-12, py-pandas 2.3.2-12 and py-matplotlib 3.11.2-10, with contourpy, kiwisolver, pillow and their pure dependencies, on the catalog's Python 3.14.2-28. They replace the withdrawn builds (homescoop#826, #730): no py-numpy 2.3.2-4 to -10 or py-pandas 2.3.2-5 to -11 is certified, and an install from before the withdrawal (version 2026.10.12) shows as outdated, with **Update**. numpy 2.3.2-12 has homescoop#1082's fix: `numpy.linalg` raises `LinAlgError` on a singular matrix instead of returning NaN. **scipy is back too:** py-scipy 1.18.1-1, an attested CI build (homescoop#1238) against the same numpy 2.3.2-12, with static OpenBLAS. Every scipy module loads except the deprecated `scipy.odr`, which needs Fortran, so `import scipy.odr` fails. The project's version is now 2026.10.19, so an install without scipy shows as outdated, with **Update**.
185
+ - **Project entries** (`kind: "project"`): **Python data tools** (numpy, pandas, matplotlib and scipy, about 240 MB on disk) can't be a global add. pnpm 12 gives each global add its own isolated project, so every py-* package would carry its own Python (about 1 GB in total), and Python wouldn't find the packages. So the entry is a pnpm project of its own in [`src/packages/optional/projects/pydata/`](src/packages/optional/projects/pydata/), which locks one numpy and no Python of its own:
186
186
  - **Install:** bios writes the project to `/opt/slicc/pydata` and installs it with `pnpm install --frozen-lockfile`, so pnpm checks every integrity against the lockfile bios ships. Its `pnpm-workspace.yaml` overrides `@ai-ecoverse/wasix-python` to nothing, and the entry `requires` the catalog's Python, which runs it.
187
187
  - **How Python finds it:** bios writes `/opt/slicc/python/slicc-pydata.pth`, which lists each package's site-packages (from its `slicc.python.sitePackages`), next to a `sitecustomize.py` that adds that folder as a site directory. The page's kernel puts `/opt/slicc/python` on every process's `PYTHONPATH`, so `python3` imports the packages from any shell or agent, as any user. Python's own discovery only looks in its own project, so the `.pth` stays. A `.pth` that an earlier version wrote to `/root/.local` is moved there the next time the optional packages are listed. The kernel's environment reaches every process, whichever client or user starts it, `sudo` included. `python -I` and `python -E` ignore `PYTHONPATH`, so they don't see the data tools; that's a known gap.
188
188
  - **State and Remove:** a receipt in `var/lib/slicc/optional/pydata/` records the installed version. **Remove** deletes the project, the `.pth` and the receipt. A project that `retired.json` lists still shows while it's installed, with only **Remove**.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-bios",
3
- "version": "1.27.1",
3
+ "version": "1.28.1",
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",
@@ -47,7 +47,7 @@
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.90.0",
50
- "@ai-ecoverse/slicc-vault": "1.12.2",
50
+ "@ai-ecoverse/slicc-vault": "1.13.0",
51
51
  "@biomejs/biome": "2.5.15",
52
52
  "es-module-lexer": "3.0.3",
53
53
  "fake-indexeddb": "6.2.5",
@@ -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": "6.6.0",
7
- "@ai-ecoverse/slicc-kernel": "1.128.0"
7
+ "@ai-ecoverse/slicc-kernel": "1.129.0"
8
8
  }
9
9
  }
@@ -13,10 +13,10 @@ importers:
13
13
  dependencies:
14
14
  '@ai-ecoverse/slicc-agent':
15
15
  specifier: 6.6.0
16
- version: 6.6.0(@ai-ecoverse/slicc-kernel@1.128.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
16
+ version: 6.6.0(@ai-ecoverse/slicc-kernel@1.129.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.128.0
19
- version: 1.128.0
18
+ specifier: 1.129.0
19
+ version: 1.129.0
20
20
 
21
21
  packages:
22
22
 
@@ -34,8 +34,8 @@ packages:
34
34
  resolution: {integrity: sha512-Ec91bcUjUORvGzC1YQ9BJ+0N17T8pJMITcAkVSVFayO0cq5OP8T1kXrMC/LoXVqLcOjo8kmxEVsu/qkzylyNFw==}
35
35
  engines: {node: '>=24'}
36
36
 
37
- '@ai-ecoverse/slicc-kernel@1.128.0':
38
- resolution: {integrity: sha512-zj4hVv8H0cNrwbMs8NcFX2jFQ9mFE1uK+Yv0+4cTzHS6ploQH4HSySv62oWjAyBl+XRfhXJZNyZoXE5hL+d8nA==}
37
+ '@ai-ecoverse/slicc-kernel@1.129.0':
38
+ resolution: {integrity: sha512-/R8aDxfhTQNsloF9Z/zVS+4nhykFF8lhu6rJ3nPTPjHs+wi3hnaRQE/Rj9ceZuLf4J/bDdoyxzYIAZsBdzHe8g==}
39
39
  engines: {node: '>=24'}
40
40
 
41
41
  '@ai-ecoverse/slicc-vault@1.12.1':
@@ -324,10 +324,10 @@ packages:
324
324
 
325
325
  snapshots:
326
326
 
327
- '@ai-ecoverse/slicc-agent@6.6.0(@ai-ecoverse/slicc-kernel@1.128.0)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
327
+ '@ai-ecoverse/slicc-agent@6.6.0(@ai-ecoverse/slicc-kernel@1.129.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.8.5
330
- '@ai-ecoverse/slicc-kernel': 1.128.0
330
+ '@ai-ecoverse/slicc-kernel': 1.129.0
331
331
  '@ai-ecoverse/slicc-vault': 1.12.1
332
332
  '@aws-sdk/middleware-websocket': 3.972.54
333
333
  '@earendil-works/chord': 1.3.0
@@ -349,7 +349,7 @@ snapshots:
349
349
 
350
350
  '@ai-ecoverse/slicc-browsers@1.8.5': {}
351
351
 
352
- '@ai-ecoverse/slicc-kernel@1.128.0': {}
352
+ '@ai-ecoverse/slicc-kernel@1.129.0': {}
353
353
 
354
354
  '@ai-ecoverse/slicc-vault@1.12.1': {}
355
355
 
@@ -79,6 +79,10 @@
79
79
  "integrity": "sha512-9MSaqY1ib8QPFsJsdgHVbmefztHru1q9EGoBEVq3jrcLRDWEIl5d2nFGgM5f6kVxzuAbVnOwrznY1yV1HjBLJQ==",
80
80
  "sha256": "2810813bb5d90244ace25068ccc9fe97cee4695bee154fbbf3086b0d409dd5a8"
81
81
  },
82
+ "@ai-ecoverse/py-scipy@1.18.1-1": {
83
+ "integrity": "sha512-cTMwklMN+Y0LgPyZvlfSEElzkkgP1fkrSGQGs3d3TOeATJmuP7CEBjpJBgkXOn1BFWsFUY6s2jPOaJKc3s9Thg==",
84
+ "sha256": "656cdceb2c122caf491e55a926195163b27750219de0c92f7379784a4a0488b2"
85
+ },
82
86
  "@ai-ecoverse/py-six@1.17.0-2": {
83
87
  "integrity": "sha512-BNEgSp4l+y5dhmvKqqId7TO2Krchq/uw5vg/Q6bB6UKj+dfmr8ad42vGs4VFzTCnmqpGSgNRVg+TYeRi50t3yg==",
84
88
  "sha256": "53fd2ac9ba87baebe147fdfcbdd0ea0af9498f725d0d3702d960a209722779cc"
@@ -780,5 +784,9 @@
780
784
  "@ai-ecoverse/wasm-zip@3.0.0-7": {
781
785
  "integrity": "sha512-q92s+O0EaT+uGHZZ2ZCffoYfb7ZzlRHd3K+wvXDh2l0V+uBJUZE7VeC+5AZQ5KZ2v80w5h7jZbOiw34EWKW4Dw==",
782
786
  "sha256": "07cf0bd10794be1e5076ab495ff7011484385a1997c6b88fb250581dc48bfc95"
787
+ },
788
+ "@ai-ecoverse/slicc-kernel@1.129.0": {
789
+ "integrity": "sha512-/R8aDxfhTQNsloF9Z/zVS+4nhykFF8lhu6rJ3nPTPjHs+wi3hnaRQE/Rj9ceZuLf4J/bDdoyxzYIAZsBdzHe8g==",
790
+ "sha256": "797bb9b2d5a296d0170a469be09a6a58bc8a2793338fe51c1f97b4299e800633"
783
791
  }
784
792
  }
@@ -38,10 +38,10 @@
38
38
  "id": "pydata",
39
39
  "kind": "project",
40
40
  "label": "Python data tools",
41
- "description": "numpy, pandas and matplotlib for Python, about 160 MB on disk.",
41
+ "description": "numpy, pandas, matplotlib and scipy for Python, about 240 MB on disk. scipy lacks only the deprecated scipy.odr.",
42
42
  "commands": [],
43
43
  "requires": ["python"],
44
- "size": 46014414
44
+ "size": 67796756
45
45
  },
46
46
  "@ai-ecoverse/slicc-jsh": {
47
47
  "id": "node",
@@ -9,7 +9,7 @@
9
9
  "@ai-ecoverse/slicc-browsers": "1.8.5",
10
10
  "@ai-ecoverse/slicc-cdp": "1.30.2",
11
11
  "@ai-ecoverse/slicc-clipboard": "1.0.2",
12
- "@ai-ecoverse/slicc-kernel": "1.128.0",
12
+ "@ai-ecoverse/slicc-kernel": "1.129.0",
13
13
  "@ai-ecoverse/slicc-spectrum": "1.90.0",
14
14
  "@ai-ecoverse/wasi-pnpm": "12.9.1-13",
15
15
  "@ai-ecoverse/wasi-ripgrep": "15.2.0-5",
@@ -71,9 +71,9 @@
71
71
  }
72
72
  },
73
73
  "node_modules/@ai-ecoverse/slicc-kernel": {
74
- "version": "1.128.0",
75
- "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-kernel/-/slicc-kernel-1.128.0.tgz",
76
- "integrity": "sha512-zj4hVv8H0cNrwbMs8NcFX2jFQ9mFE1uK+Yv0+4cTzHS6ploQH4HSySv62oWjAyBl+XRfhXJZNyZoXE5hL+d8nA==",
74
+ "version": "1.129.0",
75
+ "resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-kernel/-/slicc-kernel-1.129.0.tgz",
76
+ "integrity": "sha512-/R8aDxfhTQNsloF9Z/zVS+4nhykFF8lhu6rJ3nPTPjHs+wi3hnaRQE/Rj9ceZuLf4J/bDdoyxzYIAZsBdzHe8g==",
77
77
  "license": "Apache-2.0",
78
78
  "engines": {
79
79
  "node": ">=24"
@@ -6,7 +6,7 @@
6
6
  "@ai-ecoverse/slicc-browsers": "1.8.5",
7
7
  "@ai-ecoverse/slicc-cdp": "1.30.2",
8
8
  "@ai-ecoverse/slicc-clipboard": "1.0.2",
9
- "@ai-ecoverse/slicc-kernel": "1.128.0",
9
+ "@ai-ecoverse/slicc-kernel": "1.129.0",
10
10
  "@ai-ecoverse/slicc-spectrum": "1.90.0",
11
11
  "@ai-ecoverse/wasi-pnpm": "12.9.1-13",
12
12
  "@ai-ecoverse/wasi-ripgrep": "15.2.0-5",
@@ -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.128.0
22
- version: 1.128.0
21
+ specifier: 1.129.0
22
+ version: 1.129.0
23
23
  '@ai-ecoverse/slicc-spectrum':
24
24
  specifier: 1.90.0
25
25
  version: 1.90.0
@@ -108,8 +108,8 @@ packages:
108
108
  resolution: {integrity: sha512-p7b1h85qkiU0LKjNLCLiU7GVXjGigkyR2+VUCInM1cZo2yjLFxr7tGAOO09e6OG9nB7XKiQn3W88wb3s0gxy+g==}
109
109
  engines: {node: '>=24', slicc-kernel: '>=1.75.0'}
110
110
 
111
- '@ai-ecoverse/slicc-kernel@1.128.0':
112
- resolution: {integrity: sha512-zj4hVv8H0cNrwbMs8NcFX2jFQ9mFE1uK+Yv0+4cTzHS6ploQH4HSySv62oWjAyBl+XRfhXJZNyZoXE5hL+d8nA==}
111
+ '@ai-ecoverse/slicc-kernel@1.129.0':
112
+ resolution: {integrity: sha512-/R8aDxfhTQNsloF9Z/zVS+4nhykFF8lhu6rJ3nPTPjHs+wi3hnaRQE/Rj9ceZuLf4J/bDdoyxzYIAZsBdzHe8g==}
113
113
  engines: {node: '>=24'}
114
114
 
115
115
  '@ai-ecoverse/slicc-spectrum@1.90.0':
@@ -206,7 +206,7 @@ snapshots:
206
206
 
207
207
  '@ai-ecoverse/slicc-clipboard@1.0.2': {}
208
208
 
209
- '@ai-ecoverse/slicc-kernel@1.128.0': {}
209
+ '@ai-ecoverse/slicc-kernel@1.129.0': {}
210
210
 
211
211
  '@ai-ecoverse/slicc-spectrum@1.90.0': {}
212
212