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 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.4
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.4`** · owner `ceccec` · git tag `v1.0.4`
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;AAkBO,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;;AC5QlE;;;;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
+ {"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;AAkBO,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;;AC5QlE;;;;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
+ {"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.4",
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/kyber-real.test.ts > /dev/null && echo crypto tests ok",
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
- if (d === 3) return 0;
191
- if (d === 6) return 120;
192
- if (d === 9) return 240;
193
- // Rodin digits ordered as 1,2,4,8,7,5 mapping to k=0..5
194
- const k = RODIN_SEQUENCE.indexOf(d);
195
- return (k + 1) * 60; // 60°,120°,180°,240°,300°,360°(≡0)
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
- // Check if path has balanced structure
269
- const balanced = this.getCurrentDepth() >= 0;
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