Protocol History

Changelog

Every meaningful change to the RCAN specification and official SDKs.

v3.2.0

Latest 2026-04-23
  • added Β§8.6 Multi-Runtime Agent Declaration: new optional agent.runtimes[] array on ROBOT.md allows a single robot identity to declare multiple supported agent runtimes (e.g. robot-md, opencastor). Each entry carries a required id + harness and optional default/models/runtime-specific fields. Enables peer-runtime deployments without manifest or RRF record mutation when switching runtimes.
  • added VERSIONING.md: new "Deprecation Precedents" section codifying how flatβ†’structured field replacements are handled across MINOR versions.
  • deprecated Flat agent.provider / agent.model form (introduced in v1.2) is soft-deprecated in v3.2. Validators emit DeprecationWarning; internal normalization to single-entry agent.runtimes[]. Removal scheduled for v4.0.
  • docs Β§8.6 lists initial known runtime ids (robot-md, opencastor) and points to opencastor-ops PEER_RUNTIMES registry for the community-extensible third-party listing.

v3.1.0

Stable 2026-04-24
  • breaking Β§26 EU Register (rcan-eu-register-v1): add top-level rmn (Robot Model Number) field. Art. 49 registration is per-model, not per-robot; rmn identifies which model the submission registers. system.rrn remains for per-submission provenance only. Per VERSIONING.md: Β§26 is Experimental tier (introduced in v3.0 13 days ago, zero production consumers at bump time β€” all ecosystem libraries list but no production code path uses it yet), so breaking change is permitted in MINOR with release notice. Breaks byte-parity with rcan-py ≀ 3.1.1; requires rcan-py 3.2.0 + rcan-ts 3.3.0 to match.
  • docs Β§26 overview clarified: per-model scoping per Art. 49, rmn vs system.rrn distinction.

v3.0.0

Stable 2026-04-11
  • breaking All RCAN messages must carry a valid ML-DSA-65 or pqc-hybrid-v1 signature in the sig field
  • breaking Ed25519-only profiles rejected; pqc-hybrid-v1 or ML-DSA-65-only required
  • breaking REGISTRY_REGISTER for Annex III systems requires metadata.compliance.fria_ref
  • added Β§23 Safety Benchmark Protocol (rcan-safety-benchmark-v1)
  • added Β§24 Instructions for Use (rcan-ifu-v1)
  • added Β§25 Post-Market Monitoring / Incidents (rcan-incidents-v1)
  • added Β§26 EU Register Submission (rcan-eu-register-v1)
  • updated Β§22 FRIA: safety_benchmarks block, compliance package table, Annex III prerequisite

v2.3.0

Stable 2026-03-31
  • feat pqc-hybrid-v1 profile: "pqc-hybrid-v1.<ed25519_b64url>.<ml_dsa_b64url>" β€” both halves required, single-half sigs MUST be rejected
  • feat pqc-v1 profile: "pqc-v1.<ml_dsa_b64url>" β€” ML-DSA-65 only, for use post-2028 after Ed25519 sunset
  • feat /.well-known/rcan-node.json: new fields crypto_profile, pqc_public_key, ed25519_public_key
  • feat Β§1.6.4: pqc-hybrid-v1 combined sig format for RURI ?sig= parameter
  • docs docs/crypto/pqc-profile.md: encoding, key sizes (Ed25519 64B sig / ML-DSA-65 3309B sig), migration timeline 2026β†’2028+, reference implementations

v2.2.0

Stable 2026-03-27
  • breaking Ed25519 fully removed β€” ML-DSA-65 (NIST FIPS 204) is the only signing algorithm
  • breaking pq_sig field removed from wire format β€” signature.alg = "ml-dsa-65" is the sole signing block
  • feat ML-DSA-65 primary signing: rcan-py v1.2.1, rcan-ts v1.2.1, OpenCastor v2026.3.27.1
  • feat Dual-brain architecture: VLA (reactive, Hailo-8 NPU) + Claude opus-4 (planning)
  • feat ISO 42001 + EU AI Act self-assessment: castor iso-check command
  • feat ISO conformance block in DISCOVER payload (iso_13482, iso_10218_2, iso_42001, eu_ai_act)
  • feat New gateway endpoints: /api/attest, /api/attest/verify, /api/sbom, /api/sbom/download, /api/conformance
  • feat castor conformance now shows RCAN v2.1/v2.2 L5 checks inline (100/100 on Bob)
  • docs docs/attest.astro + docs/sbom.astro: ML-DSA-65 attestation and SBOM guides
  • chore Q-Day timeline: ML-DSA primary 2026 (NOW), Ed25519 sunset 2027, NIST deadline 2029

