aura run: phrase loader UnknownNodeType as house-style prose (parity with graph build) #184
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
aura runon a blueprint referencing an unresolvable type id surfaces the raw Rust Debug form (UnknownNodeType("momentum_lab::Nope")), whileaura graph buildphrases the same fault house-style (op 5 (add): unknown node type "momentum_lab::Nope"). The exit-code split (usage 2 vs runtime 1) is documented and correct; only the presentation diverges. The #162 precedent (bind-mismatch prose at the binary seam) established that engine error types are Display-free by convention and the CLI presentation layer phrases them — the run path's loader errors never got that treatment.Observed by the milestone fieldtest (finding F4,
fieldtests/milestone-project-environment/FINDINGS.md, 2026-07-02); reproduction in the corpus.errfixtures there.Likely shape: route
LoadErrorthrough a small presenter in the run path (parallel toformat_op_erroron the graph-build path), naming the offending type id in prose and never leaking the Debug variant name — pinned at the binary seam like the existinggraph_build_renders_a_bind_kind_mismatch_as_prosetest.Handled together with #185 at the shared loader-error seam. The base prose reuses the existing
graph buildpresenter (blueprint_load_prose, nowpub(crate), kept env-agnostic) so both surfaces phrase aLoadErroridentically and neither leaks theUnknownNodeTypeDebug token. The #185 missing-Aura.tomlhint fires only when the unresolved id is::-namespaced AND no project was loaded (env.provenance().is_none()); a bare std id gets none. Scope note: the hint was extended beyond the run path tograph build'scomposite_from_anyas well, sinceenvwas already cleanly in scope there — no plumbing hack — so both invocation paths get the same orientation. Sweep/mc/walkforward share the same{e:?}leak pattern and were left untouched (out of scope; separate follow-up if wanted).