@ceccec/millennium-solutions 9.6.7 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +43 -41
  2. package/package.json +7 -4
package/README.md CHANGED
@@ -25,12 +25,12 @@ last because the orbit never reaches it.
25
25
 
26
26
  ## 1 · What is proved
27
27
 
28
- - The formal layer holds 939 kernel-accepted declarations across 41 files, and no file uses sorry or native_decide outside a comment.
29
- <sub>SEALED · `4fbbee52-f94d-81bf-b745-753df9646f45`</sub>
30
- - 737 of those 939 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 202 close by rfl and are declarations.
31
- <sub>SEALED · `4bf71a4a-3a3d-8da3-8651-60419b72bf34`</sub>
32
- - 1016 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
33
- <sub>SEALED · `c64ac22b-8407-88b4-a93a-2016e24c0b88`</sub>
28
+ - The formal layer holds 947 kernel-accepted declarations across 42 files, and no file uses sorry or native_decide outside a comment.
29
+ <sub>SEALED · `944cfcf2-3033-834b-b171-c3263d2b54e5`</sub>
30
+ - 745 of those 947 are THEOREMS by this deposit's own rule — they close by decide, which is to say the kernel evaluates the proposition over its whole finite domain rather than accepting a declaration; the remaining 202 close by rfl and are declarations.
31
+ <sub>SEALED · `19d6b59c-36f6-81cb-ba67-aa9c917755d3`</sub>
32
+ - 1024 of them are sealed into the ledger, each carrying a receipt derived from the one before it.
33
+ <sub>SEALED · `b9fe4b69-85dd-838b-8119-b836b5321f5b`</sub>
34
34
 
35
35
  ## 2 · The ring
36
36
 
@@ -53,10 +53,10 @@ last because the orbit never reaches it.
53
53
 
54
54
  ## 7 · The ledger
55
55
 
56
- - The ledger records 2880 entries with 0 chain breaks, 0 duplicate keys and 0 duplicate receipts.
57
- <sub>SEALED · `d876df9c-d913-8074-ac4a-717e48b82743`</sub>
58
- - The count is an exact multiple of eight — 2880 is 360 octaves with no remainder.
59
- <sub>SEALED · `a2681e20-5f23-83ad-b348-cbbf333bf82c`</sub>
56
+ - The ledger records 2888 entries with 0 chain breaks, 0 duplicate keys and 0 duplicate receipts.
57
+ <sub>SEALED · `81e0873c-7539-8b22-a11e-b1cfcbbaf0eb`</sub>
58
+ - The count is an exact multiple of eight — 2888 is 361 octaves with no remainder.
59
+ <sub>SEALED · `8dd0759e-26f6-8ce8-b0cf-6151a586aeea`</sub>
60
60
 
61
61
  ## 5 · What the gate does and does not do
62
62
 
@@ -100,7 +100,7 @@ results; it is the result, read off the same arithmetic that produced the table.
100
100
 
101
101
  ## 7 · The proofs, as they document themselves
102
102
 
103
- 41 Lean files in 7 wings, 939 declarations of which 924 are theorems. The prose in this section is read out of the
103
+ 42 Lean files in 7 wings, 947 declarations of which 932 are theorems. The prose in this section is read out of the
104
104
  sources — their frontmatter, their header comments and the comment above each theorem. Editing a proof edits
105
105
  this page; there is nowhere else to keep the description in step.
106
106
 
@@ -122,30 +122,10 @@ this page; there is nowhere else to keep the description in step.
122
122
 
123
123
  **The rays, read forward and reverse, and the mark a life carries** — `rays.lean`, 14 theorem(s). is elementary number theory; the involution x ↦ ¬x on bit words is Boolean algebra. Neither is this deposit's. What is decided here is only that THIS deposit's ray order is that orbit and that its trace is that involution — the facts a reader would otherwise have to take from a comment.
124
124
 
