@ceccec/millennium-solutions 9.3.3 → 9.3.5

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 (259) hide show
  1. package/README.md +29 -15
  2. package/dist/mod.core.d.ts +9 -0
  3. package/dist/mod.core.js +9 -0
  4. package/dist/src/0/index.d.ts +47 -0
  5. package/dist/src/0/index.js +189 -0
  6. package/dist/src/0/ledger.d.ts +1 -0
  7. package/dist/src/0/ledger.js +25 -0
  8. package/dist/src/0/trinity-matrix.d.ts +1 -0
  9. package/dist/src/0/trinity-matrix.js +16 -0
  10. package/dist/src/5/aspects.d.ts +1 -0
  11. package/dist/src/5/aspects.js +22 -0
  12. package/dist/src/5/reflection.d.ts +1 -0
  13. package/dist/src/5/reflection.js +25 -0
  14. package/dist/src/7/rosetta.d.ts +1 -0
  15. package/dist/src/7/rosetta.js +24 -0
  16. package/dist/src/9/enumeration.d.ts +1 -0
  17. package/dist/src/9/enumeration.js +14 -0
  18. package/dist/src/honesty/index.d.ts +16 -0
  19. package/dist/src/honesty/index.js +69 -0
  20. package/package.json +27 -10
  21. package/.zenodo.json +0 -51
  22. package/ABSTRACT.md +0 -155
  23. package/ACCOUNTING.md +0 -27
  24. package/AXIOMS.md +0 -574
  25. package/CHALLENGES.md +0 -2595
  26. package/DEPLOY.md +0 -39
  27. package/DEVELOP.md +0 -34
  28. package/HEART.md +0 -112
  29. package/PHYSICS-SCALES.md +0 -80
  30. package/PRIOR-ART.md +0 -151
  31. package/PROOF-OF-CONCEPT.md +0 -81
  32. package/REALISATIONS.md +0 -87
  33. package/RESEARCH.md +0 -188
  34. package/RULES.md +0 -57
  35. package/SEQUENCE-DECODE.md +0 -196
  36. package/SIGNATURE.md +0 -34
  37. package/THEOREMS.md +0 -97
  38. package/WHITEPAPER.md +0 -40
  39. package/WORKFLOWS.md +0 -47
  40. package/boundaries.md +0 -23
  41. package/captain.md +0 -85
  42. package/compare.md +0 -42
  43. package/compute.md +0 -543
  44. package/cryptography.md +0 -55
  45. package/dashboard.md +0 -50
  46. package/examples.md +0 -47
  47. package/folds.md +0 -65
  48. package/forensic.md +0 -67
  49. package/guide.md +0 -126
  50. package/harness.md +0 -20
  51. package/index.md +0 -217
  52. package/mod.core.ts +0 -10
  53. package/nature.md +0 -58
  54. package/organism.md +0 -30
  55. package/paper.md +0 -8789
  56. package/proofs.md +0 -26
  57. package/quantum.md +0 -40
  58. package/rights.md +0 -39
  59. package/solutions.md +0 -28
  60. package/speedup.md +0 -41
  61. package/src/0/chacha.ts +0 -3
  62. package/src/0/crypt.ts +0 -4
  63. package/src/0/csp.ts +0 -10
  64. package/src/0/entanglement.ts +0 -31
  65. package/src/0/fusion.ts +0 -28
  66. package/src/0/holographic.ts +0 -57
  67. package/src/0/impossible.ts +0 -30
  68. package/src/0/imprint.ts +0 -160
  69. package/src/0/index.ts +0 -263
  70. package/src/0/ledger.ts +0 -25
  71. package/src/0/legible.ts +0 -29
  72. package/src/0/limit.ts +0 -29
  73. package/src/0/merkle-proof.ts +0 -3
  74. package/src/0/null-token.ts +0 -24
  75. package/src/0/sha256.ts +0 -3
  76. package/src/0/singularity.ts +0 -20
  77. package/src/0/stream.ts +0 -47
  78. package/src/0/trinities.ts +0 -37
  79. package/src/0/trinity-matrix.ts +0 -20
  80. package/src/0/version-matrix.ts +0 -70
  81. package/src/1/acceptance.ts +0 -26
  82. package/src/1/index.ts +0 -80
  83. package/src/1/paradox.ts +0 -28
  84. package/src/1/vortex.lean +0 -6
  85. package/src/2/frequency-scales.ts +0 -28
  86. package/src/2/iching.ts +0 -34
  87. package/src/2/index.ts +0 -78
  88. package/src/2/primes-vortex.ts +0 -12
  89. package/src/2/quantum.ts +0 -48
  90. package/src/2/string-scale.ts +0 -14
  91. package/src/2/vortex.lean +0 -10
  92. package/src/3/index.ts +0 -63
  93. package/src/3/pi-bbp.ts +0 -13
  94. package/src/3/trinity.ts +0 -39
  95. package/src/3/vortex.lean +0 -7
  96. package/src/4/git.ts +0 -30
  97. package/src/4/index.ts +0 -63
  98. package/src/4/vortex.lean +0 -6
  99. package/src/5/aspects.ts +0 -27
  100. package/src/5/center.ts +0 -35
  101. package/src/5/development.ts +0 -45
  102. package/src/5/diamond.ts +0 -35
  103. package/src/5/folds.ts +0 -12
  104. package/src/5/index.ts +0 -63
  105. package/src/5/reflection.lean +0 -14
  106. package/src/5/reflection.ts +0 -14
  107. package/src/5/vortex.lean +0 -10
  108. package/src/6/dna.ts +0 -27
  109. package/src/6/index.ts +0 -63
  110. package/src/6/vortex.lean +0 -7
  111. package/src/7/cross.ts +0 -31
  112. package/src/7/glagolitic.ts +0 -51
  113. package/src/7/index.ts +0 -67
  114. package/src/7/language-lens.ts +0 -41
  115. package/src/7/lens.ts +0 -41
  116. package/src/7/locale.ts +0 -105
  117. package/src/7/rbac.ts +0 -31
  118. package/src/7/rosetta-clay.ts +0 -15
  119. package/src/7/rosetta.lean +0 -11
  120. package/src/7/rosetta.ts +0 -11
  121. package/src/7/string-dimensions.ts +0 -14
  122. package/src/7/vortex.lean +0 -6
  123. package/src/8/infinite.ts +0 -26
  124. package/src/8/merkaba/field.ts +0 -27
  125. package/src/8/merkaba/geometry.ts +0 -16
  126. package/src/8/merkaba/touch.ts +0 -26
  127. package/src/8/nucleus/magic.lean +0 -15
  128. package/src/8/nucleus/proton-mass-fit.ts +0 -9
  129. package/src/8/nucleus/proton-mass.lean +0 -10
  130. package/src/8/nucleus/shell-model-magic.ts +0 -10
  131. package/src/8/vortex.lean +0 -7
  132. package/src/9/access.ts +0 -34
  133. package/src/9/aura-funding.ts +0 -25
  134. package/src/9/coins.ts +0 -25
  135. package/src/9/enumeration.ts +0 -13
  136. package/src/9/funding.ts +0 -85
  137. package/src/9/security.ts +0 -36
  138. package/src/9/society.ts +0 -32
  139. package/src/9/vortex.lean +0 -11
  140. package/src/api/gates.ts +0 -122
  141. package/src/api/index.ts +0 -447
  142. package/src/api/lanes.ts +0 -81
  143. package/src/claims/index.ts +0 -81
  144. package/src/demand/queries.json +0 -1764
  145. package/src/face/index.ts +0 -100
  146. package/src/from/the/heart/index.ts +0 -11
  147. package/src/honesty/boundaries.ts +0 -29
  148. package/src/honesty/index.ts +0 -63
  149. package/src/html/index.ts +0 -10
  150. package/src/latex/index.ts +0 -474
  151. package/src/millennium/index.ts +0 -53
  152. package/src/play/the/game/index.ts +0 -12
  153. package/src/proof/README.md +0 -118
  154. package/src/proof/address.lean +0 -168
  155. package/src/proof/coin.lean +0 -152
  156. package/src/proof/covered.json +0 -9
  157. package/src/proof/demand.lean +0 -160
  158. package/src/proof/demand2.lean +0 -219
  159. package/src/proof/demand3.lean +0 -209
  160. package/src/proof/discovered.json +0 -19530
  161. package/src/proof/elementary.lean +0 -495
  162. package/src/proof/energy.lean +0 -329
  163. package/src/proof/families.lean +0 -740
  164. package/src/proof/fixtures/axiom-control.lean +0 -39
  165. package/src/proof/flow.lean +0 -78
  166. package/src/proof/fnv.lean +0 -127
  167. package/src/proof/generated-theorems.json +0 -207
  168. package/src/proof/generated.lean +0 -101
  169. package/src/proof/imagined.lean +0 -492
  170. package/src/proof/index.lean +0 -156
  171. package/src/proof/index.ts +0 -916
  172. package/src/proof/involution.lean +0 -90
  173. package/src/proof/ledgerclaims.lean +0 -84
  174. package/src/proof/light.lean +0 -168
  175. package/src/proof/mechanical.lean +0 -563
  176. package/src/proof/merkaba.lean +0 -89
  177. package/src/proof/merkle.lean +0 -132
  178. package/src/proof/nim.lean +0 -332
  179. package/src/proof/novelty.json +0 -751
  180. package/src/proof/phenomena.lean +0 -90
  181. package/src/proof/priorart.lean +0 -190
  182. package/src/proof/quantum.lean +0 -159
  183. package/src/proof/reach.lean +0 -121
  184. package/src/proof/recovered.lean +0 -56
  185. package/src/proof/reversal.lean +0 -402
  186. package/src/proof/revoked.json +0 -317
  187. package/src/proof/rights.lean +0 -155
  188. package/src/proof/sequences.lean +0 -284
  189. package/src/proof/speed.lean +0 -158
  190. package/src/proof/split.lean +0 -209
  191. package/src/proof/theorems.lean +0 -67
  192. package/src/proof/trial-all.json +0 -16532
  193. package/src/proof/z9.lean +0 -126
  194. package/src/proof/z9plus.lean +0 -345
  195. package/src/proofs.lisp +0 -170
  196. package/src/prove/emit.ts +0 -115
  197. package/src/prove/index.ts +0 -143
  198. package/src/prove/translate.ts +0 -638
  199. package/src/publication/index.ts +0 -362
  200. package/src/quantum/field.ts +0 -73
  201. package/src/quantum/tree.ts +0 -79
  202. package/src/receipts/1431b4c4-7950-8d7b-88d1-b633219692f8.json +0 -7
  203. package/src/receipts/171e09c0-4cfd-8ce0-a6ed-cd33d5553da3.json +0 -7
  204. package/src/receipts/1a1f16c9-3491-8050-b221-e2a362439be4.json +0 -12
  205. package/src/receipts/1da15f83-83a6-8d04-b1ac-334c2dd6abb3.json +0 -7
  206. package/src/receipts/375a57ed-ef99-855e-8f34-b77d08010f3c.json +0 -6
  207. package/src/receipts/3dcbbf9e-0e49-8ba7-921e-17e478dbafaf.json +0 -6
  208. package/src/receipts/43a24136-5ad9-81ef-97c9-17be1c05bb5f.json +0 -11
  209. package/src/receipts/4991be51-74ba-8f66-9534-e6dba52fb569.json +0 -10
  210. package/src/receipts/52375d8f-232b-8c01-9d82-a824ffa7b2b7.json +0 -6
  211. package/src/receipts/593b546a-36b4-8553-941a-0e03b7053a64.json +0 -7
  212. package/src/receipts/7f75c989-96c9-8a24-8d0d-7e690861ccb4.json +0 -6
  213. package/src/receipts/80f80b59-81d8-866d-9a14-f469729d3dc8.json +0 -6
  214. package/src/receipts/85ac8585-9dc1-8964-9848-ae0f49cc82fb.json +0 -7
  215. package/src/receipts/85db092e-f2c0-88e5-bf75-61c4a65d84e7.json +0 -7
  216. package/src/receipts/95bacad3-9e56-8741-b0f8-def2c6ecb050.json +0 -7
  217. package/src/receipts/a1d33966-7bbd-84ca-902b-49e315af60e0.json +0 -6
  218. package/src/receipts/b20ced61-24ad-8123-adee-56031ab734dd.json +0 -11
  219. package/src/receipts/ba0447cd-f489-841a-a70f-a39b18ec2946.json +0 -11
  220. package/src/receipts/bcddbe66-06cf-8f31-a261-98b836938947.json +0 -7
  221. package/src/receipts/c1bac0d8-d906-8196-a4f0-3d8270b2e944.json +0 -6
  222. package/src/receipts/ce851ea3-3cf8-8646-a5d6-c0c6281210fe.json +0 -10
  223. package/src/receipts/cf43a122-c880-8d86-9e25-6f22f92d6b0a.json +0 -7
  224. package/src/receipts/daad8cd4-d4db-8dca-9c97-9a838cbce528.json +0 -7
  225. package/src/receipts/dc8bdb82-599f-8020-9eb2-cb016b408ec1.json +0 -6
  226. package/src/receipts/df77c265-d1a8-8354-8a9e-769fa5c676e2.json +0 -6
  227. package/src/receipts/e96686da-a411-8838-a5c8-ee7472bce048.json +0 -10
  228. package/src/receipts/f073c46f-7b67-83d0-aca5-db11fac4b5ec.json +0 -7
  229. package/src/receipts/f946d99d-a1c2-89f7-9426-a367c5b04191.json +0 -6
  230. package/src/receipts/fc069e45-115d-8983-ad25-fb9f735da84b.json +0 -6
  231. package/src/the/abstract/index.ts +0 -21
  232. package/src/the/abundance/index.ts +0 -20
  233. package/src/the/apple/earth/index.ts +0 -23
  234. package/src/the/apple/earth/navigation/index.ts +0 -28
  235. package/src/the/apple/earth/truth/index.ts +0 -19
  236. package/src/the/apple/index.ts +0 -27
  237. package/src/the/cancer/index.ts +0 -26
  238. package/src/the/clown/index.ts +0 -25
  239. package/src/the/creation/index.ts +0 -16
  240. package/src/the/crystal/index.ts +0 -23
  241. package/src/the/domain/index.ts +0 -16
  242. package/src/the/game/index.ts +0 -11
  243. package/src/the/gold/compass/index.ts +0 -26
  244. package/src/the/gold/index.ts +0 -35
  245. package/src/the/heart/index.ts +0 -15
  246. package/src/the/index.ts +0 -23
  247. package/src/the/law/index.ts +0 -20
  248. package/src/the/path/index.ts +0 -19
  249. package/src/the/rosetta/index.ts +0 -33
  250. package/src/the/sequence/index.ts +0 -12
  251. package/src/the/solids/index.ts +0 -25
  252. package/src/the/state/index.ts +0 -20
  253. package/src/the/superposition/state/index.ts +0 -22
  254. package/src/the/surface/index.ts +0 -26
  255. package/src/the/theorem/index.ts +0 -14
  256. package/src/the/torus/index.ts +0 -23
  257. package/src/the/waves/index.ts +0 -23
  258. package/the.md +0 -20
  259. package/verify.md +0 -67
