D100 - stamp and wrap retire into the pipeline; --format prx, and --privilege/--sdk as pipeline options

Status: decided. 2026-09-10.

The stamp and wrap subcommands are deleted. A shared library is --format prx, and --privilege/--sdk are pipeline options on the formats that build a container. The pipeline is now the only way to stamp or wrap.

Why they were still here

Worklog 062 moved stamp and wrap onto --target but kept both verbs, naming exactly three reasons they could not yet go:

Those were real gaps, not habits, and CONVENTIONS ยง7 forbids a superseded verb surviving on anything less. Each is closed by giving the pipeline the axis the verb was carrying:

With all three carried by the pipeline, the verbs have nothing left, and they are gone rather than deprecated.

What this does not change

The bytes. --privilege app with no --sdk routes through selfish_container::build, the same call the default path always used; cmp confirms --privilege app produces a container identical to omitting the flag. Only a non-App tier or an explicit --sdk reaches build_with_options, so an ordinary run does not pay for a version-table load it does not read.

The default target. wrap defaulted to orbis; the pipeline has never had a default --target and still does not. D097's reasoning about that default now has no subject, and D097 carries a banner saying so. A container's magic is named by naming its machine, which is required.

Two things found while doing it, neither invented here

What this deliberately leaves

The container builder stamps e_type ObjectType::EXECUTABLE into the header it writes, regardless of the payload. So --format prx produces a correctly stamped shared-library ELF, but there is no --format that wraps a .prx in a container as a library - obSCEne's .prx modules are wrapped by its own mkself. Closing that would mean the container builder taking an object type, which is a larger change than retiring two verbs and is not part of this. Recorded so the gap is visible rather than discovered.