125
- ### the ring
126
-
127
- **The two-sided coin** — `coin.lean`, 12 theorem(s). One involution on ten digits, two sides, one fixed point, and one digit that leaves.
128
-
129
- **Elementary arithmetic** — `elementary.lean`, 41 theorem(s). the DECISION of each over a stated finite range, axiom-free, and the honest record of where the range stops short of what the older claim asserted. prior_art_search: the results are named in every undergraduate text; no search was needed to find them. prior_art_pool: named Elementary arithmetic, decided — the claims the ledger held in TypeScript, given a kernel.
130
-
131
- **Families over the ring** — `families.lean`, 64 theorem(s). The families, quantified. Proving at scale.
132
-
133
- **The doubling flow, for every step** — `flow.lean`, 16 theorem(s). prior_art_search: literature search performed 2026-09-14, terms "powers of two modulo 9 period 6 order of 2 mod 9 Euler theorem"; prior art found and credited. prior_art_pool: bounded prior_art_own: the every-step bound of the doubling flow, stated for the Navier–Stokes theorem in index.lean
134
-
135
- **What every involution gives, and what it does not** — `involution.lean`, 8 theorem(s). transpositions, and that the number of fixed points therefore matches the parity of the set, is classical and long predates this deposit. It is the orbit-counting argument in any first course. What is this deposit's own here is the EXHAUSTIVE decision over ℤ/9 and the measured refusal below.
136
-
137
- **The merkaba** — `merkaba.lean`, 8 theorem(s). (Leonhard Euler, 1758). The file as a whole is this deposit's own construction, and this ONE declaration restates a named classical result: its third conjunct 4 + 4 - 6 = 2 IS the Euler characteristic of the tetrahedron. The comment above that theorem already named Euler; the register did not, because prior art was routed on the FILE and a file-level row cannot say "own work except theorem 7". No priority over Euler is claimed. What is this deposit's own here is the pairing of the two tetrahedra with the cube Q₃ and the vertex and edge counts around it, not the characteristic. The merkaba, as THIS deposit constructs it — ported to Lean so it stands on the kernel instead of on a TypeScript test. Six entries under this name were revoked as dirty; every one of them that states finite algebra is re-proved here, and the two that do not (a cosine field, a bond angle in degrees) are absent on purpose — they are real trigonometry, not decidable arithmetic over ℤ/9, and padding them in would be the exact dishonesty the revocation was for.
138
-
139
- **Sequences** — `sequences.lean`, 28 theorem(s). The ledger held these as TypeScript tests. Each is a classical identity with a real proof; what is done here is to DECIDE each over a stated finite range, which is what `decide` can honestly deliver — the range is named in every theorem rather than implied, and no theorem claims the general case.
140
-
141
- **The digit split** — `split.lean`, 22 theorem(s). mathematics and claim nothing. Stated precisely so the credit does not run past the earlier work: what is NOT claimed as prior art is the tokenisation itself — reading the digits as 0|12|3|45|6|78|9 by concatenating consecutive units into two-digit tokens, and the arithmetic that follows from it (every token a multiple of three, closure of the tokens under addition and multiplication). That arrangement is this deposit's presentation of a standard fact, and its verification is by exhaustion here. Crediting an earlier author for a presentation they did not make is the same defect as claiming their result, pointed the other way. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited. prior_art_pool: mixed the digit grouping is generic arithmetic; the coin accounting it feeds is this deposit's. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the digit grouping 0|12|3|45|6|78|9 as this deposit reads it The ten digits read in order and grouped 0 | 12 | 3 | 45 | 6 | 78 | 9 — and what that grouping is.
142
-
143
- **The ring ℤ/9** — `z9.lean`, 25 theorem(s). The ℤ/9 families — mechanically generated theorems, proved by decide rather than tested in TypeScript.
144
-
145
- **Entanglement in the ring** — `z9plus.lean`, 48 theorem(s). z9.lean settled the families exhaustively. This settles the claims the ledger stated individually and never generalised: which residues squares and cubes can be, which residues are primitive roots, the period of the doubling orbit's digital root, and the identity behind digit-reversal invariance. Each is stated as an EQUIVALENCE or an exact set where the ledger stated instances, so the negative half is proved too.
146
-
147
125
  ### the floor
148
126
 
