Skip to content

feat(rbnx): declare capability transports in manifests - #296

Merged
enkerewpo merged 1 commit into
devfrom
feat/manifest-transport
Oct 24, 2026
Merged

enkerewpo merged 1 commit into
devfrom
feat/manifest-transport

Conversation

@enkerewpo

Copy link
Copy Markdown
Member

A package manifest listed its capabilities by contract id only. Which transport each one is served over (MCP, gRPC, ROS 2) was decided in code and only visible in Atlas after boot, so the package catalog, Robonix Hub and anyone writing a client had to read the code or start the package to find out.

Manifest format (manifestVersion stays 1; older rbnx ignores the field):

capabilities:
  - name: robonix/service/voiceprint/identify
    transport: grpc
  - name: robonix/service/voiceprint/list
    transport: [grpc, mcp]     # one contract served over several transports

Checks:

  • When the manifest is read: an unknown or duplicate transport, a repeated contract, or a transport the contract's mode cannot use (streams are gRPC only; topic_in/topic_out are gRPC or ROS 2) is an error. A missing transport is a warning while packages migrate.
  • During boot: rbnx compares the (contract, transport) pairs each provider registers in Atlas with the manifest, for package-managed and Soma-managed packages. Registered but not declared, registered without a declared transport, and declared but not registered once the provider is ACTIVE are each warned about once. None of these fail the start. The shared lifecycle driver the framework adds on its own is not reported.

The 18 manifests in this repository now declare what their code registers. Tests cover parsing, the mode check and the comparison, including one against a real Atlas service. The book's packaging spec is updated in syswonder/robonix-book.

A capabilities entry may say how the package serves the contract:
transport: mcp | grpc | ros2, or a non-empty list for a contract served
over several transports. rbnx rejects an invalid or duplicate value, a
repeated contract and a transport the contract's mode cannot use, and
warns when the field is missing. During boot it compares the manifest
with what each provider registers in Atlas and warns on every mismatch,
without failing the start. The packages in this repository declare
what their code registers.
@github-actions github-actions Bot added type:feature New feature (feat:) comp:scene system/scene comp:memory services/memsearch comp:speech services/speech comp:voiceprint services/voiceprint comp:rbnx tools/rbnx comp:docs docs/ and READMEs and removed type:feature New feature (feat:) labels Oct 24, 2026
@enkerewpo
enkerewpo merged commit af45821 into dev Oct 24, 2026
8 checks passed
@enkerewpo
enkerewpo deleted the feat/manifest-transport branch October 24, 2026 17:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:docs docs/ and READMEs comp:memory services/memsearch comp:rbnx tools/rbnx comp:scene system/scene comp:speech services/speech comp:voiceprint services/voiceprint

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant