OpalDoorFeature

This app's OPAL door as a feature (work-placement §WPK-3, §WPI-11).

In the namespace nodekit. Declared in src/libs/libopalnet/opalnet/features/OpalDoorFeature.hpp.

Detailed description

Holds `NodeSpecDoor`: the spec database of the active identity, and the grants that a caller of the door can use. Needs `identity`: the door follows the identity's session, and opens one database for each identity (trove §DM-2).

- **Access**: the facility `opalDoorPermissions`, the grants. The batch remote half answers the OPAL calls of other nodes under them (work-placement §WPO-4, OSA-2026-001). - **Lifecycle**: the door opens at install when an identity is active, and follows the session from then on. `close()` closes it and forgets the app; uninstall does the same. - **Proof**: testNodeKit.

The door exists from construction, so `Node::specDoor()` and the Permissions screen have one before the node configures. The app gives the door its Trove engine itself (`NodeSpecDoor::setTroveSource`): this library names no Trove type (§NET-2b).

In this section