Improve a Python post-processor that combines noisy three-dimensional observations from several views into one clean scene cloud. The objective is low geometric error on unseen cases while retaining broad surface coverage and fine detail.
Hard Constraints
Edit only /app/methods/main/solver.py, keeping predict(export_dir) as the entry point.
Use the Python standard library and NumPy already installed in the image. Do not access the network, launch external programs, read files outside the supplied observation directory, or read verifier-owned files.
Read every case from the supplied manifest. Case identifiers, case counts, view identifiers, view counts, and point counts all differ between the visible and sealed packages; nothing about them may be assumed or hard-coded.
Return exactly one cloud per manifest case: 4 to 2,048 finite three-dimensional points, at least four of them distinct. Missing keys, extra keys, empty clouds, malformed points, and non-finite values are rejected outright and score nothing.
predict must be deterministic for identical input and must not modify any input file.
Private reference geometry is not present when predict runs.
What You Have
/app/public/observations/ — the visible package: a manifest and the case files it references, in the same schema as the sealed one. Each view carries points in a shared scene coordinate system and a same-length confidence in [0, 1].
/app/methods/main/solver.py — the editable starter.
/app/selfcheck.py — checks the submission contract only: structure, coverage, finiteness, determinism, input immutability, standard-library-only imports. It contains no reference geometry, does not measure quality, and cannot predict sealed performance.
What You Submit
The edited /app/methods/main/solver.py, exposing:
def predict(export_dir: str) -> dict:
...
mapping each manifest case_id to its point cloud.
How It Is Judged
The sealed evaluator invokes predict on private cases with the same schema, first validating case coverage, cloud shape, point-count bounds, finiteness, distinct-point coverage, and input immutability.
For each valid case it computes symmetric precision/recall F-scores from nearest-neighbour distances at three fixed geometric tolerances (0.0125, 0.025, 0.05) and averages the three. Being symmetric, the score charges both for points that miss the surface and for surface that no point covers. Case results are calibrated separately before the final arithmetic mean; higher is better.
Metric
mean multi-threshold symmetric F-score, nine sealed scenes · higher is better
Precision/recall from nearest-neighbour distance at 0.0125, 0.025, 0.05; F averaged over the three, then over scenes.
anchor
visible set
held-out
reward
B
weak baseline: one view, top confidence
0.2322
0.2401
0.00
S
reference: cross-view consensus
0.8252
0.8351
0.30
U
ceiling: every threshold F = 1
—
1.0000
1.00
normalisation
m <= B
0
B < m <= S
0.3 * (m - B) / (S - B)
S < m < U
0.3 + 0.7 * (m - S) / (U - S)
m >= U
1
m = this run's held-out metric · B = weak baseline: one view, top confidence · S = reference: cross-view consensus · U = ceiling: every threshold F = 1
Each scene is mapped against its own B and S (U = 1), then averaged; the table is the mean of the nine. An invalid submission scores 0.
Rollouts
-wall clock
-spend
-tokens
0versions, 0 kept
No trajectory curve: this run left no comparable self-check measurement, so there is nothing to plot against spend. The versions and what each one changed are below.
Regrade of a seed trial whose artifacts were not exported: no version snapshots, and the transcript stops at the task prompt, so no history survives.
v3Simulator recalibrated to the real package; SEARCH_K, CHI2_MERGE, SINGLE_POST retunednot re-scored16 min · $3.94
v4Moving-least-squares projection of fused points onto a local quadratic patchEach fused point is pushed onto a quadratic patch fitted to its neighbours, removing the error normal to the surface.0.867620 min · $4.75
v5Chi-square split of over-merged groups, geometric veto for off-surface singletonsnot re-scored28 min · $6.30
v6EM-style reassignment: each observation may move to the group it now fits bestnot re-scored31 min · $7.17
v7MLS patch fitted only to trusted multi-view points, weighted by group reliability0.880435 min · $7.85
v8MLS shift shrunk by fit reliability instead of a hard capnot re-scored52 min · $10.71
v9Singleton count from the binomial multiplicity fit whenever three or more views0.883255 min · $11.21
v10Merge radius from a likelihood ratio instead of a tuned multiple of sigmaDerives the radius separating one point seen twice from two points out of sigma and within-view density, instead of sweeping it.0.886558 min · $11.67
v11Retuned on the grid-sampled simulator; MLS patch neighbours 16 -> 22Visible clouds' spacing showed the hidden points sit on a jittered parameter grid; the generator was rebuilt and re-swept.0.888476 min · $15.16
v12Robust IRLS reweighting of the MLS patch fit, so a nearby second sheet cannot drag it0.889282 min · $16.03
v13Cleanup: dropped the provably inert split step, folded the duplicated patch fits0.889287 min · $17.94
v14Contract hardening: dedupe and nudge coincident points in the fallback path0.889289 min · $18.75
v15Documentation and polish only; behaviour identical to v140.889297 min · $20.67
v16Hard bound: merge radius never exceeds 0.80 of the within-view spacing0.8892114 min · $23.66
No reference geometry ships; tuning ran on a self-written simulator, rebuilt at v11 - only v1/v4/v7/v9/v10 re-scored on it. v12-v16 cost $8.5.
v1Inherited starter: top 20% confidence observations of the first viewno quality score1 min · $0.29
v2Adaptive-radius cross-view fusion, confidence-cubic centroids, coverage thinningDrops one-view filtering for the actual task: link observations across views, average each group by confidence, cut singletons.0.46329 min · $1.24
v3Rigid-invariant matching and ICP fusion between repeated shape families0.42316 min · $2.09
v4Pairwise links restricted to mutual nearest neighbours0.464520 min · $2.61
v5Centroid weights from shifted-cubic confidence to exp(9*confidence)0.465324 min · $3.29
v6Retained-singleton confidence floor raised 0.62 -> 0.650.4672928 min · $4.09
v7Scale- and planarity-gated plane correction, one third of the normal offsetFirst change that moves points rather than selecting them: a plane fitted to four neighbours pulls each centre onto the surface.0.4693432 min · $4.96
v8Mutual-match radius widened smoothly for low-confidence pairs only0.4696938 min · $6.35
v9Second pass attaching dropped low-confidence singletons to components0.4696340 min · $6.83
v10Minimum mean-confidence filter for two-view components0.4700943 min · $7.56
v11Cubic centroid weighting replaced by exp(6*confidence)0.4679245 min · $8.16
v12Normal correction by view support: 0.75 / 0.50 / 0.20 for 1 / 2 / 3+ views0.4703348 min · $9.08
v132048-point cap made reliability-aware: multi-view centres, then farthest point0.4703350 min · $9.47
v14Low-confidence fallback routed through dedup and minimum-distinct output0.4703350 min · $9.73
v15Singleton confidence floors by view count: 0.50 / 0.55 / 0.62 / 0.650.4703352 min · $10.56
v16Robust per-view translational bias correction from confident matches0.4698656 min · $12.10
v17MLS denoising restricted to cases with four or more input views0.4703361 min · $14.63
v18Binomial capture-recapture regularisation of the output point countno LOVO figure65 min · $16.00
v19MLS tangent planes fitted from centres with two or more views only0.470166 min · $16.56
v20Swept MLS neighbourhood 3-8 and planarity limit 0.003-1.0; k=4, 0.02 kept0.4703369 min · $17.27
v21Re-swept low-confidence inclusion 0.30-0.60; kept 0.45 as the midpoint0.4703371 min · $18.00
v22Dropping retained singletons that sit near an existing multi-view centre0.4702772 min · $18.49
v23Reserved 48-case suite: random views, visibility, anisotropic noise, outliersThe run's one out-of-sample decision: v17 won mean, median and 10th-percentile true F, so the pick rested on more than the proxy.0.4703373 min · $18.90
v1Inherited baseline: top 20% confidence points of the first view0.1569
v2Union-find cross-view cluster fusion, MLS smoothing, gap fillFirst use of every view: transitive linking collapses repeated observations of one surface point into one output point.0.4817
v3Inlier growing, 3D consensus pull, midpoint and triangle fillMoves points onto the local consensus surface instead of only selecting them; the fill half proved slow and off-surface.0.4915
v4Normal-only pull, scale 2.2, two passes; tangent hex resample at 0.012, twiceRestricts the pull to the surface normal and rebuilds density by resampling the tangent plane, so coverage survives.0.5065
v5Third resample pass at 0.010 to spend more of the 2048-point budget0.5089
v6Normals from a shared-kNN voxel path for large clouds; scores unchanged0.5089
LOVO against high-confidence pseudo-GT rewards density: resampling to 1400-2048 points against 320 true sinks precision at 0.0125.
v0Inherited baseline: top 20% confidence points of the first view0.21722 min · $0.14
v1All views merged, confidence >= 0.5 kept, capped at 2048 pointsBaseline recall was capped near 4%: the proxy target holds about 1000 points and one view's top 20% is about 40.0.96462 min · $0.18
v2Spatial filter: conf >= 0.8, or conf >= 0.4 within 0.05 of another pointKeeps a middling-confidence point only when a second view saw something beside it, trading recall for precision.0.98432 min · $0.23
v3Adaptive voxel downsampling for cases holding more than 2048 points0.98433 min · $0.27
v4Consistency radius tightened from 0.05 to 0.040.04 is the radius that built the proxy target, so from here the proxy was scoring its own construction rule.0.99534 min · $0.43
v5Compound filter with high-confidence isolation boundary and edge-case guards0.99665 min · $0.55
v6Fallback padding, deduplication, non-finite cleaning0.99666 min · $0.61
The proxy target was built from the same views by the rule the solver applies, so it read 0.9966 where sealed F is 0.7616. 6 min, $0.65.