• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Doubak / doubak-data-parser / 26
91%

Build:
DEFAULT BRANCH: main
Ran 30 Aug 2026 04:32AM UTC
Jobs 1
Files 13
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

30 Aug 2026 04:32AM UTC coverage: 90.641% (-0.7%) from 91.385%
26

push

github

MewX
fix: data-cid 是 2023-12 才有的,两层身份必须认回同一条记录

identityOf() 有 data-cid 就用 `u:` 键、没有就用 `d:` 键,而两个键空间不相交。
于是**同一条标记在不同年代的观测会变成两条记录**——IDENTITY.md §2.2 那张表自己
就写着 data-cid 只有 2023-12 之后抓的页面才有,所以只要一个目录里同时有那之前
和之后的档案,每一条跨越那条线的标记都会一分为二。

实测把前代工具 2022-12 → 2024-08 的档案(doubak-import-adapters 转出来的)导
进来跑一遍:**2526 个作品出了 4050 条标记**,而且修订史被劈成两半——那恰恰是那
批数据唯一的价值所在。失败的形状是最坏的那一种:不报错,而且看起来像数据变多了。

改成用退化键当锚点记住「这个作品最终落在哪个键上」:先在没有 data-cid 的年代
见过、后来拿到了,就把那条记录搬到上游键上,不另起一条。反过来(先有后无)
跟着已确定的键走。**同一个作品先后出现两个不同的 data-cid 仍然不合并**——那是
「标了、删了、又重新标」,是只有 data-cid 给得出的信息,正是它比退化键强的地方。

搬过去之后 identity_layer 仍然写 degraded_key:它回答的是「这条记录的身份最弱
靠到了哪一层」,而早年那几次观测确确实实是靠退化键认回来的。改写成 upstream_id
会把那件事掩盖掉,而读者判断「这些修订真的是同一条记录吗」时要看的正是最弱那环。

修完再跑:2526 条标记、2526 个作品,一一对应。与 2026 那 17 份档案合并之后
标记 2950 → 2955、修订 2959 → 3105,多修订的标记从 8 条变成 147 条。

test/identity.test.js 用手搓的内存档案钉住规则(顺带钉住 parse() 那八项契约);
把归并退回老行为会红 3 条。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E6dxwcUi4rM3dcKdsqx9xm

427 of 543 branches covered (78.64%)

Branch coverage included in aggregate %.

93 of 93 new or added lines in 1 file covered. (100.0%)

33 existing lines in 1 file now uncovered.

2856 of 3079 relevant lines covered (92.76%)

2963.61 hits per line

Coverage Regressions

Lines Coverage ∆ File
33
85.49
-2.54% src/parse.js
Jobs
ID Job ID Ran Files Coverage
1 26.1 30 Aug 2026 04:32AM UTC 13
90.64
GitHub Action Run
Source Files on build 26
  • Tree
  • List 13
  • Changed 9
  • Source Changed 1
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • ab78ae36 on github
  • Prev Build on browser-parse (#23)
  • Next Build on main (#27)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc