You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/architecture.md
+11-1Lines changed: 11 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,11 +13,21 @@ The intended stable boundary is the configuration object. The UI should not know
13
13
14
14
The browser layer is intentionally narrow: one module reads and writes form controls, delegates configuration assembly, evolution, canonical rule-table generation, genetic evaluation, and perturbation mutations to the core bridge, renders the resulting universe, and wires a static preset gallery. Presentation-only concerns such as tab systems, mirrored form state, and client-side gallery choreography are not part of the long-term architecture.
15
15
16
+
`scripts/build_wasm_bundle.py` now generates a browser-native rich module from the canonical French source:
`public/app.mjs` loads that module into `window.AutomaginariumUniversVivant` before the UI starts. `public/automate-core.js` is therefore a generated-first compatibility bridge: it forwards rich JSON behavior to the generated `.multi` module when present, keeps JavaScript fallbacks for local/dev compatibility, and still calls the packed WASM numeric ABI for narrow scalar helpers.
23
+
24
+
The Exporter panel is also the first user-facing payoff for the living-universe manifest: it shows the generated semantic-core JSON/source and offers a Replay mini-canvas driven by the current universe timeline.
25
+
16
26
Advanced tools such as the genetic workbench and perturbation toolkit are now lazy browser features. They are loaded only when their panels are opened, so the baseline application path stays focused on the core Multilingual configuration and rendering loop.
17
27
18
28
Canonical JSON-array rule keys use forms such as `"[0,1,0]"`, rather than concatenated keys such as `"010"`. The browser adapter still accepts older Cellcosmos-style keys as a compatibility fallback.
19
29
20
-
The packed Multilingual/WASM bridge keeps the full French core as the canonical configuration and evolution model, while `src/automate_packed_wasm.multi` exposes a narrow numeric ABI for browser calls. The browser prefers `window.AutomaginariumPacked`when available and falls back to JavaScript only where rich JSON orchestration is still needed.
30
+
The packed Multilingual/WASM bridge keeps the full French core as the canonical configuration and evolution model, while `src/automate_packed_wasm.multi` exposes a narrow numeric ABI for browser calls. The browser prefers `window.AutomaginariumPacked`for numeric primitives and `window.AutomaginariumUniversVivant` for rich configuration/universe behavior before falling back to JavaScript compatibility code.
21
31
22
32
Rule-table generation follows the same pattern: canonical helpers live in `src/automate_universel.multi`, narrow deterministic numeric helpers live in `src/automate_packed_wasm.multi`, and `public/automate-core.js` exposes the browser bridge so `public/app.mjs` does not duplicate the rule logic, form-to-config assembly, or configuration summaries.
These generated files are intentionally ignored by Git and regenerated by GitHub Actions before deployment. The committed runtime loader is:
@@ -27,14 +28,14 @@ These generated files are intentionally ignored by Git and regenerated by GitHub
27
28
public/generated/automate_packed_runtime.mjs
28
29
```
29
30
30
-
The browser loads `public/generated/automate_packed_runtime.mjs`, which instantiates `module.wasm` and installs `window.AutomaginariumPacked`. `public/automate-core.js`then calls generated Multilingual/WASM exports for narrow numeric primitives such as Wolfram and totalistic outputs, while retaining JavaScript fallback behavior for rich JSON table orchestration.
31
+
The browser loads `public/generated/automate_packed_runtime.mjs`, which instantiates `module.wasm` and installs `window.AutomaginariumPacked`. It also loads `public/generated/automate_universel/browser_module.mjs` into `window.AutomaginariumUniversVivant`. `public/automate-core.js` calls the rich generated module first for JSON-compatible behavior such as configuration summaries, universe generation, perturbations, genetic evaluation, and semantic-core export, then falls back to JavaScript compatibility code when the generated module is unavailable.
31
32
32
33
Regenerate artifacts with:
33
34
34
35
```powershell
35
36
.\scripts\build-packed-runtime.ps1
36
37
```
37
38
38
-
Current limitation: the full JSON/dictionary/list-rich core compiles to generated Python but does not yet produce a browser WASM bundle with the current Multilingual WAT backend. The narrow ABI module is the deliberate bridge until richer data lowering is available.
39
+
Current limitation: the rich core is generated as browser-native JavaScript rather than a browser WASM bundle. The narrow ABI module remains the WASM bridge for scalar numeric helpers until richer WAT data lowering is available.
39
40
40
-
The generated rich core is exercised by `tests/french_core_smoke.py`, so CI verifies behavior that comes directly from `src/automate_universel.multi`.
41
+
The generated rich core is exercised by `tests/french_core_smoke.py`, `tests/generated_browser_module_smoke.js`, `tests/generated_parity_smoke.mjs`, and `tests/browser_generated_flow_smoke.mjs`, so CI can verify behavior that comes directly from `src/automate_universel.multi` and that the served app points at the generated browser module.
Copy file name to clipboardExpand all lines: docs/release-checklist.md
+11-2Lines changed: 11 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,12 +8,19 @@ Before publishing a release:
8
8
.\scripts\build-packed-runtime.ps1
9
9
```
10
10
11
+
`requirements-build.txt` currently installs `multilingualprogramming[wasm]`
12
+
from the multilingual `main` branch because the published PyPI 0.8.0 wheel
13
+
does not include `build-browser-module`. After the next multilingual release,
14
+
repin this to the released version and rerun this checklist.
15
+
11
16
2. Run all local tests.
12
17
13
18
```powershell
14
19
python tests\french_core_smoke.py
15
20
node tests\core_smoke.js
16
21
node tests\generated_browser_module_smoke.js
22
+
node tests\generated_parity_smoke.mjs
23
+
node tests\browser_generated_flow_smoke.mjs
17
24
node tests\packed_runtime_smoke.mjs
18
25
node tests\static_site_smoke.js
19
26
```
@@ -32,8 +39,10 @@ Before publishing a release:
32
39
- all presets load
33
40
- Wolfram/random/symmetric/totalistic generation works
34
41
- JSON import/export works
42
+
- Exporter panel semantic-core JSON/source works with the generated module loaded
43
+
- Replay controls in the Exporter panel step and play the current universe
35
44
- PNG export works
36
-
- browser console has no missing `module.wasm` or preset JSON errors
45
+
- browser console has no failed dynamic import, missing `module.wasm`, or preset JSON errors
37
46
38
47
6. Push to GitHub and verify Actions.
39
48
@@ -50,4 +59,4 @@ Before publishing a release:
50
59
git status --short --ignored
51
60
```
52
61
53
-
`public/generated/automate_packed/` and `public/generated/automate_universel.py` should remain ignored locally.
62
+
`public/generated/automate_packed/`, `public/generated/automate_universel.py`, and `public/generated/automate_universel/` should remain ignored locally.
0 commit comments