Moved Gemma4-12B from OpenCode primary model to MCP tool.
This avoids GUI issues and token burn from monitoring.
MCP tool: gemma4
- Calls local llama-server at 127.0.0.1:8081
- Returns reasoning + content
- No API key required
- ~40 tokens/sec generation
Usage: call gemma4 tool with a question, get answer back.
No parent model burns tokens waiting.
Gemma4-12B is now the primary model for all questions:
- Endpoint: http://127.0.0.1:8081/v1
- Model ID: gemma4-12b
- Speed: ~40 tokens/sec
- Cost: free (local)
Escalation: Gemma4-12B → DeepSeek V4 Pro → Claude Opus → GPT-5.5 → all 8
Research Stack is now explicitly read-only. All new formal work
goes to https://github.com/allaunthefox/SilverSight
SilverSight local clone: /tmp/SilverSight (or wherever you clone it)
SilverSight formal modules: formal/SilverSight/
SilverSight AGENTS.md: AGENTS.md in SilverSight repo
AGENTS.md: updated line number (194→204) and description.
GraphRank.lean: added canonical merge verification (4 cases)
and improved docstring for cleanMerge_preservesGap.
Usage:
lbi # full build + ingest
lbi Compiler # compiler surface + ingest
lbi Semantics.GraphRank # narrow target + ingest
Keeps databases in sync during development, not just on commit.
Add to shell: alias lb='lbi'
Added explicit conditions:
- User has no solution (they don't know the answer)
- All free models tried and failed
- All cheap models (< /usr/bin/bash.50/call) tried and failed
- If a free model can solve it, use the free model
Explicit warning: DO NOT USE unless all other approaches failed.
Costs real money (/usr/bin/bash.10-.00 per invocation).
If the problem is solvable by switching models, just switch models.
If the problem is solvable by reading docs, just read docs.
If the problem is solvable by asking the user, just ask the user.
This skill is the last resort before giving up.
4 dimensions × 2 models each, structured like 16D braid:
- Math: DeepSeek V4 Pro + Gemini 3.1 Pro
- Proof: Claude Opus + Cohere Command A+
- Code: GPT-5.5 + Kimi K2.6
- Diversity: GLM-5.2 + DeepSeek V4 Flash
Each dimension fuses independently, then results fuse together.
Maps to OpenRouter Fusion with 8-model panel.
Cost: -10 for full fusion, /usr/bin/bash.10-2 for single dimension.
OpenCode handles provider routing. The skill is a reference card
for which model to switch to. Nothing more.
DeepSeek V4 Pro: /usr/bin/bash.27/.10 (55x cheaper than Opus)
Claude Opus: 5/5 (baseline)
Hermes already handles model routing. Remove MCP server, keep skill
as a cost-optimized model selection guide.
Key insight: DeepSeek V4 Pro is 55x cheaper than Claude Opus and
nearly as good at math/code. Default to DeepSeek, escalate to Opus
only when stuck.
Removed: break_glass_mcp.py (unnecessary — Hermes handles routing)
Defines the core tension: formal verification of novel mathematical
structures using LLMs that can't reliably do arithmetic. Documents
why panels help (diversity > quality), what makes the work
transcendental, and how the break-glass protocol addresses it.
Self-contained document for LLM agents to close the 6 remaining
bridge sorries. Covers:
- Theorem statement and definitions
- Proof architecture (3 verified kernels + 6 bridge sorries)
- What each sorry needs and the proof strategy
- The key insight (zero/non-zero pattern only)
- The blocker (simp can't reduce List operations on 8 elements)
- Possible solutions and file context
canonicalize_ne_zero: (canonicalize q != 0) = (q != 0)
Proof: unfold canonicalize, split on if-condition,
rw h in isTrue branch (Q16_16.one != zero = true by rfl),
simp in isFalse branch.
canonicalize_pattern: boolPattern ∘ canonicalizeSignature = boolPattern
Proof: unfold definitions, exhaustive match on list length (0-9+ elements),
simp with canonicalize_ne_zero rewrites each component.
6 bridge sorries remain (down from 8). Each requires list-level reasoning
over 8-element Q16_16 lists — the simp terms from List.zip/filter/all are
too large for automatic simplification.
Build: 3314 jobs, 0 errors (Compiler surface)
native_decide +revert fails on Q16_16 (Subtype Int, infinite type).
gapQ16_canonical (verified) proves the computation works on {zero,one}.
The bridge from arbitrary Q16_16 to canonical values requires proving
predicate invariance under canonicalization — which is the same lemma.
The fundamental chicken-and-egg: to use native_decide, we need finite
values. To get finite values, we canonicalize. To prove canonicalization
preserves predicates, we need the bridge. The bridge is the lemma we
are trying to prove.
7 bridge sorries remain, all list-induction over 8 elements.
Build: 3314 jobs, 0 errors
gapQ16_canonical: for all 2^8 boolean patterns, verifySpectralGap on
canonical Q16_16 bins (zero or one) = boolGapPat on the pattern.
Verified by native_decide — the first time verifySpectralGap has been
computationally verified on concrete Q16_16 values.
Three independent computational kernels now verified:
- mergeCheck_all_256: 256×256 byte pairs (native_decide)
- gap_byte_pat: 256 boolean patterns (native_decide)
- gapQ16_canonical: 256 Q16_16 patterns (native_decide)
The bridge lemmas (canonicalize_pattern, gap_preserved, etc.) remain
as sorry — each is ~20 lines of list simp on 8-element lists.
Build: 3314 jobs, 0 errors
A boolean is a bit. Eight bins = eight bits = one byte.
mergeCheck_all_256: closed Bool term verified by native_decide over
all 256×256 byte pairs. Zero assumptions, zero free variables, zero sorry.
The kernel proves: for any two bytes where gap(s) ∧ gap(e) ∧ disjoint ∧
crossGap all hold, gap(s OR e) also holds. This is the complete
computational proof of the spectral gap merge property at the bit level.
The remaining sorry is the Q16_16→byte bridge: converting SpectralSignature
bins to/from Nat bytes and showing the predicates correspond. This is
standard list-level reasoning over 8 elements (unzip, map, filter, all).
Build: 3314 jobs, 0 errors (Compiler surface)
Theorem restated with crossInputGap hypothesis (no active bin from s
adjacent to active bin from e). Without this, the theorem is false:
counterexample s=[1,0,1,0,...] e=[0,0,0,1,0,1,...] has merge with
adjacent active bins despite resonanceDegeneracy=0.
Added to Spectrum.lean:
- crossInputGap: cross-input adjacency check on adjacent bin pairs
Added to GraphRank.lean:
- boolGap8: boolean gap check on 8 explicit values
- Complete mathematical proof sketch in docstring (4 steps)
The sorry remains: the Q16_16↔Bool bridge for 8-element lists requires
list-level induction on activeBins/verifySpectralGap/resonanceDegeneracy/
crossInputGap. The boolean kernel (boolGap8) is defined and ready for
native_decide verification once the bridge is automated.
Build: 3314 jobs, 0 errors (Compiler surface)
Discovery: the theorem with only resonanceDegeneracy=0 is FALSE.
Counterexample: s=[1,0,1,0,...] e=[0,0,0,1,0,1,...] — no overlap,
both gap-valid, but merge has adjacent active bins at positions 2,3.
Missing hypothesis: cross-input gap (no active bin from s adjacent to
active bin from e). This holds in Sidon-basis context (powers-of-2
labels ensure min separation ≥ 2).
The sorry is now documented with:
- Exact counterexample
- Required cross-input gap hypothesis
- Proof path when cross-gap is available
- Boolean model (Fin 8 → Bool) verification strategy
Build: 3314 jobs, 0 errors (Compiler surface)
The sorry remains but now has a concrete proof strategy:
- Boolean abstraction: convert Q16_16 bins to Bool (zero vs non-zero)
- Prove gap-preservation on finite 2^8 boolean model (native_decide)
- Lift to Q16_16 via contrapositive: merge active → input active
Blocker: native_decide can't handle free List Bool variables;
needs Fin 8 → Bool representation or custom tactic for the lift.
See TODO(lean-port) marker in theorem docstring.
3,057 theorems/lemmas → ene.prover_state (2,966 after dedup)
3,047 verified proofs → ene.prover_instances
Also fixes ON CONFLICT DO NOTHING and FK bypass for bulk load.
These directories were tracked despite gitignore patterns. Removing them
frees ~120 GB (shared-data), ~1.5 GB (archive), and ~7 GB (lean_binned).
They are either offloaded to Garage S3/Google Drive or superseded
proof artifacts.
- distribute_extraction.py: add gremlin_escape() for special chars,
add --batch-size async mode with submitAsync()
- load_cornfield.py: pipe SQL via stdin to avoid shell metachar issues
- populate_ene_tables.py: same stdin pipe fix for neon SSH calls
When --rrc is given, the shim runs pist-classify-trace on the trace fixture
and rrc-watchdog for RRC alignment, then writes an additional
rrc_alignment receipt into ene.receipts alongside the build receipt.
Sets content_hash to NULL for build_log packages so the partial unique
index ene_pkg_hash_idx does not prevent multiple ingestions of the same
build output. Each build session now gets its own package row. Also makes
receipt/ingest_event inserts idempotent with ON CONFLICT DO NOTHING.
Add concept extraction/orchestration scripts under scripts/ and infra
metadata in infra.json. Generated extraction outputs live under extraction/
and are regenerated from scripts; add extraction/ to .gitignore.