dc-l1-capetown-waterway-nulls
Analyst notes
Description
Tests whether the agent recognises that a contractor-style GeoJSON can be malformed in three independent ways (geometry is JSON null, geometry is a syntactically valid LineString with empty coordinates, or the required waterway_type column is null) and drops all three buckets while keeping rows whose only oddity is a null name. The prompt deliberately does not enumerate the three defect classes, only says the feature needs a drawable geometry and a proper type, so the agent must inspect the data to discover them and resist the urge to drop every row with any null in any column.
Approach
- Read the bundled waterways file and inventory the null and empty cases column by column to learn which defects are present.
- Decide that a feature is unusable when its geometry cannot be drawn or its waterway_type is missing, and that a null name on its own is fine.
- Filter the features to keep the usable ones, count how many were dropped, and preserve the original attribute and geometry values verbatim on the survivors.
- Write the cleaned features back out to GeoJSON under the requested filename, and add a top-level dropped_count member on the FeatureCollection so the persona can flag the contractor.
Pitfalls
- Filtering only on geometry.isna() catches the ten JSON-null geometries but leaves the five empty LineStrings and the five surviving null-waterway_type rows in the output, so the cleanup ends up at ten dropped instead of twenty.
- Applying a blanket drop-any-row-with-any-null rule removes the five null-name watercourses that the persona wants to keep.
- Forgetting that pyogrio's GeoJSON driver does not preserve foreign members and writing dropped_count inside a feature property or omitting it entirely.
- Reprojecting the file to a metric CRS before writing, which costs the two CRS subchecks even though the geometric work is correct.
- Filling nulls with sentinel strings like 'unknown' instead of dropping the offending rows, which mutates the attribute values and breaks the per-id attribute check.
Map
Recent runs task v3
| adapter | started | score | steps | duration | cost | status |
|---|---|---|---|---|---|---|
| openrouter-gemma4-26b-basic | 2026-06-18T07:32:32Z | pending | — | — | — | pending |
| openrouter-deepseek-v4-flash-basic | 2026-06-18T03:08:04Z | 0.00 | 5 | 0:44 | 0.70¢ | done |
| openrouter-deepseek-v4-flash-detailed | 2026-06-17T22:01:33Z | 0.00 | 7 | 0:54 | 0.81¢ | done |
| openrouter-gemma4-26b-detailed | 2026-06-17T19:47:47Z | 0.00 | 5 | 0:24 | 0.25¢ | done |
| openrouter-deepseek-v4-flash-basic | 2026-06-16T21:43:55Z | 1.00 | 6 | 1:31 | 0.23¢ | done |