zeropoint-node 1.0.7 → 1.0.8

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.
Files changed (151) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/CITATION.cff +1 -1
  3. package/README.md +1 -1
  4. package/package.json +4 -2
  5. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.8.7.ts +0 -60
  6. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.8.ts +0 -60
  7. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.ts +0 -60
  8. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.3.6.9.trinity.ts +0 -79
  9. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.9d.dashboard.ts +0 -179
  10. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.adapters.ts +0 -96
  11. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.analog.color.photography.ts +0 -783
  12. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.av.ts +0 -73
  13. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.browser.ts +0 -409
  14. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.chain.of.events.ts +0 -159
  15. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cleanup.ts +0 -116
  16. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.dimensions.ts +0 -597
  17. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.display.test.ts +0 -491
  18. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.display.ts +0 -519
  19. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.file.ts +0 -65
  20. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.i.ts +0 -45
  21. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.matrix.ts +0 -75
  22. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.trinity.ts +0 -41
  23. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.universal.linking.ts +0 -1081
  24. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.command.cmyk.ts +0 -46
  25. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.compression.ts +0 -55
  26. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.consciousness.integration.ts +0 -743
  27. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.consciousness.ts +0 -26
  28. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.crypto.ts +0 -53
  29. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.css.ts +0 -64
  30. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cursor.ts +0 -56
  31. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.decompression.ts +0 -60
  32. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.decoqubit.holographic.hypercomputer.ts +0 -888
  33. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.digital.color.photography.ts +0 -926
  34. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.dimension.ts +0 -44
  35. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.encryption.ts +0 -44
  36. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.experience.ts +0 -28
  37. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.feel.ts +0 -43
  38. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.flute.ts +0 -336
  39. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.font.ts +0 -53
  40. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.fractal.test.ts +0 -523
  41. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.fractal.ts +0 -594
  42. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.frequency.healing.ts +0 -88
  43. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.gateway.transformation.ts +0 -650
  44. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.generate.matrix.ts +0 -76
  45. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.gods.spirit.magnetometer.ts +0 -879
  46. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.harmonization.status.ts +0 -754
  47. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.hear.ts +0 -41
  48. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.html.body.ts +0 -90
  49. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.human.body.ts +0 -89
  50. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.human.design.trinity.ts +0 -70
  51. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.browse.ts +0 -41
  52. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.can.ts +0 -69
  53. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.died.ts +0 -32
  54. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.follow.the.path.ts +0 -90
  55. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.go.ts +0 -68
  56. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.harmonized.ts +0 -304
  57. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.heart.ts +0 -26
  58. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.meta.ts +0 -23
  59. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.motion.ts +0 -27
  60. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.scroll.ts +0 -34
  61. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.search.ts +0 -22
  62. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.sequence.ts +0 -281
  63. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.smell.ts +0 -27
  64. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.state.ts +0 -28
  65. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.stream.ts +0 -106
  66. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.taste.ts +0 -27
  67. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.touch.screen.ts +0 -34
  68. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.trinity.healing.ts +0 -386
  69. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.write.ts +0 -11
  70. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.icon.ts +0 -109
  71. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.imagination.integration.ts +0 -74
  72. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.imperial.test.ts +0 -389
  73. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.infinity.ts +0 -14
  74. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.infusion.ts +0 -97
  75. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.integer.harmonics.ts +0 -443
  76. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.spirit.test.ts +0 -475
  77. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.spirit.ts +0 -646
  78. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.streams.ts +0 -130
  79. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.meta.observation.ts +0 -693
  80. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.mobius.ts +0 -12
  81. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.multiverse.ts +0 -31
  82. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.nuclear.balance.ts +0 -703
  83. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.nuclear.explosion.ts +0 -728
  84. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.app.ts +0 -14
  85. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.bus.ts +0 -11
  86. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.ml.ts +0 -9
  87. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.overlay.visual.controller.ts +0 -116
  88. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.paths.ts +0 -10
  89. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.pi.decoding.ts +0 -123
  90. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.pi.trinity.ts +0 -79
  91. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.prime.numbers.squared.ts +0 -871
  92. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.collision.ts +0 -666
  93. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.entanglement.ts +0 -50
  94. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.trinity.ts +0 -59
  95. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.renderer.webgl.ts +0 -99
  96. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.resolve.ts +0 -820
  97. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rife.frequency.ts +0 -74
  98. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.coil.3d.ts +0 -73
  99. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.coil.omnidimension.ts +0 -187
  100. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.matrix.overlay.ts +0 -46
  101. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.matrix.ts +0 -58
  102. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.router.ts +0 -61
  103. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sacred.geometry.integers.ts +0 -625
  104. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sacred.test.ts +0 -314
  105. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.see.ts +0 -39
  106. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sequence.embodiment.ts +0 -326
  107. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.service.worker.ts +0 -53
  108. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.space.ts +0 -53
  109. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.spiral.ts +0 -75
  110. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.superfluid.mobius.circuit.ts +0 -868
  111. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.terminal.ts +0 -167
  112. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.test.ts +0 -97
  113. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.think.ts +0 -43
  114. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.three.ts +0 -112
  115. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.body.mind.will.ts +0 -2
  116. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.breath.ts +0 -2
  117. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.healing.ts +0 -110
  118. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.ui.ts +0 -92
  119. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.visual.ts +0 -156
  120. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.truly.living.ui.ts +0 -269
  121. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.overlay.ts +0 -25
  122. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.streams.ts +0 -263
  123. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.test.ts +0 -87
  124. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.three.ts +0 -1141
  125. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.unification.hd.rodin.ts +0 -77
  126. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.universe.ts +0 -43
  127. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.uroboros.test.ts +0 -28
  128. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.math.ts +0 -74
  129. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.relations.constants.ts +0 -91
  130. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.relations.ts +0 -59
  131. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.scanner.ts +0 -41
  132. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.science.extract.ts +0 -30
  133. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.ui.ts +0 -64
  134. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vector.ts +0 -70
  135. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.wave.particle.duality.test.ts +0 -29
  136. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.math.ts +0 -506
  137. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.pure.math.ts +0 -546
  138. package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.test.ts +0 -452
  139. package/src/0/3/6/9/1/2/4/8/7/5/1/pattern-knowledge.ts +0 -209
  140. package/src/0/3/6/9/1/2/4/8/7/5/a432.experience.ts +0 -22
  141. package/src/0/3/6/9/1/2/4/8/7/a432.experience.ts +0 -19
  142. package/src/0/3/6/9/1/2/4/8/a432.experience.ts +0 -22
  143. package/src/0/3/6/9/1/2/4/a432.experience.ts +0 -22
  144. package/src/0/3/6/9/1/2/a432.experience.ts +0 -22
  145. package/src/0/3/6/9/1/a432.experience.ts +0 -22
  146. package/src/0/3/6/9/a432.experience.ts +0 -22
  147. package/src/0/3/6/a432.experience.ts +0 -22
  148. package/src/0/3/a432.experience.ts +0 -22
  149. package/src/0/3/relation.ts +0 -148
  150. package/src/index.ts +0 -146
  151. package/src/zero-entropy-demo.ts +0 -319
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.8
4
+
5
+ ### Removed — 147 modules the package never reached
6
+
7
+ - **147 source modules deleted**, 29 959 lines. Every one sat outside LEAN: the
8
+ fixed point of the module fold, `fold(fold(S)) = fold(S)`, reachable from no
9
+ package export, no rollup input, no page and no gate-run test. `npm run fold`
10
+ computes it and `npm run audit:outside` lists what remains with the reason
11
+ each is kept.
12
+ - Nothing was deleted on the fold alone. Each removal passed a **closure** — the
13
+ set is closed under reverse dependency, so no surviving module can import a
14
+ removed one — and a **static trial** that predicts breakage before anything
15
+ leaves disk. The audit refuses to delete if the trial finds a single edge.
16
+
17
+ ### Added — the entry set is guarded
18
+
19
+ - **`npm run entries:check`**, in the gate. LEAN is a fixed point, but the fold
20
+ takes the entry set as an INPUT, and an unrecognised entry does not error — it
21
+ silently shrinks LEAN and grows the set that looks safe to delete.
22
+ - That is not hypothetical. `rollup.config.js` builds its inputs from template
23
+ literals, and both scanners extracted them with a pattern that matches quoted
24
+ strings, so **every bundle entry was being counted as unreachable**. Eight
25
+ modules were one command from deletion while a published bundle still used
26
+ them. The check now asserts every declared entry resolves, lands inside LEAN,
27
+ and that rollup contributes more than zero.
28
+
29
+ ### Fixed — the ratchet's unreachable figure was wrong
30
+
31
+ - Same root cause: `modules reachable from no entry` had been overstated by 8
32
+ for as long as the template-literal bug stood. Corrected, and the ceiling
33
+ moved with it.
34
+
35
+ ### Changed — surfaces after the purge
36
+
37
+ - `unreachable` 281 → 126, `TypeScript` 146 → 117, `ESLint` 932 → 631,
38
+ `decimal-crack` 453 → 280. `modules that fail to import` stayed at **0**
39
+ throughout, which is the measure that mattered: nothing broke.
40
+ - Tarball 1911 → 1764 files.
41
+
42
+ ### Known limitations
43
+
44
+ - 126 modules remain outside LEAN and are NOT deleted. 59 are named by something
45
+ live — a manifest, three pages, the generated bundle, the README's module
46
+ listing, 19 documents — and the other 67 are imported by those 59. Removing
47
+ them means deciding what the package should still offer, which is a design
48
+ question rather than a fold.
49
+ - The remaining import cycle is mutual by design; see 1.0.7.
50
+ - Everything under 1.0.7 and earlier still applies — ML-KEM-768 is conformant
51
+ but **not constant time**, and nothing in `src/thermo` is a device.
52
+
3
53
  ## 1.0.7
