delivery-handoff-2026-06-02.md 10.4 KB

本次交付包追加更新(2026-06-02 15:45 UTC)

交付结论

当前最新里程碑已经从“知道 hard-case 有缺口”推进到 知道哪套历史基线最值得作为下一轮优化起点

  • 远程基线当前为:d4961b1(更新前)
  • v6 是当前总体最优基线:top1=0.65, topk=0.95
  • v5humming_like 上更强:top1=0.5
  • 因此下一轮不该盲改,而应以 v6 为主基线,对比吸收 v5 的 hard-case 优势

当前最新事实

hard-case baseline sweep

  • 观测时间:2026-06-02 15:45:18 UTC
  • 汇总:/tmp/synth_v2_baseline_sweep/summary.json
  • 结果:
    • v3: overall top1=0.6, topk=0.75; humming_like=0.0, confused=0.25
    • v4: overall top1=0.4, topk=0.8; humming_like=0.0, confused=0.0
    • v5: overall top1=0.6, topk=0.9; humming_like=0.5, confused=0.0
    • v6: overall top1=0.65, topk=0.95; humming_like=0.25, confused=0.25

当前判断

  • v6 适合作为下一轮总体优化主基线。
  • v5 适合作为 humming_like 对照基线。
  • 下一阶段最值得做的是:
    1. 审计 v5v6 的配置/数据/切片差异;
    2. v5humming_like 优势迁移到 v6
    3. 再用真实路径 clean + synthetic hard-case 双轨复测。

本次交付包追加更新(2026-06-02 15:43 UTC)

交付结论

当前最新里程碑已经从“real-path clean 闭环跑通”推进到 hard-case 短板已被明确量化

  • 远程基线当前为:81704ac(更新前)
  • real-path FMA smoke 已证明 clean 闭环可跑通
  • synthetic hard-case smoke 已证明当前主要短板在 humming_like / confused 的 top1
  • 因此下一阶段不应重复 clean smoke,而应聚焦 hard-case 鲁棒性优化

当前最新事实

hard-case smoke 结果

  • 观测时间:2026-06-02 15:43:17 UTC
  • 组合:data/synthetic_v2 + data/models_v6/best_model.pt + data/index_v6/reference
  • 结果文件:/tmp/synthetic_v2_eval_v6_top16.json
  • 评测结果:
    • num_queries=16
    • top1=0.6875
    • topk=1.0
    • clean: n=7, top1=1.0, topk=1.0
    • augmented: n=4, top1=0.75, topk=1.0
    • humming_like: n=4, top1=0.25, topk=1.0
    • confused: n=1, top1=0.0, topk=1.0

关键解释

  • real-path FMA external smoke manifest 目前只有 clean query:
    • external test = 1613 clean
    • rerun overlap test = 35 clean
  • 当前仓库里能提供 humming_like / confused 的现成评测集是 data/synthetic_v2

当前判断

  • 真实路径闭环已经足够证明工程链可运行。
  • 下一阶段的收益最高点已经收敛到:
    1. humming_like top1 提升;
    2. confused top1 提升;
    3. 将 hard-case 生成/标注引入真实开放数据评测链。

本次交付包追加更新(2026-06-02 15:40 UTC)

交付结论

当前最新里程碑已经从“reference index 完成”推进到 fixed real-path 200-ref rerun 已拿到首份显式 evaluate 指标

  • 远程基线当前为:9371e94(更新前)
  • real-path 200-ref index 已完整完成
  • 显式 evaluate.py smoke 已完成
  • 当前首份结果:top1=0.8571, topk=1.0, num_queries=35
  • 因此主线已从“索引能否跑通”进入“评测质量与 hard case 扩展”阶段

当前最新事实

evaluate smoke 路径

  • 观测时间:2026-06-02 15:40:30 UTC
  • 结果文件:/tmp/fma_realpath_small_rerun_eval/eval_top50.json
  • 评测结果:
    • split=test
    • num_queries=35
    • top1=0.8571
    • topk=1.0
    • by_type.clean: n=35, top1=0.8571, topk=1.0
  • query 数来源说明:
    • 200-ref catalog 与现有 external smoke test overlap = 235 items
    • 其中非 reference query = 35
    • 所以 --max-queries 50 实际只评到 35

当前判断

  • 当前已经拥有一条完整可复用的真实路径 smoke 证据链: chromaprint complete -> reference complete -> evaluate complete
  • 下一阶段更值得做的是:
    1. 扩大评测 query 数与 reference 规模;
    2. 引入 confused / humming_like / hard negative 评测。

本次交付包追加更新(2026-06-02 15:35 UTC)

交付结论

当前最新里程碑已经从“进入 reference 阶段”推进到 fixed real-path 200-ref rerun 已完整产出最终 embedding/reference index

  • 远程基线当前为:41c4d7c(更新前)
  • chromaprint 已完整完成:200/200
  • reference 已完整完成:200/200
  • 最终产物 reference_embs.npy / reference_ids.npy 已落盘
  • 因此主问题已从“能否穿过建索引核心阶段”转向“后续 evaluate / identify 链如何衔接验证”

当前最新事实

fixed real-path rerun 路径

  • 观测时间:2026-06-02 15:35:19 UTC
  • 输出目录:/tmp/fma_realpath_small_rerun_index2
  • chromaprint_progress.json
    • status=complete
    • refs_done=200 / 200
    • hashes=57577
    • postings=187446
    • skipped_refs=0
  • reference_progress.json
    • status=complete
    • refs_done=200 / 200
    • windows_done=2068
    • elapsed_sec=410.046
    • embedding_shape=[2068, 192]
    • skipped_refs=0
  • 当前已出现最终产物:
    • reference_embs.npy
    • reference_ids.npy

