## Parent [#85](https://github.com/wt159/SoundBridge/issues/85) — [Spec] 播放器状态与公开 API 契约实现计划。 ## What to build 把前六张票的成果在 integration branch 上收成一条可交付的绿线:全量 `ctest -j4`(14 个 `sdk_*` 目标,含坏输入四段与覆盖度)跑绿;一次 `code-review` 并修完所有问题;更新规格 §10.1 实现清单的完成状态与 §10.3 的已知代价、回填 fog 观测口径的处置;关闭执行票并留 resolution comment。 - 跨平台改动必须等 Linux `sdk-coverage` 绿;本地 Windows 全绿不算完成。 - 文档回填只改本 effort 产出的规格与 ADR 索引,不动 `doc/bad-input-spec.md` §2.1 / §12 与覆盖度矩阵 15 行。 ## Acceptance criteria - [ ] 本地全量 `ctest -j4` 全绿,无假红;目标数与 TIMEOUT 未变 - [ ] `code-review` 提出的问题一次修完 - [ ] 规格实现清单状态更新、各票 resolution comment 完整、Spec issue 与执行票全部关闭 - [ ] Linux `sdk-coverage` 绿(或如实记录未等到 / 受阻原因) ## Blocked by [#87](https://github.com/wt159/SoundBridge/issues/87), [#88](https://github.com/wt159/SoundBridge/issues/88), [#89](https://github.com/wt159/SoundBridge/issues/89), [#90](https://github.com/wt159/SoundBridge/issues/90), [#91](https://github.com/wt159/SoundBridge/issues/91)(GitHub 原生 blocked_by 已连接)。. **必须遵守(来自 spec、ADR 0002/0003/0004 与 `doc/bad-input-spec.md`):** - 七个控制入口保持 `void`;不新增错误码、不改 `onError` 签名、不新增状态机、不扩状态集合(对外仍 `Playing/Paused/Stopped` 三态)。 - 判据**不新造数值**:沿用 `max(1%,150ms)`、`r × good`、5pp、零容差差分、getter 与回调 ≤50ms、状态序列无相邻重复、每曲一次 duration。 - 坏输入 55 例 / 396 断言与覆盖度矩阵 15 行**一字不动**;14 个 `sdk_*` ctest 目标、TIMEOUT、`-j4`、快集 / 全量集划分全部不动。 - 新增用例若写文件必须带 pid(`-j4` 撞名假红的教训);线程契约用 `promise/future` 或轮询验证,不裸 sleep。 - 事实基线见 [#76](https://github.com/wt159/SoundBridge/issues/76) 的 `research/public-api-contract-facts` 分支;术语见 `GLOSSARY.md`。
Activity
fix: 一次修完 code-review 提出的 4 Major + 4 Minor(#92 / T07)
docs: 回填实现清单落地记录与审查结果(#92 / T07)
wt159 commentedon Nov 8, 2026
Resolution(2026-11-08,图外实现 effort #85 / PR #93)
集成收口完成:
ctest -j414/14(59.6s),含坏输入四段与覆盖度;无假红。14 个sdk_*目标、TIMEOUT、快集 / 全量集划分一字未动。code-review方法审查 integration branch,提出 4 Major(位置会话代际、状态去重键、用例与目标路径错配、裸 sleep / flaky)+ 4 Minor(mock 漏锁、计数窗口、注释与判据不符、措辞),已在一个修复提交里全部处理并重新跑绿。doc/player-state-contract.md§10.1 标注实现链已跑完、§10.2 改为已落地、§10.3 明确 fog 仍未裁决,新增 §10.4 记录 C1–C6 落点、审查结果、务实取舍与已知判据缺口。implement/player-state-contract(9 个提交)→ PR feat: 播放器状态与公开 API 契约落地(C1–C6 / #85–#92) #93 → master。务实取舍:C1–C6 都改同一批文件,且本机 Qt/ffmpeg 依赖与
build/缓存绑定主工作区,多 worktree 独立编译不可行,故按拓扑序在同一 integration branch 上逐票提交;task graph 与原生阻塞边保留。未裁决:契约漂移的长期观测口径交后续 effort,若只记录不设门槛须写明「不作为失败门禁」。跨平台改动检查:本次无条件编译 / POSIX 头 / 路径 API 改动;Linux
sdk-coverage由合并后 CI 验证。Merge pull request #93 from wt159/implement/player-state-contract