ADR 0024:记录用户元数据落在 catalog 记录字段,星标用保留 tag
状态:已接受 日期:2026-08-29 关联:ADR 0008(修订:catalog 为产物持久化);CONTEXT.md(记录备注 / 标签 / 星标)
背景
GUI 需要给轨道库记录提供用户备注与单级收藏星标。备选方案:
A. e2m2e 上游 catalog 新增
favorite布尔字段(最正规,跨仓 schema 变更)B. GUI 侧边车存储(localStorage / 独立 JSON,不动数据层)
C. 复用记录现有可写字段:
tags(字符串数组)+note(自由文本),写入口catalog_tag已存在
一个反直觉的事实促成本决策:记录的 tags/note 本就用户可编辑(记录详情面板),但面板标题叫"教学标注 (Tags & Note)",与 CONTEXT.md 画布层"标注"概念撞名,用户以为那是系统写死的内容——"添加注释"能力其实早已存在,缺的是术语与入口。历史界面名"教学标注"自本 ADR 起退役,UI 主术语改为"备注"。
决策
备注复用
note字段;UI 更名,并在项目树节点悬停显示备注摘要、右键菜单提供"编辑备注"直入编辑。星标 =
tags的保留值"★";树节点星形图标点击切换,"仅看星标"按 tags 前端过滤(查询摘要已带回 tags)。不加 GUI 侧边车,不新增上游字段。
理由
catalog_tag已可写,零上游改动;星标/备注随记录文件走(拷贝 catalog 目录给别人即在),与 ADR 0008"文件是事实来源、重启不丢"的库哲学一致。方案 B 会让元数据与记录分离——catalog 目录拷走或换机器后星标丢失,形成双轨数据。
方案 A 的正规性收益(独立布尔字段 + 后端查询)当前用不上:单级收藏前端过滤已够。
后果
tags中的"★"是保留值,用户普通标签不得占用(编辑界面应过滤)。若将来上游真加 favorite 字段,需一次性扫描全库记录迁移——机械但涉及每个记录文件重写,届时再议。
备注与星标仅适用于 catalog 记录;catalog 体系之外的产物(转移等 output/ 扫描项)无此能力。