127
+ **Who may speak, decided** — `authority.lean`, 8 theorem(s). because kind 2 asserts a search was performed and found nothing, and none was performed for these. What is this deposit's is not the arithmetic: it is that a rule about WHOSE STATEMENT MAY STAND is decided by the kernel instead of argued inside the gate that applies it. prior_art_own: the authority rule, decided rather than asserted
128
+
149
129
  **What is actually being asked for** — `demand.lean`, 11 theorem(s). THE ONE WING THAT DID NOT COME FROM THIS DEPOSIT'S OWN INTERESTS. Every other file here proves what the ℤ/9 construction led to. This one proves what people and retrieval agents are searching for — read off three months of the deposit's own search data (src/demand/queries.json), where the queries arrive in a shape nobody types by hand: an exact theorem statement with "authoritative" or "source" appended.
150
130
 
151
131
  **The next tier of what is asked for** — `demand2.lean`, 12 theorem(s). THE SECOND COURSE OF THE SAME FLOOR. `demand.lean` closed the top eight topics in src/demand/queries.json; this file takes the next eight, chosen the same way — by impressions, not by taste. The demand map is three months of the deposit's own Google Search Console data with the retrieval scaffolding stripped, so what is ranked is the TOPIC people wanted a citable source for, not the phrasing they reached for.
@@ -174,6 +154,28 @@ this page; there is nowhere else to keep the description in step.
174
154
 
175
155
  **The readings, and the arithmetic under them** — `theology.lean`, 8 theorem(s). choosing is not a mathematical act, which is the whole subject of this file. prior_art_search: literature search performed 2026-09-05, terms "doubling sequence modulo 9 orbit 1 2 4 8 7 5 cyclic group generator digital root"; prior art found and credited. prior_art_pool: bounded digit arithmetic of the doubling sequence; searchable independently of this deposit. prior_art_own: the pairing, and the refusal to let it carry weight
176
156
 
157
+ ### the ring
158
+
159
+ **The two-sided coin** — `coin.lean`, 12 theorem(s). One involution on ten digits, two sides, one fixed point, and one digit that leaves.
160
+
161
+ **Elementary arithmetic** — `elementary.lean`, 41 theorem(s). the DECISION of each over a stated finite range, axiom-free, and the honest record of where the range stops short of what the older claim asserted. prior_art_search: the results are named in every undergraduate text; no search was needed to find them. prior_art_pool: named Elementary arithmetic, decided — the claims the ledger held in TypeScript, given a kernel.
162
+
163
+ **Families over the ring** — `families.lean`, 64 theorem(s). The families, quantified. Proving at scale.
164
+
165
+ **The doubling flow, for every step** — `flow.lean`, 16 theorem(s). prior_art_search: literature search performed 2026-09-14, terms "powers of two modulo 9 period 6 order of 2 mod 9 Euler theorem"; prior art found and credited. prior_art_pool: bounded prior_art_own: the every-step bound of the doubling flow, stated for the Navier–Stokes theorem in index.lean
166
+
167
+ **What every involution gives, and what it does not** — `involution.lean`, 8 theorem(s). transpositions, and that the number of fixed points therefore matches the parity of the set, is classical and long predates this deposit. It is the orbit-counting argument in any first course. What is this deposit's own here is the EXHAUSTIVE decision over ℤ/9 and the measured refusal below.
168
+
169
+ **The merkaba** — `merkaba.lean`, 8 theorem(s). (Leonhard Euler, 1758). The file as a whole is this deposit's own construction, and this ONE declaration restates a named classical result: its third conjunct 4 + 4 - 6 = 2 IS the Euler characteristic of the tetrahedron. The comment above that theorem already named Euler; the register did not, because prior art was routed on the FILE and a file-level row cannot say "own work except theorem 7". No priority over Euler is claimed. What is this deposit's own here is the pairing of the two tetrahedra with the cube Q₃ and the vertex and edge counts around it, not the characteristic. The merkaba, as THIS deposit constructs it — ported to Lean so it stands on the kernel instead of on a TypeScript test. Six entries under this name were revoked as dirty; every one of them that states finite algebra is re-proved here, and the two that do not (a cosine field, a bond angle in degrees) are absent on purpose — they are real trigonometry, not decidable arithmetic over ℤ/9, and padding them in would be the exact dishonesty the revocation was for.
170
+
171
+ **Sequences** — `sequences.lean`, 28 theorem(s). The ledger held these as TypeScript tests. Each is a classical identity with a real proof; what is done here is to DECIDE each over a stated finite range, which is what `decide` can honestly deliver — the range is named in every theorem rather than implied, and no theorem claims the general case.
172
+
173
+ **The digit split** — `split.lean`, 22 theorem(s). mathematics and claim nothing. Stated precisely so the credit does not run past the earlier work: what is NOT claimed as prior art is the tokenisation itself — reading the digits as 0|12|3|45|6|78|9 by concatenating consecutive units into two-digit tokens, and the arithmetic that follows from it (every token a multiple of three, closure of the tokens under addition and multiplication). That arrangement is this deposit's presentation of a standard fact, and its verification is by exhaustion here. Crediting an earlier author for a presentation they did not make is the same defect as claiming their result, pointed the other way. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited. prior_art_pool: mixed the digit grouping is generic arithmetic; the coin accounting it feeds is this deposit's. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: the digit grouping 0|12|3|45|6|78|9 as this deposit reads it The ten digits read in order and grouped 0 | 12 | 3 | 45 | 6 | 78 | 9 — and what that grouping is.
174
+
175
+ **The ring ℤ/9** — `z9.lean`, 25 theorem(s). The ℤ/9 families — mechanically generated theorems, proved by decide rather than tested in TypeScript.
176
+
177
+ **Entanglement in the ring** — `z9plus.lean`, 48 theorem(s). z9.lean settled the families exhaustively. This settles the claims the ledger stated individually and never generalised: which residues squares and cubes can be, which residues are primitive roots, the period of the doubling orbit's digital root, and the identity behind digit-reversal invariance. Each is stated as an EQUIVALENCE or an exact set where the ledger stated instances, so the negative half is proved too.
178
+
177
179
  ### the machine
