@tikoci/centrs 0.1.9-next.22 → 0.1.9-next.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GLOSSARY.txt +24 -0
- package/commands/execute/examples.md +19 -0
- package/commands/explain/README.md +428 -128
- package/commands/explain/examples.md +260 -1
- package/docs/CONSTITUTION.md +4 -0
- package/docs/MATRIX.md +23 -11
- package/package.json +4 -1
- package/src/explain/args.ts +69 -8
- package/src/explain/blocks.ts +3 -4
- package/src/explain/brace-slots.ts +5 -0
- package/src/explain/catalog.ts +13 -6
- package/src/explain/defects.ts +1 -0
- package/src/explain/group-faults.ts +927 -0
- package/src/explain/highlight-projection.ts +10 -8
- package/src/explain/operators.ts +20 -19
- package/src/explain/pathresolve.ts +102 -20
- package/src/explain/quoted-string.ts +41 -6
- package/src/explain/run-tokens.ts +223 -0
- package/src/explain/scope-brace.ts +103 -6
- package/src/explain/segment.ts +41 -3
- package/src/explain/spaced-args.ts +116 -0
- package/src/explain/symbols.ts +17 -1
- package/src/explain/transport.ts +13 -0
- package/src/explain/verbsplit.ts +14 -188
- package/src/explain/write.ts +8 -1
- package/src/explain.ts +378 -18
- package/src/offline-gate.ts +30 -9
- package/src/protocols/btest-session.ts +30 -10
- package/src/protocols/mac-telnet-console.ts +16 -0
package/GLOSSARY.txt
CHANGED
|
@@ -206,6 +206,8 @@ tzsp
|
|
|
206
206
|
TZSP
|
|
207
207
|
UDP
|
|
208
208
|
UIA
|
|
209
|
+
# unscorable: a corpus observation with no device answer (failed/missing capture, unknown or ambiguous readout); `parseVerdict` in scripts/corpus-db.ts.
|
|
210
|
+
unscorable
|
|
209
211
|
uvx
|
|
210
212
|
vcs
|
|
211
213
|
venv
|
|
@@ -216,6 +218,8 @@ vrf
|
|
|
216
218
|
webproxy
|
|
217
219
|
WinAppDriver
|
|
218
220
|
winbox
|
|
221
|
+
# wiresage/routeros-lsp: third-party RouterOS checker; its 875 conformance cases are the corpus's `wiresage-conformance` collection (lsp-routeros-ts#42).
|
|
222
|
+
wiresage
|
|
219
223
|
Wireshark
|
|
220
224
|
workstream
|
|
221
225
|
workstreams
|
|
@@ -318,6 +322,9 @@ REUSEADDR
|
|
|
318
322
|
# L2 bridge frame-parsing terms (test/integration/mndp-l2-bridge.ts):
|
|
319
323
|
# ethertype: 16-bit EtherType field in an Ethernet frame (0x0800 = IPv4).
|
|
320
324
|
ethertype
|
|
325
|
+
# binpad: OpenSSL `BN_bn2binpad`, a big number as fixed-width big-endian bytes;
|
|
326
|
+
# MAC-Telnet's mtwei.c hashes EC-SRP `z` with it, btest does not (#516).
|
|
327
|
+
binpad
|
|
321
328
|
# ihl: IPv4 Internet Header Length (low nibble of the first byte, in 32-bit words).
|
|
322
329
|
ihl
|
|
323
330
|
# PIIX: Intel PCI-ISA bridge chipset QEMU emulates; shows up in CHR's REST board-name.
|
|
@@ -409,6 +416,16 @@ globalname
|
|
|
409
416
|
localname
|
|
410
417
|
setnote
|
|
411
418
|
runnumber
|
|
419
|
+
# addcomment/setcomment/setname/setdisabled/setnumbers/printdetail/pickbegin: the
|
|
420
|
+
# same IL rendering, quoted as evidence for the spaced-argument rule (GH#350) —
|
|
421
|
+
# "/interface set ether1 comment \"x\"" is "(evl /interface/setcomment=x;numbers=ether1)".
|
|
422
|
+
addcomment
|
|
423
|
+
setcomment
|
|
424
|
+
setname
|
|
425
|
+
setdisabled
|
|
426
|
+
setnumbers
|
|
427
|
+
printdetail
|
|
428
|
+
pickbegin
|
|
412
429
|
# unconfigured: a freshly-flashed RouterOS device with no IP — the mac-telnet use case.
|
|
413
430
|
unconfigured
|
|
414
431
|
unwired
|
|
@@ -783,6 +800,8 @@ dgram # Node's `node:dgram` UDP socket module — reached by `mac-telnet`, and o
|
|
|
783
800
|
# pair, so its spelling is load-bearing and must not be "corrected".
|
|
784
801
|
elsy # the misspelled `else` in `:if (1=1) do={…} elsy {…}` — rejected as `expected end of command` on CHR 7.21.5/7.23.5/7.24.2/7.25beta3, which is what proves the bare-brace `else {` acceptance is a real device fact and not a probe artifact (#347)
|
|
785
802
|
prnt # a misspelt `print` verb — `/ip/address/prnt` is the offline analyzer's ABSTENTION fixture (`verdict: warn`, not `fail`), which is what proves the two-stage validation gate passes an abstention through to the device rather than refusing it (#354)
|
|
803
|
+
zzznotanarg # an argument name no RouterOS command has — `/system/script add zzznotanarg beep` is `bad parameter zzznotanarg` (7.24.5) or `expected end of command` (7.22.1), which proves the device pairs a spaced `name value` against per-command schema (#350)
|
|
804
|
+
zzzscript # a `…script`-shaped name no command has — `zzzscript={ :beep }` is a `syntax error` on CHR 7.22.1/7.24.5, the control for the script-body brace exemption (#350)
|
|
786
805
|
zzznotamenu # a menu name no RouterOS build has — `/ip { zzznotamenu { print } }` is a `syntax error` on device, so menu-scope resolution is schema-dependent and a catalog MISS must abstain rather than accept (#348)
|
|
787
806
|
|
|
788
807
|
# #361 absent-menu controls. Deliberate NON-words: each names a path no RouterOS
|
|
@@ -797,3 +816,8 @@ nochr # a CLI-Reference syscap that excludes CHR — `/system/license/output` is
|
|
|
797
816
|
# #417 CLI Reference refresh (7.26beta1).
|
|
798
817
|
cmr # MikroTik's optional `cmr` controller package and the `/cmr` menu tree it adds (7.26beta1); the catalog carries `package="cmr"` as its published gate, e.g. `/cmr/device/reboot` (#417)
|
|
799
818
|
apptraffic # two paths new in 7.26beta1 with different published gates: the `/tool/apptraffic` settings menu (conditions `!mmips, !powerpc, !smips`) and the `/cmr/device/apptraffic` command (package `cmr`, no conditions) (#417)
|
|
819
|
+
|
|
820
|
+
# #498 schema-5 corpus repin.
|
|
821
|
+
rle # the corpus's `highlight-rle-v1` response encoding: each highlight stream stored as run-length `[class, count]` pairs, decoded by `decodeHighlightRuns` in scripts/corpus-db.ts (#498)
|
|
822
|
+
removenumbers # the IL head `/ip/firewall/address-list/removenumbers=…` that `remove [find …]` renders as, quoted verbatim in the bracket-`=` corroboration test (#498)
|
|
823
|
+
vscod # the last segment of a corpus path the forum importer truncated at its slug limit (`…-editors-like-vscod/post-0014-snippet-02.rsc`); cited as the path, so the spelling must match the corpus row (#498)
|
|
@@ -530,6 +530,25 @@ has no `result`, `syntax` or `semantic`. Its stages are `offline: passed`, then
|
|
|
530
530
|
`device: skipped` with `reason: "not reached: transport/auth-failed"`. RouterOS
|
|
531
531
|
answered 401 before `:parse` could give a verdict.
|
|
532
532
|
|
|
533
|
+
### V9. A stray `}` that RouterOS would silently discard is refused (#504)
|
|
534
|
+
|
|
535
|
+
A `}` or `]` that closes nothing at the top level makes RouterOS accept the
|
|
536
|
+
script and stop reading there: everything from that byte on is dropped without a
|
|
537
|
+
word. `/system identity set name=a}` sets the identity to `a`. `explain` reports
|
|
538
|
+
it as a `warning`, because nothing is rejected (`commands/explain/examples.md`
|
|
539
|
+
example 42). The gate refuses that one warning by code, because the script the
|
|
540
|
+
device would run is not the one that was written.
|
|
541
|
+
|
|
542
|
+
```bash
|
|
543
|
+
centrs execute $R ':put "first"};:put "second"' --via rest-api --username $U --password $P --json
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
Envelope: `ok: false`, `error.code=validation/syntax`,
|
|
547
|
+
`error.context.validationStage="offline"`, `error.context.span` covering the `}`
|
|
548
|
+
through the end of the input, and
|
|
549
|
+
`error.context.diagnostics[0].code="explain/canonicalizer/discarded-close"`. With
|
|
550
|
+
`--validate=false` the device runs it and prints only `first`.
|
|
551
|
+
|
|
533
552
|
## Write authorization and returned runtime faults
|
|
534
553
|
|
|
535
554
|
These regressions are transport-independent and run in
|