- proposed/testing -> implemented/testing with the lifecycle rewrite (Proposal->Decision in present tense, Acceptance criteria + Risks folded into Consequences); zh counterpart mirrored and both pairs re-recorded. - the rejected NIH-audit roll-up pair now links the implemented/ path. - loader-smoke README: captured output is bounded by execa's default 100 MB maxBuffer, no longer unbounded. - acp-snapshot README: harness.ts now also imports vitest (vi.waitFor), so the vitest-run-only constraint names both modules. - jsonrpc keyless smoke: raise the invalid-env case's subprocess deadline to 25s (the 9s pick starved a cold tsx boot on slow NFS).
@deepseek-ai/dsh-loader-smoke
English | 中文
Shared subprocess harness for tests that boot an app and cordis.yml through the Cordis Loader. resolveExampleLaunch selects local src mode (tsx and root tsconfig paths) or CI lib mode (plain Node and package exports) from an explicit mode or DSH_EXAMPLE_MODE.
runLoaderSmoke accepts bin and config paths, optional complete bin arguments, environment overrides, stdin, pre-run setup, and pre-cleanup inspection. It owns the isolated cwd, DSH homes, diagnostics, deadline, termination, EOF, and cleanup; it returns both streams after a zero exit and rejects with both streams on failure.
This is support-tier test infrastructure, not product API.
Model Experience
None, as this test-only harness boots example processes and inspects their streams without changing an assembled model request.
KV Cache effect
None; this package neither assembles nor sends a provider request.
Known Limitations and Deferred Work
- Built mode requires a prior build — the config must also resolve every named package upward through
examples/node_modules. - Captured stdout and stderr are bounded only by execa's default 100 MB
maxBuffer— a runaway child is terminated at that ceiling rather than at a smoke-chosen budget. - Timeout kills only the direct child — a process tree spawned by a faulty fixture can outlive the smoke and needs external cleanup.