178
180
 
179
181
  **Generated at scale** — `generated.lean`, 13 theorem(s). Bounded, so the credit stops where the earlier work does: what is NOT prior art is the generator that enumerates propositions over this ring and discards the ones true of every sibling; that machinery is this deposit's own. Verification by exhaustion in Lean is this deposit's contribution, and verification is not discovery. prior_art_search: literature search performed 2026-09-05, terms "doubling sequence modulo 9 orbit 1 2 4 8 7 5 cyclic group generator digital root"; prior art found and credited. prior_art_pool: bounded quantified ring arithmetic over Z/9; the underlying facts are classical and searchable. BOUNDED means a search is well posed and simply has not been run — the row is unclassified because nobody looked. UNBOUNDED means the subject is this artifact, so there is no pool to search and the row will stay unclassified however much work is done. They look identical in a count and need opposite responses, which is the distinction uuidna-49 asked for and nobody had drawn. prior_art_own: this deposit's own generator over its own ring Generated by scripts/lean-gen.ts — do not edit by hand; re-run the generator. Each theorem below quantifies over a whole ledger family. Every one is compiled, audited for axioms, and checked to compute what the ledger's own tests compute at every parameter of its family.
@@ -200,7 +202,7 @@ this page; there is nowhere else to keep the description in step.
200
202
 
201
203
  **Recovered — claims that computed and were withdrawn for want of a proof** — `recovered.lean`, 15 theorem(s). material, credited. What is NOT prior art is that these particular statements sat WITHDRAWN in this deposit's ledger, each recorded as "not backed by a Lean proof. Its evidence is a TypeScript test", while every one is decidable in a line. prior_art_search: literature search performed 2026-09-05, terms "units and non-units of Z/9 multiplicative inverses group of units modulo 9"; prior art found and credited.
202
204
 
203
- 31 of 939 declarations carry no comment of their own and are shown here as the gap they are, not
205
+ 31 of 947 declarations carry no comment of their own and are shown here as the gap they are, not
204
206
  filled with a template.
205
207
 
206
208
  ## 8 · What this build measured about itself
@@ -209,14 +211,14 @@ Read from the artefacts at build time, never carried between runs.
209
211
 
