PASS Crop reader: native current fill supplies wheat capability
PASS Crop reader: canola false is not lost through Lua truthiness
PASS Crop reader: native buffer has priority over grain tank
PASS Crop reader: empty buffer does not fall back to stale main tank
PASS Crop reader: current cutter canola vetoes still-wheat tank
PASS Crop reader: native canola vetoes incoming wheat until tank catches up
PASS Crop reader: prior native tick supplies current input if cutter reset
PASS Crop reader: fresh cutter input wins over previous input tick
PASS Crop reader: missing/unknown crop is not a positive guess from output or history
PASS Crop reader: valid fresh input usable before any tank filling
PASS Crop reader: no hard-coded crop-name blacklist
PASS Crop reader: identified fruit with unset native flag has no windrow
PASS Crop reader: malformed boolean is never trusted
PASS Crop reader: unregistered native fill type prevents unsafe fallback
PASS Crop reader: unregistered fresh input prevents unsafe enabling
PASS Crop reader: fill mapping via documented index API fallback
PASS Crop reader: unavailable native API fails closed
PASS Crop reader: native getter exception fails closed without throwing
PASS Crop reader: manager exception fails closed without throwing
PASS Crop reader: missing fruit manager cannot enable swaths
PASS Crop reader: invalid fill indices and sentinels are not looked up
PASS Crop reader: invalid combine fill unit returns unknown
PASS Crop reader: no mutations to native fields or descriptors
PASS FIELD: canola without windrow stays chopped on every phase
PASS FIELD: canola initially ON changes to chopper exactly once
PASS FIELD: soybean without windrow stays chopped on every phase
PASS FIELD: soybean initially ON changes to chopper exactly once
PASS FIELD: sunflower without windrow stays chopped on every phase
PASS FIELD: sunflower initially ON changes to chopper exactly once
PASS FIELD: maize without windrow stays chopped on every phase
PASS FIELD: maize initially ON changes to chopper exactly once
PASS FIELD: custom crop without windrow stays chopped on every phase
PASS FIELD: custom crop initially ON changes to chopper exactly once
PASS FIELD: windrow-capable fill 2 keeps headland/row/turn behavior
PASS FIELD: windrow-capable fill 3 keeps headland/row/turn behavior
PASS FIELD: windrow-capable fill 201 keeps headland/row/turn behavior
PASS FIELD: wheat -> canola -> wheat resumes automatically in same session
PASS FIELD: native no-straw reset in before update order never pauses automation
PASS FIELD: native no-straw reset in after update order never pauses automation
PASS FIELD: initial native canola reset preserves all setter return values
PASS FIELD: direct engine OFF on crop change reconciles expectation
PASS FIELD: native OFF with missing crop metadata is not silently accepted as crop reset
PASS FIELD: unknown crop cannot switch ON even on confirmed row
PASS FIELD: unknown crop can still chop a confirmed headland
PASS FIELD: unknown then recognized crop resumes without menu toggle
PASS FIELD: missing/unknown crop resets row confirmation timer
PASS FIELD: known no-windrow crop does not require a valid course to keep chopper
PASS FIELD: known no-windrow crop is safe during unknown turn status
PASS FIELD: fresh canola input blocks ON despite stale output diagnostic wheat
PASS FIELD: rape tank -> wheat cutter waits for native compatible fill
PASS FIELD: no re-enable of original ON at AI stop on canola
PASS FIELD: menu OFF re-reads crop before restoring original ON
PASS FIELD: menu OFF skips unsafe ON restoration for empty/unknown crop
PASS FIELD: menu OFF still restores original ON for known straw crop
PASS FIELD: disable/re-enable during canola stays chopped without error
PASS FIELD: new AI session after canola can swath wheat
PASS FIELD: real manual same-value OFF for wheat still pauses automation
PASS FIELD: a previous manual override is not cleared by crop changes
PASS FIELD: external ON command during no-windrow session remains an override
PASS FIELD: no writes when automation disabled, even on no-straw crop
PASS FIELD: manual driving/steering assist never starts crop intervention
PASS FIELD: unknown hired-worker status never starts crop intervention
PASS FIELD: client instance cannot run crop control
PASS FIELD: forage harvester stays excluded independently of crop
PASS FIELD: failed native OFF suspends after one attempt, not a loop
PASS Final write guard: direct enable request blocked on canola
PASS Final write guard: unknown crop never gets an enable request
PASS FIELD: last-moment crop guard does not latch a write fault
PASS FIELD: crop policy logging is change-only, not per-frame
PASS FIELD: steady chopped crop never repeatedly clears the native buffer
PASS FIELD: independent wheat and canola combines in the same global update
PASS TURN: no-windrow crop initially ON is chopped without repeated writes
PASS TURN: no-windrow crop initially OFF remains OFF on turn and after
PASS TURN: crop change during turn cancels incompatible saved ON
PASS TURN: native crop OFF is not mistaken for manual override
PASS TURN: crop does not resurrect legacy initially-OFF setting for wheat
PASS TURN: unknown crop holds pending restoration until recognized
PASS TURN: menu OFF rechecks crop before pending restoration
PASS Runtime: missing crop adapter fails closed with a single diagnostic
PASS Runtime: unload restores wrappers and introduces no new hooks
PASS Native unset flag: adapter returns false plus unchanged raw nil
PASS Native unset flag: explicit true and false raw flags remain distinguishable
PASS Native unset flag: known custom crop is not name-blacklisted
PASS Native unset flag: empty fruit table remains unknown
PASS Native unset flag: missing fruit table remains unknown
PASS Native unset flag: invalid descriptor index remains unknown
PASS Native unset flag: unnamed/malformed descriptor remains unknown
PASS Native unset flag: missing mapping is not misclassified as a no-straw crop
PASS Native unset flag: manager failure does not become a known no-straw crop
PASS Native unset flag: documented index-lookup fallback supports nil flag
PASS Native unset flag: fresh cutter input can veto a wheat tank
PASS Native unset flag: prior tick input can veto a wheat tank
PASS Native unset flag: buffer canola vetoes incoming wheat until native fill changes
PASS Native unset flag: empty buffer and stale tank/output still remain unknown
PASS FIELD: native nil-canola OFF on start (before) never causes override
PASS FIELD: nil-canola OFF in existing wheat session (before) is accepted
PASS FIELD: native nil-canola OFF on start (after) never causes override
PASS FIELD: nil-canola OFF in existing wheat session (after) is accepted
PASS FIELD: active nil-canola with missing course/turn data is chopped once
PASS FIELD: existing OFF on nil-canola never causes repetitive buffer clearing
PASS FIELD: final write guard blocks an unsafe restore for nil-canola
PASS FIELD: nil-canola while automation OFF never receives a mod write
PASS FIELD: nil-canola while manual driving never receives a mod write
PASS TURN: native nil-canola OFF on start (before) never causes override
PASS TURN: nil-canola OFF in existing wheat session (before) is accepted
PASS TURN: native nil-canola OFF on start (after) never causes override
PASS TURN: nil-canola OFF in existing wheat session (after) is accepted
PASS TURN: active nil-canola with missing course/turn data is chopped once
PASS TURN: existing OFF on nil-canola never causes repetitive buffer clearing
PASS TURN: final write guard blocks an unsafe restore for nil-canola
PASS TURN: nil-canola while automation OFF never receives a mod write
PASS TURN: nil-canola while manual driving never receives a mod write
PASS FIELD: nil-canola -> wheat -> nil-canola -> wheat resumes correctly
PASS FIELD: nil-canola stop/start cannot resurrect the incompatible initial ON
PASS FIELD: nil-canola menu OFF/ON cannot resurrect incompatible initial ON
PASS FIELD: real prior manual pause survives nil-canola and return to wheat
PASS FIELD: nil-canola ON command remains a real external override
PASS FIELD: nil-canola compatible external OFF keeps all native return values
PASS FIELD: nil-canola setter rejection does not create an infinite retry loop
PASS FIELD: policy log distinguishes normalized false from actual raw nil
PASS FIELD: log-shaped idle ON, TURN, HEADLAND, ROW on nil-canola has no ON attempt
PASS Diagnostics: owned OFF on a straight inner row is not TURN_PAUSED
PASS Diagnostics: owned OFF with unknown turning is not TURN_PAUSED
PASS Diagnostics: actual owned AI turn still reports TURN_PAUSED
PASS Diagnostics: disabled/inactive/unowned OFF does not claim automated turn
PASS Diagnostics: known no-straw crop has priority over turn/off labels
PASS Diagnostics: unknown switch state is not reported as successful chopper mode
PASS Diagnostics: current no-straw input wins over stale wheat output
PASS Diagnostics: unknown current input cannot fall back to stale known crop
PASS Diagnostics: current wheat support overrides stale canola output
PASS Diagnostics: actual ground observations keep priority over crop diagnosis
PASS Diagnostics: snapshot retains raw nil and normalizes a known output crop
PASS Diagnostics: missing output descriptor remains unknown
PASS Diagnostics: FLOW uses fresh controller crop while keeping output observations separate
PASS Diagnostics: FLOW on straight canola never labels a completed turn as paused
PASS Diagnostics: cropped-canola UNKNOWN transition uses no stale control decision
RESULT cases=136 passed=136 failed=0 assertions=4466
