用途:为 AI 辅助工作补回人类推理过程——记录做了什么决策、放弃了哪些方案、牺牲了什么,以及失败方法与返工教训。适用于工作流刚做出决策或遇到失败/返工/阻塞时,也用于构建或校验写入日志的消费端钩子。不适合用于项目初始化时搭建文件(属于 attune:project-init),也不适合记录需要编号 ADR 的完整架构决策,此时应在日志条目中引用其编号。
主要能力:两个与代码同目录的追加式日志 docs/tradeoffs.md 和 docs/lessons-learned.md,各含顶部 ## Active index 与底部 ## Archive。条目只追加、不编辑删除,仅状态可变;推翻旧决策时新增条目并把旧条目状态改为 superseded-by: <新ID>,双向链接;使用稳定 ID(TR-001、LL-001);每条回链 PR、commit 或 issue。状态流:权衡为 proposed -> accepted ->(superseded-by 或 deprecated),教训为 open -> actioned -> closed。
使用方式:先依据当前阶段上下文起草条目并展示给人工确认或编辑,再追加;权衡起始状态 proposed,教训起始 open,不可跳过确认自动写。CLI 辅助脚本:python3 ${LEYLINE}/scripts/journal_append.py <tradeoffs|lessons> --project-root <repo-root> --title "<short title>" [--phase <phase>] [--status <status>] [--field key=value ...] [--json '<full field object>'] [--supersedes TR-NNN] [--dry-run]。脚本自动分配 ID、渲染模板、插入到 ## Archive 之上、更新索引,并在 --supersedes 时翻转旧条状态并加回链;重复追加为无操作。字段:权衡含 title(必填)、context、drivers、options(含 name/pros/cons/chosen)、decision、consequences_positive、consequences_negative、phase、deciders、links,列表字段建议用 --json;教训含 title(必填)、what_happened、what_went_well、what_didnt_work、root_cause、action、category、owner、phase、links。status 与 date 自动设置可覆盖。
限制:属于约定与辅助而非强制运行时依赖;leyline 缺失时消费端优雅降级,从文件内 HTML 注释的 ENTRY TEMPLATE 复制条目、手工分配下一个顺序 ID 并手动补索引行。该依赖字段仅为市场元数据,未提供安装命令等更多细节。