Files
pyxis/lib
torlando-tech f9e959f38e Track A.9: Link members default-init to Type::NONE — pyxis runs against upstream
Fixes the StoreProhibited panics surfaced by hardware boot of fd2d3de:

  StoreProhibited @ Bytes::assign (offset 0x1c on a null _data shared_ptr)
  ← Ed25519PublicKey ctor
  ← Ed25519PrivateKey::public_key()
  ← Link::Link(Destination&) at Link.cpp:79

Vanilla upstream microReticulum @ 0.3.0 Link's all-defaults ctor goes
through load_private_key() which dereferences _prv (a shared_ptr that's
still null on a freshly-default-constructed Link). Fork's Link probably
guarded against this; upstream doesn't. The explicit
Type::NoneConstructor branch (Link.h:153) leaves _object null and is
safe for default-init of pool/pre-allocated members.

Two sites needed the same fix:
  - lib/microreticulum-shim/LXMF/LXMRouter.h DirectLinkSlot::link
    (the fork's pre-allocated DIRECT-delivery link pool)
  - lib/tdeck_ui/UI/LXMF/UIManager.h UIManager::_call_link
    (the LXST call link state)

Both: `RNS::Link link;` -> `RNS::Link link{RNS::Type::NONE};`.

🎉 First successful runtime of pyxis on top of upstream + fixes:
  - Heap 131KB free post-boot (vs ~45KB on pre-graft, then panic)
  - Min low-water 119KB — never got tight
  - Display flushing, no panic, no reboot loop
  - Reset reason: PANIC (4) on prior runs is replaced by clean run
  - microStore SPIFFSFileSystem mount works
  - Identity loads from NVS with same hash as pre-graft (b5f09f9a833f4ef8)
  - LoRa init, AutoInterface init, Transport::start() all succeed
  - MessageStore loads 4 conversations from /lxmf
  - LXMRouter constructs cleanly
  - PropagationNodeManager initializes

Caveats for runtime test (per pyxis_microReticulum_graft_spike_findings):
  - BLE + TCP + Transport mode currently disabled in user settings
    (was needed to get a stable enough OTA window during initial flash —
    can re-enable once we confirm pyxis-fixes-on-0.3.0 doesn't introduce
    a BLE/TCP-specific WDT)
  - Resource-form inbound LXMF dispatch is no-op'd
    (static_resource_concluded_callback)
  - Some UI stat fields disabled (LoRa RSSI, BLE peer count)
2026-05-05 12:51:45 -04:00
..