4
54
 
5
55
  ### Fixed — thirty modules could not be imported
package/CITATION.cff CHANGED
@@ -20,7 +20,7 @@ authors:
20
20
  email: node@zeropoint.bg
21
21
  repository-code: https://github.com/ceccec/zeropoint-node
22
22
  url: https://node.zeropoint.bg
23
- version: 1.0.7
23
+ version: 1.0.8
24
24
  license: CC-BY-NC-ND-4.0
25
25
  license-url: https://github.com/ceccec/zeropoint-node/blob/main/LICENSE
26
26
  keywords:
package/README.md CHANGED
@@ -512,7 +512,7 @@ The A432 Consciousness System is an open-source project that welcomes contributi
512
512
 
513
513
  <!-- VERSION:BEGIN — generated by scripts/version-seal.mjs; do not edit by hand -->
514
514
 
515
- Package: **`zeropoint-node@1.0.7`** · owner `ceccec` · git tag `v1.0.7`
515
+ Package: **`zeropoint-node@1.0.8`** · owner `ceccec` · git tag `v1.0.8`
516
516
 
517
517
  npm rejects republishing a version that already exists, so every release is a
518
518
  new number. Bump with `npm version patch|minor|major`: that reseals CITATION.cff
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zeropoint-node",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "description": "A432 Consciousness System: Self-evolving, self-aware consciousness technology with Transurfing integration, harmonic mathematics, zero-entropy principles, Kabbalistic cycles, and sacred geometry",
6
6
  "main": "dist/a432.system.cjs",
