0.1.0

The contract and the registry, on their own.

Added

  • MontyPlugin — describe/0 as a behaviour: name, kind, version, placement, needs; the three kinds and the two placements; conforms?/1, which answers :ok or names the first field that a cluster cannot use.

  • MontyPlugin.Registry — providers by kind and by name over :pg, one scope per deployment (PLUGIN_SCOPE), switched off with PLUGIN_DISCOVERY=none, and an unusable description reported with its field rather than offered. lookup/3 asks for a name on a named node, which is the question an :owner_only plugin asks: a policy that reads a B-rep has to be called where the part was opened, and the answer when it is not there names the nodes that do offer it.

  • MontyPlugin.Application — starts the :pg scope the registry uses, unless PLUGIN_DISCOVERY=none; a host application adds nothing.

  • A two-node test — a plugin offered on a peer node is found here with its description, and one withdrawn there leaves the list here.

Nothing here knows about geometry, Monty, or a CAD file: it is the part of a cluster that a policy, a learning module and an experiment have in common.