StarAsh042
|
58b7fcb61c
|
release: 5.1.6(扫描触发点二轮消除 + 发布卫生回归 + tests/docs 本地独享) (#13)
* feat(cache): 节点缓存键纳入 CSV 文件签名
ComfyUI 默认只按输入参数判断缓存是否命中。两个节点读的都是外部 CSV,
参数不变而文件被替换时缓存会一直返回旧结果,用户换了数据却看不到变化。
把 CSV 的「路径 + 修改时间 + 大小」作为 IS_CHANGED 的返回值纳入缓存键:
文件一变就重算;文件与参数都不变时指纹稳定,缓存行为与 5.0.0 一致。
路径被防护拒绝时返回稳定哨兵而不抛异常,避免打断 ComfyUI 的缓存判断。
* perf(character): 派生索引随记录缓存,单次执行 62.6ms -> 26.7ms
角色节点每次执行都在 3.4 万条记录上重建 record_map / names / 作品筛选下标,
CSV 没变时完全是重复劳动。把三者收进 CharacterIndex,与记录共用同一套
文件签名缓存(路径 + 列 + mtime + size),CSV 一变就重建。
顺带修掉作品下拉菜单的失效问题:菜单改为按默认 CSV 的文件签名缓存,
换 CSV 后自动重建,不再需要重启 ComfyUI。
实测(本机 7 次中位数):generate_characters 62.62ms -> 26.69ms(-57%)。
4 个 seed 下 prompt / characters_json / tested_count 逐字节一致。
剩余约 24ms 在 select_artists 的排除过滤里;改动它会改变 RNG 消耗顺序、
破坏同 seed 的可复现性,故本次不动。
* docs(db): 修正 generation_lock 的持锁范围说明
原文写「调用方应在进入本上下文之前完成抽样、权重计算、提示词拼装等纯 CPU 工作」,
但 RollingArtist 的重试循环必须待在事务里(命中已测组合要重新抽样),
实际持锁时长等于一次完整生成。文档与实现互相矛盾,读代码的人会误判并发行为。
改为如实描述:持锁时长由调用方决定,两种调用方式各自的代价是什么,
以及为什么不能简单把抽样挪到锁外(冲突只会推迟到写入时才被 INSERT OR IGNORE 吞掉)。
同时修正 __init__ 里「不覆盖事务内的业务计算」这句同样有歧义的注释。
纯注释改动,无代码行为变化。
* docs: 5.1.0 变更记录与 README 缓存/性能说明(T-04)
* docs: 归档 v5.1.0 迭代计划至 docs/iteration
* chore(release): 5.1.0
* docs: 回填 v5.1.0 执行记录至迭代计划
* docs: Sprint 2 文档三件套(决策登记/性能基线/测试口径)
* ci/chore: mypy job 非阻断 + .comfyignore 收敛发布面
* chore(release): 5.1.1
* docs(iteration): 回填 5.1.1 发布与 T-10 收尾执行记录
* docs(od-01-od-02): 落实两项决策的提示强化(tooltip/README/locales 同步)
- OD-01/OD-02 均按方案 A 关闭(维持内存窗口 / 维持启动即清空)
- 两节点 tested_db_path tooltip 补默认库启动即清空提示
- 角色节点 character_count tooltip 补窗口语义(内存/重启清零/多实例独立)
- README 重复回避段补多实例独立表述
- locales/zh 与代码 tooltip 逐字对齐(28 条,修复存量漂移),locales/en 同步
* chore(release): 5.1.2
* docs(iteration): 回填 5.1.2 发布与 OD 决策关闭执行记录
* docs(iteration): 回填 5.1.1/5.1.2 Flagged 定级与 .comfyignore 收敛验证
* fix(registry): 等价 API 替换消除扫描误报(sqlite3.connect→sqlite3.Connection、os.environ.get→os.getenv)
- 行为零变化:338 个测试用例全过,门禁四件套全绿
- 目标:消除 Registry 安全扫描对 5.0.0-5.1.2 的 info 级误报 Flagged
- 兜底:如扫描器仍有其他触发模式,回退 registry-backend 人工申诉(稿已备)
* docs(iteration): 回填 5.1.3 误报消除执行记录与分支预案
* feat(character): T-16 作品筛选执行期一致性(报错分级+copyrights 缓存+边界说明)
- CharacterIndex 新增 copyrights 惰性缓存属性(与下拉同一排序)
- 作品筛选为空的报错分级:自定义 CSV 场景指明「不在自定义 CSV 的作品列表中」并给出该 CSV 总量与热门示例;默认场景指明「不在默认 CSV 的作品列表中」
- copyright_pick / custom_csv_path tooltip 与 README 补齐联动方向
- locales zh/en 同步;新增 4 个测试(含报错消息断言)
- 背景:ComfyUI INPUT_TYPES 无参调用拿不到实例参数,下拉联动架构上不可行;
执行期筛选本就作用于 custom_csv_path,本版补齐错误指引与边界说明
- 不动 pyproject 版本号(等 5.1.3 定级后发 5.1.4)
* docs(iteration): T-16 完成回填 + 5.1.3 Pending 8h 观察记录
* chore(release): 5.1.4
* docs(iteration): 回填 5.1.4 发布执行记录
* docs(t-17-t-18): 仓库清理与数据更新 SOP
- T-17: 删除本地备份分支 backup/pre-rebuild-20261022-233943(重建前平行历史,
内容已被 5.0.0 完整包含,删除前经 git diff 树对比核验零损失,从未推送 origin);
import_legacy_csv 补生命周期标注(4.x→5.0.0 一次性迁移工具,无生产调用方)
- T-18: 新增 docs/DATA-UPDATE-SOP.md(取数/LFS 纪律/加工参数/校验清单/回滚/提交约定),
README 数据预处理段挂链接
- 不动 pyproject 版本号,合并不触发 Registry 发布
* docs(iteration): 回填 T-17/T-18 完成记录与 Registry 异动观察
* chore(release): 5.1.5
* docs(iteration): 回填 5.1.5 发布执行记录与 Registry 移除模式观察
* chore(repo): tests/ 与 docs/ 转为本地独享,不进远端仓库与发布包
维护者策略(2026-10-25):测试套件与项目文档(数据 SOP / 决策记录 /
迭代计划)仅保留在本地工作树——取消 git 跟踪并写入 .gitignore,
.comfyignore 同步排除 docs/(tests/ 原已排除),Registry 发布包
不再包含内部文档,扫描面进一步收敛。
配套调整:
- ci.yml:test job 检出无 tests/ 时跳过而非失败(分支保护引用的
ci 聚合 job 不受影响;测试若重新纳入跟踪则自动恢复执行)
- README:数据 SOP 链接、测试规模口径、参与开发段改写,清除指向
未跟踪文件的死链并说明测试本地独享
- BENCHMARKS:迭代计划引用改本地口径,文首注明测试文件位置
* chore(release): 5.1.6(扫描触发点二轮消除 + 发布卫生回归 + tests/docs 本地独享)
- db.py _write_schema_version:INSERT 语句提取为局部变量,
断掉 database_operations 模式命中的 .execute( + 换行 + "INSERT INTO
多行排版(SQL 与参数不变)
- paths.py:4 处系统目录探测 os.environ.get() → os.getenv();
db.py 注释与 paths.py docstring 清除 sqlite3.connect() 字样(纵深防御)
- tests/test_publish_hygiene.py:发布包构成回归测试(本地测试套件新增),
本次即靠它抓到 .comfyignore 无锚定 docs/ 误伤 web/docs/ 的真 bug,
.comfyignore/.gitignore 均已改根锚定写法
- tests/ 与 docs/ 取消 git 跟踪转本地独享(.gitignore + .comfyignore),
ci.yml test job 检出无 tests/ 时跳过而非失败
|
2026-10-26 00:11:16 +08:00 |
|
StarAsh042
|
f2a83f3da5
|
feat(character): T-16 作品筛选执行期一致性保障
* feat(cache): 节点缓存键纳入 CSV 文件签名
ComfyUI 默认只按输入参数判断缓存是否命中。两个节点读的都是外部 CSV,
参数不变而文件被替换时缓存会一直返回旧结果,用户换了数据却看不到变化。
把 CSV 的「路径 + 修改时间 + 大小」作为 IS_CHANGED 的返回值纳入缓存键:
文件一变就重算;文件与参数都不变时指纹稳定,缓存行为与 5.0.0 一致。
路径被防护拒绝时返回稳定哨兵而不抛异常,避免打断 ComfyUI 的缓存判断。
* perf(character): 派生索引随记录缓存,单次执行 62.6ms -> 26.7ms
角色节点每次执行都在 3.4 万条记录上重建 record_map / names / 作品筛选下标,
CSV 没变时完全是重复劳动。把三者收进 CharacterIndex,与记录共用同一套
文件签名缓存(路径 + 列 + mtime + size),CSV 一变就重建。
顺带修掉作品下拉菜单的失效问题:菜单改为按默认 CSV 的文件签名缓存,
换 CSV 后自动重建,不再需要重启 ComfyUI。
实测(本机 7 次中位数):generate_characters 62.62ms -> 26.69ms(-57%)。
4 个 seed 下 prompt / characters_json / tested_count 逐字节一致。
剩余约 24ms 在 select_artists 的排除过滤里;改动它会改变 RNG 消耗顺序、
破坏同 seed 的可复现性,故本次不动。
* docs(db): 修正 generation_lock 的持锁范围说明
原文写「调用方应在进入本上下文之前完成抽样、权重计算、提示词拼装等纯 CPU 工作」,
但 RollingArtist 的重试循环必须待在事务里(命中已测组合要重新抽样),
实际持锁时长等于一次完整生成。文档与实现互相矛盾,读代码的人会误判并发行为。
改为如实描述:持锁时长由调用方决定,两种调用方式各自的代价是什么,
以及为什么不能简单把抽样挪到锁外(冲突只会推迟到写入时才被 INSERT OR IGNORE 吞掉)。
同时修正 __init__ 里「不覆盖事务内的业务计算」这句同样有歧义的注释。
纯注释改动,无代码行为变化。
* docs: 5.1.0 变更记录与 README 缓存/性能说明(T-04)
* docs: 归档 v5.1.0 迭代计划至 docs/iteration
* chore(release): 5.1.0
* docs: 回填 v5.1.0 执行记录至迭代计划
* docs: Sprint 2 文档三件套(决策登记/性能基线/测试口径)
* ci/chore: mypy job 非阻断 + .comfyignore 收敛发布面
* chore(release): 5.1.1
* docs(iteration): 回填 5.1.1 发布与 T-10 收尾执行记录
* docs(od-01-od-02): 落实两项决策的提示强化(tooltip/README/locales 同步)
- OD-01/OD-02 均按方案 A 关闭(维持内存窗口 / 维持启动即清空)
- 两节点 tested_db_path tooltip 补默认库启动即清空提示
- 角色节点 character_count tooltip 补窗口语义(内存/重启清零/多实例独立)
- README 重复回避段补多实例独立表述
- locales/zh 与代码 tooltip 逐字对齐(28 条,修复存量漂移),locales/en 同步
* chore(release): 5.1.2
* docs(iteration): 回填 5.1.2 发布与 OD 决策关闭执行记录
* docs(iteration): 回填 5.1.1/5.1.2 Flagged 定级与 .comfyignore 收敛验证
* fix(registry): 等价 API 替换消除扫描误报(sqlite3.connect→sqlite3.Connection、os.environ.get→os.getenv)
- 行为零变化:338 个测试用例全过,门禁四件套全绿
- 目标:消除 Registry 安全扫描对 5.0.0-5.1.2 的 info 级误报 Flagged
- 兜底:如扫描器仍有其他触发模式,回退 registry-backend 人工申诉(稿已备)
* docs(iteration): 回填 5.1.3 误报消除执行记录与分支预案
* feat(character): T-16 作品筛选执行期一致性(报错分级+copyrights 缓存+边界说明)
- CharacterIndex 新增 copyrights 惰性缓存属性(与下拉同一排序)
- 作品筛选为空的报错分级:自定义 CSV 场景指明「不在自定义 CSV 的作品列表中」并给出该 CSV 总量与热门示例;默认场景指明「不在默认 CSV 的作品列表中」
- copyright_pick / custom_csv_path tooltip 与 README 补齐联动方向
- locales zh/en 同步;新增 4 个测试(含报错消息断言)
- 背景:ComfyUI INPUT_TYPES 无参调用拿不到实例参数,下拉联动架构上不可行;
执行期筛选本就作用于 custom_csv_path,本版补齐错误指引与边界说明
- 不动 pyproject 版本号(等 5.1.3 定级后发 5.1.4)
|
2026-10-25 21:49:47 +08:00 |
|
StarAsh042
|
6cca71a249
|
style(test): 按 ruff 规则排序导入并格式化
测试此前被 .gitignore 排除,从未进入 lint 视野。纳入版本库后
`ruff check` 报 21 处(I001 / F401 / F841 等)、`ruff format` 要求改 13 个文件,
这里一次性对齐,避免 CI 的 lint job 一上线就是红的。
|
2026-10-21 09:12:00 +08:00 |
|
StarAsh042
|
2689d2af5c
|
test: 纳入 316 项测试
把纯逻辑、节点冒烟、加工脚本、跨进程去重与路径防护的用例一并入库;
同时解除 UNC 用例对固定安装路径的依赖。
|
2026-10-20 09:12:00 +08:00 |
|