Skip to content

chore(config): make sample configs Keystone templates#139

Merged
Nauyix merged 1 commit into
mainfrom
feature/keystone-config-templates
Jun 9, 2026
Merged

chore(config): make sample configs Keystone templates#139
Nauyix merged 1 commit into
mainfrom
feature/keystone-config-templates

Conversation

@Nauyix

@Nauyix Nauyix commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Pull Request Checklist

Please ensure your PR meets the following requirements:

  • Code follows the style guidelines (N/A: config/docs only)
  • Tests pass locally (make test or make docker-test) (targeted tests passed; full gate not run)
  • Code is formatted (make format) (N/A: config/docs only)
  • Documentation updated if needed
  • Commit messages follow conventional commits
  • PR description is complete and clear

Summary

This PR makes the repository recorder and transfer samples usable as Keystone recorder.yaml and transfer.yaml templates for axon_config register. It replaces runtime identity and WebSocket endpoints with supported register placeholders while keeping ROS1/ROS2 topic lists as the robot-specific adaptation surface.


Motivation

  • Robot-type adaptation currently starts from the Axon sample configs, but those samples were not aligned with the placeholder rendering performed by axon_config register.
  • Keystone-managed deployments need samples that can be uploaded as templates and rendered after device registration without hand-editing device identity or fleet WebSocket URLs.

Changes

Modified Files

  • apps/axon_recorder/config/default_config_ros1.yaml - Treat the ROS1 sample as a Keystone recorder.yaml template, default RPC mode to ws_client, and render rpc.ws_client.url from {{ recorder_rpc_url }}.
  • apps/axon_recorder/config/default_config_ros2.yaml - Apply the same Keystone template behavior to the ROS2 sample.
  • apps/axon_transfer/config/transfer_config.yaml - Render device_id, factory_id, and the transfer WebSocket base URL from registration placeholders.
  • apps/axon_config/README.md - Document which repository samples can be uploaded to Keystone and which fields are filled by registration.
  • apps/axon_recorder/config/README.md - Document the Keystone template workflow and local-only override requirements.
  • apps/axon_transfer/README.md - Document the transfer sample as a Keystone-ready template.

Added Files

None

Deleted Files

None


Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update (documentation changes only)
  • Refactoring (code improvement without functional changes)
  • Performance improvement (code changes that improve performance)
  • Test changes (adding, modifying, or removing tests)

Impact Analysis

Breaking Changes

None expected for the Keystone registration workflow.

Backward Compatibility

The ROS1/ROS2 sample configs now default to Keystone WebSocket client mode and contain {{ recorder_rpc_url }} until rendered. Local-only users who run these sample files directly should either render/replace the placeholder URL or switch rpc.mode back to http_server, as documented in the recorder config README.


Testing

Test Environment

  • ROS Distribution: N/A for targeted config/register tests
  • OS: local Axon development checkout
  • Build Type: existing local build artifacts

Test Cases

  • Unit tests pass locally
  • Integration tests pass locally
  • E2E tests pass (if applicable)
  • Manual testing completed

Manual Testing Steps

  1. ./build/axon_config/test_axon_config
    • Result: 58 tests passed.
  2. ./build/axon_recorder/test/test_config_parser
    • Result: 54 tests passed.
  3. ruby -e 'require "yaml"; ARGV.each { |path| YAML.load_file(path); puts "#{path}: ok" }' apps/axon_recorder/config/default_config_ros1.yaml apps/axon_recorder/config/default_config_ros2.yaml apps/axon_transfer/config/transfer_config.yaml
    • Result: all three YAML files parsed successfully.
  4. git diff --check HEAD~1..HEAD
    • Result: no whitespace errors.

Full local CI (./scripts/ci-all-local.sh) and Docker-backed workflow equivalents were not run, so this PR is opened as a draft.

Test Coverage

  • New tests added
  • Existing tests updated
  • Coverage maintained or improved

Screenshots / Recordings

N/A


Performance Impact

  • Memory usage: No change
  • CPU usage: No change
  • Recording throughput: No change
  • Lock contention: No change

Documentation

  • apps/axon_config/README.md updated
  • apps/axon_recorder/config/README.md updated
  • apps/axon_transfer/README.md updated
  • ARCHITECTURE.md updated
  • CONTRIBUTING.md updated
  • API documentation updated
  • Design docs updated in docs/designs/
  • No documentation changes needed

Related Issues

N/A


Additional Notes

  • This PR intentionally contains no C++ or Python code changes.
  • Local untracked files dist/ and scripts/pi2_ros2_bridge.py were not included in the commit or branch.

Reviewers

N/A


Notes for Reviewers

  • Please verify the placeholder set matches the fields provided by axon_config register: recorder_rpc_url, transfer_ws_url, device_id, and factory_id.
  • Please review the sample default-mode change from local HTTP RPC server mode to Keystone WebSocket client mode.

Checklist for Reviewers

  • Code changes are correct and well-implemented
  • Tests are adequate and pass
  • Documentation is updated and accurate
  • No unintended side effects
  • Performance impact is acceptable
  • Backward compatibility maintained (if applicable)

- Render recorder WebSocket RPC URLs from register context

- Render transfer identity and fleet WebSocket URL from register context

- Document using the ROS recorder and transfer samples as Keystone templates
@Nauyix Nauyix marked this pull request as ready for review June 9, 2026 11:45
@Nauyix Nauyix merged commit 2ea89c4 into main Jun 9, 2026
10 checks passed

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@Nauyix Nauyix deleted the feature/keystone-config-templates branch June 9, 2026 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant