64 lines
3.2 KiB
Markdown
64 lines
3.2 KiB
Markdown
# Optional drone integration — 21 October 2026
|
|
|
|
Two isolated Workbench fixtures completed with **seven assertions and no script
|
|
or runtime failures** against the production hashes in
|
|
[production-sha256.json](production-sha256.json). Both runners verified unchanged
|
|
source/external inputs and cleanup of their private Wine prefix.
|
|
|
|
These are not clean whole-engine runs. The flight fixture retained 20 engine
|
|
resource/world/platform errors; the absent-addon fixture retained 13. The strict
|
|
native reporter exits with failure for those errors even though both fixtures
|
|
completed. The complete reports and console logs are retained unchanged.
|
|
|
|
## Downloaded addon and flight
|
|
|
|
Realistic Combat Drones `65AD60E204191D37`, version 2.3.7, supplied the unarmed
|
|
DJI airframe. Only the isolated fixture project adds its dependency. The shipped
|
|
project has no mandatory drone dependency and contains no copied RCD assets or
|
|
scripts. Exact installed input hashes are in
|
|
[flight/external-addons-inputs.json](flight/external-addons-inputs.json).
|
|
|
|
[Flight events](flight/native-summary.log) prove:
|
|
|
|
- The optional adapter compiled and found the native drone manager.
|
|
- Native physics raised the drone over 30 m above its launch point and moved it
|
|
over 30 m horizontally toward the 100 m search goal.
|
|
- Injecting native player ownership caused the production flight controller to
|
|
release control while preserving the living, armed aircraft.
|
|
- Releasing an unowned drone disarmed it through the native adapter.
|
|
|
|
A preceding diagnostic run identified a trace hitting the operator's attached
|
|
helmet instead of the character root. Production now recognizes descendants of
|
|
its intended target, with a bounded parent walk. Unrelated entities remain
|
|
obstructions. Offline regression checks cover those cases. The preceding run
|
|
also physically returned to its launch site after losing that link; the final
|
|
fixture ends at takeover and does not qualify a complete search/return cycle.
|
|
|
|
## Without the addon
|
|
|
|
[Absent-addon events](without-addon/native-summary.log) prove that production
|
|
scripts compile without RCD, its foreign API remains uncompiled, the catalog has
|
|
no drone prefab, and drones default to disabled.
|
|
|
|
## Scope and remaining checks
|
|
|
|
The fixture directly exercises the production flight/bridge classes in a local
|
|
Workbench mission. It does not qualify a dedicated server, remote-client visual
|
|
replication, an ordinary player takeover, automatic dispatch from a delivered HQ
|
|
sighting, native camera-to-HQ delivery, jammer placement, destruction, or sustained
|
|
mission performance. Those remain mission-playtest cases. The production queue
|
|
and scheduler are exercised separately by `tests/test_drone_recon.py`; radio
|
|
transport has existing regression coverage.
|
|
|
|
Reproduce with the installed dependency closure and the repository's private
|
|
Workbench prefix:
|
|
|
|
```
|
|
python3 docs/evidence/drone-recon-2026-10-21/isolated-runner.py flight02
|
|
python3 docs/evidence/drone-recon-2026-10-21/isolated-runner.py absent02 --absent
|
|
```
|
|
|
|
Use unused alphanumeric suffixes. The runner freezes source into `/tmp`, uses a
|
|
disposable profile, and checks that its private prefix is idle. It does not modify
|
|
installed addons, a live server or the user's game profile.
|