From 5572fb1b95fe16cbc0145c94590833c4fe50af51 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:58:10 +0200 Subject: [PATCH 01/61] Formalize JAM corrective vs maintenance reproduction --- formalization/JamRecurrentMaintenance.lean | 156 +++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 formalization/JamRecurrentMaintenance.lean diff --git a/formalization/JamRecurrentMaintenance.lean b/formalization/JamRecurrentMaintenance.lean new file mode 100644 index 0000000..c926985 --- /dev/null +++ b/formalization/JamRecurrentMaintenance.lean @@ -0,0 +1,156 @@ +import JamEffortObservability + +namespace DistributedCommons + +/-! +# JAM: corrective reproduction versus recurrent maintenance + +This module separates two timescales that are easy to conflate. + +* `jamFaultCorrectionReproduction` is the within-audit reproduction mean of + independently correct checking under the correlated-honest-failure + extension of ELVES. +* `jamMaintenanceLoopGain` and `jamMaintenanceDeficitProduct` describe a + slower three-process return loop that maintains the capacity to keep doing + useful correction across audits. + +The three slow processes are intentionally abstract: + + C = independently corrective capacity + O = capacity to observe/attribute genuine maintenance + R = resources returned to maintain future corrective capacity + +with the canonical directed loop + + C -> O -> R -> C. + +The product threshold used here is the finite three-cycle replacement +condition. The underlying nonnegative-matrix / reproduction-number mathematics +is classical; the contribution of this module is the explicit separation from +the ELVES event-level correction threshold and the machine-checked independence +witnesses below. +-/ + +/-- Fault-specific within-audit corrective reproduction. -/ +noncomputable def jamFaultCorrectionReproduction + (F gamma f : ℝ) : ℝ := + F * (1 - gamma) * (1 - f) + +/-- Autonomous maintenance deficit of one slow maintenance process. -/ +noncomputable def jamMaintenanceDeficit (r : ℝ) : ℝ := + 1 - r + +/-- Product of the three autonomous maintenance deficits. -/ +noncomputable def jamMaintenanceDeficitProduct + (rC rO rR : ℝ) : ℝ := + jamMaintenanceDeficit rC * + jamMaintenanceDeficit rO * + jamMaintenanceDeficit rR + +/-- Closed-loop gain of the C -> O -> R -> C maintenance cycle. -/ +noncomputable def jamMaintenanceLoopGain + (kCO kOR kRC : ℝ) : ℝ := + kCO * kOR * kRC + +/-- The canonical slow maintenance loop meets replacement when its closed-loop +product covers the product of its autonomous deficits. -/ +def jamMaintenanceViable + (rC rO rR kCO kOR kRC : ℝ) : Prop := + jamMaintenanceDeficitProduct rC rO rR ≤ + jamMaintenanceLoopGain kCO kOR kRC + +/-- Event-level correction is supercritical exactly when its reproduction mean +exceeds one. This is kept as a named predicate so the two timescales can be +combined without identifying them. -/ +def jamCorrectionSupercritical (F gamma f : ℝ) : Prop := + 1 < jamFaultCorrectionReproduction F gamma f + +/-- Exact substitution of the independently-correct share into the ELVES-style +fault-specific reproduction mean. -/ +theorem jamFaultCorrectionReproduction_eq + (F gamma f : ℝ) : + jamFaultCorrectionReproduction F gamma f = + F * (1 - gamma) * (1 - f) := by + rfl + +/-- The slow maintenance threshold depends only on the maintenance-loop +parameters, not on the current ELVES fault-specific reproduction parameters. -/ +theorem jamMaintenanceViable_iff + (rC rO rR kCO kOR kRC : ℝ) : + jamMaintenanceViable rC rO rR kCO kOR kRC ↔ + (1 - rC) * (1 - rO) * (1 - rR) ≤ kCO * kOR * kRC := by + rfl + +/-- Separation witness 1: current correction can be strongly supercritical +while the slow maintenance return loop is subcritical. + +Here the audit reproduction mean is 2, but three zero-retention maintenance +processes coupled by gains 1/2 have loop gain 1/8 against deficit product 1. -/ +theorem correction_supercritical_maintenance_subcritical_witness : + jamCorrectionSupercritical 2 0 0 ∧ + ¬ jamMaintenanceViable 0 0 0 (1 / 2) (1 / 2) (1 / 2) := by + constructor + · norm_num [jamCorrectionSupercritical, jamFaultCorrectionReproduction] + · norm_num [jamMaintenanceViable, jamMaintenanceDeficitProduct, + jamMaintenanceDeficit, jamMaintenanceLoopGain] + +/-- Separation witness 2: a strongly viable slow maintenance loop does not +imply fault-specific correction is supercritical for the current audit. + +Here the slow loop has unit gain against deficit product 1/8, while a fault +shared by 3/4 of otherwise-honest validators leaves the event-level correction +mean at 1/2 for F=2. -/ +theorem maintenance_viable_correction_subcritical_witness : + jamMaintenanceViable (1 / 2) (1 / 2) (1 / 2) 1 1 1 ∧ + ¬ jamCorrectionSupercritical 2 0 (3 / 4) := by + constructor + · norm_num [jamMaintenanceViable, jamMaintenanceDeficitProduct, + jamMaintenanceDeficit, jamMaintenanceLoopGain] + · norm_num [jamCorrectionSupercritical, jamFaultCorrectionReproduction] + +/-- Therefore within-audit corrective reproduction does not logically imply +cross-audit maintenance viability in this declared two-timescale model. -/ +theorem correction_supercritical_does_not_imply_maintenance_viable : + ¬ (∀ F gamma f rC rO rR kCO kOR kRC : ℝ, + jamCorrectionSupercritical F gamma f → + jamMaintenanceViable rC rO rR kCO kOR kRC) := by + intro h + have hbad := h 2 0 0 0 0 0 (1 / 2) (1 / 2) (1 / 2) + correction_supercritical_maintenance_subcritical_witness.1 + exact correction_supercritical_maintenance_subcritical_witness.2 hbad + +/-- Conversely, a viable slow maintenance loop does not logically imply that +independent correction for a particular current fault is supercritical. -/ +theorem maintenance_viable_does_not_imply_correction_supercritical : + ¬ (∀ F gamma f rC rO rR kCO kOR kRC : ℝ, + jamMaintenanceViable rC rO rR kCO kOR kRC → + jamCorrectionSupercritical F gamma f) := by + intro h + have hbad := h 2 0 (3 / 4) (1 / 2) (1 / 2) (1 / 2) 1 1 1 + maintenance_viable_correction_subcritical_witness.1 + exact maintenance_viable_correction_subcritical_witness.2 hbad + +/-- The two predicates therefore generate four logically distinct phase cells; +this witness inhabits the jointly viable cell. -/ +theorem both_reproduction_conditions_can_hold : + jamCorrectionSupercritical 2 0 0 ∧ + jamMaintenanceViable (1 / 2) (1 / 2) (1 / 2) 1 1 1 := by + constructor + · exact correction_supercritical_maintenance_subcritical_witness.1 + · exact maintenance_viable_correction_subcritical_witness.1 + +/-- This witness inhabits the jointly non-viable cell. -/ +theorem neither_reproduction_condition_need_hold : + ¬ jamCorrectionSupercritical 2 0 (3 / 4) ∧ + ¬ jamMaintenanceViable 0 0 0 (1 / 2) (1 / 2) (1 / 2) := by + exact ⟨maintenance_viable_correction_subcritical_witness.2, + correction_supercritical_maintenance_subcritical_witness.2⟩ + +#print axioms correction_supercritical_maintenance_subcritical_witness +#print axioms maintenance_viable_correction_subcritical_witness +#print axioms correction_supercritical_does_not_imply_maintenance_viable +#print axioms maintenance_viable_does_not_imply_correction_supercritical +#print axioms both_reproduction_conditions_can_hold +#print axioms neither_reproduction_condition_need_hold + +end DistributedCommons From 3658a9ec11dd90cf796ef0f408e6d28995a62983 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:58:18 +0200 Subject: [PATCH 02/61] Add recurrent JAM maintenance module to Lean build --- formalization/lakefile.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/formalization/lakefile.toml b/formalization/lakefile.toml index b7b98e9..08d6c21 100644 --- a/formalization/lakefile.toml +++ b/formalization/lakefile.toml @@ -1,6 +1,6 @@ name = "distributed_commons_control" version = "0.1.0" -defaultTargets = ["DistributedCommons", "RootSafety", "DynamicSafety", "EndogenousFloor", "ClosedLoopStability", "ViabilityContribution", "SelectedViability", "CorrectiveCapacity", "StateDependentContribution", "VectorContribution", "BehavioralMaintenance", "JamMaintenance", "JamBehaviorSelection", "JamEffortObservability", "FungalFlowMaintenance", "ViabilityOught"] +defaultTargets = ["DistributedCommons", "RootSafety", "DynamicSafety", "EndogenousFloor", "ClosedLoopStability", "ViabilityContribution", "SelectedViability", "CorrectiveCapacity", "StateDependentContribution", "VectorContribution", "BehavioralMaintenance", "JamMaintenance", "JamBehaviorSelection", "JamEffortObservability", "JamRecurrentMaintenance", "FungalFlowMaintenance", "ViabilityOught"] [[require]] name = "mathlib" @@ -49,6 +49,9 @@ name = "JamBehaviorSelection" [[lean_lib]] name = "JamEffortObservability" +[[lean_lib]] +name = "JamRecurrentMaintenance" + [[lean_lib]] name = "FungalFlowMaintenance" From 04423409a8fda02a79721ee36f3eef0e4540bc28 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:58:44 +0200 Subject: [PATCH 03/61] Add Result 4 on recurrent corrective capacity --- .../sections/06_recurrent_maintenance.tex | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex diff --git a/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex b/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex new file mode 100644 index 0000000..f468c2a --- /dev/null +++ b/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex @@ -0,0 +1,135 @@ +\section{Result 4: correction reproduction is not maintenance reproduction} +\label{sec:recurrent-maintenance} + +The preceding results concern what happens \emph{within} an audit or dispute episode. A distinct question is whether the system preserves the capacity required to remain corrective across future episodes. The two questions should not be identified. + +\subsection{Two timescales} + +For a fault $x$, the event-level corrective reproduction mean in the correlated-honest-failure extension is +\[ +\lambda_x=F(1-\gamma)(1-f_x). +\] +The condition +\[ +\lambda_x>1 +\] +means that independently correct checking is supercritical for the declared audit process. It does not state that the resources, observability or implementation diversity required for such checking will persist across time. + +To make that second problem explicit, introduce three slow capacities: +\[ +C_t=\text{independently corrective capacity}, +\] +\[ +O_t=\text{capacity to observe or attribute genuine maintenance}, +\] +\[ +R_t=\text{resources returned to preserve future corrective capacity}. +\] +These variables are a model extension rather than Gray Paper state variables. The simplest directed return loop is +\[ +C\longrightarrow O\longrightarrow R\longrightarrow C. +\] +Write $r_C,r_O,r_R$ for autonomous one-step retention factors and $k_{CO},k_{OR},k_{RC}$ for the three directed coupling gains. The canonical finite-cycle replacement condition is +\[ +\boxed{ + k_{CO}k_{OR}k_{RC} + \ge + (1-r_C)(1-r_O)(1-r_R). +} +\] +For convenience define the dimensionless loop ratio +\[ +\mathcal R_M += +\frac{k_{CO}k_{OR}k_{RC}} +{(1-r_C)(1-r_O)(1-r_R)} +\] +when the denominator is positive. Then the canonical replacement boundary is $\mathcal R_M\ge1$. + +The underlying product/spectral threshold mathematics is standard positive-systems and reproduction-number structure; no novelty is claimed for that mathematics. The point here is the separation of this slower maintenance threshold from the ELVES event-level reproduction threshold. + +\subsection{The thresholds are logically independent} + +The repository now machine-checks explicit witnesses in Lean. + +First, current correction may be supercritical while recurrent maintenance is subcritical. Set +\[ +F=2,\qquad \gamma=0,\qquad f_x=0. +\] +Then +\[ +\lambda_x=2>1. +\] +But if +\[ +r_C=r_O=r_R=0, +\qquad +k_{CO}=k_{OR}=k_{RC}=\frac12, +\] +then the maintenance deficit product is $1$ while the loop gain is $1/8$. Hence the slow loop is below replacement. + +Second, a viable maintenance loop does not imply fault-specific correction for the current audit. Set +\[ +r_C=r_O=r_R=\frac12, +\qquad +k_{CO}=k_{OR}=k_{RC}=1. +\] +Then the maintenance loop gain is $1$ against deficit product $1/8$, so it is above the canonical replacement boundary. But with +\[ +F=2,\qquad \gamma=0,\qquad f_x=\frac34, +\] +we obtain +\[ +\lambda_x=\frac12<1. +\] +Thus an economically and operationally persistent validator ecosystem can still be insufficiently independently corrective for a particular correlated fault. + +These two counterexamples establish +\[ +\boxed{ +\lambda_x>1 +\not\Rightarrow +\mathcal R_M\ge1, +} +\] +and +\[ +\boxed{ +\mathcal R_M\ge1 +\not\Rightarrow +\lambda_x>1. +} +The Lean module also explicitly inhabits the jointly viable and jointly non-viable cells, so the two predicates form a genuine two-dimensional phase structure in this declared model. + +\subsection{Two-timescale phase structure} + +The resulting interpretation is: + +\begin{center} +\begin{tabularx}{\textwidth}{lXX} +\toprule +& recurrent maintenance above replacement & recurrent maintenance below replacement \\ +\midrule +$\lambda_x>1$ & current correction is supercritical and the modeled maintenance loop is viable & current correction is supercritical now, but the modeled capacity that supports future correction is eroding \\ +$\lambda_x\le1$ & maintenance resources/processes persist, but independent correction is insufficient for fault $x$ & neither condition is met \\ +\bottomrule +\end{tabularx} +\end{center} + +The upper-right cell is the main new systems question. A protocol can satisfy its current audit-reproduction condition while selecting against, failing to observe, or failing to resource the costly capacities on which that condition depends in the future. + +The lower-left cell is the complementary failure mode. Persistence of validators, rewards and monitoring infrastructure is not equivalent to preservation of fault-specific independent correction. A homogeneous but well-funded implementation ecosystem can remain operational while losing the diversity needed for one shared fault. + +\subsection{Relation to the Gray Paper and ELVES} + +This result does not claim that JAM currently has a closed $C\!\to O\!\to R\!\to C$ loop with known coefficients. Rather, the Gray Paper and the preceding repository experiments expose interfaces corresponding to the three functions: + +\begin{itemize} +\item useful audit computation supplies independently corrective capacity; +\item effort and judgment information can make maintenance observable or attributable; +\item staking, operator economics and implementation ecosystems determine whether resources are returned to preserve that capacity. +\end{itemize} + +Some of these mechanisms are explicitly delegated outside the audited assurance layer. That delegation is precisely why event-level correction and cross-time maintenance should be represented by different conditions rather than by one reproduction number. + +The falsifiable design question is therefore not merely whether $\lambda_x>1$ today. It is whether the surrounding protocol, staking and client ecosystem jointly close a return loop that keeps independently corrective capacity available across future audits. From b5e450a9a9f4b6818f61e6a3760072fb18212271 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:58:59 +0200 Subject: [PATCH 04/61] Integrate recurrent-maintenance result into JAM paper --- papers/correlated-honest-failure/main.tex | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/papers/correlated-honest-failure/main.tex b/papers/correlated-honest-failure/main.tex index 7e4bd87..7a376b2 100644 --- a/papers/correlated-honest-failure/main.tex +++ b/papers/correlated-honest-failure/main.tex @@ -24,7 +24,7 @@ \newcommand{\ceil}[1]{\left\lceil #1\right\rceil} \title{\textbf{Correlated Honest Failure in JAM/ELVES}\\ -\large Fault-Domain Concentration, Sampling Dilution, and Attribution Boundaries} +\large Fault-Domain Concentration, Sampling Dilution, and Recurrent Corrective Capacity} \author{Albert Jan van Hoek} \date{Draft --- September 2026} @@ -32,7 +32,7 @@ \maketitle \begin{abstract} -Execution-auditing protocols distinguish adversarial validators from honest validators, but implementation faults create a third class: validators that follow the protocol and nevertheless return the same wrong judgment on a particular crafted input. We extend the ELVES/JAM auditing model to this \emph{correlated honest failure} case and separate three consequences that arise at different protocol layers. +Execution-auditing protocols distinguish adversarial validators from honest validators, but implementation faults create a third class: validators that follow the protocol and nevertheless return the same wrong judgment on a particular crafted input. We extend the ELVES/JAM auditing model to this \emph{correlated honest failure} case and separate consequences that arise at different protocol layers and timescales. First, the current JAM dispute rules imply an attribution boundary that does not depend on the ELVES adaptive-crash model. If a fraction \(\gamma\) of validators is adversarial and a fraction \(f\) of the otherwise-honest validators shares a fault that makes one invalid report appear valid, then the maximum wrong-positive share is \(p_x=\gamma+(1-\gamma)f\). A bad verdict---and therefore the Gray Paper's ordinary culprit/fault attribution path---remains available regardless of adversarial voting only while the independently correct share is at least the verdict quorum. Asymptotically this requires \(p_x<1/3\). At \(\gamma=0.2\), this corresponds to \(f<1/6\approx16.7\%\), well below the point at which audit escalation itself becomes subcritical. @@ -44,7 +44,13 @@ Third, sampled correction breaks a monotonicity property that holds when every participant supplies an independent blocking route. Writing \(C_x\) for the number of independently correct validators in a population of size \(N\), \(\lambda_x=FC_x/N\). Adding honest validators outside \(C_x\) lowers \(\lambda_x\) even with no behavioral change. In an exact-count illustration based on \(N=1023\), \(205\) adversarial validators and \(164\) honest validators sharing one fault, adding 200 further honest validators with the same fault raises the pessimistic acceptance bound from \(4.5\times10^{-4}\) to \(0.13\) when the initial committee is held at 30; if JAM's 341 cores remain fixed so the initial sample grows with \(N\), the same bound still rises to \(0.087\). -These are model extensions, not claims about an observed JAM vulnerability. The attribution result follows from the current Gray Paper verdict rules; the branching and dilution results inherit ELVES assumptions. We identify several design questions rather than prescriptions: whether staking acts on wonky verdicts, whether fault-domain exposure should be measured across shared components, whether guarantor diversity can restore attacker-attributable collateral, and how audit effort and no-show rates behave under load. The purpose is to make the additional assumptions required by correlated honest failure explicit and reviewable by the ELVES and JAM authors. +Fourth, event-level corrective reproduction is distinct from reproduction of the capacity to remain corrective across future audits. We introduce a minimal slow return-loop model linking independently corrective capacity, observability or attribution of genuine maintenance, and resources returned to preserve that capacity. Its canonical three-cycle replacement boundary is +\[ +k_{CO}k_{OR}k_{RC}\ge(1-r_C)(1-r_O)(1-r_R). +\] +Machine-checked witnesses show that \(\lambda_x>1\) does not imply this maintenance condition and that maintenance viability does not imply \(\lambda_x>1\). The two thresholds therefore define a genuine two-timescale phase structure: a system may be correctable now while eroding the capacity required to remain correctable later, or may remain operational while lacking fault-specific independent correction. + +These are model extensions, not claims about an observed JAM vulnerability. The attribution result follows from the current Gray Paper verdict rules; the branching, dilution and recurrent-maintenance results inherit declared modeling assumptions. The purpose is to make the additional assumptions required by correlated honest failure and long-run corrective capacity explicit and reviewable by the ELVES and JAM authors. \end{abstract} \input{sections/01_introduction.tex} @@ -52,6 +58,7 @@ \input{sections/03_attribution.tex} \input{sections/04_escalation.tex} \input{sections/05_sampling.tex} +\input{sections/06_recurrent_maintenance.tex} \input{sections/06_implications.tex} \input{sections/07_limitations.tex} \input{sections/08_conclusion.tex} From 3e61a5be3f49b694502add61fcda098eab3a2b4a Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:59:16 +0200 Subject: [PATCH 05/61] Add recurrent-maintenance claims and boundaries --- papers/correlated-honest-failure/CLAIMS.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/papers/correlated-honest-failure/CLAIMS.md b/papers/correlated-honest-failure/CLAIMS.md index dbfaa88..dfc0474 100644 --- a/papers/correlated-honest-failure/CLAIMS.md +++ b/papers/correlated-honest-failure/CLAIMS.md @@ -16,6 +16,11 @@ | D1 | Slashable collateral need not equal attacker-attributable collateral when honest buggy guarantors sign the invalid report. | Economic mapping observation | Does not prove attacker has zero cost. | | D2 | Wonky has no ordinary Gray Paper culprit/fault offender record. | Gray Paper rule interpretation | Staking layer may add consequences; requires author confirmation. | | D3 | Guarantor diversity, announcement monitoring, effort proofs and load-feedback controls are design hypotheses. | Future work | No protocol recommendation is claimed. | +| E1 | The slow three-process model `C -> O -> R -> C` meets its canonical replacement condition when `k_CO k_OR k_RC >= (1-r_C)(1-r_O)(1-r_R)`. | Declared maintenance-loop model; algebraic threshold | The variables and couplings are not claimed to be current Gray Paper state variables. General product/spectral threshold mathematics is prior art. | +| E2 | Event-level supercritical correction (`lambda_x > 1`) does not imply slow maintenance viability. | Machine-checked separation witness | Witness uses `F=2, gamma=f=0` and a subcritical slow loop. | +| E3 | Slow maintenance viability does not imply event-level supercritical correction for a particular fault. | Machine-checked separation witness | Witness uses a strong slow loop but `f=3/4`, giving `lambda_x=1/2` at `F=2, gamma=0`. | +| E4 | All four cells of the two-threshold phase structure are jointly inhabitable in the declared model. | Machine-checked witnesses | This is logical/model non-equivalence, not an empirical statement about JAM deployment. | +| E5 | A system can therefore be correctable in the current audit while the modeled capacity supporting future correction is below replacement, or operationally persistent while fault-specific correction is subcritical. | Interpretation of E2–E4 | Requires empirical/protocol mapping before any claim about actual JAM long-run dynamics. | ## Explicit non-claims @@ -25,4 +30,8 @@ The paper does not claim: - that the attacker can freely choose a favorable core assignment; - that a wonky verdict is economically cost-free in a production staking layer; - that client count equals fault-domain diversity; -- that F=2 is incorrectly chosen without a complete re-optimization under the revised threat model. +- that F=2 is incorrectly chosen without a complete re-optimization under the revised threat model; +- that the Gray Paper already specifies numerical coefficients for the slow `C -> O -> R -> C` maintenance loop; +- that `lambda_x > 1` guarantees preservation of corrective capacity across future audits; +- that persistence of a validator/economic ecosystem guarantees independent correction for every correlated fault; +- novelty for the underlying positive-systems, spectral-radius, or reproduction-number threshold mathematics used to motivate the slow-loop abstraction. From 368b6c4c80129107f8363f1d89b6297a7e87355a Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:59:40 +0200 Subject: [PATCH 06/61] Revise conclusion for two-timescale maintenance result --- .../sections/08_conclusion.tex | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/papers/correlated-honest-failure/sections/08_conclusion.tex b/papers/correlated-honest-failure/sections/08_conclusion.tex index e2b2581..26fa0cf 100644 --- a/papers/correlated-honest-failure/sections/08_conclusion.tex +++ b/papers/correlated-honest-failure/sections/08_conclusion.tex @@ -1,8 +1,8 @@ \section{Discussion and conclusion} -The standard honest/adversarial partition is sufficient only when “honest” also means “independently correct for the fault being exploited.” Correlated implementation failure separates those concepts. +The standard honest/adversarial partition is sufficient only when ``honest'' also means ``independently correct for the fault being exploited.'' Correlated implementation failure separates those concepts. -The resulting JAM/ELVES analysis has three nested boundaries. +The resulting JAM/ELVES analysis now has three nested event-level boundaries plus one orthogonal cross-time maintenance condition. First, the dispute layer has an attribution boundary. If the combined adversarial-plus-buggy-positive bloc exceeds roughly one third of the validator population, independently correct validators no longer suffice by themselves to construct a bad verdict. The report can still be stopped through a wonky outcome, but the ordinary Gray Paper offender-attribution path changes. This is a protocol-rule result, not a branching-model result. @@ -18,7 +18,15 @@ \section{Discussion and conclusion} \] validator growth can reduce corrective reproduction when new validators do not increase the independently correct set for the relevant fault. This can occur even if every entrant is honest and the adversarial fraction falls. -Together these results suggest that a useful security variable is not raw validator count or raw client count but fault-specific independent corrective capacity. Because future faults are unknown, operators cannot observe that capacity directly. They can only monitor exposure to plausible common components and preserve diversity margins across multiple layers. +Fourth, event-level correction is not the same as preserving the capacity to remain corrective across future audits. The declared slow maintenance model separates independently corrective capacity, maintenance observability or attribution, and returned resources. Its canonical three-cycle threshold is +\[ +k_{CO}k_{OR}k_{RC}\ge(1-r_C)(1-r_O)(1-r_R). +\] +Machine-checked counterexamples show that this maintenance condition and \(\lambda_x>1\) imply neither one another. The maintenance condition should therefore not be read as a fourth point on the earlier one-third/one-half/two-thirds sequence. It is an orthogonal timescale. + +This separation exposes two distinct failure modes. A system can be correctable now while selecting against, failing to observe, or failing to resource the capacities required to remain correctable later. Conversely, a validator and staking ecosystem can remain operationally self-maintaining while excessive common-mode implementation concentration makes correction subcritical for a particular fault. + +Together these results suggest that a useful security variable is not raw validator count or raw client count but fault-specific independent corrective capacity, together with the architecture that preserves that capacity over time. Because future faults are unknown, operators cannot observe fault-specific independent correction directly. They can only monitor exposure to plausible common components and examine whether the surrounding protocol, staking and client ecosystem maintain diversity, useful checking and the return paths that support them. The most concise summary is therefore: \[ @@ -27,10 +35,18 @@ \section{Discussion and conclusion} \neq \text{independently corrective stake} \neq -\text{attacker-attributable stake}. +\text{attacker-attributable stake}, +} +\] +with the additional cross-time distinction +\[ +\boxed{ +\text{corrective reproduction now} +\neq +\text{reproduction of corrective capacity over time}. } \] -The first inequality matters for auditing. The second matters for economics. The Gray Paper and ELVES already provide a strong framework for reasoning about adversarial and availability failures; correlated honest failure asks where shared implementation dependencies enter that framework. +The first distinction matters for auditing and economics. The second matters for long-run robustness. The Gray Paper and ELVES already provide a strong framework for reasoning about adversarial and availability failures; correlated honest failure asks where shared implementation dependencies enter that framework, while the recurrent-maintenance extension asks what additional architecture is required to keep the independently corrective part of the system from eroding between audits. -The immediate next step is not another model extension. It is review by the ELVES and JAM authors, especially on the wonky-verdict economics and the substitution of \(h_x\) into the branching proof. If those mappings are accepted, fault-domain exposure becomes a quantitatively defined protocol margin rather than only a qualitative argument for client diversity. If they are rejected, the reasons will identify exactly which additional mechanism closes the gap. +The next external step remains review by the ELVES and JAM authors, especially on the wonky-verdict economics and the substitution of \(h_x\) into the branching proof. The recurrent-maintenance result adds a separate question for that review: which protocol, staking, operator and client-ecosystem mechanisms actually close the slow return loop, and which coefficients could in principle be measured rather than assumed? If the event-level mappings are accepted, fault-domain exposure becomes a quantitatively defined protocol margin. If the slow-loop mapping can also be grounded, the analysis can move from current corrective capacity to the conditions under which that capacity persists. From 69e21d08a06bf8437ee08405d0c8650062370310 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:59:49 +0200 Subject: [PATCH 07/61] Document recurrent-maintenance result in paper README --- papers/correlated-honest-failure/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/papers/correlated-honest-failure/README.md b/papers/correlated-honest-failure/README.md index a6c3fb4..4687b85 100644 --- a/papers/correlated-honest-failure/README.md +++ b/papers/correlated-honest-failure/README.md @@ -7,6 +7,9 @@ Repo-ready LaTeX package for the technical companion paper. 1. **Verdict attribution boundary** from the current Gray Paper rules. 2. **Fault-specific ELVES escalation** under correlated honest failure. 3. **Sampling dilution** showing that honest-but-correlated validator additions can lower corrective reproduction. +4. **Recurrent corrective capacity** separating within-audit corrective reproduction from cross-audit maintenance of the capacity required to remain corrective. + +Result 4 introduces a declared slow `C -> O -> R -> C` loop linking independently corrective capacity, observability/attribution of genuine maintenance, and resources returned to preserve future corrective capacity. Machine-checked witnesses show that the event-level condition `lambda_x > 1` and the slow maintenance replacement condition imply neither one another. The maintenance threshold is therefore an orthogonal timescale, not a fourth nested point on the verdict/audit threshold sequence. ## Files @@ -16,6 +19,7 @@ Repo-ready LaTeX package for the technical companion paper. - `references.bib` — bibliography. - `CLAIMS.md` — claim-status ledger. - `reproduce.py` — dependency-free reproduction of numerical tables. +- `../../formalization/JamRecurrentMaintenance.lean` — machine-checked two-timescale separation witnesses. ## Build @@ -34,4 +38,4 @@ python reproduce.py ## Scope -This is not a JAM security audit and does not claim an observed vulnerability. Result 1 derives from the Gray Paper verdict rules under a declared correlated-fault scenario. Results 2-3 extend ELVES and therefore require review by the ELVES authors. +This is not a JAM security audit and does not claim an observed vulnerability. Result 1 derives from the Gray Paper verdict rules under a declared correlated-fault scenario. Results 2-3 extend ELVES and therefore require review by the ELVES authors. Result 4 is a declared slow-timescale systems extension motivated by the repository's grounded JAM maintenance analysis; its coefficients are not claimed to be current Gray Paper parameters, and novelty is not claimed for the underlying positive-systems/reproduction-number threshold mathematics. From a1e13dd9fb5a3aa681d271d4bf1f6edc6735a495 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:00:27 +0200 Subject: [PATCH 08/61] Document recurrent JAM maintenance proofs --- formalization/README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/formalization/README.md b/formalization/README.md index d8d4475..a5a366a 100644 --- a/formalization/README.md +++ b/formalization/README.md @@ -64,6 +64,11 @@ The Lean source checks only the algebraic core of the declared model. It does no | Perfect observability may still be insufficient | `perfect_observability_insufficient` | | More effort observability improves selection | `higher_observability_improves_selection` | | Lower exposure raises observability requirement | `lower_exposure_raises_observability_threshold` | +| Current correction can be supercritical while slow maintenance is subcritical | `correction_supercritical_maintenance_subcritical_witness` | +| Slow maintenance can be viable while fault-specific correction is subcritical | `maintenance_viable_correction_subcritical_witness` | +| Event-level correction does not imply maintenance viability | `correction_supercritical_does_not_imply_maintenance_viable` | +| Maintenance viability does not imply event-level correction | `maintenance_viable_does_not_imply_correction_supercritical` | +| Jointly viable and jointly non-viable phase cells are inhabited | `both_reproduction_conditions_can_hold`; `neither_reproduction_condition_need_hold` | | Fungal redundant-state stability iff effective gain < 1 | `fungal_stable_iff_effective_gain_lt_one` | | Unit fungal effective gain is neutral | `fungal_neutral_iff_effective_gain_eq_one` | | Superunit fungal effective gain is unstable | `fungal_unstable_iff_effective_gain_gt_one` | @@ -135,10 +140,14 @@ leastness hypothesis remains assumed in `selected_safety_iff_critical_cost`. `JamEffortObservability.lean` formalizes Experiment 11's second-order maintenance channel. It proves that selective reinforcement depends jointly on effort observability and returned reward, and that structural loss of false-positive exposure raises the observability burden needed to select real computation. +## JAM recurrent corrective capacity + +`JamRecurrentMaintenance.lean` adds a second timescale to the JAM analysis. It keeps the ELVES-style fault-specific reproduction mean `lambda_x` separate from a declared slow `C -> O -> R -> C` maintenance loop linking independently corrective capacity, maintenance observability/attribution and returned resources. The file machine-checks explicit witnesses showing that event-level supercritical correction and slow maintenance viability imply neither one another, and it inhabits all four phase cells. The slow-loop coefficients are model parameters rather than claimed Gray Paper variables; no novelty is claimed for the underlying positive-systems/reproduction-number threshold mathematics. + ## Fungal flow-coupled maintenance `FungalFlowMaintenance.lean` formalizes Experiment 12's two-route local stability boundary. The nonlinear flow-reinforcement rule is a falsification model extension motivated by empirical fungal flow/cord-growth coupling; the file does not claim that this exact power-law is fungal physiology. ## Viability-conditioned ought synthesis -`ViabilityOught.lean` formalizes one exact structural synthesis result: the grounded JAM correction/failure branching requirements admit a common positive escalation strength iff the effective failure-amplifying share is smaller than the effective corrective share. The philosophical interpretation of such admissible regions as "viability-conditioned oughts" is kept outside the theorem. +`ViabilityOught.lean` formalizes one exact structural synthesis result: the grounded JAM correction/failure branching requirements admit a common positive escalation strength iff the effective failure-amplifying share is smaller than the effective corrective share. The philosophical interpretation of such admissible regions as "viability-conditioned oughts" is kept outside the theorem. \ No newline at end of file From 9a3c1de8220f5de18c155b6f2f947adea57ea1c4 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:00:45 +0200 Subject: [PATCH 09/61] Document two-timescale corrective-capacity model --- docs/RECURRENT_CORRECTIVE_CAPACITY.md | 81 +++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 docs/RECURRENT_CORRECTIVE_CAPACITY.md diff --git a/docs/RECURRENT_CORRECTIVE_CAPACITY.md b/docs/RECURRENT_CORRECTIVE_CAPACITY.md new file mode 100644 index 0000000..1ff1bec --- /dev/null +++ b/docs/RECURRENT_CORRECTIVE_CAPACITY.md @@ -0,0 +1,81 @@ +# Recurrent corrective capacity in JAM/ELVES + +## Purpose + +The JAM/ELVES analysis now distinguishes two reproduction questions: + +1. **Within-audit corrective reproduction**: does independently correct checking reproduce during the current dispute process? +2. **Cross-audit maintenance reproduction**: does the surrounding architecture preserve the capacity required to remain independently corrective in future audits? + +These are not the same condition. + +## Event-level condition + +Under the correlated-honest-failure extension, + +\[ +\lambda_x = F(1-\gamma)(1-f_x). +\] + +The current audit is supercritical for independently correct checking when + +\[ +\lambda_x>1. +\] + +## Slow maintenance condition + +Introduce a declared slow three-process loop: + +- `C`: independently corrective capacity; +- `O`: observability/attribution of genuine maintenance; +- `R`: resources returned to preserve future corrective capacity. + +The canonical directed loop is + +\[ +C\rightarrow O\rightarrow R\rightarrow C. +\] + +With retention factors `r_C,r_O,r_R` and coupling gains `k_CO,k_OR,k_RC`, the declared replacement condition is + +\[ +k_{CO}k_{OR}k_{RC}\ge(1-r_C)(1-r_O)(1-r_R). +\] + +This is a model extension. The coefficients are not claimed to be current Gray Paper state variables. The underlying product/spectral threshold structure is classical; the research contribution is the explicit separation of this condition from the ELVES event-level correction threshold. + +## Machine-checked separation + +`formalization/JamRecurrentMaintenance.lean` proves explicit witnesses for all four cells: + +| Current correction | Slow maintenance | Interpretation | +|---|---|---| +| supercritical | viable | current correction works and modeled corrective capacity is maintained | +| supercritical | subcritical | correctable now, modeled capacity erodes across time | +| subcritical | viable | ecosystem persists but is insufficiently independently corrective for fault `x` | +| subcritical | subcritical | neither condition holds | + +The two key non-implications are therefore machine checked: + +\[ +\lambda_x>1\not\Rightarrow \text{maintenance viability}, +\] + +and + +\[ +\text{maintenance viability}\not\Rightarrow\lambda_x>1. +\] + +## Empirical grounding needed next + +The mathematical separation is useful only if the slow-loop terms can be grounded. The next protocol-facing work should therefore identify measurable proxies for: + +- how current independently corrective capacity is replenished or lost; +- how actual audit effort and useful independent correction are observed; +- how staking/operator/client economics return resources to those capacities; +- how implementation concentration changes over time; +- whether these return paths are fast enough to offset attrition. + +This suggests a concrete empirical question for JAM deployments or testnets: can the system estimate a time-dependent maintenance margin for independent corrective capacity, separately from the current ELVES audit reproduction number? From bdea14cce4c50435e79fb169a04d346a88f27516 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:01:02 +0200 Subject: [PATCH 10/61] ignore --- NONEXISTENT | 1 + 1 file changed, 1 insertion(+) create mode 100644 NONEXISTENT diff --git a/NONEXISTENT b/NONEXISTENT new file mode 100644 index 0000000..8485e98 --- /dev/null +++ b/NONEXISTENT @@ -0,0 +1 @@ +ignore \ No newline at end of file From b6b21c48a6151a53566a23b07a40cdc09c875a3e Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:01:16 +0200 Subject: [PATCH 11/61] Remove accidental placeholder artifact --- NONEXISTENT | 1 - 1 file changed, 1 deletion(-) delete mode 100644 NONEXISTENT diff --git a/NONEXISTENT b/NONEXISTENT deleted file mode 100644 index 8485e98..0000000 --- a/NONEXISTENT +++ /dev/null @@ -1 +0,0 @@ -ignore \ No newline at end of file From e1caef3efbf05050b5046dfaa2b8ad4cc58afc1e Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:10:54 +0200 Subject: [PATCH 12/61] Formalize dynamic loss of JAM corrective margin --- formalization/JamResilienceDynamics.lean | 210 +++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 formalization/JamResilienceDynamics.lean diff --git a/formalization/JamResilienceDynamics.lean b/formalization/JamResilienceDynamics.lean new file mode 100644 index 0000000..47d5360 --- /dev/null +++ b/formalization/JamResilienceDynamics.lean @@ -0,0 +1,210 @@ +import JamRecurrentMaintenance + +namespace DistributedCommons + +/-! +# JAM: dynamic corrective resilience + +`JamRecurrentMaintenance.lean` separates within-audit corrective reproduction +from cross-audit maintenance viability. This module couples the two timescales. + +The slow state has three coordinates: + +* `corrective` -- the fault-specific independently-correct share/capacity that + feeds the next audit's corrective reproduction number; +* `observability` -- capacity to observe or attribute genuine maintenance; +* `resources` -- resources returned to preserve future corrective capacity. + +The declared linear update is + + C' = rC C + kRC R + O' = rO O + kCO C + R' = rR R + kOR O. + +For a fixed audit escalation factor `F`, the next audit's fast reproduction +number is `F * C`. The main exact bridge proved here is therefore local and +measurable: at the fast critical boundary `F*C = 1`, the next audit remains at +or above criticality exactly when returned resources close the current +corrective-capacity replacement gap. + +A reduced one-parameter path is also used to prove an identification result: +the same current reproduction number can imply different finite-horizon +resilience depending on the cross-audit maintenance multiplier. This is a +model theorem, not a claim that JAM currently has any particular slow-state +coefficients or multiplier. +-/ + +/-- Slow state supporting future independently-correct auditing. -/ +structure JamCorrectiveState where + corrective : ℝ + observability : ℝ + resources : ℝ + +/-- One cross-audit update of corrective capacity, maintenance observability, +and returned resources. -/ +def jamCorrectiveStateStep + (rC rO rR kCO kOR kRC : ℝ) + (x : JamCorrectiveState) : JamCorrectiveState := + { corrective := rC * x.corrective + kRC * x.resources + observability := rO * x.observability + kCO * x.corrective + resources := rR * x.resources + kOR * x.observability } + +/-- Fast, fault-specific audit reproduction generated by the current slow +corrective-capacity coordinate. -/ +noncomputable def jamStateCorrectionReproduction + (F : ℝ) (x : JamCorrectiveState) : ℝ := + F * x.corrective + +/-- Fast supercriticality of the current state. -/ +def jamStateCorrectionSupercritical + (F : ℝ) (x : JamCorrectiveState) : Prop := + 1 < jamStateCorrectionReproduction F x + +/-- Exact bridge from the slow state update to the next audit reproduction +number. The observability and resource equations matter for later rounds, but +the immediate next-audit bridge enters through the returned-resource term in +`C'`. -/ +theorem jam_next_reproduction_identity + (F rC rO rR kCO kOR kRC : ℝ) + (x : JamCorrectiveState) : + jamStateCorrectionReproduction F + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x) + = + rC * jamStateCorrectionReproduction F x + + F * kRC * x.resources := by + unfold jamStateCorrectionReproduction jamCorrectiveStateStep + ring + +/-- **Maintenance-return boundary.** If the current fast audit is exactly at +criticality, then the next audit stays at or above criticality iff returned +resources close the autonomous loss of corrective capacity. + +The right-hand side is intentionally written without division, so it remains +meaningful even when `F` or `kRC` is zero. -/ +theorem jam_critical_return_boundary + {F rC rO rR kCO kOR kRC : ℝ} + {x : JamCorrectiveState} + (hcrit : jamStateCorrectionReproduction F x = 1) : + 1 ≤ jamStateCorrectionReproduction F + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x) + ↔ + 1 - rC ≤ F * kRC * x.resources := by + rw [jam_next_reproduction_identity, hcrit] + constructor <;> intro h <;> nlinarith + +/-- At current criticality, a strict shortfall in the returned-resource term +forces the next audit below the fast correction threshold. -/ +theorem jam_return_shortfall_makes_next_audit_subcritical + {F rC rO rR kCO kOR kRC : ℝ} + {x : JamCorrectiveState} + (hcrit : jamStateCorrectionReproduction F x = 1) + (hshort : F * kRC * x.resources < 1 - rC) : + jamStateCorrectionReproduction F + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x) < 1 := by + rw [jam_next_reproduction_identity, hcrit] + nlinarith + +/-- Conversely, a strict returned-resource surplus above the replacement gap +makes the next audit supercritical when the current audit is exactly critical. -/ +theorem jam_return_surplus_makes_next_audit_supercritical + {F rC rO rR kCO kOR kRC : ℝ} + {x : JamCorrectiveState} + (hcrit : jamStateCorrectionReproduction F x = 1) + (hsurplus : 1 - rC < F * kRC * x.resources) : + 1 < jamStateCorrectionReproduction F + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x) := by + rw [jam_next_reproduction_identity, hcrit] + nlinarith + +/-- Reduced cross-audit trajectory for the fast correction reproduction number. +`m` is a net maintenance multiplier for this reduced coordinate; it is not the +same object as the three-process loop ratio from `JamRecurrentMaintenance`. -/ +noncomputable def jamReducedCorrectionPath + (lambda0 m : ℝ) (n : ℕ) : ℝ := + m ^ n * lambda0 + +/-- The reduced path starts at the observed current reproduction number. -/ +theorem jamReducedCorrectionPath_zero + (lambda0 m : ℝ) : + jamReducedCorrectionPath lambda0 m 0 = lambda0 := by + simp [jamReducedCorrectionPath] + +/-- Exact one-step recurrence of the reduced cross-audit path. -/ +theorem jamReducedCorrectionPath_succ + (lambda0 m : ℝ) (n : ℕ) : + jamReducedCorrectionPath lambda0 m (n + 1) + = m * jamReducedCorrectionPath lambda0 m n := by + simp [jamReducedCorrectionPath, pow_succ] + ring + +/-- Margin above the fast ELVES-style critical boundary. -/ +noncomputable def jamCorrectionMargin (lambda : ℝ) : ℝ := + lambda - 1 + +/-- Exact margin recursion. Because the fast threshold remains fixed at one, +a maintenance multiplier below one creates both multiplicative shrinkage of +existing margin and an additive replacement drag. -/ +theorem jamCorrectionMargin_step + (lambda m : ℝ) : + jamCorrectionMargin (m * lambda) + = m * jamCorrectionMargin lambda - (1 - m) := by + unfold jamCorrectionMargin + ring + +/-- Any positive reproduction number strictly declines in one reduced step +when the maintenance multiplier lies below one. -/ +theorem jamReducedCorrection_strictly_declines + {lambda m : ℝ} + (hlambda : 0 < lambda) + (hm : m < 1) : + m * lambda < lambda := by + have hgap : 0 < (1 - m) * lambda := + mul_pos (sub_pos.mpr hm) hlambda + nlinarith + +/-- Finite-horizon resilience in the reduced path. -/ +def jamHorizonSupercritical + (lambda0 m : ℝ) (T : ℕ) : Prop := + 1 < jamReducedCorrectionPath lambda0 m T + +/-- **Current audit success is not a sufficient statistic for horizon +resilience.** Two systems can have exactly the same current supercritical +reproduction number and different five-step status solely because their +cross-audit maintenance multipliers differ. + +The numbers are a transparent counterexample, not calibrated JAM estimates: +`lambda0 = 3/2`; perfect replacement keeps it at `3/2`, while multiplier +`9/10` yields `(9/10)^5 * (3/2) < 1`. -/ +theorem event_level_success_not_sufficient_statistic_for_five_step_resilience : + ∃ lambda0 mStable mErode : ℝ, + 1 < lambda0 ∧ + jamReducedCorrectionPath lambda0 mStable 0 = + jamReducedCorrectionPath lambda0 mErode 0 ∧ + jamHorizonSupercritical lambda0 mStable 5 ∧ + ¬ jamHorizonSupercritical lambda0 mErode 5 := by + refine ⟨3 / 2, 1, 9 / 10, ?_⟩ + norm_num [jamReducedCorrectionPath, jamHorizonSupercritical] + +/-- Concrete full-state witness of latent loss: current correction is +supercritical, but with no returned-resource contribution and only half of the +corrective coordinate retained, the next audit becomes subcritical. -/ +theorem current_supercritical_can_cross_subcritical_next_round : + let x : JamCorrectiveState := + { corrective := 3 / 4, observability := 1, resources := 1 } + jamStateCorrectionSupercritical 2 x ∧ + ¬ jamStateCorrectionSupercritical 2 + (jamCorrectiveStateStep (1 / 2) 1 1 1 1 0 x) := by + norm_num [jamStateCorrectionSupercritical, jamStateCorrectionReproduction, + jamCorrectiveStateStep] + +#print axioms jam_next_reproduction_identity +#print axioms jam_critical_return_boundary +#print axioms jam_return_shortfall_makes_next_audit_subcritical +#print axioms jam_return_surplus_makes_next_audit_supercritical +#print axioms jamReducedCorrectionPath_succ +#print axioms jamCorrectionMargin_step +#print axioms jamReducedCorrection_strictly_declines +#print axioms event_level_success_not_sufficient_statistic_for_five_step_resilience +#print axioms current_supercritical_can_cross_subcritical_next_round + +end DistributedCommons From 71afceaf611f7161cef98fcf9d0b834522cda041 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:11:05 +0200 Subject: [PATCH 13/61] Add dynamic JAM resilience proof target --- formalization/lakefile.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/formalization/lakefile.toml b/formalization/lakefile.toml index 08d6c21..bbd3284 100644 --- a/formalization/lakefile.toml +++ b/formalization/lakefile.toml @@ -1,6 +1,6 @@ name = "distributed_commons_control" version = "0.1.0" -defaultTargets = ["DistributedCommons", "RootSafety", "DynamicSafety", "EndogenousFloor", "ClosedLoopStability", "ViabilityContribution", "SelectedViability", "CorrectiveCapacity", "StateDependentContribution", "VectorContribution", "BehavioralMaintenance", "JamMaintenance", "JamBehaviorSelection", "JamEffortObservability", "JamRecurrentMaintenance", "FungalFlowMaintenance", "ViabilityOught"] +defaultTargets = ["DistributedCommons", "RootSafety", "DynamicSafety", "EndogenousFloor", "ClosedLoopStability", "ViabilityContribution", "SelectedViability", "CorrectiveCapacity", "StateDependentContribution", "VectorContribution", "BehavioralMaintenance", "JamMaintenance", "JamBehaviorSelection", "JamEffortObservability", "JamRecurrentMaintenance", "JamResilienceDynamics", "FungalFlowMaintenance", "ViabilityOught"] [[require]] name = "mathlib" @@ -52,6 +52,9 @@ name = "JamEffortObservability" [[lean_lib]] name = "JamRecurrentMaintenance" +[[lean_lib]] +name = "JamResilienceDynamics" + [[lean_lib]] name = "FungalFlowMaintenance" From 4b4b3164ae4c115bd2402865adf36105bc88e208 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:11:38 +0200 Subject: [PATCH 14/61] Add client-diversity and longitudinal decentralization literature --- .../correlated-honest-failure/references.bib | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/papers/correlated-honest-failure/references.bib b/papers/correlated-honest-failure/references.bib index 3af6a82..21b20f4 100644 --- a/papers/correlated-honest-failure/references.bib +++ b/papers/correlated-honest-failure/references.bib @@ -43,3 +43,23 @@ @inproceedings{luu2015 year = {2015}, doi = {10.1145/2810103.2813659} } + +@article{ron2026, + author = {Ron, Javier and He, Zheyuan and Monperrus, Martin}, + title = {Proving and Rewarding Client Diversity to Strengthen Resilience of Blockchain Networks}, + journal = {Distributed Ledger Technologies: Research and Practice}, + volume = {5}, + year = {2026}, + doi = {10.1145/3773288}, + note = {Published online before the 2026 volume assignment} +} + +@misc{grandjean2023, + author = {Grandjean, Dominic and Heimbach, Lioba and Wattenhofer, Roger}, + title = {Ethereum Proof-of-Stake Consensus Layer: Participation and Decentralization}, + year = {2023}, + eprint = {2306.10777}, + archivePrefix = {arXiv}, + primaryClass = {cs.CR}, + doi = {10.48550/arXiv.2306.10777} +} From 2985ba901313d5c75147212c152fa443eb494afc Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:12:07 +0200 Subject: [PATCH 15/61] Reframe JAM paper around five resilience results --- .../sections/01_introduction.tex | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/papers/correlated-honest-failure/sections/01_introduction.tex b/papers/correlated-honest-failure/sections/01_introduction.tex index b9b0ee9..df6c5b2 100644 --- a/papers/correlated-honest-failure/sections/01_introduction.tex +++ b/papers/correlated-honest-failure/sections/01_introduction.tex @@ -6,7 +6,9 @@ \section{Introduction} The usual honest/adversarial partition hides one important failure mode. A validator can be honest in the game-theoretic and protocol sense---it executes the assigned software, announces when selected, and publishes the result it obtains---yet still be wrong because several validators share the same implementation defect. This is a classical concern in multiversion software: independently developed implementations can exhibit coincident failures on the same inputs, and nominal redundancy does not by itself imply independent failure \citep{eckhardt1985,littlewood1989}. -JAM explicitly encourages implementation diversity, but the question studied here is narrower: +Client diversity is already recognized as a resilience mechanism in blockchain systems. Longitudinal measurements of Ethereum PoS have documented both client concentration and participation disruptions associated with major clients or service operators \citep{grandjean2023}. More recently, verifiable client identification and diversity-aware rewards have been proposed as a direct way to make minority implementations economically selectable \citep{ron2026}. The present question is therefore not whether diversity matters, nor whether it can be rewarded. It is whether a sampled auditing protocol can distinguish \emph{current corrective success} from the \emph{maintenance of the capacity that makes future correction possible}. + +JAM explicitly encourages implementation diversity, but the starting question studied here is narrower: \begin{quote} \textbf{What changes in the JAM/ELVES security bookkeeping when some otherwise-honest validators share a fault that makes one crafted invalid report appear valid?} @@ -14,15 +16,19 @@ \section{Introduction} We call this \emph{correlated honest failure}. The phrase is fault-specific. A validator class can be correct for almost all reports and correlated only on one input family. Consequently the relevant quantity is not the number of clients but the size of a \emph{fault domain}: the set of validators that would produce the same erroneous judgment for the same fault. -This paper separates three layers that should not be conflated. +Following that fault-specific analysis one further question becomes unavoidable: even if independently correct checking is sufficient today, what maintains the independently corrective population, the observability of useful maintenance, and the resources that allow those capacities to persist tomorrow? + +This paper separates five questions that should not be conflated. \begin{enumerate}[label=\textbf{R\arabic*.},leftmargin=*] \item \textbf{Verdict attribution.} Given the current Gray Paper dispute rules, how large can the combined adversarial-plus-buggy-positive bloc become before a bad verdict, and therefore ordinary offender attribution, can no longer be guaranteed? \item \textbf{Audit escalation.} Under ELVES's pessimistic adaptive-crash branching model, how does a shared fault change the reproduction number of independent correction? \item \textbf{Sampling dilution.} When only a sample audits, can adding honest-but-correlated validators reduce structural safety even before incentives or behavior change? +\item \textbf{Recurrent corrective capacity.} Does event-level supercritical correction imply that the capacities supporting independent correction are themselves maintained across audits? +\item \textbf{Dynamic resilience.} Can the system remain supercritical now while its corrective margin is already on a trajectory toward future subcriticality, and what return condition prevents that crossing at the critical boundary? \end{enumerate} -The first result is the strongest because it depends only on the current JAM verdict rules plus the correlated-fault thought experiment. The second and third results are extensions of ELVES and inherit its modeling assumptions. +R1 follows from the current JAM verdict rules plus the declared correlated-fault scenario. R2--R5 are model extensions of increasing scope: R2--R3 extend the ELVES branching bookkeeping, while R4--R5 add an explicitly declared cross-audit maintenance layer. The latter variables are not claimed to be existing Gray Paper state variables. \subsection{Main results} @@ -71,14 +77,36 @@ \subsection{Main results} \] The ordering is illustrated in \Cref{fig:thresholds}. -Finally, with \(C_x\) fixed, +With \(C_x\) fixed, \[ \lambda_x(N)=F\frac{C_x}{N} \] is strictly decreasing in \(N\). Hence adding honest validators that belong to the same fault domain can reduce the corrective reproduction number without any behavioral response. The effect remains in a JAM-specific fixed-core variant in which the expected initial sample grows with validator count, although the larger sample partly offsets the dilution. +R4 then separates this event-level condition from a slower maintenance condition. In a minimal declared cycle linking corrective capacity \(C\), maintenance observability \(O\), and returned resources \(R\), the canonical replacement condition is +\[ +\boxed{ +k_{CO}k_{OR}k_{RC}\ge(1-r_C)(1-r_O)(1-r_R). +} +\] +Machine-checked counterexamples show that this condition and \(\lambda_x>1\) imply neither one another. + +R5 adds time. Let the normalized independently corrective coordinate evolve as +\[ +C_{t+1}=r_C C_t+k_{RC}R_t, +\qquad +\lambda_{x,t}=F C_t. +\] +At the fast critical boundary \(\lambda_{x,t}=1\), the next audit remains at or above criticality exactly when +\[ +\boxed{ +F k_{RC}R_t\ge 1-r_C. +} +\] +This gives a maintenance-return boundary in the same units as the current audit threshold. A separate machine-checked finite-horizon witness shows that two systems can have the same current supercritical value \(\lambda_0=3/2\) yet lie on opposite sides of the threshold five rounds later when their cross-audit maintenance multipliers differ. Current audit reproduction is therefore not, within the declared dynamic model, a sufficient statistic for horizon resilience. + \subsection{Scope} -Nothing in this paper establishes that JAM currently violates a security requirement or that a particular correlated client bug exists. The model deliberately asks what follows \emph{if} a crafted report lies inside a shared fault domain. The results are therefore best read as assumption audits and design margins. +Nothing in this paper establishes that JAM currently violates a security requirement or that a particular correlated client bug exists. The model deliberately asks what follows \emph{if} a crafted report lies inside a shared fault domain and, for R4--R5, what follows under explicitly declared maintenance dynamics. The results are therefore best read as assumption audits, phase boundaries and candidate resilience margins. The paper also distinguishes accidental failure from strategic exploitation. For an accidental bug, assignment probabilities determine how often a bad report is produced and how often independently correct auditors see it. For a strategic attacker who knows the bug, opportunity can be concentrated on favorable assignments. We quantify the frequency of such assignments but do not assume the attacker can route arbitrary work to a chosen core unless that ability is established separately. From 00e8d39e257134490980b5e6a03d5788fc43f420 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:12:29 +0200 Subject: [PATCH 16/61] Add dynamic resilience result to JAM paper --- .../sections/06b_resilience_dynamics.tex | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex diff --git a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex new file mode 100644 index 0000000..7545f29 --- /dev/null +++ b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex @@ -0,0 +1,115 @@ +\section{Result 5: current correction is not a sufficient statistic for future resilience} +\label{sec:resilience-dynamics} + +Result 4 separates two reproduction conditions. The next question is dynamic: can a system remain on the supercritical side of the current audit condition while the capacity supporting future correction is already eroding? + +\subsection{Coupling slow capacity to fast audit reproduction} + +Let the slow maintenance state at cross-audit time $t$ be +\[ +X_t=(C_t,O_t,R_t), +\] +where $C_t$ is a normalized fault-specific independently corrective capacity, $O_t$ is maintenance observability or attribution capacity, and $R_t$ is returned-resource capacity. Consider the declared linear update +\begin{align} +C_{t+1}&=r_C C_t+k_{RC}R_t,\\ +O_{t+1}&=r_O O_t+k_{CO}C_t,\\ +R_{t+1}&=r_R R_t+k_{OR}O_t. +\end{align} +The variables and coefficients remain model quantities rather than Gray Paper state variables. + +For fixed audit escalation factor $F$, couple the fast fault-specific reproduction number directly to the corrective coordinate: +\[ +\lambda_{x,t}=F C_t. +\] +It follows exactly that +\[ +\lambda_{x,t+1} +=r_C\lambda_{x,t}+F k_{RC}R_t. +\] +This identity is machine checked in the repository. + +\subsection{An exact maintenance-return boundary} + +The most useful case is the fast critical boundary. Suppose +\[ +\lambda_{x,t}=1. +\] +Then +\[ +\lambda_{x,t+1}=r_C+F k_{RC}R_t, +\] +and therefore +\[ +\boxed{ +\lambda_{x,t+1}\ge1 +\quad\Longleftrightarrow\quad +F k_{RC}R_t\ge1-r_C. +} +\] +Thus the quantity +\[ +\boxed{ +M_t=F k_{RC}R_t-(1-r_C) +} +\] +acts as a local maintenance-return margin at the audit critical boundary. A negative margin implies that a system sitting exactly at current criticality crosses below it on the next cross-audit update; a positive margin moves it above criticality. + +This result is deliberately narrower than a general stability theorem for the full three-dimensional system. Its advantage is interpretability: the left side is the familiar event-level audit threshold, while the right side states exactly how much effective returned resource is required to replace attrition in the corrective coordinate. + +\subsection{Latent resilience loss} + +The critical-boundary theorem already shows why a snapshot of $\lambda_x$ is incomplete. A system can have a positive current corrective margin and nevertheless lose that margin if its maintenance return is insufficient. + +To expose this without pretending that the full slow coefficients are empirically known, define a reduced cross-audit multiplier $m$ for the effective reproduction coordinate: +\[ +\lambda_{t+1}=m\lambda_t, +\qquad +\lambda_t=m^t\lambda_0. +\] +This $m$ is a reduced net multiplier; it is not identical to the three-process loop ratio $\mathcal R_M$ from Result 4. + +Define the current corrective margin +\[ +\mu_t=\lambda_t-1. +\] +Then the one-step margin identity is +\[ +\boxed{ +\mu_{t+1}=m\mu_t-(1-m). +} +\] +For $m<1$, even a positive margin is therefore subject to both multiplicative shrinkage and an additive replacement drag created by the fixed critical boundary at one. + +The Lean formalization includes the following counterexample. Take two systems with the same observed current reproduction number +\[ +\lambda_0=\frac32. +\] +For the first, let $m=1$; then $\lambda_t=3/2$ for every $t$. For the second, let $m=9/10$; then after five cross-audit steps +\[ +\lambda_5 +=\left(\frac9{10}\right)^5\frac32 +\approx0.886<1. +\] +The systems are indistinguishable if one observes only the present value $\lambda_0$, yet one remains supercritical at the chosen horizon and the other does not. Therefore, in the declared dynamic model, +\[ +\boxed{ +\text{current }\lambda_x +\text{ is not a sufficient statistic for finite-horizon corrective resilience.} +} +\] + +A second full-state witness starts with $F=2$ and $C_t=3/4$, so $\lambda_{x,t}=3/2>1$. If only half of $C_t$ is retained and the immediate returned-resource contribution to $C_{t+1}$ is zero, the next reproduction number is $3/4<1$. Current supercriticality alone therefore supplies no invariant preventing a future threshold crossing. + +\subsection{What would make this operational?} + +The formal result shifts the empirical question. Measuring current client shares or current audit success is not enough to estimate persistence of correction. A deployment would need evidence about at least: +\begin{itemize} +\item the rate at which independently corrective implementations/operators enter, leave, converge, or become correlated; +\item whether useful independent audit effort can be distinguished from nominal participation; +\item whether rewards, operator revenue, tooling and development resources return preferentially to capacities that preserve independent correction; +\item whether those return flows close the measured replacement gap before the fast margin is exhausted. +\end{itemize} + +This is related to, but distinct from, proposals to prove client identity and reward minority implementations \citep{ron2026}. Such mechanisms can instantiate part of the $O\to R$ pathway. The present model asks an additional systems question: whether the resulting return loop is strong enough, relative to attrition, to preserve the fault-specific corrective capacity on which the audit process relies. + +Longitudinal measurements are therefore central. Ethereum evidence already shows that validator participation and concentration are time-dependent and can be affected by major clients and operators \citep{grandjean2023}. For JAM, the corresponding resilience object would be a time-dependent pair: the current fault-specific audit reproduction margin together with an empirically grounded maintenance-return margin. From deda1a8c2f8c0e1801ae67fa11bc87d93965cc86 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:13:03 +0200 Subject: [PATCH 17/61] Add dynamic resilience result to manuscript --- papers/correlated-honest-failure/main.tex | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/papers/correlated-honest-failure/main.tex b/papers/correlated-honest-failure/main.tex index 7a376b2..a51127e 100644 --- a/papers/correlated-honest-failure/main.tex +++ b/papers/correlated-honest-failure/main.tex @@ -24,7 +24,7 @@ \newcommand{\ceil}[1]{\left\lceil #1\right\rceil} \title{\textbf{Correlated Honest Failure in JAM/ELVES}\\ -\large Fault-Domain Concentration, Sampling Dilution, and Recurrent Corrective Capacity} +\large Fault-Domain Concentration, Sampling Dilution, and Dynamic Corrective Resilience} \author{Albert Jan van Hoek} \date{Draft --- September 2026} @@ -48,9 +48,23 @@ \[ k_{CO}k_{OR}k_{RC}\ge(1-r_C)(1-r_O)(1-r_R). \] -Machine-checked witnesses show that \(\lambda_x>1\) does not imply this maintenance condition and that maintenance viability does not imply \(\lambda_x>1\). The two thresholds therefore define a genuine two-timescale phase structure: a system may be correctable now while eroding the capacity required to remain correctable later, or may remain operational while lacking fault-specific independent correction. +Machine-checked witnesses show that \(\lambda_x>1\) does not imply this maintenance condition and that maintenance viability does not imply \(\lambda_x>1\). The two thresholds therefore define a genuine two-timescale phase structure. -These are model extensions, not claims about an observed JAM vulnerability. The attribution result follows from the current Gray Paper verdict rules; the branching, dilution and recurrent-maintenance results inherit declared modeling assumptions. The purpose is to make the additional assumptions required by correlated honest failure and long-run corrective capacity explicit and reviewable by the ELVES and JAM authors. +Fifth, coupling the slow corrective-capacity coordinate to the next audit yields an exact local maintenance-return boundary. With +\[ +C_{t+1}=r_CC_t+k_{RC}R_t, +\qquad +\lambda_{x,t}=FC_t, +\] +current criticality \(\lambda_{x,t}=1\) implies +\[ +\lambda_{x,t+1}\ge1 +\quad\Longleftrightarrow\quad +Fk_{RC}R_t\ge1-r_C. +\] +A separate machine-checked finite-horizon witness gives two systems with the same current \(\lambda_0=3/2\) but opposite five-step threshold status under different cross-audit maintenance multipliers. Thus current audit reproduction is not, within the declared dynamic model, a sufficient statistic for future corrective resilience. + +These are model extensions, not claims about an observed JAM vulnerability. The attribution result follows from the current Gray Paper verdict rules; the branching, dilution, recurrent-maintenance and dynamic results inherit declared modeling assumptions. The purpose is to expose which quantities must remain above replacement if a sampled decentralized auditing system is to preserve its capacity for independent correction over time. \end{abstract} \input{sections/01_introduction.tex} @@ -59,6 +73,7 @@ \input{sections/04_escalation.tex} \input{sections/05_sampling.tex} \input{sections/06_recurrent_maintenance.tex} +\input{sections/06b_resilience_dynamics.tex} \input{sections/06_implications.tex} \input{sections/07_limitations.tex} \input{sections/08_conclusion.tex} From 59e48ad31b1dc63f556a5c3db0d29d609eaae9f6 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:13:32 +0200 Subject: [PATCH 18/61] Add dynamic corrective-resilience claims --- papers/correlated-honest-failure/CLAIMS.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/papers/correlated-honest-failure/CLAIMS.md b/papers/correlated-honest-failure/CLAIMS.md index dfc0474..7ac3931 100644 --- a/papers/correlated-honest-failure/CLAIMS.md +++ b/papers/correlated-honest-failure/CLAIMS.md @@ -21,6 +21,12 @@ | E3 | Slow maintenance viability does not imply event-level supercritical correction for a particular fault. | Machine-checked separation witness | Witness uses a strong slow loop but `f=3/4`, giving `lambda_x=1/2` at `F=2, gamma=0`. | | E4 | All four cells of the two-threshold phase structure are jointly inhabitable in the declared model. | Machine-checked witnesses | This is logical/model non-equivalence, not an empirical statement about JAM deployment. | | E5 | A system can therefore be correctable in the current audit while the modeled capacity supporting future correction is below replacement, or operationally persistent while fault-specific correction is subcritical. | Interpretation of E2–E4 | Requires empirical/protocol mapping before any claim about actual JAM long-run dynamics. | +| F1 | Under the declared state update `C' = r_C C + k_RC R` and fast coupling `lambda = F C`, next reproduction satisfies `lambda' = r_C lambda + F k_RC R`. | Machine-checked exact identity | `C`, `R`, and their update coefficients are declared slow-state variables, not Gray Paper variables. | +| F2 | At current criticality `lambda=1`, next reproduction is at least critical iff `F k_RC R >= 1-r_C`. | Machine-checked exact equivalence | Local one-step maintenance-return boundary; not a general stability theorem for the full three-dimensional loop. | +| F3 | At current criticality, strict return shortfall makes the next audit subcritical; strict return surplus makes it supercritical. | Machine-checked corollaries of F2 | Same declared state model. | +| F4 | In the reduced path `lambda_t=m^t lambda_0`, the correction margin obeys `mu_{t+1}=m mu_t-(1-m)`. | Machine-checked identity | `m` is a reduced net cross-audit multiplier and is not identified with the three-process loop ratio `R_M`. | +| F5 | The same current supercritical reproduction number can correspond to different finite-horizon threshold status: with `lambda_0=3/2`, `m=1` remains supercritical at step 5 whereas `m=9/10` is subcritical. | Machine-checked counterexample | Numerical witness demonstrates non-identifiability; it is not a calibrated JAM forecast. | +| F6 | Current `lambda_x` is therefore not a sufficient statistic for finite-horizon corrective resilience in the declared dynamic model. | Interpretation of F4–F5 | Forecasting actual JAM resilience requires empirical identification of slow-state dynamics. | ## Explicit non-claims @@ -34,4 +40,6 @@ The paper does not claim: - that the Gray Paper already specifies numerical coefficients for the slow `C -> O -> R -> C` maintenance loop; - that `lambda_x > 1` guarantees preservation of corrective capacity across future audits; - that persistence of a validator/economic ecosystem guarantees independent correction for every correlated fault; -- novelty for the underlying positive-systems, spectral-radius, or reproduction-number threshold mathematics used to motivate the slow-loop abstraction. +- that the reduced multiplier `m=9/10` or any other numerical slow-dynamics parameter is an estimate for JAM; +- that a single current observation of `lambda_x` is sufficient to estimate a future failure probability; +- novelty for the underlying positive-systems, spectral-radius, reproduction-number, or geometric-decay mathematics used in the declared slow models. From bbd323370943706908e19c4a1797b6a2196182eb Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:13:53 +0200 Subject: [PATCH 19/61] Add maintenance-return margin and horizon resilience --- docs/RECURRENT_CORRECTIVE_CAPACITY.md | 97 ++++++++++++++++++++++++--- 1 file changed, 88 insertions(+), 9 deletions(-) diff --git a/docs/RECURRENT_CORRECTIVE_CAPACITY.md b/docs/RECURRENT_CORRECTIVE_CAPACITY.md index 1ff1bec..364133c 100644 --- a/docs/RECURRENT_CORRECTIVE_CAPACITY.md +++ b/docs/RECURRENT_CORRECTIVE_CAPACITY.md @@ -2,10 +2,11 @@ ## Purpose -The JAM/ELVES analysis now distinguishes two reproduction questions: +The JAM/ELVES analysis now distinguishes three questions: 1. **Within-audit corrective reproduction**: does independently correct checking reproduce during the current dispute process? -2. **Cross-audit maintenance reproduction**: does the surrounding architecture preserve the capacity required to remain independently corrective in future audits? +2. **Cross-audit maintenance reproduction**: does the surrounding architecture preserve the capacities required to remain independently corrective? +3. **Finite-horizon corrective resilience**: can current supercritical correction persist under the measured replenishment and attrition dynamics? These are not the same condition. @@ -68,14 +69,92 @@ and \text{maintenance viability}\not\Rightarrow\lambda_x>1. \] +## Dynamic bridge to the next audit + +`formalization/JamResilienceDynamics.lean` adds an explicit slow state + +\[ +X_t=(C_t,O_t,R_t) +\] + +with update + +\[ +C_{t+1}=r_CC_t+k_{RC}R_t, +\] +\[ +O_{t+1}=r_OO_t+k_{CO}C_t, +\] +\[ +R_{t+1}=r_RR_t+k_{OR}O_t. +\] + +The fast audit reproduction supplied by this state is + +\[ +\lambda_{x,t}=FC_t. +\] + +Hence + +\[ +\lambda_{x,t+1}=r_C\lambda_{x,t}+Fk_{RC}R_t. +\] + +At current criticality, `lambda_x,t = 1`, Lean verifies the exact maintenance-return boundary + +\[ +\boxed{\lambda_{x,t+1}\ge1\iff Fk_{RC}R_t\ge1-r_C.} +\] + +This motivates the local return margin + +\[ +M_t=Fk_{RC}R_t-(1-r_C). +\] + +- `M_t < 0`: a currently critical system crosses below the audit threshold on the next slow update; +- `M_t = 0`: replacement exactly closes the local corrective-capacity gap; +- `M_t > 0`: a currently critical system moves above the audit threshold. + +This is a one-step boundary, not a general stability theorem for the full slow system. + +## Why current audit success is not enough + +For a reduced effective cross-audit multiplier `m`, define + +\[ +\lambda_t=m^t\lambda_0. +\] + +The correction margin `mu_t=lambda_t-1` obeys + +\[ +\mu_{t+1}=m\mu_t-(1-m). +\] + +A machine-checked counterexample starts two systems at the same current value `lambda_0=3/2`: + +- with `m=1`, the system is still at `3/2` after five steps; +- with `m=9/10`, it is below one after five steps. + +Thus a snapshot of current `lambda_x` does not identify finite-horizon resilience in the declared dynamic model. The reduced multiplier is a diagnostic abstraction, not a calibrated JAM parameter and not the same object as the three-process loop ratio. + ## Empirical grounding needed next -The mathematical separation is useful only if the slow-loop terms can be grounded. The next protocol-facing work should therefore identify measurable proxies for: +A protocol-facing resilience assessment would need measurable proxies for: + +- the current fault-specific independently corrective share `C_x,t`; +- rates at which independent implementations/operators enter, exit, converge, or become correlated; +- real audit effort versus nominal participation; +- observability/attribution of useful independent maintenance; +- economic and development resources returned to independently corrective implementations/operators; +- the time scale on which those returns affect future corrective capacity; +- the current maintenance-return margin and its uncertainty; +- horizon forecasts under plausible ranges rather than a single point estimate. + +Client identity or diversity proofs can help make part of this state observable, but observability alone does not establish that the return loop closes. The operational target is stronger: estimate whether the processes that produce independent correction are themselves above replacement before the current audit margin is exhausted. -- how current independently corrective capacity is replenished or lost; -- how actual audit effort and useful independent correction are observed; -- how staking/operator/client economics return resources to those capacities; -- how implementation concentration changes over time; -- whether these return paths are fast enough to offset attrition. +A concrete testnet/deployment question is therefore: -This suggests a concrete empirical question for JAM deployments or testnets: can the system estimate a time-dependent maintenance margin for independent corrective capacity, separately from the current ELVES audit reproduction number? +> Can JAM estimate both the current fault-specific audit reproduction margin and a separate cross-audit maintenance-return margin, and detect a projected threshold crossing before event-level correction becomes subcritical? From 3573292c1891c7d08beceb0c245ba15a8b9c68a5 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:14:24 +0200 Subject: [PATCH 20/61] Conclude with dynamic corrective-resilience boundary --- .../sections/08_conclusion.tex | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/papers/correlated-honest-failure/sections/08_conclusion.tex b/papers/correlated-honest-failure/sections/08_conclusion.tex index 26fa0cf..b39d36c 100644 --- a/papers/correlated-honest-failure/sections/08_conclusion.tex +++ b/papers/correlated-honest-failure/sections/08_conclusion.tex @@ -2,7 +2,7 @@ \section{Discussion and conclusion} The standard honest/adversarial partition is sufficient only when ``honest'' also means ``independently correct for the fault being exploited.'' Correlated implementation failure separates those concepts. -The resulting JAM/ELVES analysis now has three nested event-level boundaries plus one orthogonal cross-time maintenance condition. +The resulting JAM/ELVES analysis has three nested event-level boundaries, an orthogonal cross-time maintenance condition, and a dynamic bridge between them. First, the dispute layer has an attribution boundary. If the combined adversarial-plus-buggy-positive bloc exceeds roughly one third of the validator population, independently correct validators no longer suffice by themselves to construct a bad verdict. The report can still be stopped through a wonky outcome, but the ordinary Gray Paper offender-attribution path changes. This is a protocol-rule result, not a branching-model result. @@ -24,11 +24,35 @@ \section{Discussion and conclusion} \] Machine-checked counterexamples show that this maintenance condition and \(\lambda_x>1\) imply neither one another. The maintenance condition should therefore not be read as a fourth point on the earlier one-third/one-half/two-thirds sequence. It is an orthogonal timescale. -This separation exposes two distinct failure modes. A system can be correctable now while selecting against, failing to observe, or failing to resource the capacities required to remain correctable later. Conversely, a validator and staking ecosystem can remain operationally self-maintaining while excessive common-mode implementation concentration makes correction subcritical for a particular fault. +Fifth, once the slow corrective-capacity state is allowed to feed the next audit, the separation becomes a dynamic resilience condition. Under +\[ +C_{t+1}=r_CC_t+k_{RC}R_t, +\qquad +\lambda_{x,t}=FC_t, +\] +we obtain +\[ +\lambda_{x,t+1}=r_C\lambda_{x,t}+Fk_{RC}R_t. +\] +At current criticality this gives the exact machine-checked boundary +\[ +\boxed{ +\lambda_{x,t+1}\ge1 +\quad\Longleftrightarrow\quad +Fk_{RC}R_t\ge1-r_C. +} +\] +The difference +\[ +M_t=Fk_{RC}R_t-(1-r_C) +\] +is therefore a candidate local maintenance-return margin: its sign tells whether a currently critical corrective state crosses below, stays at, or moves above the fast audit threshold on the next slow update. -Together these results suggest that a useful security variable is not raw validator count or raw client count but fault-specific independent corrective capacity, together with the architecture that preserves that capacity over time. Because future faults are unknown, operators cannot observe fault-specific independent correction directly. They can only monitor exposure to plausible common components and examine whether the surrounding protocol, staking and client ecosystem maintain diversity, useful checking and the return paths that support them. +This dynamic bridge exposes a stronger failure mode than static insufficiency. A system can remain on the supercritical side of its current audit condition while its corrective margin is predictably decaying toward subcriticality. The Lean formalization demonstrates this by constructing two systems with the same current \(\lambda_0=3/2\) but opposite five-step threshold status under different reduced maintenance multipliers. Current audit reproduction is therefore not, within the declared model, a sufficient statistic for finite-horizon corrective resilience. -The most concise summary is therefore: +Together these results suggest that the relevant security object is not raw validator count, raw client count, or even current \(\lambda_x\) alone. It is a pair consisting of fault-specific independent corrective capacity and the maintenance dynamics that replenish or erode that capacity. Because future faults are unknown, this object cannot be observed perfectly. But implementation exposure, useful audit effort, client/operator turnover, diversity-aware rewards, development resources and other return flows can in principle provide measurable proxies. + +The most concise hierarchy is therefore: \[ \boxed{ \text{honest stake} @@ -38,15 +62,19 @@ \section{Discussion and conclusion} \text{attacker-attributable stake}, } \] -with the additional cross-time distinction +followed by \[ \boxed{ \text{corrective reproduction now} \neq -\text{reproduction of corrective capacity over time}. +\text{reproduction of corrective capacity over time} +\neq +\text{finite-horizon corrective resilience}. } \] -The first distinction matters for auditing and economics. The second matters for long-run robustness. The Gray Paper and ELVES already provide a strong framework for reasoning about adversarial and availability failures; correlated honest failure asks where shared implementation dependencies enter that framework, while the recurrent-maintenance extension asks what additional architecture is required to keep the independently corrective part of the system from eroding between audits. +The first distinction matters for auditing and economics. The second separates an event-level success condition from a cross-time maintenance condition. The third makes that maintenance condition operational by asking whether the observed return flows are sufficient to keep the fast corrective threshold from being crossed in the future. + +This also clarifies the relationship to existing client-diversity work. Demonstrating or rewarding minority implementations can improve the observability and resource-return parts of the loop, but it does not by itself establish that fault-specific independent corrective capacity is above replacement. The additional question is whether the resulting return process is strong and fast enough relative to attrition to preserve future correction. -The next external step remains review by the ELVES and JAM authors, especially on the wonky-verdict economics and the substitution of \(h_x\) into the branching proof. The recurrent-maintenance result adds a separate question for that review: which protocol, staking, operator and client-ecosystem mechanisms actually close the slow return loop, and which coefficients could in principle be measured rather than assumed? If the event-level mappings are accepted, fault-domain exposure becomes a quantitatively defined protocol margin. If the slow-loop mapping can also be grounded, the analysis can move from current corrective capacity to the conditions under which that capacity persists. +External review by the ELVES and JAM authors remains essential, especially on the wonky-verdict economics, the substitution of \(h_x\) into the branching proof, and the mapping from protocol/ecosystem mechanisms to the declared slow state. The strongest next empirical test is correspondingly concrete: determine whether a JAM deployment or testnet can estimate both a current fault-domain correction margin and an independent maintenance-return margin, then test whether the latter predicts changes in the former before event-level correction becomes subcritical. From 5efd691938fc93b8b4e26767b53f79f5345e624a Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:14:50 +0200 Subject: [PATCH 21/61] Document dynamic JAM resilience result --- papers/correlated-honest-failure/README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/papers/correlated-honest-failure/README.md b/papers/correlated-honest-failure/README.md index 4687b85..f0ee919 100644 --- a/papers/correlated-honest-failure/README.md +++ b/papers/correlated-honest-failure/README.md @@ -8,9 +8,20 @@ Repo-ready LaTeX package for the technical companion paper. 2. **Fault-specific ELVES escalation** under correlated honest failure. 3. **Sampling dilution** showing that honest-but-correlated validator additions can lower corrective reproduction. 4. **Recurrent corrective capacity** separating within-audit corrective reproduction from cross-audit maintenance of the capacity required to remain corrective. +5. **Dynamic corrective resilience** coupling slow corrective capacity back to the next audit and showing that current `lambda_x` alone does not determine finite-horizon resilience. Result 4 introduces a declared slow `C -> O -> R -> C` loop linking independently corrective capacity, observability/attribution of genuine maintenance, and resources returned to preserve future corrective capacity. Machine-checked witnesses show that the event-level condition `lambda_x > 1` and the slow maintenance replacement condition imply neither one another. The maintenance threshold is therefore an orthogonal timescale, not a fourth nested point on the verdict/audit threshold sequence. +Result 5 adds a slow state update and the bridge `lambda_x,t = F C_t`. At current criticality, Lean verifies the exact one-step condition + +\[ +\lambda_{x,t+1}\ge1 +\iff +F k_{RC}R_t\ge1-r_C. +\] + +The same formalization gives two systems with identical current `lambda_0 = 3/2` but opposite five-step threshold status under different reduced maintenance multipliers. This is the paper's central dynamic claim: current audit reproduction is not a sufficient statistic for future corrective resilience in the declared model. + ## Files - `main.tex` — manuscript entry point. @@ -20,6 +31,7 @@ Result 4 introduces a declared slow `C -> O -> R -> C` loop linking independentl - `CLAIMS.md` — claim-status ledger. - `reproduce.py` — dependency-free reproduction of numerical tables. - `../../formalization/JamRecurrentMaintenance.lean` — machine-checked two-timescale separation witnesses. +- `../../formalization/JamResilienceDynamics.lean` — machine-checked slow-to-fast bridge, maintenance-return boundary and finite-horizon non-identifiability witness. ## Build @@ -38,4 +50,4 @@ python reproduce.py ## Scope -This is not a JAM security audit and does not claim an observed vulnerability. Result 1 derives from the Gray Paper verdict rules under a declared correlated-fault scenario. Results 2-3 extend ELVES and therefore require review by the ELVES authors. Result 4 is a declared slow-timescale systems extension motivated by the repository's grounded JAM maintenance analysis; its coefficients are not claimed to be current Gray Paper parameters, and novelty is not claimed for the underlying positive-systems/reproduction-number threshold mathematics. +This is not a JAM security audit and does not claim an observed vulnerability. Result 1 derives from the Gray Paper verdict rules under a declared correlated-fault scenario. Results 2-3 extend ELVES and therefore require review by the ELVES authors. Results 4-5 add declared slow-timescale systems dynamics motivated by the repository's grounded JAM maintenance analysis. Their coefficients and reduced multipliers are not claimed to be current Gray Paper parameters or calibrated JAM estimates, and novelty is not claimed for the underlying positive-systems, reproduction-number or geometric-decay mathematics. From 84692062e4fff5ebc36d6265d381d089bc4adb8f Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:15:43 +0200 Subject: [PATCH 22/61] Document dynamic JAM resilience formalization --- formalization/README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/formalization/README.md b/formalization/README.md index a5a366a..4ba3b6b 100644 --- a/formalization/README.md +++ b/formalization/README.md @@ -69,6 +69,14 @@ The Lean source checks only the algebraic core of the declared model. It does no | Event-level correction does not imply maintenance viability | `correction_supercritical_does_not_imply_maintenance_viable` | | Maintenance viability does not imply event-level correction | `maintenance_viable_does_not_imply_correction_supercritical` | | Jointly viable and jointly non-viable phase cells are inhabited | `both_reproduction_conditions_can_hold`; `neither_reproduction_condition_need_hold` | +| Next audit reproduction from slow-state update | `jam_next_reproduction_identity` | +| Exact return boundary at current criticality | `jam_critical_return_boundary` | +| Return shortfall/surplus determines next-step threshold direction | `jam_return_shortfall_makes_next_audit_subcritical`; `jam_return_surplus_makes_next_audit_supercritical` | +| Reduced cross-audit recurrence | `jamReducedCorrectionPath_succ` | +| Exact correction-margin recursion | `jamCorrectionMargin_step` | +| Subunit maintenance multiplier strictly erodes positive reproduction | `jamReducedCorrection_strictly_declines` | +| Same current reproduction can imply opposite five-step resilience | `event_level_success_not_sufficient_statistic_for_five_step_resilience` | +| Current supercritical state can cross below threshold next round | `current_supercritical_can_cross_subcritical_next_round` | | Fungal redundant-state stability iff effective gain < 1 | `fungal_stable_iff_effective_gain_lt_one` | | Unit fungal effective gain is neutral | `fungal_neutral_iff_effective_gain_eq_one` | | Superunit fungal effective gain is unstable | `fungal_unstable_iff_effective_gain_gt_one` | @@ -144,10 +152,14 @@ leastness hypothesis remains assumed in `selected_safety_iff_critical_cost`. `JamRecurrentMaintenance.lean` adds a second timescale to the JAM analysis. It keeps the ELVES-style fault-specific reproduction mean `lambda_x` separate from a declared slow `C -> O -> R -> C` maintenance loop linking independently corrective capacity, maintenance observability/attribution and returned resources. The file machine-checks explicit witnesses showing that event-level supercritical correction and slow maintenance viability imply neither one another, and it inhabits all four phase cells. The slow-loop coefficients are model parameters rather than claimed Gray Paper variables; no novelty is claimed for the underlying positive-systems/reproduction-number threshold mathematics. +## JAM dynamic corrective resilience + +`JamResilienceDynamics.lean` couples the slow corrective-capacity coordinate back to the next audit. For the declared state update `C' = r_C C + k_RC R` and `lambda = F C`, it proves the exact identity `lambda' = r_C lambda + F k_RC R`. At current criticality it then proves the one-step maintenance-return boundary `lambda' >= 1` iff `F k_RC R >= 1-r_C`, including strict shortfall and surplus corollaries. A reduced cross-audit path separately proves that the same current `lambda` can lead to opposite finite-horizon threshold status under different maintenance multipliers. These are dynamic model implications, not calibrated JAM forecasts. + ## Fungal flow-coupled maintenance `FungalFlowMaintenance.lean` formalizes Experiment 12's two-route local stability boundary. The nonlinear flow-reinforcement rule is a falsification model extension motivated by empirical fungal flow/cord-growth coupling; the file does not claim that this exact power-law is fungal physiology. ## Viability-conditioned ought synthesis -`ViabilityOught.lean` formalizes one exact structural synthesis result: the grounded JAM correction/failure branching requirements admit a common positive escalation strength iff the effective failure-amplifying share is smaller than the effective corrective share. The philosophical interpretation of such admissible regions as "viability-conditioned oughts" is kept outside the theorem. \ No newline at end of file +`ViabilityOught.lean` formalizes one exact structural synthesis result: the grounded JAM correction/failure branching requirements admit a common positive escalation strength iff the effective failure-amplifying share is smaller than the effective corrective share. The philosophical interpretation of such admissible regions as "viability-conditioned oughts" is kept outside the theorem. From 24ff9fe8469addcb12573cdaf3c1f64d64277b46 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:16:03 +0200 Subject: [PATCH 23/61] Clarify limits of dynamic resilience extension --- .../sections/07_limitations.tex | 71 ++++++++----------- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/papers/correlated-honest-failure/sections/07_limitations.tex b/papers/correlated-honest-failure/sections/07_limitations.tex index b8326e9..6961f2c 100644 --- a/papers/correlated-honest-failure/sections/07_limitations.tex +++ b/papers/correlated-honest-failure/sections/07_limitations.tex @@ -1,53 +1,44 @@ -\section{Limitations and questions for the ELVES/JAM authors} -\label{sec:limitations} +\section{Limitations and claim boundaries} -The purpose of this paper is to expose assumptions, not to claim a complete security analysis. Several issues require author or implementation review. +This paper combines one direct protocol-rule derivation with several declared model extensions. The distinction is essential. -\subsection{Correlated honest failure is outside the ELVES proof model} +\paragraph{Correlated fault domains are hypothetical inputs, not observed JAM failures.} +The paper does not establish that a currently deployed or planned JAM client contains a fault shared by any particular validator fraction. The fault-domain model asks what follows if such a dependency exists. -The branching extension assumes that a buggy honest auditor behaves like an auditor that cannot produce a useful negative judgment for fault \(x\). This is a natural substitution in the reproduction mean, but it is not proved by ELVES. The exact coupling to adaptive crashes, tranche timing, and the paper's stronger committee-size concentration bounds should be checked by the ELVES authors. +\paragraph{The ELVES branching substitution is an extension.} +Replacing the original independently honest corrective share by the fault-specific independently correct share $h_x$ is analytically transparent, but it is outside the assumptions under which the published ELVES result was derived. Its interpretation therefore requires review by the ELVES authors. -\subsection{The verdict analysis assumes enough judgments become available} +\paragraph{The pessimistic branching process is not an exact protocol simulator.} +The reproduction number and extinction expressions are inherited from a branching approximation. They identify structural thresholds under that approximation; they do not constitute an exact JAM attack probability. -The finite-population verdict conditions in \Cref{sec:attribution} concern which signed judgment compositions can be assembled. If too many validators are offline, a verdict may fail to reach \(K\) total judgments at all. That is a distinct liveness failure. +\paragraph{Fault domains are not equivalent to client labels.} +Two validators running the same nominal client may differ in version, dependencies, configuration, hardware, or execution environment. Conversely, nominally different clients may share libraries, compilers, specifications, or conceptual defects. The relevant object is fault-specific correlated response, not a client-name count. -\subsection{What does the staking layer do with wonky?} +\paragraph{The slow maintenance state is declared rather than protocol-native.} +The variables $C_t$, $O_t$, and $R_t$ and coefficients $r_C,r_O,r_R,k_{CO},k_{OR},k_{RC}$ are analytical state variables introduced to expose a cross-audit maintenance question. They are not claimed to be Gray Paper state variables, and the paper does not currently estimate them from a JAM deployment or testnet. -This is the highest-priority clarification. +\paragraph{The recurrent product threshold is not claimed as new mathematics.} +The three-process replacement inequality is a finite positive-systems/reproduction-number structure. The contribution claimed here is its explicit separation from the event-level ELVES correction condition and the resulting JAM-facing systems question, not the product threshold itself. -The Gray Paper records wonky reports in a dedicated set and removes non-positive reports from the availability path. Its ordinary culprit/fault rules refer to good or bad reports, and its punish set is populated by those offense extrinsics. However, the chain's validator rewards and higher-level economic policy are delegated. +\paragraph{The dynamic return theorem is local.} +The equivalence +\[ +\lambda_{t+1}\ge1 +\iff +Fk_{RC}R_t\ge1-r_C +\] +is proved at current criticality under the declared one-step state update. It is not a general stability theorem for the full three-dimensional maintenance system, nor does it establish that the system converges to a particular equilibrium. -Therefore the paper's narrow claim is: -\begin{quote} -A wonky verdict does not create the ordinary Gray-Paper culprit/fault offender record. -\end{quote} -It does \emph{not} follow that a production staking system must impose zero cost. If the staking layer explicitly penalizes guarantors or judges associated with wonky, the economic attribution gap narrows. +\paragraph{The reduced multiplier is diagnostic, not calibrated.} +The reduced path $\lambda_t=m^t\lambda_0$ is used to prove that current reproduction alone does not identify finite-horizon resilience. The witness $m=9/10$ is deliberately transparent and is not an estimate of JAM attrition, client turnover, or any protocol parameter. A deployment forecast would require empirical identification of the slow dynamics and uncertainty around them. -\subsection{The one-vote finite-population gap} +\paragraph{Current supercriticality is not equivalent to guaranteed audit success.} +The condition $\lambda_x>1$ is a supercritical branching condition in the declared ELVES extension. The paper does not equate it with certainty of correct resolution for a particular audit, and the dynamic sections therefore discuss preservation of the reproduction condition rather than guaranteed outcomes. -At \(N=1023\), a global composition of 682 positive and 341 negative judgments does not appear to contain a valid 683-judgment subset with any of the three permitted positive counts \(683\), \(341\), or \(0\). This may be resolved elsewhere in the intended protocol semantics, or it may be an unreachable/irrelevant edge case under assumptions not represented in our abstraction. It should be confirmed rather than silently approximated by the continuous \(2/3\) boundary. +\paragraph{Client-diversity incentives do not automatically close the maintenance loop.} +Existing work shows that client identity can in principle be made verifiable and minority implementations can be differentially rewarded. Such mechanisms may instantiate part of the observability/resource-return pathway, but this paper does not assume that they are sufficient to maintain fault-specific independent corrective capacity. That sufficiency is itself an empirical systems question. -\subsection{Strategic entry is not established} +\paragraph{Protocol and ecosystem boundaries remain partly delegated.} +Operator economics, staking consequences, implementation development, software maintenance and deployment choices span layers beyond execution auditing. The model deliberately exposes this boundary rather than attributing every slow-loop coefficient to the JAM protocol itself. -The probability that at least two of three guarantors share a fault does not imply an attacker can freely choose such a core. Strategic exploitation requires a mapping from attacker-controlled work submission to core assignment and timing. The manuscript therefore separates: -\begin{itemize} -\item \emph{accidental correlated failure}, where assignment probabilities enter the event probability; and -\item \emph{strategic exploitation}, where an attacker conditions on known favorable assignments only if the protocol gives it sufficient choice. -\end{itemize} - -\subsection{Client identity is not fault identity} - -A client-diversity rule can miss shared dependencies and can be gamed when identity is self-declared. Conversely, two versions of the same client might not share a particular bug. The model's fundamental variable is fault-domain membership, which is generally latent until a fault is discovered. - -\subsection{Questions to send with the paper} - -We would ask the ELVES and JAM authors five concrete questions: -\begin{enumerate}[label=Q\arabic*.] -\item Is replacing the honest offspring share \((1-\gamma)\) by a fault-specific independently correct share \(h_x\) valid under the ELVES adaptive-crash proof, or does another part of the proof change? -\item Under the current JAM dispute semantics, is our reading correct that a wonky verdict creates no culprit/fault offender records? Does the intended staking layer nevertheless act on the wonky set? -\item Is the \(N=1023\), 682-positive/341-negative verdict composition handled by another rule, or is the literal three-count verdict restriction intentional? -\item When validator count changes while the 341-core constant remains fixed, is the expected initial audit count per report intended to scale as \(10N/341\) once all cores are active? -\item Are implementation/fault-domain diversity constraints considered anywhere in guarantor assignment, validator selection, or staking beyond the ecosystem-level encouragement of multiple clients? -\end{enumerate} - -A negative answer to any of these can change the conclusions. That is precisely why the results are presented as a reviewable extension rather than a vulnerability claim. +These limitations are not secondary caveats. They define the intended claim hierarchy: direct Gray Paper verdict arithmetic first; ELVES-based fault-domain extension second; recurrent-maintenance and dynamic-resilience models third; empirical grounding and protocol design conclusions only after those mappings survive expert review and measurement. From 51e5bbffe2ea2c5f7f6b2470dc2efe9a8b2c1494 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:16:21 +0200 Subject: [PATCH 24/61] Link recurrent maintenance result to dynamic extension --- .../sections/06_recurrent_maintenance.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex b/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex index f468c2a..cfd0309 100644 --- a/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex +++ b/papers/correlated-honest-failure/sections/06_recurrent_maintenance.tex @@ -116,7 +116,7 @@ \subsection{Two-timescale phase structure} \end{tabularx} \end{center} -The upper-right cell is the main new systems question. A protocol can satisfy its current audit-reproduction condition while selecting against, failing to observe, or failing to resource the costly capacities on which that condition depends in the future. +The upper-right cell is the main systems question opened by this separation. A protocol can satisfy its current audit-reproduction condition while selecting against, failing to observe, or failing to resource the costly capacities on which that condition depends in the future. Result 5 turns this qualitative statement into an explicit cross-audit state update and asks when the fast threshold is actually crossed. The lower-left cell is the complementary failure mode. Persistence of validators, rewards and monitoring infrastructure is not equivalent to preservation of fault-specific independent correction. A homogeneous but well-funded implementation ecosystem can remain operational while losing the diversity needed for one shared fault. @@ -132,4 +132,4 @@ \subsection{Relation to the Gray Paper and ELVES} Some of these mechanisms are explicitly delegated outside the audited assurance layer. That delegation is precisely why event-level correction and cross-time maintenance should be represented by different conditions rather than by one reproduction number. -The falsifiable design question is therefore not merely whether $\lambda_x>1$ today. It is whether the surrounding protocol, staking and client ecosystem jointly close a return loop that keeps independently corrective capacity available across future audits. +The falsifiable design question is therefore not merely whether $\lambda_x>1$ today. It is whether the surrounding protocol, staking and client ecosystem jointly close a return loop that keeps independently corrective capacity available across future audits. Result 5 derives the corresponding one-step replacement condition at the fast critical boundary. From 0de978b640566dbfbd9540601261826ba3dd2dd1 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:16:49 +0200 Subject: [PATCH 25/61] Add dynamic resilience implications --- .../sections/06_implications.tex | 101 +++++++----------- 1 file changed, 40 insertions(+), 61 deletions(-) diff --git a/papers/correlated-honest-failure/sections/06_implications.tex b/papers/correlated-honest-failure/sections/06_implications.tex index 14d9898..3332afe 100644 --- a/papers/correlated-honest-failure/sections/06_implications.tex +++ b/papers/correlated-honest-failure/sections/06_implications.tex @@ -1,86 +1,65 @@ -\section{Corollaries and design questions} -\label{sec:implications} +\section{Implications and design questions} -The three main results are analytical. The following items are consequences or engineering questions, not recommendations established by the model. +The results above do not identify a single protocol fix. They identify distinct interfaces at which correlated honest failure and long-run corrective-capacity loss can enter the system. Keeping those interfaces separate avoids turning a structural analysis into an unsupported prescription. -\subsection{Slashable collateral is not necessarily attacker-attributable collateral} +\subsection{Slashable collateral and attacker-attributable collateral} -ELVES's rational-adversary argument makes invalid acceptance prohibitively expensive by charging collateral to the attack path \citep{burdges2024}. In a conventional attack, the parties signing or backing an invalid result can be economically aligned with the attacker. +If honest guarantors share a bug and sign an invalid report because they genuinely compute the same wrong result, their stake may be slashable under a higher-layer mechanism without being attacker-controlled collateral. These are different economic objects. A security argument that counts all slashable stake as attacker cost therefore requires an explicit attribution mechanism when correlated honest failure is in scope. -A shared implementation bug changes that mapping. If otherwise-honest guarantors compute the same wrong result and sign it, a later bad verdict can place \emph{their} signatures in the culprit path. The protocol may destroy collateral, yet the actor that selected the crafted input may not bear that loss. +The paper does not claim that honest buggy guarantors are unpunished. It claims only that punishment of a mistaken participant is not automatically equivalent to economic loss borne by the adversary who found or exploited the shared bug. -The distinction is: -\[ -\boxed{ -\text{slashable collateral} -\neq -\text{attacker-attributable collateral}. -} -\] +\subsection{Wonky outcomes and attribution gaps} -This does not prove that exploiting the bug is cost-free. It means that the specific expected-profit argument needs an additional mapping from protocol offender to economic beneficiary when honest common-mode faults are admitted. +Under the Gray Paper verdict interpretation used here, a wonky verdict does not create the ordinary culprit/fault offender record. Whether a production staking layer attaches additional consequences is a separate question and should be confirmed with the JAM authors. If wonky outcomes are intentionally an uncertainty state, correlated honest failure gives a concrete reason that such a state may occur without Byzantine equivocation. -The wonky region strengthens the issue: the current Gray Paper does not create ordinary culprit/fault offender records for wonky reports. Whether the staking layer imposes a cost on a wonky report is therefore a first-order question for the protocol authors. +\subsection{Fault-domain exposure rather than client count} -\subsection{Guarantor diversity as a design hypothesis} +The analysis suggests tracking exposure to common components rather than only counting nominal clients. Candidate dimensions include implementation family, version, execution engine, shared libraries, compiler/toolchain, operating system, cloud/operator concentration and common specification interpretations. None is individually equivalent to a fault domain; together they can provide a conservative exposure map. -Every active core has three assigned guarantors and a guarantee carries two or three credentials. If a single fault domain occupies population share \(r\), the probability that at least two of three randomly assigned guarantors belong to that domain is -\[ -\Prb(\ge2)=3r^2(1-r)+r^3. -\] -At \(r=0.2\), this is \(0.104\). Across 341 cores, the expectation is approximately 35.5 core assignments per rotation with at least two guarantors from that domain. +Existing work proposes making client implementation verifiable and using that information to reward minority clients \citep{ron2026}. That can improve one important layer of diversity management. The present analysis adds a stricter criterion: a diversity mechanism matters for audit resilience only insofar as it preserves or increases fault-specific independently corrective capacity. -This number does \emph{not} establish that an attacker can route a crafted package to one of those cores. It quantifies the frequency of favorable assignments if exploitation opportunities can be targeted or waited for. +\subsection{Guarantor diversity} -One possible mitigation is to require the credential set for a guarantee to span declared implementation/fault-domain classes. This could prevent a single honest client bug from supplying both signatures. But the idea has unresolved issues: -\begin{itemize} -\item implementation identity may be self-declared and therefore gameable; -\item nominally distinct clients can share deeper components; -\item diversity constraints may reduce liveness when one implementation class is unavailable; -\item an adversarial validator can lie about identity, although doing so may force its own signature onto the report. -\end{itemize} -Hence guarantor diversity is a hypothesis to analyse, not a proposed protocol change in this paper. +If guarantors for a work report are drawn from different fault domains, a shared implementation defect is less likely to produce unanimous or near-unanimous false support. This is a design hypothesis, not a recommendation established by the present paper. Enforcing diversity can add assignment constraints, latency, implementation-identification requirements and new strategic surfaces. -\subsection{Fault-domain exposure metrics} +\subsection{Announcement and effort observability} -The quantity that matters for an unknown future bug cannot be measured directly: by definition we do not know which validators will be wrong on an input not yet discovered. +The repository's earlier JAM experiments separate nominal participation from useful independent computation. A validator can announce availability yet still contribute little independent corrective information if it rubber-stamps, reuses a correlated result, or relies on the same faulty implementation path. Effort observability therefore affects whether rewards can selectively maintain real checking capacity. -What can be measured is \emph{exposure} to shared components. Examples include validator share by: -\begin{itemize} -\item client implementation; -\item execution VM; -\item compiler/toolchain; -\item cryptographic or erasure-coding library; -\item major shared dependencies; -\item copied or common code paths. -\end{itemize} +This becomes more important in the dynamic model. The slow return loop requires not merely that corrective work exists, but that useful maintenance can be observed well enough for resources to return to the capacities that generated it. Weak maintenance observability can therefore convert an apparently adequate current audit layer into a long-run replacement shortfall. + +\subsection{A maintenance-return margin} + +Result 5 suggests a concrete candidate diagnostic near the current fast threshold. Under the declared coupling, +\[ +M_t=Fk_{RC}R_t-(1-r_C). +\] +At $\lambda_{x,t}=1$, the sign of $M_t$ exactly determines whether the next slow update lies below, at, or above the current audit threshold. -These are upper bounds or proxies for possible fault-domain concentration, not measurements of \(f_x\) for an unknown bug. A useful operational question is therefore whether the largest identifiable shared-component exposure leaves adequate margin below the attribution and escalation boundaries. +The value is not that this particular expression should be hard-coded into JAM. The value is methodological: a protocol can expose a current safety/correction threshold while leaving the replenishment process that maintains the state variable behind that threshold unmeasured. Once the replenishment state is explicit, a replacement-gap diagnostic becomes possible. -\subsection{Announcement shortfall as an early-warning statistic} +A deployment-facing analogue of $M_t$ would require measurable estimates of attrition and return. Possible observables include independent client/operator entry and exit, version concentration, economically sustained minority implementations, audit effort that can be independently verified, and development or operator resources returned to those implementations. Estimation uncertainty should be reported rather than hidden inside a point parameter. -JAM's later tranches respond to unmatched announcements. A validator that is offline before announcing is different: it simply reduces the number of initial auditors that appear. +\subsection{Early warning rather than post-failure diagnosis} -Aggregate announcement counts per report can therefore serve as a statistical early-warning signal for loss of available corrective capacity. The expected count is known from validator count and active-core configuration. A sustained shortfall can indicate that the online population is smaller than the nominal population. +The strongest practical consequence of the dynamic result is temporal. If current $\lambda_x$ is above one but declining because maintenance is below replacement, waiting for $\lambda_x\le1$ detects the problem only after the structural correction condition has already been lost. Monitoring the maintenance-return process creates the possibility of detecting erosion earlier. -This is not a deterministic fault detector. Audit assignment is random, observations are local before information propagates, and the current formal validator-statistics tuple does not directly expose a finalized audit-count metric. The proposal is simply to monitor the discrepancy between expected and observed audit participation. +This reframes resilience as a two-signal problem: +\[ +\text{current corrective margin} +\quad+\quad +\text{maintenance-return margin}. +\] +The first asks whether correction is sufficient now. The second asks whether the processes supplying that correction are being reproduced. A strong implementation of the idea would estimate both through time and test whether deterioration in the second predicts deterioration in the first. -\subsection{Rubber-stamping remains an open interface} +\subsection{Load-dependent no-shows and feedback} -The Gray Paper notes that auditing activity is difficult to track directly and delegates validator rewards to a staking subsystem; peer voting on impressions of validator effort is described as the available oracle mechanism \citep{wood2026}. +The existing ELVES trade-off between larger escalation factor $F$ and no-show growth becomes more complicated if no-show probability itself depends on audit load. The present paper does not solve that endogenous-load problem. It does show why the direction matters: stronger escalation can improve event-level corrective reproduction while simultaneously increasing resource demand, and long-run capacity may respond to that demand. -That leaves a classic verifier's-dilemma-style question \citep{luu2015}: how strongly does the reward signal discriminate actual re-execution from a validator that produces the expected positive judgment without paying the full computation cost? +A future extension should therefore treat validator availability, maintenance cost, observability and returned resources as jointly dynamic rather than independent constants. Such an extension should be attempted only after the simpler state variables can be tied to measurable JAM quantities. -The present paper does not claim that rubber-stamping is selected in JAM. The reward function and effort-observability mechanism are not sufficiently specified to close that game numerically. Candidate approaches such as verifiable execution artifacts, occasional test reports, or other proof-of-effort mechanisms should therefore be evaluated only after the actual staking design is specified. +\subsection{What should be tested next} -\subsection{Load-dependent no-shows are a separate future model} +The most informative next test is not another static client-diversity count. It is a longitudinal test of the proposed separation. On a JAM testnet or sufficiently instrumented deployment, estimate a time series for current fault-domain corrective capacity and independent proxies for maintenance return. Then ask whether maintenance shortfall predicts subsequent loss of corrective margin after controlling for validator-set size and audit load. -ELVES treats the no-show/fault share used in its committee-size analysis as exogenous. In a real implementation, no-show probability could rise with audit load. If -\[ -u=u(L), -\] -and load \(L\) grows with the final committee size, then -\[ - s_f\approx\frac{s_0}{1-Fu(s_f)} -\] -becomes a feedback equation. This could amplify load under stress, but no claim of a JAM overload transition is made without empirical measurements of \(u(L)\). A testnet stress experiment measuring deadline misses against concurrent audit load would be the appropriate next step. +A failure of that prediction would be scientifically useful: it would indicate that the declared $C\!\to O\!\to R\!\to C$ abstraction misses an important replenishment pathway. A successful prediction would turn recurrent corrective capacity from a conceptual distinction into an operational resilience quantity. From a1ea685c772fb80b4e8b0f14a96ed846bdbc31d4 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:17:42 +0200 Subject: [PATCH 26/61] Clarify normalization of dynamic corrective state --- formalization/JamResilienceDynamics.lean | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/formalization/JamResilienceDynamics.lean b/formalization/JamResilienceDynamics.lean index 47d5360..0820175 100644 --- a/formalization/JamResilienceDynamics.lean +++ b/formalization/JamResilienceDynamics.lean @@ -6,12 +6,12 @@ namespace DistributedCommons # JAM: dynamic corrective resilience `JamRecurrentMaintenance.lean` separates within-audit corrective reproduction -from cross-audit maintenance viability. This module couples the two timescales. +from cross-audit maintenance viability. This module couples the two timescales. The slow state has three coordinates: -* `corrective` -- the fault-specific independently-correct share/capacity that - feeds the next audit's corrective reproduction number; +* `corrective` -- the normalized, fault-specific independently-correct share + that feeds the next audit's corrective reproduction number; * `observability` -- capacity to observe or attribute genuine maintenance; * `resources` -- resources returned to preserve future corrective capacity. @@ -22,19 +22,20 @@ The declared linear update is R' = rR R + kOR O. For a fixed audit escalation factor `F`, the next audit's fast reproduction -number is `F * C`. The main exact bridge proved here is therefore local and +number is `F * C`. The main exact bridge proved here is therefore local and measurable: at the fast critical boundary `F*C = 1`, the next audit remains at or above criticality exactly when returned resources close the current corrective-capacity replacement gap. A reduced one-parameter path is also used to prove an identification result: the same current reproduction number can imply different finite-horizon -resilience depending on the cross-audit maintenance multiplier. This is a +resilience depending on the cross-audit maintenance multiplier. This is a model theorem, not a claim that JAM currently has any particular slow-state coefficients or multiplier. -/ -/-- Slow state supporting future independently-correct auditing. -/ +/-- Slow state supporting future independently-correct auditing. `corrective` +is normalized to the validator population relevant to the fast audit model. -/ structure JamCorrectiveState where corrective : ℝ observability : ℝ @@ -61,7 +62,7 @@ def jamStateCorrectionSupercritical 1 < jamStateCorrectionReproduction F x /-- Exact bridge from the slow state update to the next audit reproduction -number. The observability and resource equations matter for later rounds, but +number. The observability and resource equations matter for later rounds, but the immediate next-audit bridge enters through the returned-resource term in `C'`. -/ theorem jam_next_reproduction_identity @@ -75,7 +76,7 @@ theorem jam_next_reproduction_identity unfold jamStateCorrectionReproduction jamCorrectiveStateStep ring -/-- **Maintenance-return boundary.** If the current fast audit is exactly at +/-- **Maintenance-return boundary.** If the current fast audit is exactly at criticality, then the next audit stays at or above criticality iff returned resources close the autonomous loss of corrective capacity. @@ -141,7 +142,7 @@ theorem jamReducedCorrectionPath_succ noncomputable def jamCorrectionMargin (lambda : ℝ) : ℝ := lambda - 1 -/-- Exact margin recursion. Because the fast threshold remains fixed at one, +/-- Exact margin recursion. Because the fast threshold remains fixed at one, a maintenance multiplier below one creates both multiplicative shrinkage of existing margin and an additive replacement drag. -/ theorem jamCorrectionMargin_step @@ -168,7 +169,7 @@ def jamHorizonSupercritical 1 < jamReducedCorrectionPath lambda0 m T /-- **Current audit success is not a sufficient statistic for horizon -resilience.** Two systems can have exactly the same current supercritical +resilience.** Two systems can have exactly the same current supercritical reproduction number and different five-step status solely because their cross-audit maintenance multipliers differ. From bf44814b25b338ec8d1bc4de3943dbdcf5defff6 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:18:05 +0200 Subject: [PATCH 27/61] Clarify normalized slow corrective coordinate --- .../sections/02_protocol_and_model.tex | 161 +++++++++--------- 1 file changed, 76 insertions(+), 85 deletions(-) diff --git a/papers/correlated-honest-failure/sections/02_protocol_and_model.tex b/papers/correlated-honest-failure/sections/02_protocol_and_model.tex index 0dbde2f..458d929 100644 --- a/papers/correlated-honest-failure/sections/02_protocol_and_model.tex +++ b/papers/correlated-honest-failure/sections/02_protocol_and_model.tex @@ -1,115 +1,106 @@ -\section{Protocol elements and model} +\section{Protocol and model} \label{sec:model} -\subsection{JAM auditing and disputes} +\subsection{JAM/ELVES audit structure} -The current Gray Paper states that JAM's auditing and judging system is theoretically equivalent to ELVES \citep{wood2026,burdges2024}. Each validator initially audits a random deterministic selection of up to ten active cores. If an announced auditor fails to produce a positive judgment, later tranches recruit additional auditors. The Gray Paper sets the audit bias factor to +The present paper treats ELVES as the execution-auditing abstraction and the JAM Gray Paper as the protocol-facing specialization. The key architectural feature is sampled re-execution with escalation: a small initial set checks a report, and unresolved disagreement recruits further checking capacity. The exact JAM verdict layer then aggregates judgments into good, bad or wonky outcomes. + +We keep three levels separate throughout: +\begin{enumerate}[leftmargin=*] +\item the \emph{verdict rule}: which collections of judgments permit a good, bad or wonky verdict; +\item the \emph{audit branching model}: how independently correct checking reproduces during escalation; +\item the \emph{cross-audit maintenance model}: how the capacity supplying independent correction is retained, observed and resourced across time. +\end{enumerate} + +Only the first is a direct Gray Paper rule. The second is inherited from ELVES and extended by a correlated-fault partition. The third is introduced in Results 4--5 as a declared systems model. + +\subsection{Fault-specific validator classes} + +Fix one invalid report and one fault family $x$. Partition the validator set into: +\begin{itemize} +\item $A$: adversarial validators; +\item $B_x$: otherwise-honest validators whose shared fault causes the report to be judged valid; +\item $C_x$: validators that independently judge the report invalid. +\end{itemize} +Thus \[ -F=2, +N=A+B_x+C_x. \] -meaning that one unmatched announcement induces an expected two additional auditors in the next tranche. A negative judgment instead causes broad re-auditing and opens the dispute path. +The adjective \emph{independently correct} is fault-specific. It does not imply globally independent software, nor does membership in $B_x$ imply that a validator is generally unreliable. -The dispute rules are central to our first result. Let +Define \[ -K=\floor{\frac{2N}{3}}+1 +\gamma=\frac{A}{N}, +\qquad +f_x=\frac{B_x}{N-A}, +\qquad +h_x=\frac{C_x}{N}=(1-\gamma)(1-f_x), \] -be the number of judgments carried by a verdict and +and \[ -W=\floor{\frac{N}{3}} +p_x=1-h_x=\gamma+(1-\gamma)f_x. \] -the number of positive judgments required for a wonky verdict. Under the current Gray Paper rule, a verdict is: -\begin{itemize} -\item \textbf{good} if all \(K\) included judgments are positive; -\item \textbf{bad} if all \(K\) included judgments are negative; -\item \textbf{wonky} if exactly \(W\) of the \(K\) judgments are positive. -\end{itemize} - -Bad and wonky verdicts remove the availability assignment. The Gray Paper's ordinary offense paths are tied to good or bad reports: guarantors of a bad report can be included as culprits, and judges contradicting an established good/bad verdict can be included as faults. A wonky report is recorded in the wonky set, but the current specification does not place its guarantors or judges in the punish set through those culprit/fault rules \citep{wood2026}. +Here $p_x$ is the maximum share that can return a wrong positive judgment for the declared report if adversarial validators coordinate with the shared fault. -This paper therefore uses the precise phrase \emph{protocol-defined offender attribution path} rather than equating a wonky verdict with zero economic consequences. A staking subsystem could in principle react to the wonky record; the Gray Paper leaves validator rewards and much of the higher-level economics outside the JAM chain itself. +\subsection{Verdict threshold} -\subsection{ELVES branching quantities} - -ELVES models the audit-tranche process with a pessimistic adaptive-crash adversary. Let \(s_0\) be the expected initial audit committee and let \(F\) be the expected number of auditors recruited per unmatched prior auditor. If a fraction \(\gamma\) of the validator population is adversarial, the mean number of useful honest offspring in the branching approximation is -\[ -\lambda=(1-\gamma)F. -\] -If \(q\) is the extinction probability of the corresponding Poisson Galton--Watson process, then +For verdict-set size $N$, write \[ -q=\exp[-\lambda(1-q)], +K=\floor{\frac{2N}{3}}+1. \] -and the ELVES soundness analysis yields the pessimistic acceptance bound +The analysis uses the Gray Paper verdict composition rules exactly as stated in the protocol snapshot cited in this repository. A bad verdict requires a qualifying set containing no positive judgments. Therefore independently correct negative judgments can construct a bad verdict against adversarial positive voting iff \[ -\boxed{ -P_{\rm accept}\le q^{s_0/F}. -} +C_x\ge K. \] -Useful escalation requires \(\lambda>1\). +This result is independent of the ELVES branching approximation. + +\subsection{Fault-specific audit reproduction} -The same architecture has a no-show/scalability side. If \(u\) is the fraction represented in the no-show/fault-amplification term, the reproduction number is \(uF\), so the static expected-final-committee bound has the form +For the ELVES-style escalation extension, let $F$ denote the tranche/escalation factor. Replacing the independently honest share by the fault-specific independently correct share yields the declared reproduction mean \[ -\boxed{ - s_f\le\frac{s_0}{1-uF}, - \qquad uF<1. -} +\lambda_x=Fh_x=F\frac{C_x}{N}=F(1-\gamma)(1-f_x). \] -ELVES reports a continuous-model optimum near \(F=2.0794\) under its stated assumptions; the Gray Paper uses \(F=2\). - -\subsection{Correlated honest fault domain} - -For one crafted invalid report and one fault class \(x\), partition the verdict population into: -\begin{align*} -A &: \text{adversarial validators},\\ -B_x &: \text{otherwise-honest validators that judge the invalid report as valid},\\ -C_x &: \text{otherwise-honest validators that independently judge it as invalid}. -\end{align*} -Thus +The supercritical condition is \[ -N=A+B_x+C_x. +\lambda_x>1. \] +This substitution is a model extension and is not presented as a theorem from the original ELVES paper. + +\subsection{Slow corrective-capacity state} -The central distinction is: +Results 4--5 add a separate cross-audit state. To avoid confusing a count with a normalized state variable, write \[ -\boxed{ -\text{honest validator count} -\neq -\text{fault-specific independently corrective validator count}. -} +c_{x,t}\in\mathbb R \] +for the model's normalized fault-specific independently corrective coordinate at slow time $t$. In the simplest mapping to the static partition, $c_{x,t}$ corresponds to an effective independently correct share like $C_{x,t}/N_t$, but the dynamic model leaves empirical construction of this quantity open. -When convenient we write +The remaining coordinates are \[ -\gamma=\frac{A}{N}, +o_t=\text{maintenance observability/attribution capacity}, \qquad -f_x=\frac{B_x}{N-A}, +r_t=\text{returned-resource capacity}. \] -so +For readability, the later dynamic sections denote these three coordinates by capital letters $(C_t,O_t,R_t)$; there $C_t$ is a normalized slow-state coordinate, not the earlier validator count $C_x$. + +The declared linear update is +\begin{align} +C_{t+1}&=r_C C_t+k_{RC}R_t,\\ +O_{t+1}&=r_O O_t+k_{CO}C_t,\\ +R_{t+1}&=r_R R_t+k_{OR}O_t. +\end{align} +Coupling the slow corrective coordinate to the next audit gives \[ -\frac{C_x}{N}=(1-\gamma)(1-f_x). +\lambda_{x,t}=F C_t. \] -The parameter \(f_x\) should not be interpreted as a universal client market share. It is the exposure of honest validators to fault \(x\). A client implementation is one possible fault domain, but shared libraries, compilers, virtual machines, cryptographic code, erasure-coding implementations, or copied specification logic can couple nominally distinct clients. - -\subsection{Claim-status map} - -\begin{table}[htbp] -\centering -\small -\caption{Status of the main claims. Extension means derived after changing an ELVES/JAM assumption; it is not attributed to the original authors.} -\label{tab:claims} -\begin{tabularx}{\textwidth}{@{}p{0.05\textwidth}X p{0.23\textwidth}@{}} -\toprule -ID & Claim & Status \\ -\midrule -A1 & A bad verdict remains constructible against adversarial positive voting iff \(C_x\ge K\). & Exact consequence of Gray Paper verdict rule + declared fault model \\ -A2 & A good verdict becomes constructible if \(A+B_x\ge K\). & Exact consequence of Gray Paper verdict rule + declared fault model \\ -A3 & For large \(N\), robust bad-verdict attribution requires \(\gamma+(1-\gamma)f_x<1/3\). & Asymptotic form of A1 \\ -B1 & Correlated honest failure changes the ELVES corrective mean to \(\lambda_x=F C_x/N\). & ELVES extension \\ -B2 & Supercritical correction requires \(f_x<1-1/[(1-\gamma)F]\). & Exact consequence of B1 \\ -B3 & Increasing \(F\) raises fault-domain tolerance while worsening the static no-show committee bound. & ELVES extension / comparative result \\ -C1 & Holding \(C_x\) fixed, adding validators outside the independently correct set strictly lowers \(\lambda_x=FC_x/N\). & Exact sampling identity \\ -C2 & In the declared baseline, the pessimistic acceptance bound worsens under such additions both for fixed \(s_0=30\) and fixed 341 cores. & Computational specialization \\ -D1 & Slashable collateral need not be attacker-attributable collateral under an honest shared bug. & Economic mapping observation; not a theorem of JAM \\ -D2 & Guarantor diversity, effort proofs, announcement monitoring and load feedback are design questions, not established fixes. & Hypotheses / future work \\ -\bottomrule -\end{tabularx} -\end{table} +No claim is made that the Gray Paper already contains these state variables or linear coefficients. They are introduced to expose which additional empirical quantities are required if current audit correction is to be translated into a claim about persistence of correction. + +\subsection{Claim hierarchy} + +The model therefore has an explicit hierarchy: +\begin{enumerate}[leftmargin=*] +\item exact verdict arithmetic under the Gray Paper rules and declared fault partition; +\item ELVES-style branching consequences under the substitution $h_x=C_x/N$; +\item slow maintenance replacement consequences under declared $C\to O\to R\to C$ dynamics; +\item finite-horizon implications after coupling $C_t$ back to $\lambda_{x,t}$. +\end{enumerate} +The claim ledger records these levels separately so that a failure of a higher-level mapping does not invalidate lower-level protocol arithmetic. From d5cc4b68f92793a6c02b0b8f52a8f0b19cff071d Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:18:51 +0200 Subject: [PATCH 28/61] Clarify normalized corrective state in dynamic result --- .../sections/06b_resilience_dynamics.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex index 7545f29..601cec4 100644 --- a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex +++ b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex @@ -9,7 +9,9 @@ \subsection{Coupling slow capacity to fast audit reproduction} \[ X_t=(C_t,O_t,R_t), \] -where $C_t$ is a normalized fault-specific independently corrective capacity, $O_t$ is maintenance observability or attribution capacity, and $R_t$ is returned-resource capacity. Consider the declared linear update +where $C_t$ is a normalized fault-specific independently corrective share/capacity, $O_t$ is maintenance observability or attribution capacity, and $R_t$ is returned-resource capacity. The notation $C_t$ in this section is a normalized slow-state coordinate; it is not the earlier validator count $C_x$. + +Consider the declared linear update \begin{align} C_{t+1}&=r_C C_t+k_{RC}R_t,\\ O_{t+1}&=r_O O_t+k_{CO}C_t,\\ From 6baeaacdb6f02f46a7710b7e659b06c7728b0a0f Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:19:03 +0200 Subject: [PATCH 29/61] Clarify literature boundary for dynamic resilience --- papers/correlated-honest-failure/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/papers/correlated-honest-failure/README.md b/papers/correlated-honest-failure/README.md index f0ee919..02dbafe 100644 --- a/papers/correlated-honest-failure/README.md +++ b/papers/correlated-honest-failure/README.md @@ -22,6 +22,10 @@ F k_{RC}R_t\ge1-r_C. The same formalization gives two systems with identical current `lambda_0 = 3/2` but opposite five-step threshold status under different reduced maintenance multipliers. This is the paper's central dynamic claim: current audit reproduction is not a sufficient statistic for future corrective resilience in the declared model. +## Literature boundary + +The paper does **not** claim novelty for the proposition that blockchain client diversity matters, nor for rewarding minority clients. Existing work has proposed verifiable client identification and diversity-aware economic rewards, and longitudinal Ethereum work has documented time-varying participation and concentration. The narrower proposed contribution here is to connect fault-specific sampled-audit reproduction to a separately maintained corrective-capacity state, derive an exact return-gap boundary at fast criticality, and make the current-versus-future correction distinction machine checkable. + ## Files - `main.tex` — manuscript entry point. From 7854f6d8ec5f167d6cef8ee6f6c6d2a7b6b69efd Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:20:51 +0200 Subject: [PATCH 30/61] Prove eventual loss under subunit maintenance --- formalization/JamResilienceDynamics.lean | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/formalization/JamResilienceDynamics.lean b/formalization/JamResilienceDynamics.lean index 0820175..b4c8fe5 100644 --- a/formalization/JamResilienceDynamics.lean +++ b/formalization/JamResilienceDynamics.lean @@ -163,6 +163,35 @@ theorem jamReducedCorrection_strictly_declines mul_pos (sub_pos.mpr hm) hlambda nlinarith +/-- A nonnegative subunit reduced maintenance multiplier drives every finite +initial reproduction number to zero, hence eventually below the fast critical +threshold. This is the general reduced-model erosion theorem behind the finite +counterexample below. -/ +theorem jamReducedCorrection_eventually_subcritical + {lambda0 m : ℝ} + (hm0 : 0 ≤ m) + (hm1 : m < 1) : + ∀ᶠ n : ℕ in Filter.atTop, + jamReducedCorrectionPath lambda0 m n < 1 := by + have hpow : + Filter.Tendsto (fun n : ℕ => m ^ n) Filter.atTop (𝓝 0) := + tendsto_pow_atTop_nhds_zero_of_lt_one hm0 hm1 + have hpath : + Filter.Tendsto + (fun n : ℕ => jamReducedCorrectionPath lambda0 m n) + Filter.atTop (𝓝 0) := by + simpa [jamReducedCorrectionPath] using hpow.mul_const lambda0 + exact (tendsto_order.1 hpath).2 1 (by norm_num) + +/-- In particular, some finite cross-audit horizon lies below criticality for +any nonnegative reduced multiplier strictly below one. -/ +theorem jamReducedCorrection_eventually_crosses_threshold + {lambda0 m : ℝ} + (hm0 : 0 ≤ m) + (hm1 : m < 1) : + ∃ n : ℕ, jamReducedCorrectionPath lambda0 m n < 1 := by + exact (jamReducedCorrection_eventually_subcritical hm0 hm1).exists + /-- Finite-horizon resilience in the reduced path. -/ def jamHorizonSupercritical (lambda0 m : ℝ) (T : ℕ) : Prop := @@ -205,6 +234,8 @@ theorem current_supercritical_can_cross_subcritical_next_round : #print axioms jamReducedCorrectionPath_succ #print axioms jamCorrectionMargin_step #print axioms jamReducedCorrection_strictly_declines +#print axioms jamReducedCorrection_eventually_subcritical +#print axioms jamReducedCorrection_eventually_crosses_threshold #print axioms event_level_success_not_sufficient_statistic_for_five_step_resilience #print axioms current_supercritical_can_cross_subcritical_next_round From 2e80aaa172489a23c365f343871ee180000d7000 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:24:23 +0200 Subject: [PATCH 31/61] Import topology limits for eventual resilience proof --- formalization/JamResilienceDynamics.lean | 1 + 1 file changed, 1 insertion(+) diff --git a/formalization/JamResilienceDynamics.lean b/formalization/JamResilienceDynamics.lean index b4c8fe5..5ea4541 100644 --- a/formalization/JamResilienceDynamics.lean +++ b/formalization/JamResilienceDynamics.lean @@ -1,4 +1,5 @@ import JamRecurrentMaintenance +import Mathlib.Analysis.SpecificLimits.Basic namespace DistributedCommons From ad0d1948e0b1342e418e5d808d770d833c37730b Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:35:49 +0200 Subject: [PATCH 32/61] Formalize dynamic loss and preservation of JAM corrective capacity --- formalization/JamMaintenanceDynamics.lean | 174 ++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 formalization/JamMaintenanceDynamics.lean diff --git a/formalization/JamMaintenanceDynamics.lean b/formalization/JamMaintenanceDynamics.lean new file mode 100644 index 0000000..8e50551 --- /dev/null +++ b/formalization/JamMaintenanceDynamics.lean @@ -0,0 +1,174 @@ +import JamRecurrentMaintenance + +namespace DistributedCommons + +/-! +# JAM recurrent maintenance dynamics + +This module lifts the static separation between within-audit corrective +reproduction and cross-audit maintenance viability into a time-indexed state +model. + +The slow state is intentionally abstract: + +* `corrective` = independently corrective capacity available to auditing; +* `observable` = capacity to observe or attribute genuine maintenance; +* `resources` = resources returned to sustain future corrective capacity. + +The update is the directed cycle + + C -> O -> R -> C + +with autonomous retention on each component. The model is not claimed to be a +literal Gray Paper state machine. Its purpose is to ask whether two systems +that are equally corrective now can have different future corrective capacity +because their maintenance return loops differ. +-/ + +structure JamMaintenanceState where + corrective : ℝ + observable : ℝ + resources : ℝ + deriving Repr + +/-- One slow-timescale maintenance update. -/ +noncomputable def jamMaintenanceStep + (rC rO rR kCO kOR kRC : ℝ) + (s : JamMaintenanceState) : JamMaintenanceState := + { corrective := rC * s.corrective + kRC * s.resources + observable := rO * s.observable + kCO * s.corrective + resources := rR * s.resources + kOR * s.observable } + +/-- Time-indexed slow maintenance trajectory. -/ +noncomputable def jamMaintenancePath + (rC rO rR kCO kOR kRC : ℝ) + (s0 : JamMaintenanceState) : ℕ → JamMaintenanceState + | 0 => s0 + | n + 1 => jamMaintenanceStep rC rO rR kCO kOR kRC + (jamMaintenancePath rC rO rR kCO kOR kRC s0 n) + +/-- ELVES-style audit reproduction when current independent corrective +capacity is represented as an effective count C out of population N. -/ +noncomputable def jamAuditReproductionFromCapacity + (F N C : ℝ) : ℝ := + F * C / N + +/-- A state is audit-supercritical for `(F,N)` when its currently available +independent corrective capacity gives reproduction greater than one. -/ +def jamStateCorrectionSupercritical + (F N : ℝ) (s : JamMaintenanceState) : Prop := + 1 < jamAuditReproductionFromCapacity F N s.corrective + +@[simp] theorem jamMaintenancePath_zero + (rC rO rR kCO kOR kRC : ℝ) (s0 : JamMaintenanceState) : + jamMaintenancePath rC rO rR kCO kOR kRC s0 0 = s0 := by + rfl + +@[simp] theorem jamMaintenancePath_succ + (rC rO rR kCO kOR kRC : ℝ) + (s0 : JamMaintenanceState) (n : ℕ) : + jamMaintenancePath rC rO rR kCO kOR kRC s0 (n + 1) = + jamMaintenanceStep rC rO rR kCO kOR kRC + (jamMaintenancePath rC rO rR kCO kOR kRC s0 n) := by + rfl + +/-- In the absence of a resource-return edge, next-period corrective capacity +is just autonomous retention of current corrective capacity. -/ +theorem corrective_step_without_return + (rC rO rR kCO kOR : ℝ) (s : JamMaintenanceState) : + (jamMaintenanceStep rC rO rR kCO kOR 0 s).corrective = + rC * s.corrective := by + simp [jamMaintenanceStep] + +/-- Dynamic erosion witness. + +Both the initial effective population and escalation factor are normalized to +one and two respectively. The state begins with C=1, hence lambda_0=2. With +50% autonomous retention and no R->C return edge, C falls to 1/4 by t=2 and +lambda_2=1/2. Thus an audit-supercritical system can become subcritical without +any change in F or N. -/ +theorem initially_supercritical_later_subcritical_witness : + let s0 : JamMaintenanceState := + { corrective := 1, observable := 0, resources := 0 } + jamStateCorrectionSupercritical 2 1 s0 ∧ + ¬ jamStateCorrectionSupercritical 2 1 + (jamMaintenancePath (1 / 2) 0 0 1 1 0 s0 2) := by + dsimp + constructor + · norm_num [jamStateCorrectionSupercritical, + jamAuditReproductionFromCapacity] + · norm_num [jamStateCorrectionSupercritical, + jamAuditReproductionFromCapacity, jamMaintenancePath, + jamMaintenanceStep] + +/-- A closed unit return loop has the all-ones maintenance state as a fixed +point. -/ +theorem unit_return_loop_fixed_point : + jamMaintenanceStep 0 0 0 1 1 1 + { corrective := 1, observable := 1, resources := 1 } = + ({ corrective := 1, observable := 1, resources := 1 } : JamMaintenanceState) := by + norm_num [jamMaintenanceStep] + +/-- Therefore the unit return loop preserves the all-ones state for every slow +time step. -/ +theorem unit_return_loop_path_constant (n : ℕ) : + jamMaintenancePath 0 0 0 1 1 1 + { corrective := 1, observable := 1, resources := 1 } n = + ({ corrective := 1, observable := 1, resources := 1 } : JamMaintenanceState) := by + induction n with + | zero => rfl + | succ n ih => + rw [jamMaintenancePath_succ, ih] + exact unit_return_loop_fixed_point + +/-- A viable return loop can preserve audit-supercritical corrective capacity +at every time step for this witness. -/ +theorem recurrent_maintenance_can_preserve_supercriticality (n : ℕ) : + jamStateCorrectionSupercritical 2 1 + (jamMaintenancePath 0 0 0 1 1 1 + { corrective := 1, observable := 1, resources := 1 } n) := by + rw [unit_return_loop_path_constant] + norm_num [jamStateCorrectionSupercritical, jamAuditReproductionFromCapacity] + +/-- Matched-initial-state counterexample. + +The two systems have exactly the same initial corrective capacity and therefore +the same initial audit reproduction. Their future audit reproduction differs +because one has no return edge into corrective capacity while the other closes +the maintenance cycle. Current lambda is therefore not a sufficient state +variable for future corrective resilience in the declared model. -/ +theorem same_current_correction_different_future_resilience : + let decaying0 : JamMaintenanceState := + { corrective := 1, observable := 0, resources := 0 } + let maintained0 : JamMaintenanceState := + { corrective := 1, observable := 1, resources := 1 } + jamAuditReproductionFromCapacity 2 1 decaying0.corrective = + jamAuditReproductionFromCapacity 2 1 maintained0.corrective ∧ + jamStateCorrectionSupercritical 2 1 decaying0 ∧ + jamStateCorrectionSupercritical 2 1 maintained0 ∧ + ¬ jamStateCorrectionSupercritical 2 1 + (jamMaintenancePath (1 / 2) 0 0 1 1 0 decaying0 2) ∧ + jamStateCorrectionSupercritical 2 1 + (jamMaintenancePath 0 0 0 1 1 1 maintained0 2) := by + dsimp + constructor + · norm_num [jamAuditReproductionFromCapacity] + constructor + · norm_num [jamStateCorrectionSupercritical, + jamAuditReproductionFromCapacity] + constructor + · norm_num [jamStateCorrectionSupercritical, + jamAuditReproductionFromCapacity] + constructor + · norm_num [jamStateCorrectionSupercritical, + jamAuditReproductionFromCapacity, jamMaintenancePath, + jamMaintenanceStep] + · exact recurrent_maintenance_can_preserve_supercriticality 2 + +#print axioms initially_supercritical_later_subcritical_witness +#print axioms unit_return_loop_fixed_point +#print axioms unit_return_loop_path_constant +#print axioms recurrent_maintenance_can_preserve_supercriticality +#print axioms same_current_correction_different_future_resilience + +end DistributedCommons From 3c1daf3dbee5fc8a31af86faa65938e2020406bd Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:36:16 +0200 Subject: [PATCH 33/61] Remove redundant maintenance dynamics draft --- formalization/JamMaintenanceDynamics.lean | 174 ---------------------- 1 file changed, 174 deletions(-) delete mode 100644 formalization/JamMaintenanceDynamics.lean diff --git a/formalization/JamMaintenanceDynamics.lean b/formalization/JamMaintenanceDynamics.lean deleted file mode 100644 index 8e50551..0000000 --- a/formalization/JamMaintenanceDynamics.lean +++ /dev/null @@ -1,174 +0,0 @@ -import JamRecurrentMaintenance - -namespace DistributedCommons - -/-! -# JAM recurrent maintenance dynamics - -This module lifts the static separation between within-audit corrective -reproduction and cross-audit maintenance viability into a time-indexed state -model. - -The slow state is intentionally abstract: - -* `corrective` = independently corrective capacity available to auditing; -* `observable` = capacity to observe or attribute genuine maintenance; -* `resources` = resources returned to sustain future corrective capacity. - -The update is the directed cycle - - C -> O -> R -> C - -with autonomous retention on each component. The model is not claimed to be a -literal Gray Paper state machine. Its purpose is to ask whether two systems -that are equally corrective now can have different future corrective capacity -because their maintenance return loops differ. --/ - -structure JamMaintenanceState where - corrective : ℝ - observable : ℝ - resources : ℝ - deriving Repr - -/-- One slow-timescale maintenance update. -/ -noncomputable def jamMaintenanceStep - (rC rO rR kCO kOR kRC : ℝ) - (s : JamMaintenanceState) : JamMaintenanceState := - { corrective := rC * s.corrective + kRC * s.resources - observable := rO * s.observable + kCO * s.corrective - resources := rR * s.resources + kOR * s.observable } - -/-- Time-indexed slow maintenance trajectory. -/ -noncomputable def jamMaintenancePath - (rC rO rR kCO kOR kRC : ℝ) - (s0 : JamMaintenanceState) : ℕ → JamMaintenanceState - | 0 => s0 - | n + 1 => jamMaintenanceStep rC rO rR kCO kOR kRC - (jamMaintenancePath rC rO rR kCO kOR kRC s0 n) - -/-- ELVES-style audit reproduction when current independent corrective -capacity is represented as an effective count C out of population N. -/ -noncomputable def jamAuditReproductionFromCapacity - (F N C : ℝ) : ℝ := - F * C / N - -/-- A state is audit-supercritical for `(F,N)` when its currently available -independent corrective capacity gives reproduction greater than one. -/ -def jamStateCorrectionSupercritical - (F N : ℝ) (s : JamMaintenanceState) : Prop := - 1 < jamAuditReproductionFromCapacity F N s.corrective - -@[simp] theorem jamMaintenancePath_zero - (rC rO rR kCO kOR kRC : ℝ) (s0 : JamMaintenanceState) : - jamMaintenancePath rC rO rR kCO kOR kRC s0 0 = s0 := by - rfl - -@[simp] theorem jamMaintenancePath_succ - (rC rO rR kCO kOR kRC : ℝ) - (s0 : JamMaintenanceState) (n : ℕ) : - jamMaintenancePath rC rO rR kCO kOR kRC s0 (n + 1) = - jamMaintenanceStep rC rO rR kCO kOR kRC - (jamMaintenancePath rC rO rR kCO kOR kRC s0 n) := by - rfl - -/-- In the absence of a resource-return edge, next-period corrective capacity -is just autonomous retention of current corrective capacity. -/ -theorem corrective_step_without_return - (rC rO rR kCO kOR : ℝ) (s : JamMaintenanceState) : - (jamMaintenanceStep rC rO rR kCO kOR 0 s).corrective = - rC * s.corrective := by - simp [jamMaintenanceStep] - -/-- Dynamic erosion witness. - -Both the initial effective population and escalation factor are normalized to -one and two respectively. The state begins with C=1, hence lambda_0=2. With -50% autonomous retention and no R->C return edge, C falls to 1/4 by t=2 and -lambda_2=1/2. Thus an audit-supercritical system can become subcritical without -any change in F or N. -/ -theorem initially_supercritical_later_subcritical_witness : - let s0 : JamMaintenanceState := - { corrective := 1, observable := 0, resources := 0 } - jamStateCorrectionSupercritical 2 1 s0 ∧ - ¬ jamStateCorrectionSupercritical 2 1 - (jamMaintenancePath (1 / 2) 0 0 1 1 0 s0 2) := by - dsimp - constructor - · norm_num [jamStateCorrectionSupercritical, - jamAuditReproductionFromCapacity] - · norm_num [jamStateCorrectionSupercritical, - jamAuditReproductionFromCapacity, jamMaintenancePath, - jamMaintenanceStep] - -/-- A closed unit return loop has the all-ones maintenance state as a fixed -point. -/ -theorem unit_return_loop_fixed_point : - jamMaintenanceStep 0 0 0 1 1 1 - { corrective := 1, observable := 1, resources := 1 } = - ({ corrective := 1, observable := 1, resources := 1 } : JamMaintenanceState) := by - norm_num [jamMaintenanceStep] - -/-- Therefore the unit return loop preserves the all-ones state for every slow -time step. -/ -theorem unit_return_loop_path_constant (n : ℕ) : - jamMaintenancePath 0 0 0 1 1 1 - { corrective := 1, observable := 1, resources := 1 } n = - ({ corrective := 1, observable := 1, resources := 1 } : JamMaintenanceState) := by - induction n with - | zero => rfl - | succ n ih => - rw [jamMaintenancePath_succ, ih] - exact unit_return_loop_fixed_point - -/-- A viable return loop can preserve audit-supercritical corrective capacity -at every time step for this witness. -/ -theorem recurrent_maintenance_can_preserve_supercriticality (n : ℕ) : - jamStateCorrectionSupercritical 2 1 - (jamMaintenancePath 0 0 0 1 1 1 - { corrective := 1, observable := 1, resources := 1 } n) := by - rw [unit_return_loop_path_constant] - norm_num [jamStateCorrectionSupercritical, jamAuditReproductionFromCapacity] - -/-- Matched-initial-state counterexample. - -The two systems have exactly the same initial corrective capacity and therefore -the same initial audit reproduction. Their future audit reproduction differs -because one has no return edge into corrective capacity while the other closes -the maintenance cycle. Current lambda is therefore not a sufficient state -variable for future corrective resilience in the declared model. -/ -theorem same_current_correction_different_future_resilience : - let decaying0 : JamMaintenanceState := - { corrective := 1, observable := 0, resources := 0 } - let maintained0 : JamMaintenanceState := - { corrective := 1, observable := 1, resources := 1 } - jamAuditReproductionFromCapacity 2 1 decaying0.corrective = - jamAuditReproductionFromCapacity 2 1 maintained0.corrective ∧ - jamStateCorrectionSupercritical 2 1 decaying0 ∧ - jamStateCorrectionSupercritical 2 1 maintained0 ∧ - ¬ jamStateCorrectionSupercritical 2 1 - (jamMaintenancePath (1 / 2) 0 0 1 1 0 decaying0 2) ∧ - jamStateCorrectionSupercritical 2 1 - (jamMaintenancePath 0 0 0 1 1 1 maintained0 2) := by - dsimp - constructor - · norm_num [jamAuditReproductionFromCapacity] - constructor - · norm_num [jamStateCorrectionSupercritical, - jamAuditReproductionFromCapacity] - constructor - · norm_num [jamStateCorrectionSupercritical, - jamAuditReproductionFromCapacity] - constructor - · norm_num [jamStateCorrectionSupercritical, - jamAuditReproductionFromCapacity, jamMaintenancePath, - jamMaintenanceStep] - · exact recurrent_maintenance_can_preserve_supercriticality 2 - -#print axioms initially_supercritical_later_subcritical_witness -#print axioms unit_return_loop_fixed_point -#print axioms unit_return_loop_path_constant -#print axioms recurrent_maintenance_can_preserve_supercriticality -#print axioms same_current_correction_different_future_resilience - -end DistributedCommons From 1b41fffde16e13f9460cfc54aad3cee7b5050d6c Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:38:25 +0200 Subject: [PATCH 34/61] Prove persistent JAM corrective resilience from closed maintenance loop --- formalization/JamMaintenancePersistence.lean | 218 +++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 formalization/JamMaintenancePersistence.lean diff --git a/formalization/JamMaintenancePersistence.lean b/formalization/JamMaintenancePersistence.lean new file mode 100644 index 0000000..7c176f8 --- /dev/null +++ b/formalization/JamMaintenancePersistence.lean @@ -0,0 +1,218 @@ +import JamResilienceDynamics + +namespace DistributedCommons + +/-! +# JAM: persistent corrective resilience from a closed maintenance loop + +`JamRecurrentMaintenance.lean` gives the static three-process replacement +threshold, while `JamResilienceDynamics.lean` couples slow corrective capacity +to the fast audit reproduction number. This module closes the remaining gap: +it proves directly on the full C -> O -> R -> C state dynamics that the cone +above a canonical maintenance witness is forward invariant when the closed-loop +product meets replacement. + +Consequently, if the canonical corrective coordinate is already sufficient to +make the fast audit reproduction number supercritical, then every future point +on the canonical slow trajectory remains audit-supercritical. + +The mathematics is the finite directed-three-cycle specialization of standard +positive-systems / reproduction-number reasoning. The JAM-facing contribution +is the explicit bridge from a closed cross-audit maintenance loop to persistent +within-audit corrective reproduction. +-/ + +/-- Canonical corrective coordinate for the C -> O -> R -> C witness. -/ +noncomputable def jamCanonicalCorrective (rO rR : ℝ) : ℝ := + (1 - rO) * (1 - rR) + +/-- Canonical observability coordinate. -/ +noncomputable def jamCanonicalObservability (kCO rR : ℝ) : ℝ := + kCO * (1 - rR) + +/-- Canonical returned-resource coordinate. -/ +noncomputable def jamCanonicalResources (kCO kOR : ℝ) : ℝ := + kCO * kOR + +/-- Canonical state exposing the exact three-cycle maintenance threshold. -/ +noncomputable def jamCanonicalMaintenanceState + (rO rR kCO kOR : ℝ) : JamCorrectiveState := + { corrective := jamCanonicalCorrective rO rR + observability := jamCanonicalObservability kCO rR + resources := jamCanonicalResources kCO kOR } + +/-- Coordinatewise order above the canonical maintenance witness. -/ +def jamAtOrAboveCanonical + (rO rR kCO kOR : ℝ) + (x : JamCorrectiveState) : Prop := + jamCanonicalCorrective rO rR ≤ x.corrective ∧ + jamCanonicalObservability kCO rR ≤ x.observability ∧ + jamCanonicalResources kCO kOR ≤ x.resources + +/-- Exact canonical-state form of the slow replacement threshold. O and R are +exactly replaced at the witness; C is at least replaced iff the cycle-gain +product covers the product of autonomous deficits. -/ +theorem jam_canonical_threshold_iff + (rC rO rR kCO kOR kRC : ℝ) : + let x := jamCanonicalMaintenanceState rO rR kCO kOR + (x.corrective ≤ + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x).corrective ∧ + x.observability = + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x).observability ∧ + x.resources = + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x).resources) + ↔ + (1 - rC) * (1 - rO) * (1 - rR) ≤ kCO * kOR * kRC := by + dsimp [jamCanonicalMaintenanceState, jamCanonicalCorrective, + jamCanonicalObservability, jamCanonicalResources, + jamCorrectiveStateStep] + constructor + · rintro ⟨hC, hO, hR⟩ + nlinarith + · intro h + constructor + · nlinarith + constructor <;> ring + +/-- The cone above the canonical witness is forward invariant for nonnegative +retention/coupling coefficients when the closed maintenance loop meets the +replacement threshold. -/ +theorem jam_step_preserves_canonical_lower_bound + {rC rO rR kCO kOR kRC : ℝ} + (hrC : 0 ≤ rC) (hrO : 0 ≤ rO) (hrR : 0 ≤ rR) + (hkCO : 0 ≤ kCO) (hkOR : 0 ≤ kOR) (hkRC : 0 ≤ kRC) + (hloop : + (1 - rC) * (1 - rO) * (1 - rR) ≤ kCO * kOR * kRC) + {x : JamCorrectiveState} + (hx : jamAtOrAboveCanonical rO rR kCO kOR x) : + jamAtOrAboveCanonical rO rR kCO kOR + (jamCorrectiveStateStep rC rO rR kCO kOR kRC x) := by + rcases hx with ⟨hxC, hxO, hxR⟩ + have hcanon := + (jam_canonical_threshold_iff rC rO rR kCO kOR kRC).2 hloop + change + jamCanonicalCorrective rO rR ≤ + rC * x.corrective + kRC * x.resources ∧ + jamCanonicalObservability kCO rR ≤ + rO * x.observability + kCO * x.corrective ∧ + jamCanonicalResources kCO kOR ≤ + rR * x.resources + kOR * x.observability + constructor + · have hCself := mul_le_mul_of_nonneg_left hxC hrC + have hCreturn := mul_le_mul_of_nonneg_left hxR hkRC + have hmono : + rC * jamCanonicalCorrective rO rR + + kRC * jamCanonicalResources kCO kOR + ≤ rC * x.corrective + kRC * x.resources := by + linarith + exact le_trans hcanon.1 hmono + constructor + · have hOself := mul_le_mul_of_nonneg_left hxO hrO + have hOcross := mul_le_mul_of_nonneg_left hxC hkCO + have hmono : + rO * jamCanonicalObservability kCO rR + + kCO * jamCanonicalCorrective rO rR + ≤ rO * x.observability + kCO * x.corrective := by + linarith + exact le_trans (le_of_eq hcanon.2.1) hmono + · have hRself := mul_le_mul_of_nonneg_left hxR hrR + have hRcross := mul_le_mul_of_nonneg_left hxO hkOR + have hmono : + rR * jamCanonicalResources kCO kOR + + kOR * jamCanonicalObservability kCO rR + ≤ rR * x.resources + kOR * x.observability := by + linarith + exact le_trans (le_of_eq hcanon.2.2) hmono + +/-- Deterministic slow trajectory initialized at the canonical witness. -/ +noncomputable def jamCanonicalMaintenanceTrajectory + (rC rO rR kCO kOR kRC : ℝ) : ℕ → JamCorrectiveState + | 0 => jamCanonicalMaintenanceState rO rR kCO kOR + | n + 1 => + jamCorrectiveStateStep rC rO rR kCO kOR kRC + (jamCanonicalMaintenanceTrajectory rC rO rR kCO kOR kRC n) + +/-- Every point of the canonical trajectory remains at or above the canonical +witness when the slow loop meets replacement. -/ +theorem jam_canonical_trajectory_stays_above_witness + {rC rO rR kCO kOR kRC : ℝ} + (hrC : 0 ≤ rC) (hrO : 0 ≤ rO) (hrR : 0 ≤ rR) + (hkCO : 0 ≤ kCO) (hkOR : 0 ≤ kOR) (hkRC : 0 ≤ kRC) + (hloop : + (1 - rC) * (1 - rO) * (1 - rR) ≤ kCO * kOR * kRC) : + ∀ n : ℕ, + jamAtOrAboveCanonical rO rR kCO kOR + (jamCanonicalMaintenanceTrajectory rC rO rR kCO kOR kRC n) := by + intro n + induction n with + | zero => + exact ⟨le_rfl, le_rfl, le_rfl⟩ + | succ n ih => + change jamAtOrAboveCanonical rO rR kCO kOR + (jamCorrectiveStateStep rC rO rR kCO kOR kRC + (jamCanonicalMaintenanceTrajectory rC rO rR kCO kOR kRC n)) + exact jam_step_preserves_canonical_lower_bound + hrC hrO hrR hkCO hkOR hkRC hloop ih + +/-- **Persistent corrective-resilience theorem.** If the closed slow +maintenance loop meets replacement and the canonical corrective coordinate is +already sufficient for fast audit supercriticality, then every future point on +the canonical slow trajectory remains audit-supercritical. + +This directly links the Result-4 maintenance threshold to the Result-5 fast +audit threshold without introducing the reduced multiplier `m`. -/ +theorem jam_closed_maintenance_loop_preserves_supercritical_correction + {F rC rO rR kCO kOR kRC : ℝ} + (hF : 0 ≤ F) + (hrC : 0 ≤ rC) (hrO : 0 ≤ rO) (hrR : 0 ≤ rR) + (hkCO : 0 ≤ kCO) (hkOR : 0 ≤ kOR) (hkRC : 0 ≤ kRC) + (hloop : + (1 - rC) * (1 - rO) * (1 - rR) ≤ kCO * kOR * kRC) + (hfast : 1 < F * jamCanonicalCorrective rO rR) : + ∀ n : ℕ, + jamStateCorrectionSupercritical F + (jamCanonicalMaintenanceTrajectory rC rO rR kCO kOR kRC n) := by + intro n + have habove := jam_canonical_trajectory_stays_above_witness + hrC hrO hrR hkCO hkOR hkRC hloop n + have hC : + jamCanonicalCorrective rO rR ≤ + (jamCanonicalMaintenanceTrajectory rC rO rR kCO kOR kRC n).corrective := + habove.1 + have hmul : + F * jamCanonicalCorrective rO rR ≤ + F * (jamCanonicalMaintenanceTrajectory rC rO rR kCO kOR kRC n).corrective := + mul_le_mul_of_nonneg_left hC hF + unfold jamStateCorrectionSupercritical jamStateCorrectionReproduction + exact lt_of_lt_of_le hfast hmul + +/-- Under positive O and R deficits and positive C->O and O->R gains, the +canonical corrective coordinate is strictly positive. -/ +theorem jam_canonical_corrective_positive + {rO rR : ℝ} + (hdO : 0 < 1 - rO) + (hdR : 0 < 1 - rR) : + 0 < jamCanonicalCorrective rO rR := by + unfold jamCanonicalCorrective + exact mul_pos hdO hdR + +/-- Deleting the immediate R->C return edge makes any positive corrective +coordinate with subunit autonomous retention strictly decline on the next +cross-audit update. -/ +theorem jam_deleting_return_edge_makes_corrective_capacity_decline + {rC rO rR kCO kOR : ℝ} + {x : JamCorrectiveState} + (hrC : rC < 1) + (hxC : 0 < x.corrective) : + (jamCorrectiveStateStep rC rO rR kCO kOR 0 x).corrective < x.corrective := by + change rC * x.corrective < x.corrective + nlinarith + +#print axioms jam_canonical_threshold_iff +#print axioms jam_step_preserves_canonical_lower_bound +#print axioms jam_canonical_trajectory_stays_above_witness +#print axioms jam_closed_maintenance_loop_preserves_supercritical_correction +#print axioms jam_canonical_corrective_positive +#print axioms jam_deleting_return_edge_makes_corrective_capacity_decline + +end DistributedCommons From 5e83db68f6e1496c44814840776365de9f34b7b6 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:38:36 +0200 Subject: [PATCH 35/61] Build JAM maintenance persistence proofs by default --- formalization/lakefile.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/formalization/lakefile.toml b/formalization/lakefile.toml index bbd3284..796c2ed 100644 --- a/formalization/lakefile.toml +++ b/formalization/lakefile.toml @@ -1,6 +1,6 @@ name = "distributed_commons_control" version = "0.1.0" -defaultTargets = ["DistributedCommons", "RootSafety", "DynamicSafety", "EndogenousFloor", "ClosedLoopStability", "ViabilityContribution", "SelectedViability", "CorrectiveCapacity", "StateDependentContribution", "VectorContribution", "BehavioralMaintenance", "JamMaintenance", "JamBehaviorSelection", "JamEffortObservability", "JamRecurrentMaintenance", "JamResilienceDynamics", "FungalFlowMaintenance", "ViabilityOught"] +defaultTargets = ["DistributedCommons", "RootSafety", "DynamicSafety", "EndogenousFloor", "ClosedLoopStability", "ViabilityContribution", "SelectedViability", "CorrectiveCapacity", "StateDependentContribution", "VectorContribution", "BehavioralMaintenance", "JamMaintenance", "JamBehaviorSelection", "JamEffortObservability", "JamRecurrentMaintenance", "JamResilienceDynamics", "JamMaintenancePersistence", "FungalFlowMaintenance", "ViabilityOught"] [[require]] name = "mathlib" @@ -55,6 +55,9 @@ name = "JamRecurrentMaintenance" [[lean_lib]] name = "JamResilienceDynamics" +[[lean_lib]] +name = "JamMaintenancePersistence" + [[lean_lib]] name = "FungalFlowMaintenance" From 6daf7192392c01e9118130122ad3d1e85940ff4b Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:39:18 +0200 Subject: [PATCH 36/61] Add resilience dynamics and incentive literature --- .../correlated-honest-failure/references.bib | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/papers/correlated-honest-failure/references.bib b/papers/correlated-honest-failure/references.bib index 21b20f4..70a967a 100644 --- a/papers/correlated-honest-failure/references.bib +++ b/papers/correlated-honest-failure/references.bib @@ -44,6 +44,39 @@ @inproceedings{luu2015 doi = {10.1145/2810103.2813659} } +@inproceedings{karakostas2023, + author = {Karakostas, Dimitris and Kiayias, Aggelos and Zacharias, Thomas}, + title = {Blockchain Nash Dynamics and the Pursuit of Compliance}, + booktitle = {Proceedings of the 4th ACM Conference on Advances in Financial Technologies}, + pages = {281--293}, + publisher = {ACM}, + year = {2023}, + doi = {10.1145/3558535.3559781} +} + +@inproceedings{kiayias2024, + author = {Kiayias, Aggelos and Koutsoupias, Elias and Marmolejo-Coss{\'i}o, Francisco and Stouka, Aikaterini-Panagiota}, + title = {Balancing Participation and Decentralization in Proof-of-Stake Cryptocurrencies}, + booktitle = {Algorithmic Game Theory: SAGT 2024}, + series = {Lecture Notes in Computer Science}, + volume = {15156}, + pages = {333--350}, + publisher = {Springer}, + year = {2024}, + doi = {10.1007/978-3-031-71033-9_19} +} + +@article{trivedi2024, + author = {Trivedi, Kishor S. and Grottke, Michael and Lopez, Javier Alonso}, + title = {Rethinking Software Fault Tolerance}, + journal = {IEEE Transactions on Reliability}, + volume = {73}, + number = {1}, + pages = {67--72}, + year = {2024}, + doi = {10.1109/TR.2023.3330787} +} + @article{ron2026, author = {Ron, Javier and He, Zheyuan and Monperrus, Martin}, title = {Proving and Rewarding Client Diversity to Strengthen Resilience of Blockchain Networks}, From c993dcb453d3ca3ad48519169457670d6a895a22 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:39:47 +0200 Subject: [PATCH 37/61] Integrate full-state persistence theorem and sharpen prior-art boundary --- .../sections/06b_resilience_dynamics.tex | 56 +++++++++++++++++-- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex index 601cec4..8b1e4be 100644 --- a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex +++ b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex @@ -32,7 +32,7 @@ \subsection{Coupling slow capacity to fast audit reproduction} \subsection{An exact maintenance-return boundary} -The most useful case is the fast critical boundary. Suppose +The most useful local case is the fast critical boundary. Suppose \[ \lambda_{x,t}=1. \] @@ -56,11 +56,49 @@ \subsection{An exact maintenance-return boundary} \] acts as a local maintenance-return margin at the audit critical boundary. A negative margin implies that a system sitting exactly at current criticality crosses below it on the next cross-audit update; a positive margin moves it above criticality. -This result is deliberately narrower than a general stability theorem for the full three-dimensional system. Its advantage is interpretability: the left side is the familiar event-level audit threshold, while the right side states exactly how much effective returned resource is required to replace attrition in the corrective coordinate. +This one-step boundary is deliberately local. Its advantage is interpretability: the left side is the familiar event-level audit threshold, while the right side states exactly how much effective returned resource is required to replace attrition in the corrective coordinate. + +\subsection{From the closed maintenance threshold to persistent correction} + +The static product threshold from Result 4 can also be connected directly to the full slow dynamics, without introducing a reduced multiplier. Define the canonical maintenance state +\begin{align} +C^*&=(1-r_O)(1-r_R),\\ +O^*&=k_{CO}(1-r_R),\\ +R^*&=k_{CO}k_{OR}. +\end{align} +At this state, the $O$ and $R$ coordinates are exactly at replacement. The $C$ coordinate is at or above replacement exactly when +\[ +\boxed{ +(1-r_C)(1-r_O)(1-r_R) +\le +k_{CO}k_{OR}k_{RC}. +} +\] +This is the same three-process maintenance threshold used in Result 4, now expressed on the time-indexed state system. + +Under nonnegative retention and coupling coefficients, the Lean formalization proves a stronger statement: the entire coordinatewise cone above $(C^*,O^*,R^*)$ is forward invariant whenever the product threshold is met. A trajectory initialized at the canonical state therefore remains at or above that state at every future cross-audit time. + +This yields the direct persistence theorem. If +\[ +F C^*>1, +\] +then +\[ +\boxed{ +\lambda_{x,t}>1\quad\text{for every }t\ge0 +} +\] +for the canonical maintenance trajectory. Thus the slow maintenance threshold is not merely a static feasibility condition: together with a sufficiently large canonical corrective coordinate, it supplies an explicit invariant region that preserves fast audit supercriticality indefinitely in the declared model. + +The converse failure mechanism is equally transparent. Deleting the immediate return edge $R\to C$ sets $k_{RC}=0$. If $r_C<1$ and $C_t>0$, then +\[ +C_{t+1}=r_C C_t1$. If only half of $C_t$ is retained and the immediate returned-resource contribution to $C_{t+1}$ is zero, the next reproduction number is $3/4<1$. Current supercriticality alone therefore supplies no invariant preventing a future threshold crossing. +\subsection{Relation to prior resilience and incentive dynamics} + +None of the individual ingredients above is claimed to be new in isolation. Software fault-tolerance research has long studied design diversity, environmental diversity, proactive recovery and rejuvenation as ways to prevent present operation from degrading into future failure \citep{trivedi2024}. Blockchain research has likewise studied dynamic incentive compliance \citep{karakostas2023}, payment schemes that balance participation and decentralization \citep{kiayias2024}, longitudinal validator concentration \citep{grandjean2023}, and mechanisms that identify and reward minority client implementations \citep{ron2026}. + +The narrower contribution proposed here is their composition at the JAM/ELVES audit interface. The model starts from a fault-specific sampled-audit reproduction number, introduces a separately maintained stock of independently corrective capacity, derives an exact return-gap boundary for the next audit, and then proves both a full-state persistence region and counterexamples in which the same current audit reproduction implies different future resilience. The positive-systems and geometric-decay mathematics is prior art; the claim is that applying it to the reproduction of \emph{corrective capacity itself} exposes a protocol-design variable that is not visible in a current audit snapshot. + \subsection{What would make this operational?} The formal result shifts the empirical question. Measuring current client shares or current audit success is not enough to estimate persistence of correction. A deployment would need evidence about at least: @@ -112,6 +156,6 @@ \subsection{What would make this operational?} \item whether those return flows close the measured replacement gap before the fast margin is exhausted. \end{itemize} -This is related to, but distinct from, proposals to prove client identity and reward minority implementations \citep{ron2026}. Such mechanisms can instantiate part of the $O\to R$ pathway. The present model asks an additional systems question: whether the resulting return loop is strong enough, relative to attrition, to preserve the fault-specific corrective capacity on which the audit process relies. +Mechanisms that prove client identity and reward minority implementations \citep{ron2026} can instantiate part of the $O\to R$ pathway. The present model asks the additional systems question: whether the resulting return loop is strong enough, relative to attrition, to preserve the fault-specific corrective capacity on which the audit process relies. Longitudinal measurements are therefore central. Ethereum evidence already shows that validator participation and concentration are time-dependent and can be affected by major clients and operators \citep{grandjean2023}. For JAM, the corresponding resilience object would be a time-dependent pair: the current fault-specific audit reproduction margin together with an empirically grounded maintenance-return margin. From db8a014e08e57108d5626da3926401f5645a2939 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:40:11 +0200 Subject: [PATCH 38/61] Add full-state persistence claims --- papers/correlated-honest-failure/CLAIMS.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/papers/correlated-honest-failure/CLAIMS.md b/papers/correlated-honest-failure/CLAIMS.md index 7ac3931..9137219 100644 --- a/papers/correlated-honest-failure/CLAIMS.md +++ b/papers/correlated-honest-failure/CLAIMS.md @@ -27,6 +27,10 @@ | F4 | In the reduced path `lambda_t=m^t lambda_0`, the correction margin obeys `mu_{t+1}=m mu_t-(1-m)`. | Machine-checked identity | `m` is a reduced net cross-audit multiplier and is not identified with the three-process loop ratio `R_M`. | | F5 | The same current supercritical reproduction number can correspond to different finite-horizon threshold status: with `lambda_0=3/2`, `m=1` remains supercritical at step 5 whereas `m=9/10` is subcritical. | Machine-checked counterexample | Numerical witness demonstrates non-identifiability; it is not a calibrated JAM forecast. | | F6 | Current `lambda_x` is therefore not a sufficient statistic for finite-horizon corrective resilience in the declared dynamic model. | Interpretation of F4–F5 | Forecasting actual JAM resilience requires empirical identification of slow-state dynamics. | +| F7 | For the full three-state dynamics, the canonical witness `C*=(1-r_O)(1-r_R)`, `O*=k_CO(1-r_R)`, `R*=k_CO k_OR` is componentwise nondecreasing after one update iff the three-cycle product threshold is met, with `O*` and `R*` exactly at replacement. | Machine-checked exact finite-cycle theorem | Finite three-cycle result; no novelty claim for general positive-systems or Perron–Frobenius theory. | +| F8 | Under nonnegative retention and coupling coefficients and the product threshold, the coordinatewise cone above the canonical witness is forward invariant. | Machine-checked dynamic theorem | Applies to the declared linear slow-state model. It is not a global stability or convergence theorem. | +| F9 | If the canonical corrective coordinate already satisfies `F C* > 1`, then every point of the canonical maintenance trajectory remains audit-supercritical for all future cross-audit times. | Machine-checked persistent-resilience theorem | Conditional on the declared slow dynamics, nonnegative coefficients and canonical initial state. | +| F10 | Deleting the immediate `R -> C` return edge with `r_C<1` makes any positive corrective coordinate decline in the next slow update. | Machine-checked return-edge theorem | One-step erosion result; later system behavior may depend on other mechanisms not represented here. | ## Explicit non-claims @@ -42,4 +46,5 @@ The paper does not claim: - that persistence of a validator/economic ecosystem guarantees independent correction for every correlated fault; - that the reduced multiplier `m=9/10` or any other numerical slow-dynamics parameter is an estimate for JAM; - that a single current observation of `lambda_x` is sufficient to estimate a future failure probability; -- novelty for the underlying positive-systems, spectral-radius, reproduction-number, or geometric-decay mathematics used in the declared slow models. +- that the full three-state forward-invariance result establishes convergence, global stability, or calibrated long-run JAM behavior; +- novelty for the underlying positive-systems, spectral-radius, reproduction-number, software-rejuvenation, or geometric-decay mathematics used in the declared slow models. From b3bbd03f5b9e5a98628cb0fdb04712ccae261537 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:40:35 +0200 Subject: [PATCH 39/61] Add persistent-resilience theorem to conclusion --- .../sections/08_conclusion.tex | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/papers/correlated-honest-failure/sections/08_conclusion.tex b/papers/correlated-honest-failure/sections/08_conclusion.tex index b39d36c..6c3e769 100644 --- a/papers/correlated-honest-failure/sections/08_conclusion.tex +++ b/papers/correlated-honest-failure/sections/08_conclusion.tex @@ -48,7 +48,19 @@ \section{Discussion and conclusion} \] is therefore a candidate local maintenance-return margin: its sign tells whether a currently critical corrective state crosses below, stays at, or moves above the fast audit threshold on the next slow update. -This dynamic bridge exposes a stronger failure mode than static insufficiency. A system can remain on the supercritical side of its current audit condition while its corrective margin is predictably decaying toward subcriticality. The Lean formalization demonstrates this by constructing two systems with the same current \(\lambda_0=3/2\) but opposite five-step threshold status under different reduced maintenance multipliers. Current audit reproduction is therefore not, within the declared model, a sufficient statistic for finite-horizon corrective resilience. +The full-state result is stronger than this local boundary. For the canonical maintenance state +\[ +C^*=(1-r_O)(1-r_R),\qquad +O^*=k_{CO}(1-r_R),\qquad +R^*=k_{CO}k_{OR}, +\] +the same product threshold makes the coordinatewise cone above $(C^*,O^*,R^*)$ forward invariant under nonnegative retention and coupling coefficients. Hence, if +\[ +FC^*>1, +\] +then the canonical slow trajectory remains audit-supercritical at every future cross-audit time. The model therefore contains both an erosion mechanism and an explicit persistence region: insufficient return can push correction below threshold, while a sufficiently closed maintenance loop can preserve correction indefinitely. + +This dynamic bridge exposes a stronger failure mode than static insufficiency. A system can remain on the supercritical side of its current audit condition while its corrective margin is decaying toward subcriticality. The Lean formalization demonstrates this by constructing two systems with the same current \(\lambda_0=3/2\) but opposite five-step threshold status under different reduced maintenance multipliers; it also proves generally that any nonnegative reduced multiplier below one eventually crosses the fast threshold. Current audit reproduction is therefore not, within the declared model, a sufficient statistic for finite-horizon corrective resilience. Together these results suggest that the relevant security object is not raw validator count, raw client count, or even current \(\lambda_x\) alone. It is a pair consisting of fault-specific independent corrective capacity and the maintenance dynamics that replenish or erode that capacity. Because future faults are unknown, this object cannot be observed perfectly. But implementation exposure, useful audit effort, client/operator turnover, diversity-aware rewards, development resources and other return flows can in principle provide measurable proxies. @@ -75,6 +87,6 @@ \section{Discussion and conclusion} The first distinction matters for auditing and economics. The second separates an event-level success condition from a cross-time maintenance condition. The third makes that maintenance condition operational by asking whether the observed return flows are sufficient to keep the fast corrective threshold from being crossed in the future. -This also clarifies the relationship to existing client-diversity work. Demonstrating or rewarding minority implementations can improve the observability and resource-return parts of the loop, but it does not by itself establish that fault-specific independent corrective capacity is above replacement. The additional question is whether the resulting return process is strong and fast enough relative to attrition to preserve future correction. +This also clarifies the relationship to existing client-diversity and resilience work. Dynamic compliance, decentralization incentives, software rejuvenation and diversity-aware rewards all address parts of the broader problem. The narrower contribution here is to connect fault-specific sampled-audit reproduction to a separately maintained corrective-capacity state, derive the exact return-gap boundary, and prove both loss and persistence of fast correction under declared slow dynamics. External review by the ELVES and JAM authors remains essential, especially on the wonky-verdict economics, the substitution of \(h_x\) into the branching proof, and the mapping from protocol/ecosystem mechanisms to the declared slow state. The strongest next empirical test is correspondingly concrete: determine whether a JAM deployment or testnet can estimate both a current fault-domain correction margin and an independent maintenance-return margin, then test whether the latter predicts changes in the former before event-level correction becomes subcritical. From 6a316cb83528485f87fa7eb75042a1c2633e12b6 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:42:46 +0200 Subject: [PATCH 40/61] Add proactive Byzantine recovery prior art --- papers/correlated-honest-failure/references.bib | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/papers/correlated-honest-failure/references.bib b/papers/correlated-honest-failure/references.bib index 70a967a..1d2a9b1 100644 --- a/papers/correlated-honest-failure/references.bib +++ b/papers/correlated-honest-failure/references.bib @@ -44,6 +44,15 @@ @inproceedings{luu2015 doi = {10.1145/2810103.2813659} } +@inproceedings{sousa2007, + author = {Sousa, Paulo and Bessani, Alysson Neves and Correia, Miguel and Neves, Nuno Ferreira and Verissimo, Paulo}, + title = {Resilient Intrusion Tolerance through Proactive and Reactive Recovery}, + booktitle = {Proceedings of the 13th Pacific Rim International Symposium on Dependable Computing}, + pages = {373--380}, + year = {2007}, + doi = {10.1109/PRDC.2007.59} +} + @inproceedings{karakostas2023, author = {Karakostas, Dimitris and Kiayias, Aggelos and Zacharias, Thomas}, title = {Blockchain Nash Dynamics and the Pursuit of Compliance}, @@ -54,6 +63,14 @@ @inproceedings{karakostas2023 doi = {10.1145/3558535.3559781} } +@inproceedings{tran2023, + author = {Tran, Tuan and Nawab, Faisal and Alvaro, Peter and Arden, Owen}, + title = {Unstick Yourself: Recoverable Byzantine Fault Tolerant Services}, + booktitle = {2023 IEEE International Conference on Blockchain and Cryptocurrency (ICBC)}, + year = {2023}, + doi = {10.1109/ICBC56567.2023.10174886} +} + @inproceedings{kiayias2024, author = {Kiayias, Aggelos and Koutsoupias, Elias and Marmolejo-Coss{\'i}o, Francisco and Stouka, Aikaterini-Panagiota}, title = {Balancing Participation and Decentralization in Proof-of-Stake Cryptocurrencies}, From ed77644970cd088455bf8f09cc2988b80217fd63 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:43:52 +0200 Subject: [PATCH 41/61] Cancel stale CI runs and update GitHub Actions runtimes --- .github/workflows/ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d82c120..7aaff97 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,18 @@ on: permissions: contents: read +# Keep only the newest run for a PR/ref. Rapid proof-development commits were +# otherwise leaving several expensive Lean/mathlib jobs running in parallel. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: python: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 with: python-version: "3.12" - name: Install package @@ -59,7 +65,7 @@ jobs: run: working-directory: formalization steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install elan run: | curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh -s -- -y From 611a35666dabfb84670804734adad0c0a0fa6e92 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:44:08 +0200 Subject: [PATCH 42/61] Fix neighborhood notation in JAM resilience limit proof --- formalization/JamResilienceDynamics.lean | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/formalization/JamResilienceDynamics.lean b/formalization/JamResilienceDynamics.lean index 5ea4541..e0285e5 100644 --- a/formalization/JamResilienceDynamics.lean +++ b/formalization/JamResilienceDynamics.lean @@ -175,12 +175,12 @@ theorem jamReducedCorrection_eventually_subcritical ∀ᶠ n : ℕ in Filter.atTop, jamReducedCorrectionPath lambda0 m n < 1 := by have hpow : - Filter.Tendsto (fun n : ℕ => m ^ n) Filter.atTop (𝓝 0) := + Filter.Tendsto (fun n : ℕ => m ^ n) Filter.atTop (Filter.nhds 0) := tendsto_pow_atTop_nhds_zero_of_lt_one hm0 hm1 have hpath : Filter.Tendsto (fun n : ℕ => jamReducedCorrectionPath lambda0 m n) - Filter.atTop (𝓝 0) := by + Filter.atTop (Filter.nhds 0) := by simpa [jamReducedCorrectionPath] using hpow.mul_const lambda0 exact (tendsto_order.1 hpath).2 1 (by norm_num) From 41a5ddd6a78e566681ec279befaa25dec14bf7ca Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:44:40 +0200 Subject: [PATCH 43/61] Position JAM resilience result against proactive BFT recovery --- .../sections/06b_resilience_dynamics.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex index 8b1e4be..7fdec8d 100644 --- a/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex +++ b/papers/correlated-honest-failure/sections/06b_resilience_dynamics.tex @@ -142,9 +142,9 @@ \subsection{Latent resilience loss} \subsection{Relation to prior resilience and incentive dynamics} -None of the individual ingredients above is claimed to be new in isolation. Software fault-tolerance research has long studied design diversity, environmental diversity, proactive recovery and rejuvenation as ways to prevent present operation from degrading into future failure \citep{trivedi2024}. Blockchain research has likewise studied dynamic incentive compliance \citep{karakostas2023}, payment schemes that balance participation and decentralization \citep{kiayias2024}, longitudinal validator concentration \citep{grandjean2023}, and mechanisms that identify and reward minority client implementations \citep{ron2026}. +None of the individual ingredients above is claimed to be new in isolation. Software fault-tolerance research has long studied design diversity, environmental diversity, proactive recovery and rejuvenation as ways to prevent present operation from degrading into future failure \citep{trivedi2024}. Proactive Byzantine-fault-tolerance work goes closer still: recovery and reconfiguration are used to stop faulty replicas from accumulating beyond a tolerated bound over the lifetime of a system \citep{sousa2007,tran2023}. Blockchain research has likewise studied dynamic incentive compliance \citep{karakostas2023}, payment schemes that balance participation and decentralization \citep{kiayias2024}, longitudinal validator concentration \citep{grandjean2023}, and mechanisms that identify and reward minority client implementations \citep{ron2026}. -The narrower contribution proposed here is their composition at the JAM/ELVES audit interface. The model starts from a fault-specific sampled-audit reproduction number, introduces a separately maintained stock of independently corrective capacity, derives an exact return-gap boundary for the next audit, and then proves both a full-state persistence region and counterexamples in which the same current audit reproduction implies different future resilience. The positive-systems and geometric-decay mathematics is prior art; the claim is that applying it to the reproduction of \emph{corrective capacity itself} exposes a protocol-design variable that is not visible in a current audit snapshot. +The narrower contribution proposed here is different in the object that must be reproduced. Classical proactive BFT maintains enough nonfaulty replicas relative to a fault bound. The present JAM/ELVES extension instead tracks the \emph{fault-specific independently corrective capacity} that enters a sampled audit reproduction number, including honest validators that may share the same implementation error. It then makes maintenance of that capacity endogenous through observability/attribution and resource return. The model derives an exact return-gap boundary for the next audit and proves both a full-state persistence region and counterexamples in which the same current audit reproduction implies different future resilience. The positive-systems, recovery and geometric-decay mathematics is prior art; the proposed contribution is this composition at the sampled-audit/common-mode-failure interface. \subsection{What would make this operational?} From a1132a6d51884b68bc600a882aadab8e3d0e726d Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:45:25 +0200 Subject: [PATCH 44/61] Document JAM persistent resilience proofs --- formalization/README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/formalization/README.md b/formalization/README.md index 4ba3b6b..f1e6661 100644 --- a/formalization/README.md +++ b/formalization/README.md @@ -75,8 +75,13 @@ The Lean source checks only the algebraic core of the declared model. It does no | Reduced cross-audit recurrence | `jamReducedCorrectionPath_succ` | | Exact correction-margin recursion | `jamCorrectionMargin_step` | | Subunit maintenance multiplier strictly erodes positive reproduction | `jamReducedCorrection_strictly_declines` | +| Subunit nonnegative multiplier eventually becomes subcritical | `jamReducedCorrection_eventually_subcritical`; `jamReducedCorrection_eventually_crosses_threshold` | | Same current reproduction can imply opposite five-step resilience | `event_level_success_not_sufficient_statistic_for_five_step_resilience` | | Current supercritical state can cross below threshold next round | `current_supercritical_can_cross_subcritical_next_round` | +| Canonical full-state maintenance threshold | `jam_canonical_threshold_iff` | +| Canonical maintenance cone is forward invariant | `jam_step_preserves_canonical_lower_bound`; `jam_canonical_trajectory_stays_above_witness` | +| Closed maintenance loop preserves fast audit supercriticality | `jam_closed_maintenance_loop_preserves_supercritical_correction` | +| Deleting the return edge makes positive corrective capacity decline | `jam_deleting_return_edge_makes_corrective_capacity_decline` | | Fungal redundant-state stability iff effective gain < 1 | `fungal_stable_iff_effective_gain_lt_one` | | Unit fungal effective gain is neutral | `fungal_neutral_iff_effective_gain_eq_one` | | Superunit fungal effective gain is unstable | `fungal_unstable_iff_effective_gain_gt_one` | @@ -97,12 +102,7 @@ The toolchain and Mathlib commit match the current formalization convention used ## End-to-end real-root proof -`RootSafety.lean` is a default Lake build target. It adds 11 declarations covering -root construction, its power identity, uniqueness, monotonicity, residual bounds, -threshold feasibility, exact target attainment, least sufficient effort and the -selected-safety/critical-cost equivalence. Every declaration prints its axioms. -See `docs/PHASE_BOUNDARY.md` for the exact claim map. No root existence or -leastness hypothesis remains assumed in `selected_safety_iff_critical_cost`. +`RootSafety.lean` is a default Lake build target. It adds 11 declarations covering root construction, its power identity, uniqueness, monotonicity, residual bounds, threshold feasibility, exact target attainment, least sufficient effort and the selected-safety/critical-cost equivalence. Every declaration prints its axioms. See `docs/PHASE_BOUNDARY.md` for the exact claim map. No root existence or leastness hypothesis remains assumed in `selected_safety_iff_critical_cost`. ## Endogenous producer floor @@ -154,7 +154,11 @@ leastness hypothesis remains assumed in `selected_safety_iff_critical_cost`. ## JAM dynamic corrective resilience -`JamResilienceDynamics.lean` couples the slow corrective-capacity coordinate back to the next audit. For the declared state update `C' = r_C C + k_RC R` and `lambda = F C`, it proves the exact identity `lambda' = r_C lambda + F k_RC R`. At current criticality it then proves the one-step maintenance-return boundary `lambda' >= 1` iff `F k_RC R >= 1-r_C`, including strict shortfall and surplus corollaries. A reduced cross-audit path separately proves that the same current `lambda` can lead to opposite finite-horizon threshold status under different maintenance multipliers. These are dynamic model implications, not calibrated JAM forecasts. +`JamResilienceDynamics.lean` couples the slow corrective-capacity coordinate back to the next audit. For the declared state update `C' = r_C C + k_RC R` and `lambda = F C`, it proves the exact identity `lambda' = r_C lambda + F k_RC R`. At current criticality it proves the one-step maintenance-return boundary `lambda' >= 1` iff `F k_RC R >= 1-r_C`, including strict shortfall and surplus corollaries. The reduced cross-audit model proves both a concrete matched-current-state counterexample and the general result that every finite initial reproduction number eventually becomes subcritical when `0 <= m < 1`. These are dynamic model implications, not calibrated JAM forecasts. + +## JAM persistent corrective resilience + +`JamMaintenancePersistence.lean` closes the gap between the static three-process replacement threshold and the time-indexed audit model. It constructs the canonical slow state `C*=(1-r_O)(1-r_R)`, `O*=k_CO(1-r_R)`, `R*=k_CO k_OR`; proves that the cone above this state is forward invariant under nonnegative coefficients when the three-cycle product threshold is met; and then proves that, whenever `F C* > 1`, the canonical trajectory remains fast-audit-supercritical at every future cross-audit time. It also proves one-step corrective-capacity decline when the immediate `R -> C` return edge is deleted and `r_C < 1`. The result is a conditional invariant-region theorem, not a convergence, global-stability, or calibrated long-run JAM theorem. ## Fungal flow-coupled maintenance From c24afc9964ef2389dd9e81f986201fe4e31cce16 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:47:18 +0200 Subject: [PATCH 45/61] Document full-state JAM resilience result --- papers/correlated-honest-failure/README.md | 29 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/papers/correlated-honest-failure/README.md b/papers/correlated-honest-failure/README.md index 02dbafe..4732d48 100644 --- a/papers/correlated-honest-failure/README.md +++ b/papers/correlated-honest-failure/README.md @@ -8,7 +8,7 @@ Repo-ready LaTeX package for the technical companion paper. 2. **Fault-specific ELVES escalation** under correlated honest failure. 3. **Sampling dilution** showing that honest-but-correlated validator additions can lower corrective reproduction. 4. **Recurrent corrective capacity** separating within-audit corrective reproduction from cross-audit maintenance of the capacity required to remain corrective. -5. **Dynamic corrective resilience** coupling slow corrective capacity back to the next audit and showing that current `lambda_x` alone does not determine finite-horizon resilience. +5. **Dynamic corrective resilience** coupling slow corrective capacity back to the next audit and proving both erosion and a full-state persistence region. Result 4 introduces a declared slow `C -> O -> R -> C` loop linking independently corrective capacity, observability/attribution of genuine maintenance, and resources returned to preserve future corrective capacity. Machine-checked witnesses show that the event-level condition `lambda_x > 1` and the slow maintenance replacement condition imply neither one another. The maintenance threshold is therefore an orthogonal timescale, not a fourth nested point on the verdict/audit threshold sequence. @@ -20,11 +20,29 @@ Result 5 adds a slow state update and the bridge `lambda_x,t = F C_t`. At curren F k_{RC}R_t\ge1-r_C. \] -The same formalization gives two systems with identical current `lambda_0 = 3/2` but opposite five-step threshold status under different reduced maintenance multipliers. This is the paper's central dynamic claim: current audit reproduction is not a sufficient statistic for future corrective resilience in the declared model. +The reduced model proves that any finite initial correction reproduction eventually becomes subcritical when `0 <= m < 1`, and gives two systems with identical current `lambda_0 = 3/2` but opposite five-step threshold status under different maintenance multipliers. + +The full three-state formalization then closes the positive side. For + +\[ +C^*=(1-r_O)(1-r_R),\qquad +O^*=k_{CO}(1-r_R),\qquad +R^*=k_{CO}k_{OR}, +\] + +the exact product condition + +\[ +(1-r_C)(1-r_O)(1-r_R)\le k_{CO}k_{OR}k_{RC} +\] + +makes the coordinatewise cone above `(C*,O*,R*)` forward invariant under nonnegative coefficients. If `F C* > 1`, the canonical trajectory therefore remains audit-supercritical at every future cross-audit time. The model thus contains both a formal erosion mechanism and a formal persistence region. ## Literature boundary -The paper does **not** claim novelty for the proposition that blockchain client diversity matters, nor for rewarding minority clients. Existing work has proposed verifiable client identification and diversity-aware economic rewards, and longitudinal Ethereum work has documented time-varying participation and concentration. The narrower proposed contribution here is to connect fault-specific sampled-audit reproduction to a separately maintained corrective-capacity state, derive an exact return-gap boundary at fast criticality, and make the current-versus-future correction distinction machine checkable. +The paper does **not** claim novelty for the general idea that resilience must be replenished over time. Proactive Byzantine recovery and reconfiguration already maintain enough nonfaulty replicas so accumulated faults do not exceed a tolerated bound. Nor does the paper claim novelty for client diversity, diversity-aware rewards, positive-systems thresholds, or geometric decay. + +The narrower proposed contribution is different in the object being maintained: **fault-specific independently corrective capacity inside a sampled audit process**, including honest validators sharing a common implementation fault. The paper connects that fast audit quantity to a separately maintained slow state, makes observability/attribution and resource return part of the maintenance loop, derives an exact return-gap boundary, and proves when the resulting full-state dynamics preserve fast audit supercriticality. ## Files @@ -35,7 +53,8 @@ The paper does **not** claim novelty for the proposition that blockchain client - `CLAIMS.md` — claim-status ledger. - `reproduce.py` — dependency-free reproduction of numerical tables. - `../../formalization/JamRecurrentMaintenance.lean` — machine-checked two-timescale separation witnesses. -- `../../formalization/JamResilienceDynamics.lean` — machine-checked slow-to-fast bridge, maintenance-return boundary and finite-horizon non-identifiability witness. +- `../../formalization/JamResilienceDynamics.lean` — machine-checked slow-to-fast bridge, maintenance-return boundary and erosion/non-identifiability results. +- `../../formalization/JamMaintenancePersistence.lean` — canonical full-state threshold, forward-invariant maintenance cone and persistent-supercriticality theorem. ## Build @@ -54,4 +73,4 @@ python reproduce.py ## Scope -This is not a JAM security audit and does not claim an observed vulnerability. Result 1 derives from the Gray Paper verdict rules under a declared correlated-fault scenario. Results 2-3 extend ELVES and therefore require review by the ELVES authors. Results 4-5 add declared slow-timescale systems dynamics motivated by the repository's grounded JAM maintenance analysis. Their coefficients and reduced multipliers are not claimed to be current Gray Paper parameters or calibrated JAM estimates, and novelty is not claimed for the underlying positive-systems, reproduction-number or geometric-decay mathematics. +This is not a JAM security audit and does not claim an observed vulnerability. Result 1 derives from the Gray Paper verdict rules under a declared correlated-fault scenario. Results 2-3 extend ELVES and therefore require review by the ELVES authors. Results 4-5 add declared slow-timescale systems dynamics motivated by the repository's grounded JAM maintenance analysis. Their coefficients and reduced multipliers are not claimed to be current Gray Paper parameters or calibrated JAM estimates. The full-state result is a conditional invariant-region theorem, not a convergence, global-stability, or empirical long-run JAM theorem. From 422c3d0aad4b4dfead2681b369399380d0f69997 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:47:50 +0200 Subject: [PATCH 46/61] Fix neighborhood namespace in JAM resilience limit proof --- formalization/JamResilienceDynamics.lean | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/formalization/JamResilienceDynamics.lean b/formalization/JamResilienceDynamics.lean index e0285e5..8d18394 100644 --- a/formalization/JamResilienceDynamics.lean +++ b/formalization/JamResilienceDynamics.lean @@ -175,12 +175,12 @@ theorem jamReducedCorrection_eventually_subcritical ∀ᶠ n : ℕ in Filter.atTop, jamReducedCorrectionPath lambda0 m n < 1 := by have hpow : - Filter.Tendsto (fun n : ℕ => m ^ n) Filter.atTop (Filter.nhds 0) := + Filter.Tendsto (fun n : ℕ => m ^ n) Filter.atTop (nhds 0) := tendsto_pow_atTop_nhds_zero_of_lt_one hm0 hm1 have hpath : Filter.Tendsto (fun n : ℕ => jamReducedCorrectionPath lambda0 m n) - Filter.atTop (Filter.nhds 0) := by + Filter.atTop (nhds 0) := by simpa [jamReducedCorrectionPath] using hpow.mul_const lambda0 exact (tendsto_order.1 hpath).2 1 (by norm_num) From 5517ff46ece29a0c6360561d6475c2b5599ceeff Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:51:14 +0200 Subject: [PATCH 47/61] Fix return-edge erosion proof simplification --- formalization/JamMaintenancePersistence.lean | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/formalization/JamMaintenancePersistence.lean b/formalization/JamMaintenancePersistence.lean index 7c176f8..20e801c 100644 --- a/formalization/JamMaintenancePersistence.lean +++ b/formalization/JamMaintenancePersistence.lean @@ -205,7 +205,7 @@ theorem jam_deleting_return_edge_makes_corrective_capacity_decline (hrC : rC < 1) (hxC : 0 < x.corrective) : (jamCorrectiveStateStep rC rO rR kCO kOR 0 x).corrective < x.corrective := by - change rC * x.corrective < x.corrective + simp [jamCorrectiveStateStep] nlinarith #print axioms jam_canonical_threshold_iff From 538d4fba358c70f9160354505e75f042b1216525 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:56:14 +0200 Subject: [PATCH 48/61] Use standard cached Lean CI action --- .github/workflows/ci.yml | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7aaff97..0a7928e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,18 +61,15 @@ jobs: lean: runs-on: ubuntu-latest - defaults: - run: - working-directory: formalization steps: - uses: actions/checkout@v7 - - name: Install elan - run: | - curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh -s -- -y - echo "$HOME/.elan/bin" >> "$GITHUB_PATH" - - name: Update dependencies - run: $HOME/.elan/bin/lake update - - name: Fetch Mathlib cache - run: $HOME/.elan/bin/lake exe cache get - - name: Compile proofs - run: $HOME/.elan/bin/lake build + - name: Build Lean formalization + uses: leanprover/lean-action@v1 + with: + lake-package-directory: formalization + auto-config: false + build: true + test: false + lint: false + use-mathlib-cache: true + use-github-cache: true From 19a96c0870e751b3795cd6ab7eb6ef8e0c03311c Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:57:31 +0200 Subject: [PATCH 49/61] Restore proven Lean CI workflow --- .github/workflows/ci.yml | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a7928e..3a0c91f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,18 +9,12 @@ on: permissions: contents: read -# Keep only the newest run for a PR/ref. Rapid proof-development commits were -# otherwise leaving several expensive Lean/mathlib jobs running in parallel. -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - jobs: python: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v7 - - uses: actions/setup-python@v7 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install package @@ -33,7 +27,7 @@ jobs: run: python scripts/phase_boundary.py --output results/static_phase_boundary.csv - name: Reproduce dynamic feedback experiment - run: python scripts/feedback_experiment.py --output results/feedback.csv + run: python scripts/feedback_experiment.py --output-dir results - name: Reproduce closed-loop commons experiment run: python scripts/closed_loop_experiment.py --output-dir results - name: Reproduce viability contribution experiment @@ -61,15 +55,18 @@ jobs: lean: runs-on: ubuntu-latest + defaults: + run: + working-directory: formalization steps: - - uses: actions/checkout@v7 - - name: Build Lean formalization - uses: leanprover/lean-action@v1 - with: - lake-package-directory: formalization - auto-config: false - build: true - test: false - lint: false - use-mathlib-cache: true - use-github-cache: true + - uses: actions/checkout@v4 + - name: Install elan + run: | + curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh -s -- -y + echo "$HOME/.elan/bin" >> "$GITHUB_PATH" + - name: Update dependencies + run: $HOME/.elan/bin/lake update + - name: Fetch Mathlib cache + run: $HOME/.elan/bin/lake exe cache get + - name: Compile proofs + run: $HOME/.elan/bin/lake build From c09bba987878c121eeb0cd866813cbec3cf2f782 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:57:43 +0200 Subject: [PATCH 50/61] Match CI commands to main workflow --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a0c91f..d82c120 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: run: python scripts/phase_boundary.py --output results/static_phase_boundary.csv - name: Reproduce dynamic feedback experiment - run: python scripts/feedback_experiment.py --output-dir results + run: python scripts/feedback_experiment.py --output results/feedback.csv - name: Reproduce closed-loop commons experiment run: python scripts/closed_loop_experiment.py --output-dir results - name: Reproduce viability contribution experiment From 18a89e7833b6ffbfbc303840a1b1438d4b19171b Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:57:55 +0200 Subject: [PATCH 51/61] Pin Lean dependencies with Lake manifest --- formalization/lake-manifest.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 formalization/lake-manifest.json diff --git a/formalization/lake-manifest.json b/formalization/lake-manifest.json new file mode 100644 index 0000000..3b270b3 --- /dev/null +++ b/formalization/lake-manifest.json @@ -0,0 +1 @@ +{"version":"1.2.0","packagesDir":".lake/packages","packages":[{"url":"https://github.com/leanprover-community/mathlib4.git","type":"git","subDir":null,"scope":"","rev":"db584cd6d46c92f209a44c0f1c829460d327499d","name":"mathlib","manifestFile":"lake-manifest.json","inputRev":"db584cd6d46c92f209a44c0f1c829460d327499d","inherited":false,"configFile":"lakefile.lean"},{"url":"https://github.com/leanprover-community/plausible","type":"git","subDir":null,"scope":"leanprover-community","rev":"b7eb3304aeae834b12dda98993a37f6a41f6f0bb","name":"plausible","manifestFile":"lake-manifest.json","inputRev":"main","inherited":true,"configFile":"lakefile.toml"},{"url":"https://github.com/leanprover-community/LeanSearchClient","type":"git","subDir":null,"scope":"leanprover-community","rev":"5f4d51b81cbd3f6b32b156bfad9056621a040404","name":"LeanSearchClient","manifestFile":"lake-manifest.json","inputRev":"main","inherited":true,"configFile":"lakefile.toml"},{"url":"https://github.com/leanprover-community/import-graph","type":"git","subDir":null,"scope":"leanprover-community","rev":"16f02aa7642864af59f1ff0e384a015994db9118","name":"importGraph","manifestFile":"lake-manifest.json","inputRev":"main","inherited":true,"configFile":"lakefile.toml"},{"url":"https://github.com/leanprover-community/ProofWidgets4","type":"git","subDir":null,"scope":"leanprover-community","rev":"4be2e3d5087eeb272cf5a8853b8f9dd025ef5957","name":"proofwidgets","manifestFile":"lake-manifest.json","inputRev":"main","inherited":true,"configFile":"lakefile.lean"},{"url":"https://github.com/leanprover-community/aesop","type":"git","subDir":null,"scope":"leanprover-community","rev":"3448c0bcc5ce01b2d1546e483ec3620e32df3d0e","name":"aesop","manifestFile":"lake-manifest.json","inputRev":"master","inherited":true,"configFile":"lakefile.toml"},{"url":"https://github.com/leanprover-community/quote4","type":"git","subDir":null,"scope":"leanprover-community","rev":"92c15be17b7caf78c2ad767ec40f89052d908d81","name":"Qq","manifestFile":"lake-manifest.json","inputRev":"master","inherited":true,"configFile":"lakefile.toml"},{"url":"https://github.com/leanprover-community/batteries","type":"git","subDir":null,"scope":"leanprover-community","rev":"4488d40d070b9700d4d5a6aa342f0d40c31b2a2d","name":"batteries","manifestFile":"lake-manifest.json","inputRev":"main","inherited":true,"configFile":"lakefile.toml"},{"url":"https://github.com/leanprover/lean4-cli","type":"git","subDir":null,"scope":"leanprover","rev":"6130a47896ce867c6a4a55373441e59e565bad0f","name":"Cli","manifestFile":"lake-manifest.json","inputRev":"v4.33.0","inherited":true,"configFile":"lakefile.toml"}],"name":"distributed_commons_control","lakeDir":".lake","fixedToolchain":false} From ad2f1f24c5e06653957dbc8113173242a999c953 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:58:47 +0200 Subject: [PATCH 52/61] Stabilize and cache Lean CI --- .github/workflows/ci.yml | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d82c120..0a7928e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,12 +9,18 @@ on: permissions: contents: read +# Keep only the newest run for a PR/ref. Rapid proof-development commits were +# otherwise leaving several expensive Lean/mathlib jobs running in parallel. +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: python: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 with: python-version: "3.12" - name: Install package @@ -55,18 +61,15 @@ jobs: lean: runs-on: ubuntu-latest - defaults: - run: - working-directory: formalization steps: - - uses: actions/checkout@v4 - - name: Install elan - run: | - curl https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh -sSf | sh -s -- -y - echo "$HOME/.elan/bin" >> "$GITHUB_PATH" - - name: Update dependencies - run: $HOME/.elan/bin/lake update - - name: Fetch Mathlib cache - run: $HOME/.elan/bin/lake exe cache get - - name: Compile proofs - run: $HOME/.elan/bin/lake build + - uses: actions/checkout@v7 + - name: Build Lean formalization + uses: leanprover/lean-action@v1 + with: + lake-package-directory: formalization + auto-config: false + build: true + test: false + lint: false + use-mathlib-cache: true + use-github-cache: true From 24ffe74e4393416b84cf2690b36d358730f441ea Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:30:24 +0200 Subject: [PATCH 53/61] Add auto-build workflow for JAM researcher brief --- .../workflows/build-jam-researcher-brief.yml | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/build-jam-researcher-brief.yml diff --git a/.github/workflows/build-jam-researcher-brief.yml b/.github/workflows/build-jam-researcher-brief.yml new file mode 100644 index 0000000..7ca143a --- /dev/null +++ b/.github/workflows/build-jam-researcher-brief.yml @@ -0,0 +1,55 @@ +name: Build JAM researcher brief PDF + +on: + push: + paths: + - "docs/JAM_RESEARCHER_BRIEF.tex" + workflow_dispatch: + +permissions: + contents: write + +concurrency: + group: jam-researcher-brief-${{ github.ref }} + cancel-in-progress: true + +jobs: + build-pdf: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + with: + ref: ${{ github.ref_name }} + fetch-depth: 0 + + - name: Install LaTeX + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + latexmk \ + texlive-latex-base \ + texlive-latex-recommended \ + texlive-latex-extra \ + texlive-fonts-recommended \ + texlive-pictures + + - name: Compile researcher brief + run: | + mkdir -p build/jam-researcher-brief + latexmk -pdf -interaction=nonstopmode -halt-on-error \ + -output-directory=build/jam-researcher-brief \ + docs/JAM_RESEARCHER_BRIEF.tex + cp build/jam-researcher-brief/JAM_RESEARCHER_BRIEF.pdf \ + docs/JAM_RESEARCHER_BRIEF.pdf + + - name: Commit generated PDF when changed + run: | + if git diff --quiet -- docs/JAM_RESEARCHER_BRIEF.pdf; then + echo "Generated PDF is unchanged." + exit 0 + fi + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add docs/JAM_RESEARCHER_BRIEF.pdf + git commit -m "Regenerate JAM researcher brief PDF" + git push origin HEAD:${{ github.ref_name }} From 068fb4a8edf6a1f1885108fd1524b2abaebd8230 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:31:31 +0200 Subject: [PATCH 54/61] Add JAM researcher brief source --- docs/JAM_RESEARCHER_BRIEF.tex | 181 ++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 docs/JAM_RESEARCHER_BRIEF.tex diff --git a/docs/JAM_RESEARCHER_BRIEF.tex b/docs/JAM_RESEARCHER_BRIEF.tex new file mode 100644 index 0000000..b67d46e --- /dev/null +++ b/docs/JAM_RESEARCHER_BRIEF.tex @@ -0,0 +1,181 @@ +\documentclass[10pt,a4paper]{article} + +\usepackage[margin=16mm]{geometry} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{lmodern} +\usepackage{microtype} +\usepackage{amsmath,amssymb} +\usepackage{booktabs} +\usepackage{enumitem} +\usepackage{xcolor} +\usepackage{tikz} +\usetikzlibrary{arrows.meta,positioning,fit} +\usepackage[colorlinks=true,linkcolor=black,urlcolor=blue!55!black,citecolor=black]{hyperref} +\usepackage{parskip} +\usepackage{titlesec} + +\definecolor{ink}{HTML}{17202A} +\definecolor{muted}{HTML}{5D6D7E} +\definecolor{accent}{HTML}{185FA5} +\definecolor{pale}{HTML}{EEF5FB} +\definecolor{warn}{HTML}{FFF7E6} +\definecolor{line}{HTML}{CCD6E0} + +\color{ink} +\setlength{\parindent}{0pt} +\setlength{\parskip}{4.5pt} +\setlist[itemize]{leftmargin=4.5mm,itemsep=1.5pt,topsep=2pt} +\setlist[enumerate]{leftmargin=5.5mm,itemsep=2pt,topsep=2pt} +\titleformat{\section}{\large\bfseries\color{accent}}{}{0pt}{} +\titlespacing*{\section}{0pt}{8pt}{3pt} +\titleformat{\subsection}{\normalsize\bfseries}{}{0pt}{} +\titlespacing*{\subsection}{0pt}{6pt}{2pt} + +\newcommand{\callout}[2]{% + \noindent\fcolorbox{line}{#1}{% + \begin{minipage}{0.955\linewidth} + #2 + \end{minipage}} +} + +\begin{document} +\pagestyle{empty} + +{\small\bfseries\color{accent} JAM RESEARCHER BRIEF}\par +\vspace{2pt} +{\LARGE\bfseries Does JAM maintain its capacity to correct shared implementation faults?}\par +\vspace{4pt} +{\small\color{muted} A narrow question for expert review of the JAM/ELVES security model. The aim is not to propose a replacement protocol model, but to test whether a residual failure mode has been identified or whether JAM already closes it elsewhere.}\par +\vspace{5pt} +\hrule + +\section{The question} + +Fix one invalid report and one fault family $x$. Some validators may be adversarial. A second group may be honest in the ordinary sense but share an implementation fault that makes this particular invalid report look valid. A third group independently detects the fault. + +\callout{pale}{\textbf{Core distinction.} Validator honesty and implementation independence are different security resources. A validator can be honest yet fail to provide independent corrective capacity for a particular fault family.} + +Let $A$ be adversarial validators, $B_x$ otherwise-honest validators sharing fault $x$, and $C_x$ validators that independently judge the report invalid, with $N=A+B_x+C_x$. + +At the Gray-Paper verdict layer, the relevant arithmetic can be stated directly: if $K=\lfloor 2N/3\rfloor+1$, then independently correct negative judgments can construct a bad verdict against adversarial positive voting exactly when $C_x\ge K$ in the declared fault partition. + +For the ELVES-style escalation model, let $F$ be the tranche/escalation factor, $\gamma=A/N$, and $f_x=B_x/(N-A)$. Replacing the generic honest share by the fault-specific independently correct share gives the declared reproduction mean +\[ +\boxed{\lambda_x=F\frac{C_x}{N}=F(1-\gamma)(1-f_x),\qquad \lambda_x>1\ \text{supercritical}.} +\] +This substitution is a model extension, not a theorem attributed to the original ELVES analysis. + +\subsection{A minimal counterexample} + +Take the same validator count, the same adversarial share $\gamma=0.20$, and the same illustrative escalation factor $F=2$. + +\begin{center} +\small +\begin{tabular}{@{}lccc@{}} +\toprule + & shared-fault share $f_x$ & independently correct share & $\lambda_x$ \\ +\midrule +Population 1 & $0.10$ & $0.80\times0.90=0.72$ & $1.44$ \\ +Population 2 & $0.50$ & $0.80\times0.50=0.40$ & $0.80$ \\ +\bottomrule +\end{tabular} +\end{center} + +Both populations are 80\% non-adversarial. Under this declared audit model, one is above the independent-correction threshold and the other below it. Ordinary validator counts and honest fractions therefore do not determine fault-specific corrective capacity. + +\begin{center} +\begin{tikzpicture}[ + node distance=6mm and 11mm, + box/.style={draw=line,rounded corners=2pt,fill=white,inner sep=5pt,align=center,font=\small}, + good/.style={box,fill=pale}, + bad/.style={box,fill=warn}, + arr/.style={-{Latex[length=2.2mm]},draw=muted,thick} +] +\node[box] (same) {same current validator count\\same adversarial share}; +\node[good,below left=of same] (ind) {low correlated exposure\\large $C_x$}; +\node[bad,below right=of same] (corr) {shared fault $x$\\small $C_x$}; +\node[good,below=of ind] (sup) {$\lambda_x>1$\\correction reproduces}; +\node[bad,below=of corr] (sub) {$\lambda_x<1$\\correction can die out}; +\draw[arr] (same) -- (ind); +\draw[arr] (same) -- (corr); +\draw[arr] (ind) -- (sup); +\draw[arr] (corr) -- (sub); +\end{tikzpicture} +\end{center} + +\section{The second question: what maintains correction over time?} + +Even if $\lambda_x>1$ today, the ecosystem can lose the independent implementations, operators, effort, observability, or resources that supplied that margin. We therefore introduced the smallest explicit slow-state model we could use to separate \emph{current correction} from \emph{maintenance of future correction}. + +Let $C_t$ denote normalized independently corrective capacity, $O_t$ maintenance observability/attribution, and $R_t$ returned-resource capacity. The declared slow loop is $C\rightarrow O\rightarrow R\rightarrow C$. Coupling the next slow update back to the audit layer gives +\[ +\boxed{\lambda_{x,t+1}=r_C\lambda_{x,t}+F k_{RC}R_t.} +\] +At current criticality, $\lambda_{x,t}=1$, Lean verifies the exact one-step boundary +\[ +\boxed{\lambda_{x,t+1}\ge1\quad\Longleftrightarrow\quad Fk_{RC}R_t\ge1-r_C.} +\] +Interpretation: return into corrective capacity must at least replace its attrition if a critical system is not to cross below the threshold on the next slow update. + +\newpage + +{\small\bfseries\color{accent} JAM RESEARCHER BRIEF \hfill PAGE 2}\par +\vspace{3pt}\hrule + +\section{Why a snapshot is not enough} + +The distinction does not depend on accepting the full three-variable maintenance model. In the reduced path $\lambda_t=m^t\lambda_0$, two systems can start at the same current value $\lambda_0=3/2$ but have opposite five-step status: with $m=1$ the value remains $3/2$; with $m=0.9$ it falls to approximately $0.886$. + +\callout{pale}{\centering\textbf{Present agreement $\neq$ present corrective capacity $\neq$ maintained corrective capacity $\neq$ future corrective resilience.}} + +The full-state Lean result goes one step further. For the declared $C\rightarrow O\rightarrow R\rightarrow C$ dynamics, it identifies a canonical replacement condition and proves a coordinatewise forward-invariant region in which fast audit correction stays supercritical at every future cross-audit time. It also proves the complementary erosion mechanism: remove the immediate $R\rightarrow C$ return edge while $r_C<1$, and positive corrective capacity declines at the next slow update. + +\section{What is proved, and what is not claimed} + +\begin{minipage}[t]{0.48\linewidth} +\textbf{Machine-checked in Lean} +\begin{itemize} + \item separation of current audit correction from slow maintenance viability; + \item witnesses for all four cells of the two-threshold phase structure; + \item the one-step bridge from slow state to next-audit reproduction; + \item eventual erosion in the reduced model when $0\le m<1$; + \item the full-state forward-invariance persistence theorem; + \item decline after deleting the immediate resource-return edge. +\end{itemize} +\end{minipage}\hfill +\begin{minipage}[t]{0.48\linewidth} +\textbf{Deliberately not claimed} +\begin{itemize} + \item that $C_t,O_t,R_t$ are Gray-Paper state variables; + \item that the coefficients are calibrated JAM quantities; + \item that positive-systems, branching, or geometric-decay mathematics is novel; + \item that the full slow system globally converges; + \item that current JAM deployments have any particular correlated-fault rate. +\end{itemize} +\end{minipage} + +\section{Three questions for JAM/ELVES reviewers} + +\begin{enumerate} +\item \textbf{Coverage.} Is correlated honest implementation failure already covered by a JAM/ELVES assumption, verdict rule, sampling mechanism, or recovery mechanism that this analysis has missed? +\item \textbf{Security object.} If not, is \emph{fault-specific independently corrective capacity} a meaningful quantity for reasoning about JAM execution auditing, or is there a better protocol-native object? +\item \textbf{Measurement.} If the distinction is meaningful, which observable testnet/deployment quantities would best estimate whether independent corrective capacity persists across audits---client/fault-family exposure, independent re-execution effort, operator diversity, attribution, resource flows, or something else? +\end{enumerate} + +\callout{warn}{\textbf{The requested expert judgment is intentionally narrow:} are we modelling a real residual failure mode of JAM, or has the protocol already closed this loop somewhere we have missed? If the latter, identifying that mechanism would directly falsify or substantially narrow the JAM-specific interpretation.} + +\section{Where to inspect the full argument} + +The full derivation, claim ledger, Python experiments, and machine-checked Lean proofs are collected in \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/pull/22}{Distributed-Commons-Control, PR \#22}. The most relevant source paths are: +\begin{itemize} + \item \texttt{papers/correlated-honest-failure/} --- manuscript and claim ledger; + \item \texttt{formalization/JamRecurrentMaintenance.lean}; + \item \texttt{formalization/JamResilienceDynamics.lean}; + \item \texttt{formalization/JamMaintenancePersistence.lean}. +\end{itemize} + +\vfill +{\footnotesize\color{muted} Researcher brief, September 2026. This document is an interface to the formal work, not an additional layer of claims. The declared model is intentionally small so that protocol experts can reject, replace, or operationalize its assumptions.} + +\end{document} From 0cac7f649070f5b3336a300fa4081d952d09378a Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:33:22 +0200 Subject: [PATCH 55/61] Fix LaTeX dependency for researcher brief build --- .github/workflows/build-jam-researcher-brief.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-jam-researcher-brief.yml b/.github/workflows/build-jam-researcher-brief.yml index 7ca143a..9e27f49 100644 --- a/.github/workflows/build-jam-researcher-brief.yml +++ b/.github/workflows/build-jam-researcher-brief.yml @@ -27,6 +27,7 @@ jobs: sudo apt-get update sudo apt-get install -y --no-install-recommends \ latexmk \ + lmodern \ texlive-latex-base \ texlive-latex-recommended \ texlive-latex-extra \ From 40f2bf6864562a33ed65a1ff59baf10a33d26e8e Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:34:05 +0200 Subject: [PATCH 56/61] Trigger reproducible JAM researcher brief PDF build --- docs/JAM_RESEARCHER_BRIEF.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/JAM_RESEARCHER_BRIEF.tex b/docs/JAM_RESEARCHER_BRIEF.tex index b67d46e..b674a82 100644 --- a/docs/JAM_RESEARCHER_BRIEF.tex +++ b/docs/JAM_RESEARCHER_BRIEF.tex @@ -1,3 +1,4 @@ +% Source for the committed researcher-brief PDF. \documentclass[10pt,a4paper]{article} \usepackage[margin=16mm]{geometry} From fd468b26b3d70dbeb8038cb400f19753008ee5a4 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:36:08 +0200 Subject: [PATCH 57/61] Make researcher brief PDF build commit first output --- .github/workflows/build-jam-researcher-brief.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-jam-researcher-brief.yml b/.github/workflows/build-jam-researcher-brief.yml index 9e27f49..ce4b8b5 100644 --- a/.github/workflows/build-jam-researcher-brief.yml +++ b/.github/workflows/build-jam-researcher-brief.yml @@ -4,6 +4,7 @@ on: push: paths: - "docs/JAM_RESEARCHER_BRIEF.tex" + - ".github/workflows/build-jam-researcher-brief.yml" workflow_dispatch: permissions: @@ -45,7 +46,8 @@ jobs: - name: Commit generated PDF when changed run: | - if git diff --quiet -- docs/JAM_RESEARCHER_BRIEF.pdf; then + if git ls-files --error-unmatch docs/JAM_RESEARCHER_BRIEF.pdf >/dev/null 2>&1 \ + && git diff --quiet -- docs/JAM_RESEARCHER_BRIEF.pdf; then echo "Generated PDF is unchanged." exit 0 fi From f07d488a9bfc1774959327ceed2da5f6aa87cb04 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:37:23 +0000 Subject: [PATCH 58/61] Regenerate JAM researcher brief PDF --- docs/JAM_RESEARCHER_BRIEF.pdf | Bin 0 -> 279884 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/JAM_RESEARCHER_BRIEF.pdf diff --git a/docs/JAM_RESEARCHER_BRIEF.pdf b/docs/JAM_RESEARCHER_BRIEF.pdf new file mode 100644 index 0000000000000000000000000000000000000000..900af6799df81764a334558c7c43f45734792739 GIT binary patch literal 279884 zcmagFQ*gJBT2vUN3cCSnk` zHF7l*H8XKAHG|>jhjDRrHZ!t=@!Z_u-D=)qPrm(uxfxNHLXV-i5j1B}X3x9dIB=F4C|~d-i;Ionq0z#o%gH`fqHj zCOD>9xm!^?UAXD+y86xk<@oV8pCR+0g`=V0=lN?cw`pVM*ZUd5$oS=O&OpB}|M%@> z1`_4xs;v^HSXw%iypSd?+zkk8X&9)o^bd5!*cSZ4Ljey~Iv|_i2kKY~)w#WDZHudS z{m9_cy6@F4{n@Th_xAo;0&?S4x8k_|GW&QJ_%o;5M!o;`q}`5v&OHbfR9e{^jGnd{ zpYPLqVD}(Wdba*Tr04ecA7;n~wmNwQj5^lOrd(r8Qh*s|NQxzkq!uz0g1!*xm?Smr z4MYIK5i{S`>Q3%#_fGD`h7aV&`@&N`W4XCT4@oStl;tvkkXwbjgfaE$c}`%}XjZiLg0kFbZo zW)Cn>=e2u$q2696N1M+gTZdiWDE(m4i^ydku5Fi13y%ogUAt3^$vLy+n#vjA{AvgI z-tj~na*$wkQfPONmGKe~WCMAb?cc|}QU|L4_wr?d?dC6|*{i3@>&*mDN9WusU%f{D z*E1seQF;eZ_v47D3G@5}r{@;i^F>L>A05q%-9Akp<(zhhLYuYJ1f*^ahk~!Kf0p-_ z&>uyb_W8cQCTg|&I~kKTMDe$FGjhZ<`Y=`d9y-3S|F$4$@)R~^XgF0FOId{#8x9=1 zm+q9Y8xHVhf}s$dAF;y5U5y08tKdFlOKIuTsND>g*Det!cg)+j*l!@I825_}P6{I~ z-20pbk)SB4Yd@d`I4)mE#DC^j0}36Yhj$pb8}YWpJrU{^-_OtCM)!?gMjcfko}R zagW$S&WUQu3cQAZ2uDAE9nse21MXIlV;8DcKKjw2w}0LHb88KM@l@h-kz;pjzo7;ctE| z@oN9~YRLZOW@rocgaUU31?yg!MPw0RRo2DfH(^M-1@Tb=gd4RB>5OkN`aC({?buLt zp%RRqoSbYOQjK_^3u<#0EM1t2si&f=rT5B+Ls%?ay9xqB(gmJCx=m8afgvOy>E+zqZnh0Q2Xn3T*2n6#5OeLtnYUV_z=) z_;`|I`hKq2X@3((L9kKSW^yo4>twg5gUH?7VDME@NQ)ex_Dpza7Dc@DSSJRqR`+~P6U5QxC|d^6NV4Tq0dle|`Q(rVkuv0J9g zlZPQG2#JP-m?C221jc-N@5u1EFc~ATgo4Hm3!~SfmDmvBbmUjcd`c#%=>{;OIsWD^# zOqFgaO&yTDac(%#7&a&ezV}$*#Epe>`TVlU$LYk)2VbsA zEyle<{*h@;ew2dmd!gah!_9&dL9i{0ac$o=~4 zB%V(4Cilx(Tb~n!$#}22aW=;J_iIIHui=%W>p18Q0}UzGvf`u7L3vD0vMLOLzJHRq zN?OR&@}4&Y^iY(K^^GnBB%o7+H11ElTM+oD6~-V~Q0zo=If+!I zqaZbG(c%*#7nntF<)S@e6;q3V2VhA53x02v*lJ(@C%6H}F*U;n(z1`kerx|lou*LO zqseiB*_y*rps#dkQF6xJ)Avm$T0 zIy-a?le)q zmb2?7UVz_wN_-(TOrDUOrL3`Zs>=vy`srXM5cnEYwJ>A++jWPmaJk3&-E1Er+Tipq zfUX=94%lqr$EA>mdRsxo0fbwm;`YEw6?puq&0grcy|_j>@3YDWm$t(g?du0&-*i)$ z?Lk35X zMQfra*3=Qo_s`ZN8A3%_=lm5sQ zW$rzZ`lqUpj;flzPUEAzmTVng1hd4yO-5QRU(IFcH zlvad1J&vt%5kl}Hlg+^HM-m74@NEise80}7v%VeeO%|Yp6IbiFQV3d{qfOixe(Z37 zdS)yhI;q%i&*R5=BV5-NDLkxBP27C8Z8o=!ZY6b9(qL3IYhxvN5ct zBzve-EKAA}|iI-IE3b>H$a2%?&erj~0C8M*m;GHbjzMiyQwi*E;^bFhtP!80{H?U}sq+7I8*4$sy2zFG!@%=);tetCf7?)ZZF;P*GPymz@ zdigiEqrss2DJvf>IKH=^|Llq=vZ3h0awGNyo{S3cZaY!d3SKdg!FG8+d<7=64N)Xg zAfeeR6&>$E!Z32VGbG;f6rRN<<2LyBSXyY;x#LpD%LK;vfgU3N5iwp$i*Pt(V!=ZXl8 zbx?X+kx{Ga<>DwTRLlt)R~gTm&uqQoIiBiVe3$G^40BRYBq1C&hsniaa+!@mtbf94 z?x8$3W+1&zCTm>@ZQe1cPg9{HQ?J=nS-UWP!c4E5TozhLYwfmle9Y?X#l<6sH!5Ei zo0nrauL3eO5Jo5gmaplmora>DGFAMzKC7$!1dQ1kBK{`!i%XNWb8VCenVIDQ1@yX( zjRwmRVxxL|GIyjEkUs=$bav*d`WP0CHftIX^j*~-Xao1}DNuC$Q4AK}$Cs6Z!H2@f zO8cXJnHjw~-qHEbBUBKdc*Zk|u$YrVEL;wAkzDFOfDFJ(90+5jup>C0+>wOtT&ljX zAdq(SHidSyVGh0bL05?{n|7P#xDA0o7K-$y=7J$DjY%&p^)vHl%s$}gszZSTvi|W| zlfS_*a3R1$puOjs#31Hbps=ZDAFh@!m=hQF456ltp$q3ys6ZZeYk2+UZsV`&?1VJq ztyQLp3GgjOQL}LeU(%tOatIG{^0?me-jy~{f{X{6O~5)a(Sno3B*IBc^)-S^kU!?+$*>vm#W4tQ(MTDI$hFSth^dhmtU%-7={M${#c02S z6uotMI(M5m+4oYii=q*UM~)s&rM06mK0P15qIk_xsURh4C{BWaJx(2BZIYn1h-F$5 z6v9pw5`%lBDBhi-bDknc210t`uz!1(T48!bh4Ykb&;y0!J4EXZtq9z#O z9Pv~IQgyl|)8YYZ2y z_!*9T;Ixg?JJ!quu_Arni*Ip>;i^6EFlw8R9?H^gk$Bcymqw{KT7sjDQzNG`1luO8 zs>a&ZZVU&CD#U|x1j2FM$F|3!W?Ms-3u+BTHf+ei7y-gGjH2Z=x1w}hKZ2QmJUR#k z-l~nl|C7i*m_8*6!Fb5_-)zkt$Aa_b)XczuM;`*w!ngz?FkdX+HyS^ZJX$hUUyIS_ z-4oPQe}Re*YXQ+xyHb%PB+eWMqFzDEuIYVx7f0K!lzt;Ztm|m%Fz93$w$(d;f+^^E z0m+vPa0CglGN4vA0(Cgy#`RQo4WK;cvYMs79&%?t!SfYRc;sx5r2FPhnDONpB2%wz zZ9P;&CcPy~e%A+ES3-52dV=>j<&2r3Q{fUGVI@fTw=w_k3*Rjca^b^T@n z?vkmX&W!1gdqbQ3%bFua<73PdT`Y#csnGRCNoCWc!$0=EfvVSxjWnoio1F0Xi$1rhCRT%Fa&8k;So z{6igzrU@>|PE~4H)X7U+>RAZD%A`OrGAI9`7XBcl3{^EiQ5N~d z{?OBsS@+&npUbCTY$)cKv$JMN$|8se{2W7IU~&-1#ca90KkdO#xdqG{tsj zm}eA@X>`*X+o*ZAK&ObT628gu)#jL>7OxpVY127~3N&1Kvii=^4rP@xj1C-Ew4#T( z1Ta}q=8_#q86#Cqt2Q17msj17yO9G?k1TR_+5}zw6LHSb=YF@h`t!N0 z1v2U1XZ7=R>GyW<78o7aG}1VfztQXLp(uR5(G?@>SwFF~YccJ3jvtK;Z%+RQjYV8z z?7oFCb2x#zQ!z>osvOdC)8h6r*~SA=TSdc`Y{Hv!ef!5`0Fm7F2Lqv??FW=e*DCXp<5Z$IrxuLE&z_gU_=zvRw-2Vugrzbmt=n&MJi zu3t^muz}{FK^Nh5O=QZw53wwwqvM);+Z5Un#&%1up~LfHdh9CTUbh~*x^KkFs8gxR z;uBENDh$^uT|Jy7lMPpPF$ald--S@paU&xH>(c=k8W+(C*rVzuYTL%wR=6la1iN;Q zNCs6JZZmi1Ud~%?zG0rg^sKXiHSNTcL5IWY%4HcYB|>3|HgwH4G1^cv*M#? zY$BjRt?%BU;K1oz6oxA)vR~)W>183^_TUZueMwSmsTuiM5Odr*`ICwizeXFL9jCIE z7#V1;ynSBIaS|%FdGwX`hmiPcUWUTIFHD{a_zK1X_#6961z%b5~0t!}!v{J`_b6?#qpn(SqCpH8^G1@n)hYl1_h%&6lNX4%<32N~eRq~{udZ+M*6 zoY^PfG+}^y|Hbg1caTX3-J*`cl%0~uH%Bl%3J;TPV`vz4q{I9^>#He4DEv8s2<=WP^I^ga2r zI-?=yIOEq=_}PE(&(lc<4S zD_CPH{x+g^>@w^=NGnxMU3XdE*cTo<)D&?c575^o%1Q)#VGc|W2i91R`rW|%M8oh` zOw)j(#Rwk(?|B_)ya|D1Et>|4Ab)wAYe{`Dij{+3f%?HkGp5W?m9ucEn|Mk)P;`W; zO$9qVV%`dQbnFL)Gr+IUH)UphGm?0h-JinNEgKJPaF4?LX%*GHs_J$iJ=_wx6|lqV z&s=AB1A1o|`9Oa0v+TTGJ!px+S*Av~ih$0b-O<1o2?oaf__-k=q`4Hd>$v>PO*#G@ zC0vZ|?Uei$BcH6K86h7z@N)#!0>G=T!hdC`9{&iy33|%HnAw~DzcBni?|*@GHqQT( zsI#)Na{UibC;Gn=^}jkgF8|t_{Pzr)s(Kx(MWew6bMjQDwQjjDqc3e+t6d0sy#hJ0 zqL?D^QgYMM3WKOWplDB*^A(H3doNRVsr8lt4fs{6vX zjx{j%`d|W%lxUI{$W)Li9m6<`4#nyFf|UaLeBFN3tJE<5NfoPSY^6nqFwUu4rGq)q zXk_I4P1t?i`)YhKtM85BAl&tJX-Z%6`R?GrT*vSU=<|F%x&A1~*lSQt2GgonCyw(T z0Jz-dw4v>KI9PTL+AHYp<;-XZ3VF?a*?!PVY|uv;r70y&H0|>>&Bz@J8o@fh{@SlHKimX1SzTFm zySD9maL6erm`SW{vSoI2>F)8GAOiNLZPP+3Bf+MkgB3gBm4xysYgiFNIA_%}cna?x z#%uk+w+5(t`fFqQZLMt+cg^v=<~A|2EVwU>ty&x4dbgH)yhRwSGVffKGWlj*<@9_w zeqR*TT-Wwm$KMK8n;u+sE^4BEu3WVm#4eu8SKSV9l0wn?HNkBJ;>up@-CM9egl*U( zh8fX)c64_02IL;7QR79G&4ut}4hJU`M_I|>HKY2F zf=cWkIN?*HPg8#1k&Tnl(3rAb_vjUq!K?NF3;?WZ0xVywp4O%s;2A-*#CfXZ(vE1J-fLxB{Hc*_PsF#TFYM33Fzs+hv?HlRK?0Cd|-kJy&jmVP4WI60&98R znZV=^lLjFbY~WQnD}I*00iqx=BAn zF!D(Wy1R49{h=GuN~e>8lr4tPL~R5O6B43uA->Btmrj1{-Lp*+M6eO@D4>k2--mG^ z!D;%sm@0`6Lh)=@O9oX05rGwi-cp135vmhxVqTwHt!>A^=8GGz0D_Kj3Jgw~fc69d zZbWrgErkZ1Ty-^UTO+u!x5kJ`@4lufQEd>XN*lwm)VJU3@8#EETg6!`I8 z3`7M+dxYLvfHH;oTF}QN8e4Gg5L5(vfsEacqH3msI1i#NPOd-!w-hEj6cx2Y{4Q#< zcRhv$|9~P`ro58Izfp;7Z=tPO0zz}yd}7`BWaI9{5){os?~wq3N;4B8nE*0omwMTP_c+PFt+N)^hEv6vf@c@L(J&v<~_;e&wR;6;!e1Rvjzo!}G{uNph& z@Am)9^$Os?7#qS(j1c*&a`}vfy>FuOXeo}k(8|}kpQ-~y1WXb+>eB--Zm>G1f4Auz zq8dRn`?yqk(fd{{ERj_5!KC5dh7{(ZxgE!@-vxVPwI!Kk-(wf8mMu?a1{8xTTTk!jI%-S zXK{0gs5F?PfBSm2T=dys&9y?VW|mpr`nVZ9cE!9q;*5g_t31pzpr;6W3ROcxlQKkUItP2vIFw3Cmb8td4b# z)umx(2<*aryf(WbJFqb$Nkyl2T#%xjztQ%t8hqG!J7~-cggYlzv+VEARQr)^4&kv< zA`s^TIIDQpOxt-$E>3lNtRU!q!bWb>iPq1^+;!iN2m-_W|@`hd_&ytRO^k za-$a^N-VpP;stGBSE-gkLE;R*7Po0jv_a$y`|Rnq3CuKbBB3n`!(;o^5U;B#F&ejS zuh5=KS2`#Mdbo(sF8sMKl6ET7#HqXG!wU*A97-age!(UF1(v?ay*|KhhSayl;0H#7|nt3_G#Kos;>)H5~df%vSWoTlN9rI9q1to@u^ zSSJ&o2YB-%4j4ced5$dk$MmU$2#{PNX@L<_dY5N;A9?>~%AhC5?br8GLWZA=xr`lD zuUKlpYSzwpJhqf-81^t0vVbii$SKO7r`!S8*l%+Uy^{C48~*vHnZl8YsvYm|TQ&2J z)Eu^G7y~T&jT9(;GAEc?Eaf?&NERA7r5ctKd@cIu&I_6^#sVS-Ig1gpR@&N=c_-5nlqKM1LV3cle7>Fr0XI7&16 zZkv^Rxx>sbq>ZF9M~f*auoGS=^j33TcwDf6*-(+|)S7qlO0~a%>~E}KvyK^hZYd-g z;r{Zs+h1LwM#obW)MwA+ZT*2n+Jv?bHNlPL=*+v*Mh1qTw z>aKYG?K36SMsQxoYh|`OoI^dN29dHYGpE>O!Ombj+;eqHu&=suU!HuE-~44ZlDO-t zh=PAFquVz(7tJ-@@Tn#Y|u86Vg6u%2!f9b3jt9vx9c|G&SENg*Zc(~>50JE!BYY=N9=vF zP4>Vi9#p!y!xqIM(aF(>@HkEkgCP9J%;7lj*UZfl|D;yCgu{ciJ98b7UOwAPn-g@p zyE1R*g!X`OR8!A$_41a+V!dzsSx)zn^~0Gjy1%FQ(aonC&Qg~L(G2}QybM5-gg>5~ z=UiLtrb#N!T5s=}g33|rFd7ArYf89W@P^g9xvh0o;LgSSX}IH4oN@$sh0Dg4Gr^)| zct@kcYWa>XFt(;yr56#xt&4cb!_zWsE2XVzJLPgUo~VtGFLBIO$}d1*XYpx-{?4uew5l$c$CzG^8m8JT z7qFm7Nl*#jQi7=C{KWHF*degnz$Ww#;A1aK)$iVu0c_{M#6ARn;$wh?XNxyP{5};| zE4BC|>80)ZuoI#Wjx`mBjf3qTS?DaWQP>8{;Wjt|RSl)vhB z)6f-6{hby;ZTGPW!`Iq71Et75oE;X!B*WT5yLdic5>%l^*f(1Fc+$s{>U=8XaP_Hb zL)S8<4n`Xy68~N7CdX>z0aUpZ;|L^r;xXc zQpP&R9NcjHROidE*^)Ltd{>p(;`9_z6Hxp zvhJ)Mf=QFpaZ(x@K*+h=(XP%=>rZQW!Do0#6v96EcKN(R)v51>2VD3vz%naEWU!Elg0Gv4Xb zoKghq+ONwDlKdmqNNHlKE0n@Pp3S$7ijdRMeX-9Yq3zds;hnLJEn*9nt*-jkY8ksx z=Oa;R0zV(=vXHdQTE5c}KFH-YYfxf7PrsPL+~l@1PrZoBwH|%Pa_qM6QbOm`D0<7~ za;MyH7`>c&_MIQ_kL>Orv0D9IuqqmCY-eRvEsqWaRPiQZ8tdY1pe?z$kDsIFWh-RN zd+&l08S~`v%IeJQA~93Va(b#Sfv&4~1d6N9MmH&A+1JIlUcmC*LCFX{V^~ZA&&_xk ze^tk_DQo2>=b1;gQe3uW{ ziomA+9!PgH)Tr%O*#`si2t-Ab49%6h+|GLg_0C#{+*snjZ*Z+Df#}mO(FKgtPZ+wJ zG8Vg@@}rBgRn_oz<1c(9<3eQW4MI<`-AwM^3vfUj#lb{NN@C`lHxWzEnh#LyX-X_1 zxt_24@~I54Wb^F#;;SI6It$J^(dVa46{U!e>(jW;lKOnLm%>tbHXrGH`oKp0vOOv*16rS8s8hc5XS z5uq@Y(Zn8FUOJ*?PKEJF$Q$CF5ed{S^(bq?RA?yT)YBWJ=#oEfz-#hhL(H8oi?M6# zSM-!Bt)@GU_{0IE);1@6sSNg@JN6ES4YoI$HmGpFwMIDpoW&FYKQf z2Gyom*qAi%VXiSl;t9jl>zF=!2{8wzadg*XUVGk9+R65Co+O=#VA7oQKz-!;a$ZA&B{KJAh??YVL(t&uxmOyD_OXhXxKm&W;WGuAqFo0g(hILQKphR4evx(Y-C zNi;aRJ-rS9**64MWLX2Ltck9v1R+yH`9d~q>3GI@4zFl2asayY%eZ#%Vb`HCsPMr(r^7!lG! zzkhUYYj5$RVYD4+PI&Cv#{8=hD4+w9*uu^R*`4|8l%*4B45P^Q(bFYmzbGdz_m359nolRZzpFkZIv*Wa01n-#Ku@r;Mv38+-A0hTsz* zB@T;I0j__)bc=Rl!4)R=~>C-=U3|`+)9EjI({SGI@Y!`Q+-beoH@URDL3}ej^2>_m8g6_MsXX+g+Gm zo7x$FJqNveuzGSpb@O&+{d#|^-Wn<^x_1v^|36iEPk3u1EN-bb4hy= z!oRV&R|Cv30`s%tjsjc>`z)Wr@!O)>5hLxIx~S{r2|OSfl4m+BH;%s zUkFFP4=lboJ|+zxI1V8gvwt9)0?uUdulTE99iUm3C2(2-1kHg;-UWzY0~Zeo??S?k z1@?=`d&S|*4#Gc=NnK?V0+DhpJcP8t-!kea%+c*Tv0%0LnvD7c3d- zO^P%iRa9%JXHi_o01YPr6JoA17|rNfdVoK&fU_M&YY{$)HZ(5~eHtrkUg zo@p7HLYN^D9D1D;lWQTUCISgr))`Tiw%Tgq*)Sx3rQsIL+k@O6#2eANLhg})Cagbm zkd>dAH*$=7N2wUm`#opS60QS|ubx#WR_Eb3P!TaYy$t^T+ z0hiLtwha+T_GUPM!9PxiL@N7W8hL77iSXH&JB4nAfuhf=T z-LMKo(88tj4**HC*KU4Yrl_f>UUYhGhe?wx$K)KtSo$E7^^L3bBI~bYW6_G=f)kXy zu*CC)^&g;Tw@VuvVpn!w-^hGsEd=~1#YgCTVANhh4aSulh5LVRJ3UG56ep>_IhgHo)UEXsV#FP!Fnuypx6XDCDiF)+|VKAEYm zl~pD}%E;)oc>kR-_HvQzs)BR&i}$tZGBSAnV7pN#E)i?fR36{*JW> z<>MRRVe5K9m0}3_$sg0J8`vBi*Fk02g&!6sUlk8UldU+gL5A%hprKDuBk&tD_>fS!9X%pU>%Yft)!NV+FhSb9}e=2xE$*7W7K* zjt)^xzW?oN)PpARtXt7-z5Di1MzLy13=0L83^Tq+aPFQwi_{9c=oQ{MN%1V@d;a3b zo(4U={8|WQJ~@V2)tl1hzcTC?xg=CT$HctSzLfhF&xo^~R*AGa2TbYMoGCz<4mW@Xj z>rg@}d!zA1^iKK=X2{xZ**WpNFTzwfch7rZ@r@?q=rCRr~~`>iI?z zR;rD2?MZ`|&xAc-qK!qxPh`R51)z8WpLuCl;abWYk_F_oE{qF^=yqrKW-iI|*Fnh% zAQ-^wTR{adCF4@z$%Kd}6{Lv99i=1@msk(0XX(9IBnG0S)V5BHWs(gZ%jWR1+AjUA z3!gwgQIuK%sIe5HDV8%k)tR*A)&$$gUn{)u!*BvSRi=zpZ<#n%0r$mzE*0 zXu1p8l(?g*fK>Y<;=DnS(4^RO!R}M+C>%A9E((Mc^y0;zTCSrbo4G_X6CVG-^Kt$q zdYRPwL1qy4SR{G%cyEi`M2yQik`6cvDLzQakGIRaJ?iV48M2Qd02$x$xYXjbN2i(| z5y7)|%sIFGj7P>PEkiOXFnX!jU?1$qLd+i#hJ@BEI1lqL#6?u?whGAdxZ5CbZaJMeOKddp3P5rIf^kT}~7A`V}KQp~w% z_P0UkFkBG$m?Wf8xYW>#PD3j2xz0RQKiX{>N-G-T6P2Un=%zZKcbfA@_0|>TT#_WH z({W^Zdo!jEaKJ}k3CuFn;iimvj=JTQ-ChmC7^)mdFs^4{&Ngq`$brCr0tU<+!pHU< zHeQevtdG*CoxUb!a$wE+U|`wlk!FH8=ov83_K%WM2!HPv-+&y&L$eVp#8mNIedw+m`8UbhfD}?vvrTMBH-ZD)FhZ-cOdGR{wDsw}n=qJCd z6O-;Ce)YuOy^jKruEFUX!hUqKq&cFWWZXED70x_h=+G`W{K%KKIc-!K%ZjARGEeeDz4vqNNd>n4va~BZRRKj2;SFEm3oWC9m(+>q zN7^XPsggs?ebsE?_@b7F796*3q$cyN?2yJ0shtT)wZ%4SZ56Lf_`W&un-`+j(FPJy zWyv;a=co@FFw<9wx>aygTx@pTJumnp$}8t%B)+_GaBR_M;9QMylHyIb=L>6g4x>~M z`idNyhvD`KWkkeEIIjN7NKgi! z=oxIuf`x6heOfmT1DJcOu_FCA_^H+MAnEUl%mR z9EDlRf(Uk@8lpp1VnUb{GRE?-GZZ<7e@zYsKiIRO|7T?cDF<~C*HVuH~7)MUh`gu4{XwN#w zD(99dWWWL8MsleBAxWQz$5DJ-s~e#!V4q_*DCz~|)@T)pR7!=2eps4<@|I-1TDioT z#fT&`aHpnS78otLBPCtlVVf6e*du@|k)J}4wYtMOA}<$N#Hz#Z?4h9pzLEM6xanbZ z1_wCug{SFJf}ce?ckwS}7DsB2^y-&_-F55lM^aBaj(pB@8WaIXL?_uU=WG7|O zGHw9_m=(!?gcb()ah#guIw{GX?r~Nh28-T7*&8?fU>%lY^bRl;QW=j$puD~{)F`8x zORckE)6+ih1Nmq%WvncdDwuH;GQzE&xq!&+%6haQ6Hk+}fM=BD>(6?0#)sR^ar0}^ z>q(X79wH<*e82;TpTUIAKM6Og{L4@S+*?$FMS(4MK0)`17~x?z17zbJE&+P8p4Sl3 z)J%s@#zVxg9??z~L6t`Yqrr{1g|Qwr?iWVeHUnFGarj#lx;{nQ55*Fl9Xu5*tj({y zz?otx(gJg|yYfKn#-=sKaRdH@WZMmx%KQViRKa-j(2H^5V)LbE^+XoG_FZ8}ZFbbh z&d9%}%wzoq=bdV6u0x3*ZX@=2COcXVEi zl|7yWeQ-Mi)(wkGm!9u;pms%LFsk`IR$(M^5ccvNy@Y`P_K}xF(l@07ED!)cK43QM zRym?hEh*%V@dD5q;zxr%=!<@^AUKKJE**=@p|@@>(FAqBQPVI+XZwT=e76DoTEAkm zg&m%>n)ej<9o0@k!{5VnjDUb@(3uzUpFrpW-Iwk-W zxo*;%pupLmRn|kR7ytEAj9aUCIYWCH<=H=Z8q(BGw9JqY5cA|Y4ti{Fz)`8zT{sea zxInsj8ReFblECb%A@8IOv>F%^;H)#(DY8Si!F6%7-dcbqeDCO+N{{fP8z!8eU~;=m zpgVyNt}1f7C(dZsmMS5yS>6qeSjrM>q}q`~@sd;8=IzGo%s-+ki%4gbfQBKL1Mr{m z5zmK4;vXJYpK!S&?qwM@DYrY1XF?rE_s7WL9%ZjPa5I}v3&Lo4-p5%i0_sL}HPD(~ zjAS+})QN;@^SdW&(ul-g9^V4ym^n>?TLLyMd0v z%)o?+E1}~>dc$aeX)zReb{u5>wo;J3B3sUsz4SFy=6runHp4QjsC~#mRKCmh4xURR zy>!6bCmzHxTr3dQCYBwSOa#iEAAYpq&qKolD%r~5Xp7JZn2k&If~hiuq>YTl0_fFW z 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

