Skip to content

explain: a brace array in a command argument is a device error, not a silent abstention #259

Closed

Description

@mobileskyfi

What

/ip/dns/set servers={1.1.1.1;8.8.8.8} is a syntax error on the device.
explain currently says nothing about it: the brace gate refuses to read the
value, the statement comes back with no value occurrence for servers, and the
reading looks like "no values here" rather than "wrong delimiter".

This is the deferral written into PR #256's "Not done here", filed so it does
not get lost.

Evidence (CHR 7.23.3)

/console/inspect request=highlight classes the { byte error and :parse
refuses the statement for:

  • /ip/route/add comment={1;2}
  • /ip/dns/set servers={1.1.1.1;8.8.8.8} — a LIST-typed attribute, which is
    what rules out a schema-shaped reading
  • /interface/print .proplist={name;comment}
  • /ip/route/print where comment={1;2}
  • the relative spelling ip route add comment={1;2}
  • :log info message={1;2}

The (…) spelling parses in all of those positions, so the fix has a concrete
suggestion to offer: servers=(1.1.1.1,8.8.8.8), or the bare comma run
servers=1.1.1.1,8.8.8.8, which the device lowers to servers=1.1.1.1;8.8.8.8.

Why it is not just "emit a defect"

The braces a command argument DOES take are schema-driven per attribute, not
per name: :execute script={…} parses while
/system/logging/action/add script={…} does not, and source=/on-event=
take a script body. So a diagnostic needs the accepted-brace set swept first,
or it will fire on legal input. That sweep is adjacent to #257's (verb, slot)
table and should probably follow it.

Also parked here

The dotted-decimal-to-seconds fallback stays an abstention: RouterOS reads
256.1 as 00:04:16.100, and centrs deliberately says nothing rather than
hinting time on a spelling nobody writes on purpose. Revisit only with a
reason.

Raised by the Meta Muse Spark review of #256 (item 7). Part of #225.

Activity

  1. added
    cmd-explain`explain` command API, CLI and other surfaces
    agent-readyNo unmet dependencies or pending decisions - any harness can pick this up cold
    on Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyNo unmet dependencies or pending decisions - any harness can pick this up coldcmd-explain`explain` command API, CLI and other surfaces

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions