DSH / Atlas
2026-08-24implementedsimplificationarchived 2026-09-04

Owner-local profile tests and runnable guides

归属方本地的 Profile 测试与可运行指南

The top-level `examples/` tree mixed four unrelated roles: redundant application compositions, cross-package profile tests, package-specific Loader fixtures, and runnable user guides. Its umbrella workspace manifest existed primarily to make arbitrary nested Cordis files resolve packages, so test and documentation placement determined dependency resolution and made unsupported demo launchers look like product interfa

English

Problem

The top-level examples/ tree mixed four unrelated roles: redundant application compositions, cross-package profile tests, package-specific Loader fixtures, and runnable user guides. Its umbrella workspace manifest existed primarily to make arbitrary nested Cordis files resolve packages, so test and documentation placement determined dependency resolution and made unsupported demo launchers look like product interfaces.

Decision

There is no top-level examples/ tree. Named dsh profiles are the only Node application compositions. Cross-package ACP, headless, and SDK profile tests live under apps/cli/tests/profiles/; package-specific Loader configs and drivers live under their package's tests/fixtures/. Recorded-session tests remain under top-level snapshots/, and non-session expected output remains owner-local.

Optional user overlays are shipped assets under apps/cli/config/examples/, where their bare plugin names resolve through the CLI application manifest. The GitHub review, Schedule, memory MCP, and runtime Cordis guides live under docs/user/ and link those assets. The runnable Python SDK program and minimal overlay live under python/sdk/examples/.

The demo:acp and demo:cordis scripts are absent. ACP starts through dsh --profile acp; the Cordis guide starts dsh web with its explicit overlay. demo:ptc remains as a thin wrapper over dsh --profile headless with DSH_TOOLS_MODE=ptc.

Alternatives considered

Keep an examples workspace only for module resolution. Rejected: a resolver manifest containing the union of unrelated test and guide dependencies hides ownership and lets an arbitrary leaf behave like an application package.

Move every file under the CLI app. Rejected: package-specific test compositions evolve with their package, while user instructions belong in the published guide hierarchy and Python examples belong with the SDK.

Keep compatibility demo commands. Rejected: the named profiles and explicit overlays already expose the supported launches, and compatibility wrappers would preserve a second application vocabulary.

Consequences

Paths identify ownership without consulting a verdict table. CLI profile tests resolve from one application manifest; package tests carry their own fixtures; shipped optional overlays are installable with the CLI package; user guides appear in website navigation; the Python example sits beside its SDK. Removing a guide or test no longer changes a global dependency umbrella.

中文

问题

顶层 examples/ 树混合了四种互不相同的角色:重复的应用组合、跨包 profile 测试、包专属 Loader fixture,以及可运行的用户指南。它的 umbrella workspace manifest 主要用于让任意嵌套 Cordis 文件解析包,因此测试与文档位置决定了依赖解析,也让不受支持的 demo launcher 看起来像产品接口。

决策

仓库不存在顶层 examples/ 树。具名 dsh profile 是唯一的 Node 应用组合。跨包 ACP、headless 与 SDK profile 测试位于 apps/cli/tests/profiles/;包专属 Loader 配置与 driver 位于该包的 tests/fixtures/。录制会话测试继续位于顶层 snapshots/,非会话预期输出继续归属方本地保存。

可选用户 overlay 作为交付资产位于 apps/cli/config/examples/,其中的裸插件名通过 CLI 应用 manifest 解析。GitHub 评审、Schedule、记忆 MCP 与运行时 Cordis 指南位于 docs/user/ 并链接这些资产。可运行的 Python SDK 程序与极简 overlay 位于 python/sdk/examples/。

仓库不存在 demo:acp 与 demo:cordis 脚本。ACP 通过 dsh --profile acp 启动;Cordis 指南使用显式 overlay 启动 dsh web。demo:ptc 继续作为薄 wrapper,以 DSH_TOOLS_MODE=ptc 运行 dsh --profile headless。

考虑过的替代方案

只为模块解析保留 examples workspace。 已否决:包含无关测试与指南依赖并集的 resolver manifest 会隐藏所有权,并让任意 leaf 表现得像应用包。

把所有文件都移到 CLI 应用下。 已否决:包专属测试组合随对应包演进,用户说明属于发布指南层级,Python 示例属于 SDK。

保留兼容 demo 命令。 已否决:具名 profile 与显式 overlay 已经提供受支持的启动方式;兼容 wrapper 会保留第二套应用词汇。

后果

路径本身即可表达所有权,无需查阅裁决表。CLI profile 测试从单一应用 manifest 解析;包测试携带自己的 fixture;交付的可选 overlay 随 CLI 包安装;用户指南进入网站导航;Python 示例位于 SDK 旁。删除指南或测试不再改变全局依赖 umbrella。