Devin AI
ca422d43b7
fix(lean): reduce E4_sq_eq_E8_coeff to single modular-form q-expansion gap
...
Fully prove the E4^2=E8 Fourier coefficient identity (E4_sq_eq_E8_coeff) modulo one isolated, honestly-named Mathlib gap.
- Add E4_sq_eq_E8_qExpansion: the lone irreducible step (E4^2=E8 as q-expansions). Blocked on dim M8(SL2Z)=1 / valence formula, absent in Mathlib v4.30 (LevelOne.lean proves Module.rank only for weight <= 0).
- Machine-check the entire coefficient extraction for E4_sq_eq_E8_coeff: E4 coeff = 240*sigma3, E8 coeff = 480*sigma7, constant term 1, antidiagonal coeff_mul split into 480*sigma3 boundary + 240^2*convolutionLHS middle, then exact_mod_cast C->N. Previously a single hand-waved sorry.
- Wrap in section ModularFormReduction with local opens (ModularForm EisensteinSeries ModularFormClass) to avoid name clashes.
- Update AGENTS.md + .cursorrules: E8Sidon sorry inventory 6 -> 4.
E8Sidon sorries now: E4_sq_eq_E8_qExpansion (Mathlib-blocked), collision_excess_decrease, greedy_sidon_extraction, e8_singer_improvement.
Build: 3572 jobs, 0 errors (lake build)
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-16 01:19:06 +00:00
Devin AI
5cacb86ddb
feat(lean): close sidon_iff_zero_collision (both dirs) and erdos30_e8_conditional
...
Close 3 sorry tokens (forward, backward, erdos30):
- sidon_iff_zero_collision forward: double-inclusion proves filter = same∪swap,
inclusion-exclusion gives card = (2k-1)k exactly.
- sidon_iff_zero_collision backward: cardinality squeeze shows filter = same∪swap
when excess=0, then classify each element via same/swap membership.
- erdos30_e8_conditional: difference injection into Icc 1 N + trichotomy
partition gives k(k-1) ≤ 2N, contraposition via nlinarith closes the bound.
E8Sidon sorry count: 9 → 6 (across 6 theorems).
All remaining sorries documented with TODO(lean-port).
Build: 3572 jobs, 0 errors (lake build)
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 23:10:53 +00:00
Devin AI
10feb8d717
proof(E8Sidon): close sidon_energy_bound via RRC dimensional classification
...
Add finset_pair_eq_iff lemma (the 'dimensional annotation' step):
{a,b} = {c,d} as Finsets → (a=c ∧ b=d) ∨ (a=d ∧ b=c)
Proved via Set.pair_eq_pair_iff + Finset.coe_inj coercion.
Use it to close sidon_energy_bound (E(S) ≤ 2k²):
1. Route every filtered quadruple to 'same' or 'swap' shape
2. Each shape is an image of S×S (card ≤ k²)
3. Union ≤ same.card + swap.card ≤ 2k²
Inspired by Trail of Bits dimensional analysis technique:
annotate once (finset_pair_eq_iff), validate mechanically.
Sorry count: 9 tokens across 8 theorems (down from 10/9).
Build: 3210 jobs, 0 errors
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 22:23:23 +00:00
Devin AI
15fb4bf30c
proof(E8Sidon): prove e8_levelset_density via Finset.sup'
...
Close sorry for e8_levelset_density by:
- Adding 0 < n precondition (original statement was false at n=0)
- Using Finset.sup' over Icc 1 N to get finite C
- Showing r8 n ≤ C * 1 ≤ C * n^3
Also improves sidon_energy_bound proof sketch with concrete approach.
Sorry count: 10 tokens across 9 theorems (down from 11/10).
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 22:09:30 +00:00
Devin AI
86f9c3b537
feat(lean): fully prove greedy_sidon_sqrt and fiber_partition
...
greedy_sidon_sqrt: Eliminated last sorry. Full proof uses:
- offDiag involution (Prod.swap bijects filter(>) with filter(<))
- card_nbij' for the cardinality bijection
- mul_tsub for k²-k = k(k-1) factoring
- card_le_card_of_injOn for the injection into Finset.Icc 1 sup
fiber_partition: New full proof that fiber has even cardinality.
Same involution technique: split into gt/lt halves via swap bijection.
Sorry count reduced from 12 to 11 (10 theorems).
Build: 3210 jobs, 0 errors
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 22:00:58 +00:00
Devin AI
2da4377798
feat(lean): prove greedy_sidon_sqrt injection argument
...
The k(k-1)/2 ≤ sup(S) bound now has the full injection proof:
- Defined pairs = offDiag.filter(fun p => p.1 > p.2)
- Proved diff is injective on pairs (via sidon_diff_injective)
- Proved diff maps pairs into Finset.Icc 1 (S.sup id)
- Applied card_le_card_of_injOn to get |pairs| ≤ S.sup id
- Final calc chain: k(k-1)/2 = |pairs| ≤ |Icc 1 sup| = sup
Only remaining sorry: |offDiag.filter(>)| = k(k-1)/2
(offDiag involution σ(a,b)=(b,a) bijects filter(>) with filter(<))
Build: 3210 jobs, 0 errors
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 21:51:47 +00:00
Devin AI
3b14e80133
feat(lean): prove sidon_diff_injective and advance §8 greedy extraction
...
Fully proved:
- sidon_diff_injective: for Sidon S, all positive differences a-b
(with a > b, both in S) are distinct. Uses Finset pair membership
and the Sidon property to derive injectivity.
- exists_collision_witness: ¬IsSidonSet → ∃ collision element.
Advanced (structured proofs with remaining Finset sorries):
- sidon_iff_zero_collision: split into forward/backward with energy counting
- collision_excess_decrease: documented energy decrease argument
- greedy_sidon_extraction: full well-founded induction structure + √ bound path
- greedy_sidon_sqrt: trivial case proved, k≥2 case reduced to Finset card bookkeeping
(the hard mathematical content is fully captured in sidon_diff_injective)
Build: 3210 jobs, 0 errors (lake build Semantics.E8Sidon)
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 21:14:32 +00:00
Devin AI
9e43f50257
chore(nix): remove rs-surface package from flake (Garnix shutting down)
...
Remove rsSurface and rsSurfaceImage Nix package definitions from flake.nix.
The Rust source under 4-Infrastructure/infra/embedded_surface/rs-surface/
is preserved — build with cargo directly when needed.
This eliminates the 3 Garnix CI checks (rs-surface, rs-surface-image,
All Garnix checks) that were failing due to the Garnix shutdown.
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:43:47 +00:00
Devin AI
42b14d9bfe
fix(infra): pin base64ct and postgres-types to edition 2021 versions
...
base64ct 1.8.3 and postgres-types 0.2.13 require edition 2024 (Rust 1.85+),
which is not available in nixpkgs-24.11 (Rust 1.83). Downgrade:
- base64ct 1.8.3 → 1.7.3
- postgres-types 0.2.13 → 0.2.9
Verified: cargo +1.83.0 build --release succeeds.
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:41:16 +00:00
Devin AI
23068ae0c5
fix(infra): downgrade rs-surface deps to avoid edition 2024 requirement
...
postgres-protocol 0.6.11 pulled in sha2 0.11.0 and cpufeatures 0.3.0,
which require Rust edition 2024 (Rust 1.85+). nixpkgs-24.11 ships
Rust ~1.83, causing the Garnix CI build to fail.
Fix: downgrade tokio-postgres 0.7.17→0.7.13 and postgres-protocol
0.6.11→0.6.9, which use sha2 0.10 and cpufeatures 0.2 (edition 2021).
Verified: cargo build --release succeeds.
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:36:08 +00:00
Devin AI
07c3504b53
fix(infra): make math-first scripts executable for pre-commit
...
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:26:10 +00:00
Devin AI
0613305be6
feat(infra): add math-first CI scripts and fix wolfram-verification
...
Create the five missing scripts referenced by .pre-commit-config.yaml
and .github/workflows/math-check.yml:
- validate_deepseek_receipts.py — validates *.receipt.json against schema
- validate_claims_registry.py — validates claims.yaml against schema + path checks
- require_math_evidence.py — enforces evidence alongside math-track edits
- test_validate_deepseek_receipts.py — 4 self-tests for receipt validator
- test_require_math_evidence.py — 3 self-tests for evidence checker
Fix wolfram-verification workflow:
- Change permissions from issues:write to pull-requests:write (fixes 403)
- Add TODO(wolfram-verify) annotations to E8Sidon.lean false positives
("normalized" in docstrings matching the normalize pattern)
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:24:48 +00:00
Devin AI
a591baeb8c
fix(lean): correct sorry inventory count in §12 (10 → 12)
...
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:17:58 +00:00
Devin AI
38b61fc790
feat(lean): add E8Sidon module — Eisenstein coefficient identity and Sidon framework
...
New module Semantics.E8Sidon formalizes the connection between E₈ lattice
theta series, Eisenstein series identities, and Sidon set theory.
Definitions (all proven/computable):
- sigma3, sigma7: divisor sum functions via Mathlib ArithmeticFunction.sigma
- convolutionLHS: Cauchy product convolution of σ₃
- IsSidonSet, sidon8, sidonSlack, additiveEnergy, r8
- bernoulli_four, bernoulli_eight: B₄ = B₈ = -1/30 (native_decide)
- E4_normalization, E8_normalization: -(2k/B_k) = 240, 480
Computational witnesses (#eval):
- σ₃(1..4) = 1, 9, 28, 73
- σ₇(1..3) = 1, 129, 2188
- E₄²=E₈ identity verified for n=2,3,4: (61920,61920), (1050240,1050240), (7926240,7926240)
- sidon8.card = 8, sidonSlack = 128
Sorry inventory (12 total, all with TODO(lean-port)):
- E4_sq_eq_E8_coeff: blocked on Mathlib missing valence formula / dim M₈=1
- Sidon theory: energy bound, collision theory, greedy extraction (4)
- E₈ lattice: r8_via_sigma3, r8_one, levelset density (3)
- Conditional: Singer improvement, Erdős bound, fiber partition (3)
Axiom (1): e8_additive_completeness (open problem)
Build: 3572 jobs, 0 errors (lake build)
Co-Authored-By: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-15 01:06:22 +00:00
devin-ai-integration[bot]
0f6ebe36dd
test(coverage): add 138 unit tests for least-covered modules ( #78 )
...
Four test files covering the modules with zero or near-zero test coverage:
- scripts/qc-flag/test_lean_qc_flagger.py (55 tests)
Covers all pure helpers, code-line detection, QCIssue/FileResult classes,
and all 5 check functions (structural, naming, Q16, proof quality, deps).
- 4-Infrastructure/shim/test_braid_diat_codec.py (22 tests)
Covers Q0_2 encode/decode, ChiralityDIAT roundtrips and verify_b,
MountainPacked dict↔bytes, BraidResidualPacked bracket↔bytes.
- 5-Applications/tools-scripts/llm/test_emitter_utils.py (33 tests)
Covers sha256_bytes, canonical_json_bytes, repo_relative, safe_slug,
timestamps, context bundles, message building, extract_answer,
auth guard, and verify_receipt schema rules.
- 4-Infrastructure/shim/test_validate_rrc_predictions.py (28 tests)
Covers require_path, parse_equation, build_proof_metrics,
build_receipt with all domain mappings, and MATH_* constant sets.
Build: all 138 tests pass (pytest), py_compile clean
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-14 19:31:16 -05:00
devin-ai-integration[bot]
09a173aa71
fix(scripts): replace bare except clauses with specific exception types ( #77 )
...
Replace 30+ bare `except:` and `except: pass` patterns across 17 files
with specific exception types (OSError, ValueError, etc.) and add
logging so errors are no longer silently swallowed.
Changes by category:
Infrastructure (surface/main.py):
- GPU/process probes now catch FileNotFoundError | SubprocessError
Application scripts:
- API fetchers (finalize_database, final_push, bulk_10x) now catch
URLError | JSONDecodeError | KeyError | OSError and print to stderr
- Hardware probes (unified_hardware_surface, swarm_transport_layer)
catch OSError | ValueError for /proc/meminfo reads
- Backend availability checks (prover_backend_interface, hot_swap_manager)
catch requests.RequestException and log at debug/warning
- Code inspector (swarm_system_inspector) catches OSError | UnicodeDecodeError
for file reads
- Model fallback (map_all_equations) now logs the intermediate error
- Minor: gpu_pist_compress → RuntimeError | ZeroDivisionError,
mathlib_to_parquet → ValueError, moe_utils → OSError,
quandela_remote → OSError | IndexError, topology inline scripts
→ ImportError, consolidate_language_databases → UnicodeDecodeError
All touched files pass py_compile.
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Allaun Silverfox <bigdataiscoming+9i37y6j2@protonmail.com>
2026-06-14 19:30:28 -05:00
Allaun Silverfox
a5f77f8d95
feat(lean): Prove all TransportTheory theorems
...
- Prove flexure_reduces_resistance: Flexure joints reduce local resistance
- Prove randers_descent_cheap: Downhill motion cheaper than uphill (using discrete Randers metric)
- Prove lower_transport_higher_density: Lower τ → higher T when C constant
- Prove moores_law_improves: Higher C → higher T when τ constant
- Prove tau_scaling_improves: Lower τ → higher T
- Prove lyapunov_descent_is_geodesic_flow: PIST strict_descent = geodesic flow
- Prove transport_cost_is_pist_potential: Transport cost = PIST potential
All theorems proven. No sorry in committed code.
Build: 3562 jobs, 0 errors (lake build)
2026-06-12 23:24:16 -05:00
Allaun Silverfox
f369864d4c
feat(lean): Add TransportTheory module with Finsler-Randers geometry formalization
...
- Define TranslationResistance, TransportMetric, and TransportSpace
- Formalize Randers metric F = alpha + beta with Riemannian base and Lyapunov drift
- Connect to PIST via pistMass as transport cost functional
- Define IntelligenceDensity T = C/tau as system capability metric
- Provide executable witnesses for all definitions
- Follow AGENTS.md naming conventions and Q16_16 arithmetic
Build: 3561 jobs, 0 errors (lake build)
Per AGENTS.md: Lean is the source of truth. All computational gates have #eval witnesses.
2026-06-12 23:14:13 -05:00
Allaun Silverfox
55236fc627
feat(lean): Add TransportTheory module with Finsler-Randers geometry formalization
...
- Define TranslationResistance, TransportMetric, and TransportSpace
- Formalize Randers metric F = alpha + beta with Riemannian base and Lyapunov drift
- Connect to PIST via pistMass as transport cost functional
- Define IntelligenceDensity T = C/tau as system capability metric
- Provide executable witnesses for all definitions
- Follow AGENTS.md naming conventions and Q16_16 arithmetic
Build: 3561 jobs, 0 errors (lake build)
Per AGENTS.md: Lean is the source of truth. All computational gates have #eval witnesses.
2026-06-12 23:12:47 -05:00
Brandon Schneider
3a43f7632f
fix(adversarial-review): resolve 35 critical coding bugs across 8 subsystems
...
Security & correctness fixes from full adversarial review:
Lean (7 fixes):
- FixedPoint.lean: guard false theorem with n > 0 precondition
- QFactor.lean: remove double-scaling error in energy decrease
- AVMIsa/Step.lean: implement addSatQ16/subSatQ16 primitives
- BraidEigensolid.lean: fix crossStep second output argument swap
- SSMS.lean: complete ACI preservation proof (with rounding caveat)
- HouseholderQR.lean: add n > 0 precondition to spectral theorem
Verilog (7 fixes):
- q16_lut_core.v: fix multiply shift (16 → 32 bits)
- q16_lut_top.v: fix valid bit (0 → 1)
- cff_accelerator.v: fix SHA-256 padding (len < 448 check)
- research_stack_top.v: fix trigger aliasing (unique counters)
- Blitter6502OISC_small.v: fix address width (15 → 16 bits)
- spatial_hash_bram.v: add OOB write guard
- tmr_oepi_safety_fsm.v: fix double-increment race
WGSL (6 fixes):
- shaders.wgsl: atomicAdd for concurrent writes
- frustration_qubo.wgsl: double-buffer + CAS loop
- braid_fft.wgsl: workgroupBarrier synchronization
- burgers_scar_filter.wgsl: atomic E_bins array
Rust (9 fixes):
- thermodynamic.rs: Arc::from_raw → Arc::clone (double-free)
- thermodynamic.rs: Box::into_raw → Box (leak)
- tools/src/lib.rs: shell injection → shlex.quote
- ene-node/src/lib.rs: LRU caps, constant-time HMAC, peer caps
Python (6 fixes):
- similarity/__init__.py: pickle.load → RestrictedUnpickler
- AI-Feynman: torch.load → weights_only=True (14 calls)
- fetch_arxiv.py, fetch_s2.py: eval → ast.literal_eval
- topology.py: os.system → shutil.copy2
- SSH pipe: os.system → base64 pipe
Build: lake build 3572 jobs, 0 errors
2026-05-31 23:38:03 -05:00
Brandon Schneider
5a691a0d2b
docs: add Reality Audit section to k3s-flake README
...
Document discrepancies between the aspirational architecture (in the
flake/docs) and what's actually deployed. Covers control plane location,
edge Caddy divergence, Traefik port, cross-namespace services, and
hostname mismatches. Load the research-stack-infrastructure-bootstrap
skill for the actual deployment procedure.
Build: no build needed
2026-05-31 23:19:42 -05:00
Brandon Schneider
6438dc7214
fix(ingress): correct Authentik forward-auth service namespace
...
- Change middleware address from authentik-server.services.svc.cluster.local
to authentik-server.authentik.svc.cluster.local (Authentik lives in
authentik namespace, not services)
- Create ExternalName service authentik-server in services namespace so
the rs-auth Ingress can route to the cross-namespace service
Build: no build needed
2026-05-31 23:15:46 -05:00
Brandon Schneider
f40e0630bd
fix(infra): standardize k3s cluster — Traefik, ingress, architecture docs, Ray GPU workers
...
Architecture alignment:
- Rewrite k3s-server.nix from aspirational role=server to actual role=agent
(cupfox is the real control-plane at 100.110.163.82:6443)
- Update flake.nix: correct serverAddr for all nodes, annotate dead nodes,
fix hostname from nixos-laptop to nixos
- Update join-agent.sh default SERVER to cupfox
- Document actual vs intended architecture in comments
Ingress:
- Add rs-apps-books Ingress for audiobookshelf (/apps/books → media ns)
- Add strip-apps-books middleware for prefix stripping
- Create ray-ingress.yaml for Ray dashboard at /server/ray
Ray:
- Fix raycluster.yaml: enable dashboard, mount /dev/dri on gpu-workers
- Point gpu-workers to qfox-1 (was neon-64gb)
- Remove nvidia.com/gpu resource dependency (use /dev/dri via Mesa)
Security:
- Move OPENID_CLIENT_SECRET from plaintext to K8s Secret ref
- Update manifest to use valueFrom.secretKeyRef
Cleanup:
- Remove 53 committed test PNG screenshots from git tracking
- Remove auth-state.json from git tracking
- Add *.png, *.json to tests/.gitignore
Build: no build needed
2026-05-31 23:13:04 -05:00
Brandon Schneider
56615a353b
feat(homarr): add Playwright test specs for login, onboard, OIDC, board creation, and integrations
...
17 new .spec.ts files and 4 debug .png screenshots capturing:
- OIDC login flows (oidc-setup, oidc-login)
- Login variants (admin, v2, quick, cookie capture)
- Board creation and management
- Integration setup flows
- Onboarding test sequence
- Check/init/do-init lifecycle tests
Build: 0 jobs, 0 errors (no Lean files touched)
2026-05-31 20:26:16 -05:00
Brandon Schneider
db1781c075
chore(homarr): onboard started, OIDC configured, DB created
...
- Homarr OIDC env vars set (sso-homarr)
- Database created at /data/db.sqlite
- Config schema updated to v2
- Onboard wizard needs final UI completion
Build: 3313 jobs, 0 errors
2026-05-31 15:12:44 -05:00
Brandon Schneider
40655a2805
feat(jellyfin): add media libraries (Movies, TV Shows, Music)
...
- Libraries created via API (204 on creation + path update)
- Paths: /media/movies, /media/tv, /media/music
- SSO-Auth plugin Active, SSO button on login page
- Paths may need manual setting through Dashboard UI
Build: 3313 jobs, 0 errors
2026-05-31 14:55:59 -05:00
Brandon Schneider
0c2245f376
feat(jellyfin): SSO-Auth plugin active, branding configured
...
- SSO-Auth plugin Active with Authentik OIDC provider
- SSO redirect endpoint verified (302 -> auth.researchstack.info)
- Login disclaimer and custom CSS for SSO button
- All 22+ services operational with HTTPS
Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 14:48:21 -05:00
Brandon Schneider
0413c9f7b0
chore(jellyfin): SSO-Auth config file + Playwright setup script
...
- SSO-Auth plugin config written to Jellyfin config directory
- Playwright automation script for SSO-Auth setup created
- Plugin not auto-loading - needs UI catalog install
Build: 3313 jobs, 0 errors
2026-05-31 14:24:44 -05:00
Brandon Schneider
ad68bd49f9
feat(infra): Jellyfin wizard complete, SSO-Auth plugin files deployed
...
- Jellyfin setup wizard completed, admin account created (admin/jellyfin-admin)
- SSO-Auth plugin v4.0.0.3 downloaded and placed in plugins directory
- Authentik OIDC provider for Jellyfin updated with correct redirect URI
- All services verified running
Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 14:14:20 -05:00
Brandon Schneider
71e6b4fc11
feat(infra): complete OIDC config, homarr manifest, vw api verified
...
- Homarr OIDC env vars in manifest + applied
- Navidrome, Kavita, Audiobookshelf OIDC env vars verified
- Vaultwarden API running with allaun@researchstack.info
- Jellyfin DB reset - needs web UI first-run setup
Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 13:48:05 -05:00
Brandon Schneider
2517b04743
fix(infra): configure vaultwarden-api with user credentials
...
- Vaultwarden signups enabled then disabled after user created
- vaultwarden-api configured with allaun@researchstack.info
- API verified responding at vaultapi.researchstack.info
Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 13:36:51 -05:00
Brandon Schneider
54dbac5893
feat(infra): media stack, Vaultwarden, Cloudflare tunnel, OIDC providers, Caddy TLS
...
- Media stack deployed: qBittorrent, Sonarr, Radarr, Lidarr, Prowlarr, Bazarr,
Navidrome, Audiobookshelf, Jellyfin, Homarr, Kavita, MeTube, SuggestArr, BoxArr
- Romm, ebook2audiobook (GPU CUDA), TrailBase, FlareSolverr deployed
- Vaultwarden + Vaultwarden-API deployed
- Caddy reverse proxy on racknerd with Let's Encrypt TLS at *.researchstack.info
- Authentik 7 OIDC providers + 12 proxy providers for SSO
- NVIDIA GPU support enabled on k3s (device plugin + containerd runtime)
- Cloudflare tunnel created (DNS on Porkbun)
Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 11:01:39 -05:00
Brandon Schneider
92e7accb2a
feat(infra): Garage 6-node RF3 cluster, Cloudflare Workers deploy, k3s node additions
...
- Garage scale-out complete: 6 nodes across 6 zones with replication_factor=3
- neon-64gb: added to Garage cluster (zone netcup-arm, 93 GiB)
- steamdeck: installed Garage v2.3.0, added to cluster (zone gpu, 373 GiB)
- nixos-laptop: converted from k3s server to agent in cupfox cluster
- qfox-1: k3s agent rejoined cupfox cluster
- Cloudflare Workers: WASM trinary VM deployed at wasm-compute-edge.researchstack.workers.dev
- node-registry.json: updated with all 6 Garage nodes
- Documentation: AGENTS.md, WIKI.md, ROADMAP.md, LLM-Context.md updated
- Lake build: 3313 jobs, 0 errors
Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 03:39:11 -05:00
Brandon Schneider
79859bc225
feat(infra): migrate external service registry to aiven mysql with ssl
...
- Migrated service_registry.py defaults from InfinityFree to Aiven MySQL.
- Enforced REQUIRED SSL mode on connections (ssl_mode for mysql-connector, ssl dict for pymysql).
- Added helper _get_dict_cursor to resolve pymysql compatibility issues.
- Configured registry password and encryption key in decrypted/encrypted .env via SOPS.
Build: 3313 jobs, 0 errors (lake build)
2026-05-31 02:10:10 -05:00
Brandon Schneider
c5724734a6
chore(infra): bootstrap racknerd and configure multi-node garage cluster
...
- Bootstrapped microvm-racknerd node on its live Tailscale IP 100.80.39.40.
- Connected racknerd to the central QFox cluster.
- Assigned racknerd to its own vps zone with 1G capacity.
- Made garage-cluster-init.sh robust and idempotent.
- Updated comments and topology mappings.
Build: 3313 jobs, 0 errors (lake build)
2026-05-31 02:04:32 -05:00
Brandon Schneider
36dc2f096a
fix(infra): service registry is backup/fallback, not primary
...
Primary: Tailscale mesh + internal PostgreSQL/SQLite
Backup: InfinityFree MySQL (this file)
Use cases for backup path:
- Edge nodes that cant reach mesh (ESP32, Cloudflare Workers)
- Mesh-down fallback (Tailscale outage)
- Cross-mesh discovery (different tailnets)
- Low-impact config distribution
2026-05-30 21:19:24 -05:00
Brandon Schneider
886428d4a0
feat(infra): external service registry via InfinityFree MySQL
...
service_registry.py — mesh-independent node discovery and credential store.
Tables:
nodes — registered devices with capabilities, tier, IPs
credentials — encrypted blobs (ChaCha20) with TTL auto-expiry
config — distributed key-value configuration
Features:
- auto_register() — uses device_capability_probe to register
- discover_nodes() — find nodes by tier, with max-age filter
- store/get_credential() — encrypted at rest, short TTL
- heartbeat() — keepalive for node registry
- CLI: init, register, discover, store, get, cleanup, config-set/get
Any node with internet can reach it (no Tailscale required).
Credentials encrypted with ChaCha20, key from REGISTRY_ENCRYPT_KEY env.
2026-05-30 21:14:51 -05:00
Brandon Schneider
da02dc4051
fix(docs): full soft color override — entire page #f5f0eb
...
No white anywhere. Everything is warm soft gray:
Body/content: #f5f0eb (warm parchment)
Header: #3d3d3d (muted dark, no green)
Headings: #4a4540
Code inline: #ebe6e0 bg
Code blocks: #3d3d3d bg
Tables: #e5e0da headers
Links: #5a7a8a muted blue
All with !important to override Cayman defaults
2026-05-30 21:07:18 -05:00
Brandon Schneider
46d9828915
fix(docs): correct header selector for Cayman theme
...
.page-header not .header — Cayman uses page-header class.
Also override heading colors to match dark theme.
2026-05-30 21:00:32 -05:00
Brandon Schneider
4f5da735ac
docs: soft theme for GitHub Pages — Cayman + muted palette
...
- Cayman remote theme (soft blue gradient header)
- Body: #f0f2f5 soft gray (not glaring white)
- Content: #ffffff with subtle shadow
- Code blocks: dark (#2d3436) with soft text
- Tables: muted headers (#dfe6e9)
- Links: #0984e3 blue, hover #74b9ff
2026-05-30 20:57:50 -05:00
Brandon Schneider
108b825ef3
docs: hyperlink 50x claim to VCN Pipeline compression table
2026-05-30 20:55:06 -05:00
Brandon Schneider
a8ed01dcfa
docs: update wiki with VAAPI, FLAC DSP, tier limitations, Cloudflare/GitHub
2026-05-30 20:52:58 -05:00
Brandon Schneider
a2c76c7ae0
fix(infra): tier limits leave headroom for device function
...
Each tier now reserves resources for its primary function:
GPU_CUDA: 8GB VRAM (not 12 — keep 4GB for display/compositor)
GPU_VAAPI: 256MB (keep VRAM headroom for desktop)
GPU_APU: 128MB (shared DDR, OS needs bandwidth)
CPU_FFMPEG: 64MB, half cores (leave for OS/k3s)
BATCH: 1500 min/month (reserve 500 for actual CI/CD)
ETHERNET: 500ms timeout (leave bandwidth for SSH/mgmt)
FRAMEBUFFER: 768KB (half — keep display visible, compute in top rows)
WASM: 512B payload, 8ms CPU (leave 2ms for JSON overhead)
DSP: 2048 samples (half FFT, leave for overlap buffer)
ESP32: 512B (WiFi/BLE stack needs ~80KB of 520KB SRAM)
2026-05-30 20:45:50 -05:00
Brandon Schneider
78d41bc474
feat(infra): per-tier device limitations for Ray scheduling
...
DeviceLimitations dataclass with hard constraints per tier:
GPU_CUDA: 1GB payload, 16 concurrent, 60s, NVENC, 12GB VRAM
GPU_VAAPI: 512MB payload, 8 concurrent, 60s, VAAPI HW
GPU_APU: 256MB payload, 4 concurrent, 30s, shared DDR
CPU_FFMPEG: 128MB payload, 2 concurrent, 120s, software
BATCH: 64MB payload, 1 concurrent, 6h, 2000 min/month
ETHERNET: 1400B payload, 1 concurrent, 1s, virtio-net
FRAMEBUFFER: 1.5MB payload, 1 concurrent, 100ms, DMA only
WASM: 1KB payload, 1 concurrent, 10ms, 100K req/day
DSP: 16KB payload, 1 concurrent, 5s, FFT only
ESP32: 2KB payload, 1 concurrent, 100ms, Q0_16 scalar
get_limitations(caps) returns actual hardware-aware limits
(vram override, framebuffer capacity, memory override)
2026-05-30 20:44:31 -05:00
Brandon Schneider
e273d0268c
feat(infra): add AMD VAAPI + FLAC DSP to FrameDispatcher
...
FrameDispatcher now routes 6 tags:
TAG_STRAND(0x01) → BraidBackend (VCN compute)
TAG_CROSSING(0x02) → BraidBackend (VCN compute)
TAG_PIST(0x03) → BraidBackend (VCN compute)
TAG_LUPINE(0x04) → CUDABackend (NVIDIA CUDA)
TAG_VAAPI(0x05) → VAAPIBackend (AMD/Intel VA-API) ← NEW
TAG_FLAC(0x06) → FLACBackend (PipeWire/FLAC DSP) ← NEW
New backends:
- VAAPIBackend/LocalVAAPIBackend: AMD/Intel hardware encode/decode
- FLACBackend/LocalFLACBackend: FFT spectral analysis, centroid, RMS
- RayVAAPIBackend: Ray actor for VA-API operations
- SyncVAAPIWrapper/SyncFLACWrapper: sync bridges for FrameDispatcher
Capability probe: DSP tier(1) added between FRAMEBUFFER(2) and ESP32(0)
2026-05-30 20:35:42 -05:00
Brandon Schneider
55dc2dbeaf
docs: add wiki to GitHub Pages source (/docs)
2026-05-30 20:17:01 -05:00
Brandon Schneider
dd5b7382b6
docs: comprehensive wiki — full architecture reference (May 2026)
...
512-line wiki documenting the entire Research Stack:
1. Architecture Overview (5-layer stack)
2. Compute Tiers (GPU_CUDA through OFFLINE)
3. Infrastructure (k3s, Tailscale, KubeRay)
4. VCN Pipeline (50x compression)
5. Ray Integration (FrameDispatcher over Ray)
6. Device Capability Probe (multi-GPU, framebuffer fallback)
7. Compute Surfaces (GPU, Ethernet, framebuffer, ESP32)
8. Mesh Networking Plan (Ray over Tailscale)
9. Formal Verification (23 Lean files, 12 sorries)
10. Key Files + Quick Reference
2026-05-30 20:11:58 -05:00
Brandon Schneider
734d9ef125
feat(infra): integrate edge WASM and GitHub batch compute tiers
...
- Update device_capability_probe.py to add BATCH and WASM tiers and fix a NameError bug on has_virtio_net.
- Build Cloudflare Workers WASM compilation and JS fetch handler in 4-Infrastructure/cloudflare/ executing trinary VM steps.
- Create GitHub Actions batch_compute.yml workflow to harvest runner minutes.
- Keep 4-Infrastructure/AGENTS.md updated with the WASM core library anchor.
Build: 3313 jobs, 0 errors (lake build)
2026-05-30 20:08:31 -05:00
Brandon Schneider
c4f7fa7f13
docs(infra): plan — mesh networking layers over Ray
...
Architectural plan for Tailscale mesh + Ray + VCN + compute surfaces.
5-layer stack:
1. Tailscale connects everything (WireGuard, DERP relay)
2. Ray schedules work across the mesh
3. VCN compresses data (50x bandwidth reduction)
4. FrameDispatcher routes by tag
5. Compute surfaces execute (GPU/CPU/Ethernet/framebuffer/MCU)
Key insight: every device in the Tailscale mesh is a potential
compute node. Framebuffer and Ethernet surfaces turn devices
that "cant run Ray" into compute participants.
4 phases:
1. Ray over Tailscale (mostly done)
2. Multi-tier scheduling (probe done, placement pending)
3. Framebuffer + Ethernet integration (host-side pending)
4. Edge devices (ESP32, 1-Wire sensors)
2026-05-30 20:03:57 -05:00
Brandon Schneider
745fb9757c
feat(infra): add ETHERNET compute tier for virtio-net PistPacket DMA
...
New tier between CPU_FFMPEG and FRAMEBUFFER:
GPU_CUDA(7) > GPU_VAAPI(6) > GPU_APU(5) > CPU_FFMPEG(4) >
ETHERNET(3) > FRAMEBUFFER(2) > ESP32(1) > RELAY(0)
- _detect_virtio_net(): probes /sys/class/net for virtio driver (0x1af4)
- PistPacket computation via TX/RX descriptor rings
- Host vhost-user backend does matrix transforms
- CRC32 hardware offload = witness verification
- Works in any VM with network (even without framebuffer)
2026-05-30 20:02:06 -05:00