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.