ReviewOS

also looking at this

stacks/drone

feat: coordinate modeled two-carrier cargo handover

#103
Merged chris wants to merge codex/cargo-fleet-coordination into main
25 files +1654 -13
docs/cargo-delivery.mdmodified+40-0
Changes to docs/cargo-delivery.md
@@ -179,6 +179,46 @@ and limits. This primitive supplies no finite-duration contact forces or impact
179179release/intake acknowledgement, station handling, authorization or fleet custody handover.
180180Those integrations remain open under issue #25.
181181
182## Finite station handling prerequisite
183
184The separate [station actor](cargo-station.md) now retains one released point through
185ballistic surface capture, finite powered motion, cancellation braking and one departure
186to a declared receiving joint. Its public integration test uses actual source separation
187and actual receiving-body intake. The world coordinator must still consume the one parcel,
188check the receiver's current authority and produce correlated custody acknowledgement.
189This model alone does not implement a fleet mission or qualify electrical endurance.
190
191## Receiving mission task prerequisite
192
193The shared owned mission engine accepts `material-receive` only for quadcopters, with a
194non-null `containerId`, a required fixed-origin `positionM` pad anchor and an integer
195100 to 60,000 ms timeout. The anchor must be inside the mission fence and on or up to
1961 m above its declared zero surface. Normal and optional one-way alternate landing
197routes contribute to the longest-path time and declared reserve calculation.
198
199Entering intake immediately creates its scoped pending command, including the first
200control frame when the plan starts there. The quad controller uses qualified surface
201contact to keep modeled motor commands neutral during intake. This avoids a one-frame
202spin-up while waiting for the next mission evaluation. It does not erase existing motor
203lag, change mass or generate an acknowledgement.
204
205Mission observations must retain contact, speed at most 0.1 m/s and position within
2060.2 m of the pad. Losing these interlocks blocks receipt even if an ACK is present.
207A confirmed ACK still needs exact event/task/operation/container/reference correlation,
208a capture inside its deadline, freshness and a finite spatial check. ACK position requires
209three finite own coordinates; sparse arrays are rejected before acknowledgement handling. Timeout,
210foreign scope, rejection or uncertainty can follow a declared counted alternate route;
211they never advance the normal takeoff path or retry intake. A late unsolicited ACK
212blocks rather than reviving the original command.
213
214`tests/unit/cargo-receive-mission.test.ts` covers the native task and an actually empty
215receiving body in its own raw-sensor, estimator and authority runtime. With ACK withheld,
216it stays at the declared pad with zero actual motor thrust and no phantom parcel mass.
217A caller-invented ACK is not proof of mechanical transfer. The
218[two-carrier model](cargo-fleet.md) now binds its receipt port to actual intake, same-epoch
219receiver authority and six bounded fleet cases through `cargo:fleet`. Its broader
220cancellation, fault/recovery and operational matrix remains open under #25.
221
182222## BVLOS operations evidence
183223
184224