//! epoch — φ*, J and the syntropy gradient at the root chain's epoch boundary
//! (soft3 `specs/chain-economy.md` §4–§5, tru `specs/rewards.md` §16).
//!
//! The kernel's entry points, each a pure function of one canonical axon list:
//!
//! - [`phi`]: φ* over `A` — `PHI_STEPS` tri-kernel steps from the uniform
//! vector, φ at scale 2^60, syntropy `J`, and the canonical digest
//! preimage ([`Phi::preimage`], hashed chain-side with `D_PHI`);
//! - [`gradient`]: `g_pq = ∂J(φ*(A))/∂A_pq` for every present axon of `A` —
//! one forward and one adjoint solve, `PHI_STEPS` each, both cold;
//! - [`path_gradient`]: the attribution gradient `ḡ = Σ_i w_i g(A(t_i))`
//! along the epoch's straight path, `p.quadrature` Gauss–Legendre nodes
//! (4 by default); the chain pays `a(c) = Δs(c)·σ(c)·ḡ_pq`;
//! - [`net_axons`]: the chain's §4.2 net weight from genesis weight and
//! valence-signed positions (a reference for the chain's own code and the
//! tests).
//!
//! Consensus properties:
//!
//! - order-independent: particles are indexed by ascending id, axons by
//! `from ‖ to`; input order never matters;
//! - deterministic: integer arithmetic only ([`fixed`]), a fixed step count,
//! a cold start; every parallel reduction is an exact integer sum, so
//! results are bit-identical across runs, machines and thread counts;
//! - fast and memory-bounded: CSR over u32 indices relabelled for locality,
//! `K + 1` sparse passes per step, `O(n + nnz)` memory, no eigen-solve.
//!
//! Operator choice. Heat and springs run on the random-walk Laplacian
//! `I − A_sym·D⁻¹` (tri-kernel §1.2 admits the normalised form) rather
//! than the combinatorial `D − A`. The combinatorial heat kernel costs
//! `O(τ·λ_max)` sparse passes and `λ_max` grows with the largest weighted
//! degree — 36,026 on bostrom with uniform stake, ~72,000 passes per step.
//! The normalised operators are scale-free (one whale's stake does not rescale
//! everyone's heat time), mass- and positivity-preserving, so `H_τ` is a
//! nonnegative Taylor polynomial of fixed degree `K` (9 at τ = 1, ε = 10⁻⁶).
//! The springs reference and the teleport prior are both the stake prior
//! `π = deg/Σdeg`, so a particle without stake carries exactly zero focus.
//! The legacy combinatorial kernel (`focusing::compute_focusing`) stays as the
//! research reference.
pub use ;
pub use ;
use crateFx;
use ;
/// Tri-kernel steps per solve, fixed for consensus (chain-economy §0
/// `PHI_STEPS`). Evidence: tru `audit/epoch-settlement-2026-10.md` — from the
/// uniform start the ℓ1 distance to the converged φ* after 48 steps is below
/// 10⁻⁷ on pussy and bostrom (uniform and power-law stake); with the ground
/// weight it is at the rounding floor (≈ 10⁻¹⁰).
pub const PHI_STEPS: usize = 48;
/// Domain separator of the φ digest (chain-economy §2, §5.6).
pub const D_PHI: & = b"soft3/chain/phi/v1\0";
/// Epoch-kernel parameters. Defaults: α = 0.15, μ = 1, τ = 1, λ = (0.5, 0.3,
/// 0.2), ε = 10⁻⁶ (sets the heat degree K = 9), `steps = PHI_STEPS`.
/// φ* over one epoch graph, in ascending particle-id order.
/// The φ digest preimage for a raw focus vector (ascending particle order).
/// The gradient at one graph.
/// Run `steps` forward steps from the uniform vector (internal order).
/// φ* of a built graph with an explicit step count (analysis; consensus uses
/// [`solve`]).
/// φ* of a built graph: `p.steps` steps, cold.
/// φ* of an axon list (chain-economy §4.4 solve 1).
/// The gradient on a built graph, indexed like the axon slice it was built
/// from.
/// `g = ∂J(φ*(A))/∂A` for every axon of `A`, aligned with the input slice
/// (chain-economy §5.1 solves 2 and 3, called on `A_mid`).
/// `A_mid = ⌊(A_prev + A_cur)/2⌋` per axon present in either list, ascending
/// (zero-weight midpoints kept, so every changed axon has an entry).
/// A staked position on an axon (chain-economy §3, §4.2).
/// The chain's §4.2 net weight `A_pq = max(0, G_pq + S⁺_pq − S⁻_pq)` per axon,
/// canonical, absent axons (`A = 0`) dropped.
/// Syntropy `J(φ) = Σ φ_i ln(n φ_i)` at scale 2^60 for φ at scale 2^60 over
/// `n` particles (zero entries contribute nothing).
Homonyms
cyb/evy/forks/naga/src/back/hlsl/mod.rs
struct Baz { m: mat3x2, } struct Baz { float2 m_0; float2 m_1; float2 m_2; }; float3x2 GetMatmOnBaz(Baz obj) { return float3x2(obj.m_0, obj.m_1, obj.m_2); }