Skip to content

fix(derive): count only parser-marked speakers - #190

Open
titanwings wants to merge 3 commits into
atomic/pr-0-verify-pipelinefrom
atomic/pr-6-speaker-attribution
Open

titanwings wants to merge 3 commits into
atomic/pr-0-verify-pipelinefrom
atomic/pr-6-speaker-attribution

Conversation

@titanwings

Copy link
Copy Markdown
Owner

Why

派生层用「最多 24 个非冒号字符加冒号」把正文标签当成说话人。多来源人物的参与者因此多出根因、时间线、动作、遗留、写文档的顺序固定、用途。这是 F7。文档来源(kind 为 doc 或 note)不再产生参与者。没有账本 kind 的正文也不产生参与者。第二次 harvest 留下的许可文档与字幕孤儿属于这一类。stats.participant_countvoice.json 的 speakers 走同一个函数 participantsFromUnits

Scope

  • src/derive/retrospect.mjs。只读解析层写在轮次前缀上的说话人。doc 与 note 的单元不记参与者。账本行没有 kind 时,该正文不记参与者。有 kind 且不是 doc 或 note 的文件照旧,例如 subtitle。
  • tests/retrospect.test.mjstests/text-attribution.test.mjs。文档标签不算参与者。
  • tests/audit/retrospect-doctor.test.mjs。只改测试名以 R24 after retrospect 开头的那条,speakers 从 18 改为 14。R24 Step 1.5 未改。
  • tests/gates/acceptance-us-house.jsonstdout_contains 里的形状谓词改为实测行 FAIL · units=2744 speakers=14 attributed=86
  • tests/gates/baseline/audit-tests.txt。删掉 T41 那一行。

Blast Radius

synthetic-multisource 的参与者是 6 个真人,participant_count 为 6。synthetic-interview 仍是林工与面试官。单次 harvest 的 C-SPAN,doctor 的 speakers 是 14,attributed_units 是 81,top_speaker 仍是 THE SPEAKER PRO TEMPORE,理由句仍是「只有 3%」。少掉的 4 个名字是许可文档标签,不是议员。双次 harvest 后账本仍是 2 条。孤儿正文不再把那 4 个标签加回 voice,也不再多算一份议员。acceptance 实测形状行是 FAIL · units=2744 speakers=14 attributed=86

Verification

T40 保持绿。T41 由红转绿。父提交 9c8f1ceb464988f4273b2c5fc4bfc4bbe33af3ec 的 TAP 里,ok 40 是面试两人,not ok 41 是文档标签那条。现头 bc809f0eba1424625887d700aa395f2f3f595d25 上,node scripts/run-gates.mjs --id audit-tests 含在 --without playwright 的输出里。Node 20.20.2 与 Node 22.14.0 都是 PASS audit-testsratchet failing 21, baseline 21。基线从父提交的 22 条已知失败减到 21 条。没有新失败。

删掉的基线只有这一行。R28 a document's labels (根因:/ 时间线:) are not counted as participants in a multi-source personR24 Step 1.5 那一行留在基线里。

Node 20.20.2 与 Node 22.14.0 的 node scripts/run-gates.mjs --without playwright 都是 8/8 gates passed。Node 22.14.0、DISTILLY_PLAYWRIGHT_ROOT=/tmp/pw-root--requires playwright3/3 gates passed。三份 acceptance 都打印 验收结果:18/18 通过。us-house 含 FAIL · units=2744 speakers=14 attributed=86,且「retrospect 两次产物字节相同」仍通过。

Rollback

回退本分支相对 9c8f1ceb464988f4273b2c5fc4bfc4bbe33af3ec 的三笔提交。栈停在 dot-skill-test,dot-skill 保留。

Document and note units no longer become participants. stats.participant_count
and voice speakers share participantsFromUnits.
A second harvest can leave a body with no ledger row. A colon in that
body is a label, not a parser-marked speaker. doc and note still produce
no participants. The C-SPAN after-retrospect count is 14, and the
acceptance shape line is the measured speakers=14 attributed=86.
A row with locations.text owns that path only. A row with no text path
still owns the bytes it hashed, which is how the hand-written fixture
records kind. A second file that merely shares those bytes does not
inherit the row.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants