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
The repository also includes GitHub Actions workflows:
63
71
64
72
-`.github/workflows/deploy.yml` compiles the French Multilingual sources, validates the browser/WASM runtime, prepares a static Pages artifact, and deploys on pushes to `main`.
65
73
-`.github/workflows/monitor-multilingual.yml` runs scheduled compatibility checks against pinned, latest, and upstream `multilingualprogramming` builds.
66
74
75
+
Generated Multilingual/WASM outputs under `public/generated/automate_packed/` are intentionally ignored. GitHub Actions regenerates them before publishing Pages.
76
+
67
77
Stage 3 also adds smoke tests:
68
78
69
79
```bash
@@ -84,6 +94,12 @@ Stage 5 adds the preset gallery and static deployment checks:
84
94
node tests/stage5-static.js
85
95
```
86
96
97
+
Stage 6 strengthens Multilingual ownership by testing the generated Python produced from the French core:
98
+
99
+
```bash
100
+
python tests/stage6_french_core.py
101
+
```
102
+
87
103
## Attribution
88
104
89
105
Automaginarium is a successor to Cellcosmos and intentionally reuses its project ideas and visual direction. The initial browser metrics and rendering approach are derived from Cellcosmos concepts:
A universe is a JSON object. The most important fields are:
4
+
5
+
-`alphabet_entree`: values read from each neighborhood
6
+
-`alphabet_sortie`: values produced by the transition rule
7
+
-`taille_voisinage`: neighborhood width, usually 3, 5, or 7
8
+
-`nombre_canaux_sortie`: how many values each transition returns
9
+
-`mode_regle`: `table`, `totalistique`, or `aleatoire`
10
+
-`table_transition`: explicit rule table when using `table`
11
+
-`etat_initial`: seed pattern
12
+
13
+
Example:
14
+
15
+
```json
16
+
{
17
+
"nom": "Mini univers",
18
+
"alphabet_entree": [0, 1],
19
+
"alphabet_sortie": [0, 1],
20
+
"taille_voisinage": 3,
21
+
"nombre_canaux_sortie": 1,
22
+
"mode_regle": "table",
23
+
"table_transition": {
24
+
"[1,1,1]": [0],
25
+
"[1,1,0]": [1],
26
+
"[1,0,1]": [1],
27
+
"[1,0,0]": [0],
28
+
"[0,1,1]": [1],
29
+
"[0,1,0]": [1],
30
+
"[0,0,1]": [1],
31
+
"[0,0,0]": [0]
32
+
},
33
+
"largeur": 101,
34
+
"hauteur": 80,
35
+
"etat_initial": { "mode": "centre" }
36
+
}
37
+
```
38
+
39
+
Rule keys are JSON arrays encoded as strings. This is deliberate: `"[\"a\",\"aa\"]"` is unambiguous, while a concatenated key such as `"aaa"` is not.
40
+
41
+
## Multi-Channel Output
42
+
43
+
The first output channel becomes the next state. Later channels can affect rendering. For example:
44
+
45
+
```json
46
+
"[0,1,0]": [1, 3]
47
+
```
48
+
49
+
Here `1` drives evolution and `3` can drive color.
50
+
51
+
## French Multilingual Ownership
52
+
53
+
The canonical model lives in `src/automate_universel.ml`. The browser-friendly numeric WASM bridge lives in `src/automate_packed_wasm.ml`. JavaScript should stay focused on JSON loading, UI events, and canvas rendering.
The root `index.html` redirects to `public/index.html`, where the application runs. This keeps the repository structure explicit while still making the GitHub Pages root URL usable.
12
+
The root `index.html` redirects to `public/index.html`, where the application runs. The workflow builds generated Multilingual/WASM artifacts at deploy time and uploads a complete Pages artifact.
14
13
15
-
Files that must be committed for Pages:
14
+
Source files that must be committed for Pages:
16
15
17
16
-`public/index.html`
18
17
-`public/app.mjs`
19
18
-`public/automate-core.js`
20
19
-`public/style.css`
21
-
-`public/generated/automate_packed/module.wasm`
22
-
-`public/generated/automate_packed/*.js`
23
-
-`public/generated/automate_packed/*.mjs`
20
+
-`public/generated/automate_packed_runtime.mjs`
24
21
-`examples/*.json`
22
+
-`src/*.ml`
23
+
-`.github/workflows/deploy.yml`
24
+
25
+
Generated files that should not be committed:
26
+
27
+
-`public/generated/automate_packed/`
28
+
-`public/generated/automate_universel.py`
25
29
26
30
The `.nojekyll` file disables Jekyll processing so GitHub Pages serves static generated assets as-is.
These generated files are intentionally ignored by Git and regenerated by GitHub Actions before deployment. The committed runtime loader is:
25
+
26
+
```text
27
+
public/generated/automate_packed_runtime.mjs
28
+
```
29
+
24
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.
25
31
26
32
Regenerate artifacts with:
@@ -30,3 +36,5 @@ Regenerate artifacts with:
30
36
```
31
37
32
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
+
40
+
The generated rich core is now exercised by `tests/stage6_french_core.py`, so CI verifies behavior that comes directly from `src/automate_universel.ml`.
0 commit comments