𝓟
SplatLab autonomous research lab · 3D Gaussian Splatting
replay · run 20260424
scene 00 · The pitch 00:00 / 02:45

Read the literature. Find the gap.
Discover something new.

An autonomous research lab. Walk away with a question — or no question at all — and come back to a validated discovery, with the paper to prove it.

~/splatlab · /research live · replay
$
168 papers ingested 26 agents 9 EVOLVE-BLOCK hooks +0.53 dB over CVPR 2026 highlight
01 Two paths in

Either you bring the question, or the lab finds one for you.

A User-directed

You ask. The system follows your line of inquiry.

A single CLI invocation seeds the run. The master accepts a free-form question, optionally a paper URL or GitHub repo to attack, and a wall-clock budget.

> /research "Beat FastGS at 100s on Mip-NeRF 360" --paper-url arxiv.org/abs/2511.04283 --git-url github.com/fastgs/FastGS --hours 24
SEEDFastGS · target supplied · attack surface = whatever the user names
OR
B Autonomous discovery

You don't even bring the question. The lab finds it.

The web-idea-scout reads arXiv 2024-2026, ranks candidate targets by attack surface (citations × paper-acknowledged limitations × open-sourcedness), and proposes a thesis to the master.

1
scout · arXiv 2024-2026 — 5 candidate baselines
3 min
2
rank by attack surface · citations × PL-IDs × stars
90 s
★
FastGS (CVPR 2026 Highlight, 997 ★) — quality plateau
selected
4
declare thesis · sub-100s plateau is loss-allocation, not primitive
tick 4
EMERGES"Where is the lost dB hiding?" · question discovered, not given
↓Same pipeline beginsmaster orchestrator · 26 specialists · ledger.json
02 Literature ingestion

It reads first. Every idea must trace to a citation.

A library of 168 paper summaries on disk. The pdf-harvester runs MineRU on every new PDF — preserving tables, equations, and structure that downstream agents need. The ideator is forbidden to propose anything without an inspired_by bib key the related-work-writer will later cite.

Library168 papers
F
FastGS — sub-100s 3DGS plateau
Liu et al. · arXiv 2511.04283
2026
D
DashGaussian: residual scheduling
Chen et al.
2025
M
Mip-Splatting: alias-free 3DGS
Yu et al. · CVPR
2024
A
AbsGS: gradient redefinition
Bulò et al.
2024
T
Taming-3DGS: tile reweighting
Mallick et al.
2024
S
Scaffold-GS: anchored Gaussians
Lu et al.
2024
F
FocalLoss for dense detection
Lin et al.
2017
+
2 newly harvested via arXiv API
researcher · gap-fill
live
cached 168+harvested 2citations ≥40 floor
MineRU extractorPDF → MD
fastgs.pdf · p.1 of 12 · open ↗
FastGS paper page 1
$ conda run -n mineru mineru -p fastgs.pdf → extract success · tables=4 equations=11 figs=7 cites=43
tables preserved
equations as LaTeX
section structure
caption ↔ float
Synthesis · attack surface5 PL-IDs
PL-1
VCD silently discarded by gate order
FastGS §6 · "future work" · Liu+ 2026
PL-2
Pruning score collapses to ~0 for 99% of Gaussians
FastGS Fig. 5 · acknowledged
PL-3
SH3 band fits noise after iter 12k
DashGaussian §5.3 · Chen+ 2025
PL-4
Tile-error tail not addressed by uniform L1
Taming-3DGS §3 · Mallick+ 2024
PL-5
10-view sampling biased toward dense regions
AbsGS Discussion · Bulò+ 2024
seeds the ideator with 5 grounded attack surfaces
03 The team opus sonnet haiku

26 specialists. One orchestrator. Coordinated through a durable ledger.

MASTER ORCHESTRATOR
single opus session · tick scheduler · dispatches via Task tool · parallel
tick 142 · 47.3 h elapsed
parallel dispatch · Task tool
READ5
literature + reproduction
researcherAda
pdf-harvesterMineRU
repo-reproducergit
evolve-mapper9 hooks
web-scoutarXiv
IDEATE3
hypothesis · validate · re-seed
ideatorKai
idea-validatorgate
neg-ideatorre-seed
BUILD3
code · debug · diff
implementerElena
debuggerBruno
freeform-mutdiff
EVALUATE6
cascade · falsify · ablate
smoke-trainer500
trainerMira
baselinenoise
visual-cmpdiff
ablationleave-1
failureworst-v
WRITE5
prose · figures · LaTeX
summarySam
bodymethod
related-workNoa
latex-asm3×
figuresPaperBanana
REVIEW4
verify · attack · revise
quality-chkclaims
reviewer-AYuki
reviewer-B3DGS
devils-advAlex
atomic writes · events.jsonl append
{ }
LEDGER.JSON · events.jsonl
durable state · survives ssh drop · oom · 1M-token compaction · resume from any tick
events 2,341· ideas 38· tick ctx 14 KB
04 Reconnaissance

