mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-08-13 15:20:34 +00:00
Squash the four overlapping feature branches into a single change set against main, eliminating cross-PR merge conflicts and the duplicated CI-fix scripts. What this brings in (merge order #79 -> #80 -> #81 -> #89): - #79 refactor(infra): shared utilities (4-Infrastructure/lib/*: q16, hashing, jsonl, fraction_utils) + the scripts/math-first/* validators that the math-check CI requires. - #80 feat(lean): Semantics.E8Sidon (1025 lines) -- Eisenstein coefficient identity E4^2 = E8 and the Sidon framework. E4_sq_eq_E8_coeff is fully proved (all Fourier-coefficient extraction machine-checked); the single residual gap is pinned to E4_sq_eq_E8_qExpansion (Mathlib lacks the valence formula / dim M8 = 1). 4 sorries + 1 axiom (e8_additive_completeness), all TODO(lean-port). - #81 refactor(lean): Float-free FixedPoint core (integer-only sqrt/log2/expNeg). E8Sidon.lean kept at #80's final 1025-line version (the #81 intermediate 438-line copy was overridden by merge order). - #89 feat(lean): Semantics.RRC.PolyFactorIdentity -- short-sleeve polynomial detection at the zerocopy limb boundary; now imports Semantics.E8Sidon for sigma3/sigma7/convolutionLHS (single source of truth) instead of inlining them. Conflict resolution: - flake.nix -> canonical rs-surface removal (Garnix shutdown). - scripts/math-first/* -> byte-identical across branches, clean. - .cursorrules / AGENTS.md -> unified; baselines + sorry inventory refreshed. Verification: - lake build (default aggregator): 3573 jobs, 0 errors. - lake build Semantics.RRC.PolyFactorIdentity (E8Sidon + FixedPoint + PolyFactor): 3655 jobs, 0 errors. Witnesses verified (sigma7 4 = 16513, convolutionLHS 6 = 2350). - Python tests: 68/68 pass. Note: the "Workers Builds: researchstack" check is a preexisting external Cloudflare build unrelated to this change (no branch touches 4-Infrastructure/cloudflare/). Build: 3573 jobs (default), 3655 jobs (narrow), 0 errors Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
50 lines
1.5 KiB
Text
50 lines
1.5 KiB
Text
import Semantics.FixedPoint
|
|
import Semantics.FixedPointBoundary
|
|
import Semantics.Bind
|
|
|
|
namespace Semantics.Autobalance
|
|
|
|
open Semantics
|
|
|
|
/--
|
|
NodeState: Represents the health of a research node.
|
|
-/
|
|
structure NodeState where
|
|
ip : String
|
|
recordCount : Nat
|
|
isOnline : Bool
|
|
load : Q16_16
|
|
deriving Repr, BEq
|
|
|
|
/--
|
|
BalanceInvariant: A network is 'Grounded' if the variance in record counts
|
|
is within the prescribed tolerance (10% delta).
|
|
-/
|
|
def isGrounded (nodes : List NodeState) : Bool :=
|
|
let onlineNodes := nodes.filter (·.isOnline)
|
|
if onlineNodes.length < 2 then true
|
|
else
|
|
-- Simple heuristic: if any online node has 0 records while others have many, not grounded.
|
|
let hasEmpty := onlineNodes.any (·.recordCount == 0)
|
|
let hasLoaded := onlineNodes.any (·.recordCount > 100)
|
|
!(hasEmpty && hasLoaded)
|
|
|
|
open Semantics.Q16_16
|
|
|
|
/--
|
|
EquilibriumCost: The cost of an autobalance event (Q16.16).
|
|
Cross-node broadcast is expensive but necessary for full view.
|
|
-/
|
|
def balanceCost (n : NodeState) (_g : Metric) : Semantics.Q16_16 :=
|
|
if n.isOnline then ofFloat 0.5
|
|
else ofFloat 5.0
|
|
|
|
/--
|
|
The Autobalance Bind: Connects the local substrate to the network equilibrium.
|
|
-/
|
|
def balanceBind (localNode : NodeState) (remoteNode : NodeState) (g : Metric) : Bind NodeState NodeState :=
|
|
controlBind localNode remoteNode g (fun n _ _ => balanceCost n g)
|
|
(fun _ => if isGrounded [localNode, remoteNode] then "equilibrium_attained" else "rebalance_required")
|
|
(fun _ => "lawful_sync_witness")
|
|
|
|
end Semantics.Autobalance
|