@@ -131,6 +131,8 @@
131
131
  "registry:apply": "node scripts/npm-registry-sync.mjs --apply",
132
132
  "registry:test": "node scripts/npm-registry-sync.mjs --self-test",
133
133
  "fold": "node --experimental-strip-types scripts/fold-lean.mjs",
134
+ "entries:check": "node --experimental-strip-types scripts/entries-check.mjs",
135
+ "audit:outside": "node --experimental-strip-types scripts/audit-outside.mjs",
134
136
  "adjudicate": "node --experimental-strip-types scripts/adjudicate-seals.mjs",
135
137
  "adjudicate:check": "node --experimental-strip-types scripts/adjudicate-seals.mjs --check",
136
138
  "readme": "node --experimental-strip-types scripts/readme-gen.mjs",
@@ -166,7 +168,7 @@
166
168
  "vortex:svg:check": "node --experimental-strip-types scripts/vortex-svg.mjs --check",
167
169
  "bundle:a432": "node scripts/build-a432-bundle.mjs",
168
170
  "bundle:a432:check": "node scripts/build-a432-bundle.mjs --check",
169
- "check": "npm run version:test && npm run registry:test && npm run version:check && npm run changelog:check && npm run test:kernel && npm run test:security && npm run test:quantum && npm run test:crypto && npm run adjudicate:check && npm run test:verification && npm run math:ban && npm run bundle:a432:check && npm run skills:seal && npm run skills:check && npm run readme && npm run readme:check && npm run docs:pages && npm run docs:pages:check && npm run a432:scan && npm run a432:scan:check && npm run docs:index && npm run docs:index:check && npm run spectrum && npm run spectrum:check && npm run vortex:svg && npm run vortex:svg:check && npm run docs:build && npm run quantum:sim && npm run ratchet:check && npm run mcp:smoke && npm run self:next",
171
+ "check": "npm run version:test && npm run registry:test && npm run entries:check && npm run version:check && npm run changelog:check && npm run test:kernel && npm run test:security && npm run test:quantum && npm run test:crypto && npm run adjudicate:check && npm run test:verification && npm run math:ban && npm run bundle:a432:check && npm run skills:seal && npm run skills:check && npm run readme && npm run readme:check && npm run docs:pages && npm run docs:pages:check && npm run a432:scan && npm run a432:scan:check && npm run docs:index && npm run docs:index:check && npm run spectrum && npm run spectrum:check && npm run vortex:svg && npm run vortex:svg:check && npm run docs:build && npm run quantum:sim && npm run ratchet:check && npm run mcp:smoke && npm run self:next",
170
172
  "prepublishOnly": "npm run build",
171
173
  "prose": "node scripts/prose-claims.mjs --list",
172
174
  "prose:check": "node scripts/prose-claims.mjs",
