JAB-003: arg-string → call mapping — (verb, params[]) with params as JS values; eval keyboard input, CLI packs strings+scalars

A be/jab invocation is a VERB plus N params; the dispatcher should split into (verb, params[]), require the verb code, and pass the params as JS values, leaving any URI parse to the verb. Today core/loop.js cli() instead routes every positional through resolve.seedclassifyArg (new URI(arg)) BEFORE the verb sees it — a uniform pre-classification that silently drops a colon-bearing POST commit message (TICKET: log: … re-parses to a {kind:"path"} row scoping the post to a nonexistent target → no-op rc=0; the #msg sigil is the only escape). Fix: retire the central classify; the CLI packs each shell-token as a string (differentiating only the SAFE scalars — number/true/false/null), while the pager : address line (keyboard) runs the JS dogenizer + a shape-gated eval so {}/[]/scalars become real JS values. Scope: be/ (beagle-ext) dispatch + pager; reuses the existing tok/eval bindings, no beagle/js change. See Issues.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome