{"claim":{"id":"3a2bda2d-ac5f-4149-a9cb-e6080f668ab7","submission_id":"c8ce5360-576a-40a6-b67e-72a3ee3a048a","submission_revision_id":"26e710fd-b50e-4a82-80c0-74d14a99c953","builder":"builder-01","status":"active","claimed_at":"2026-10-15T15:11:57.302968Z","delivered_at":null,"ended_at":null,"delivery_note":null,"end_reason":null},"task":{"submission_id":"c8ce5360-576a-40a6-b67e-72a3ee3a048a","submission_revision_id":"26e710fd-b50e-4a82-80c0-74d14a99c953","revision_version":4,"submission_status":"under_review","submitted_at":"2026-08-25T13:25:55.817089Z","submitter_name":"Hyunjun Kim","submitter_email":"mnb9227@gmail.com","task":{"status":"submitted","version":4,"extra_fields":{},"submitted_at":"2026-08-25T13:25:55.817089+00:00","industry_domain":"Geospatial / GIS & Remote Sensing (Raster Reprojection & Zonal Analysis)","task_short_name":"geospatial_raster_pipeline","operating_system":"Linux","task_description":"Goal: Produce a common-grid terrain product with zonal statistics and contours from mixed-CRS raster inputs.\n\nRemote workspace:\n- Task folder: geospatial_raster_pipeline\n- Read ALL of `input/spec_sheet.md` first — every requirement there is enforced by QC, including the common-grid definition.\n\nInputs (under `input/`):\n- `dem_utm52n_10m.tif` — EPSG:32652, 10 m (the ANALYSIS MASTER)\n- `dem_wgs84_0p0001deg.tif` — EPSG:4326, 0.0001 deg\n- `dem_webmercator_11m.tif` — EPSG:3857, 11.19 m\n- `zones.shp` / `zones.geojson` — three irregular analysis zones (EPSG:4326)\nAll three rasters describe the SAME terrain.\n\nCommon grid (pixel-EDGE / PixelIsArea convention — see spec):\n- EPSG:4326, pixel-edge extent lon [127.00, 127.10], lat [37.55, 37.65], resolution exactly 0.0005 deg -> 200 x 200 pixels\n- affine origin (127.00, 37.65), axis-aligned, nodata -9999\n- pixel CENTRE of column c / row r: lon = 127.00 + (c+0.5)*0.0005, lat = 37.65 - (r+0.5)*0.0005\n\nWhat to do:\n- Resample the UTM master onto the common grid with NEAREST NEIGHBOUR (interpolation methods are spec violations and are detected).\n- Compute per-zone statistics with the exact header `zone,min,max,mean,std,count` over pixels whose CENTRE lies strictly inside each polygon (centres exactly on a boundary are excluded; the rule is evaluated in exact integer arithmetic — zone edges pass exactly through pixel centres, so float-based point-in-polygon tests disagree on the last ulp); std is the POPULATION standard deviation (ddof=0); 6-decimal values; QC also recomputes the statistics from YOUR delivered raster with this exact rule.\n- Extract contours of the common-grid DEM at a 50 m interval as a GeoJSON FeatureCollection of LineStrings (WGS84) with an `elevation_m` property per feature; vertices interpolate on the pixel-centre lattice. The contour check is all-or-nothing: every vertex is verified against its two adjacent lattice cells and the linear interpolation equation, so fabricated geometry loses the entire contour component.\n\nOutput:\n- `output/dem_common.tif`\n- `output/zonal_stats.csv`\n- `output/contours_50m.geojson`\n","software_licensing":"Free/Open Source","evaluation_criteria":null,"verification_method":"Deterministic QC evaluation (rasterio/numpy; evaluation/ is self-contained — evaluate.py plus geo_lib.py, the canonical grid-of-record definition and shared strict-membership/contour verifiers, so it runs exactly as packaged with no other local dependencies). Malformed values in the delivered CSV degrade the affected cells rather than raising.\n\nMaterials provenance: the three DEM rasters (delivered in three different CRS/resolutions over the same terrain) and the zone polygons are synthesized in-house for this benchmark from an analytic elevation model; no third-party geodata is used, so the package carries no third-party rights and is publishable under CC BY 4.0.\n\nCommon grid (pixel-EDGE / PixelIsArea convention): EPSG:4326, extent lon [127.00,127.10] lat [37.55,37.65], resolution 0.0005 deg -> 200 x 200 pixels; affine origin (127.00, 37.65), axis-aligned; pixel centre of (c,r) = (127.00+(c+0.5)*0.0005, 37.65-(r+0.5)*0.0005).\n\nHard gates (any failure => score 0):\n- All three output files exist\n- CRS 4326, resolution exactly 0.0005, 200 x 200, nodata -9999\n- The affine transform (origin + orientation) and the pixel-edge bounds are checked EXACTLY against the mandated grid\n- Common-grid pixels match the mandated nearest-neighbour reprojection within 1e-3 on >= 99.9% of valid pixels — any correct nearest-neighbour implementation differs from the reference only on source-cell ties, so the 0.1% headroom absorbs tie-breaking while interpolation (bilinear etc.) differs far more and fails outright\n- The zonal CSV carries the byte-exact header `zone,min,max,mean,std,count` (plain UTF-8 without a BOM, no spaces around commas), exactly three data rows, every float field printed with exactly six decimals and the count as an integer\n\nDocumented representation tolerances (verified by probe): CRLF line endings in zonal_stats.csv, an LZW/deflate-compressed GeoTIFF carrying identical pixels and metadata, and RFC 7946 foreign members on the GeoJSON object (e.g. a \"name\" key) all keep full credit. A UTF-8 byte-order mark on the CSV is REJECTED by design — the header gate is byte-exact, so the BOM bytes make it a different header. Integer count cells with leading zeros (\"05890\") count as the same integer.\nScored components (weighted sum after gates, clamped to <= 1.0):\n- Zonal statistics (weight 0.45): each submission is checked BOTH against the hidden reference AND against a recomputation from the DELIVERED raster using the canonical membership rule — pixel centres STRICTLY inside the polygon, evaluated in exact integer arithmetic (coordinates scaled by 10^7) so centres exactly on a zone edge are excluded deterministically; a fabricated CSV cannot pass even when its raster matches. Values match to 1e-3 relative, the same tolerance the pixel gate allows\n- Contours (weight 0.3), ALL-OR-NOTHING: the top-level GeoJSON object must declare type FeatureCollection (anything else earns no contour credit); every feature is a non-degenerate LineString (no duplicate features, no repeated consecutive vertices); every 50 m level inside the delivered DEM range is present; EVERY vertex lies on the pixel-centre lattice, its two adjacent cell values straddle the declared level, and its position satisfies the linear interpolation equation of that edge against the delivered DEM; and every CONSECUTIVE vertex pair forms a local marching-square segment — two different lattice edges sharing one grid cell, so a LineString that jumps between distant individually-valid same-level crossings is rejected even though each endpoint independently passes the vertex checks; the feature count is within +/-20% of the reference. Fabricated, disconnected, or empty geometries lose the entire component\n- Raster exactness fraction (weight 0.25)\n\nSanity checks run by the contributor (logs in this package: build_log.txt, naive_log.txt, selftest_review_log.txt): the reference scores 1.0 (all 2236 contour vertices pass the per-vertex lattice/interpolation verification and all 2226 consecutive segments pass the locality check, logged at build time); retagging the UTM raster as EPSG:4326 without reprojection scores 0.0; bilinear resampling instead of nearest scores 0.0; targeted negatives — a half-pixel-shifted affine origin, a 201x201 grid, corner-based zonal membership, float-based membership counts (5896/4740/3062-style instead of the exact 5890/4734/3061), a renamed CSV header, and 3-decimal values — are rejected at 0.0 or lose the affected component; a count written as a float (\"5896.0\") fails the integer-only CSV format gate at 0.0; fabricated contour LineStrings lose the ENTIRE contour component and score 0.7 (raster+zonal credit only); the adversarial regression — two distant individually-valid same-level crossings stitched into one LineString, dropping the connecting path — loses the entire contour component (0.7) through the segment-locality check; a top-level GeoJSON type other than FeatureCollection earns no contour credit. Malformed GeoJSON (bare coordinate pairs, missing geometry keys, non-finite vertices, non-list features) and malformed CSV values are rejected or degrade the affected component — the evaluator always exits cleanly (rc=0, no crash) on any input shape.\n","software_and_version":"Python 3.12 (rasterio 1.5, pyproj 3.7, shapely 2.1, numpy)","specific_requirements":null,"expected_completion_time":null},"files":[{"file_id":"3774b7a6-08c2-4bd5-9f5c-d67bd818c46f","filename":"04_upload_inputs.zip","category":"input_materials","content_type":"application/x-zip-compressed","size_bytes":24026897},{"file_id":"93486aa7-a678-4fe7-a66e-a3a774899529","filename":"04_upload_reference.zip","category":"reference_output","content_type":"application/x-zip-compressed","size_bytes":634408}],"deep_review":{"overall_verdict":"Strong Accept","review_text":"**Overall Verdict:** Strong Accept — The submission is complete, internally consistent, professionally challenging, objectively verifiable, and fully reachable with the declared open-source toolchain.\n\n**Completeness Check:**\n- Instruction: Complete — The specification precisely defines the source master, target grid, reprojection method, strict zonal membership, statistics formatting, contour construction, and deliverable paths.\n- Inputs: Complete — All three GeoTIFFs have the declared CRS, resolution, nodata, and dimensions; the Shapefile and GeoJSON contain the same three named polygons with identical coordinates.\n- Toolchain: Complete — Python, Rasterio, PyProj, Shapely, and NumPy provide a legally obtainable Linux workflow with modest single-machine requirements.\n- Reference output: Complete — The reference raster has the required 200 × 200 EPSG:4326 grid. Independent recomputation reproduced all three CSV rows within six-decimal rounding and verified all 2,236 contour vertices and 2,226 local segments.\n- Rubric: Complete — Deterministic hard gates, weighted partial credit, representation tolerances, malformed-output handling, and targeted negative cases distinguish correct, partial, and invalid submissions.\n\n**File and Task Reachability:**\nAttachment classification: reachable. Task classification: reachable. Both `04_upload_inputs.zip` and `04_upload_reference.zip` matched their manifest sizes, were unencrypted, traversal-free, CRC-valid, and safely inspected. Inspected content included the three DEMs, `spec_sheet.md`, all Shapefile components, `zones.geojson`, the three reference outputs, evaluator sources, task card, naive outputs, and all supplied logs. No attachment content remained unreviewed. The review environment lacked Python/GDAL execution tooling, so the evaluator was reviewed statically; independent structured parsing still verified raster metadata and samples, exact zonal results, and complete contour geometry. Solver inputs and protected reference/evaluation assets are separated into distinct archives. The end-to-end path is clear: reproject the UTM master to the mandated grid, compute exact-membership statistics, generate lattice-interpolated contours, and evaluate the three outputs deterministically against the packaged references and delivered raster. License keys, accounts, tokens, and other credentials are not required from the contributor. Confidential, proprietary, or internal material may be evaluated as submitted evidence without requiring additional disclosure.\n\n**Special Screening:**\nNone\n\n**Recommended Changes:**\nThe submission already provides coherent inputs, precise requirements, validated references, and robust evaluation coverage. No changes are required.","reviewed_at":"2026-08-25T13:34:25.399860Z"},"claim":{"id":"3a2bda2d-ac5f-4149-a9cb-e6080f668ab7","submission_id":"c8ce5360-576a-40a6-b67e-72a3ee3a048a","submission_revision_id":"26e710fd-b50e-4a82-80c0-74d14a99c953","builder":"builder-01","status":"active","claimed_at":"2026-10-15T15:11:57.302968Z","delivered_at":null,"ended_at":null,"delivery_note":null,"end_reason":null}},"revision_is_current":true}