Repository navigation
Replies: 2 comments
|
Thanks — the three-command table plus the file/line pointers made this quick to check against 1. The skip is a documented contract; the exit status is the only part that is missing.
So there are two separate questions — should a partial composition boot (today: yes, by design, and item B of #7850 assumes the same), and how does a non-interactive caller learn — and only the second one is open. Your report is the sharpest statement of it I have seen. 2. The single stderr line is also not durable anywhere a GUI user can see. Both sinks are closed for a boot that exits 0:
That is why I read this as a sink problem rather than only an exit-status problem, and it is probably why the 3. The machinery your |
|
Follow-up to the analysis above: this gap now has a plugin form.
dsh plugin --profile <name> add @argszero/dsh-activation-doctorIt already filed the activation report the harness composes but never writes. 0.2.0 adds the stage this thread is about: the profile manifest's For the case in this thread the durable report carries: Three things worth stating plainly, because they are why this is a plugin rather than a patch:
A plain cordis host has no |
Uh oh!
There was an error while loading. Please reload this page.
When
dsh.profile.bundlesnames a package that cannot be resolved, DSH 0.2.1-alpha.2 skips it with one stderr line and carries on. A profile boot and--dump-configthen exit 0;--dump-config-schemaexits 1 for the same profile. Item B of #7850 reported the--dump-configcase on 0.1.7-rc.2; this adds the boot path, the current alpha and the code locations.Environment
@deepseek-ai/dsh@0.2.1-alpha.2installed from the npm registry as a project dependency (pnpm 12.11.2), Linux x64 (Ubuntu 24.04), Node 25.9.0, a freshDSH_HOME, stock CLI. The--helpcase is also asserted in hosted CI on Ubuntu 24.04 with Node 22.23.3: https://github.com/sessionbus/sessionbus-dsh/actions/runs/38156213539/job/114519621989 (script.github/scripts/prove-native-peer-policy.mjs).Steps (
dshandpnpmon PATH)Observed
Each of the three commands prints this line on stderr:
dsh --profile headless --helpdsh --profile headless --dump-configdsh --profile headless --dump-config-schemadsh: error: Selected profile bundle "@example/not-installed" could not be loaded; repair or remove its bundle selection.--helpafter--profileis handled by the booted app, so the first command does boot the profile, and the headless usage text is printed as usual.Where (published 0.2.1-alpha.2 packages)
@deepseek-ai/dsh-app-bootlib/index.js:1006-1026:loadProfileDirectorycatches every per-bundle error, including the resolution error thrown at:986, and records it inskippedBundles.@deepseek-ai/dshlib/profile-boot-BZ2ZjNWi.js:185-191:prepareProfileprints the skipped bundles (reportSkippedBundles,:188) and carries on. Boot and--dump-config(lib/dump-config-BEDI-dNY.js:25) both go through it, and neither changes its exit status.--dump-config-schemais the exception:@deepseek-ai/dsh-app-bootlib/index.js:3318-3321turns each skipped bundle into anerrordiagnostic,:3069then marks the document incomplete, and@deepseek-ai/dshlib/dump-config-schema-DhhNOaro.js:38sets exit code 1.@deepseek-ai/dsh-app-boot@0.1.5-rc.2lib/index.js:849-860has no catch around the same resolution, so the error propagated there. We read that from the package and did not run it; it agrees with the exit 1 that 0.1.7 起两个静默升级缺口:`plugin add` 只补「本次新加」的 layer 行;`--dump-config` 对坏树恒返回 exit 0 #7850 reports for 0.1.5-rc.1.Expected
A way for non-interactive callers to detect a partial composition from the exit status: a non-zero exit, or an opt-in strict mode.
Impact
Scripts, CI jobs and supervisors that gate on the exit status accept a profile whose declared bundle did not load. An installer that failed to install a bundle goes unnoticed until the feature is missing at run time.
Suggestion
--dump-configcould reuse the error diagnostic that--dump-config-schemaalready produces and exit 1. For boot, a launcher flag or environment variable (for example--strict) that turns a skipped bundle into a startup failure would keep today's degraded boot as the default for interactive use.We did not run a model turn or a long-lived surface such as
webwith a missing bundle.Related: #7850 (item B), #6539 (asks for a boot preflight that exits 0 or 1).
All reactions