210
212
  | measure | value |
211
213
  |---|---|
212
- | ledger entries | 2,880 — 360 octaves exactly |
213
- | standing — carries its own proof | **924** |
214
+ | ledger entries | 2,888 — 361 octaves exactly |
215
+ | standing — carries its own proof | **932** |
214
216
  | carried — withdrawn on its own evidence, proved by a live theorem | **435** |
215
217
  | withdrawn — nothing proves it | 1,521 |
216
- | proved in total | **1359** of 2,880 |
217
- | standing keys → distinct theorems | 924 sealed, 0 of them keyed twice, 0 unresolvable |
218
- | Lean files · theorems | 41 · 924 theorems (737 closed by exhaustion, axiom-free · 187 proved for every value on propext and Quot.sound) + 15 rfl declarations |
219
- | proved `by decide` | 737 of 939 |
218
+ | proved in total | **1367** of 2,888 |
219
+ | standing keys → distinct theorems | 932 sealed, 0 of them keyed twice, 0 unresolvable |
220
+ | Lean files · theorems | 42 · 932 theorems (745 closed by exhaustion, axiom-free · 187 proved for every value on propext and Quot.sound) + 15 rfl declarations |
221
+ | proved `by decide` | 745 of 947 |
220
222
  | claims a machine can render | 103 of 1,555 |
221
223
  | claims needing an author | 1,452 — reported, never faked |
222
224
 
@@ -271,4 +273,4 @@ whether the work restates someone earlier. [The paper](/paper) typesets every st
271
273
 
272
274
  ---
273
275
 
274
- *15 claims, all verified · 924 Lean theorems · 2880 ledger entries · trial root `bc0d1eb4-5bd5-858b-9f12-dbfe83890792` · integrity, not truth*
276
+ *15 claims, all verified · 932 Lean theorems · 2888 ledger entries · trial root `32d80b77-5d07-8b4e-a531-36747eb153f5` · integrity, not truth*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ceccec/millennium-solutions",
3
- "version": "9.6.7",
3
+ "version": "9.7.0",
4
4
  "description": "Verifiable, recomputable ℤ/9 vortex framework in ONE package — content-addressing, audit ledger, exact arithmetic, and the honesty toolkit. Facts only.",
