Browser release: August 26, 2026 · Source archive and this release note: August 31, 2026.
SprayOps Toolkit is a browser-only quality-assurance utility for recorded or simulated drone-spray logs. Version 0.1.0 reads a local CSV, validates its rows, reconstructs the reported route, calculates a mission summary, and creates a review queue. The selected file is processed in the browser and is not uploaded to UAM KoreaTech by this workflow.
The release has a deliberately narrow purpose. It helps a reviewer inspect values already present in a log. It does not connect to an aircraft, pump, valve, payload, ground-control station, chemical system, or live telemetry source. It does not prescribe a dose, determine spray efficacy, certify coverage, approve a flight, or determine legal compliance.
Public workflow
The page loads a bundled synthetic CSV by default. A reviewer can replace it with a local CSV, inspect the calculated metrics and source-row-linked issues, view a route-and-spray-state trace, and download a JSON summary. The JSON export contains the tool and version identifiers, generation time, selected filename, a scope statement, and the calculated summary. It is a portable screening record, not an immutable audit record or operational certificate.
Version 0.1.0 reports:
- total, valid, and rejected row counts;
- elapsed time between the first and last valid timestamp;
- Haversine distance between consecutive valid coordinates;
- spray-active time and volume estimated from reported flow over valid intervals;
- moving spray-off groups inside the first-to-last active-spray span;
- rows whose supplied boundary distance is below the 10 m demonstration threshold;
- average reported groundspeed and maximum reported altitude.
Intervals greater than 30 seconds, zero-length intervals, and reversed intervals contribute zero seconds to active-time and volume integration. This rule prevents an isolated timestamp gap from being treated as continuous spraying, but it does not reconstruct missing telemetry.
CSV input contract
The required header is:
timestamp,latitude,longitude,altitude_m,groundspeed_mps,spray_on,flow_rate_ml_min,geofence_distance_m
timestamp must be parseable as a date-time. Latitude must be between -90 and 90, longitude between -180 and 180, and altitude, groundspeed, flow rate, and boundary distance must be finite non-negative numbers. spray_on accepts true, false, 1, 0, yes, no, on, or off, without case sensitivity. Rows that fail these checks are excluded and identified by their original CSV row number.
The parser is intentionally simple: it separates cells on commas and does not implement a general quoted-field CSV engine. Users should therefore keep the required fields free of embedded commas. Valid rows are sorted by timestamp before the summary is calculated.
What the findings mean
A coverage-gap finding means that a valid row between the first and last spray-on rows reported spray off while groundspeed exceeded 0.5 m/s. A boundary warning means that the CSV itself reported geofence_distance_m below 10 m. Neither finding proves that an area was untreated or that an aircraft crossed a legal buffer. The package does not derive boundary distance from a polygon, inspect nozzle behavior, measure deposited material, or compare the log with a product label.
The 0.5 m/s and 10 m values are transparent screening defaults in this release. They are not agronomic recommendations, manufacturer limits, statutory buffers, or validated operating thresholds.
Synthetic sample
The bundled sample-spray-log.csv contains 13 synthetic rows dated 2026-08-26. Its coordinates, spray states, flow values, and boundary distances were created to demonstrate parsing, a moving spray-off segment, and supplied distances below the review threshold. They are not observations from a field trial, customer operation, aircraft test, chemical application, or regulatory inspection.
Use the sample to understand the interface and output structure. For a controlled evaluation, compare every calculated issue with the corresponding source row and record where the source system generated each input field.
Apache-2.0 source-package boundary
Download the versioned source archive. The UAMKT-authored reference package under open-source/sprayops-toolkit is distributed under the Apache License 2.0. It contains:
src/index.ts, the TypeScript parser and summary functions;examples/sample-spray-log.csv, the synthetic input;README.md, the usage and safety boundary;THIRD_PARTY_NOTICES.md, upstream-reference and license notes;LICENSE, the Apache License 2.0 text; andpackage.json, the package metadata.
The reusable website interface is maintained separately in the website source at src/components/build/SprayLogQA.tsx. The package does not contain copied ArduPilot, PX4, QGroundControl, MAVSDK, or OpenDroneMap source code. Links to those projects provide interoperability context only and do not imply partnership, endorsement, certification, or compatibility testing.
Release limits and evaluation
Version 0.1.0 has no server-side log store, user account, access-control layer, digital signature, native flight-log decoder, polygon engine, calibration record, or live command path. Browser processing does not by itself establish confidentiality; the user remains responsible for the device, browser, local files, exports, retention, and access controls.
Evaluate the release with synthetic or appropriately governed historical data before considering any wider use. Confirm the CSV schema, inspect rejected rows, independently reproduce a small set of distance and volume calculations, and compare each warning with the source record. Any use near a real operation requires separate review by the responsible operator, aircraft and payload manufacturers, qualified domain professionals, and the applicable aviation, pesticide, environmental, and site authorities.
The valid claim for v0.1.0 is limited: SprayOps Toolkit organizes user-supplied CSV values into a reviewable browser-generated summary. It does not establish field performance, operational safety, treatment effectiveness, or legal compliance.