What ships in the Zeq SDK
One surface for synchronized physics, deployable state machines, and a verifiable compute envelope. Everything on this page is live.
2026-09-04 — ECON v5: one price, credits only, the monthly bond that burns
The economy now has one number and one direction. A compute-hour costs **1.98 × 1.5) on every node, every tier, every rail; GET /api/pricing/tiers
publishes the price block and the tier table. Seats stay 79 / 499 and buy
9.764 / 26.599 / 67.003 / 168.013 hours per cycle, bonded in the wallet for the 30-day
cycle: compute burns the bond first, then bought hours; unused bonded hours expire at cycle
end and the next payment tops the bond up (7 days of grace before the plan mirror falls back
to Free). Coins are only earned (one coin per CPU-hour from the 95% contributors' budget);
the only bridge is coin → hours by burning (POST /api/credits/from-coin, optional bond_tier).
Card checkout bonds the hours on the buyer's home node through the federated fuel_bond event;
crypto buys hours at the same price.
- Removed, not stubbed:
/api/credits/claim,/api/credits/status,/api/credits/convert,/api/credits/conversion,/api/credits/peer/*,/api/tally/credits/claim,/api/tally/promo/*,/api/tier/*,/api/swap/quote,/api/swap/foundation-pot— all 404; the tier-bond, tier-grant, overage, claim and Stripe-grant tables and the promo/burn/conversion columns are dropped (migration 0100). Daily token caps are gone; fuel is the only gate. - New:
POST /api/credits/bond { tier }(bought hours → cycle bond),fuel_bondsledger,cycleinGET /api/tally/credits/:zid,from_bond_plancks/from_fuel_planckson every charge. - Docs: Compute credits is the one truth page; the pricing page, Vault, FAQ, PaaS pages and the MCP descriptor quote the same numbers.
- Mesh = 17 nodes.
machine.zeq.devis the headless Studio machine, shipped and backed up on its own; it is not a node and is not counted.
2026-09-03 — One Zeq CLI, on every node (cli.zeq.dev incorporated)
cli.zeq.dev — Zeq Studio + Zeq Root — is now part of every node's genome, not a
fork. The Studio (write code in the browser, commit with a ZeqProof, deploy to
your own machine; the editor is the console) and the CLI engine it drives are
served at /studio/ and /pulse/cli/ on all 18 mesh nodes, same-origin —
so zeqproof.com/studio/ computes against zeqproof, zeq.me/studio/ against zeq.me.
- Unified codebase. The Aug-14 cli.zeq.dev fork (guide panel,
login,vault,settings,page,mint,endpoints, the Zeq Local on-device plane with its Merkle ledger +ledger anchor, the nativezeqCLI, Zeq Local.tgz) and the framework CLI (generatedsdk-surface.js, 769 endpoints across 11 capability domains, API Explorer) are one tree again.apirenders by domain;exploreropens this node's API Explorer. - New command surface — the current framework.
transparency(truthful fields:treasury_pool,issuer_undistributed,foundation_envelopes,zeqond_nowfrom genesis),coins(ZEQ Coin bearer tokens: balance · conservation · mint-from-balance · split · merge · transfer · export · redeem · height),bi/contribute(Basic Income: status · policy · census · mode · bond · heartbeat),mesh(quorum · peers · self · issuance at a Zeqond · anchor · replication),audit(audit-everything reads of your own machine chain, time-machineat),plan(admin plan show/set). All inhelp, the/slash menu and tab-completion. - Folder access. The developer's machine is reached through Zeq Local
(
/pulse/cli/zeq-local.tgz, Node ≥ 18): the real 7-step pipeline runs on-box with no network, every compute lands in~/.zeq-local/ledger.json, andanchorseals the Merkle root onto your chain on any node (ZEQ_NODE=https://<node>). Studio projects live in ZeqGit (/zeqgit-bridge/*, zeq.dev today). - Service worker cache bumped (
zeq-studio-v15); reload cli.zeq.dev twice if you still see "138 endpoints".
Cross-surface parity: the web CLI, Studio console and native zeq share this one
engine; the Chrome/VS Code extensions and Workbench CLI tab load the same
/pulse/cli/ modules from whichever node they are pointed at.
2026-08-28 — WebMCP + MCP self-description refresh
The node now speaks WebMCP — the W3C navigator.modelContext browser
standard — alongside the server-side HTTP MCP. Every page it serves registers
five tools for the in-browser agent (zeq_pulse, zeq_wallet,
zeq_convert_credits (human-confirmed), zeq_api_catalog, zeq_call), loaded
from /zeq-webmcp.js, running in the visitor's own same-origin session and
never forwarding keys. Feature-detect with "modelContext" in navigator;
@mcp-b/global polyfills older browsers. See MCP server → WebMCP.
GET /api/mcp is bumped to 3.1.0: it now advertises the WebMCP layer in a
webmcp field and describes the current economy under surface.economy —
metered compute billed in compute-hours (1 hour = 1 compute credit = 1 ZEQ Coin,
opt-in and supply-neutral — superseded 2026-09-04 by ECON v5: no credits → coin path exists any more), per-seat annual subscriptions (superseded: monthly cycle bonds at $2.97/h, see the ECON v5 entry above)
(Starter 10h · Builder 40h · Advanced 120h · Architect 400h, a seat = a lifetime
for its version), BYOK-only AI, and federated credit balances. The public
endpoint catalog (GET /api/endpoints) is regenerated to the current surface.
2026-08-10 — MMIO: connect a machine, not a .env
You now bind to the framework by mapping a register page, not reading a
.env. The local zeqd agent (stdlib Python, or a single static Rust
binary) owns a 4 KiB region — ZID, the live 1.287 Hz clock, CREDIT, a
revocable credential handle — seals the key with AES-256-GCM, mlocks it,
and resolves the handle → a short-lived bearer. The SDK's
ZeqReactorClient.connect() is now MMIO-first (the ZEQ_API_KEY env fallback
is deprecated with a warning). Reachable from four surfaces: @zeq/sdk
(ZeqMachine + connect()), the endpoint GET /api/zeq/mmio (public
manifest + live registers) and /api/zeq/mmio/registers (authed ZID), the MCP
tool zeq_mmio, and the CLI zeq mmio. Full reference: MMIO connect
· Zeq on hardware · zeq-mmio.h. Validated
on a real host (mlock=True, AES seal, RAM region, doorbell).
2026-08-10 — ZeqReactor: recursive, sealed simulation loops
ZeqReactor turns ZeqStream from a broadcast into a
feedback loop: the sealed output of one compute plus live environment data
becomes the query for the next — xₙ₊₁ = seal(solver(T(xₙ, uₙ))). Each step is
sealed, hash-linked into the entangled-state chain, carries the R(t)/master/
functional/spectral telemetry, and is reality-gated (a step that fails its ≤0.1%
check can halt the loop). Live now: POST /api/zeq/reactor (transition contract)
/step+/observe(reactive auto-step) +/state+/trajectory(chain-verified) +/telemetry+/next(cross-container long-poll for live subscribe). Any of the 26 solvers can drive one; solvers that take aninitialStatefield become stateful digital twins (verified: a tumour front advancing13.7 → 34.3as its density field carries forward). Plug it into Unity, Simulink, Python or IoT with the client loops in the docs.
2026-08-10 — The core equations, evaluated on every envelope
Every sealed CKO envelope now carries the framework's core equations genuinely
computed on the result, not recorded as strings — see
the envelope equations. The HulyaPulse R(t)=S(t)[1+α·sin(2π·f_H·t)]
is evaluated at the seal's Zeqond phase (was a placeholder); the 7-step protocol is
populated with the honest VERIFY verdict; and for any solver that produces a field,
spectrum or profile, the HULYAS Master Equation (its six terms □ϕ, μ²ϕ, λϕ³, decay, KO42 coupling, T), the Functional Equation E=P_ϕ·Z, and the
Spectral-Topological propagator Ψ=∭K·ϕ are computed on that field. Scalar-only
results leave the field-dependent ones null — never fabricated. ZeqBuckling now also
returns its critical mode shape (filling displacement_field), and ZeqDevice a
potential slice φ(x). All DB-verified across the solver suite.
2026-08-10 — New solver: ZeqBuckling (Euler column buckling)
A structural-stability solver, and a new numerical capability — a generalised
eigenvalue problem. ZeqBuckling
finds the axial load at which a slender column or strut buckles, assembling the
beam-column problem K φ=P·K_g φ from Hermitian beam finite elements and solving
it by a Cholesky reduction + Jacobi diagonalisation. Its reality-check is Euler's
exact P_cr=π²·EI/(K·L)² for the end condition. Verified live (EI=1, L=1):
pinned–pinned 9.8696 (π²), fixed–fixed 39.478 (4π²), fixed–free 2.4674
(π²/4), fixed–pinned 20.19 — all to <0.001%; a coarse mesh honestly seals
observable-differential. That makes 26 solvers — see the
full catalogue. Live on REST, zeq_buckling,
zeq auto / Zeq Math, and the CLI.
2026-08-10 — New solver: ZeqAcoustic (resonator modes)
A new domain — acoustics. ZeqAcoustic
computes the resonant frequencies of a 1-D acoustic resonator (the Helmholtz
eigenproblem −p″=k²p) with open or closed ends — the physics of organ pipes,
wind instruments, exhaust/HVAC ducts and mufflers. It reuses the Sturm-bisection
eigensolver but adds rigid (Neumann) boundaries via a half-cell mass, which
yields the distinct quarter-wave (2n−1)·c/4L spectrum. Verified live (1 m tube,
air): open–open 171.5 Hz, open–closed 85.75 Hz, closed–closed 171.5 Hz — all to
~0.0001% vs the exact closed forms. That makes 25 solvers — see the
full catalogue. Live on REST, zeq_acoustic,
zeq auto / Zeq Math, and the CLI.
2026-08-10 — New solver: ZeqSchrodinger (quantum energy levels)
The suite now reaches its flagship domain — quantum mechanics.
ZeqSchrodinger solves the
time-independent Schrödinger eigenvalue problem Ĥψ=Eψ for the bound-state
energy levels — the spectrum behind atoms, quantum wells/dots, molecular
vibration and the qubit — by a Sturm-sequence bisection of the tridiagonal
Hamiltonian, with the ground state by inverse iteration. Its reality-check is the
EXACT analytic spectrum: the harmonic oscillator ℏω(n+½) and the infinite
square well n²π²ℏ²/2mL². Verified live: harmonic oscillator (6 levels) →
0.006%, square well (5 levels) → 0.001%; a deliberately coarse grid gives
the wrong levels and honestly seals observable-differential. That makes 24
solvers — see the full catalogue. Live on REST,
zeq_schrodinger, zeq auto / Zeq Math, and the CLI.
2026-08-09 — ZeqDevice goes 2-D (device electrostatics)
ZeqDevice now defaults to 2-D device
electrostatics — the potential and field in a semiconductor cross-section under
an electrode (∇²φ=0), solved matrix-free by a Jacobi-preconditioned conjugate
gradient and checked against the exact sinh Fourier mode. The reported peak
|E| is what sets breakdown in a MOSFET / HEMT / diode. Verified live: default
80×60 → 0.0039% vs exact (CG residual 6·10⁻¹¹), reproducible bit-for-bit, and
an absurd grid clamps and still seals. The original 1-D PN junction (built-in
voltage V_bi=V_T·ln(NaNd/n_i²)) is still there under dim:1 (or a doping
param). Live on REST, zeq_device, zeq auto / Zeq Math, and the CLI.
2026-08-09 — New solver: ZeqTumor (Fisher–KPP growth front)
A growth-front domain — oncology / invasion biology. ZeqTumor
solves the Fisher–KPP equation for a population/tumour/gene that grows and
spreads as a travelling front. Its seal is a physical invariant — the density
must stay in [0,1], held to machine precision by a stable scheme and violated
catastrophically past the CFL limit (so an unstable run mints nothing). And the
front advances at the exact Ablowitz–Zeppetella speed c = 5√(rD/6),
verified live to ~0.25%. Live on REST, zeq_tumor, zeq auto / Zeq Math, and
the CLI.
2026-08-09 — New solver: ZeqLotka (predator–prey / ecosystem dynamics)
Another real-world domain — population ecology. ZeqLotka
solves the Lotka–Volterra predator–prey system behind fisheries, pest control
and ecosystem-collapse forecasting. Its reality check is the conserved first
integral H: the default RK4 holds it to ~10⁻⁹ (verified live, stable
boom-bust cycle), while forward-Euler drifts ~4% and spirals the populations to
a false extinction — and, being past 0.1%, that run does not seal. A wrong
integrator gives a wrong ecological prediction, and the seal gate catches it.
Live on REST, zeq_lotka, zeq auto / Zeq Math, and the CLI.
2026-08-09 — ZeqFracture: the crack's geometry, not just its tip
ZeqFracture now returns the crack
path — crackPath, a [x, y] polyline tracing the broken-bond front across
the specimen, with crackLengthAlongPath and maxDeflection from the
centre-line. Verified live: below critical it's just the seeded notch; above it,
a full-span crack (length 43.0, deflection 0.074 — a clean straight mode-I
crack). Deterministic.
2026-08-09 — New solver: ZeqKalman (optimal state estimation)
A whole new domain — control / estimation. ZeqKalman
is the Kalman filter: track a moving target from noisy position measurements,
the estimator behind GPS, tracking, robotics, navigation and sensor fusion. It
seals on a real, verifiable property — the error covariance converges to the
steady-state Riccati/DARE solution (verified live to ~10⁻¹⁴) — and reports
its optimality (RMSE → the minimum-variance bound √P∞), innovation
whiteness, and that the Joseph-form update keeps the covariance
positive-definite (a naive update diverges — the life-or-death). Deterministic.
Live on REST, zeq_kalman, zeq auto / Zeq Math, and the CLI.
2026-08-09 — ZeqWave goes 2-D (a membrane, energy exact to 1e-13)
ZeqWave now solves the 2-D membrane
wave ∂²u/∂t² = c²(∂²u/∂x² + ∂²u/∂y²) by leapfrog, by default. The reality
check is exactly-conserved discrete energy — verified live at drift ~10⁻¹³ —
and the reported standing-mode frequency matches ω = cπ√(kx²/Lx²+ky²/Ly²) to
the digit. The life-or-death is the 2-D Courant C = c·dt·√(1/dx²+1/dy²) ≤ 1:
verified live, C=0.9 conserves and C=1.05 explodes. 1-D Maxwell FDTD stays
on mode:"maxwell", the 1-D scalar wave on dim:1. Live on REST, zeq_wave,
zeq auto / Zeq Math, and the CLI.
2026-08-09 — ZeqHeat goes 2-D (ADI, unconditionally stable)
ZeqHeat now solves diffusion on a 2-D
grid by default — ∂T/∂t = α(∂²T/∂x² + ∂²T/∂y²) — checked against the exact
2-D Fourier-mode decay. The life-or-death sharpens in 2-D: explicit FTCS
blows up past the CFL limit r = α·dt·(1/dx² + 1/dy²) = ½, while the new
implicit ADI (Peaceman–Rachford, two Thomas sweeps a step) is
unconditionally stable — verified live at r=5, 10× the explicit limit, to
0.05%. The 1-D bar is still there via dim:1. Live on REST, zeq_heat,
zeq auto / Zeq Math, and the CLI.
2026-08-09 — Two solvers go 2-D: ZeqFracture crack propagation + ZeqFEA larger meshes
Both structural pipelines got a real numerical upgrade — same sealed envelope, deeper physics.
- ZeqFracture now propagates a crack in 2-D.
The default is a bond-based peridynamic lattice: a seeded edge notch on a
mode-I SENT specimen, loaded quasi-statically, bonds breaking irreversibly on
true finite stretch and cascaded so the crack tip advances. Below a
critical far-field strain the notch holds; above it the crack runs across the
whole specimen (
propagated,spannedDomain,criticalStrain,crackTipX). The 1-D cohesive bar is still there viamode:"bar". Deterministic; sealed on the relaxed equilibrium residual. - ZeqFEA is now matrix-free, so the mesh can be large.
The global stiffness is never assembled — a Jacobi-preconditioned CG applies
the Q4 element stiffness element-by-element, memory O(dof). That lets the mesh
refine until the FEM tip deflection converges to Euler–Bernoulli beam
theory: coarse
24×6is 6% stiff (ratio 0.94), refined120×30lands on it (ratio ~1.00). Response reportselements,dof,deflectionRatio.
Both are live on every surface — REST, the zeq_fracture/zeq_fea MCP tools,
zeq_auto/Zeq Math, and Build's Compute panel.
2026-08-09 — ZeqStream: the seal always travels, keyless pull, and an encrypted line (ZeqSSH)
Three additions to ZeqStream, all compliant with the one rule that a user shapes delivery, never the envelope:
- The seal is unstrippable. Every pull and tick carries
X-Zeq-Sealed,X-Zeq-Proof,X-Zeq-Token,X-Zeq-Zeqond,X-Zeq-Verifyas headers a template cannot touch — so an owner can never edit or hide the seal, and a device can always verify. Every fire still only seals under ≤0.1%. - Keyless pull —
POST /api/zeq/streams/:id/linkmints a signed, expiring URL; a device pullsGET …/:id/pull?sig=…with no API key and no.env. The signature is the credential; the secret lives in ZSC. Tamper →401. - Encrypted line — ZeqSSH —
POST …/:id/secure/openopens an AES-256-GCM channel (the same per-Zeqond HKDF record layer as Zeq-SSL, forward-secret at 1.287 Hz);GET …/:id/secure/pull?session=…returns an encrypted frame whose plaintext is the sealed envelope. Nothing sealed travels in the clear; a leaked session id alone yields ciphertext nobody can open. The 🔓 Keyless link and 🔐 Encrypted line buttons in the stream app generate both.
2026-08-09 — ZeqStream streams a state contract: editable contract, coded output, pull endpoint
ZeqStream now streams a state contract — an
editable definition of what fires — and shapes its output for whatever consumes
it. Two gaps filled: (1) an editable state contract (contract on the stream,
an Edit button in the app); (2) output shaping — outputFormat: json or
template, where the template is a payload you code in your engine's language
(Unity C#, Unreal, Python, Lua, CSV, custom JSON) with safe {{placeholder}}
substitution — no code executed. New pull endpoint GET /api/zeq/streams/:id/latest returns the last fired output in your format with the
right Content-Type: put the stream key in your simulation and pull; the
WebSocket pushes the same rendered payload live. Canonical /api/zeq/streams/*
(legacy /stream/channels/* still work). New blackhole solver — a
semiclassical quantum-particle infall into a Schwarzschild black hole (verified vs
textbook r_s + Hawking T; geodesic energy conserved to ~10⁻¹⁴ %); one-click
Black-hole demo in the app streams it so you watch the particle freeze and
redshift at the horizon.
2026-08-09 — ZeqStream: hosted, ticking solver channels (REST + CLI)
ZeqStream turns any solver into a standing, keyed
endpoint a game/sensor/instrument connects to and ticks. Each tick is one
Zeqond and seals one ZEQ envelope + ZEQOND receipt onto the chain — the same seal
as the solver's own endpoint, but the channel persists (id, own API key, tick
count, head state). POST /api/zeq/stream/channels creates one and mints its key
(shown once); POST …/:id/tick advances it; GET/close round it out. CLI:
zeq stream create|tick|get|list|close; MCP: the zeq_stream tool. New table
zeq_stream_channels (head only — per-tick history lives on the chain).
Real-time + fairness (now live). WebSocket push at wss://…/ws/stream?channel=…
streams each sealed tick live (REST …/tick stays the fallback). An auto-tick
daemon advances channels created with autotick:true on the Zeqond grid — off
by default, and it stops a channel whose owner runs out of credits. The fairness
model: sub-ticks between seals are free local compute (hash-chained into
tickRoot); the seal is the only credit-compute and fires once per
tickIntervalZeqonds — so a fair 24-hour tick (≈111,197 Zeqonds) seals one
proof a day however many Zeqonds passed. Per-sub-step physics is explicitly not
claimed yet (solvers recompute per tick until they gain an incremental step()).
2026-08-09 — ZeqAuto: one frictionless endpoint + categorized operators
Every solver now names the operators it computes with — real catalogue IDs, not just KO42: heat→CHE17 (Fick), flow→FL3 (Navier–Stokes), quant→BLACK_SCHOLES, sat→CS81 (3-SAT), gauge→HEP4 (Yang–Mills), fea→FEA_DISPLACEMENT+BEAM_DEFLECTION, dock→BINDING_AFFINITY, and so on — so the envelope and the observer card name what actually ran (e.g. "applied Fick Diffusion Flux").
ZeqAuto — the frictionless endpoint. POST /api/zeq/auto { query, constants }: send a natural-language query and the parameters, and a
solver registry routes it to the right pipeline (of ~19), runs it, and seals the
same envelope + receipt. No operators or endpoint to choose. zeq_auto MCP tool
and auto CLI verb too. Examples: "simulate a Lennard-Jones liquid" → ZeqEvolve;
"price a call S0=100 K=100 sigma=0.2" → ZeqQuant; "shallow-water tsunami" →
ZeqClimate.
2026-08-09 — three more solvers + honest card labels
Three more domain solvers:
ZeqOpt (nonlinear optimization vs the
known global minimum), ZeqClimate
(2-D shallow-water, mass-conserving), and
ZeqDock (rigid-body molecular docking by
LJ + Coulomb energy minimization). Endpoints /api/zeq/{opt,climate,dock},
zeq_* MCP tools, CLI verbs.
Honest card labels. The observer/envelope card no longer calls every
KO42-only domain solver an "integrated HULYAS master field" — it now reads the
envelope's domain, so ZeqEpi reads "ran an Epidemiology solve", ZeqGauge "a
Lattice Gauge Theory solve", and so on. The genuine master-field integrators
(solve/multibody) still name themselves. The framework MCP tools/list serves
every new tool dynamically, so all MCP surfaces have parity automatically.
2026-08-08 — eight domain solvers (finance, biology, number theory, …)
Eight new industry-mapped pipelines join the Life or Death
section as domain solvers, each checked against a
known or exact result:
ZeqEpi (SIR/SEIR epidemics — population
conserved, Kermack–McKendrick final size),
ZeqQuant (option pricing — Monte-Carlo
verified against Black–Scholes),
ZeqZeta (Riemann zeta zeros on the ½-line,
count verified vs N(T)),
ZeqSAT (DPLL 3-SAT, certified, NP-hard
scaling), ZeqGauge (2-D U(1) lattice
gauge — plaquette vs the exact Bessel result),
ZeqFEA (2-D finite-element cantilever vs
beam theory), ZeqGrid (DC power flow —
Kirchhoff-checked), and ZeqDevice (PN
junction — numeric vs analytic built-in voltage). Endpoints /api/zeq/{epi,quant, zeta,sat,gauge,fea,grid,device}, matching zeq_* MCP tools and CLI verbs.
Honest by design: ZeqSAT/ZeqGauge/ZeqZeta touch P-vs-NP / Yang–Mills / Riemann
— they compute, verify and simulate in those domains; they do not prove the
open problems, and the framework does not claim to.
2026-08-08 — ZeqReact: reaction–diffusion (the biology pipeline)
ZeqReact joins the
Life or Death section: 2-D reaction–diffusion, either
Gray–Scott (Turing morphogenesis — spots/stripes/worms self-organise) or
FitzHugh–Nagumo (excitable media — cardiac/neural travelling & spiral waves).
Reality check: the 2-D diffusion stability limit D·dt/dx² ≤ ¼; over it the
concentrations explode and the run does not seal. It is the first pipeline to fill
the receipt's chemical/biological tier — concentration_field +
reaction_rate_field, added honestly for it. Endpoint /api/zeq/react,
zeq_react MCP tool, react CLI verb. Deterministic. With ZeqReact the ten
Life-or-Death pipelines now fill every tier of the
ZEQOND receipt with real solver output.
2026-08-08 — five more Life-or-Death field solvers
Five new, independent real-physics pipelines join the
Life or Death section — nothing existing changed:
ZeqHeat (diffusion, explicit vs
Crank–Nicolson, the CFL stability limit), ZeqLorenz
(the Lorenz attractor — deterministic chaos with a live Lyapunov exponent and the
exact volume-contraction invariant), ZeqWave
(wave equation + Maxwell Yee FDTD, the Courant limit),
ZeqFlow (incompressible Navier–Stokes,
divergence-free by pressure projection), and
ZeqFracture (peridynamic cohesive
failure — the crack localises at a defect and stress softens to zero). Endpoints
/api/zeq/{heat,lorenz,wave,flow,fracture}, matching zeq_* MCP tools and CLI
verbs, each sealing the same envelope + receipt. Together the nine pipelines fill
every tier of the ZEQOND receipt with real solver
output — ZeqFracture fills the material + boundary tier (stress, strain, damage,
elasticity, traction, contact) nothing else touches. Each gates on its own honest
reality check; a run that fails it does not seal.
2026-08-08 — ZeqAction + the "Life or Death" section
A least-action, high-order symplectic integrator — and a new SDK section for
the real-physics pipelines. ZeqAction integrates a
Hamiltonian trajectory (Kepler orbit, anharmonic oscillator, pendulum) with a
structure-preserving scheme: Störmer-Verlet composed by Yoshida triple-jump to
order 4/6/8, fixed dt, integer time + Kahan-compensated state (the nano-zeqond
grid applied to the integrator). Energy has no secular drift. It also runs
classical RK4 on the same system and returns both, proving the difference:
measured on a Kepler orbit, order-8 symplectic energy drift is ~48,000× smaller
than RK4's and angular momentum is conserved to machine precision, while RK4's
error keeps growing. New endpoint /api/zeq/action, zeq_action MCP tool,
action CLI verb. The new Life or Death section groups the
real-physics pipelines — solve, multibody, ZeqEvolve, ZeqAction — and shows why
the integrator choice decides whether a simulation stays physical. Nothing
existing was replaced.
2026-08-08 — ZeqEvolve: molecular dynamics as a sealed endpoint
A new, independent compute pipeline — nothing existing changed.
ZeqEvolve promotes the browser Nano-Zeqond Evolver
to a real server endpoint: deterministic velocity-Verlet (2nd-order
symplectic) molecular dynamics of a Lennard-Jones system (NM19) with optional
harmonic bonds (NM30), in the NVE ensemble. Energy and momentum are
conserved; the drift |ΔE/E₀|·100 is the ≤0.1% reality check and feeds the same
metric gate as /solve and /multibody — a run that fails to conserve does not
seal. Reachable at /api/zeq/evolve, via the zeq_evolve MCP tool, and the
evolve CLI verb; it seals the same envelope + ZEQOND receipt,
filling four real fields (temperature, internal energy, momentum density, virial
pressure). Deterministic by construction — seeded, so identical inputs reproduce
the exact trajectory and proof. Verified live: crystal/liquid/gas/polymer all
conserve energy to 0.006–0.04%. Next: the least-action high-order integrator,
ZeqAction.
2026-08-08 — the ZEQOND_RECEIPT ships in the payload, on every surface
You now get the receipt back with the answer. The ZEQOND_RECEIPT
— the Zeqond-averaged standard-physics value plus the continuum state fields a
computation actually produced — is returned in the response body of
/api/zeq/compute, /api/zeq/solve and /api/zeq/multibody (fields
zeqond_receipt + zeqond_averaged). Previously it was stored only server-side
for the envelope and detail pages; API callers could not see it. It is now also
in the MCP structuredContent (and text summary) for zeq_compute,
zeq_solve and zeq_multibody, printed on the CLI result card, and passed
straight through by the Python SDK. Same object everywhere — the endpoint,
the certificate and the record agree. Honest as ever: a field appears only when
the compute produced it; an ambiguous unit (J, bare m) carries none rather
than mislabel. New reference page: The ZEQOND_RECEIPT.
2026-08-08 — RK4 is integrated, not lesser · the ZEQOND receipt · the certificate
Integrated is not lesser than solved. A result from zeq_solve / zeq_multibody
(RK4 integration of the HULYAS master field) is first-class. It passes the
IDENTICAL ≤0.1% tolerance gate as any closed-form value — if the tensioner is not
satisfied inside 0.1% the route returns no value at all (a 422, nothing sealed).
The method differs; the tolerance does not. Envelopes and the model now say
"integrated rather than solved in closed form, verified to the same tolerance
either way" instead of framing it as a deficiency, and the observer/envelope no
longer mislabel an RK4 compute as an idle "frame tick".
Determinism, precisely. Identical operators + inputs yield an identical result, bit-for-bit (e.g. KO42·NM21 gravity → 8670.9391 N, every time). Each envelope stamps that result at its own Zeqond, so re-running mints a fresh envelope with the same result and a new timestamp — the proof binds the result to when it was computed. Verified across a 100+ experiment battery: every one sealed, verified, KO42-first, ≤0.1%.
The ZEQOND receipt. Every envelope now carries a receipt: the pulse (1.287 Hz), the Zeqond (0.777000777 s), an HMAC verification, the Zeqond-averaged standard-physics value (R(t) averaged over one Zeqond recovers S(t)), and the continuum state fields the experiment ACTUALLY computed — mapped from the result's own unit (Pa → pressure, m/s → velocity, V → potential, T → magnetic B, kg·m/s → momentum, K → temperature …). Honest by construction: ambiguous units (a bare J or m) map to nothing rather than mislabel, and no field is ever fabricated — "the receipt attests only what was computed".
The envelope is a certificate; the state record is its ledger entry. The envelope page reads as a proof-of-compute certificate (value, funding split, minted date, name/note, proof, receipt); the tick-detail page is that same computation's record on the entangled state — decluttered so it shows only what the row actually carries, with the raw JSON tucked behind a toggle. The offline verifier now embeds all 14 node signing keys, so any domain's envelope verifies its Ed25519 signature with no network.
2026-08-08 — Envelopes: individual send stays, and folders arrive
Two things. First, sending an envelope is not only bulk: you can send one (the per-coin Send), send a hand-picked set (tick them → Send selected), or send many at random by count. The bulk field never replaced the individual move — all three live side by side.
Second, a wallet of tens of thousands is now organisable into folders, the
way computes and contracts already fold. Every envelope carries a user-editable
folder; name one and the coin lives there. Folder chips across the top
filter the list (All / Unfiled / each folder with its count), each row has a
📁 Folder action, and the multi-select bar can Move to folder a whole
ticked set — soulbound proofs included, because filing is organisation, not a
transfer. New endpoints: GET /api/tally/envelopes/:zid/folders (folders +
counts) and POST /api/tally/envelopes/folder ({ folder, token_ids | count, from_folder?, q? }, no cap); the list endpoint takes ?folder=. Backed by a
new indexed tally_tokens.folder column.
2026-08-07 — Envelopes gets its own home: a standalone bearer-coin manager
Every compute mints a unique ZEQ envelope — a proof-of-compute bearer coin
you can save as a .ZEQ file, an encrypted QR / NFC tag, hide inside a
photo, send to a Zeq ID, or redeem. That capability already existed,
but it lived buried in the credits wallet's home list and was capped at showing
a handful of coins. On a machine like the Foundation, with 32,000+
envelopes, it was unusable.
It now has its own page: /vault/envelopes/. A standalone manager in the
same DNA as the rest of the surface — searchable and paginated, so any number of
envelopes is browsable (search by token id, zeqond, or hash). Every bearer
action is the exact, already-proven code, lifted into a shared module
(/js/zeq-bearer.js) so the wallet and the manager run the same thing.
Reachable from three places: an Envelopes tab in the Vault, a link in the credits wallet, and — because the two are combined — every envelope id in the entangled-state observer now links straight to it, as does the "move this coin" action on each envelope's proof page.
Honest about what can move: free-funded envelopes are soulbound (their value backs the Foundation), so they show as such with no bearer action — only paid-funded coins you actually own offer save / QR / send.
Backend. GET /api/tally/envelopes/:zid no longer caps results — it takes
?limit, ?offset, and ?q (token-id search) and returns a real total, so
the manager pages through the full set instead of the newest handful.
Send many at once. A new POST /api/tally/envelopes/transfer-bulk { to, count } moves count of your movable coins — picked at random — to a Zeq ID in
one request. There is no cap: "send 20,000" is one click, not 20,000
requests. It reassigns them in a single guarded statement (FOR UPDATE SKIP LOCKED), so only movable coins move and soulbound proofs are never touched;
value is conserved. Pass token_ids:[…] instead of count to move an exact
set. The manager has a "Send many at once" field for it.
2026-08-04 — /tally/tally.js is gone, and two auth tests now watch the right file
GET /tally/tally.js returned 54 KB with a 200. No page loaded it.
/tally/ is a redirect stub to /vault/credits/, and the script the credits
page actually runs is /vault/credits/tally.js. The retired file was the old
in-wallet block explorer and PoHC demo — removed from the product on purpose
because, as the credits page records in its own markup, "it read dead endpoints
and carried unverifiable claims" — but left on disk and still served.
It is deleted. If you had that URL bookmarked it now returns 404; the live
script is /vault/credits/tally.js.
The part worth reading. Two tests were asserting the browser auth contract — that a user with a valid cookie but cleared localStorage must not be shown a false "Sign in" gate — against that dead file. They were green and guarding nothing. Checked before repointing them: the live script satisfies every one of those assertions too, so no user was ever affected. That was luck, not coverage.
Both tests now resolve the script path from the <script src> the credits page
declares, so they follow the live file or fail loudly, and a negative control
proves the resolver cannot silently succeed when the tag is absent.