BE-003: every dog must print name + verb + URI + error code on an error exit (uniform diagnostic)

When a dog process exits with an error it must emit ONE uniform line naming itself, the verb, the URI it was acting on, and the ok64 error code — e.g. sniff: get file://<store>?/beagle#<sha>: KEEPNONE. Today error exits are cryptic and contextless (Error: SNIFFFAIL, Error: BEDOGEXIT, bro: cannot open difff: FILENONE), so the user can't tell which dog failed, on what, doing which verb. This is the general form of BE-002. See Verbs.

Issues

The error-exit surface is inconsistent and drops the context a user needs.

Blockers

None. The pieces already exist: every dog knows its name (argv[0]), its verb (the parsed cli verb), and its URI/operand (the cli at-URI or the failing operand); ok64 codes already decode to names via ok64str/ron60. They just aren't composed into one line.

Planned

One uniform error-exit line, single-sourced, across every dog (be, sniff, keeper, graf, spot, bro, woof, mark, dog).