当前判断

  • 这条 fixed rerun 已经给出强证据:flush=True 与坏音频 skip tolerance 修复后,真实路径样本可以完整跑完两段核心建索引流程。
  • 下一阶段应集中验证:
    1. 是否自动衔接到 evaluate / identify;
    2. 若没有,补一轮显式 evaluate smoke。

本次交付包追加更新(2026-06-02 15:29 UTC)

交付结论

当前最新里程碑不是新的失败,而是 fixed real-path 200-ref rerun 已明确跨入 reference/embedding 阶段

  • 远程基线当前为:707449b
  • chromaprint 已完整完成:200/200
  • reference 阶段已写出首个 checkpoint:25/200
  • 已出现 reference_progress.json 与 partial numpy 产物
  • 因此下一 session 不应再把这条 rerun 当作“停在 chromaprint 无下游文件”的旧状态

当前最新事实

fixed real-path rerun 路径

  • 前台 session:19709
  • 观测时间:2026-06-02 15:29:17 UTC
  • 输出目录:/tmp/fma_realpath_small_rerun_index2
  • chromaprint_progress.json
    • status=complete
    • refs_done=200 / 200
    • hashes=57577
    • postings=187446
    • skipped_refs=0
  • reference_progress.json
    • status=building
    • refs_done=25 / 200
    • windows_done=256
    • elapsed_sec=52.567
    • eta_sec=367.967
    • skipped_refs=0
  • 当前已出现:
    • reference_embs.partial.npy
    • reference_ids.partial.npy

当前判断

  • flush=True 与坏音频 skip tolerance 修复之后,真实路径 rerun 已穿过 chromaprint -> reference 阶段边界。
  • 当前最高优先级不再是重复证明 chromaprint 完成,而是继续盯 reference 阶段是否:
    1. 完整落盘 reference_embs.npy / reference_ids.npy;或
    2. 暴露新的明确 traceback / failure evidence。

建议的新 session 接管顺序

  1. 先看 ./session-handoff.md 顶部新快照
  2. 读取前台 session 19709 最新输出
  3. 检查 /tmp/fma_realpath_small_rerun_index2/ 是否已从 partial 转为 final 产物

Delivery Handoff / 2026-06-02

本次交付包(2026-06-02 15:09 UTC)

交付结论

这次新增的关键交付,不再是单纯的进度观察,而是一个新的异常状态检查点

  • 远程基线已推进到:cdf33bb
  • observable chromaprint smoke 与 legacy 全量 FMA build-index 进程都已退出
  • 但两者都没有进入 reference_* / evaluate.py
  • 因此下一 session 的首要任务,已从“盯进度”切换为“排查 build-index 异常退出”

当前最新事实

observable 路径

  • 原进程:PID=431703
  • 最后观测时间:2026-06-02 15:09:19 UTC
  • 当前 ps -p 431703:无存活进程
  • 当前目录仅有:
    • chromaprint.pkl
    • chromaprint_progress.json
  • 最后 progress 状态:
    • status=building
    • refs_done=4420 / 8000
    • elapsed_sec=3964.861
    • hashes=357373
    • postings=3774363
  • 当前仍未出现
    • reference_progress.json
    • reference_embs.partial.npy
    • reference_ids.partial.npy
    • reference_embs.npy
    • reference_ids.npy
    • evaluate.py

legacy 全量 FMA 路径

  • 原进程:PID=424691
  • 当前 ps -p 424691:无存活进程
  • 当前目录仍只有:
    • /tmp/fma_real_smoke_stopcheck/fma_index_smoke
  • 仍未看到 index artifact 或 evaluate.py

当前判断

  • 这不再是“CPU-only 长时间构建但仍在推进”的状态。
  • 现在更像是:build-index 在 chromaprint 阶段中途退出,但没有留下显式下游产物

已完成的低风险修复

  • 已把 run_demo.pychromaprint_matcher.pyecapa_embedder.py 的关键日志改为 flush=True
  • 极小样本 /tmp/chroma_repro_tiny12 已验证:失败时日志与 traceback 可实时落盘,不再保持 0 bytes
  • 这意味着下一 session 继续排查时,日志可作为一手证据,而不是黑箱。

已完成的坏音频容错修复

  • 已为 chromaprint/reference 两个建索引阶段增加单文件容错:坏 MP3 / 缺失音频会被记录并跳过。
  • 最小复现 /tmp/chroma_skip_repro 已验证:
    • RC=0
    • skip decode failure 日志可见
    • reference_embs.npy / reference_ids.npy 成功产出
    • progress 中记录 skipped_refs=1
  • 这说明:单个坏 MP3 不再拖垮整轮 build-index

新 session 接管顺序

  1. 先看 ./session-handoff.md
  2. 再看 ./changelist-2026-06-02.md
  3. 然后优先做 3 件事:
    1. 复盘 run_demo.py build-index 的退出路径与异常处理
    2. 检查是否存在未捕获 OOM / shell termination / silent failure
    3. 在更小样本上复现“chromaprint 中途退出但无后续文件”的行为

当前卡点

  1. 关键进程已经退出,但没有明确 traceback 留存。
  2. observable 与 legacy 两条路径都停在“没有 reference_* / 没有 evaluate.py”的中间态。
  3. 工作树仍有大量数据噪音,提交时必须只显式暂存文档/代码文件。

本次交付包含的关键文档

本次明确不提交

  • acr-engine/data/raw/*
  • acr-engine/data/external_smoke/*
  • /tmp/*
  • checkpoint / index artifacts
  • __pycache__