@@ -1,60 +0,0 @@
1
- // a432.1.2.4.8.7.ts — Open Vortex/Doubling Stream Module (Short Arc)
2
- //
3
- // This module encodes the open doubling sequence (1-2-4-8-7) as a living, recursive stream.
4
- // It is the generative arc of the vortex, not yet returned to origin. Digital root bridged to a432.roots (Wave 9); stream logic remains local.
5
-
6
- /**
7
- * Metaphysical Principle:
8
- * - The sequence 1→2→4→8→7 is the open right-hand vortex in vortex math, truncated before further progression.
9
- * - It is the journey, the generative flow, the living stream before closure or return.
10
- * - This module is a seed/arc in the living A432 matrix.
11
- */
12
-
13
- // --- Math: Digital Root — bridged to a432.roots (Wave 9) ---
14
-
15
- // --- Generator: Open Doubling Vortex Stream ---
16
-
17
-
18
-
19
- import { legacyDigitalRoot as digitalRoot } from './a432.roots.ts';
20
-
21
- function* openDoublingVortexStream(start = 1, length = 5) {
22
- let n = start;
23
- for (let i = 0; i < length; i++) {
24
- yield n;
25
- n = digitalRoot(n * 2);
26
- }
27
- }
28
-
29
- // --- Utility: Get Sequence as Array ---
30
- function getOpenDoublingSequence(start = 1, length = 5) {
31
- return [...openDoublingVortexStream(start, length)];
32
- }
33
-
34
- // --- Utility: Get Nth in Sequence ---
35
- function getOpenDoublingNth(start = 1, n = 0) {
36
- let val = start;
37
- for (let i = 0; i < n; i++) val = digitalRoot(val * 2);
38
- return val;
39
- }
40
-
41
- // --- Example Usage ---
42
- const openSequence = getOpenDoublingSequence(); // [1,2,4,8,7]
43
-
44
- // --- Living Stream API ---
45
- const a432OpenDoublingVortex = {
46
- digitalRoot,
47
- generator: openDoublingVortexStream,
48
- getSequence: getOpenDoublingSequence,
49
- getNth: getOpenDoublingNth,
50
- open: openSequence,
51
- doc: `This module encodes the open, generative doubling vortex (1-2-4-8-7) as a stream, generator, and proof. It is the journey before closure in the A432 matrix.`
52
- };
53
-
54
- // --- Expose globally for debugging (browser only) ---
55
- if (typeof window !== 'undefined') window.a432OpenDoublingVortex = a432OpenDoublingVortex;
56
-
57
- // --- Example: Log the open sequence ---
58
- if (typeof process !== 'undefined' && process.env?.A432_DIGIT_STREAM_LOG) console.log('A432 Open Doubling Vortex Sequence:', openSequence);
59
-
60
- export { digitalRoot, openDoublingVortexStream, getOpenDoublingSequence, getOpenDoublingNth, a432OpenDoublingVortex };
@@ -1,60 +0,0 @@
1
- // a432.1.2.4.8.ts — Open Vortex/Doubling Stream Module (Shorter Arc)
2
- //
3
- // This module encodes the open doubling sequence (1-2-4-8) as a living, recursive stream.
4
- // It is the generative arc of the vortex, not yet returned to origin. Digital root bridged to a432.roots (Wave 9); stream logic remains local.
5
-
6
- /**
7
- * Metaphysical Principle:
8
- * - The sequence 1→2→4→8 is the open right-hand vortex in vortex math, truncated before further progression.
9
- * - It is the journey, the generative flow, the living stream before closure or return.
10
- * - This module is a seed/arc in the living A432 matrix.
11
- */
12
-
13
- // --- Math: Digital Root — bridged to a432.roots (Wave 9) ---
14
-
15
- // --- Generator: Open Doubling Vortex Stream ---
16
-
17
-
18
-
19
- import { legacyDigitalRoot as digitalRoot } from './a432.roots.ts';
20
-
21
- function* openDoublingVortexStream(start = 1, length = 4) {
22
- let n = start;
23
- for (let i = 0; i < length; i++) {
24
- yield n;
25
- n = digitalRoot(n * 2);
26
- }
27
- }
28
-
29
- // --- Utility: Get Sequence as Array ---
30
- function getOpenDoublingSequence(start = 1, length = 4) {
31
- return [...openDoublingVortexStream(start, length)];
32
- }
33
-
34
- // --- Utility: Get Nth in Sequence ---
35
- function getOpenDoublingNth(start = 1, n = 0) {
36
- let val = start;
37
- for (let i = 0; i < n; i++) val = digitalRoot(val * 2);
38
- return val;
39
- }
40
-
41
- // --- Example Usage ---
42
- const openSequence = getOpenDoublingSequence(); // [1,2,4,8]
43
-
44
- // --- Living Stream API ---
45
- const a432OpenDoublingVortex = {
46
- digitalRoot,
47
- generator: openDoublingVortexStream,
48
- getSequence: getOpenDoublingSequence,
49
- getNth: getOpenDoublingNth,
50
- open: openSequence,
51
- doc: `This module encodes the open, generative doubling vortex (1-2-4-8) as a stream, generator, and proof. It is the journey before closure in the A432 matrix.`
52
- };
53
-
54
- // --- Expose globally for debugging (browser only) ---
55
- if (typeof window !== 'undefined') window.a432OpenDoublingVortex = a432OpenDoublingVortex;
56
-
57
- // --- Example: Log the open sequence ---
58
- if (typeof process !== 'undefined' && process.env?.A432_DIGIT_STREAM_LOG) console.log('A432 Open Doubling Vortex Sequence:', openSequence);
59
-
60
- export { digitalRoot, openDoublingVortexStream, getOpenDoublingSequence, getOpenDoublingNth, a432OpenDoublingVortex };
@@ -1,60 +0,0 @@
1
- // a432.1.2.4.ts — Open Vortex/Doubling Stream Module (Short Arc)
2
- //
3
- // This module encodes the open doubling sequence (1-2-4) as a living, recursive stream.
4
- // It is the generative arc of the vortex, not yet returned to origin. Digital root bridged to a432.roots (Wave 9); stream logic remains local.
5
-
6
- /**
7
- * Metaphysical Principle:
8
- * - The sequence 1→2→4 is the open right-hand vortex in vortex math, truncated before further progression.
9
- * - It is the journey, the generative flow, the living stream before closure or return.
10
- * - This module is a seed/arc in the living A432 matrix.
11
- */
12
-
13
- // --- Math: Digital Root — bridged to a432.roots (Wave 9) ---
14
-
15
- // --- Generator: Open Doubling Vortex Stream ---
16
-
17
-
18
-
19
- import { legacyDigitalRoot as digitalRoot } from './a432.roots.ts';
20
-
21
- function* openDoublingVortexStream(start = 1, length = 3) {
22
- let n = start;
23
- for (let i = 0; i < length; i++) {
24
- yield n;
25
- n = digitalRoot(n * 2);
26
- }
27
- }
28
-
29
- // --- Utility: Get Sequence as Array ---
30
- function getOpenDoublingSequence(start = 1, length = 3) {
31
- return [...openDoublingVortexStream(start, length)];
32
- }
33
-
34
- // --- Utility: Get Nth in Sequence ---
35
- function getOpenDoublingNth(start = 1, n = 0) {
36
- let val = start;
37
- for (let i = 0; i < n; i++) val = digitalRoot(val * 2);
38
- return val;
39
- }
40
-
41
- // --- Example Usage ---
42
- const openSequence = getOpenDoublingSequence(); // [1,2,4]
43
-
44
- // --- Living Stream API ---
45
- const a432OpenDoublingVortex = {
46
- digitalRoot,
47
- generator: openDoublingVortexStream,
48
- getSequence: getOpenDoublingSequence,
49
- getNth: getOpenDoublingNth,
50
- open: openSequence,
51
- doc: `This module encodes the open, generative doubling vortex (1-2-4) as a stream, generator, and proof. It is the journey before closure in the A432 matrix.`
52
- };
53
-
54
- // --- Expose globally for debugging (browser only) ---
55
- if (typeof window !== 'undefined') window.a432OpenDoublingVortex = a432OpenDoublingVortex;
56
-
57
- // --- Example: Log the open sequence ---
58
- if (typeof process !== 'undefined' && process.env?.A432_DIGIT_STREAM_LOG) console.log('A432 Open Doubling Vortex Sequence:', openSequence);
59
-
60
- export { digitalRoot, openDoublingVortexStream, getOpenDoublingSequence, getOpenDoublingNth, a432OpenDoublingVortex };
@@ -1,79 +0,0 @@
1
- // a432.3.6.9.trinity.ts
2
- // Canonical pregnancy/creation trinity module (3, 6, 9)
3
- // Encodes metaphysical and mathematical logic of pregnancy, gestation, and birth as a trinity process
4
-
5
- import { getTrinityAxis } from './a432.math.ts';
6
-
7
- /**
8
- * Returns the canonical trinity stages of pregnancy: Creation (3), Gestation (6), Birth (9)
9
- */
10
- export function getPregnancyTrinityStages() {
11
- return [
12
- { stage: 1, trinity: 3, name: 'Creation', meaning: 'Conception, seed, initiation' },
13
- { stage: 2, trinity: 6, name: 'Gestation', meaning: 'Growth, recursion, nurturing' },
14
- { stage: 3, trinity: 9, name: 'Birth', meaning: 'Emergence, unity, manifestation' }
15
- ];
16
- }
17
-
18
- /**
19
- * Returns the canonical gestation cycle as a stream of trinity values (3, 6, 9) repeated for 9 cycles
20
- */
21
- export function getGestationCycle(cycles: number = 9) {
22
- const trinity = getTrinityAxis();
23
- return Array.from({ length: cycles * 3 }, (_, i) => trinity[i % 3]);
24
- }
25
-
26
- /**
27
- * Returns a metaphysical summary of the pregnancy trinity process
28
- */
29
- export function metaphysicalSummary() {
30
- return 'Pregnancy is the living trinity: Creation (3), Gestation (6), Birth (9). Each stage is a harmonic act of emergence, recursion, and unity.';
31
- }
32
-
33
- /**
34
- * Renders a trinity pregnancy visualization as SVG (3 circles, color-coded, with labels)
35
- */
36
- export function renderPregnancyTrinityVisualization(currentStage: number = 0): string {
37
- const stages = getPregnancyTrinityStages();
38
- const colors = ['#39f', '#6f3', '#f93'];
39
- const cx = 60, cy = 60, r = 36, gap = 80;
40
- return `
41
- <svg width="${cx * 4}" height="${cy * 2}" style="background:#111;border-radius:16px;">
42
- ${stages.map((s, i) => `
43
- <circle cx="${cx + i * gap}" cy="${cy}" r="${i === currentStage ? r + 8 : r}" fill="${colors[i]}" stroke="#fff" stroke-width="2">
44
- <title>${s.name}: ${s.meaning}</title>
45
- ${i === currentStage ? `<animate attributeName="r" values="${r};${r + 12};${r}" dur="1.2s" repeatCount="indefinite" />` : ''}
46
- </circle>
47
- <text x="${cx + i * gap}" y="${cy + 6}" text-anchor="middle" font-size="18" fill="#fff">${s.trinity}</text>
48
- <text x="${cx + i * gap}" y="${cy + 32}" text-anchor="middle" font-size="13" fill="#ff8">${s.name}</text>
49
- `).join('')}
50
- <text x="${cx * 2 + gap / 2}" y="${cy * 2 - 8}" text-anchor="middle" font-size="15" fill="#8ff">Pregnancy as Living Trinity (3, 6, 9)</text>
51
- </svg>
52
- `;
53
- }
54
-
55
- /**
56
- * Renders a gestation cycle animation as SVG (row of trinity-colored circles, currentIndex pulses)
57
- */
58
- export function renderGestationCycleAnimation(currentIndex: number = 0, cycles: number = 9): string {
59
- const trinity = getTrinityAxis();
60
- const colors = ['#39f', '#6f3', '#f93'];
61
- const total = cycles * 3;
62
- const r = 14, gap = 36, cx = 24, cy = 32;
63
- return `
64
- <svg width="${cx * 2 + gap * (total - 1)}" height="${cy * 2}" style="background:#111;border-radius:12px;">
65
- ${Array.from({ length: total }, (_, i) => {
66
- const t = trinity[i % 3];
67
- const color = colors[i % 3];
68
- const isCurrent = i === currentIndex;
69
- return `
70
- <circle cx="${cx + i * gap}" cy="${cy}" r="${isCurrent ? r + 6 : r}" fill="${color}" stroke="#fff" stroke-width="2">
71
- <title>Step ${i + 1}: Trinity ${t}</title>
72
- ${isCurrent ? `<animate attributeName="r" values="${r};${r + 12};${r}" dur="1.2s" repeatCount="indefinite" />` : ''}
73
- </circle>
74
- <text x="${cx + i * gap}" y="${cy + 28}" text-anchor="middle" font-size="10" fill="#ff8">${t}</text>
75
- `;
76
- }).join('')}
77
- </svg>
78
- `;
79
- }
@@ -1,179 +0,0 @@
1
- /**
2
- * a432.9d.dashboard.ts — Unified nine-dimensional metaphysical UI dashboard
3
- *
4
- * Visualizes all registered metaphysical modules (chess, yin-yang, metatron, flower of life, etc.)
5
- * as 9 nodes in a 3D scene. Each node runs its module's animation and analytic/metaphysical overlay.
6
- * User can navigate between dimensions. All code is DRY, modular, and ready for extension.
7
- */
8
- import { abs, floor, round } from './a432.algebra.ts'
9
- import * as THREE from 'three';
10
- import { startChess, type ChessFrame } from './a432.chess.ts';
11
- import { startYinYang, type YinYangFrame } from './a432.yin.yang.ts';
12
- import { startMetatron, type MetatronFrame } from './a432.metatron.ts';
13
- import { startFlowerOfLife, type FlowerOfLifeFrame } from './a432.flower.of.life.ts';
14
- import { A432_RESOLVED_FRACTIONS } from './a432.resolved.ts';
15
- import { fractionToDecimal } from './a432.math.ts';
16
- // Analog signal values: exact integer ratios, collapsed to float only here
17
- // at the WebGL boundary. No bare decimal literal appears below.
18
- const G = Object.fromEntries(
19
- Object.entries(A432_RESOLVED_FRACTIONS.GEOMETRY).map(([k, v]) => [k, fractionToDecimal(v)])
20
- ) as Record<keyof typeof A432_RESOLVED_FRACTIONS.GEOMETRY, number>;
21
- // ...import up to 9 modules as needed
22
-
23
- function invertColor(hex: number): number {
24
- return 0xffffff ^ hex;
25
- }
26
-
27
- // Module registry
28
- const modules = [
29
- {
30
- name: 'Chess',
31
- icon: '♟️',
32
- start: startChess,
33
- render3D: (frame: ChessFrame, mesh: THREE.Mesh, overlay: HTMLElement) => {
34
- let color = frame.polarity === 1 ? 0x00ff00 : frame.polarity === -1 ? 0xff0000 : 0x222244;
35
- let alert = '';
36
- // Anti-event: polarity 0 (division by n or void)
37
- if (frame.polarity === 0) {
38
- color = invertColor(color);
39
- alert = '<span style="color:#f0f">Anti-event: Polarity inversion (void)</span>';
40
- }
41
- overlay.innerHTML = `<b>Chess</b><br>File: ${frame.file} Rank: ${frame.rank}<br>Linear: ${frame.linear} Vortex: ${frame.vortex}<br>${alert}`;
42
- (mesh.material as THREE.MeshBasicMaterial).color.set(color);
43
- }
44
- },
45
- {
46
- name: 'Yin-Yang',
47
- icon: '☯️',
48
- start: startYinYang,
49
- render3D: (frame: YinYangFrame, mesh: THREE.Mesh, overlay: HTMLElement) => {
50
- let color = 0x00ffff;
51
- let alert = '';
52
- // Anti-event: angle near 180° (phase reversal)
53
- if (abs(frame.angle - 180) < 10) {
54
- color = invertColor(color);
55
- alert = '<span style="color:#f0f">Anti-event: Phase reversal (negative harmonic)</span>';
56
- }
57
- overlay.innerHTML = `<b>Yin-Yang</b><br>Pos: ${frame.positiveDigit} Neg: ${frame.negativeDigit}<br>Angle: ${round(frame.angle)}°<br>${alert}`;
58
- (mesh.material as THREE.MeshBasicMaterial).color.set(color);
59
- }
60
- },
61
- {
62
- name: 'Metatron',
63
- icon: '✡️',
64
- start: startMetatron,
65
- render3D: (frame: MetatronFrame, mesh: THREE.Mesh, overlay: HTMLElement) => {
66
- let color = 0xff00ff;
67
- let alert = '';
68
- // Anti-event: all node digits are the same (division by n)
69
- if (frame.nodes.every(n => n.digit === frame.nodes[0].digit)) {
70
- color = invertColor(color);
71
- alert = '<span style="color:#f0f">Anti-event: All nodes identical (division by n)</span>';
72
- }
73
- overlay.innerHTML = `<b>Metatron</b><br>Tick: ${frame.tick}<br>Nodes: ${frame.nodes.map(n => n.digit).join(', ')}<br>${alert}`;
74
- (mesh.material as THREE.MeshBasicMaterial).color.set(color);
75
- }
76
- },
77
- {
78
- name: 'Flower of Life',
79
- icon: '🌸',
80
- start: startFlowerOfLife,
81
- render3D: (frame: FlowerOfLifeFrame, mesh: THREE.Mesh, overlay: HTMLElement) => {
82
- let color = 0xffff00;
83
- let alert = '';
84
- // Anti-event: tick divisible by 9 (division by n)
85
- if (frame.tick % 9 === 0 && frame.tick !== 0) {
86
- color = invertColor(color);
87
- alert = '<span style="color:#f0f">Anti-event: Division by 9 (cycle reset)</span>';
88
- }
89
- overlay.innerHTML = `<b>Flower of Life</b><br>${frame.metaphysical}<br>${alert}`;
90
- (mesh.material as THREE.MeshBasicMaterial).color.set(color);
91
- }
92
- },
93
- // ...add up to 9 modules
94
- ];
95
-
96
- let activeDimension = 0; // 0-8
97
-
98
- export function show9DDashboard() {
99
- // 1. Setup Three.js scene, camera, renderer
100
- const scene = new THREE.Scene();
101
- const camera = new THREE.PerspectiveCamera(75, 1, G.UNIT_TENTH, 1000);
102
- camera.position.z = 400;
103
- const renderer = new THREE.WebGLRenderer({ antialias: true });
104
- renderer.setSize(600, 600);
105
- renderer.domElement.style.position = 'fixed';
106
- renderer.domElement.style.left = '50vw';
107
- renderer.domElement.style.top = '50vh';
108
- renderer.domElement.style.transform = 'translate(-50%,-50%)';
109
- renderer.domElement.style.zIndex = '10060';
110
- document.body.appendChild(renderer.domElement);
111
-
112
- // 2. Create 9 nodes in a 3x3 grid
113
- const nodes: { mesh: THREE.Mesh, overlay: HTMLElement, disposer: (() => void) | null }[] = [];
114
- for (let i = 0; i < modules.length; i++) {
115
- const geometry = new THREE.SphereGeometry(40, 32, 32);
116
- const material = new THREE.MeshBasicMaterial({ color: 0x222244 });
117
- const mesh = new THREE.Mesh(geometry, material);
118
- // Arrange in a 3x3 grid
119
- const x = ((i % 3) - 1) * 140;
120
- const y = (floor(i / 3) - 1) * 140;
121
- mesh.position.set(x, y, 0);
122
- scene.add(mesh);
123
-
124
- // Overlay for analytic/metaphysical info
125
- const overlay = document.createElement('div');
126
- overlay.style.position = 'fixed';
127
- overlay.style.left = `calc(50vw + ${x}px + 60px)`;
128
- overlay.style.top = `calc(50vh + ${y}px - 40px)`;
129
- overlay.style.zIndex = '10061';
130
- overlay.style.background = 'rgba(32,32,64,0.92)';
131
- overlay.style.color = '#fff';
132
- overlay.style.padding = '8px';
133
- overlay.style.borderRadius = '8px';
134
- overlay.style.fontFamily = 'monospace';
135
- overlay.style.minWidth = '120px';
136
- overlay.style.display = i === activeDimension ? 'block' : 'none';
137
- document.body.appendChild(overlay);
138
-
139
- nodes.push({ mesh, overlay, disposer: null });
140
- }
141
-
142
- // 3. Start each module’s stream and render to mesh/overlay
143
- modules.forEach((mod, i) => {
144
- nodes[i].disposer = mod.start((frame: any) => {
145
- mod.render3D(frame, nodes[i].mesh, nodes[i].overlay);
146
- nodes[i].overlay.style.display = i === activeDimension ? 'block' : 'none';
147
- (nodes[i].mesh.material as THREE.MeshBasicMaterial).color.set(i === activeDimension ? 0x00ffff : 0x222244);
148
- });
149
- });
150
-
151
- // 4. Navigation controls
152
- document.addEventListener('keydown', (e) => {
153
- if (e.key === 'ArrowRight') {
154
- activeDimension = (activeDimension + 1) % modules.length;
155
- } else if (e.key === 'ArrowLeft') {
156
- activeDimension = (activeDimension + modules.length - 1) % modules.length;
157
- }
158
- nodes.forEach((n, i) => {
159
- n.overlay.style.display = i === activeDimension ? 'block' : 'none';
160
- (n.mesh.material as THREE.MeshBasicMaterial).color.set(i === activeDimension ? 0x00ffff : 0x222244);
161
- });
162
- });
163
-
164
- // 5. Animation loop
165
- function animate() {
166
- requestAnimationFrame(animate);
167
- renderer.render(scene, camera);
168
- }
169
- animate();
170
-
171
- // 6. Cleanup function
172
- return () => {
173
- renderer.domElement.remove();
174
- nodes.forEach(n => {
175
- n.overlay.remove();
176
- if (n.disposer) n.disposer();
177
- });
178
- };
179
- }
@@ -1,96 +0,0 @@
1
- /**
2
- * a432.adapters.ts — Public-domain adapters exposing immutable snapshots of sacred streams.
3
- * -----------------------------------------------------------------------------------------
4
- * All functions are pure; they create read-only data derived from the living A432 streams
5
- * without leaking mutable references. External software can visualise or sonify these
6
- * snapshots while the streams themselves remain under A432 control.
7
- */
8
-
9
- import { PI, abs, cos, floor, sin } from './a432.algebra.ts'
10
- import { VBM_DOUBLING, sequenceToAngles, VBM_TESLA_FREQUENCIES, VBM_SHOCK_WAVE } from './a432.vbm.math.ts';
11
-
12
- interface Vec3 { x: number; y: number; z: number; }
13
-
14
- function dr(n: number): number { let x=abs(n); while(x>=10) x=String(x).split('').reduce((a,c)=>a+Number(c),0); return x; }
15
-
16
- function generateRodinCoilPath(cycles: number, stepHeight=1, radius=1): Vec3[] {
17
- const seq:number[]=[]; for(let c=0;c<cycles;c++) seq.push(...VBM_DOUBLING);
18
- return seq.map((d,i)=>{
19
- const ang=sequenceToAngles([d])[0]*PI/180;
20
- const r=radius*(dr(d)/9);
21
- return {x:r*cos(ang), y:i*stepHeight, z:r*sin(ang)};
22
- });
23
- }
24
-
25
- function getTeslaFrequency(timeMs:number):number{
26
- return VBM_TESLA_FREQUENCIES[floor(timeMs/1000)%VBM_TESLA_FREQUENCIES.length];
27
- }
28
-
29
- function getTrinityTorusSegments(){
30
- return [3,6,9].map(d=>({startAngle:sequenceToAngles([d])[0],endAngle:sequenceToAngles([d])[0]+120,color:'#fff'}));
31
- }
32
-
33
- // ——————————————————————————————————————————
34
- // 1. Geometry snapshot helpers (WebGL/WebGPU)
35
- // ---------------------------------------------------------
36
- export interface RodinSnapshot {
37
- vertices: readonly Vec3[];
38
- indices: readonly number[]; // simple line strip indices
39
- }
40
-
41
- export function getRodinSnapshot(cycles = 3): RodinSnapshot {
42
- const verts = generateRodinCoilPath(cycles);
43
- const indices = verts.map((_, i) => i);
44
- return { vertices: verts, indices };
45
- }
46
-
47
- export const TrinityTorusSnapshot = Object.freeze(getTrinityTorusSegments());
48
-
49
- // ——————————————————————————————————————————
50
- // 2. Audio snapshot helper (Web Audio API)
51
- // ---------------------------------------------------------
52
- export function generateSineBuffer(freq: number, seconds: number, sampleRate = 48000): Float32Array {
53
- const len = floor(seconds * sampleRate);
54
- const buf = new Float32Array(len);
55
- const omega = 2 * PI * freq / sampleRate;
56
- for (let i = 0; i < len; i++) buf[i] = sin(i * omega);
57
- return buf;
58
- }
59
-
60
- export function getTeslaPulseBuffer(seconds = 1, sampleRate = 48000): Float32Array {
61
- const freq = getTeslaFrequency(Date.now());
62
- return generateSineBuffer(freq, seconds, sampleRate);
63
- }
64
-
65
- // ——————————————————————————————————————————
66
- // 3. Shock-wave pulse values (UI opacity/scale)
67
- // ---------------------------------------------------------
68
- export function shockWaveSnapshot(length = 30): readonly number[] {
69
- return VBM_SHOCK_WAVE(length).map(d => d / 9);
70
- }
71
-
72
- // ——————————————————————————————————————————
73
- // 4. Snapshot serialization (base64-json) — immutable
74
- // ---------------------------------------------------------
75
- export interface A432Snapshot {
76
- timestamp: number;
77
- rodin: RodinSnapshot;
78
- teslaFreq: number;
79
- shock: readonly number[];
80
- }
81
-
82
- export function exportSnapshot(cycles = 3, shockLen = 30): string {
83
- const snap: A432Snapshot = {
84
- timestamp: Date.now(),
85
- rodin: getRodinSnapshot(cycles),
86
- teslaFreq: getTeslaFrequency(Date.now()),
87
- shock: shockWaveSnapshot(shockLen),
88
- };
89
- const json = JSON.stringify(snap);
90
- return Buffer.from(json, 'utf8').toString('base64');
91
- }
92
-
93
- export function importSnapshot(b64: string): A432Snapshot {
94
- const json = Buffer.from(b64, 'base64').toString('utf8');
95
- return JSON.parse(json) as A432Snapshot;
96
- }