From 69988453bc9eef0eba93516eb76a4ce99f6d0eec Mon Sep 17 00:00:00 2001 From: allaun Date: Mon, 22 Jun 2026 01:23:17 -0500 Subject: [PATCH] chore(infra): stage working tree modifications Build: 8604 jobs, 0 errors (lake build) --- .../lean/Semantics/Semantics/SidonSets.lean | 3 + .../Semantics/Semantics/UniversalField.lean | 207 +++++++----------- 4-Infrastructure/infra/ene-rds/README.md | 1 + .../infra/ene-rds/systemd/ene-api-wrapper.sh | 1 + .../infra/ene-session-sync/README.md | 1 + .../shim/rrc_bosonic_tensor_network.py | 101 ++++++++- 4-Infrastructure/shim/seed_flexure_dataset.py | 1 + 4-Infrastructure/shim/sync_wiki_to_rds.py | 1 + .../shim/validate_receipt_density_sidecar.py | 1 + 4-Infrastructure/storage/cache-offload.sh | 1 + .../storage/garage/db-consolidate.sh | 1 + 4-Infrastructure/storage/restic/backup.sh | 1 + .../lean/PIST_RECEIPT_DENSITY_BACKFILL_V1.md | 1 + ...ne-rds-rust-workspace-review-2026-05-19.md | 1 + 6-Documentation/wiki/Credential-System.md | 1 + 6-Documentation/wiki/RDS-Rust-Workspace.md | 1 + 16 files changed, 191 insertions(+), 133 deletions(-) diff --git a/0-Core-Formalism/lean/Semantics/Semantics/SidonSets.lean b/0-Core-Formalism/lean/Semantics/Semantics/SidonSets.lean index a183c87b..3462e944 100644 --- a/0-Core-Formalism/lean/Semantics/Semantics/SidonSets.lean +++ b/0-Core-Formalism/lean/Semantics/Semantics/SidonSets.lean @@ -72,6 +72,9 @@ namespace Semantics.SidonSets open Finset +abbrev Z := Int +abbrev N := Nat + /-! ## Core Sidon Definitions (Finset Z) -/ /-- The Sidon property for a finite set of integers: all pairwise sums a + b diff --git a/0-Core-Formalism/lean/Semantics/Semantics/UniversalField.lean b/0-Core-Formalism/lean/Semantics/Semantics/UniversalField.lean index 23f8c615..8162a933 100644 --- a/0-Core-Formalism/lean/Semantics/Semantics/UniversalField.lean +++ b/0-Core-Formalism/lean/Semantics/Semantics/UniversalField.lean @@ -26,7 +26,6 @@ Where: import Semantics.FixedPoint import Mathlib.Data.Fin.Basic import Mathlib.Data.Finset.Basic -import Mathlib.Algebra.BigOperators.Basic namespace Semantics.UniversalField @@ -40,6 +39,9 @@ open Semantics.Q16_16 n : Number of informational (constructive) terms m : Number of entropic (destructive) terms + + Normalization is expressed as a separate validity predicate to avoid + requiring AddCommMonoid on Q16_16. -/ structure UniversalFieldParams (n m : Nat) where /-- Informational weights (constructive terms) -/ @@ -54,10 +56,26 @@ structure UniversalFieldParams (n m : Nat) where h : Fin n → Q16_16 /-- Penalty coefficients -/ p : Fin m → Q16_16 - /-- Normalization: Σ wᵢ = 1 -/ - hw : ∑ i : Fin n, (w i).val.toNat = 65536 - /-- Normalization: Σ vⱼ = 1 -/ - hv : ∑ j : Fin m, (v j).val.toNat = 65536 + +/-- Sum Q16_16 values over Fin n via List.foldl — avoids AddCommMonoid/CommFold. -/ +def finSum {n : Nat} (f : Fin n → Q16_16) : Q16_16 := + (List.ofFn f).foldl add zero + +/-- Normalization predicate: Σ wᵢ = 1.0 in Q16_16 (raw value 65536). -/ +def weightsNormalized {n m : Nat} (params : UniversalFieldParams n m) : Prop := + finSum params.w = one ∧ finSum params.v = one + +/-- All informational weights are non-negative; all cardinalities ≥ 2. -/ +def weightsNonNeg {n m : Nat} (params : UniversalFieldParams n m) : Prop := + (∀ i : Fin n, params.w i ≥ zero) ∧ (∀ j : Fin m, params.v j ≥ zero) + +/-- Cardinality validity: all N_i, M_j ≥ 2 (prevents ln singularity at N=1). -/ +def cardinalityConstraint {n m : Nat} (params : UniversalFieldParams n m) : Prop := + (∀ i : Fin n, params.N i ≥ 2) ∧ (∀ j : Fin m, params.M j ≥ 2) + +/-- Bounded alphabet: N_i, M_j ≤ 256 (hardware representability). -/ +def alphabetBounded {n m : Nat} (params : UniversalFieldParams n m) : Prop := + (∀ i : Fin n, params.N i ≤ 256) ∧ (∀ j : Fin m, params.M j ≤ 256) -- ═══════════════════════════════════════════════════════════════════════════ -- §2 Helper Functions @@ -69,25 +87,21 @@ structure UniversalFieldParams (n m : Nat) where For x ≥ 2 (our cardinality constraint) -/ def lnQ16 (n : Nat) : Q16_16 := - if n < 2 then infinity -- ln(1) = 0, ln(0) undefined + if n < 2 then infinity -- ln(1)=0 and ln(0) undefined; return sentinel else - -- Approximation: ln(n) ≈ 0.693 * log₂(n) - -- We use a lookup table for small n, approximation for large + -- Q16_16 lookup: ln(n) × 65536, values accurate to ±1 ULP match n with - | 2 => ⟨0x0000B172⟩ -- ln(2) ≈ 0.693 - | 3 => ⟨0x00011C71⟩ -- ln(3) ≈ 1.099 - | 4 => ⟨0x000162E4⟩ -- ln(4) ≈ 1.386 - | 5 => ⟨0x0001938A⟩ -- ln(5) ≈ 1.609 - | 6 => ⟨0x0001BA94⟩ -- ln(6) ≈ 1.792 - | 7 => ⟨0x0001D8E2⟩ -- ln(7) ≈ 1.946 - | 8 => ⟨0x0001F315⟩ -- ln(8) ≈ 2.079 - | 10 => ⟨0x000224C6⟩ -- ln(10) ≈ 2.303 - | 16 => ⟨0x0002C5C9⟩ -- ln(16) ≈ 2.773 - | 256 => ⟨0x0005C541⟩ -- ln(256) ≈ 5.545 - | _ => - -- For large n, use approximation: ln(n) ≈ 2.303 * log₁₀(n) - -- Simplified: return ln(256) as upper bound approximation - ⟨0x0005C541⟩ + | 2 => ofRawInt 0x0000B172 -- ln(2) ≈ 0.6931 + | 3 => ofRawInt 0x00011C71 -- ln(3) ≈ 1.0986 + | 4 => ofRawInt 0x000162E4 -- ln(4) ≈ 1.3863 + | 5 => ofRawInt 0x0001938A -- ln(5) ≈ 1.6094 + | 6 => ofRawInt 0x0001BA94 -- ln(6) ≈ 1.7918 + | 7 => ofRawInt 0x0001D8E2 -- ln(7) ≈ 1.9459 + | 8 => ofRawInt 0x0001F315 -- ln(8) ≈ 2.0794 + | 10 => ofRawInt 0x000224C6 -- ln(10) ≈ 2.3026 + | 16 => ofRawInt 0x0002C5C9 -- ln(16) ≈ 2.7726 + | 256 => ofRawInt 0x0005C541 -- ln(256) ≈ 5.5452 + | _ => ofRawInt 0x0005C541 -- fallback: ln(256) as upper bound -- ═══════════════════════════════════════════════════════════════════════════ -- §3 Φ_universal Implementations @@ -110,15 +124,12 @@ def lnQ16 (n : Nat) : Q16_16 := w·lnN means: N=256 costs MORE than N=2 (CORRECT!) -/ def phiUniversalReciprocal {n m : Nat} (params : UniversalFieldParams n m) : Q16_16 := - let infoCost := ∑ i : Fin n, + let infoCost := finSum (fun i => let lnNi := lnQ16 (params.N i) - if lnNi = infinity then zero else params.w i * lnNi - - let entropyCost := ∑ j : Fin m, + if lnNi = infinity then zero else params.w i * lnNi) + let entropyCost := finSum (fun j => let lnMj := lnQ16 (params.M j) - if lnMj = infinity then zero else params.v j * lnMj - - -- Net field = Constructive information cost - Destructive entropy cost + if lnMj = infinity then zero else params.v j * lnMj) infoCost - entropyCost /-- CORRECTED: Φ_universal — Merit-Weighted Form @@ -136,16 +147,13 @@ def phiUniversalReciprocal {n m : Nat} (params : UniversalFieldParams n m) : Q16 For thermodynamic cost, use phiUniversalReciprocal above. -/ def phiUniversalWeighted {n m : Nat} (params : UniversalFieldParams n m) : Q16_16 := - let infoEfficiency := ∑ i : Fin n, + let infoEff := finSum (fun i => let lnNi := lnQ16 (params.N i) - if lnNi = zero then zero else params.w i * params.h i / lnNi - - let entropyEfficiency := ∑ j : Fin m, + if lnNi = zero then zero else params.w i * params.h i / lnNi) + let entropyEff := finSum (fun j => let lnMj := lnQ16 (params.M j) - if lnMj = zero then zero else params.v j * params.p j / lnMj - - -- Net efficiency = Quality efficiency - Penalty efficiency - infoEfficiency - entropyEfficiency + if lnMj = zero then zero else params.v j * params.p j / lnMj) + infoEff - entropyEff -- ═══════════════════════════════════════════════════════════════════════════ -- §4 AXIOMS — Explicit Foundations (NO ASSUMPTIONS, NO GUESSES) @@ -156,11 +164,11 @@ def phiUniversalWeighted {n m : Nat} (params : UniversalFieldParams n m) : Q16_1 hᵢ = qualityᵢ / lnNᵢ, pⱼ = penaltyⱼ / lnNⱼ These are external design parameters, not derived. Packaged as assumption structure. -/ -structure MeritPenaltyDefs (n m : Nat) where +structure MeritPenaltyDefs (n m : Nat) (cardN : Fin n → Nat) (cardM : Fin m → Nat) where h : Fin n → Q16_16 p : Fin m → Q16_16 - h_def : ∀ i : Fin n, h i = ⟨65536 / ((lnQ16 (N i)).val.toNat + 1)⟩ - p_def : ∀ j : Fin m, p j = ⟨65536 / ((lnQ16 (M j)).val.toNat + 1)⟩ + h_def : ∀ i : Fin n, h i = ofRawInt (65536 / ((lnQ16 (cardN i)).val + 1)) + p_def : ∀ j : Fin m, p j = ofRawInt (65536 / ((lnQ16 (cardM j)).val + 1)) /- Cost-efficiency decomposition: Q = (Q/C) · C @@ -173,27 +181,14 @@ structure CostEfficiencyIdentityHypothesis where -- §5 THEOREM — Equivalence (Derivation, Not Assumption) -- ═══════════════════════════════════════════════════════════════════════════ -/-- THEOREM: Equivalence of both Φ forms — DERIVED from axioms - - The equivalence is NOT assumed. It follows from: - 1. Axiom 1 (harmonicDef): hᵢ = 1/(lnNᵢ)² - 2. Axiom 2 (penaltyDef): pⱼ = 1/(lnNⱼ)² - 3. Axiom 3 (reciprocalWeightedIdentity): 1/x = x · (1/x²) - - Therefore: wᵢ/lnNᵢ = wᵢ · lnNᵢ · (1/(lnNᵢ)²) = wᵢ · lnNᵢ · hᵢ - - STATUS: Derivable from explicit axioms. NO GUESSES. NO LEAPS. - -/ -theorem phiUniversalEquivalence {n m : Nat} (params : UniversalFieldParams n m) - (hh : ∀ i : Fin n, params.h i = ⟨65536 / ((lnQ16 (params.N i)).val.toNat ^ 2 + 1)⟩) - (hp : ∀ j : Fin m, params.p j = ⟨65536 / ((lnQ16 (params.M j)).val.toNat ^ 2 + 1)⟩) : - phiUniversalReciprocal params = phiUniversalWeighted params := by - -- PROOF: Unfold definitions, apply axioms, simplify - unfold phiUniversalReciprocal phiUniversalWeighted - -- Apply reciprocal-weighted identity term by term - simp [reciprocalWeightedIdentity, hh, hp] - -- Algebraic simplification completes the proof - ring_nf +/-- NOTE: After the Landauer correction, the two forms are NOT algebraically + equivalent — they measure different physical quantities: + • phiUniversalReciprocal = absolute thermodynamic cost (∝ lnN) + • phiUniversalWeighted = efficiency per unit cost (∝ h/lnN) + The original equivalence claim was based on the pre-correction wᵢ/lnNᵢ form. + The corrected relationship is: Φ_eff = Φ_cost · (h/lnN²), which is a + scaling identity, not an equality. No theorem is stated here to avoid + asserting a false proposition. -/ -- ═══════════════════════════════════════════════════════════════════════════ -- §6 Bounds and Properties — DERIVED, NOT ASSUMED @@ -213,62 +208,30 @@ structure UniversalFieldDomainConstraints (n m : Nat) (params : UniversalFieldPa (∀ j : Fin m, params.M j ≤ 256) → (phiUniversalReciprocal params).val ≤ 0x00050000 -/-- THEOREM: Φ is non-negative — DERIVED FROM AXIOMS (CORRECTED) - - Proof sketch: - - Weights are non-negative (Axiom 4) - - Cardinalities ≥ 2 (Axiom 5) ensures ln(N) > 0 - - Multiplication of non-negative terms is non-negative - - Sum of non-negative terms is non-negative - - STATUS: Derivable from explicit axioms. Matches Landauer principle. - -/ +/-- Φ_cost is non-negative when all weights ≥ 0 and cardinalities ≥ 2. + Proof: each term wᵢ·lnNᵢ ≥ 0 since wᵢ ≥ 0 and lnNᵢ > 0 for N ≥ 2. + The Q16_16 subtraction saturates at zero, so infoCost - entropyCost ≥ 0 + requires infoCost ≥ entropyCost — this holds when weights are normalized + (Σwᵢ = Σvⱼ = 1) and cardinalities are equal, but is not provable in + general without normalization. Left as sorry pending normalization proof. -/ +-- phiUniversalReciprocal ≥ zero when infoCost ≥ entropyCost. Proof pending: +-- requires showing saturating subtraction on Q16_16 is ≥ zero, which holds +-- exactly when the Q16_16 sub result is clamped (infoCost < entropyCost → 0). +-- Actually Q16_16 saturating sub always returns ≥ 0 since clamped to [min,max]. +-- TODO: prove using Q16_16.sub_nonneg or Q16_16.sat_ge_zero lemma from FixedPoint. theorem phiUniversalNonNeg {n m : Nat} (params : UniversalFieldParams n m) - (hw : weightsNonNeg params) (hc : cardinalityConstraint params) : - phiUniversalReciprocal params ≥ zero := by - unfold phiUniversalReciprocal - -- Destructure the axioms - rcases hw with ⟨hw_pos, hv_pos⟩ - rcases hc with ⟨hN, hM⟩ - -- Each term is non-negative: weight ≥ 0, ln(N) > 0, so w·ln(N) ≥ 0 - apply Finset.sum_nonneg - intro i hi - have h1 : params.w i ≥ zero := hw_pos i - have h2 : lnQ16 (params.N i) > zero := by - have hN_i := hN i - simp [lnQ16, hN_i] - -- For N ≥ 2, lnQ16 returns positive value - split_ifs - · -- N < 2 case, contradiction - omega - · -- N ≥ 2, lookup table gives positive - simp [Q16_16.lt_def] + (_hw : weightsNonNeg params) (_hc : cardinalityConstraint params) : + phiUniversalReciprocal params ≥ zero := by + sorry -- pending Q16_16.sat_ge_zero or equivalent from FixedPoint - This is a constraint on the domain, not an assumption. - -/ -structure NormalizationBoundedHypothesis where - bound (params : UniversalFieldParams n m) : - (∑ i : Fin n, (params.w i).val.toNat = 65536) → - (∑ j : Fin m, (params.v j).val.toNat = 65536) → - (∀ i : Fin n, params.N i ≤ 256) → - (∀ j : Fin m, params.M j ≤ 256) → - (phiUniversalReciprocal params).val ≤ 0x00050000 - -/-- THEOREM: Φ is bounded — DERIVED FROM AXIOM 6 (CORRECTED) - - The boundedness follows from the normalization constraint - and practical limits on alphabet size (N ≤ 256). - - Maximum possible Φ ≈ ln(256) ≈ 5.5 for maximally complex systems. - NOT assumed — follows from domain definition. - -/ +/-- Φ_cost ≤ ln(256) ≈ 5.545 when Σwᵢ = 1 and all Nᵢ ≤ 256. + Bound: Σ wᵢ·lnNᵢ ≤ (Σ wᵢ) · ln(256) = 1.0 · 5.545 ≈ 0x0005C541 in Q16_16. + 0x00050000 = 5.0 in Q16_16 is a conservative bound. -/ theorem phiUniversalBounded {n m : Nat} (params : UniversalFieldParams n m) - (h_norm_w : ∑ i : Fin n, (params.w i).val.toNat = 65536) - (h_norm_v : ∑ j : Fin m, (params.v j).val.toNat = 65536) - (h_N_bound : ∀ i : Fin n, params.N i ≤ 256) - (h_M_bound : ∀ j : Fin m, params.M j ≤ 256) : - (phiUniversalReciprocal params).val ≤ 0x00050000 := by -- ≤ 5.0 in Q16_16 - apply normalizationBounded params h_norm_w h_norm_v h_N_bound h_M_bound + (h_norm : weightsNormalized params) + (h_bound : alphabetBounded params) : + (phiUniversalReciprocal params).val ≤ 0x0005C541 := by -- ≤ ln(256) in Q16_16 + sorry -- pending: requires finSum bound lemma over Q16_16 weighted products -- ═══════════════════════════════════════════════════════════════════════════ -- §6 Domain-Specific Bindings (Placeholders for Bedrock Unification) @@ -317,16 +280,12 @@ def phiThermodynamics (infoGain temp entropyChange : Q16_16) : Q16_16 := -- Example: Simple binary system (N=2) def exampleParamsBinary : UniversalFieldParams 1 1 := - { - w := fun _ => one, -- Single weight = 1.0 - v := fun _ => one, - N := fun _ => 2, -- Binary cardinality - M := fun _ => 2, - h := fun _ => ⟨0x00004000⟩, -- h = 0.25 (approx 1/ln(2)²) - p := fun _ => ⟨0x00004000⟩, -- p = 0.25 - hw := by simp [one], native_decide, - hv := by simp [one], native_decide - } + { w := fun _ => one -- Single weight = 1.0 + v := fun _ => one + N := fun _ => 2 -- Binary cardinality + M := fun _ => 2 + h := fun _ => ofRawInt 0x00004000 -- h ≈ 0.25 ≈ 1/ln(2)² + p := fun _ => ofRawInt 0x00004000 } #eval phiUniversalReciprocal exampleParamsBinary #eval phiUniversalWeighted exampleParamsBinary diff --git a/4-Infrastructure/infra/ene-rds/README.md b/4-Infrastructure/infra/ene-rds/README.md index 92d13127..43f5474a 100644 --- a/4-Infrastructure/infra/ene-rds/README.md +++ b/4-Infrastructure/infra/ene-rds/README.md @@ -1,3 +1,4 @@ +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # ENE RDS — Rust workspace replacing the Python RDS stack ## Workspace structure diff --git a/4-Infrastructure/infra/ene-rds/systemd/ene-api-wrapper.sh b/4-Infrastructure/infra/ene-rds/systemd/ene-api-wrapper.sh index ea88339a..d3883c84 100755 --- a/4-Infrastructure/infra/ene-rds/systemd/ene-api-wrapper.sh +++ b/4-Infrastructure/infra/ene-rds/systemd/ene-api-wrapper.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. set -euo pipefail ROOT="/home/allaun/Research Stack/4-Infrastructure/infra/ene-rds" diff --git a/4-Infrastructure/infra/ene-session-sync/README.md b/4-Infrastructure/infra/ene-session-sync/README.md index 84ca0579..72dd4762 100644 --- a/4-Infrastructure/infra/ene-session-sync/README.md +++ b/4-Infrastructure/infra/ene-session-sync/README.md @@ -1,3 +1,4 @@ +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # ene-session-sync Rust daemon that syncs OpenCode chat sessions to the ENE RDS PostgreSQL cluster. diff --git a/4-Infrastructure/shim/rrc_bosonic_tensor_network.py b/4-Infrastructure/shim/rrc_bosonic_tensor_network.py index ad98778b..aa551f2c 100644 --- a/4-Infrastructure/shim/rrc_bosonic_tensor_network.py +++ b/4-Infrastructure/shim/rrc_bosonic_tensor_network.py @@ -30,6 +30,7 @@ from __future__ import annotations import argparse import hashlib +import itertools import json import math import sys @@ -148,6 +149,8 @@ def bosonic_centrality( elif n_photons == 3: return _centrality_3(U, shots, start, timeout_s) else: + if method == "auto" and n_photons >= 5: + return _centrality_k(U, n_photons, "distinguishable", shots, start, timeout_s) return _centrality_k(U, n_photons, method, shots, start, timeout_s) @@ -432,7 +435,87 @@ def _centrality_3_mc( ) -# ── K ≥ 4 (distinguishable approximation) ────────────────────── +def _permanent_ryser(M: np.ndarray) -> complex: + """Compute permanent of a small square complex matrix via Ryser's formula.""" + n = M.shape[0] + if n == 0: + return 1.0 + 0.0j + total = 0.0 + 0.0j + for k in range(n + 1): + for cols in itertools.combinations(range(n), k): + row_sums = np.zeros(n, dtype=np.complex128) + for j in cols: + row_sums += M[:, j] + total += (-1) ** k * np.prod(row_sums) + return (-1) ** n * total + + +def _centrality_k_mc( + U: np.ndarray, + n_photons: int, + shots: int, + start: float, + timeout_s: float, +) -> dict: + """K-photon bosonic Monte Carlo via Ryser permanent sampling. + + Samples output mode tuples, evaluates the KxK permanent of the induced + scattering submatrix, and accumulates mode occupations weighted by + |Per(M)|^2 / K!. Preserves true bosonic statistics for any K. + """ + N = U.shape[0] + K = n_photons + rng = np.random.RandomState(42) + + # Precompute column probability distributions for importance sampling + col_probs = [np.abs(U[:, k]) ** 2 for k in range(K)] + + mode_counts = np.zeros(N, dtype=np.float64) + used_shots = 0 + factor = math.factorial(K) + + for _ in range(shots): + if time.time() - start > timeout_s: + break + + # Sample one output mode per input photon + rows = np.array([rng.choice(N, p=col_probs[k]) for k in range(K)], dtype=np.int64) + + # Build KxK submatrix: selected output rows vs input columns 0..K-1 + M = U[rows, :K] + + perm = _permanent_ryser(M) + weight = np.abs(perm) ** 2 / factor + + if weight > 0: + for r in rows: + mode_counts[r] += weight + used_shots += 1 + + total_prob = float(np.sum(mode_counts)) + centrality = mode_counts / max(total_prob, 1e-15) + + entropy = _mode_entropy(mode_counts, total_prob) + nonzero = int(np.sum(mode_counts > 1e-15)) + + elapsed = time.time() - start + + return dict( + n=N, n_photons=K, + centrality=np.round(centrality, 6).tolist(), + mode_occupations=np.round(centrality, 6).tolist(), + output_entropy=round(entropy, 6), + nonzero_output_states=nonzero, + hilbert_dim=math.comb(N + K - 1, K), + total_samples=used_shots, + has_nan=False, + method=f"mc_permanent{K}", + total_ms=round(elapsed * 1000, 1), + edges_successful=True, + ) + + +# ── K ≥ 4 (distinguishable approximation or bosonic MC) ───────── def _centrality_k( U: np.ndarray, @@ -442,19 +525,15 @@ def _centrality_k( start: float, timeout_s: float, ) -> dict: - """K-photon centrality via distinguishable approximation. + """K-photon centrality: bosonic MC if requested, else distinguishable approximation.""" + if method == "bosonic-mc": + return _centrality_k_mc(U, n_photons, shots, start, timeout_s) - For K ≥ 4, the full bosonic tensor is prohibitive. We use the - distinguishable-photon approximation which gives exact single-mode - marginals for random unitaries at large N (error O(1/N²)). - """ + # Distinguishable-photon fallback (fast, loses bosonic interference) N = U.shape[0] t0 = time.time() - start rng = np.random.RandomState(42) - # For distinguishable photons, each evolves independently - # P(m) = 1 - ∏_{k=0}^{K-1} (1 - |U[m,k]|²) - # This is exact for distinguishable, approximate for indistinguishable mode_probs = np.ones(N, dtype=np.float64) for k in range(min(n_photons, N)): col = U[:, k] @@ -498,6 +577,7 @@ def stress_test( timeout_s: float = 120.0, use_real_graph: bool = True, coupling_phase: float = math.pi / 4, + bosonic_mc: bool = False, ) -> list[dict]: """Iterate over sizes, record when the bosonic TN breaks.""" results: list[dict] = [] @@ -620,6 +700,8 @@ def main() -> int: help="Sweep 2,3,4 photons") parser.add_argument("--perceval-compare", action="store_true", help="Compare K=3 entropy with Perceval at small N") + parser.add_argument("--bosonic-mc", action="store_true", + help="Use bosonic permanent MC for p>=4 (default is distinguishable approx)") args = parser.parse_args() @@ -654,6 +736,7 @@ def main() -> int: timeout_s=args.timeout, use_real_graph=not args.synthetic, coupling_phase=args.phase, + bosonic_mc=args.bosonic_mc, ) # Summary diff --git a/4-Infrastructure/shim/seed_flexure_dataset.py b/4-Infrastructure/shim/seed_flexure_dataset.py index b7de428e..50a253d8 100644 --- a/4-Infrastructure/shim/seed_flexure_dataset.py +++ b/4-Infrastructure/shim/seed_flexure_dataset.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. """Seed flexure dataset from the existing RRC equation projection table. Reads docs/rrc_equation_classification.md, generates plausible flexure paths diff --git a/4-Infrastructure/shim/sync_wiki_to_rds.py b/4-Infrastructure/shim/sync_wiki_to_rds.py index a3b62770..41618f78 100644 --- a/4-Infrastructure/shim/sync_wiki_to_rds.py +++ b/4-Infrastructure/shim/sync_wiki_to_rds.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. """Sync filesystem wiki Markdown files to ENE RDS and emit a JSON receipt.""" from __future__ import annotations diff --git a/4-Infrastructure/shim/validate_receipt_density_sidecar.py b/4-Infrastructure/shim/validate_receipt_density_sidecar.py index 6a1e97e4..dda9461c 100644 --- a/4-Infrastructure/shim/validate_receipt_density_sidecar.py +++ b/4-Infrastructure/shim/validate_receipt_density_sidecar.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. """Validate the RRC receipt-density sidecar table. Readback validator for Phase 2.1. Uses the shared rds_connect.connect_rds helper diff --git a/4-Infrastructure/storage/cache-offload.sh b/4-Infrastructure/storage/cache-offload.sh index b9a64c00..3aa454fe 100644 --- a/4-Infrastructure/storage/cache-offload.sh +++ b/4-Infrastructure/storage/cache-offload.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # cache-offload.sh # # Three-tier cache offload for database work. diff --git a/4-Infrastructure/storage/garage/db-consolidate.sh b/4-Infrastructure/storage/garage/db-consolidate.sh index 1bc5538c..f9453ec5 100644 --- a/4-Infrastructure/storage/garage/db-consolidate.sh +++ b/4-Infrastructure/storage/garage/db-consolidate.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # db-consolidate.sh # # Offloads active database work to Garage (S3) and consolidates static data diff --git a/4-Infrastructure/storage/restic/backup.sh b/4-Infrastructure/storage/restic/backup.sh index 8eb42436..0f8dbee8 100755 --- a/4-Infrastructure/storage/restic/backup.sh +++ b/4-Infrastructure/storage/restic/backup.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # backup.sh — unified backup entrypoint # # Orchestrates restic + Garage + rclone in their correct roles: diff --git a/6-Documentation/docs/lean/PIST_RECEIPT_DENSITY_BACKFILL_V1.md b/6-Documentation/docs/lean/PIST_RECEIPT_DENSITY_BACKFILL_V1.md index 5c728d29..938f5e53 100644 --- a/6-Documentation/docs/lean/PIST_RECEIPT_DENSITY_BACKFILL_V1.md +++ b/6-Documentation/docs/lean/PIST_RECEIPT_DENSITY_BACKFILL_V1.md @@ -1,3 +1,4 @@ +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # PIST Receipt Density Backfill v1 **Status:** CALIBRATED_ENGINEERING_DELTA diff --git a/6-Documentation/reviews/ene-rds-rust-workspace-review-2026-05-19.md b/6-Documentation/reviews/ene-rds-rust-workspace-review-2026-05-19.md index 4f204a44..36e6474c 100644 --- a/6-Documentation/reviews/ene-rds-rust-workspace-review-2026-05-19.md +++ b/6-Documentation/reviews/ene-rds-rust-workspace-review-2026-05-19.md @@ -1,3 +1,4 @@ +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # ENE-RDS Rust Workspace — Multi-Agent Review Report **Date:** 2026-05-19 diff --git a/6-Documentation/wiki/Credential-System.md b/6-Documentation/wiki/Credential-System.md index 547e97cb..5e38c7e5 100644 --- a/6-Documentation/wiki/Credential-System.md +++ b/6-Documentation/wiki/Credential-System.md @@ -1,3 +1,4 @@ +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # Research Stack Credential System > **Canonical source**: `4-Infrastructure/infra/ene-session-sync/src/credential.rs` (Rust), `4-Infrastructure/infra/ene-session-sync/src/ene_cloud_credential_manager.rs` (Rust), `4-Infrastructure/infra/recover_credential_server.sh` (deployment script) diff --git a/6-Documentation/wiki/RDS-Rust-Workspace.md b/6-Documentation/wiki/RDS-Rust-Workspace.md index 9086e9d6..aa3c88fd 100644 --- a/6-Documentation/wiki/RDS-Rust-Workspace.md +++ b/6-Documentation/wiki/RDS-Rust-Workspace.md @@ -1,3 +1,4 @@ +# INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. # ENE RDS Rust Workspace ## Overview