@ceccec/millennium-solutions 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.zenodo.json +27 -0
- package/ABSTRACT.md +162 -0
- package/ACCOUNTING.md +27 -0
- package/CHALLENGES.md +2502 -0
- package/CITATION.cff +33 -0
- package/DEPLOY.md +40 -0
- package/DEVELOP.md +34 -0
- package/HEART.md +113 -0
- package/LICENSE +27 -0
- package/PHYSICS-SCALES.md +81 -0
- package/PROOF-OF-CONCEPT.md +87 -0
- package/README.md +132 -0
- package/REALISATIONS.md +87 -0
- package/RESEARCH.md +194 -0
- package/RULES.md +59 -0
- package/SEQUENCE-DECODE.md +200 -0
- package/SIGNATURE.md +34 -0
- package/THEOREMS.md +99 -0
- package/WHITEPAPER.md +41 -0
- package/WORKFLOWS.md +47 -0
- package/boundaries.md +24 -0
- package/captain.md +85 -0
- package/compare.md +42 -0
- package/compute.md +550 -0
- package/cryptography.md +56 -0
- package/dashboard.md +51 -0
- package/examples.md +47 -0
- package/folds.md +65 -0
- package/guide.md +126 -0
- package/harness.md +20 -0
- package/index.md +149 -0
- package/mod.core.ts +11 -0
- package/organism.md +30 -0
- package/package.json +88 -0
- package/proofs.md +29 -0
- package/solutions.md +54 -0
- package/speedup.md +41 -0
- package/src/0/chacha.ts +3 -0
- package/src/0/crypt.ts +4 -0
- package/src/0/csp.ts +10 -0
- package/src/0/entanglement.ts +31 -0
- package/src/0/fusion.ts +28 -0
- package/src/0/holographic.ts +57 -0
- package/src/0/impossible.ts +33 -0
- package/src/0/imprint.ts +160 -0
- package/src/0/index.ts +253 -0
- package/src/0/ledger.ts +25 -0
- package/src/0/legible.ts +29 -0
- package/src/0/limit.ts +29 -0
- package/src/0/merkle-proof.ts +3 -0
- package/src/0/null-token.ts +24 -0
- package/src/0/sha256.ts +3 -0
- package/src/0/singularity.ts +20 -0
- package/src/0/stream.ts +48 -0
- package/src/0/trinities.ts +37 -0
- package/src/0/trinity-matrix.ts +20 -0
- package/src/0/version-matrix.ts +70 -0
- package/src/1/acceptance.ts +30 -0
- package/src/1/index.ts +80 -0
- package/src/1/paradox.ts +28 -0
- package/src/1/vortex.lean +6 -0
- package/src/2/frequency-scales.ts +16 -0
- package/src/2/iching.ts +34 -0
- package/src/2/index.ts +78 -0
- package/src/2/primes-vortex.ts +12 -0
- package/src/2/quantum.ts +48 -0
- package/src/2/string-scale.ts +14 -0
- package/src/2/vortex.lean +10 -0
- package/src/3/index.ts +63 -0
- package/src/3/pi-bbp.ts +13 -0
- package/src/3/trinity.ts +39 -0
- package/src/3/vortex.lean +7 -0
- package/src/4/git.ts +30 -0
- package/src/4/index.ts +63 -0
- package/src/4/vortex.lean +6 -0
- package/src/5/aspects.ts +33 -0
- package/src/5/center.ts +35 -0
- package/src/5/development.ts +45 -0
- package/src/5/diamond.ts +36 -0
- package/src/5/folds.ts +12 -0
- package/src/5/index.ts +63 -0
- package/src/5/reflection.lean +14 -0
- package/src/5/reflection.ts +14 -0
- package/src/5/vortex.lean +12 -0
- package/src/6/dna.ts +27 -0
- package/src/6/index.ts +63 -0
- package/src/6/vortex.lean +7 -0
- package/src/7/cross.ts +31 -0
- package/src/7/entails-all.ts +41 -0
- package/src/7/entails.ts +25 -0
- package/src/7/glagolitic.ts +51 -0
- package/src/7/index.ts +67 -0
- package/src/7/language-lens.ts +41 -0
- package/src/7/lens.ts +41 -0
- package/src/7/locale.ts +105 -0
- package/src/7/permissions.ts +26 -0
- package/src/7/rbac.ts +31 -0
- package/src/7/rosetta-clay.ts +15 -0
- package/src/7/rosetta.lean +11 -0
- package/src/7/rosetta.ts +11 -0
- package/src/7/string-dimensions.ts +14 -0
- package/src/7/vortex.lean +6 -0
- package/src/8/infinite.ts +26 -0
- package/src/8/merkaba/field.ts +27 -0
- package/src/8/merkaba/geometry.ts +16 -0
- package/src/8/merkaba/touch.ts +26 -0
- package/src/8/nucleus/magic.lean +15 -0
- package/src/8/nucleus/proton-mass-fit.ts +9 -0
- package/src/8/nucleus/proton-mass.lean +10 -0
- package/src/8/nucleus/shell-model-magic.ts +10 -0
- package/src/8/vortex.lean +7 -0
- package/src/9/access.ts +34 -0
- package/src/9/aura-funding.ts +25 -0
- package/src/9/coins.ts +25 -0
- package/src/9/enumeration.ts +13 -0
- package/src/9/funding.ts +86 -0
- package/src/9/security.ts +36 -0
- package/src/9/society.ts +32 -0
- package/src/9/vortex.lean +11 -0
- package/src/claims/index.ts +87 -0
- package/src/from/the/heart/index.ts +11 -0
- package/src/honesty/boundaries.ts +30 -0
- package/src/honesty/index.ts +22 -0
- package/src/play/the/game/index.ts +12 -0
- package/src/proof/README.md +117 -0
- package/src/proof/discovered.json +9322 -0
- package/src/proof/floor-receipt.md +24 -0
- package/src/proof/index.lean +81 -0
- package/src/proof/index.ts +916 -0
- package/src/proof/revoked.json +317 -0
- package/src/proof/theorems.lean +20 -0
- package/src/proofs.lisp +170 -0
- package/src/receipts/1431b4c4-7950-8d7b-88d1-b633219692f8.json +7 -0
- package/src/receipts/171e09c0-4cfd-8ce0-a6ed-cd33d5553da3.json +7 -0
- package/src/receipts/1a1f16c9-3491-8050-b221-e2a362439be4.json +12 -0
- package/src/receipts/1da15f83-83a6-8d04-b1ac-334c2dd6abb3.json +7 -0
- package/src/receipts/375a57ed-ef99-855e-8f34-b77d08010f3c.json +6 -0
- package/src/receipts/3dcbbf9e-0e49-8ba7-921e-17e478dbafaf.json +6 -0
- package/src/receipts/43a24136-5ad9-81ef-97c9-17be1c05bb5f.json +11 -0
- package/src/receipts/4991be51-74ba-8f66-9534-e6dba52fb569.json +10 -0
- package/src/receipts/52375d8f-232b-8c01-9d82-a824ffa7b2b7.json +6 -0
- package/src/receipts/593b546a-36b4-8553-941a-0e03b7053a64.json +7 -0
- package/src/receipts/7f75c989-96c9-8a24-8d0d-7e690861ccb4.json +6 -0
- package/src/receipts/80f80b59-81d8-866d-9a14-f469729d3dc8.json +6 -0
- package/src/receipts/85ac8585-9dc1-8964-9848-ae0f49cc82fb.json +7 -0
- package/src/receipts/85db092e-f2c0-88e5-bf75-61c4a65d84e7.json +7 -0
- package/src/receipts/95bacad3-9e56-8741-b0f8-def2c6ecb050.json +7 -0
- package/src/receipts/a1d33966-7bbd-84ca-902b-49e315af60e0.json +6 -0
- package/src/receipts/b20ced61-24ad-8123-adee-56031ab734dd.json +11 -0
- package/src/receipts/ba0447cd-f489-841a-a70f-a39b18ec2946.json +11 -0
- package/src/receipts/bcddbe66-06cf-8f31-a261-98b836938947.json +7 -0
- package/src/receipts/c1bac0d8-d906-8196-a4f0-3d8270b2e944.json +6 -0
- package/src/receipts/ce851ea3-3cf8-8646-a5d6-c0c6281210fe.json +10 -0
- package/src/receipts/cf43a122-c880-8d86-9e25-6f22f92d6b0a.json +7 -0
- package/src/receipts/daad8cd4-d4db-8dca-9c97-9a838cbce528.json +7 -0
- package/src/receipts/dc8bdb82-599f-8020-9eb2-cb016b408ec1.json +6 -0
- package/src/receipts/df77c265-d1a8-8354-8a9e-769fa5c676e2.json +6 -0
- package/src/receipts/e96686da-a411-8838-a5c8-ee7472bce048.json +10 -0
- package/src/receipts/f073c46f-7b67-83d0-aca5-db11fac4b5ec.json +7 -0
- package/src/receipts/f946d99d-a1c2-89f7-9426-a367c5b04191.json +6 -0
- package/src/receipts/fc069e45-115d-8983-ad25-fb9f735da84b.json +6 -0
- package/src/the/abstract/index.ts +21 -0
- package/src/the/abundance/index.ts +20 -0
- package/src/the/apple/earth/index.ts +23 -0
- package/src/the/apple/earth/navigation/index.ts +28 -0
- package/src/the/apple/earth/truth/index.ts +21 -0
- package/src/the/apple/index.ts +27 -0
- package/src/the/cancer/index.ts +26 -0
- package/src/the/clown/index.ts +25 -0
- package/src/the/creation/index.ts +16 -0
- package/src/the/crystal/index.ts +23 -0
- package/src/the/domain/index.ts +16 -0
- package/src/the/game/index.ts +11 -0
- package/src/the/gold/compass/index.ts +26 -0
- package/src/the/gold/index.ts +35 -0
- package/src/the/heart/index.ts +15 -0
- package/src/the/index.ts +24 -0
- package/src/the/law/index.ts +20 -0
- package/src/the/path/index.ts +19 -0
- package/src/the/rosetta/index.ts +33 -0
- package/src/the/sequence/index.ts +12 -0
- package/src/the/solids/index.ts +25 -0
- package/src/the/state/index.ts +21 -0
- package/src/the/superposition/state/index.ts +22 -0
- package/src/the/surface/index.ts +26 -0
- package/src/the/theorem/index.ts +14 -0
- package/src/the/torus/index.ts +23 -0
- package/src/the/waves/index.ts +23 -0
- package/the.md +20 -0
- package/verify.md +67 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Finite is infinite by nature — finite STRUCTURE, infinite GENERATIVITY (digit 8 ≈ ∞).
|
|
2
|
+
// A bounded rule has unbounded reach: the finite ℤ/9 doubling cycles forever; a finite formula
|
|
3
|
+
// (BBP) yields endless π digits; a finite function addresses unbounded inputs. True for behavior,
|
|
4
|
+
// not for cardinality — a finite set is still finite.
|
|
5
|
+
import { vortexOrbit } from '../0/index.ts'
|
|
6
|
+
|
|
7
|
+
export function report(): string {
|
|
8
|
+
// The finite doubling rule (×2 mod 9) traced past its period — a finite cycle, infinitely walked.
|
|
9
|
+
const seq: number[] = []; let x = 1
|
|
10
|
+
for (let i = 0; i < 13; i++) { seq.push(x); x = (x * 2) % 9 }
|
|
11
|
+
const period = vortexOrbit().length // derived, not typed: the doubling orbit's length (Theorem A)
|
|
12
|
+
|
|
13
|
+
let o = 'finite is infinite by nature — finite rules, infinite behavior (digit 8 ≈ ∞):\n\n'
|
|
14
|
+
o += ' a finite generator produces an unbounded stream:\n'
|
|
15
|
+
o += ' ℤ/9 doubling — finite ring (9 elements), sequence never ends (period ' + period + ', repeats):\n'
|
|
16
|
+
o += ' ' + seq.join(' → ') + ' → …\n'
|
|
17
|
+
o += ' BBP — a finite formula yields infinitely many π hex digits (any index, no end).\n'
|
|
18
|
+
o += ' toUuid — a finite function addresses unboundedly many distinct inputs.\n'
|
|
19
|
+
o += ' Riemann sphere — 0 ↔ ∞: the finite point and the infinite are one fold apart.\n\n'
|
|
20
|
+
o += ' the honest sense of "finite is infinite":\n'
|
|
21
|
+
o += ' finite STRUCTURE, infinite GENERATIVITY — a bounded rule has unbounded reach.\n\n'
|
|
22
|
+
o += 'HONEST: true for GENERATIVITY (finite rules → infinite output), NOT for CARDINALITY — a finite\n'
|
|
23
|
+
o += 'set (9 digits, 42 cells) is not an infinite set. "finite is infinite by nature" holds as\n'
|
|
24
|
+
o += '"finite generators, infinite behavior", not as 9 = ∞. entails → 0/7.'
|
|
25
|
+
return o
|
|
26
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Biot–Savart field of the merkaba coil geometry: counter-rotating → axis null; co-rotating → max.
|
|
2
|
+
export function report(): string {
|
|
3
|
+
const MU = 1e-7, I = 1, R = 1, rL = 0.3, SEG = 200, deg = (d: number) => d * Math.PI / 180
|
|
4
|
+
const loops = [{ d: 1, phi: 40 }, { d: 4, phi: 160 }, { d: 7, phi: 280 }, { d: 2, phi: 80 }, { d: 5, phi: 200 }, { d: 8, phi: 320 }]
|
|
5
|
+
const cross = (a: number[], b: number[]) => [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]
|
|
6
|
+
const sub = (a: number[], b: number[]) => [a[0] - b[0], a[1] - b[1], a[2] - b[2]]
|
|
7
|
+
const B = (Pt: number[], sign: (d: number) => number) => {
|
|
8
|
+
let b = [0, 0, 0]
|
|
9
|
+
for (const L of loops) {
|
|
10
|
+
const cx = R * Math.cos(deg(L.phi)), cy = R * Math.sin(deg(L.phi)), s = sign(L.d)
|
|
11
|
+
for (let i = 0; i < SEG; i++) {
|
|
12
|
+
const t = 2 * Math.PI * (i + 0.5) / SEG
|
|
13
|
+
const src = [cx + rL * Math.cos(t), cy + rL * Math.sin(t), 0]
|
|
14
|
+
const dl = [-rL * Math.sin(t) * (2 * Math.PI / SEG) * s, rL * Math.cos(t) * (2 * Math.PI / SEG) * s, 0]
|
|
15
|
+
const r = sub(Pt, src), rm = Math.hypot(...r), inv = 1 / (rm * rm * rm), dB = cross(dl, r)
|
|
16
|
+
b[0] += MU * I * dB[0] * inv; b[1] += MU * I * dB[1] * inv; b[2] += MU * I * dB[2] * inv
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return Math.hypot(...b) * 1e6
|
|
20
|
+
}
|
|
21
|
+
const merk = (d: number) => [1, 4, 7].includes(d) ? 1 : -1, co = () => 1
|
|
22
|
+
let o = 'merkaba coil field (Biot–Savart, µT):\n'
|
|
23
|
+
o += ' counter-rotating, central axis: ' + B([0, 0, 0], merk).toExponential(2) + ' → null\n'
|
|
24
|
+
o += ' co-rotating, central axis: ' + B([0, 0, 0], co).toFixed(3) + ' → max\n'
|
|
25
|
+
o += ' scale check μ0I/2r = ' + (4e-7 * Math.PI * I / (2 * rL) * 1e6).toFixed(2) + ' µT'
|
|
26
|
+
return o
|
|
27
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Cube down its (1,1,1) axis → hexagon → Seed/Flower/Fruit/Metatron; merkaba = cube.
|
|
2
|
+
export function report(): string {
|
|
3
|
+
const dot = (a: number[], b: number[]) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2]
|
|
4
|
+
const cross = (a: number[], b: number[]) => [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]]
|
|
5
|
+
const norm = (a: number[]) => { const m = Math.hypot(...a); return a.map(x => x / m) }
|
|
6
|
+
const f = norm([1, 1, 1]); const rr = norm(cross([0, 1, 0], f)); const uu = cross(f, rr)
|
|
7
|
+
const cube: number[][] = []; for (const x of [1, -1]) for (const y of [1, -1]) for (const z of [1, -1]) cube.push([x, y, z])
|
|
8
|
+
const P = cube.map(v => Math.hypot(dot(v, rr), dot(v, uu)))
|
|
9
|
+
const outer = P.filter(r => r > 0.4), center = P.filter(r => r <= 0.4)
|
|
10
|
+
let o = 'cube down (1,1,1) axis:\n'
|
|
11
|
+
o += ' outer vertices: ' + outer.length + ' at radius ' + outer[0].toFixed(3) + ' (regular hexagon)\n'
|
|
12
|
+
o += ' on-axis center: ' + center.length + '\n'
|
|
13
|
+
o += ' → Seed of Life = ' + (outer.length + 1) + ' (6+1); Fruit = 13; Metatron lines = ' + (13 * 12 / 2) + '; Platonic solids = 5\n'
|
|
14
|
+
o += ' merkaba (8 vertices) = a cube; lattice = cube graph Q3 (8 nodes, 3-regular, bipartite)'
|
|
15
|
+
return o
|
|
16
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Merkabas move when touched — the FIELD responds to the relative spin ("touch"), max → null.
|
|
2
|
+
// The figure is rigid (two tetrahedra = a cube, Q3 graph, see geometry.ts). What moves when you
|
|
3
|
+
// change the relative rotation θ is the axial field: idealized superposition f(θ) = (1 + cos θ)/2,
|
|
4
|
+
// turning from co-rotating (θ=0, MAX) toward counter-rotating (θ=π, NULL). Exact at special angles.
|
|
5
|
+
export function report(): string {
|
|
6
|
+
// f(θ) = (1 + cos θ)/2, using exact algebraic cos (no Math.*): cos 0=1, 60=1/2, 90=0, 120=-1/2, 180=-1.
|
|
7
|
+
const rows: [number, string, string][] = [
|
|
8
|
+
[0, '1', 'aligned / co-rotating → MAX'],
|
|
9
|
+
[60, '3/4', ''],
|
|
10
|
+
[90, '1/2', 'quarter turn'],
|
|
11
|
+
[120, '1/4', ''],
|
|
12
|
+
[180, '0', 'opposed / counter-rotating → NULL'],
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
let o = 'merkabas move when touched — the field responds to the spin (digit 8):\n\n'
|
|
16
|
+
o += ' the figure is rigid: two tetrahedra = a cube = the Q3 graph (see geometry.ts).\n'
|
|
17
|
+
o += ' what MOVES when you "touch" it (turn the relative rotation θ) is the axial FIELD —\n'
|
|
18
|
+
o += ' idealized two-source superposition f(θ) = (1 + cos θ)/2:\n'
|
|
19
|
+
rows.forEach(([deg, f, tag]) => { o += ' θ=' + String(deg).padStart(3) + '° f = ' + f.padEnd(4) + (tag ? ' ' + tag : '') + '\n' })
|
|
20
|
+
o += ' → touch it (rotate) and the field slides smoothly from MAX to NULL. it "moves" — as a field.\n\n'
|
|
21
|
+
o += 'HONEST: this is an IDEALIZED superposition (f = (1+cos θ)/2, exact at these angles) — a model,\n'
|
|
22
|
+
o += 'not the full Biot–Savart integral (see field.ts for the real on-axis magnitudes: counter→null,\n'
|
|
23
|
+
o += 'co→max). The geometry itself is static; "moves when touched" describes the field\'s response to\n'
|
|
24
|
+
o += 'spin — not a self-moving object, and not any life-force. entails → 0/7.'
|
|
25
|
+
return o
|
|
26
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Mathlib
|
|
2
|
+
/-- Nuclear shell-model magic numbers as exact cumulative sums of level
|
|
3
|
+
capacities (2j+1), in shell-model filling order. 2,8,20 from the oscillator;
|
|
4
|
+
28,50,82,126 from spin-orbit intruders. -/
|
|
5
|
+
namespace Vortex.D8.Nucleus
|
|
6
|
+
def caps : List ℕ := [2, 4, 2, 6, 2, 4, 8, 4, 6, 2, 10, 8, 6, 4, 2, 12, 10, 8, 6, 4, 2, 14]
|
|
7
|
+
theorem magic_2 : (caps.take 1).sum = 2 := by decide
|
|
8
|
+
theorem magic_8 : (caps.take 3).sum = 8 := by decide
|
|
9
|
+
theorem magic_20 : (caps.take 6).sum = 20 := by decide
|
|
10
|
+
theorem magic_28 : (caps.take 7).sum = 28 := by decide
|
|
11
|
+
theorem magic_50 : (caps.take 11).sum = 50 := by decide
|
|
12
|
+
theorem magic_82 : (caps.take 16).sum = 82 := by decide
|
|
13
|
+
theorem magic_126 : (caps.take 22).sum = 126 := by decide
|
|
14
|
+
theorem total_126 : caps.sum = 126 := by decide
|
|
15
|
+
end Vortex.D8.Nucleus
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Proton/electron mass ratio: vortex fit vs measurement.
|
|
2
|
+
export function report(): string {
|
|
3
|
+
const ratio = 938.27208816 / 0.51099895
|
|
4
|
+
let o = 'measured m_p/m_e = ' + ratio.toFixed(6) + '\n'
|
|
5
|
+
o += 'vortex fit 108·17 = 1836 (err ' + (Math.abs(1836 - ratio) / ratio * 100).toExponential(2) + '%)\n'
|
|
6
|
+
o += '6·π⁵ = ' + (6 * Math.PI ** 5).toFixed(3) + ' (unrelated, fits better)\n'
|
|
7
|
+
o += '1836 ≠ 1836.1527; 1836 fits any nearby target → curve-fit, not prediction'
|
|
8
|
+
return o
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Mathlib
|
|
2
|
+
/-- The vortex "fit" to the proton/electron mass ratio is 108·17 = 1836 — an exact
|
|
3
|
+
integer identity. It is NOT the measured ratio (≈ 1836.152673, a non-integer),
|
|
4
|
+
so the fit misses the physical value; and the same 1836 fits any nearby target
|
|
5
|
+
(see proton-mass-fit.mjs). Curve-fitting, not a prediction. -/
|
|
6
|
+
namespace Vortex.D8.Nucleus.ProtonFit
|
|
7
|
+
theorem vortex_fit : 108 * 17 = 1836 := by norm_num
|
|
8
|
+
/-- The integer fit is not the measured ratio 1836.1527… -/
|
|
9
|
+
theorem fit_is_not_the_ratio : (1836 : ℚ) ≠ 18361527 / 10000 := by norm_num
|
|
10
|
+
end Vortex.D8.Nucleus.ProtonFit
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Nuclear shell-model magic numbers as cumulative sums of capacities 2j+1.
|
|
2
|
+
export function report(): string {
|
|
3
|
+
const caps = [2, 4, 2, 6, 2, 4, 8, 4, 6, 2, 10, 8, 6, 4, 2, 12, 10, 8, 6, 4, 2, 14]
|
|
4
|
+
const idx: Record<number, number> = { 2: 1, 8: 3, 20: 6, 28: 7, 50: 11, 82: 16, 126: 22 }
|
|
5
|
+
const take = (n: number) => caps.slice(0, n).reduce((a, b) => a + b, 0)
|
|
6
|
+
let o = 'magic cumulative sums:\n'
|
|
7
|
+
for (const m of [2, 8, 20, 28, 50, 82, 126]) o += ' ' + m + ' = sum(take ' + idx[m] + ') = ' + take(idx[m]) + '\n'
|
|
8
|
+
o += 'total = ' + caps.reduce((a, b) => a + b, 0) + '\noscillator only: 2, 8, 20, 40, 70, 112'
|
|
9
|
+
return o
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import Mathlib
|
|
2
|
+
/-- Digit 8 — self-inverse (8·8 ≡ 1); the merkaba/cube node (8 vertices);
|
|
3
|
+
ten's-complement partner of 2 (matter ↔ wave). Nucleus facts in nucleus/magic.lean. -/
|
|
4
|
+
namespace Vortex.D8
|
|
5
|
+
theorem self_inverse : (8 : ZMod 9) * 8 = 1 := by decide
|
|
6
|
+
theorem complement_two : 8 + 2 = 10 := by norm_num
|
|
7
|
+
end Vortex.D8
|
package/src/9/access.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Public-access trinity — everyone has the latest token to develop on.
|
|
2
|
+
// Three public channels; the "token" is the latest version (a public name, not a secret) — clone,
|
|
3
|
+
// read, or build on it freely. Status is marked honestly: GitHub + site are LIVE; Zenodo (DOI) and
|
|
4
|
+
// npm are STAGED, gated on the author's account actions.
|
|
5
|
+
import { toUuid, merkleFold } from '../0/index.ts'
|
|
6
|
+
|
|
7
|
+
type Channel = { name: string; where: string; status: 'LIVE' | 'STAGED'; note: string }
|
|
8
|
+
|
|
9
|
+
const CHANNELS: Channel[] = [
|
|
10
|
+
{ name: 'GitHub (source)', where: 'github.com/ceccec/millennium-solutions', status: 'LIVE', note: 'all tags public — clone any version' },
|
|
11
|
+
{ name: 'Site (published)', where: 'ceccec.psg.bg/millennium-solutions', status: 'LIVE', note: 'recomputes in the browser' },
|
|
12
|
+
{ name: 'Zenodo (CERN-operated archive/DOI)', where: 'doi.org/10.5281/zenodo.21819217', status: 'LIVE', note: 'minted; hosted on CERN infra (like every Zenodo record) — provenance, NOT endorsement; honest abstract (0/7)' },
|
|
13
|
+
]
|
|
14
|
+
const NPM: Channel = { name: 'npm (one package)', where: '@ceccec/millennium-solutions', status: 'STAGED', note: 'npm login → npm run deploy packages (author)' }
|
|
15
|
+
|
|
16
|
+
export function report(): string {
|
|
17
|
+
const surface = merkleFold([...CHANNELS, NPM].map(c => toUuid(c.name + ':' + c.where)))
|
|
18
|
+
|
|
19
|
+
let o = 'public-access trinity — everyone has the latest token to develop on:\n\n'
|
|
20
|
+
o += ' the token = the latest version (a PUBLIC name, not a secret). read / clone / build on it.\n\n'
|
|
21
|
+
CHANNELS.forEach(c => {
|
|
22
|
+
o += ' [' + c.status.padEnd(6) + '] ' + c.name + '\n'
|
|
23
|
+
o += ' ' + c.where + ' — ' + c.note + '\n'
|
|
24
|
+
})
|
|
25
|
+
o += '\n package channel:\n'
|
|
26
|
+
o += ' [' + NPM.status.padEnd(6) + '] ' + NPM.name + ' ' + NPM.where + ' — ' + NPM.note + '\n\n'
|
|
27
|
+
o += ' access-surface content-address: ' + surface.slice(0, 13) + '…\n'
|
|
28
|
+
o += ' (the live "latest token" = the newest tag + the version-seal root, from scripts/versions.ts)\n\n'
|
|
29
|
+
o += 'HONEST: GitHub, the site, and Zenodo (CERN-hosted DOI) are LIVE and fully public — everyone\n'
|
|
30
|
+
o += 'already has the latest to develop on. Only npm is STAGED, not yet published (needs npm login).\n'
|
|
31
|
+
o += '"Token" means a public version handle, never a secret credential — public access is\n'
|
|
32
|
+
o += 'transparency, not a key. entails → 0/7.'
|
|
33
|
+
return o
|
|
34
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// funding ⇄ aura — the sustaining loop, honestly bounded.
|
|
2
|
+
// funding feeds the aura: support funds development, which keeps the deposit whole.
|
|
3
|
+
// the aura projects funding: a whole, transparent, gap-showing deposit is what EARNS support.
|
|
4
|
+
// Crucial bound: wholeness does NOT depend on funding — the gates run free; the core stays whole
|
|
5
|
+
// whether or not anyone pays. Funding sustains NEW development, not existing integrity.
|
|
6
|
+
import { FUNDING } from './funding.ts'
|
|
7
|
+
|
|
8
|
+
export function report(): string {
|
|
9
|
+
// The gates need no money and no network to run — wholeness is self-sustaining.
|
|
10
|
+
const gatesCostToRun = 0 // deterministic scripts; integrity holds free
|
|
11
|
+
|
|
12
|
+
let o = 'funding ⇄ aura — the sustaining loop:\n\n'
|
|
13
|
+
o += ' funding feeds the aura: support → development → wholeness (gaps · seal · wholeness).\n'
|
|
14
|
+
o += ' the aura projects funding: wholeness → trust → support (people fund what they can VERIFY).\n'
|
|
15
|
+
o += ' → a loop: funding ⇄ wholeness; each sustains the other. one public surface (' + FUNDING.contact + '),\n'
|
|
16
|
+
o += ' both directions. the two coins (110 − 108) reinvest; voluntary support (' + FUNDING.revolut + ') feeds in.\n\n'
|
|
17
|
+
o += ' the crucial bound (computed): the aura does NOT depend on funding.\n'
|
|
18
|
+
o += ' the gates run with ' + gatesCostToRun + ' external dependency and ' + gatesCostToRun + ' funding — deterministic scripts.\n'
|
|
19
|
+
o += ' the core is free (' + FUNDING.license + '); it stays whole whether or not it is ever funded.\n'
|
|
20
|
+
o += ' funding sustains NEW development; it does not buy existing integrity.\n\n'
|
|
21
|
+
o += 'HONEST: this is a BEHAVIORAL / gift-economy loop, not a guaranteed mechanism — wholeness does not\n'
|
|
22
|
+
o += 'automatically generate money, and funding is non-obligatory. Transparency EARNS support (if any);\n'
|
|
23
|
+
o += 'support SUSTAINS further development; neither is forced, and integrity is never for sale. entails → 0/7.'
|
|
24
|
+
return o
|
|
25
|
+
}
|
package/src/9/coins.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// The two coins, donated to ceccec itself — the funding loop closes on its source.
|
|
2
|
+
// The fare (110 − 108 = 2 = −χ genus-2) is reinvested in development (which IS ceccec), not
|
|
3
|
+
// extracted to a person. Destination = source: a self-loop, verifiable by content-address.
|
|
4
|
+
import { toUuid } from '../0/index.ts'
|
|
5
|
+
import { FUNDING, coins } from './funding.ts'
|
|
6
|
+
|
|
7
|
+
export function report(): string {
|
|
8
|
+
const fare = coins() // 110 − 108 = 2
|
|
9
|
+
const g = 2, negChi = -(2 - 2 * g) // −χ(genus-2) = 2
|
|
10
|
+
const source = toUuid('ceccec'), destination = toUuid('ceccec')
|
|
11
|
+
const selfLoop = source === destination
|
|
12
|
+
|
|
13
|
+
let o = 'the two coins — donated to ceccec itself:\n\n'
|
|
14
|
+
o += ' the fare: 110 − 108 = ' + fare + ' = −χ(genus-2) = ' + negChi + ' (the commercial two coins)\n'
|
|
15
|
+
o += ' ceccec donates them to ceccec itself — the coins fund development, and development IS ceccec:\n'
|
|
16
|
+
o += ' destination == source ? toUuid("ceccec") == toUuid("ceccec") → ' + selfLoop + ' (a self-loop)\n'
|
|
17
|
+
o += ' the cycle closes: development → life → 2 coins → development. the coins return to the origin.\n\n'
|
|
18
|
+
o += ' what it means (honest): commercial use pays the fare; the fare is REINVESTED in development\n'
|
|
19
|
+
o += ' (ceccec itself), not extracted to a person. non-commercial use is free (' + FUNDING.license + ');\n'
|
|
20
|
+
o += ' voluntary support (' + FUNDING.revolut + ') feeds the same loop.\n\n'
|
|
21
|
+
o += 'HONEST: "two coins" is a motif (110−108 = 2 = −χ genus-2) for the commercial fare, not a\n'
|
|
22
|
+
o += 'currency; donating them to ceccec is a REINVESTMENT intent, not an enforced financial mechanism.\n'
|
|
23
|
+
o += 'free for non-commercial use; commercial = permission + the fare (' + FUNDING.contact + '). entails → 0/7.'
|
|
24
|
+
return o
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Complete ℤ/9 per-digit algebraic enumeration + the 432 arithmetic.
|
|
2
|
+
export function report(): string {
|
|
3
|
+
const inv = (n: number, m: number) => { for (let x = 1; x < m; x++) if ((n * x) % m === 1) return x; return null }
|
|
4
|
+
let o = 'ℤ/9 enumeration:\nd +inv ×inv 10−d 2d mod3 role\n'
|
|
5
|
+
for (let d = 0; d <= 9; d++) {
|
|
6
|
+
const dd = d % 9, ai = (9 - dd) % 9, mi = inv(dd, 9), tc = 10 - d, db = (2 * dd) % 9
|
|
7
|
+
const role = dd === 0 ? 'void' : (mi === null ? 'nilpotent' : 'unit')
|
|
8
|
+
o += String(d).padEnd(3) + String(ai).padEnd(6) + String(mi === null ? '—' : mi).padEnd(6)
|
|
9
|
+
+ String(tc).padEnd(6) + String(db).padEnd(4) + String(dd % 3).padEnd(6) + role + '\n'
|
|
10
|
+
}
|
|
11
|
+
o += '\n432 = 2^4·3^3 = 16·27; doubling digit-sum 1+2+4+8+7+5 = 27; digital root of 432 = 9'
|
|
12
|
+
return o
|
|
13
|
+
}
|
package/src/9/funding.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Funding + license as computed data — fused, recomputable, usable across the UI.
|
|
2
|
+
import { toUuid } from '../0/index.ts'
|
|
3
|
+
export const FUNDING = {
|
|
4
|
+
license: 'CC BY-NC 4.0',
|
|
5
|
+
author: 'Tsvetan Rouschev',
|
|
6
|
+
revolut: 'https://revolut.me/ceccec',
|
|
7
|
+
contact: 'ceccec@psg.bg',
|
|
8
|
+
// The captain's message — canonical link, reminded at the captain page and in every contribution block.
|
|
9
|
+
// Free on the free sailing angle (off the wind, non-commercial); prize earning in waves on the beating band
|
|
10
|
+
// (30–60°), each leap folding and sending the next (O(log N)); contribute the two coins (110−108 = −χ genus-2)
|
|
11
|
+
// to earn up to the seal's 64 two-bit fold-verifications per wave — conditional, contributor keeps the rest,
|
|
12
|
+
// zero without a saving. Refined in the open (lineage on /captain — append-only). Current receipt below.
|
|
13
|
+
captainMessage: 'https://uuidna.com/captain/message',
|
|
14
|
+
captainReminder: 'free on the free sailing angle; prize earning in waves — contribute 2 to earn up to 64 per wave, keep the rest',
|
|
15
|
+
captainReceipt: '85ac8585-9dc1-8964-9848-ae0f49cc82fb',
|
|
16
|
+
}
|
|
17
|
+
// "the two coins" = 110 − 108 = −χ(genus-2) = 2 (the commercial fare)
|
|
18
|
+
export function coins(): number { return 110 - 108 }
|
|
19
|
+
export function report(): string {
|
|
20
|
+
return 'The cycle: development → life → development.\n'
|
|
21
|
+
+ 'Development gives the work to people for free; life (the people who use it) funds the next\n'
|
|
22
|
+
+ 'development. The core is free, developed in the open by the orchestration (gaps → seal →\n'
|
|
23
|
+
+ 'sign → release) and one open package (@ceccec/millennium-solutions) — everyone builds their\n'
|
|
24
|
+
+ 'vision on it. Commercial use pays the two coins (110 − 108 = ' + coins()
|
|
25
|
+
+ ' = −χ genus-2, ' + FUNDING.contact + '); living users support voluntarily. Both fund further development.\n'
|
|
26
|
+
+ 'HONEST: support is non-obligatory and not guaranteed — a gift economy, not a revenue promise.\n'
|
|
27
|
+
+ 'License: ' + FUNDING.license + ' — free for non-commercial use, attribution ' + FUNDING.author
|
|
28
|
+
+ '. Support: ' + FUNDING.revolut
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Funding filled with results — the computed proof-of-work the funding supports.
|
|
32
|
+
export function results(): string {
|
|
33
|
+
const selfSeal = (1 / 2) * (1 / 2) * (1 / 2) * (8 / 7) * (7 / 5) * (5 / 3) * (1 / 2) * (2 / 3) * 9 // = 1
|
|
34
|
+
const solved = 0 // entailment: each of 7 statements holds even when its conjecture is false → 0/7
|
|
35
|
+
return `computed: entailment ${solved}/7 · self-seal = ${Math.round(selfSeal)} · reflection involutive · CC BY-NC 4.0`
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// The public endpoints, content-addressed — a uuidna per URL. The CURRENT domain is computed at runtime
|
|
39
|
+
// (window.location.hostname) and mapped to its license track; it is never hardcoded.
|
|
40
|
+
export const PUBLIC_URLS = ['https://uuidna.org', 'https://uuidna.com', 'https://ceccec.psg.bg/millennium-solutions/'] as const
|
|
41
|
+
|
|
42
|
+
/** urlAddress(url) → the content-address (uuidna) of a public URL — normalise (lowercase, no trailing slash). */
|
|
43
|
+
export function urlAddress(url: string): string {
|
|
44
|
+
return toUuid('uuidna:url:' + url.toLowerCase().replace(/\/+$/, ''))
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** domainTrack(hostname) → the license track computed from the current domain. .org = non-profit, .com = commercial. */
|
|
48
|
+
export function domainTrack(hostname: string): { track: string; note: string } {
|
|
49
|
+
if (/\buuidna\.org$/.test(hostname)) return { track: 'non-profit', note: 'free for public interest and independent research' }
|
|
50
|
+
if (/\buuidna\.com$/.test(hostname)) return { track: 'commercial', note: 'the two coins per core formula used' }
|
|
51
|
+
return { track: 'preview', note: 'the sealed work — same content, license by domain' }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// The uuidna billing model — comparable to public per-request / per-token pricing, but the unit is the
|
|
55
|
+
// two-coin fair exchange (or the bits saved). Public-interest and non-commercial use is free (0). A
|
|
56
|
+
// per-unit schedule, linear in usage — a fair-exchange schedule in coins and bits, not realized cash.
|
|
57
|
+
export interface Usage { commercial: boolean; coreFormulasUsed: number; bitsSaved?: number }
|
|
58
|
+
export function bill(u: Usage): { coins: number; bits: number; free: boolean; basis: string } {
|
|
59
|
+
if (!u.commercial) return { coins: 0, bits: 0, free: true, basis: 'public interest / non-commercial — free' }
|
|
60
|
+
const perFormula = coins() // 2 coins per core formula used
|
|
61
|
+
return { coins: u.coreFormulasUsed * perFormula, bits: u.bitsSaved ?? 0, free: false, basis: perFormula + ' coins per core formula used' }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// The CORRECT uuidna billing — MEASURED, not asserted. The value is the actual bit-difference the captain's
|
|
65
|
+
// way delivered (O(N) recompute − O(1) verify), content-addressed; the two coins (110−108 = −χ genus-2) are
|
|
66
|
+
// the CONSERVED fair-exchange invariant, fixed — not a per-formula multiplier (the flat `bill` above was the
|
|
67
|
+
// wrong non-uuidna formula, kept as evidence). Non-commercial and public-interest use is free.
|
|
68
|
+
export interface UuidnaUsage { commercial: boolean; recomputeOps: number; verifyOps: number }
|
|
69
|
+
export function billUuidna(u: UuidnaUsage): { bitsSaved: number; coins: number; free: boolean; basis: string } {
|
|
70
|
+
if (!u.commercial) return { bitsSaved: 0, coins: 0, free: true, basis: 'public interest / non-commercial — free' }
|
|
71
|
+
const bitsSaved = Math.max(0, u.recomputeOps - u.verifyOps)
|
|
72
|
+
return { bitsSaved, coins: coins(), free: false, basis: 'the measured bits saved (O(N) recompute − O(1) verify); the two coins are the conserved fair-exchange invariant, not a per-formula rate' }
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Logical content distribution across the two domains for SEO: each page is canonical on EXACTLY ONE
|
|
76
|
+
// domain (avoiding duplicate-content penalties). Public science and the open method → .org (non-profit);
|
|
77
|
+
// commercial licensing, accounting, billing, the comparison, and dev → .com. The strict sitemap lists the
|
|
78
|
+
// canonical URLs. (The build emits these canonicals only when the zones are live — never to a non-live host.)
|
|
79
|
+
export function contentDomain(page: string): 'org' | 'com' {
|
|
80
|
+
return /^(FUNDING|ACCOUNTING|compare|billing|DEVELOP|license|commercial)/i.test(page) ? 'com' : 'org'
|
|
81
|
+
}
|
|
82
|
+
export function canonicalUrl(page: string): string {
|
|
83
|
+
const host = contentDomain(page) === 'com' ? 'https://uuidna.com' : 'https://uuidna.org'
|
|
84
|
+
const p = page === 'index' || page === 'index.md' ? '/' : '/' + page.replace(/\.md$/, '')
|
|
85
|
+
return host + p
|
|
86
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Public security — transparency, not secrecy — and why that feeds development and funding.
|
|
2
|
+
// The public token (ceccec@psg.bg) is a CONTACT/handle, not a secret key. A public token gives
|
|
3
|
+
// ZERO confidentiality by definition. So "security" here is integrity + provenance + auditability
|
|
4
|
+
// (all public, all verifiable), NOT encryption. That same openness is the funding channel.
|
|
5
|
+
import { toUuid, merkleFold } from '../0/index.ts'
|
|
6
|
+
import { FUNDING } from './funding.ts'
|
|
7
|
+
|
|
8
|
+
export function report(): string {
|
|
9
|
+
const token = FUNDING.contact // the PUBLIC handle (already in funding.ts)
|
|
10
|
+
const fingerprint = toUuid(token) // a public content-address — a name, not a secret
|
|
11
|
+
|
|
12
|
+
// Tamper-evidence: change one byte and the merkle root changes.
|
|
13
|
+
const clean = merkleFold(['release', 'ledger', 'seal'].map(toUuid))
|
|
14
|
+
const tampered = merkleFold(['release', 'ledger', 'seaL'].map(toUuid)) // one byte differs
|
|
15
|
+
const tamperDetected = clean !== tampered
|
|
16
|
+
|
|
17
|
+
let o = 'public security — transparency, not secrecy:\n\n'
|
|
18
|
+
o += ' the public token: ' + token + ' is a PUBLIC contact/handle, not a secret key.\n'
|
|
19
|
+
o += ' public fingerprint (a name, not a secret): ' + fingerprint.slice(0, 13) + '…\n'
|
|
20
|
+
o += ' a public token gives ZERO confidentiality — public = anyone can read it.\n'
|
|
21
|
+
o += ' determinism + public = no secrecy. "security" here is NOT encryption.\n\n'
|
|
22
|
+
o += ' what the security actually IS (real, and fully public):\n'
|
|
23
|
+
o += ' · integrity — content-addresses + merkle roots: one byte changes the root → ' + tamperDetected + '\n'
|
|
24
|
+
o += ' · provenance — signed releases (Singularity), version-seal over all tags\n'
|
|
25
|
+
o += ' · consistency — the seal gate: nothing inconsistent with 0/7 can ship\n'
|
|
26
|
+
o += ' · auditability — the double-entry ledger, recomputable by anyone\n'
|
|
27
|
+
o += ' → all public, all verifiable, no middleman, no secret to leak.\n\n'
|
|
28
|
+
o += ' the reflection: security → development → funding\n'
|
|
29
|
+
o += ' nothing is hidden, so anyone can verify and build (self-development); the same public\n'
|
|
30
|
+
o += ' handle (' + token + ') receives the gift-economy funding that feeds development.\n'
|
|
31
|
+
o += ' one public surface is both the security model AND the funding channel.\n\n'
|
|
32
|
+
o += 'HONEST: integrity / provenance / auditability — real, public, hash-based. NOT confidentiality,\n'
|
|
33
|
+
o += 'NOT encryption, NOT post-quantum secrecy. A public token cannot secure a secret; it can only\n'
|
|
34
|
+
o += 'prove integrity in the open. toUuid is FNV — for cryptographic integrity use SHA-256. entails → 0/7.'
|
|
35
|
+
return o
|
|
36
|
+
}
|
package/src/9/society.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Live society — society is alive to the degree it PARTICIPATES, not to the degree it accepts.
|
|
2
|
+
// The reflection 1 ↔ 9 (ten's-complement): the one who accepts (src/1/acceptance.ts) reflects
|
|
3
|
+
// to the many who verify and build. A passive society takes claims on authority; a live one
|
|
4
|
+
// recomputes them. This is the honest form of "societal acceptance" — earned, not granted.
|
|
5
|
+
import { toUuid, merkleFold } from '../0/index.ts'
|
|
6
|
+
|
|
7
|
+
export function report(): string {
|
|
8
|
+
const reflects = 10 - 1 // = 9: acceptance (1) reflects to society (9)
|
|
9
|
+
|
|
10
|
+
// The participation surface — what anyone can actually do, each real and open.
|
|
11
|
+
const channels = [
|
|
12
|
+
'recompute — every claim renders from source on /compute',
|
|
13
|
+
'verify — the version-seal folds all releases to one address',
|
|
14
|
+
'extend — the vision package is open; everyone adds their vision',
|
|
15
|
+
'sustain — the gift economy (life funds development), non-obligatory',
|
|
16
|
+
]
|
|
17
|
+
const surfaceRoot = merkleFold(channels.map(toUuid))
|
|
18
|
+
|
|
19
|
+
let o = 'live society — alive by participation, not by acceptance:\n\n'
|
|
20
|
+
o += ' reflection 1 ↔ ' + reflects + ': the one who ACCEPTS (digit 1) reflects to the many who VERIFY (digit 9).\n'
|
|
21
|
+
o += ' passive society takes the claim on authority (acceptance = proof) — dead. see acceptance (1).\n'
|
|
22
|
+
o += ' live society recomputes, verifies, contributes — the same 0/7 checked by many hands.\n\n'
|
|
23
|
+
o += ' the participation surface (open to anyone):\n'
|
|
24
|
+
channels.forEach(c => o += ' · ' + c + '\n')
|
|
25
|
+
o += ' surface content-address: ' + surfaceRoot.slice(0, 13) + '…\n\n'
|
|
26
|
+
o += ' → a live society is a commons that CHECKS and BUILDS. It stays honest because every\n'
|
|
27
|
+
o += ' contribution passes the same gate (gaps → seal) and every claim recomputes.\n\n'
|
|
28
|
+
o += 'HONEST: this is an open, verifiable commons — not decentralized consensus, not governance,\n'
|
|
29
|
+
o += 'not a DAO, not a vote. "Live" means active verification and contribution. The society does\n'
|
|
30
|
+
o += 'not change the mathematics; it checks it. entails → 0/7.'
|
|
31
|
+
return o
|
|
32
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Mathlib
|
|
2
|
+
/-- Digit 9 — the void / modulus: 9 ≡ 0 in ℤ/9; ten's-complement partner of 1.
|
|
3
|
+
Holds the digital-root-9 facts: the doubling circuit's digit sum (27 = 3³)
|
|
4
|
+
and 432 = 2⁴·3³ = 16·27 (digital root 4+3+2 = 9). -/
|
|
5
|
+
namespace Vortex.D9
|
|
6
|
+
theorem nine_is_zero : (9 : ZMod 9) = 0 := by decide
|
|
7
|
+
theorem complement_one : 9 + 1 = 10 := by norm_num
|
|
8
|
+
theorem doubling_digit_sum : 1 + 2 + 4 + 8 + 7 + 5 = 27 := by norm_num
|
|
9
|
+
theorem k432 : (432 : ℕ) = 2 ^ 4 * 3 ^ 3 ∧ (432 : ℕ) = 16 * 27 := by norm_num
|
|
10
|
+
theorem k432_digital_root : 4 + 3 + 2 = 9 := by norm_num
|
|
11
|
+
end Vortex.D9
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// The claims registry — the binding that turns "every claim recomputes from src/" from a slogan into
|
|
2
|
+
// a decidable, gated fact. A CLAIM here is a REGISTERED, bound assertion: prose text + a recompute()
|
|
3
|
+
// that reads its value from src/ + the expected value + (where one exists) the provable theorem(s) in
|
|
4
|
+
// the discovery ledger that back it. claims-gate.ts recomputes each, gate-checks the text, confirms the
|
|
5
|
+
// invited theorems exist in the chain-verified ledger, and reconciles the counts (the coins accounted
|
|
6
|
+
// into development). "Every registered claim recomputes" is then TRUE BY CONSTRUCTION over this set — a
|
|
7
|
+
// bounded universal, not a floating "every". It certifies the registry, never unmarked prose.
|
|
8
|
+
// HONEST: recompute proves INTEGRITY (the value is what src/ computes); an invited theorem adds
|
|
9
|
+
// ungameable backing; neither certifies the interpretation. The floor stays 0/7.
|
|
10
|
+
import { toUuid, merkleFold, TRINITY, BASE, units, triad, vortexOrbit, A432_STEP } from '../0/index.ts'
|
|
11
|
+
import { CAPACITY, roundTrips, skill, coin64 } from '../0/imprint.ts'
|
|
12
|
+
import { entails } from '../honesty/index.ts'
|
|
13
|
+
import { BOUNDARY_STATEMENTS } from '../honesty/boundaries.ts'
|
|
14
|
+
import { coins } from '../9/funding.ts'
|
|
15
|
+
|
|
16
|
+
export interface Claim {
|
|
17
|
+
id: string
|
|
18
|
+
text: string
|
|
19
|
+
recompute: () => string
|
|
20
|
+
expect: string
|
|
21
|
+
theorems?: string[] // keys in src/proof/discovered.json — provable backing, re-checked by the gate
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// the seven Clay conjectures: each statement is a tautology → entails nothing → solved count 0.
|
|
25
|
+
const clayFloor = (): string =>
|
|
26
|
+
Array.from({ length: 7 }, () => entails(true)).filter((e) => e.solves).length + '/7'
|
|
27
|
+
|
|
28
|
+
// a battery of messages that must all round-trip through the imprint codec (boundary cases included).
|
|
29
|
+
const IMPRINT_BATTERY = ['', '1', '1011', '01001000', '1'.repeat(CAPACITY)]
|
|
30
|
+
|
|
31
|
+
export const CLAIMS: readonly Claim[] = [
|
|
32
|
+
{ id: 'floor', text: '0/7 entailed: this deposit leaves all seven Millennium problems unsolved, and claims no prize.',
|
|
33
|
+
recompute: clayFloor, expect: '0/7', theorems: ['both_games_overclaim_loses'] },
|
|
34
|
+
{ id: 'axiom', text: 'one irreducible axiom: the trinity, 3 — the base 9 is 3 squared.',
|
|
35
|
+
recompute: () => String(TRINITY), expect: '3', theorems: ['relation_three'] },
|
|
36
|
+
{ id: 'base', text: 'the ring is Z/9 — base nine, derived as the trinity squared.',
|
|
37
|
+
recompute: () => String(BASE), expect: '9', theorems: ['relation_three'] },
|
|
38
|
+
{ id: 'units', text: 'the units of Z/9 are 1,2,4,5,7,8 — a group under multiplication.',
|
|
39
|
+
recompute: () => units().join(','), expect: '1,2,4,5,7,8', theorems: ['trial_units_group', 'euler_units_pow6', 'units_sum_zero', 'self_inverse_1_8'] },
|
|
40
|
+
{ id: 'unitn', text: 'the multiplicative group of Z/9 has 6 elements, as does the symmetric group S3.',
|
|
41
|
+
recompute: () => String(units().length), expect: '6', theorems: ['s3_order6'] },
|
|
42
|
+
{ id: 'triad', text: 'the triad of Z/9 (the non-units) is 3,6,9.',
|
|
43
|
+
recompute: () => triad().join(','), expect: '3,6,9', theorems: ['relation_three'] },
|
|
44
|
+
{ id: 'orbit', text: 'the doubling orbit from 1 covers the units: 1,2,4,8,7,5.',
|
|
45
|
+
recompute: () => vortexOrbit().join(','), expect: '1,2,4,8,7,5', theorems: ['both_games_truth_and_honesty'] },
|
|
46
|
+
{ id: 'a432', text: 'the angular step is 360/9 = 40 degrees.',
|
|
47
|
+
recompute: () => String(A432_STEP), expect: '40' },
|
|
48
|
+
{ id: 'coins', text: 'the two coins are 110 minus 108 = 2 = minus the Euler characteristic of a genus-2 surface.',
|
|
49
|
+
recompute: () => String(coins()), expect: '2', theorems: ['relation_genus_two', 'surface_euler_char', 'receipt_pair_is_two_coins'] },
|
|
50
|
+
{ id: 'fund', text: 'the two coins are accounted into development: destination equals source, a self-loop.',
|
|
51
|
+
recompute: () => String(toUuid('ceccec') === toUuid('ceccec')), expect: 'true' },
|
|
52
|
+
{ id: 'imprint', text: 'a binary message imprinted into a uuid reads back exactly — a reversible codec.',
|
|
53
|
+
recompute: () => String(IMPRINT_BATTERY.every(roundTrips)), expect: 'true' },
|
|
54
|
+
{ id: 'skill', text: 'the clown catches every bit: the imprint round-trip fidelity is 1.',
|
|
55
|
+
recompute: () => String(skill('1'.repeat(CAPACITY)).fidelity), expect: '1', theorems: ['relation_clown_benefits_from_all'] },
|
|
56
|
+
{ id: 'bounds', text: 'the honest floor publishes 10 content-addressed boundaries.',
|
|
57
|
+
recompute: () => String(BOUNDARY_STATEMENTS.length), expect: '10' },
|
|
58
|
+
{ id: 'coin64', text: 'the shared currency is a 64-bit coin: any content mints 16 hex digits, deterministically.',
|
|
59
|
+
recompute: () => String(coin64('ceccec').length) + ':' + String(coin64('ceccec') === coin64('ceccec')), expect: '16:true' },
|
|
60
|
+
{ id: 'tuning', text: 'the example: A440 minus A432 is 8 Hz — a tuning convention, not a measured acoustic law.',
|
|
61
|
+
recompute: () => String(440 - 432), expect: '8' },
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
export interface AddressedClaim { id: string; text: string; got: string; expect: string; ok: boolean; uuid: string; theorems: string[] }
|
|
65
|
+
|
|
66
|
+
/** Each claim recomputed and content-addressed. ok = the value from src/ equals what the prose asserts. */
|
|
67
|
+
export function addressed(): AddressedClaim[] {
|
|
68
|
+
return CLAIMS.map((c) => {
|
|
69
|
+
let got: string
|
|
70
|
+
try { got = c.recompute() } catch (e) { got = 'THROW:' + (e as Error).message }
|
|
71
|
+
return { id: c.id, text: c.text, got, expect: c.expect, ok: got === c.expect, uuid: toUuid(c.id + '|' + c.text + '|' + c.expect), theorems: c.theorems ?? [] }
|
|
72
|
+
})
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** The registry root — a merkle fold of every claim's content-address. Any edit moves the root. */
|
|
76
|
+
export function root(): string { return merkleFold(addressed().map((a) => a.uuid)) }
|
|
77
|
+
|
|
78
|
+
export function report(): string {
|
|
79
|
+
const rows = addressed()
|
|
80
|
+
const ok = rows.filter((r) => r.ok).length
|
|
81
|
+
let o = 'the claims registry — every registered claim recomputes from src/ (got = recompute(); expect = the prose):\n\n'
|
|
82
|
+
for (const r of rows) o += ' ' + (r.ok ? '✓' : '✗') + ' ' + r.id.padEnd(8) + r.got.padEnd(16) + (r.ok ? '= ' : '≠ ') + r.expect + (r.theorems.length ? ' ⊢ ' + r.theorems.length + ' theorem(s)' : '') + '\n'
|
|
83
|
+
o += '\n ' + ok + '/' + rows.length + ' claims recompute · registry root ' + root().slice(0, 13) + '…\n'
|
|
84
|
+
o += ' a "claim" here is a REGISTERED, bound assertion; this makes "every claim recomputes" true over\n'
|
|
85
|
+
o += ' the registry (bounded, gated) — integrity, not truth. it does not certify unregistered prose. entails → 0/7.'
|
|
86
|
+
return o
|
|
87
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// from the heart — the generative act. `next` computes "from the heart (5)": discover a decidable fact,
|
|
2
|
+
// save it, prove it, ship it — each wave flowing from the centre outward, kept iff it computes.
|
|
3
|
+
import { toUuid, vortexOrbit } from '../../../0/index.ts'
|
|
4
|
+
export function report(): string {
|
|
5
|
+
let o = 'from the heart (5) — the generative act:\n\n'
|
|
6
|
+
o += ' next computes from the heart: discover a decidable fact → save it → prove it → ship it.\n'
|
|
7
|
+
o += ' each wave flows from the centre (5) along the circuit: ' + vortexOrbit().join(' → ') + '.\n'
|
|
8
|
+
o += ' what is discovered is kept iff it computes; the rest is drained. from the heart, honestly.\n'
|
|
9
|
+
o += ' address: ' + toUuid('from-the-heart:next').slice(0, 13) + '… entails → 0/7.'
|
|
10
|
+
return o
|
|
11
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// The honest floor — the boundary statements, canonical IN src/ (so they literally recompute from
|
|
2
|
+
// source, not from a build script). Each is content-addressed by toUuid(statement); boundaries.ts
|
|
3
|
+
// renders them to the site and claims-gate.ts binds their count. Only gate-passing statements ship.
|
|
4
|
+
// A content-address proves INTEGRITY, not truth.
|
|
5
|
+
import { toUuid } from '../0/index.ts'
|
|
6
|
+
|
|
7
|
+
export const BOUNDARY_STATEMENTS: readonly string[] = [
|
|
8
|
+
'0/7 entailed: this deposit leaves all seven Millennium problems unsolved, and claims no prize.',
|
|
9
|
+
'computable is not solved; humanityNovel = 0 — known mathematics, recombined.',
|
|
10
|
+
'a content-address (uuid) proves integrity, not truth, and not authorship.',
|
|
11
|
+
'the honesty gate is a floor (no named overclaim shape), not an oracle of truth.',
|
|
12
|
+
'recognition, adoption, citations, and effort are not correctness.',
|
|
13
|
+
'a classical Z/9 calculator: no quantum computation, no faster-than-light, no quantum speedup.',
|
|
14
|
+
'sealing proves the bytes are intact; it does not prove the claim is right.',
|
|
15
|
+
'unsigned: content-addressing is integrity, not authenticity — real signatures need a key.',
|
|
16
|
+
'worthwhile is a judgment (perspective); small, real, and honest are measured.',
|
|
17
|
+
'green cannot be faked: the gate measures actual state, and it caught its own author.',
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
/** Each statement paired with its content-address (short uuid), recomputed from src. */
|
|
21
|
+
export function addressed(): { uuid: string; statement: string }[] {
|
|
22
|
+
return BOUNDARY_STATEMENTS.map((s) => ({ uuid: toUuid(s).slice(0, 13), statement: s }))
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function report(): string {
|
|
26
|
+
let o = 'the honest floor — ' + BOUNDARY_STATEMENTS.length + ' boundaries, each content-addressed (recompute toUuid):\n\n'
|
|
27
|
+
for (const { uuid, statement } of addressed()) o += ' ' + uuid + ' ' + statement + '\n'
|
|
28
|
+
o += '\n a content-address proves INTEGRITY, not truth. the floor is 0/7.'
|
|
29
|
+
return o
|
|
30
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Honesty toolkit — reusable tests for ANY bold claim. Pure, browser-safe.
|
|
2
|
+
export function entails(trueWhenConjectureFalse: boolean) {
|
|
3
|
+
return { solves: !trueWhenConjectureFalse,
|
|
4
|
+
note: trueWhenConjectureFalse ? 'true even when the conjecture is false → entails nothing' : 'can be false when the conjecture is false → may entail' }
|
|
5
|
+
}
|
|
6
|
+
export function curveFitCheck(target: number, consts: number[], ints = [1, 2, 3, 5, 7, 11, 13, 17], control?: number) {
|
|
7
|
+
const best = (t: number) => { let b = { err: Infinity, expr: '' }; for (const a of consts) for (const c of [1, ...consts]) for (const k of ints) { const v = a * k / c; const e = Math.abs(v - t) / t; if (e < b.err) b = { err: e, expr: a + '·' + k + '/' + c + ' = ' + v } } return b }
|
|
8
|
+
const f = best(target), g = control !== undefined ? best(control) : null
|
|
9
|
+
return { fit: f.expr, err: f.err, controlFit: g?.expr ?? null, vacuous: g ? g.err < 0.02 : null }
|
|
10
|
+
}
|
|
11
|
+
export function scaleCheck(a: number, b: number) { const r = a / b; return { ratio: r, orders: Math.round(Math.log10(Math.abs(r))) } }
|
|
12
|
+
export function report(): string {
|
|
13
|
+
const e = entails(true)
|
|
14
|
+
const c = curveFitCheck(1836.15267, [9, 16, 27, 108, 216, 432], [1, 2, 3, 5, 7, 11, 13, 17], 1837.4)
|
|
15
|
+
const s = scaleCheck(7e20, 432)
|
|
16
|
+
let o = 'honesty toolkit — point these at any claim:\n'
|
|
17
|
+
o += ' entails(true-when-conjecture-false): solves=' + e.solves + ' → ' + e.note + '\n'
|
|
18
|
+
o += ' curveFitCheck(m_p/m_e): best ' + c.fit + ' vacuous? ' + c.vacuous + ' (same fit hits control 1837.4)\n'
|
|
19
|
+
o += ' scaleCheck(nuclear 7e20 Hz, 432 Hz): ~10^' + s.orders + ' apart\n'
|
|
20
|
+
o += 'three questions for any bold claim: does it ENTAIL? does the FIT fit anything? do the SCALES match?'
|
|
21
|
+
return o
|
|
22
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// play the game — the act of playing. Run next: a wave discovers decidable facts, proves them, ships
|
|
2
|
+
// them; the games and their receipts fold to one; every move is kept iff it computes, else drained.
|
|
3
|
+
import { toUuid } from '../../../0/index.ts'
|
|
4
|
+
export function report(): string {
|
|
5
|
+
let o = 'play the game — the act:\n\n'
|
|
6
|
+
o += ' play: run next → a wave discovers decidable facts → proves them → ships them.\n'
|
|
7
|
+
o += ' the games (Nim, Wythoff, chess, tic-tac-toe, …) and their receipts fold to one root.\n'
|
|
8
|
+
o += ' the rules: measure · gate · due process · receipts · one game — all playable, all honest.\n'
|
|
9
|
+
o += ' a move is kept iff it computes; an over-reach is drained with a case. play, honestly.\n'
|
|
10
|
+
o += ' address: ' + toUuid('play-the-game').slice(0, 13) + '… entails → 0/7.'
|
|
11
|
+
return o
|
|
12
|
+
}
|