Goal
After the planning contract #37, expose one versioned synthetic collection preview for Open Farming's integration roadmap. Planning remains a distinct operation and cannot produce observed measurements.
Scope
Compose the existing owned simulateAgriculture, validation, recording serialization/reparse and processAgriculture interfaces. Reuse writeAgricultureDataset for retained raw visible/red-NIR/band/calibration/layer artifacts rather than add another exporter. Use native Buddy and the standalone compiled CLI; a genuinely matching app-authenticated adapter remains separate work.
Acceptance
- Freeze a closed bounded versioned request/result, explicit metric configuration, scenario/time policy and source/correlation identities before implementation; no implicit example/default or arbitrary operation.
- Preserve the actual owned sensor/estimator/mission/authority/camera route. Independently validate retained recording and recompute the layer; no precomputed fake survey substituted for collection.
- Independently work nominal observed/nodata/support/calibration expectations and fixed actual-capture-anchored loss cases before the first public run. Retain original outputs/errors before acceptance.
- Return actual run status/reason, neutral terminal evidence, source-linked samples, missingness/uncertainty and explicit synthetic/false physical flags. Expected fault/abort status is never a successful operational survey.
- Preserve exact raw recording/input/config/software identities and complete private dataset markers. Unsigned content hashes are not authenticated camera/principal/field events.
- Qualify source/Buddy/standalone compiled behavior, full streams/EOF/actual exit, invalid/partial/failed input and relevant existing outputs without changing inherited numeric/runtime caps.
- No completed physical Mission, Detection, TreatmentMap or HerdMove is written by this simulation. No real driver/hardware command or diagnosis/dose is inferred.
- Native types/lint/focused/full tests and exact CI pass before normal Chris/no-coauthor main publication.
Dependencies are the qualified software contract from #37 and existing agriculture/mapping interfaces. Measured sensors, registration, agronomy and hardware gates in #21 remain separate open qualification work, not claims completed by a synthetic preview.
Published implementation and qualification
Commit 1fde175 is on origin/main, authored and committed as Chris without coauthors through a normal fast-forward push.
collectFarmingObservationcomposes the existing owned agriculture/survey runtime, full validation, recording serialization/reparse, calibrated layer processing and unchanged dataset writer. Native Buddy and the copied standalone CLI exposefarming:collect <request> <directory>.- The closed versioned declaration binds explicit metric configuration, farm/field declarations, original UTF8 bytes, scenario and duration. The result retains every layer cell, missingness/uncertainty, actual status/reason/mission target, neutral modeled-board evidence and explicit false physical/ownership/dispatch flags. No operational application rows or hardware commands are written.
- Private raw dataset and attempt markers bind the exact source, recording, layer and producer content identities. The bounded 56-file source observation and actual runtime/executable hashes remain unsigned and unauthenticated; they do not attest a complete loaded graph. The before/after observation interval excludes later publication/output.
- Unsupported fixture origins are rejected before reserving output. Missing clone capability reports fixed unavailable. Original public counterexamples and the failing-then-passing four-test regression were retained.
- All nine fixed 100-second source scenarios were retained and independently checked. Corrected-source datasets and complete domain results match the accepted prior numerical/safety baselines exactly, with independently observed new producer identities. Fault runs retain their real aborted or blocked outcomes; incomplete runs retain zero captures and their actual running target.
- Fourteen current source/Buddy/copied delivery cases qualify complete EOF and actual exits 0/2/1, including full 4096-cell/32-parcel output, slow readers and broken output/diagnostic pipes. Twelve additional copied rejection cases preserve existing content/modes, reject malformed/linked inputs and unsupported origins, and refuse an unreadable executable without publishing output.
- Three isolated native filesystem probes passed with 22 assertions. The unchanged control matched all 140 accepted nominal artifact files. Actual raw recording-byte alteration and a changed declared source file each produced fixed unavailable before attempt publication, preserving the raw dataset. These are controlled host filesystem fault probes using real reads and separate source copies, not physical evidence.
Local pinned Bun 1.4.2 full suite: 1,392 passed, 24 skipped, zero failed and 488,213 assertions across 1,416 tests in 172 files. Native lint, application/runtime types and 43 relevant domain/CLI tests passed. Exact-head CI passed all five jobs, including 1,377 Linux/Bun 1.4.3 tests, 39 skips, zero failures and 488,147 assertions, the copied collection CLI checks and neutral-only firmware cross-builds. Skips are not executed evidence. The separate automatic post-main run has started; its terminal result is still pending at this update.
This completes this software collection contract. Measured camera calibration, field/agronomic evidence and authenticated Open Farming integration remain in their separate open issues. A synthetic collection is never a completed physical survey or controlled landing.
Automatic main CI for 1fde1752397d85c0c8e5752e2049a46bba38cf2c completed successfully: run 39597257348, all five jobs green. The native full suite reported 1,377 passed, 39 skipped, zero failures, 488,147 assertions across 172 files. Original terminal logs were retained and inspected. This confirms the published software contract; physical hardware and field acceptance remain separate.