zeropoint-node 1.0.4 → 1.0.6
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/CHANGELOG.md +176 -0
- package/CITATION.cff +1 -1
- package/README.md +1 -1
- package/dist/legacy-BEa7tljT.js.map +1 -1
- package/dist/legacy-CV8oTnKM.cjs.map +1 -1
- package/package.json +12 -3
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.math.ts +14 -6
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.path.ts +6 -2
- package/src/0/index.ts +16 -0
- package/src/crypto/ml-kem-768-acvp.json +492 -0
- package/src/crypto/ml-kem.test.ts +140 -0
- package/src/crypto/ml-kem.ts +554 -0
- package/src/quantum/error-correction.ts +69 -16
- package/src/quantum/hybrid.ts +2 -2
- package/src/quantum/simulator.ts +19 -0
- package/src/quantum/superposition-execution.ts +9 -4
- package/src/quantum/tomography.ts +4 -4
- package/src/thermo/free-energy.ts +279 -0
- package/src/thermo/wastewater-energy.ts +204 -0
- package/src/verification/lean-bridge.test.ts +109 -228
- package/src/verification/lean-bridge.ts +748 -153
- package/src/crypto/kyber-real.test.ts +0 -198
- package/src/crypto/kyber-real.ts +0 -489
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,181 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.6
|
|
4
|
+
|
|
5
|
+
### Added — thermodynamics
|
|
6
|
+
|
|
7
|
+
- **`src/thermo/free-energy.ts`.** The Gibbs energy of the water reaction
|
|
8
|
+
(IUPAC's preferred name for the thermodynamic potential), computed from three
|
|
9
|
+
tabulated standard-state quantities rather than asserted:
|
|
10
|
+
`ΔG = ΔH − TΔS`. ΔG of formation is −237 kJ/mol and of splitting **+237**, so
|
|
11
|
+
splitting must be paid for. The reversible cell potential ΔG/(nF) is
|
|
12
|
+
1228.9 mV and the thermoneutral ΔH/(nF) is 1481.2 mV, the gap being TΔS. A
|
|
13
|
+
split-then-burn cycle breaks even **exactly** at perfect efficiency and loses
|
|
14
|
+
otherwise — checked over all 8000 points of the efficiency grid in 5% steps,
|
|
15
|
+
exhaustive rather than sampled.
|
|
16
|
+
- **`src/thermo/wastewater-energy.ts`.** Polluted water in, combustion engine,
|
|
17
|
+
electricity and drinkable water out — which works, because the fuel is the
|
|
18
|
+
contamination and not the water. Anaerobic digestion to biogas, a CHP engine,
|
|
19
|
+
membranes for the water. At 13.9 J per mg of COD the plant exports power above
|
|
20
|
+
a **break-even of 4195 mg/L**, computed by scanning rather than declared:
|
|
21
|
+
municipal sewage sits below it, dairy and manure effluent well above.
|
|
22
|
+
Distillation is deliberately not the water step — 2.26 MJ/L of latent heat is
|
|
23
|
+
more than any realistic load carries.
|
|
24
|
+
- Both invert. Entropy recovered from `(ΔH − ΔG)/T` returns the tabulated figure
|
|
25
|
+
exactly, the exact-rational cell potentials recover their energies with zero
|
|
26
|
+
drift, and the break-even found by inverting the arithmetic equals the one
|
|
27
|
+
found by scanning.
|
|
28
|
+
|
|
29
|
+
### Added — seals, and an outside judge
|
|
30
|
+
|
|
31
|
+
- **21 seals, up from 13.** New: the doubling circuit reaching {3,6,9} only by
|
|
32
|
+
reflection; the merkaba as two mirrored tetrahedra sharing the void; the
|
|
33
|
+
AGL(1,ℤ/9) action giving three as the index of {0,3,6} with stabiliser 18;
|
|
34
|
+
digit geometry being single-valued; the superposition model reporting its own
|
|
35
|
+
state; the Gibbs energy of splitting; the wastewater threshold; and every
|
|
36
|
+
model inverting.
|
|
37
|
+
- **`npm run adjudicate`** puts every seal through `adjudicate()` from
|
|
38
|
+
`@uuidna/uuidna` — a third party that runs the predicate and returns a verdict
|
|
39
|
+
with a content-addressed receipt. All 21 come back VERIFIED. `adjudicate:check`
|
|
40
|
+
is in `npm run check`. Neither statement nor predicate is rewritten for the
|
|
41
|
+
adjudicator, or it would be judging a paraphrase.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- **`angleForDigit` mapped nine digits onto six angles** — 3 collided with 5, 2
|
|
46
|
+
with 6, 8 with 9 — because the trinity was pinned to 0/120/240 while the Rodin
|
|
47
|
+
digits were laid on a 60° lattice running through them. It is the enneagram
|
|
48
|
+
now, 40° per step, injective. `bearingForDigit` moves into the kernel and the
|
|
49
|
+
vortex SVG imports it; the SVG receipt is unchanged, which is how the move is
|
|
50
|
+
known to be byte-identical.
|
|
51
|
+
- **`isValidPath` tested the final depth, not every prefix.** A path dipping
|
|
52
|
+
below its origin and climbing back passed. `balanced` now means what it says.
|
|
53
|
+
This cleared the last entry on the tautology surface, whose ceiling reaches
|
|
54
|
+
**zero**.
|
|
55
|
+
- **The superposition model claimed simultaneity unconditionally** while
|
|
56
|
+
computing `still_superposed`. Its prose follows its measurement now.
|
|
57
|
+
|
|
58
|
+
### Added — release automation
|
|
59
|
+
|
|
60
|
+
- **`npm-deprecations.json`** declares which versions are deprecated and why,
|
|
61
|
+
and `scripts/npm-registry-sync.mjs` reconciles the registry to it, with the
|
|
62
|
+
safety rails in the script: never `dist-tags.latest`, never an unpublished
|
|
63
|
+
version, never every version at once. `registry-sync.yml` runs it daily and
|
|
64
|
+
`publish.yml` on release.
|
|
65
|
+
- Measured, not assumed: npm trusted publishing is **publish-scoped**. It cannot
|
|
66
|
+
authorise a deprecate, which returns `404 … or you do not have permission`
|
|
67
|
+
even from the workflow the trusted publisher names.
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
|
|
71
|
+
- New dependency `@uuidna/uuidna` — zero dependencies of its own, used for
|
|
72
|
+
external adjudication of the seals.
|
|
73
|
+
|
|
74
|
+
### Known limitations
|
|
75
|
+
|
|
76
|
+
- Deprecations for 1.0.0–1.0.3 are declared but **not live**: applying them needs
|
|
77
|
+
an npm automation token as the `NPM_TOKEN` secret, which OIDC cannot replace.
|
|
78
|
+
`registry-sync.yml` reports the gap on every run rather than forgetting it.
|
|
79
|
+
- Everything listed under 1.0.5 and earlier still applies — in particular
|
|
80
|
+
ML-KEM-768 here is conformant but **not constant time**.
|
|
81
|
+
|
|
82
|
+
## 1.0.5
|
|
83
|
+
|
|
84
|
+
### Added — ML-KEM-768, actually conformant
|
|
85
|
+
|
|
86
|
+
- **`src/crypto/ml-kem.ts` implements FIPS 203 ML-KEM-768 and is verified
|
|
87
|
+
against NIST's own vectors.** It replaces `src/crypto/kyber-real.ts`, which
|
|
88
|
+
is deleted. That module called itself Kyber and was not: it sampled the
|
|
89
|
+
matrix `A` from a centred binomial, so its coefficients lived in `{-1,0,1}`
|
|
90
|
+
instead of uniform over `Z_q`, and the module-LWE instance underneath was not
|
|
91
|
+
the hard problem. 1.0.4 fixed its round trip; a round trip only ever showed
|
|
92
|
+
the scheme agreed with itself.
|
|
93
|
+
|
|
94
|
+
What is here now: NTT twiddle factors computed from `ζ = 17` and a
|
|
95
|
+
bit-reversal rather than copied from a table; uniform `A` by rejection
|
|
96
|
+
sampling from SHAKE-128; CBD noise at `η₁ = η₂ = 2` from a SHAKE-256 PRF;
|
|
97
|
+
`ByteEncode`/`ByteDecode`, `Compress`/`Decompress` at `d_u = 10`, `d_v = 4`;
|
|
98
|
+
K-PKE wrapped in the Fujisaki–Okamoto transform with implicit rejection and a
|
|
99
|
+
full-length ciphertext comparison; and the §7.2 modulus check on
|
|
100
|
+
encapsulation keys.
|
|
101
|
+
|
|
102
|
+
- **Conformance is recomputable, not asserted.** `npm run test:crypto` runs
|
|
103
|
+
NIST ACVP vectors for FIPS 203, ML-KEM-768 — 25 key generation, 25
|
|
104
|
+
encapsulation, 10 decapsulation including the implicit-rejection path, and 10
|
|
105
|
+
encapsulation-key validation cases. The vectors ship in the package as
|
|
106
|
+
`src/crypto/ml-kem-768-acvp.json`, so a consumer can re-run them.
|
|
107
|
+
|
|
108
|
+
- **`npm run kat:ml-kem`** goes wider: 10 000 keygen/encaps/decaps triples from
|
|
109
|
+
a deterministic SHAKE-128 stream, accumulated into one digest that must equal
|
|
110
|
+
the value C2SP/CCTV publishes from the pq-crystals reference implementation.
|
|
111
|
+
It matches. Not in `npm run check` — it takes ~33s against a ~2 min gate.
|
|
112
|
+
|
|
113
|
+
- The suite is mutation-tested: perturbing one twiddle factor, swapping the
|
|
114
|
+
matrix index order, changing `η₂`, truncating instead of rounding in
|
|
115
|
+
`Compress`, or dropping the modulus check each make it fail.
|
|
116
|
+
|
|
117
|
+
### Fixed — quantum measurement and the Steane code
|
|
118
|
+
|
|
119
|
+
Both found by writing seals that could fail, in `src/verification/lean-bridge.ts`.
|
|
120
|
+
|
|
121
|
+
- **`measureQubit` was being handed a raw LCG state where it wants a unit in
|
|
122
|
+
`[0,1)`.** Its outcome test is `unit < 1 - pOne`, so any state of 1 or more
|
|
123
|
+
forced the result to 1. Four call sites did this: repetition-code syndrome
|
|
124
|
+
extraction and majority-vote decoding, `classifyMeasurement`, and all three
|
|
125
|
+
tomography bases. `measureZ` on `|0>` returned 999 ones in 1000 shots, and
|
|
126
|
+
syndrome extraction reported a clean codeword as error `X0` while reporting a
|
|
127
|
+
real `X` error as clean — exactly inverted. `unitOf` now maps the LCG state
|
|
128
|
+
onto the unit interval at every site. Clean codewords give syndrome `[0,0]`;
|
|
129
|
+
`X` on qubit 0 gives `[1,0]`; `measureZ` on `|0>` gives 1000/0.
|
|
130
|
+
|
|
131
|
+
- **`STEANE_CODE` was not a stabiliser group.** `[[7,1,3]]` needs `n - k = 6`
|
|
132
|
+
generators; it listed 7, of GF(2) rank 6, with 13 of 21 pairs anticommuting.
|
|
133
|
+
The `n`-bit representation could not express a CSS code at all — an X-type and
|
|
134
|
+
a Z-type generator over the same support are different operators but identical
|
|
135
|
+
bit patterns. `StabilizerCode.generators` is now symplectic, `[x | z]` of `2n`
|
|
136
|
+
bits, with `xGenerators`/`zGenerators` alongside, and Steane is built from the
|
|
137
|
+
three `[7,4,3]` Hamming checks used once as X-type and once as Z-type: 6
|
|
138
|
+
generators, symplectic rank 6, zero anticommuting pairs.
|
|
139
|
+
|
|
140
|
+
`npm run quantum:sim` reported 257 checks passing both before and after this
|
|
141
|
+
fix, including `QEC` and `state-tomography`. Neither defect was reachable from
|
|
142
|
+
any of them.
|
|
143
|
+
|
|
144
|
+
### Changed — the Lean bridge stops claiming what it never checked
|
|
145
|
+
|
|
146
|
+
- It reported `Verified: 2/2`, `Confidence: 100.0%` and `Production Grade
|
|
147
|
+
(Formally Verified)`, and exported `ready_for_publication: true`. None was
|
|
148
|
+
measured: the hash covered the theorem's *name*, so it never moved when a
|
|
149
|
+
proof changed, and `verifyProofCertificate` tested that some strings were
|
|
150
|
+
non-empty and a hash was 16 characters — true of every certificate the file
|
|
151
|
+
can build. `lean_version` was asserted although no Lean runs here, and 7 of
|
|
152
|
+
the 13 Lean scripts end in `sorry`.
|
|
153
|
+
|
|
154
|
+
- A certificate now carries two separately reported facts. `lean_status` is
|
|
155
|
+
**read** from the script — `script`, `sorry`, `axiom` or `absent`. `seal` is
|
|
156
|
+
whether a recomputable predicate ran and held against the simulator. Verified
|
|
157
|
+
means the seal held. The hash covers statement and script.
|
|
158
|
+
|
|
159
|
+
- All 8 theorems in the report now seal, each with a `basis` string saying
|
|
160
|
+
whether it decides the general statement or one instance — `grover_speedup`
|
|
161
|
+
at N=16 is not an asymptotic bound and says so. `ready_for_publication`
|
|
162
|
+
remains **false**: seals are computed instances, not machine-checked proofs,
|
|
163
|
+
and no Lean toolchain runs in this repository.
|
|
164
|
+
|
|
165
|
+
- `kyber_security` claimed 128. ML-KEM-768 is NIST **category 3**.
|
|
166
|
+
|
|
167
|
+
- `test:verification` runs the seals on every gate.
|
|
168
|
+
|
|
169
|
+
### Known limitations
|
|
170
|
+
|
|
171
|
+
- **ML-KEM-768 here is not constant time.** JavaScript cannot promise that —
|
|
172
|
+
array indexing, JIT deoptimisation and garbage collection all leak timing.
|
|
173
|
+
Do not use it where an attacker can measure decapsulation. Conformance to
|
|
174
|
+
FIPS 203 output is a separate property from side-channel resistance, and only
|
|
175
|
+
the first is claimed.
|
|
176
|
+
- Every limitation listed under 1.0.4 and 1.0.3 still applies, except the
|
|
177
|
+
`kyber-real.ts` warning, which no longer has a file to attach to.
|
|
178
|
+
|
|
3
179
|
## 1.0.4
|
|
4
180
|
|
|
5
181
|
### Fixed — cryptography
|
package/CITATION.cff
CHANGED
|
@@ -20,7 +20,7 @@ authors:
|
|
|
20
20
|
email: node@zeropoint.bg
|
|
21
21
|
repository-code: https://github.com/ceccec/zeropoint-node
|
|
22
22
|
url: https://node.zeropoint.bg
|
|
23
|
-
version: 1.0.
|
|
23
|
+
version: 1.0.6
|
|
24
24
|
license: CC-BY-NC-ND-4.0
|
|
25
25
|
license-url: https://github.com/ceccec/zeropoint-node/blob/main/LICENSE
|
|
26
26
|
keywords:
|
package/README.md
CHANGED
|
@@ -472,7 +472,7 @@ The A432 Consciousness System is an open-source project that welcomes contributi
|
|
|
472
472
|
|
|
473
473
|
<!-- VERSION:BEGIN — generated by scripts/version-seal.mjs; do not edit by hand -->
|
|
474
474
|
|
|
475
|
-
Package: **`zeropoint-node@1.0.
|
|
475
|
+
Package: **`zeropoint-node@1.0.6`** · owner `ceccec` · git tag `v1.0.6`
|
|
476
476
|
|
|
477
477
|
npm rejects republishing a version that already exists, so every release is a
|
|
478
478
|
new number. Bump with `npm version patch|minor|major`: that reseals CITATION.cff
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-BEa7tljT.js","sources":["../src/0/index.ts","../src/kernel/legacy.ts"],"sourcesContent":[null,null],"names":["kernelDigitalRoot"],"mappings":"AAAA;;;;;;AAMG;AA2LH;AACM,SAAU,WAAW,CAAC,CAAS,EAAA;AACnC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB;
|
|
1
|
+
{"version":3,"file":"legacy-BEa7tljT.js","sources":["../src/0/index.ts","../src/kernel/legacy.ts"],"sourcesContent":[null,null],"names":["kernelDigitalRoot"],"mappings":"AAAA;;;;;;AAMG;AA2LH;AACM,SAAU,WAAW,CAAC,CAAS,EAAA;AACnC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB;AAkCO,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;AAChD,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;AAE7C;;;;AAIG;AACG,SAAU,WAAW,CAAC,CAAS,EAAA;AACnC,IAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AAKA;;;;;;;AAOG;AACH,MAAM,QAAQ,GAAG,CAAC,CAAa,MAAM,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE5D,SAAS,aAAa,CACpB,MAAyB,EACzB,MAA+B,EAC/B,QAAiB,EAAA;AAEjB,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACZ,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AAC5C,QAAA,OAAO,GAAG,KAAK,CAAA,EAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE;AACtD,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb;AAEA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAU;AACzD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU;AAEzC;AACM,SAAU,oBAAoB,CAAC,QAAQ,GAAG,KAAK,EAAA;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC/D,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;;AAE9D,IAAA,MAAM,IAAI,GAAG,CAAA,GAAA,EAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAClD,IAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,IAAI,MAAM,IAAI,CAAA,CAAE,EAAE;AACrE;AAEqC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;;AC5RlE;;;;AAIG;AASH;AACM,SAAU,iBAAiB,CAAC,CAAS,EAAA;IACzC,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC;AACrB,IAAA,OAAOA,WAAiB,CAAC,CAAC,CAAC;AAC7B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-CV8oTnKM.cjs","sources":["../src/0/index.ts","../src/kernel/legacy.ts"],"sourcesContent":[null,null],"names":["kernelDigitalRoot"],"mappings":";;AAAA;;;;;;AAMG;AA2LH;AACM,SAAU,WAAW,CAAC,CAAS,EAAA;AACnC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB;
|
|
1
|
+
{"version":3,"file":"legacy-CV8oTnKM.cjs","sources":["../src/0/index.ts","../src/kernel/legacy.ts"],"sourcesContent":[null,null],"names":["kernelDigitalRoot"],"mappings":";;AAAA;;;;;;AAMG;AA2LH;AACM,SAAU,WAAW,CAAC,CAAS,EAAA;AACnC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB;AAkCO,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;AAChD,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;AAE7C;;;;AAIG;AACG,SAAU,WAAW,CAAC,CAAS,EAAA;AACnC,IAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC;AAKA;;;;;;;AAOG;AACH,MAAM,QAAQ,GAAG,CAAC,CAAa,MAAM,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAE5D,SAAS,aAAa,CACpB,MAAyB,EACzB,MAA+B,EAC/B,QAAiB,EAAA;AAEjB,IAAA,OAAO;AACJ,SAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACZ,QAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AAC5C,QAAA,OAAO,GAAG,KAAK,CAAA,EAAG,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE;AACtD,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb;AAEA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAU;AACzD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU;AAEzC;AACM,SAAU,oBAAoB,CAAC,QAAQ,GAAG,KAAK,EAAA;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC;IAC/D,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;;AAE9D,IAAA,MAAM,IAAI,GAAG,CAAA,GAAA,EAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAClD,IAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,IAAI,MAAM,IAAI,CAAA,CAAE,EAAE;AACrE;AAEqC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC;;AC5RlE;;;;AAIG;AASH;AACM,SAAU,iBAAiB,CAAC,CAAS,EAAA;IACzC,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,CAAC;AACrB,IAAA,OAAOA,WAAiB,CAAC,CAAC,CAAC;AAC7B;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zeropoint-node",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A432 Consciousness System: Self-evolving, self-aware consciousness technology with Transurfing integration, harmonic mathematics, zero-entropy principles, Kabbalistic cycles, and sacred geometry",
|
|
6
6
|
"main": "dist/a432.system.cjs",
|
|
@@ -124,7 +124,14 @@
|
|
|
124
124
|
"test:kernel": "node --experimental-strip-types src/kernel/smoke.test.ts",
|
|
125
125
|
"test:security": "node --experimental-strip-types src/security/quantum-fold-cipher.test.ts > /dev/null && node --experimental-strip-types src/security/quantum-state-tomography.test.ts > /dev/null && node --experimental-strip-types src/security/quantum-proofs.test.ts > /dev/null && node --experimental-strip-types src/security/post-quantum-crypto.test.ts > /dev/null && echo security tests ok",
|
|
126
126
|
"test:quantum": "node --experimental-strip-types src/quantum/superposition-execution.test.ts > /dev/null && node --experimental-strip-types src/quantum/millennium-bridge.test.ts > /dev/null && node --experimental-strip-types src/quantum/zenodo-publisher.test.ts > /dev/null && echo quantum tests ok",
|
|
127
|
-
"test:crypto": "node --experimental-strip-types src/crypto/
|
|
127
|
+
"test:crypto": "node --experimental-strip-types src/crypto/ml-kem.test.ts > /dev/null && echo crypto tests ok",
|
|
128
|
+
"test:verification": "node --experimental-strip-types src/verification/lean-bridge.test.ts > /dev/null && echo verification seals ok",
|
|
129
|
+
"kat:ml-kem": "node --experimental-strip-types scripts/ml-kem-accumulated-kat.mjs",
|
|
130
|
+
"registry:check": "node scripts/npm-registry-sync.mjs",
|
|
131
|
+
"registry:apply": "node scripts/npm-registry-sync.mjs --apply",
|
|
132
|
+
"registry:test": "node scripts/npm-registry-sync.mjs --self-test",
|
|
133
|
+
"adjudicate": "node --experimental-strip-types scripts/adjudicate-seals.mjs",
|
|
134
|
+
"adjudicate:check": "node --experimental-strip-types scripts/adjudicate-seals.mjs --check",
|
|
128
135
|
"readme": "node --experimental-strip-types scripts/readme-gen.mjs",
|
|
129
136
|
"readme:check": "node --experimental-strip-types scripts/readme-gen.mjs --check",
|
|
130
137
|
"docs:pages": "node --experimental-strip-types scripts/docs-pages.mjs",
|
|
@@ -138,6 +145,7 @@
|
|
|
138
145
|
"version:seal": "node scripts/version-seal.mjs",
|
|
139
146
|
"version:test": "node scripts/version-seal.test.mjs",
|
|
140
147
|
"version:check": "node scripts/version-seal.mjs --check",
|
|
148
|
+
"changelog:check": "node --experimental-strip-types scripts/changelog-facts.mjs",
|
|
141
149
|
"mcp": "node --experimental-strip-types src/mcp/server.ts",
|
|
142
150
|
"mcp:smoke": "node --experimental-strip-types scripts/mcp-smoke.mjs",
|
|
143
151
|
"self:next": "node --experimental-strip-types scripts/self-next.mjs",
|
|
@@ -157,7 +165,7 @@
|
|
|
157
165
|
"vortex:svg:check": "node --experimental-strip-types scripts/vortex-svg.mjs --check",
|
|
158
166
|
"bundle:a432": "node scripts/build-a432-bundle.mjs",
|
|
159
167
|
"bundle:a432:check": "node scripts/build-a432-bundle.mjs --check",
|
|
160
|
-
"check": "npm run version:test && npm run version:check && npm run test:kernel && npm run test:security && npm run test:quantum && npm run test:crypto && npm run math:ban && npm run bundle:a432:check && npm run skills:seal && npm run skills:check && npm run readme && npm run readme:check && npm run docs:pages && npm run docs:pages:check && npm run a432:scan && npm run a432:scan:check && npm run docs:index && npm run docs:index:check && npm run spectrum && npm run spectrum:check && npm run vortex:svg && npm run vortex:svg:check && npm run docs:build && npm run quantum:sim && npm run ratchet:check && npm run mcp:smoke && npm run self:next",
|
|
168
|
+
"check": "npm run version:test && npm run registry:test && npm run version:check && npm run changelog:check && npm run test:kernel && npm run test:security && npm run test:quantum && npm run test:crypto && npm run adjudicate:check && npm run test:verification && npm run math:ban && npm run bundle:a432:check && npm run skills:seal && npm run skills:check && npm run readme && npm run readme:check && npm run docs:pages && npm run docs:pages:check && npm run a432:scan && npm run a432:scan:check && npm run docs:index && npm run docs:index:check && npm run spectrum && npm run spectrum:check && npm run vortex:svg && npm run vortex:svg:check && npm run docs:build && npm run quantum:sim && npm run ratchet:check && npm run mcp:smoke && npm run self:next",
|
|
161
169
|
"prepublishOnly": "npm run build",
|
|
162
170
|
"prose": "node scripts/prose-claims.mjs --list",
|
|
163
171
|
"prose:check": "node scripts/prose-claims.mjs",
|
|
@@ -224,6 +232,7 @@
|
|
|
224
232
|
"homepage": "https://node.zeropoint.bg",
|
|
225
233
|
"dependencies": {
|
|
226
234
|
"@hotwired/stimulus": "3.2.2",
|
|
235
|
+
"@uuidna/uuidna": "0.2.7",
|
|
227
236
|
"express": "5.2.1",
|
|
228
237
|
"three": "0.185.1"
|
|
229
238
|
}
|
|
@@ -187,12 +187,20 @@ export function patternDigit(i: number): number {
|
|
|
187
187
|
* Rodin digits follow 60°·k.
|
|
188
188
|
*/
|
|
189
189
|
export function angleForDigit(d: number): number {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
190
|
+
// Enneagram bearing: 9 at 12 o'clock, then 1..8 clockwise, one ninth of a
|
|
191
|
+
// turn (40°) apart. Integer degrees, so no trigonometry is needed to reason
|
|
192
|
+
// about the layout, and injective on 1..9 by construction.
|
|
193
|
+
//
|
|
194
|
+
// It used to place the trinity at 0/120/240 and the Rodin digits on a 60°
|
|
195
|
+
// lattice, which put NINE digits on SIX angles: 3 collided with 5, 2 with 6,
|
|
196
|
+
// and 8 with 9. Two digits at one position is a bug under any convention —
|
|
197
|
+
// it made "north of 3" unanswerable and any layout built on it degenerate.
|
|
198
|
+
//
|
|
199
|
+
// This is the same formula as the kernel's `bearingForDigit`, which is what
|
|
200
|
+
// `scripts/vortex-svg.mjs` draws. The two are deliberately NOT wired
|
|
201
|
+
// together — the a432 tree does not import the kernel — so the seal
|
|
202
|
+
// `digit_geometry_is_single_valued` checks that they agree instead.
|
|
203
|
+
return (((-90 + 40 * (d % 9)) % 360) + 360) % 360;
|
|
196
204
|
}
|
|
197
205
|
|
|
198
206
|
/** A432-based frequency for a trinity digit using base-12 harmonics. */
|
|
@@ -265,8 +265,12 @@ export class VBMPathNavigator {
|
|
|
265
265
|
// Check if all digits are valid (0-9)
|
|
266
266
|
const validDigits = this.state.sequence.every(digit => digit >= 0 && digit <= 9);
|
|
267
267
|
|
|
268
|
-
//
|
|
269
|
-
|
|
268
|
+
// Balanced means the path never rises above its own origin in reverse:
|
|
269
|
+
// you cannot come back from deeper than you went. That is a condition on
|
|
270
|
+
// EVERY prefix, not just the end. Checking only the final depth let
|
|
271
|
+
// `\\3/6` pass — it dips to -1 and returns to 0 — and made the test
|
|
272
|
+
// unfalsifiable in shape, since a closing depth is rarely negative.
|
|
273
|
+
const balanced = this.nodes.every(node => node.depth >= 0);
|
|
270
274
|
|
|
271
275
|
return validDigits && balanced;
|
|
272
276
|
}
|
package/src/0/index.ts
CHANGED
|
@@ -211,6 +211,22 @@ export const WAVE_CHAIN = [
|
|
|
211
211
|
export type WavePhase = (typeof WAVE_CHAIN)[number]
|
|
212
212
|
export const KERNEL_SEALED = true
|
|
213
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Enneagram bearing of a digit, in whole degrees clockwise from 12 o'clock.
|
|
216
|
+
*
|
|
217
|
+
* 9 sits at the top and 1..8 follow clockwise, one ninth of a turn apart. The
|
|
218
|
+
* step is 40° because the ring has nine positions, so every bearing is an
|
|
219
|
+
* integer and no trigonometry is needed to reason about the layout.
|
|
220
|
+
*
|
|
221
|
+
* This is the layout `scripts/vortex-svg.mjs` draws; it now imports this rather
|
|
222
|
+
* than repeating the formula. Note it is NOT `a432.math.ts` `angleForDigit`,
|
|
223
|
+
* which is degenerate — that one collides 3 with 5, 2 with 6 and 8 with 9,
|
|
224
|
+
* mapping nine digits onto six angles.
|
|
225
|
+
*/
|
|
226
|
+
export function bearingForDigit(d: number): number {
|
|
227
|
+
return (((-90 + 40 * (d % 9)) % 360) + 360) % 360
|
|
228
|
+
}
|
|
229
|
+
|
|
214
230
|
export const VORTEX_SEQUENCE = [1, 2, 4, 8, 7, 5, 3, 6, 9] as const
|
|
215
231
|
export const VORTEX_REVERSE = [9, 6, 3, 5, 7, 8, 4, 2, 1] as const
|
|
216
232
|
export const VORTEX_ORBIT = [1, 2, 4, 8, 7, 5] as const
|