Commit 7bb69662 7bb69662ae2eda0aff13b9fa460f0a55b1010f20 by cnb.bofCdSsphPA

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
1 parent cdf33bb2
......@@ -74,30 +74,24 @@
## 5.5 最新真实 FMA / chromaprint 运行态(2026-06-02)
### 当前最新快照(14:25 UTC)
- 远程同步基线:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99`
- 已推送完成:
- chromaprint `_find_peaks()` 等价优化
- chromaprint 建索引 observability
- 新 session 的主要监控对象应切到:
- `PID=431703`
- `/tmp/chroma_index_observable_smoke/chromaprint_progress.json`
### 当前最新快照(15:09 UTC)
- 远程同步基线:`cdf33bb`
- 当前已不是“进程仍在运行”的阶段,而是:
- observable `PID=431703` 已退出
- legacy `PID=424691` 已退出
- observable 当前只留下:
- `/tmp/chroma_index_observable_smoke/chromaprint.pkl`
- `2026-06-02 14:25:32 UTC` 证据:
- `/tmp/chroma_index_observable_smoke/chromaprint_progress.json`
- 最后进度停在:
- `status=building`
- `refs_done=1740/8000`
- `elapsed_sec=1385.4`
- `eta_sec=4984.254`
- `hashes=229127`
- `postings=1510952`
- 当前尚未出现 `reference_*``evaluate.py`,因此**还不能输出最终 accuracy 结论**
-`PID=424691` 真实 FMA 全量 build-index 进程仍在,但它是 observability 改动前启动的旧路径;不要把它当作新代码验证来源。
- 下一次值得提交的事件只应是:
1. `chromaprint_progress.json status=complete`
2. `reference_*` 文件出现
3. `evaluate.py` 启动
4. 或明确失败
- `refs_done=4420/8000`
- 当前仍未出现 `reference_*``evaluate.py`
- 因此下一轮工作重心必须切到:**排查 build-index 异常退出**,而不是继续把它当作纯线性慢任务。
- 下一次值得提交的事件:
1. 找到明确失败证据/退出原因
2. 成功小样本复现并补日志
3. 修复后重新跑到 `reference_*``evaluate.py`
## 6. 高风险注意事项
......
## 2026-06-02 15:09 UTC / build-index unexpected exit checkpoint
- 新鲜证据:observable 与 legacy 两个 `build-index` 进程都已退出
- `ps -p 431703``ps -p 424691` 均无存活进程
- `pgrep -af 'run_demo.py build-index|evaluate.py ...'` 未发现接续进程
- observable 目录仍只有:
- `chromaprint.pkl`
- `chromaprint_progress.json`
- `chromaprint_progress.json` 最后状态停在:
- `status=building`
- `refs_done=4420/8000`
- 当前仍未出现:
- `reference_*`
- `evaluate.py`
- 结论:当前已从“长时间线性推进”切换为“需要排查 build-index 异常退出”的新阶段
## 2026-06-02 14:25 UTC / restart-package handoff refresh
- 交付基线刷新为:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99`
......
# Changelist / 2026-06-02
## 本次补充交付(2026-06-02 14:25 UTC)
## 本次补充交付(2026-06-02 15:09 UTC)
### 目标
在当前长时间 `build-index` 尚未结束前,先把**可重启、可续跑、可判断阶段切换**的交付包固化下来
把当前状态从“仍在稳定推进”升级为“已确认异常退出、需要排查”的交接包
### 本次纳入交付的内容
| 类别 | 内容 |
|---|---|
| 代码 | chromaprint 峰值扫描等价优化;建索引进度可观测化 |
| 证据 | `/tmp/chroma_index_observable_smoke/chromaprint_progress.json` live checkpoint |
| 证据 | `PID=431703``PID=424691` 均已退出 |
| 状态 | observable 目录仍停在 `chromaprint_progress.json + chromaprint.pkl` |
| 风险 | 没有 `reference_*`,没有 `evaluate.py`,没有明确 traceback |
| 文档 | `CHANGELOG``changelist``delivery handoff``session handoff``AGENT memory` |
| 交接 | 明确旧 FMA 进程与新 observable 进程的区别 |
### 文件级变更
| 文件 | 说明 |
|---|---|
| [./CHANGELOG.md](./CHANGELOG.md) | 补记本次 restart package 交付 |
| [./delivery-handoff-2026-06-02.md](./delivery-handoff-2026-06-02.md) | 重写为当前最短接管包 |
| [./session-handoff.md](./session-handoff.md) | 顶部快照切到 `bc6d07a + observable chromaprint` |
| [../AGENT.md](../AGENT.md) | 更新长期记忆,避免新 session 误判当前阶段 |
| [./CHANGELOG.md](./CHANGELOG.md) | 补记 build-index 异常退出 checkpoint |
| [./delivery-handoff-2026-06-02.md](./delivery-handoff-2026-06-02.md) | 顶部改写为异常排查接管包 |
| [./session-handoff.md](./session-handoff.md) | 顶部快照切到“进程已退出、无下游产物” |
| [../AGENT.md](../AGENT.md) | 更新长期记忆,避免新 session 误判为仍在运行 |
### 当前最重要的 fresh evidence
- 远程基线:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99`
- 观测时间:`2026-06-02 14:25:32 UTC`
- 观测对象:`/tmp/chroma_index_observable_smoke/chromaprint_progress.json`
- 状态:
- 观测时间:`2026-06-02 15:09:19 UTC`
- `ps -p 431703`:无存活进程
- `ps -p 424691`:无存活进程
- `pgrep -af 'run_demo.py build-index|evaluate.py ...'`:未发现接续进程
- observable 目录仅有:
- `chromaprint.pkl`
- `chromaprint_progress.json`
- 末次 progress:
- `status=building`
- `refs_done=1740/8000`
- `elapsed_sec=1385.4`
- `eta_sec=4984.254`
- `hashes=229127`
- `postings=1510952`
- 已确认:新代码路径会持续写出 `chromaprint_progress.json``chromaprint.pkl`
- 未确认:`reference_*``evaluate.py`、最终 report
- `refs_done=4420/8000`
- 未出现:
- `reference_*`
- `evaluate.py`
### 重要决策
1. 现在**不再**重复记录每一次 `refs_done` 的线性增长。
2. 下一个值得再次提交的节点只应是:
- `chromaprint` 完成
- `reference_*` 文件出现
- `evaluate.py` 启动
- 或明确失败
3. 旧的 `PID=424691` 只作为背景运行态,不作为新 observability 改动验证。
### 重启后的直接待办
1. 查看 [./session-handoff.md](./session-handoff.md)
2. 检查 `PID=431703` 是否仍在运行
3. 监控 `/tmp/chroma_index_observable_smoke/`
4. 出现阶段切换后,再回写文档并提交推送
1. 当前已不应继续把它描述成“仅仅线性慢”。
2. 下一轮工作应转向 **build-index 异常退出排查**
3. 新提交已经有意义,因为状态从“运行中”变成了“已退出且无下游产物”。
......
# Delivery Handoff / 2026-06-02
## 本次交付包(2026-06-02 14:25 UTC)
## 本次交付包(2026-06-02 15:09 UTC)
### 交付结论
这次应交付的是一套**可直接续跑的工程包**,而不是最终评测分数
- 远程基线已同步到:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99`
- chromaprint 热点优化与可观测性增强已提交并推送
- 当前最重要的真实运行证据来自 **可观测 FMA build-index smoke**
- 还没有进入 `evaluate.py`,因此**暂不输出最终准确率结论**
这次新增的关键交付,不再是单纯的进度观察,而是一个**新的异常状态检查点**
- 远程基线已推进到:`cdf33bb`
- observable chromaprint smoke 与 legacy 全量 FMA `build-index` 进程都已退出
- 但两者都**没有**进入 `reference_*` / `evaluate.py`
- 因此下一 session 的首要任务,已从“盯进度”切换为“排查 `build-index` 异常退出”
### 当前最新事实
#### 已交付代码能力
- `acr-engine/src/engines/chromaprint_matcher.py`
- `_find_peaks()` 改为 `sliding_window_view` 等价实现
- 保持 hash 输出一致的前提下,单样本约 `2.02x` 加速
- `acr-engine/run_demo.py`
- 支持 `--chromaprint-checkpoint-every-refs`
- chromaprint 建索引阶段新增:
#### observable 路径
- 原进程:`PID=431703`
- 最后观测时间:`2026-06-02 15:09:19 UTC`
- 当前 `ps -p 431703`:无存活进程
- 当前目录仅有:
- `chromaprint.pkl`
- `chromaprint_progress.json`
- 周期性 `chromaprint.pkl` partial cache 持久化
#### 当前最可信 live evidence
- 可观测进程:`PID=431703`
- 命令:
```bash
cd /workspace/acr-engine
/usr/local/miniconda3/bin/python run_demo.py build-index \
--data data/external_smoke/fma/manifests \
--model data/external_smoke/fma_models_smoke/best_model.pt \
--output /tmp/chroma_index_observable_smoke \
--device cpu \
--checkpoint-every-refs 10 \
--chromaprint-checkpoint-every-refs 10 \
--resume
```
- `2026-06-02 14:25:32 UTC` 最新状态:
- 最后 progress 状态:
- `status=building`
- `refs_done=1740 / 8000`
- `elapsed_sec=1385.4`
- `eta_sec=4984.254`
- `hashes=229127`
- `postings=1510952`
- `chromaprint.pkl=16787221 bytes`
- `chromaprint_progress.json=230 bytes`
- 当前**尚未出现**
- `refs_done=4420 / 8000`
- `elapsed_sec=3964.861`
- `hashes=357373`
- `postings=3774363`
- 当前**仍未出现**
- `reference_progress.json`
- `reference_embs.partial.npy`
- `reference_ids.partial.npy`
......@@ -55,36 +33,31 @@ cd /workspace/acr-engine
- `reference_ids.npy`
- `evaluate.py`
#### 旧真实 FMA 全量进程如何看待
- 旧进程 `PID=424691` 仍在跑 `build-index`
- 但它启动于本次 observability 改动之前
- **不要**把它当作新可观测代码路径的验证来源
#### legacy 全量 FMA 路径
- 原进程:`PID=424691`
- 当前 `ps -p 424691`:无存活进程
- 当前目录仍只有:
- `/tmp/fma_real_smoke_stopcheck/fma_index_smoke`
- 仍未看到 index artifact 或 `evaluate.py`
#### 当前判断
- 这不再是“CPU-only 长时间构建但仍在推进”的状态。
- 现在更像是:**`build-index` 在 chromaprint 阶段中途退出,但没有留下显式下游产物**
## 新 session 接管顺序
1. 先看 [./session-handoff.md](./session-handoff.md)
2. 再看 [./changelist-2026-06-02.md](./changelist-2026-06-02.md)
3. 然后只盯住以下 4 个事件:
1. `chromaprint_progress.json` 变成 `status=complete`
2. 任一 `reference_*` 文件出现
3. `evaluate.py` 启动
4. 进程报错退出
3. 然后优先做 3 件事:
1. 复盘 `run_demo.py build-index` 的退出路径与异常处理
2. 检查是否存在未捕获 OOM / shell termination / silent failure
3. 在更小样本上复现“chromaprint 中途退出但无后续文件”的行为
## 当前卡点
1. 当前环境仍是 **CPU-only**,建索引耗时长。
2. 当前还处于 chromaprint 阶段,尚未进入 embedding / evaluate。
3. 工作树含大量数据噪音,提交时必须只显式暂存文档/代码文件。
## 重启后最短检查命令
```bash
date -u '+%Y-%m-%d %H:%M:%S UTC'
cat /tmp/chroma_index_observable_smoke/chromaprint_progress.json
find /tmp/chroma_index_observable_smoke -maxdepth 1 -type f -printf '%f %s bytes\n' | sort
ps -p 431703 -o pid,etimes,time,%cpu,%mem,stat,command
pgrep -af 'evaluate.py --data data/external_smoke/fma/manifests'
```
1. 关键进程已经退出,但没有明确 traceback 留存。
2. observable 与 legacy 两条路径都停在“没有 `reference_*` / 没有 `evaluate.py`”的中间态。
3. 工作树仍有大量数据噪音,提交时必须只显式暂存文档/代码文件。
## 本次交付包含的关键文档
......
......@@ -5,24 +5,19 @@
## 一页结论
### 最新交付快照(2026-06-02 14:25 UTC)
- 当前远程同步基线:`bc6d07afbd1e31d3956d20e35c20c424bc21ba99`
- 已正式交付的最新代码能力:
- chromaprint `_find_peaks()` 等价加速
- chromaprint 建索引进度可观测化
- `run_demo.py --chromaprint-checkpoint-every-refs`
- 当前最重要的 live evidence 不再是旧全量 FMA 进程,而是**新的 observable chromaprint smoke**
- `PID=431703`
- 输出目录:`/tmp/chroma_index_observable_smoke`
- `2026-06-02 14:25:32 UTC` 最新观测:
- `status=building`
- `refs_done=1740 / 8000`
- `elapsed_sec=1385.4`
- `eta_sec=4984.254`
- `hashes=229127`
- `postings=1510952`
- `chromaprint.pkl=16787221 bytes`
### 最新交付快照(2026-06-02 15:09 UTC)
- 当前远程同步基线:`cdf33bb`
- 当前最重要的新事实:**两个 `build-index` 进程都已退出**,且没有进入 `reference_*` / `evaluate.py`
- observable 路径:
- 原 PID:`431703`
- 当前 `ps -p 431703`:无存活进程
- 当前目录仅有:`chromaprint.pkl``chromaprint_progress.json`
- 最后状态:`status=building`, `refs_done=4420/8000`
- legacy 全量 FMA 路径:
- 原 PID:`424691`
- 当前 `ps -p 424691`:无存活进程
- 当前目录仍只有 `/tmp/fma_real_smoke_stopcheck/fma_index_smoke`
- 当前尚未出现:
- `reference_progress.json`
- `reference_embs.partial.npy`
......@@ -30,13 +25,11 @@
- `reference_embs.npy`
- `reference_ids.npy`
- `evaluate.py`
- 旧真实 FMA 全量进程 `PID=424691` 仍在运行,但它启动于 observability 改动前,**不要作为新代码路径的验证证据**
- 结论:当前不是训练问题,也不是新逻辑无证据;当前只是 **CPU-only chromaprint build-index 仍在稳定推进,尚未阶段切换**
- 下一次值得更新文档/提交的事件只有四种:
1. `chromaprint_progress.json` 变为 `status=complete`
2. 任一 `reference_*` 文件出现
3. `evaluate.py` 启动
4. 进程报错退出
- 结论:当前阶段已经从“继续观察运行中进度”切换为“排查 `build-index` 异常退出原因”。
- 新 session 第一优先级:
1. 复盘 `run_demo.py build-index` 的退出路径
2. 查 silent failure / OOM / shell termination 证据
3. 用小样本复现异常并补日志
这是一个正在从原型向工业化推进的 **音乐 ACR / music retrieval** 项目。
当前已经完成:
......