## Before 日报任务说明写着从 `.claude/skills/config.json` 读取 `skills.twitter-fetcher.users`,但实际 config 缺字段。脚本能靠 `tmp/twitter_raw` 历史产物继续跑,最终只看到 `17` 个账号、`165` 条推文,除非人工追日志,否则很难知道名单不是来自 config。 ## After 运行入口先输出 roster preflight: ```json { "status": "fallback_ok", "config_has_roster": false, "roster_source": "tmp/twitter_raw/twitter_fetcher_2026-05-22.json", "reason": "fallback because config lacks skills.twitter-fetcher.users", "roster_count": 17, "stale_days": 1 } ``` 日报继续生成,但最终回执和 markdown 都带 `roster_source`。如果没有 config 且找不到可用成功 artifact,preflight 返回 `missing_config_no_fallback`,任务提前失败并提示补回 `skills.twitter-fetcher.users` 或指定 fallback 文件。