The shipped headless profile is base + headless (the direct-core front door), and its installation-owned migration rewrites the old three-bundle tuple down to that template, so a one-shot run composes no preset roster. The runner's optional preset composition was compensating in the wrong direction: it re-added roster reads the shipped profile never satisfies, and its golden pinned a header field only a roster-bearing deployment produces. The runner, the headless bundle manifest, and the dsh-run golden return to the direct shape; skills in a direct run flow through the base host rows' global layer, which is what the repository-plugin e2e proves.
bundle/ — profile plugin bundles
English | 中文
Profile bundles: npm packages whose manifest declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, making them installable patch layers for dsh --profile compositions (profile contract). A bundle's substance is its patch list; some also ship runtime glue plugins their patch mounts.
| Package | Role | ctx key |
|---|---|---|
base/ |
The shared dsh core every profile applies first | — (patch only) |
web-app/ |
Browser surface: web patch layer + runtime glue plugin | mounts rows |
headless/ |
Direct one-shot task mode over base, with no Host or Web layer | mounts headless-runner |
In-box bundles resolve from the dsh installation; out-of-tree bundles install into a profile through dsh plugin --profile <name> add <package>.