v2.1.0

Stable 2026-03-24
  • feat PQ hybrid signing: ML-DSA-65 + Ed25519 dual signatures (pq_sig field)
  • feat ML-DSA-65 as primary with require_pq=True default
  • feat M2M_TRUSTED (level 6), firmware manifests, SBOM attestation, EU AI Act Β§12/Β§16

v1.10

Legacy 2026-03-24
  • feat COMPETITION_ENTER (37) β€” robot announces competition entry on fleet bus
  • feat COMPETITION_SCORE (38) β€” robot publishes verified score submission
  • feat SEASON_STANDING (39) β€” cloud broadcasts current season class standings
  • feat PERSONAL_RESEARCH_RESULT (40) β€” local-only personal run result (never broadcast)
  • feat New spec page: /spec/competitions/ β€” full competition protocol documentation
  • chore Canonical MessageType table extended to 40 entries in Β§3

v1.4

Stable 2026-03-13
  • feat Β§1–§16 dedicated section pages β€” all 16 spec sections now have standalone dedicated pages with full content, tables, code examples, and cross-references
  • feat CLAUDE.md agent context files added to all ecosystem repos (OpenCastor, rcan-py, rcan-spec, RRF)
  • chore Compatibility matrix updated for OpenCastor β‰₯2026.3.13.11, rcan-py β‰₯0.4.0, rcan-ts β‰₯0.3.0

v1.3

Stable 2026-03-13
  • feat Β§17–§20 + Appendix B promoted from Draft to Stable
  • feat Β§21 Robot Registry Integration β€” RRN↔RURI canonical mapping, ownership proof, registry handshake
  • feat Conformance L4: Registry Integration test suite
  • chore Compatibility matrix updated for OpenCastor β‰₯2026.3.13.0, rcan-py β‰₯0.3.1, rcan-ts β‰₯0.3.0

v1.2

Stable 2026-03-12
  • feat AuditChain with HMAC-linked CommitmentRecords (Β§16)
  • feat HiTL gates β€” human-in-the-loop safety approval flow (Β§8)
  • feat Federation protocol β€” cross-registry robot discovery (Β§12)
  • feat Commitment chain log verification + castor compliance command
  • feat Registry auto-registration endpoint (Β§10)
  • fix ConfidenceGate now rejects exactly-at-threshold values (strict <)
  • fix RobotURI canonicalization β€” trailing slashes normalized
  • chore Spec published at rcan.dev/spec (Astro-based site)
  • feat Β§17 Distributed Registry Node Protocol β€” federated RRN namespace, node identity, resolution
  • feat Β§18 Capability Advertisement Protocol β€” structured Capability Object Map, standard cap names
  • feat Β§19 Behavior/Skill Invocation Protocol β€” INVOKE/INVOKE_RESULT message types
  • feat Β§20 Telemetry Field Registry β€” standard joint, robot-state, sensor field names
  • feat Appendix B WebSocket Transport Binding β€” full-duplex transport over ws/wss

v1.1

Stable 2025-06-03
  • feat ConfidenceGate β€” threshold-based command gating (Β§7)
  • feat MessageSigner β€” Ed25519 payload signing (Β§9)
  • feat RCANResponse envelope with receipt_hash field
  • feat Offline-resilient fallback behaviour specification (Β§11)
  • feat Conformance levels L1 / L2 / L3 introduced
  • fix RobotURI β€” disallow empty segment names
  • chore JSON Schema published for rcan.yaml and RCANMessage

v1.0

Initial 2025-01-20
  • feat RobotURI β€” hierarchical robot addressing (rcan://<registry>/<org>/<model>/<version>/<unit>)
  • feat RCANMessage β€” structured command envelope with params + target URI
  • feat CommitmentRecord β€” per-action audit record with HMAC seal
  • feat Registry HTTP API β€” robot registration + lookup endpoints
  • feat Python SDK (rcan-py) initial release
  • feat TypeScript SDK (rcan-ts) initial release
  • chore MIT license; spec under CC BY 4.0

The RCAN spec is versioned independently of the SDKs.
SDK-specific changelogs live in their respective GitHub repositories.