Capture the unexpected build-index exit so the next session starts from failure analysis
Constraint: Both observable and legacy build-index jobs exited without producing reference_* or evaluate artifacts Rejected: Keep treating the run as slow linear progress | no longer matches the fresh ps/pgrep evidence Confidence: high Scope-risk: narrow Directive: Start the next cycle with build-index exit-path diagnosis before launching more long runs Tested: Verified ps/pgrep show no active build/evaluate process; verified observable directory still only has chromaprint progress/cache files; reviewed updated handoff docs Not-tested: No root-cause reproduction or fix yet
Showing
5 changed files
with
109 additions
and
143 deletions
| ... | @@ -74,30 +74,24 @@ | ... | @@ -74,30 +74,24 @@ |
| 74 | 74 | ||
| 75 | ## 5.5 最新真实 FMA / chromaprint 运行态(2026-06-02) | 75 | ## 5.5 最新真实 FMA / chromaprint 运行态(2026-06-02) |
| 76 | 76 | ||
| 77 | ### 当前最新快照(14:25 UTC) | 77 | ### 当前最新快照(15:09 UTC) |
| 78 | 78 | ||
| 79 | - 远程同步基线:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99` | 79 | - 远程同步基线:`cdf33bb` |
| 80 | - 已推送完成: | 80 | - 当前已不是“进程仍在运行”的阶段,而是: |
| 81 | - chromaprint `_find_peaks()` 等价优化 | 81 | - observable `PID=431703` 已退出 |
| 82 | - chromaprint 建索引 observability | 82 | - legacy `PID=424691` 已退出 |
| 83 | - 新 session 的主要监控对象应切到: | 83 | - observable 当前只留下: |
| 84 | - `PID=431703` | ||
| 85 | - `/tmp/chroma_index_observable_smoke/chromaprint_progress.json` | ||
| 86 | - `/tmp/chroma_index_observable_smoke/chromaprint.pkl` | 84 | - `/tmp/chroma_index_observable_smoke/chromaprint.pkl` |
| 87 | - `2026-06-02 14:25:32 UTC` 证据: | 85 | - `/tmp/chroma_index_observable_smoke/chromaprint_progress.json` |
| 86 | - 最后进度停在: | ||
| 88 | - `status=building` | 87 | - `status=building` |
| 89 | - `refs_done=1740/8000` | 88 | - `refs_done=4420/8000` |
| 90 | - `elapsed_sec=1385.4` | 89 | - 当前仍未出现 `reference_*` 或 `evaluate.py`。 |
| 91 | - `eta_sec=4984.254` | 90 | - 因此下一轮工作重心必须切到:**排查 build-index 异常退出**,而不是继续把它当作纯线性慢任务。 |
| 92 | - `hashes=229127` | 91 | - 下一次值得提交的事件: |
| 93 | - `postings=1510952` | 92 | 1. 找到明确失败证据/退出原因 |
| 94 | - 当前尚未出现 `reference_*` 或 `evaluate.py`,因此**还不能输出最终 accuracy 结论**。 | 93 | 2. 成功小样本复现并补日志 |
| 95 | - 旧 `PID=424691` 真实 FMA 全量 build-index 进程仍在,但它是 observability 改动前启动的旧路径;不要把它当作新代码验证来源。 | 94 | 3. 修复后重新跑到 `reference_*` 或 `evaluate.py` |
| 96 | - 下一次值得提交的事件只应是: | ||
| 97 | 1. `chromaprint_progress.json status=complete` | ||
| 98 | 2. `reference_*` 文件出现 | ||
| 99 | 3. `evaluate.py` 启动 | ||
| 100 | 4. 或明确失败 | ||
| 101 | 95 | ||
| 102 | ## 6. 高风险注意事项 | 96 | ## 6. 高风险注意事项 |
| 103 | 97 | ... | ... |
| 1 | ## 2026-06-02 15:09 UTC / build-index unexpected exit checkpoint | ||
| 2 | |||
| 3 | - 新鲜证据:observable 与 legacy 两个 `build-index` 进程都已退出 | ||
| 4 | - `ps -p 431703` 与 `ps -p 424691` 均无存活进程 | ||
| 5 | - `pgrep -af 'run_demo.py build-index|evaluate.py ...'` 未发现接续进程 | ||
| 6 | - observable 目录仍只有: | ||
| 7 | - `chromaprint.pkl` | ||
| 8 | - `chromaprint_progress.json` | ||
| 9 | - `chromaprint_progress.json` 最后状态停在: | ||
| 10 | - `status=building` | ||
| 11 | - `refs_done=4420/8000` | ||
| 12 | - 当前仍未出现: | ||
| 13 | - `reference_*` | ||
| 14 | - `evaluate.py` | ||
| 15 | - 结论:当前已从“长时间线性推进”切换为“需要排查 build-index 异常退出”的新阶段 | ||
| 16 | |||
| 1 | ## 2026-06-02 14:25 UTC / restart-package handoff refresh | 17 | ## 2026-06-02 14:25 UTC / restart-package handoff refresh |
| 2 | 18 | ||
| 3 | - 交付基线刷新为:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99` | 19 | - 交付基线刷新为:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99` | ... | ... |
| 1 | # Changelist / 2026-06-02 | 1 | # Changelist / 2026-06-02 |
| 2 | 2 | ||
| 3 | ## 本次补充交付(2026-06-02 14:25 UTC) | 3 | ## 本次补充交付(2026-06-02 15:09 UTC) |
| 4 | 4 | ||
| 5 | ### 目标 | 5 | ### 目标 |
| 6 | 在当前长时间 `build-index` 尚未结束前,先把**可重启、可续跑、可判断阶段切换**的交付包固化下来。 | 6 | 把当前状态从“仍在稳定推进”升级为“已确认异常退出、需要排查”的交接包。 |
| 7 | 7 | ||
| 8 | ### 本次纳入交付的内容 | 8 | ### 本次纳入交付的内容 |
| 9 | 9 | ||
| 10 | | 类别 | 内容 | | 10 | | 类别 | 内容 | |
| 11 | |---|---| | 11 | |---|---| |
| 12 | | 代码 | chromaprint 峰值扫描等价优化;建索引进度可观测化 | | 12 | | 证据 | `PID=431703` 与 `PID=424691` 均已退出 | |
| 13 | | 证据 | `/tmp/chroma_index_observable_smoke/chromaprint_progress.json` live checkpoint | | 13 | | 状态 | observable 目录仍停在 `chromaprint_progress.json + chromaprint.pkl` | |
| 14 | | 风险 | 没有 `reference_*`,没有 `evaluate.py`,没有明确 traceback | | ||
| 14 | | 文档 | `CHANGELOG`、`changelist`、`delivery handoff`、`session handoff`、`AGENT memory` | | 15 | | 文档 | `CHANGELOG`、`changelist`、`delivery handoff`、`session handoff`、`AGENT memory` | |
| 15 | | 交接 | 明确旧 FMA 进程与新 observable 进程的区别 | | ||
| 16 | 16 | ||
| 17 | ### 文件级变更 | 17 | ### 文件级变更 |
| 18 | 18 | ||
| 19 | | 文件 | 说明 | | 19 | | 文件 | 说明 | |
| 20 | |---|---| | 20 | |---|---| |
| 21 | | [./CHANGELOG.md](./CHANGELOG.md) | 补记本次 restart package 交付 | | 21 | | [./CHANGELOG.md](./CHANGELOG.md) | 补记 build-index 异常退出 checkpoint | |
| 22 | | [./delivery-handoff-2026-06-02.md](./delivery-handoff-2026-06-02.md) | 重写为当前最短接管包 | | 22 | | [./delivery-handoff-2026-06-02.md](./delivery-handoff-2026-06-02.md) | 顶部改写为异常排查接管包 | |
| 23 | | [./session-handoff.md](./session-handoff.md) | 顶部快照切到 `bc6d07a + observable chromaprint` | | 23 | | [./session-handoff.md](./session-handoff.md) | 顶部快照切到“进程已退出、无下游产物” | |
| 24 | | [../AGENT.md](../AGENT.md) | 更新长期记忆,避免新 session 误判当前阶段 | | 24 | | [../AGENT.md](../AGENT.md) | 更新长期记忆,避免新 session 误判为仍在运行 | |
| 25 | 25 | ||
| 26 | ### 当前最重要的 fresh evidence | 26 | ### 当前最重要的 fresh evidence |
| 27 | 27 | ||
| 28 | - 远程基线:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99` | 28 | - 观测时间:`2026-06-02 15:09:19 UTC` |
| 29 | - 观测时间:`2026-06-02 14:25:32 UTC` | 29 | - `ps -p 431703`:无存活进程 |
| 30 | - 观测对象:`/tmp/chroma_index_observable_smoke/chromaprint_progress.json` | 30 | - `ps -p 424691`:无存活进程 |
| 31 | - 状态: | 31 | - `pgrep -af 'run_demo.py build-index|evaluate.py ...'`:未发现接续进程 |
| 32 | - observable 目录仅有: | ||
| 33 | - `chromaprint.pkl` | ||
| 34 | - `chromaprint_progress.json` | ||
| 35 | - 末次 progress: | ||
| 32 | - `status=building` | 36 | - `status=building` |
| 33 | - `refs_done=1740/8000` | 37 | - `refs_done=4420/8000` |
| 34 | - `elapsed_sec=1385.4` | 38 | - 未出现: |
| 35 | - `eta_sec=4984.254` | 39 | - `reference_*` |
| 36 | - `hashes=229127` | 40 | - `evaluate.py` |
| 37 | - `postings=1510952` | ||
| 38 | - 已确认:新代码路径会持续写出 `chromaprint_progress.json` 与 `chromaprint.pkl` | ||
| 39 | - 未确认:`reference_*`、`evaluate.py`、最终 report | ||
| 40 | 41 | ||
| 41 | ### 重要决策 | 42 | ### 重要决策 |
| 42 | 43 | ||
| 43 | 1. 现在**不再**重复记录每一次 `refs_done` 的线性增长。 | 44 | 1. 当前已不应继续把它描述成“仅仅线性慢”。 |
| 44 | 2. 下一个值得再次提交的节点只应是: | 45 | 2. 下一轮工作应转向 **build-index 异常退出排查**。 |
| 45 | - `chromaprint` 完成 | 46 | 3. 新提交已经有意义,因为状态从“运行中”变成了“已退出且无下游产物”。 |
| 46 | - `reference_*` 文件出现 | ||
| 47 | - `evaluate.py` 启动 | ||
| 48 | - 或明确失败 | ||
| 49 | 3. 旧的 `PID=424691` 只作为背景运行态,不作为新 observability 改动验证。 | ||
| 50 | |||
| 51 | ### 重启后的直接待办 | ||
| 52 | |||
| 53 | 1. 查看 [./session-handoff.md](./session-handoff.md) | ||
| 54 | 2. 检查 `PID=431703` 是否仍在运行 | ||
| 55 | 3. 监控 `/tmp/chroma_index_observable_smoke/` | ||
| 56 | 4. 出现阶段切换后,再回写文档并提交推送 | ... | ... |
| 1 | # Delivery Handoff / 2026-06-02 | 1 | # Delivery Handoff / 2026-06-02 |
| 2 | 2 | ||
| 3 | ## 本次交付包(2026-06-02 14:25 UTC) | 3 | ## 本次交付包(2026-06-02 15:09 UTC) |
| 4 | 4 | ||
| 5 | ### 交付结论 | 5 | ### 交付结论 |
| 6 | 6 | ||
| 7 | 这次应交付的是一套**可直接续跑的工程包**,而不是最终评测分数: | 7 | 这次新增的关键交付,不再是单纯的进度观察,而是一个**新的异常状态检查点**: |
| 8 | - 远程基线已同步到:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99` | 8 | - 远程基线已推进到:`cdf33bb` |
| 9 | - chromaprint 热点优化与可观测性增强已提交并推送 | 9 | - observable chromaprint smoke 与 legacy 全量 FMA `build-index` 进程都已退出 |
| 10 | - 当前最重要的真实运行证据来自 **可观测 FMA build-index smoke** | 10 | - 但两者都**没有**进入 `reference_*` / `evaluate.py` |
| 11 | - 还没有进入 `evaluate.py`,因此**暂不输出最终准确率结论** | 11 | - 因此下一 session 的首要任务,已从“盯进度”切换为“排查 `build-index` 异常退出” |
| 12 | 12 | ||
| 13 | ### 当前最新事实 | 13 | ### 当前最新事实 |
| 14 | 14 | ||
| 15 | #### 已交付代码能力 | 15 | #### observable 路径 |
| 16 | - `acr-engine/src/engines/chromaprint_matcher.py` | 16 | - 原进程:`PID=431703` |
| 17 | - `_find_peaks()` 改为 `sliding_window_view` 等价实现 | 17 | - 最后观测时间:`2026-06-02 15:09:19 UTC` |
| 18 | - 保持 hash 输出一致的前提下,单样本约 `2.02x` 加速 | 18 | - 当前 `ps -p 431703`:无存活进程 |
| 19 | - `acr-engine/run_demo.py` | 19 | - 当前目录仅有: |
| 20 | - 支持 `--chromaprint-checkpoint-every-refs` | 20 | - `chromaprint.pkl` |
| 21 | - chromaprint 建索引阶段新增: | ||
| 22 | - `chromaprint_progress.json` | 21 | - `chromaprint_progress.json` |
| 23 | - 周期性 `chromaprint.pkl` partial cache 持久化 | 22 | - 最后 progress 状态: |
| 24 | |||
| 25 | #### 当前最可信 live evidence | ||
| 26 | - 可观测进程:`PID=431703` | ||
| 27 | - 命令: | ||
| 28 | |||
| 29 | ```bash | ||
| 30 | cd /workspace/acr-engine | ||
| 31 | /usr/local/miniconda3/bin/python run_demo.py build-index \ | ||
| 32 | --data data/external_smoke/fma/manifests \ | ||
| 33 | --model data/external_smoke/fma_models_smoke/best_model.pt \ | ||
| 34 | --output /tmp/chroma_index_observable_smoke \ | ||
| 35 | --device cpu \ | ||
| 36 | --checkpoint-every-refs 10 \ | ||
| 37 | --chromaprint-checkpoint-every-refs 10 \ | ||
| 38 | --resume | ||
| 39 | ``` | ||
| 40 | |||
| 41 | - `2026-06-02 14:25:32 UTC` 最新状态: | ||
| 42 | - `status=building` | 23 | - `status=building` |
| 43 | - `refs_done=1740 / 8000` | 24 | - `refs_done=4420 / 8000` |
| 44 | - `elapsed_sec=1385.4` | 25 | - `elapsed_sec=3964.861` |
| 45 | - `eta_sec=4984.254` | 26 | - `hashes=357373` |
| 46 | - `hashes=229127` | 27 | - `postings=3774363` |
| 47 | - `postings=1510952` | 28 | - 当前**仍未出现**: |
| 48 | - `chromaprint.pkl=16787221 bytes` | ||
| 49 | - `chromaprint_progress.json=230 bytes` | ||
| 50 | - 当前**尚未出现**: | ||
| 51 | - `reference_progress.json` | 29 | - `reference_progress.json` |
| 52 | - `reference_embs.partial.npy` | 30 | - `reference_embs.partial.npy` |
| 53 | - `reference_ids.partial.npy` | 31 | - `reference_ids.partial.npy` |
| ... | @@ -55,36 +33,31 @@ cd /workspace/acr-engine | ... | @@ -55,36 +33,31 @@ cd /workspace/acr-engine |
| 55 | - `reference_ids.npy` | 33 | - `reference_ids.npy` |
| 56 | - `evaluate.py` | 34 | - `evaluate.py` |
| 57 | 35 | ||
| 58 | #### 旧真实 FMA 全量进程如何看待 | 36 | #### legacy 全量 FMA 路径 |
| 59 | - 旧进程 `PID=424691` 仍在跑 `build-index` | 37 | - 原进程:`PID=424691` |
| 60 | - 但它启动于本次 observability 改动之前 | 38 | - 当前 `ps -p 424691`:无存活进程 |
| 61 | - **不要**把它当作新可观测代码路径的验证来源 | 39 | - 当前目录仍只有: |
| 40 | - `/tmp/fma_real_smoke_stopcheck/fma_index_smoke` | ||
| 41 | - 仍未看到 index artifact 或 `evaluate.py` | ||
| 42 | |||
| 43 | #### 当前判断 | ||
| 44 | - 这不再是“CPU-only 长时间构建但仍在推进”的状态。 | ||
| 45 | - 现在更像是:**`build-index` 在 chromaprint 阶段中途退出,但没有留下显式下游产物**。 | ||
| 62 | 46 | ||
| 63 | ## 新 session 接管顺序 | 47 | ## 新 session 接管顺序 |
| 64 | 48 | ||
| 65 | 1. 先看 [./session-handoff.md](./session-handoff.md) | 49 | 1. 先看 [./session-handoff.md](./session-handoff.md) |
| 66 | 2. 再看 [./changelist-2026-06-02.md](./changelist-2026-06-02.md) | 50 | 2. 再看 [./changelist-2026-06-02.md](./changelist-2026-06-02.md) |
| 67 | 3. 然后只盯住以下 4 个事件: | 51 | 3. 然后优先做 3 件事: |
| 68 | 1. `chromaprint_progress.json` 变成 `status=complete` | 52 | 1. 复盘 `run_demo.py build-index` 的退出路径与异常处理 |
| 69 | 2. 任一 `reference_*` 文件出现 | 53 | 2. 检查是否存在未捕获 OOM / shell termination / silent failure |
| 70 | 3. `evaluate.py` 启动 | 54 | 3. 在更小样本上复现“chromaprint 中途退出但无后续文件”的行为 |
| 71 | 4. 进程报错退出 | ||
| 72 | 55 | ||
| 73 | ## 当前卡点 | 56 | ## 当前卡点 |
| 74 | 57 | ||
| 75 | 1. 当前环境仍是 **CPU-only**,建索引耗时长。 | 58 | 1. 关键进程已经退出,但没有明确 traceback 留存。 |
| 76 | 2. 当前还处于 chromaprint 阶段,尚未进入 embedding / evaluate。 | 59 | 2. observable 与 legacy 两条路径都停在“没有 `reference_*` / 没有 `evaluate.py`”的中间态。 |
| 77 | 3. 工作树含大量数据噪音,提交时必须只显式暂存文档/代码文件。 | 60 | 3. 工作树仍有大量数据噪音,提交时必须只显式暂存文档/代码文件。 |
| 78 | |||
| 79 | ## 重启后最短检查命令 | ||
| 80 | |||
| 81 | ```bash | ||
| 82 | date -u '+%Y-%m-%d %H:%M:%S UTC' | ||
| 83 | cat /tmp/chroma_index_observable_smoke/chromaprint_progress.json | ||
| 84 | find /tmp/chroma_index_observable_smoke -maxdepth 1 -type f -printf '%f %s bytes\n' | sort | ||
| 85 | ps -p 431703 -o pid,etimes,time,%cpu,%mem,stat,command | ||
| 86 | pgrep -af 'evaluate.py --data data/external_smoke/fma/manifests' | ||
| 87 | ``` | ||
| 88 | 61 | ||
| 89 | ## 本次交付包含的关键文档 | 62 | ## 本次交付包含的关键文档 |
| 90 | 63 | ... | ... |
| ... | @@ -5,24 +5,19 @@ | ... | @@ -5,24 +5,19 @@ |
| 5 | 5 | ||
| 6 | ## 一页结论 | 6 | ## 一页结论 |
| 7 | 7 | ||
| 8 | ### 最新交付快照(2026-06-02 14:25 UTC) | 8 | ### 最新交付快照(2026-06-02 15:09 UTC) |
| 9 | 9 | ||
| 10 | - 当前远程同步基线:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99` | 10 | - 当前远程同步基线:`cdf33bb` |
| 11 | - 已正式交付的最新代码能力: | 11 | - 当前最重要的新事实:**两个 `build-index` 进程都已退出**,且没有进入 `reference_*` / `evaluate.py` |
| 12 | - chromaprint `_find_peaks()` 等价加速 | 12 | - observable 路径: |
| 13 | - chromaprint 建索引进度可观测化 | 13 | - 原 PID:`431703` |
| 14 | - `run_demo.py --chromaprint-checkpoint-every-refs` | 14 | - 当前 `ps -p 431703`:无存活进程 |
| 15 | - 当前最重要的 live evidence 不再是旧全量 FMA 进程,而是**新的 observable chromaprint smoke**: | 15 | - 当前目录仅有:`chromaprint.pkl`、`chromaprint_progress.json` |
| 16 | - `PID=431703` | 16 | - 最后状态:`status=building`, `refs_done=4420/8000` |
| 17 | - 输出目录:`/tmp/chroma_index_observable_smoke` | 17 | - legacy 全量 FMA 路径: |
| 18 | - `2026-06-02 14:25:32 UTC` 最新观测: | 18 | - 原 PID:`424691` |
| 19 | - `status=building` | 19 | - 当前 `ps -p 424691`:无存活进程 |
| 20 | - `refs_done=1740 / 8000` | 20 | - 当前目录仍只有 `/tmp/fma_real_smoke_stopcheck/fma_index_smoke` |
| 21 | - `elapsed_sec=1385.4` | ||
| 22 | - `eta_sec=4984.254` | ||
| 23 | - `hashes=229127` | ||
| 24 | - `postings=1510952` | ||
| 25 | - `chromaprint.pkl=16787221 bytes` | ||
| 26 | - 当前尚未出现: | 21 | - 当前尚未出现: |
| 27 | - `reference_progress.json` | 22 | - `reference_progress.json` |
| 28 | - `reference_embs.partial.npy` | 23 | - `reference_embs.partial.npy` |
| ... | @@ -30,13 +25,11 @@ | ... | @@ -30,13 +25,11 @@ |
| 30 | - `reference_embs.npy` | 25 | - `reference_embs.npy` |
| 31 | - `reference_ids.npy` | 26 | - `reference_ids.npy` |
| 32 | - `evaluate.py` | 27 | - `evaluate.py` |
| 33 | - 旧真实 FMA 全量进程 `PID=424691` 仍在运行,但它启动于 observability 改动前,**不要作为新代码路径的验证证据**。 | 28 | - 结论:当前阶段已经从“继续观察运行中进度”切换为“排查 `build-index` 异常退出原因”。 |
| 34 | - 结论:当前不是训练问题,也不是新逻辑无证据;当前只是 **CPU-only chromaprint build-index 仍在稳定推进,尚未阶段切换**。 | 29 | - 新 session 第一优先级: |
| 35 | - 下一次值得更新文档/提交的事件只有四种: | 30 | 1. 复盘 `run_demo.py build-index` 的退出路径 |
| 36 | 1. `chromaprint_progress.json` 变为 `status=complete` | 31 | 2. 查 silent failure / OOM / shell termination 证据 |
| 37 | 2. 任一 `reference_*` 文件出现 | 32 | 3. 用小样本复现异常并补日志 |
| 38 | 3. `evaluate.py` 启动 | ||
| 39 | 4. 进程报错退出 | ||
| 40 | 33 | ||
| 41 | 这是一个正在从原型向工业化推进的 **音乐 ACR / music retrieval** 项目。 | 34 | 这是一个正在从原型向工业化推进的 **音乐 ACR / music retrieval** 项目。 |
| 42 | 当前已经完成: | 35 | 当前已经完成: | ... | ... |
-
Please register or sign in to post a comment