Beagle SCM
POST-024 HIGH: a tree-URI post target is mis-slotted as a path scope — silent no-op + misleading POSTNONE
Input
Context
From work/ABC-008/abc, jab post file:../../../libdog/abc/ answered POSTNONE: no changes since — the wrong diagnosis (the wt HAD a fresh commit; the TARGET was the problem).
file:<rel> carries a scheme but NO authority, so post's slot parse (verbs/post/post.js parseSlots, DIS-054 Host>Query>Path) reads its PATH as a commit path SCOPE, not a target.
- The
../… scope escapes the wt, silently matches nothing, and the empty-commit gate (post.js ~647) throws POSTNONE: no changes since base — user-hostile misdirection.
- Wire push (GIT-013) serves ssh:/http(s): Host slots only; a local
file:/be:// tree target has NO leg at all.
Goals
- a scheme'd arg post cannot serve refuses LOUDLY with its own code (BE-003 spirit: one uniform line naming the unsupported target), never silently re-slots as a path scope.
- a
..-climbing path-scope arg throws NAVESCAPE, never a silent empty scope.
- (design, cross-link PATCH-011) the wt→orig merge flow goes through patch-with-fetch, NOT post: post to a local tree target stays refused.
Constraints
- URI classification via uri._parse / the URI class only (work bans regex/manual URI parsing); minimal diff in verbs/post/post.js.
- repro test first; existing tests untouched.
WIP
Design decisions
- POSTSCHEME gate fires only on scheme'd args with TARGET shape (authority/query/path-slot path) — scheme-lexing message words (
T:v2, POST-024: msg) stay prose, pinned by a control case.
be://host refuses BEFORE the GIT-013 Host-slot branch; narrow's value stays byte-identical (resolveInTree validates, never rewrites).
TODOs
- v repro test test/post/target-refuse (red-first on the exact ticket bug; POSTSCHEME for file:<rel>/be://…/file:/abs, NAVESCAPE for the climb, store tip intact, colon-message control)
- v slot parse: scheme'd non-wire arg → POSTSCHEME; climbing scope → NAVESCAPE (verbs/post/post.js parseSlots)
Blockers and bummers
- change sits UNCOMMITTED in work/POST-024, awaiting review/merge; suite there 171/172 (the 1 red = pre-existing be-js-get-oddname, JS-096 area), orchestrator re-ran the new test green.
Outcome