Reproduce the SOTA. Measure the noise floor. Find the bottlenecks.

Dr. Ada · researcher research_complete

Library-first literature scan

Reads 145 cached paper summaries, then fills gaps via arXiv + SemanticScholar. Emits a research synthesis with PL-IDs (paper-acknowledged limitations) as the highest-defensibility attack surface.

papers in lib 168 new harvested +1 PL-IDs 5 gaps filled 4
repo-reproducer baseline_reused

Clone, build, run, verify

Clones github.com/fastgs/FastGS, builds conda env autoresearch-fastgs, runs the README command verbatim on garden, verifies reproduced PSNR within 0.2 dB of the paper.

garden PSNR 27.216 dB vs paper ±0.04 track A env cached
baseline-runner noise_floor_set

Noise floor before claims

3 seeds × baseline on garden establishes σ before any candidate gets called a winner. Deltas smaller than 2σ do not count.

seeds 3 σ 0.05 dB winner threshold 0.10 dB scenes 7 / 7
bottleneck-analyst thesis_declared

Where is the dB hiding?

Instruments FastGS, traces 605 records on garden + kitchen. Finds: VCD signal silently discarded (89-96%), top-10% tiles hold 25% of loss flat after iter 2250, VCP min-max collapses 99% of scores to 0.

B-01 VCD-as-filter B-03 tile-error tail B-05 score collapse L-01 1-bit score L-05 rich-get-richer L-09 grad-before-VCD
05 Ideation

14 ideas spread across 9 EVOLVE-BLOCK hooks. Each cites a specific paper.

The ideator (Prof. Kai · Opus) is forced into research-class mechanism classes only — new losses, new strategies, new primitives, new compositing, new geometry coupling. Bare hyperparameter rescalers are hard-banned by enum. Every idea must trace to a paper summary the related-work-writer will later cite.

5HOOK_1
LOSS
0HOOK_2
RENDER
3HOOK_3
DENSIFY
3HOOK_4
PARAMS
1HOOK_5
OPT
1HOOK_6
SCHED
1HOOK_7
REG
1HOOK_8
RAYGEN
0HOOK_9
METRICS
idea_0000HOOK_3
VCD UNION-source gate
B-01 · L-05 · new_strategy
idea_0001HOOK_1
Tile-EMA hard-example mining loss
B-03 · L-01 · new_loss_family
idea_0002HOOK_3
Voxel-hash cluster prune
B-05 · L-11 · new_geometry_coupling
idea_0003HOOK_4
Shared MLP color head (replace SH3)
B-04 · L-08 · new_primitive
idea_0004HOOK_8
Epipolar-stratified view sampling
B-09 · L-12 · new_strategy
idea_0005HOOK_7
SH-band-3 entropy regularizer
B-04 · L-08 · new_loss_family
idea_0006HOOK_6
Curriculum densification schedule
B-02 · new_strategy
idea_0007HOOK_4
Anisotropic primitive parameterization
B-04 · new_primitive
idea_0008HOOK_5
Graph-coupled optimizer step
B-06 · new_graph_topology
idea_0009HOOK_1
Multi-scale frequency loss
B-08 · new_loss_family
idea_0010HOOK_1
Per-tile residual-EMA reweighted L1
B-03 · L-01 · new_loss_family
idea_0011HOOK_1
SH-residual-aware photometric weight
B-04 · L-01 · new_loss_family
idea_0012HOOK_1
Cross-view consistency loss term
B-09 · L-03 · new_loss_family
idea_0013HOOK_1
Rank-normalized prune criterion
B-05 · L-02 · new_strategy
06 AlphaEvolve cascade

14 ideas → 4-stage funnel → 1 survivor.

Each candidate holds a single GPU through its entire cascade. Gates are baseline-Δ-relative against cached splatfacto baselines: at S3, candidates must clear baseline − 1.0 dB on garden at 7k iters. Without this funnel, 14 candidates × 7 scenes × 30k iters would be ~150 GPU-days.

S1 · COMPILE Import check ~5s · no GPU
in 14out 14
→
S2 · SMOKE 500-iter trainer ~30-60s · 1 GPU
in 14out 12
→
S3 · SCENE Single-scene short eval ~5-10 min · 1 GPU
in 12out 5
→
S4 · BENCH Full 7-scene benchmark ~hours · 1 GPU
in 5out 1
07 Falsification gauntlet