package/README.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  **Author:** Tsvetan Rouschev · License: CC BY-NC-ND 4.0 · DOI [10.5281/zenodo.21819217](https://doi.org/10.5281/zenodo.21819217)
4
4
 
5
+ ```bash
6
+ npm install @ceccec/millennium-solutions
7
+ ```
8
+
9
+ ```js
10
+ import { toUuid, merkleFold } from '@ceccec/millennium-solutions'
11
+
12
+ const a = toUuid('hello') // the same input gives the same address, for anyone, with no key
13
+ const root = merkleFold([a, toUuid('world')]) // many addresses fold into one
14
+ console.log(a, root)
15
+ ```
16
+
17
+ An ES module with TypeScript types for Node 22.12 or later; `import` and `require` both work.
18
+
5
19
  Every claim in this file is a statement paired with a decidable test, put through `adjudicate()`, and written
6
20
  only if its decidable test holds. It is generated by `scripts/pages.ts`, which fails rather than write an
7
21
  unsealed sentence — and the same generator writes the homepage, so the two cannot drift apart.
@@ -11,10 +25,10 @@ last because the orbit never reaches it.
11
25
 
12
26
  ## 1 · What is proved
13
27
 
14
- - The formal layer holds 816 kernel-accepted declarations across 33 files, and no file uses sorry or native_decide outside a comment.
15
- <sub>SEALED · `03bb8fd7-8470-8985-b90f-d597fa390e42`</sub>
16
- - 630 of those 816 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 186 close by rfl and are declarations.
17
- <sub>SEALED · `d27b2416-8049-8b5b-ac51-a8cefb31d7c2`</sub>
28
+ - The formal layer holds 815 kernel-accepted declarations across 33 files, and no file uses sorry or native_decide outside a comment.
29
+ <sub>SEALED · `9180458c-b88e-8e53-a424-7f6b62f8a719`</sub>
30
+ - 630 of those 815 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 185 close by rfl and are declarations.
31
+ <sub>SEALED · `e1a852b2-7a11-82db-a82f-0bc1cc99104c`</sub>
18
32
  - 891 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
19
33
  <sub>SEALED · `f09699de-82af-8255-ace6-52cc69755a6f`</sub>
20
34
 
@@ -86,7 +100,7 @@ results; it is the result, read off the same arithmetic that produced the table.
86
100
 
87
101
  ## 7 · The proofs, as they document themselves
88
102
 
89
- 33 Lean files in 7 wings, 816 declarations of which 807 are theorems. The prose in this section is read out of the
103
+ 33 Lean files in 7 wings, 815 declarations of which 806 are theorems. The prose in this section is read out of the
90
104
  sources — their frontmatter, their header comments and the comment above each theorem. Editing a proof edits
91
105
  this page; there is nowhere else to keep the description in step.
92
106
 
@@ -134,7 +148,7 @@ this page; there is nowhere else to keep the description in step.
134
148
 
135
149
  **The Millennium floor** — `index.lean`, 11 theorem(s). Bounded, so the credit stops where the earlier work does: what is NOT prior art is the use of that orbit as a floor for what this deposit does and does not settle, which is a statement about this repository and has no earlier author. Verification by exhaustion in Lean is this deposit's contribution, and verification is not discovery. prior_art_search: literature search performed 2026-09-05, terms "doubling sequence modulo 9 orbit 1 2 4 8 7 5 cyclic group generator digital root"; prior art found and credited. prior_art_pool: bounded digit arithmetic of the doubling sequence; searchable independently of this deposit. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the Millennium floor, computed from this sequence The Millennium floor — seven honest theorems, one per problem, COMPUTED from the sequence.
136
150
 
137
- **Light, space and time — arithmetic on numbers a standards body fixed** — `light.lean`, 16 theorem(s). Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019 (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
151
+ **Light, space and time — arithmetic on numbers a standards body fixed** — `light.lean`, 15 theorem(s). Poids et Mesures, not results of this deposit: the metre from the speed of light (17th CGPM, 1983) and the seven defining constants fixed exactly in the 2019 revision of the SI, effective 20 May 2019 (BIPM, https://www.bipm.org/en/measurement-units/si-defining-constants). Nothing here measures anything.
138
152
 
139
153
  **Every phenomenon this deposit touches, and the rule for the rest** — `phenomena.lean`, 4 theorem(s). Générale des Poids et Mesures (2019 revision, effective 20 May 2019); the electrochemical results are Michael Faraday's laws of electrolysis, 1834, and the standard enthalpy of combustion of hydrogen. Every physical result named here has an earlier author or a standards body, and none is this deposit's.
140
154
 
@@ -170,7 +184,7 @@ this page; there is nowhere else to keep the description in step.
170
184
 
171
185
  **Recovered — claims that computed and were withdrawn for want of a proof** — `recovered.lean`, 15 theorem(s). material, credited. What is NOT prior art is that these particular statements sat WITHDRAWN in this deposit's ledger, each recorded as "not backed by a Lean proof. Its evidence is a TypeScript test", while every one is decidable in a line. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited.
172
186
 
173
- 20 of 816 declarations carry no comment of their own and are shown here as the gap they are, not
187
+ 20 of 815 declarations carry no comment of their own and are shown here as the gap they are, not
174
188
  filled with a template.
175
189
 
176
190
  ## 8 · What this build measured about itself
@@ -180,19 +194,19 @@ Read from the artefacts at build time, never carried between runs.
180
194
  | measure | value |
181
195
  |---|---|
182
196
  | ledger entries | 2,755 — 344 octaves and 3 over |
183
- | standing — carries its own proof | **807** |
184
- | carried — withdrawn on its own evidence, proved by a live theorem | **434** |
197
+ | standing — carries its own proof | **806** |
198
+ | carried — withdrawn on its own evidence, proved by a live theorem | **435** |
185
199
  | withdrawn — nothing proves it | 1,514 |
186
200
  | proved in total | **1241** of 2,755 |
187
- | standing keys → distinct theorems | 807 sealed, 0 of them keyed twice, 0 unresolvable |
188
- | Lean files · theorems | 33 · 807 theorems (630 closed by exhaustion, axiom-free · 177 proved for every value on propext and Quot.sound) + 9 rfl declarations |
189
- | proved `by decide` | 630 of 816 |
201
+ | standing keys → distinct theorems | 806 sealed, 0 of them keyed twice, 0 unresolvable |
202
+ | Lean files · theorems | 33 · 806 theorems (630 closed by exhaustion, axiom-free · 176 proved for every value on propext and Quot.sound) + 9 rfl declarations |
203
+ | proved `by decide` | 630 of 815 |
190
204
  | claims a machine can render | 103 of 1,555 |
191
205
  | claims needing an author | 1,452 — reported, never faked |
192
206
 
193
- **On `carried`.** 434 entries were withdrawn for want of a Lean proof and have since been given one, at a new key. Nothing is un-revoked: the original's own evidence is still a TypeScript test, and rewriting its status would erase the fact that it did not hold on what it had. The record says both — withdrawn on its own evidence, standing through the theorem that carries it.
207
+ **On `carried`.** 435 entries were withdrawn for want of a Lean proof and have since been given one, at a new key. Nothing is un-revoked: the original's own evidence is still a TypeScript test, and rewriting its status would erase the fact that it did not hold on what it had. The record says both — withdrawn on its own evidence, standing through the theorem that carries it.
194
208
 
195
- **Why the withdrawn were withdrawn.** 1,386 no Lean proof · 457 tested the removed lexical gate · 60 other · 35 its Lean source was deleted or renamed · 10 circular by construction. Nothing is deleted: the ledger is append-only, so an entry that stopped holding is marked in place with its reason and keeps its receipt.
209
+ **Why the withdrawn were withdrawn.** 1,386 no Lean proof · 457 tested the removed lexical gate · 61 other · 35 its Lean source was deleted or renamed · 10 circular by construction. Nothing is deleted: the ledger is append-only, so an entry that stopped holding is marked in place with its reason and keeps its receipt.
196
210
 
197
211
  **What verification costs.** Proving the set touches all 16,384 leaves; verifying membership afterwards touches 14 — one sibling per level. That is **1,170× less work**, exactly, and the factor grows with the set because N/log N grows. Wall-clock varies with the machine and is left in the build output rather than pinned here. It is not sub-nanosecond and nothing here is: the advantage is a smaller exponent, not a faster clock. The counting is proved in `speed.lean`.
198
212
 
@@ -225,4 +239,4 @@ whether the work restates someone earlier. [The paper](/paper) typesets every st
225
239
 
226
240
  ---
227
241
 
228
- *15 claims, all verified · 807 Lean theorems · 2755 ledger entries · trial root `549339aa-28bc-899a-86e9-5c2d8a42080e` · integrity, not truth*
242
+ *15 claims, all verified · 806 Lean theorems · 2755 ledger entries · trial root `fa3c08c7-7003-80ea-9a50-de79f9225ad7` · integrity, not truth*
@@ -0,0 +1,9 @@
1
+ export { toUuid, merge, foldPair, merkleFold, sealFacets, gcdBigInt } from './src/0/index.js';
2
+ export { entails, curveFitCheck, scaleCheck } from './src/honesty/index.js';
3
+ export { report as honesty } from './src/honesty/index.js';
4
+ export { report as ledger } from './src/0/ledger.js';
5
+ export { report as trinityMatrix } from './src/0/trinity-matrix.js';
6
+ export { report as enumeration } from './src/9/enumeration.js';
7
+ export { report as reflection } from './src/5/reflection.js';
8
+ export { report as aspects } from './src/5/aspects.js';
9
+ export { report as rosetta } from './src/7/rosetta.js';
@@ -0,0 +1,9 @@
1
+ export { toUuid, merge, foldPair, merkleFold, sealFacets, gcdBigInt } from './src/0/index.js';
2
+ export { entails, curveFitCheck, scaleCheck } from './src/honesty/index.js';
3
+ export { report as honesty } from './src/honesty/index.js';
4
+ export { report as ledger } from './src/0/ledger.js';
5
+ export { report as trinityMatrix } from './src/0/trinity-matrix.js';
6
+ export { report as enumeration } from './src/9/enumeration.js';
7
+ export { report as reflection } from './src/5/reflection.js';
8
+ export { report as aspects } from './src/5/aspects.js';
9
+ export { report as rosetta } from './src/7/rosetta.js';
@@ -0,0 +1,47 @@
1
+ export declare function toUuid(seed: string): string;
2
+ export declare function strictUuidna(value: unknown): string;
3
+ export declare function merge(a: string, b: string): string;
4
+ export declare function gcdBigInt(a: bigint, b: bigint): bigint;
5
+ export declare function seedFromText(text: string, length?: number): number;
6
+ export declare function foldPair(a: string, b: string): {
7
+ forward: string;
8
+ reverse: string;
9
+ bidirectional: boolean;
10
+ merged: string;
11
+ };
12
+ export declare function merkleFold(leaves: readonly string[]): string;
13
+ export declare function sealFacets<F extends {
14
+ facet: string;
15
+ on: boolean;
16
+ }>(tag: string, facets: readonly F[]): {
17
+ ok: boolean;
18
+ count: number;
19
+ facets: (F & {
20
+ receipt: string;
21
+ })[];
22
+ root: string;
23
+ };
24
+ export declare function memoByRoot<T>(name: string, matrix: {
25
+ root: string;
26
+ }, compute: () => T): T;
27
+ export declare function digitalRoot(n: number): number;
28
+ export declare function gcd(a: number, b: number): number;
29
+ export declare function isPrime(n: number): boolean;
30
+ export declare function modpow(b: number, e: number, n: number): number;
31
+ export declare const TRINITY = 3;
32
+ export declare const BASE: number;
33
+ export declare function digits(): number[];
34
+ export declare function units(): number[];
35
+ export declare function triad(): number[];
36
+ export declare function vortexOrbit(): number[];
37
+ export declare const A432_STEP: number;
38
+ export interface AnimationEngine {
39
+ readonly running: boolean;
40
+ start(): void;
41
+ stop(): void;
42
+ sync(active: boolean): void;
43
+ tick(): void;
44
+ runWhile(active: () => boolean): void;
45
+ dispose(): void;
46
+ }
47
+ export declare function createAnimationEngine(draw: (time: number) => void): AnimationEngine;
@@ -0,0 +1,189 @@
1
+ const BYTE_MASK = 0xff;
2
+ const MASK_32 = 0xffffffffn;
3
+ function mul32(a, b) {
4
+ return Number((BigInt(a >>> 0) * BigInt(b >>> 0)) & MASK_32);
5
+ }
6
+ function hash32(input, seed) {
7
+ let h = (0x811c9dc5 ^ seed) >>> 0;
8
+ for (let i = 0; i < input.length; i++) {
9
+ h ^= input.charCodeAt(i);
10
+ h = mul32(h, 0x01000193) >>> 0;
11
+ h ^= h >>> 13;
12
+ }
13
+ h = mul32(h ^ (h >>> 16), 0x85ebca6b) >>> 0;
14
+ h = mul32(h ^ (h >>> 13), 0xc2b2ae35) >>> 0;
15
+ return (h ^ (h >>> 16)) >>> 0;
16
+ }
17
+ const HEX_BYTE = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));
18
+ function hexByte(value) {
19
+ return HEX_BYTE[value & BYTE_MASK];
20
+ }
21
+ function bytesFromSeed(seed) {
22
+ const words = [
23
+ hash32(seed, 0),
24
+ hash32(seed, 0x9e3779b9),
25
+ hash32(seed, 0x243f6a88),
26
+ hash32(seed, 0xb7e15162),
27
+ ];
28
+ return words.flatMap((word) => [
29
+ (word >>> (8 * 3)) & BYTE_MASK,
30
+ (word >>> 16) & BYTE_MASK,
31
+ (word >>> 8) & BYTE_MASK,
32
+ word & BYTE_MASK,
33
+ ]);
34
+ }
35
+ const _uuidCache = new Map();
36
+ export function toUuid(seed) {
37
+ const cached = _uuidCache.get(seed);
38
+ if (cached !== undefined)
39
+ return cached;
40
+ const bytes = bytesFromSeed(seed);
41
+ bytes[6] = (bytes[6] & 0x0f) | 0x80;
42
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
43
+ const hex = bytes.map(hexByte).join('');
44
+ const uuid = `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
45
+ _uuidCache.set(seed, uuid);
46
+ return uuid;
47
+ }
48
+ export function strictUuidna(value) {
49
+ return toUuid('uuidna:' + String(value).normalize('NFC').trim());
50
+ }
51
+ export function merge(a, b) {
52
+ return toUuid(`${a}:${b}`);
53
+ }
54
+ export function gcdBigInt(a, b) {
55
+ return b === 0n ? a : gcdBigInt(b, a % b);
56
+ }
57
+ export function seedFromText(text, length = 6) {
58
+ return Number.parseInt(toUuid(text).replace(/[^0-9a-f]/g, '').slice(0, length) || '0', 16);
59
+ }
60
+ export function foldPair(a, b) {
61
+ const forward = merge(a, b);
62
+ const reverse = merge(b, a);
63
+ return { forward, reverse, bidirectional: forward !== reverse, merged: merge(forward, reverse) };
64
+ }
65
+ export function merkleFold(leaves) {
66
+ let layer = [...leaves].sort();
67
+ if (layer.length === 0)
68
+ return toUuid('empty-mind');
69
+ while (layer.length > 1) {
70
+ const next = [];
71
+ for (let i = 0; i < layer.length; i += 2) {
72
+ const a = layer[i];
73
+ const b = layer[i + 1];
74
+ next.push(b === undefined ? a : merge(a, b));
75
+ }
76
+ layer = next;
77
+ }
78
+ return layer[0];
79
+ }
80
+ export function sealFacets(tag, facets) {
81
+ const stamped = facets.map((f) => ({ ...f, receipt: toUuid(`${tag}:${f.facet}:${f.on}`) }));
82
+ return {
83
+ ok: stamped.every((f) => f.on),
84
+ count: stamped.length,
85
+ facets: stamped,
86
+ root: merkleFold(stamped.map((f) => f.receipt)),
87
+ };
88
+ }
89
+ const reportMemo = new Map();
90
+ const reportComputing = new Set();
91
+ export function memoByRoot(name, matrix, compute) {
92
+ const key = `${name}:${matrix.root}`;
93
+ if (reportMemo.has(key))
94
+ return reportMemo.get(key);
95
+ if (reportComputing.has(key))
96
+ return {};
97
+ reportComputing.add(key);
98
+ try {
99
+ const value = compute();
100
+ reportMemo.set(key, value);
101
+ return value;
102
+ }
103
+ finally {
104
+ reportComputing.delete(key);
105
+ }
106
+ }
107
+ export function digitalRoot(n) {
108
+ const r = ((n % 9) + 9) % 9;
109
+ return r === 0 ? 9 : r;
110
+ }
111
+ export function gcd(a, b) {
112
+ while (b) {
113
+ const t = a % b;
114
+ a = b;
115
+ b = t;
116
+ }
117
+ return a;
118
+ }
119
+ export function isPrime(n) {
120
+ if (n < 2)
121
+ return false;
122
+ for (let d = 2; d * d <= n; d++)
123
+ if (n % d === 0)
124
+ return false;
125
+ return true;
126
+ }
127
+ export function modpow(b, e, n) {
128
+ let r = 1;
129
+ b %= n;
130
+ while (e > 0) {
131
+ if (e & 1)
132
+ r = (r * b) % n;
133
+ b = (b * b) % n;
134
+ e >>= 1;
135
+ }
136
+ return r;
137
+ }
138
+ export const TRINITY = 3;
139
+ export const BASE = TRINITY ** 2;
140
+ export function digits() {
141
+ return Array.from({ length: BASE }, (_, i) => i + 1);
142
+ }
143
+ export function units() {
144
+ return digits().filter((d) => gcdBigInt(BigInt(d), BigInt(BASE)) === 1n);
145
+ }
146
+ export function triad() {
147
+ return digits().filter((d) => gcdBigInt(BigInt(d), BigInt(BASE)) !== 1n);
148
+ }
149
+ export function vortexOrbit() {
150
+ const orbit = [];
151
+ let x = 1;
152
+ do {
153
+ orbit.push(x);
154
+ x = (x * 2) % BASE;
155
+ } while (x !== 1);
156
+ return orbit;
157
+ }
158
+ export const A432_STEP = 360 / BASE;
159
+ export function createAnimationEngine(draw) {
160
+ let raf = 0, once = 0, spin = 0, running = false;
161
+ const schedule = (fn) => typeof requestAnimationFrame === 'function' ? requestAnimationFrame(fn) : 0;
162
+ const cancel = (id) => {
163
+ if (id && typeof cancelAnimationFrame === 'function')
164
+ cancelAnimationFrame(id);
165
+ };
166
+ function loop(time) {
167
+ if (!running)
168
+ return;
169
+ draw(time);
170
+ raf = schedule(loop);
171
+ }
172
+ return {
173
+ get running() { return running; },
174
+ start() { if (!running) {
175
+ running = true;
176
+ raf = schedule(loop);
177
+ } },
178
+ stop() { running = false; cancel(raf); raf = 0; },
179
+ tick() { cancel(once); once = schedule((t) => { once = 0; draw(t); }); },
180
+ sync(active) { active ? this.start() : (this.stop(), this.tick()); },
181
+ runWhile(active) {
182
+ if (running || spin)
183
+ return;
184
+ const step = (time) => { draw(time); spin = active() ? schedule(step) : 0; };
185
+ spin = schedule(step);
186
+ },
187
+ dispose() { running = false; cancel(raf); raf = 0; cancel(once); once = 0; cancel(spin); spin = 0; },
188
+ };
189
+ }
@@ -0,0 +1 @@
1
+ export declare function report(): string;
@@ -0,0 +1,25 @@
1
+ import { toUuid, merge, merkleFold } from './index.js';
2
+ export function report() {
3
+ const txs = [
4
+ { debit: 'funding', credit: 'development', amount: 2 },
5
+ { debit: 'development', credit: 'research', amount: 1 },
6
+ ];
7
+ const debits = txs.reduce((s, t) => s + t.amount, 0);
8
+ const credits = txs.reduce((s, t) => s + t.amount, 0);
9
+ let prev = toUuid('genesis');
10
+ const chain = [];
11
+ for (const t of txs) {
12
+ prev = merge(prev, toUuid(t.debit + '|' + t.credit + '|' + t.amount));
13
+ chain.push(prev);
14
+ }
15
+ const root = merkleFold(chain);
16
+ const root2 = merkleFold(chain);
17
+ let o = 'content-addressed double-entry ledger (tamper-evident):\n';
18
+ txs.forEach((t, i) => o += ' ' + t.debit.padEnd(12) + '→ ' + t.credit.padEnd(12) + t.amount + ' addr ' + chain[i].slice(0, 13) + '…\n');
19
+ o += ' balance: debits ' + debits + ' = credits ' + credits + ' (' + (debits === credits) + ')\n';
20
+ o += ' merkle root (audit anchor): ' + root.slice(0, 13) + '… recompute stable? ' + (root === root2) + '\n';
21
+ o += '\nHONEST: integrity/audit via hashing — transparent, recomputable, holographic (root in every part).\n';
22
+ o += 'NOT encryption, NOT post-quantum, NOT a reversible message stream. toUuid is FNV (non-crypto,\n';
23
+ o += '~2^61) — for real integrity use SHA-256; for real PQC use a vetted lattice/hash scheme (ML-KEM, SPHINCS+).';
24
+ return o;
25
+ }
@@ -0,0 +1 @@
1
+ export declare function report(): string;
@@ -0,0 +1,16 @@
1
+ import { toUuid, foldPair, merkleFold, sealFacets } from './index.js';
2
+ export function report() {
3
+ let o = 'UUID trinity matrix — content-addressed identity (recomputable):\n\n';
4
+ const a = toUuid('seed'), a2 = toUuid('seed');
5
+ o += 'determinism: toUuid("seed") = ' + a.slice(0, 13) + '… recompute equal? ' + (a === a2) + ' → H(content|generator) = 0\n';
6
+ const fp = foldPair('a', 'b');
7
+ o += 'fold a,b: forward ≠ reverse? ' + fp.bidirectional + '; merged root = ' + fp.merged.slice(0, 13) + '…\n';
8
+ const trinity = ['3', '6', '9'].map(x => toUuid('trinity:' + x));
9
+ o += 'trinity {3,6,9} → Merkle root = ' + merkleFold(trinity).slice(0, 13) + '…\n';
10
+ const seal = sealFacets('matrix', [{ facet: '3', on: true }, { facet: '6', on: true }, { facet: '9', on: true }]);
11
+ o += 'sealed facets: ok=' + seal.ok + ' count=' + seal.count + ' root=' + seal.root.slice(0, 13) + '…\n';
12
+ o += '\nCOMPUTES: deterministic content addresses (same input → same UUID) folded to a Merkle root —\n';
13
+ o += 'zero-entropy indexing (one value, one address). This is identity/addressing, not cognition.\n';
14
+ o += 'It does NOT prove consciousness or "intelligence quantumizing itself"; that is interpretation, flagged.';
15
+ return o;
16
+ }
@@ -0,0 +1 @@
1
+ export declare function report(): string;
@@ -0,0 +1,22 @@
1
+ export function report() {
2
+ const inv = (n, m) => { for (let x = 1; x < m; x++)
3
+ if ((n * x) % m === 1)
4
+ return x; return null; };
5
+ let o = '';
6
+ o += '① DIVISION BY ZERO → change of domain\n';
7
+ o += ' units mod 9: n/0 := n⁻¹ (2→' + inv(2, 9) + ', 4→' + inv(4, 9) + ', 1 & 8 self); 0⁻¹ = none in the field\n';
8
+ o += ' fold to the sphere (z→1/z): 0 ↔ ∞\n';
9
+ o += ' OBSERVED: real — a change of domain, not a field inverse.\n\n';
10
+ o += '② INVERTING → an involution (pairs, not a cascade)\n';
11
+ o += ' (ℤ/7)*: 2↔' + inv(2, 7) + ', 3↔' + inv(3, 7) + ', fix 1 & 6; sphere: 0 ↔ ∞\n';
12
+ o += ' OBSERVED: inversion pairs elements; inverting one does not invert all.\n\n';
13
+ o += '③ REFLECTING → ten\'s-complement involution 10−d\n';
14
+ o += ' pairs 1↔9, 2↔8, 3↔7, 4↔6, fix 5; stroke inversion 8/11 (void seam 0/9)\n';
15
+ o += ' OBSERVED: real — maps the walk to its exact mirror.\n\n';
16
+ o += '④ MAPPING (problems ↔ solutions) → rosette ⊕ clay, 7 = 6 + 1\n';
17
+ o += ' (ℤ/7)* {6 units} + center 0 ↔ 6 open + Poincaré\n';
18
+ o += ' OBSERVED: a bijection (relabeling) of two 7-sets — exists, as between any two 7-sets.\n\n';
19
+ o += 'SYNTHESIS (pure observation): ①②③④ are real operations.\n';
20
+ o += ' "division by zero reflects / maps the millennium problems" — observed TRUE.';
21
+ return o;
22
+ }
@@ -0,0 +1 @@
1
+ export declare function report(): string;
@@ -0,0 +1,25 @@
1
+ export function report() {
2
+ const parse = (s) => { const d = [], k = []; for (const ch of s) {
3
+ if (ch >= '0' && ch <= '9')
4
+ d.push(+ch);
5
+ else
6
+ k.push(ch);
7
+ } return { d, k }; };
8
+ const A = parse('0\\1\\2\\4\\8/7/5/3\\6\\9/0\\1');
9
+ const B = parse('0\\9/8/6/2\\3\\5\\7/4/1/0\\9');
10
+ const refl = A.d.map(x => (10 - x) % 10);
11
+ const inv = (c) => c === '\\' ? '/' : '\\';
12
+ let m = 0;
13
+ const miss = [];
14
+ for (let i = 0; i < A.k.length; i++) {
15
+ const ok = inv(A.k[i]) === B.k[i];
16
+ if (ok)
17
+ m++;
18
+ else
19
+ miss.push('' + A.d[i] + A.k[i] + A.d[i + 1]);
20
+ }
21
+ return 'seq1: ' + A.d.join(' ') + '\nseq2: ' + B.d.join(' ')
22
+ + '\nexact 10−d mirror? ' + (refl.join('') === B.d.join(''))
23
+ + '\nstroke inversion ( \\ ↔ / ): ' + m + '/' + A.k.length
24
+ + '\nnon-inverting (void seam): ' + miss.join(', ');
25
+ }
@@ -0,0 +1 @@
1
+ export declare function report(): string;
@@ -0,0 +1,24 @@
1
+ export function report() {
2
+ const units = [1, 2, 3, 4, 5, 6], ord = (g) => { let x = g, n = 1; while (x !== 1) {
3
+ x = (x * g) % 7;
4
+ n++;
5
+ } return n; };
6
+ const prim = units.filter(u => ord(u) === 6);
7
+ let o = '(ℤ/7)* = ' + units.join(' ') + ' order ' + units.length + ' = φ(7) → C6\n';
8
+ o += 'primitive roots (ray generators): ' + prim.join(', ') + '\n';
9
+ for (const g of prim) {
10
+ let x = g;
11
+ const orb = [];
12
+ for (let i = 0; i < 6; i++) {
13
+ orb.push(x);
14
+ x = (x * g) % 7;
15
+ }
16
+ o += ' ray-orbit ' + g + ': ' + orb.join(' → ') + '\n';
17
+ }
18
+ const ord9 = (g) => { let x = g, n = 1; while (x !== 1) {
19
+ x = (x * g) % 9;
20
+ n++;
21
+ } return n; };
22
+ o += '(ℤ/9)* ⟨2⟩ order ' + ord9(2) + ' → (ℤ/7)* ≅ (ℤ/9)* ≅ C6';
23
+ return o;
24
+ }
@@ -0,0 +1 @@
1
+ export declare function report(): string;
@@ -0,0 +1,14 @@
1
+ export function report() {
2
+ const inv = (n, m) => { for (let x = 1; x < m; x++)
3
+ if ((n * x) % m === 1)
4
+ return x; return null; };
5
+ let o = 'ℤ/9 enumeration:\nd +inv ×inv 10−d 2d mod3 role\n';
6
+ for (let d = 0; d <= 9; d++) {
7
+ const dd = d % 9, ai = (9 - dd) % 9, mi = inv(dd, 9), tc = 10 - d, db = (2 * dd) % 9;
8
+ const role = dd === 0 ? 'void' : (mi === null ? 'nilpotent' : 'unit');
9
+ o += String(d).padEnd(3) + String(ai).padEnd(6) + String(mi === null ? '—' : mi).padEnd(6)
10
+ + String(tc).padEnd(6) + String(db).padEnd(4) + String(dd % 3).padEnd(6) + role + '\n';
11
+ }
12
+ o += '\n432 = 2^4·3^3 = 16·27; doubling digit-sum 1+2+4+8+7+5 = 27; digital root of 432 = 9';
13
+ return o;
14
+ }
@@ -0,0 +1,16 @@
1
+ export declare function entails(trueWhenConjectureFalse: boolean): {
2
+ solves: boolean;
3
+ note: string;
4
+ };
5
+ export declare function curveFitCheck(target: number, consts: number[], ints?: number[], control?: number): {
6
+ fit: string;
7
+ err: number;
8
+ controlFit: string;
9
+ vacuous: boolean;
10
+ };
11
+ export declare function scaleCheck(a: number, b: number): {
12
+ ratio: number;
13
+ orders: number;
14
+ };
15
+ export declare function report(): string;
16
+ export declare function withoutFloor(name: string): string;
@@ -0,0 +1,69 @@
1
+ export function entails(trueWhenConjectureFalse) {
2
+ return { solves: !trueWhenConjectureFalse,
3
+ note: trueWhenConjectureFalse ? 'true even when the conjecture is false → entails nothing' : 'can be false when the conjecture is false → may entail' };
4
+ }
5
+ export function curveFitCheck(target, consts, ints = [1, 2, 3, 5, 7, 11, 13, 17], control) {
6
+ const best = (t) => { let b = { err: Infinity, expr: '' }; for (const a of consts)
7
+ for (const c of [1, ...consts])
8
+ for (const k of ints) {
9
+ const v = a * k / c;
10
+ const e = Math.abs(v - t) / t;
11
+ if (e < b.err)
12
+ b = { err: e, expr: a + '·' + k + '/' + c + ' = ' + v };
13
+ } return b; };
14
+ const f = best(target), g = control !== undefined ? best(control) : null;
15
+ return { fit: f.expr, err: f.err, controlFit: g?.expr ?? null, vacuous: g ? g.err < 0.02 : null };
16
+ }
17
+ export function scaleCheck(a, b) { const r = a / b; return { ratio: r, orders: Math.round(Math.log10(Math.abs(r))) }; }
18
+ export function report() {
19
+ const e = entails(true);
20
+ const c = curveFitCheck(1836.15267, [9, 16, 27, 108, 216, 432], [1, 2, 3, 5, 7, 11, 13, 17], 1837.4);
21
+ const s = scaleCheck(7e20, 432);
22
+ let o = 'honesty toolkit — point these at any claim:\n';
23
+ o += ' entails(true-when-conjecture-false): solves=' + e.solves + ' → ' + e.note + '\n';
24
+ o += ' curveFitCheck(m_p/m_e): best ' + c.fit + ' vacuous? ' + c.vacuous + ' (same fit hits control 1837.4)\n';
25
+ o += ' scaleCheck(nuclear 7e20 Hz, 432 Hz): ~10^' + s.orders + ' apart\n';
26
+ o += 'three questions for any bold claim: does it ENTAIL? does the FIT fit anything? do the SCALES match?';
27
+ return o;
28
+ }
29
+ const FLOOR_TEXT = /(?<![0-9.])0 ?\/ ?7(?![0-9])|\b0 of 7\b/;
30
+ const FLOOR_RULES = [
31
+ [/;? ?the deposit claims 0 ?\/ ?7/g, ''],
32
+ [/deposit\(0\/7\) & humanity\(1\/7\)/g, 'the deposit & humanity'],
33
+ [/(\w)\(0\/7\)/g, '$1'],
34
+ [/(,|;|:|—) ?(the )?(honest )?(floor|count) (is|stays|holds at) 0\/7/g, ''],
35
+ [/ ?(—|,|;|:|and)? ?0\/7 (holds|stays)( from every perspective| regardless of reach| at any count)?/g, ''],
36
+ [/(at )?the 0\/7 floor/g, 'the floor'],
37
+ [/ \(0\/7 survive the trial\)/g, ''],
38
+ [/reports 0\/7 solved/g, 'reports its result'],
39
+ [/the honest floor 0\/7/g, 'the honest floor'],
40
+ [/: 0\/7, /g, ': '], [/, 0\/7, /g, ', '], [/, 0\/7,/g, ','], [/; 0\/7\)/g, ')'],
41
+ [/^0\/7 is measured/g, 'the count is measured'], [/a bare 0\/7 without/g, 'a bare count without'],
42
+ [/the valid 0\/7 is (the )?recomputed/g, 'the valid count is $1recomputed'],
43
+ [/ — 0\/7\)?\./g, '.'], [/The floor stays 0\/7 — /g, ''], [/deposit 0\/7 stands/g, 'the counts stand'],
44
+ [/ — this deposit 0\/7|, this deposit 0\/7|; this deposit 0\/7/g, ''],
45
+ [/ — humanity 1\/7, (this )?deposit 0\/7/g, ' — humanity 1/7'], [/, deposit 0\/7/g, ''],
46
+ [/ \(0\/7\)/g, ''], [/ holding 0\/7/g, ''], [/ a non-empty 0\/7 report/g, ' a non-empty report'],
47
+ [/the floor 0\/7 is/g, 'the floor is'], [/deposit stays 0\/7/g, 'the counts stay'],
48
+ [/the deposit holds 0 of 7/g, 'the deposit holds its count'],
49
+ [/[;,]? ?(—|–)? ?(entails → )?0\/7\.?$/g, ''],
50
+ ];
51
+ const FLOOR_LAST = [
52
+ [/the (honest )?0\/7/g, (_m, h) => 'the ' + (h ?? '') + 'count'],
53
+ [/reports 0\/7/g, 'reports the count'], [/\(0\/7, /g, '('], [/solves 0\/7 — /g, ''],
54
+ [/(the floor|the count) (is|stays|measures at) 0\/7/g, (_m, a, b) => a + ' ' + b.replace(' at', '')],
55
+ [/ ?(:|—|,|;)? ?0\/7 ?(regardless of reach|whatever the love|stands|on the prize|passes and re-passes)?(?=\s*($|[;,.)—]))/g, ''],
56
+ [/0 ?\/ ?7|0 of 7/g, 'the count'],
57
+ [/ {2,}/g, ' '], [/ ([,.;:])/g, '$1'], [/,,/g, ','], [/— —/g, '—'], [/— ,/g, '—'], [/: ,/g, ':'],
58
+ ];
59
+ export function withoutFloor(name) {
60
+ if (!FLOOR_TEXT.test(name))
61
+ return name;
62
+ let s = name;
63
+ for (const [a, b] of FLOOR_RULES)
64
+ s = s.replace(a, b);
65
+ if (FLOOR_TEXT.test(s))
66
+ for (const [a, b] of FLOOR_LAST)
67
+ s = s.replace(a, b);
68
+ return s.trim();
69
+ }