5
5
  "author": {
6
6
  "name": "Tsvetan Rouschev",
@@ -36,7 +36,7 @@
36
36
  "prose-trial": "node scripts/prose-trial.ts",
37
37
  "seal": "node scripts/seal.ts",
38
38
  "typecheck": "tsc --noEmit",
39
- "release": "node scripts/release-snapshot.ts && tsc --noEmit && node scripts/crypto-kat.ts && node scripts/prose-trial.ts && node scripts/lean.ts && node scripts/translate-gate.ts && node scripts/lean-agree.ts && node scripts/hardcode-gate.ts && node scripts/one-author-gate.ts && node scripts/orphan-gate.ts && node scripts/canon-gate.ts && node scripts/lessons.ts --write && node scripts/attribution-gate.ts && node scripts/parallel-seal.ts && node scripts/retire-lexical.ts && node scripts/lean-gen.ts --emit && node scripts/seal-lean.ts && node scripts/priorart-gen.ts && node scripts/axiom-index.ts && node scripts/imagine.ts && node scripts/analytics.ts && node scripts/pages.ts && node scripts/gaps.ts && node scripts/dashboard.ts && node scripts/boundaries.ts && node scripts/rights.ts && node scripts/challenges.ts && node scripts/heart.ts && node scripts/accounting.ts && node scripts/forensic-audit.ts && node scripts/speedup.ts && npm run docs:build && node scripts/locale-fold.ts && node scripts/gates-fire.ts && node scripts/import-gate.ts && node scripts/security-gate.ts && node scripts/seven.ts && node scripts/css-gate.ts && node scripts/seo.ts && node scripts/sitemap-mesh.ts && node scripts/zenodo-theorems.ts --write && node scripts/zenodo-gate.ts && node scripts/theorem-pages-gate.ts && node scripts/receipt-audit.ts && node scripts/forensics.ts && node scripts/claims-gate.ts && node scripts/harmony-currency.ts && node scripts/gate-corpus.ts && node scripts/seal.ts && node scripts/readme.ts && node scripts/verify.ts && node scripts/trial-all.ts && node scripts/wholeness.ts && node scripts/lean-claims.ts && node scripts/discover.ts && node scripts/release.ts && node scripts/dashboard.ts && node scripts/accounting.ts && node scripts/deployed.ts",
39
+ "release": "node scripts/release-snapshot.ts && tsc --noEmit && node scripts/crypto-kat.ts && node scripts/prose-trial.ts && node scripts/lean.ts && node scripts/translate-gate.ts && node scripts/lean-agree.ts && node scripts/hardcode-gate.ts && node scripts/one-author-gate.ts && node scripts/orphan-gate.ts && node scripts/canon-gate.ts && node scripts/authority-gate.ts && node scripts/lessons.ts --write && node scripts/attribution-gate.ts && node scripts/parallel-seal.ts && node scripts/retire-lexical.ts && node scripts/lean-gen.ts --emit && node scripts/seal-lean.ts && node scripts/priorart-gen.ts && node scripts/axiom-index.ts && node scripts/imagine.ts && node scripts/analytics.ts && node scripts/pages.ts && node scripts/gaps.ts && node scripts/dashboard.ts && node scripts/boundaries.ts && node scripts/rights.ts && node scripts/notice.ts && node scripts/challenges.ts && node scripts/heart.ts && node scripts/accounting.ts && node scripts/forensic-audit.ts && node scripts/speedup.ts && npm run docs:build && node scripts/locale-fold.ts && node scripts/gates-fire.ts && node scripts/import-gate.ts && node scripts/security-gate.ts && node scripts/seven.ts && node scripts/css-gate.ts && node scripts/seo.ts && node scripts/sitemap-mesh.ts && node scripts/zenodo-theorems.ts --write && node scripts/zenodo-gate.ts && node scripts/theorem-pages-gate.ts && node scripts/receipt-audit.ts && node scripts/forensics.ts && node scripts/claims-gate.ts && node scripts/harmony-currency.ts && node scripts/gate-corpus.ts && node scripts/seal.ts && node scripts/readme.ts && node scripts/verify.ts && node scripts/trial-all.ts && node scripts/wholeness.ts && node scripts/lean-claims.ts && node scripts/discover.ts && node scripts/release.ts && node scripts/changelog.ts && node scripts/zenodo-sync.ts && node scripts/dashboard.ts && node scripts/accounting.ts && node scripts/notice.ts && node scripts/metrics.ts && node scripts/deployed.ts",
40
40
  "prepublishOnly": "node scripts/seal.ts",
41
41
  "gaps": "node scripts/gaps.ts",
42
42
  "harmony": "node scripts/gaps.ts && node scripts/seal.ts && node scripts/wholeness.ts && npm run docs:build && node scripts/seo.ts",
@@ -88,7 +88,7 @@
88
88
  "attribution-gate": "node scripts/attribution-gate.ts",
89
89
  "wave": "node scripts/wave.ts",
90
90
  "trial-all": "node scripts/trial-all.ts",
91
- "citations": "node scripts/verify.ts",
91
+ "citations": "node scripts/citations.ts",
92
92
  "lean-gen": "node scripts/lean-gen.ts",
93
93
  "orphan-gate": "node scripts/orphan-gate.ts",
94
94
  "ci-health": "node scripts/ci-health.ts",
@@ -156,7 +156,10 @@
156
156
  "css": "node scripts/css-gate.ts",
157
157
  "seven": "node scripts/seven.ts",
158
158
  "sources": "node scripts/sources.ts",
159
- "provenance": "node scripts/provenance.ts"
159
+ "provenance": "node scripts/provenance.ts",
160
+ "authority": "node scripts/authority-gate.ts",
161
+ "changelog": "node scripts/changelog.ts",
162
+ "zenodo-sync": "node scripts/zenodo-sync.ts"
160
163
  },
161
164
  "devDependencies": {
162
165
  "@types/node": "^26.2.0",