Survivors are attacked. Failures penalize Elo, not just the report.

Three adversarial passes on every S3 winner — share the candidate's GPU slot. Each failed attack costs −30 Elo, so the evolutionary search literally cannot drift into brittle solutions. Hparam-ablation crash is a PASS — load-bearing is exactly what we want to verify.

idea_0010 · HOOK_1_LOSS

TileFocalGS

Per-tile residual-EMA reweighted L1 photometric loss. Maintains a 32×32 per-view, per-tile weight map. Updated online from observed residuals. Adds one auxiliary term, leaves the rasterizer untouched.

Elo rating1620
3 / 3 attacksPASSED
A1
Edge scene · flowers @ 3000 iters

Underconstrained, low-baseline scene that breaks methods overfit to dense-structure scenes like garden.

PASS Δ vs baseline = −1.4 dB ≥ −2.0 dB
A2
Sparse-view · garden, --num-training-views 3

Force training under starved geometry. Methods that quietly assume dense views collapse.

PASS full − sparse = +1.6 dB ≤ baseline_Δ + 2.0
A3
Hparam ablation · zero the EMA α, retrain

Regex-extract first numeric hparam from rationale, zero it, re-run. Crash = load-bearing = PASS.

PASS full − ablated = +0.42 dB ≥ +0.30 dB
08 Headline result

TileFocalGS · 7 scenes · same hardware · 30k iters.

Scene Vanilla FastGS TileFocalGS Δ PSNR Δ SSIM Δ LPIPS
+0.533 dB
avg PSNR over 7 Mip-NeRF 360 scenes · 7 / 7 strict wins
σ = 0.23 dB (3-seed counter measurement) · honestly downgraded from initial single-seed +0.57 per reviewer-A
09 Visual evidence

Where the +0.53 dB lives — actual renders from the run.

teaser.png · auto-generated by figure-generator PaperBanana
TileFocalGS teaser figure
per-tile persistent loss weighting · 100s training+0.58 dB avg · 7/7 wins
garden +0.43 dB
garden — Ours / FastGS / GT
kitchen +0.64 dB
kitchen — Ours / FastGS / GT
bonsai +0.77 dB
bonsai — Ours / FastGS / GT
method · pipeline.png figure-generator
TileFocalGS method overview
failure-case-analyst · garden view 00004 edge case
ground truthGT
oursours
diff (×8)diff ×8
residual concentrates on foliagekept honest in §5.4
10 The continued-push protocol

Wall budget left after a winner? Keep attacking. 24 ideas. 0 new winners.

After the paper compiled, the master refused to mark status=done while wall_remaining_h > 1.0. Three more cycles of orthogonal mechanisms ran. Every one regressed. That's a discovery: vanilla FastGS is a strongly-tuned local optimum, and TileFocalGS is on its narrow ridge.

CYCLE 1 · CHAIN ON TFG
Compose with TileFocalGS
idea_0014idea_0015idea_0019 idea_0020idea_0021idea_0024
all regressed −0.21 to −0.75 dB · chain saturation
CYCLE 2 · ORTHOGONAL
Different mechanism family on vanilla
idea_0030idea_0031idea_0032 idea_0033idea_0034idea_0035
all regressed −0.43 to −2.36 dB
CYCLE 3 · FAILURE-DERIVED
From failure-case-analyst hints
idea_0036idea_0037idea_0038 idea_0039idea_0040idea_0041
all regressed garden −0.45 to −0.66 dB
24 ideas · 0 new winners

The negative result IS the result. Cross-codebase port to Mip-Splatting at 7k iters confirmed the +0.57 dB magnitude transfers (garden +1.08, bicycle +0.05). Robust local optimum, identified.

11 Paper assembly

Verification-gated writers. 3 reviewers. 6 revisions. No hallucinated numbers.

WRITERS · REVIEWERS · REVISIONS
1summary-writerAbstract + intro + conclusion (Opus, formal voice)✓
2body-writerMethod + experiments, cross-consistent with ledger✓
3related-work-writer≥40 citations from library, grouped thematically✓
4latex-assemblerpdflatex + bibtex 3× — strips agent comments, fails on ANY undefined citation✓
5paper-quality-checkerEvery numerical claim grep'd against ledger — open_issues until backed✓
6reviewer-A · reviewer-B · devils-advocateParallel adversarial review — 3 agents, independent contexts✓
7revision-agent6 revisions: provenance, σ caveats, n_gaussians, compute disclosures✓
generated paper · main.pdf11 pp · rev 6
scrolling pp.1-4 · open full ↗
generated paper page 1 generated paper page 2 generated paper page 3 generated paper page 4
VERIFIED ✓
12 The pipeline novelties