KF6*#4cl?7D9ec$RS9uepK6;ipPXP*fCH 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®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 Date: Thu, 17 Sep 2026 20:38:51 +0200 Subject: [PATCH 59/61] Skip full CI for generated researcher brief PDF --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a7928e..d01c6e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,8 @@ on: branches: - main pull_request: + paths-ignore: + - "docs/JAM_RESEARCHER_BRIEF.pdf" permissions: contents: read From 5ddcdabdeb614e71fbcdf5bdd38ac2740e485c37 Mon Sep 17 00:00:00 2001 From: albertjanvanhoek <84067352+albertjanvanhoek@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:48:11 +0200 Subject: [PATCH 60/61] Point JAM researcher brief references to main --- docs/JAM_RESEARCHER_BRIEF.tex | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/JAM_RESEARCHER_BRIEF.tex b/docs/JAM_RESEARCHER_BRIEF.tex index b674a82..035d1f4 100644 --- a/docs/JAM_RESEARCHER_BRIEF.tex +++ b/docs/JAM_RESEARCHER_BRIEF.tex @@ -168,13 +168,14 @@ \section{Three questions for JAM/ELVES reviewers} \section{Where to inspect the full argument} -The full derivation, claim ledger, Python experiments, and machine-checked Lean proofs are collected in \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/pull/22}{Distributed-Commons-Control, PR \#22}. The most relevant source paths are: +The maintained source of truth is the \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/tree/main}{\texttt{main} branch of Distributed-Commons-Control}. The most relevant entry points are: \begin{itemize} - \item \texttt{papers/correlated-honest-failure/} --- manuscript and claim ledger; - \item \texttt{formalization/JamRecurrentMaintenance.lean}; - \item \texttt{formalization/JamResilienceDynamics.lean}; - \item \texttt{formalization/JamMaintenancePersistence.lean}. + \item \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/tree/main/papers/correlated-honest-failure}{\texttt{papers/correlated-honest-failure/}} --- manuscript and claim ledger; + \item \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/blob/main/formalization/JamRecurrentMaintenance.lean}{\texttt{formalization/JamRecurrentMaintenance.lean}}; + \item \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/blob/main/formalization/JamResilienceDynamics.lean}{\texttt{formalization/JamResilienceDynamics.lean}}; + \item \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/blob/main/formalization/JamMaintenancePersistence.lean}{\texttt{formalization/JamMaintenancePersistence.lean}}. \end{itemize} +The complete development history for this integration remains available in \href{https://github.com/albertjanvanhoek/Distributed-Commons-Control/pull/22}{PR \#22}. \vfill {\footnotesize\color{muted} Researcher brief, September 2026. This document is an interface to the formal work, not an additional layer of claims. The declared model is intentionally small so that protocol experts can reject, replace, or operationalize its assumptions.} From b2f3596174c7450529b19950dae82b8e38ae7423 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Sep 2026 18:49:28 +0000 Subject: [PATCH 61/61] Regenerate JAM researcher brief PDF --- docs/JAM_RESEARCHER_BRIEF.pdf | Bin 279884 -> 280154 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/JAM_RESEARCHER_BRIEF.pdf b/docs/JAM_RESEARCHER_BRIEF.pdf index 900af6799df81764a334558c7c43f45734792739..9e0a10b457c59b5b279bac5071a17c0527d1c66f 100644 GIT binary patch delta 11393 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 OtSd&KqLNUQMEEa9E7cwV delta 11121 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