URI-009 MED: JABC uri binding flattens absent vs present-empty components

The JABC uri binding (beagle/js/uri.cpp) mapped all 8 parsed components through JABCSliceStr, which returns "" for any zero-length slice — collapsing an ABSENT slot and a PRESENT-BUT-EMPTY slot to the same JS "". So ?b and ?b# both parse to {query:"b",fragment:""}, and JS can't tell /p (no query) from /p? (empty query), making POST.mkd's #/?-presence rows unhonorable. Native URIPattern (abc/URI.c:533) already tracks presence (slot data-ptr non-NULL = sigil seen), so the fix maps ABSENT→undefined, PRESENT-EMPTY→"", PRESENT→string. Unblocks DIS-054, whose isBareTrunkQuery/isSlotArg reparse the raw CLI arg only because bare ? was indistinguishable from absent. Scope: the JABC binding (beagle/js/) — the be/ JS that runs on jab inherits it. Method Issues.

Input

Context

Goals

Constraints

WIP

Design decisions

TODOs

Blockers and bummers

Outcome