@@ -5,6 +5,57 @@ This is the project's narrative changelog. `README.md` keeps only a short
55
66## Unreleased
77
8+ - ** Upstream attribution is now on the front page.** Every row of the
9+ all-collections table in all six locale entry documents (` README.md ` , the
10+ four locale READMEs, and [ ` docs/CONTENT_ZH.md ` ] ( docs/CONTENT_ZH.md ) ) gained a
11+ localized ** 来源 / Source / 出典 / 출처 / 來源** column linking straight back
12+ to the original author's repository as ` owner/repo ` . Until now that
13+ information only existed in the generated
14+ [ ` docs/LICENSE_AUDIT.md ` ] ( docs/LICENSE_AUDIT.md ) and in
15+ ` catalog/provenance.json ` , so a reader browsing the README had no one-click
16+ path back to the people whose work is vendored here. Each table also carries
17+ a short "credit upstream" note pointing at the licence audit.
18+ - ** Every collection now resolves to a reachable upstream.** The four
19+ collections carrying ` source_url: null ` since 2026-05-31 were identified by
20+ comparing vendored bytes against live repositories, not by guessing from
21+ folder names: ` 18-jusi-aalto-stata-accounting-research ` →
22+ [ jusi-aalto/stata-accounting-research] ( https://github.com/jusi-aalto/stata-accounting-research )
23+ (SKILL.md byte-identical), ` 29-quarcs-lab-project20XXy ` →
24+ [ quarcs-lab/project20XXy] ( https://github.com/quarcs-lab/project20XXy ) ,
25+ ` 38-peternka-academic-proofreader ` →
26+ [ peternka/academic_proofreader] ( https://github.com/peternka/academic_proofreader )
27+ (underscore, not hyphen — which is why the folder name never resolved), and
28+ ` 49-voidborne-d-humanize-chinese ` →
29+ [ swaylq/humanize-chinese] ( https://github.com/swaylq/humanize-chinese ) (the
30+ author renamed the account after the snapshot). Separately,
31+ ` 26-Data-Wise-scholar ` was re-pointed from the now-404 ` Data-Wise/scholar ` to
32+ its live successor
33+ [ Data-Wise/claude-plugins] ( https://github.com/Data-Wise/claude-plugins ) ,
34+ where the content moved. All 76 upstream URLs were verified to return HTTP
35+ 200 . Source-confidence buckets moved from high=41 / low=10 / medium=21 /
36+ unresolved=4 to high=44 / medium=22 / low=10.
37+ - ** New generated index: [ ` skills/README.md ` ] ( skills/README.md ) .** GitHub
38+ renders it under the ` skills/ ` directory listing, so it is the first thing
39+ anyone browsing the vendored collections sees — and until now that view
40+ credited nobody (only collections 01–08 carry the old CoPaper.AI
41+ ` 来源仓库: ` banner; the other 68 have no attribution header at all). The
42+ index is bilingual, lists all 76 collections with upstream URL, skill count,
43+ source confidence, and licence, and is written by
44+ ` scripts/build-provenance.py ` (freshness-gated by ` make validate ` , like the
45+ other generated artifacts). It is the one generated file outside ` docs/ ` .
46+ - ** The new column is drift-proofed.** ` scripts/check-readme-stats.py ` gained a
47+ third check family: every row of the widest collection table in each entry
48+ document must link the ` source_url ` that ` catalog/provenance.json ` records
49+ for that collection. The check locates the table structurally rather than by
50+ header text, so it works across all five locales, and it fails
51+ ` make validate ` if an upstream moves and only one table is updated.
52+ - Fixed a rendering bug in [ ` docs/CONTENT_ZH.md ` ] ( docs/CONTENT_ZH.md ) : the
53+ 76-row collection table was present ** twice** — once with a header and once
54+ (the copy carrying the ` #skill-NN ` anchors that ` README.md ` links into)
55+ with no header or delimiter row, so GitHub rendered 76 rows as literal
56+ pipe-delimited text and every ` #skill-NN ` id was duplicated. The two copies
57+ are now merged into a single anchored table; the unanchored copy was also
58+ missing collection ` 00 ` .
859- Renamed and rewrote collection 48: ** ` 48-copaper-ai-chinese-de-aigc ` →
960 [ ` 48-de-AIGC-skills ` ] ( skills/48-de-AIGC-skills/ ) ** , extending the
1061 Chinese-only academic de-AIGC skill to ** bilingual EN+ZH coverage** for
0 commit comments