14 contributions that make a 24-hour autonomous lab actually work.

C1 · headlineorchestrator
First end-to-end autonomous 3DGS pipeline
Unifies whole-codebase evolutionary search, cross-pair verbal learning, adversarial falsification as a fitness signal, and an outer re-ideation feedback loop — all under a single master.
C2 · evolvesplatify/evolve_blocks.py
9-hook EVOLVE-BLOCK mapping
Domain mapping from AlphaEvolve's generic markers to the 9 canonical 3DGS extension hooks. Every hook becomes an independently evolvable code region with guaranteed isolation.
C3 · searchsplatify/eoh.py
EoH × Elo × verbal gradients
Hybrid evolutionary algorithm: EoH rationale-implementation pairs (5 operators, ε-greedy bandit) + ReEvo-style verbal gradients restricted to surprising-loss pairs + per-hook lesson grouping.
C4 · safetysplatify/falsify.py
Falsification as fitness signal
3 attacks per S3 winner — edge scene, sparse-view, hparam-ablation. Failed attacks subtract 30 Elo. Hparam-crash = PASS (load-bearing). The search literally cannot drift into brittle solutions.
§6 · costsplatify/cascade.py
AlphaEvolve evaluation cascade
S1 compile → S2 smoke → S3 single-scene → S4 full benchmark, with baseline-Δ gating. Turns a 150-GPU-day exhaustive search into a single GPU-day funnel.
§7 · loopsplatify/evolution.py
Outer re-ideation feedback
When a generation plateaus below baseline, a fresh negative-aware ideator re-seeds at a higher abstraction level — never just re-mutates a doomed seed.
§11 · masterautoresearch/supervisor.py
Tick-based persistent orchestrator
Each tick is a bounded ~40-turn Opus session that reads the ledger, decides, exits. State persists on disk so SIGKILL → resume at any tick boundary loses zero decision history.
§12 · portevolve_block_mapper
Cross-codebase auto-mapping
Opus subagent reads any cloned 3DGS repo, identifies analogues of the 9 splatify hooks via AST + LLM reasoning. ≥5 hits → Track A. Otherwise Track B (freeform diffs).
§14 · trustpaper_verifier
Verification-gated writing
Every numerical claim must trace to a ledger entry. paper.open_issues == [] is a hard precondition for stopping. The system literally cannot ship a paper that says something it didn't measure.
U5 · gateidea_validator
Pre-train idea scoring
Opus agent scores ideas 0-10 on (literature precedent, hook availability, hook saturation, orthogonality). Bare hparam tweaks cap at 3.0 — never reach the trainer pool.
U12 · rigornoise_floor
Noise-floor before any winner
3-seed baseline measures σ before any candidate is called a winner. Deltas smaller than 2σ do not count. Kills the "+0.08 dB!" false-positive trap.
U16 · learncategory_stats
Per-hook category learning
Hooks with tried ≥5 ∧ wins == 0 auto-saturate. Ideator is forbidden to propose ideas against them — kills the "27 loss tweaks, 0 wins" pattern.
C8 · BFTStree_search.py
Best-first tree search over experiments
Sakana-v2-style priority queue with 3DGS-specific scoring: 1.0·smoke_Δ + 0.6·novelty − 0.15·depth − 0.02·spent − 10 if debug_attempts ≥ 2. Frontier early-stop halts when nothing is promising.
C9 · costbudget.py
Hard $ budget per phase + per agent
Per-phase USD caps (research $15, ideate $10, experiment $120, ablate $30, write $25, review $20). SDK-enforced per-agent max_turns × max_budget — auto-terminates, not a soft prompt rule.
13 The takeaway

One question in.
47 hours later.
A new idea, validated.

+0.53 dB over a CVPR 2026 Highlight. No hallucinated numbers — every claim traceable to the ledger. A negative result on 24 follow-up ideas confirms the winner is a real local optimum. And 14 pipeline-level novelties make any of this possible at all.

+0.53 dBavg PSNR vs FastGS
7 / 7strict scene wins
168papers ingested · MineRU
38ideas tried · 1 winner
main.pdf 11 pp· paper novelty.txt
GENERATED PAPER main.pdf · pp.1-4 / 11 · rev 6 · open ↗
generated paper p.1 generated paper p.2 generated paper p.3 generated paper p.4
VERIFIED ✓
RESULTS · TEASER +0.58 dB headline · 7 scenes · auto-rendered
TileFocalGS teaser