MessageWeave/docs
anonsaber 633b41394c docs: 回答 hoststack.yaml 的来历与官方做法,补上命令字段不回写的证据
回答用户追问「这个文件哪里来的、官方推荐怎么做」。git 考古 + agent 源码两条路:

来历:a571033 自己手写的(2026-09-25),不是 HostStack 生成的。agent 镜像里既没有
init 类命令也没有内嵌模板 YAML(find 全仓 0 个 yaml 文件),只负责在仓库根读取
hoststack.yaml 或 hoststack.yml。所以"官方推荐怎么写"没有标准模板可抄,只有 schema。

官方做法:源码自己的定位是 Infrastructure-as-Code——
  "hoststack.yaml is Infrastructure-as-Code: when the repo declares a command,
   it wins over whatever happens to be cached on the services row"

新证据,把"UI 更方便管理"这个前提彻底否掉:agent 里只有两个 YAML->DB 回写事件
(yaml_port_declared、yaml_disk_declared),**命令字段没有**。注释原文明说
"the two that need to reach the services row have their own handled frames"。
所以每次部署都是拿 YAML 临时覆盖 services 行里的旧值,DB 里永远是过期的
./target/release/app。port 与 disk 要回写是因为 autoscaling 和 sleep-wake 直接
读那行;命令只有部署路径自己读,不值得持久化。

结论:控制台对命令字段永远是过期缓存,不存在"以 UI 为准"的稳态。
要删 hoststack.yaml,必须先改控制台那三条命令,文档里已有此前提。

audit_paths.py:hoststack.yml 加入 CONVENTIONAL allowlist——它是 yaml-parser
实际接受的第二种文件名,与已在白名单里的 docker-compose.yml 同类。

验证:GATE-DOCS PASS 6/6(PATH AUDIT 378 path-refs / 0)。
2026-09-29 12:25:08 +08:00
..
charter.md docs+tooling: no document may name a path that does not exist 2026-09-29 09:28:29 +08:00
deployment.md docs: 回答 hoststack.yaml 的来历与官方做法,补上命令字段不回写的证据 2026-09-29 12:25:08 +08:00
design.md docs+build: Dockerfile 降级为仅本地开发用,并记录 hoststack.yaml 保留/移除决策 2026-09-29 12:22:00 +08:00
reference.md docs: 修正 6 处代码行号锚点漂移,补 1 处缺失锚点 2026-09-29 10:14:03 +08:00
retired.md build+docs: 镜像内置只读诊断工具,清理 Dockerfile 的死 ENV 与文档过期表述 2026-09-29 11:24:13 +08:00
roadmap.md docs: bump verification baselines to b2dbe7c 2026-09-29 02:24:17 +08:00