← Blog
Release Notes

Channeling

This week in rngo 0.38.0 and rngo agent 0.4.0, I focused on improving channel design, implementation and documentation.

`template` Format

I added a template format, which renders a Handlebars template for each event. Previously, the exec target would do something similar, but I think doing this at the format level works better since it can be used with any target type.

So, now instead of this:

channels:
  api:
    target:
      type: exec
      command: curl -sS -X {{method}} $API_BASE_URL{{path}}

You should do this:

channels:
  api:
    format:
      type: template
      template: curl -sS -X {{data.method}} $API_BASE_URL{{data.path}}
    target:
      type: exec

You may notice that the input data is now accessed via the data field. This is because the template has access to input metadata including timestamp, and effect.key.

Also, the exec target no longer accepts the command field.

See the channel reference for more details.

Realtime

The rngo run CLI command now accepts a --realtime flag, which tells it to wait to send inputs until their logical timestamp.

For backdated inputs, nothing will change since their logical timestamps have already passed.

See the rngo run reference for more details.

Timestamps

Simulations now use a millisecond clock and the log will record just a single integer timestamp per input, and no longer also include a RFC 3339 timestamp. You may need to update signals queries to accomodate this change.

Agent Skill

rngo agent 0.4.0 updates the rngo skill's references to include much improved channel documentation, among other improvements. Your agent should be able to write channels that take advantage of templates, environment variables, shell features, etc.

You can update your skills by running:

❯ rngo skills install

Looking Forward

Next week, I plan on introducing a concept of phases which will make it easy to segment a simulation between backfilling private channels and exercising public channels.

I think this is will proved to be a very common approach I'll a good example of it in the Takeoff application.