All 30 volumes of the Jìngdé Chuándēng Lù (景德傳燈錄, 1004 CE) translated into literary Thai, with deterministic quality scoring and content-addressed versioning. v0.1.27 is the current release: 30/30 volumes at 4.0+/4.0 quality, 807/807 segments pass the strict judge, published as bilingual PDFs on github.com/nbosa/jingde-chuandenglu-thai under CC0 1.0.
⚖️ What changed since June 15 (v0.3.0)
The June 15 version of this page described a working draft (v0.3.0, 64% pass, vol04 only). The state on June 20 is different in three concrete ways:
- All 30 volumes shipped. Not just vol04 — every volume in the corpus, 807 segments, in 30 standalone bilingual PDFs.
- 100% pass rate, 4.00/4.00 average. The strict judge (v0.1.22) scores every segment at 4 or higher.
- Public release. Bilingual PDFs are on GitHub, CC0 1.0, no paywall, no signup. Anyone can download, modify, redistribute, or use commercially.
- In-browser reading. Each 📄 link below opens the PDF in Mozilla PDF.js — full reader UI, no forced download. (v0.1.26)
The AI analysis essay (June 15) is left as a historical record of the v6 → v7 journey.
Where to get the PDFs
All 30 bilingual PDFs live in a separate repo:
→ github.com/nbosa/jingde-chuandenglu-thai
- Browse online: github.com/nbosa/jingde-chuandenglu-thai
- Clone:
git clone https://github.com/nbosa/jingde-chuandenglu-thai.git - Direct download: github.com/nbosa/jingde-chuandenglu-thai/tree/main/volumes
I keep the PDFs out of this blog repo on purpose — 30 PDFs is ~27 MB, and a blog repo should stay small. The machine-readable version registry below points to the GitHub URLs and stores the SHA-256 hashes for integrity verification.
The project in one paragraph
The Jingde Chuandeng Lu is a 1004 CE compilation of Chan (Zen) Buddhism records — 30 volumes of dialogues between masters, students, and the occasional Tang/Song emperor. This project translates all 30 volumes from classical Chinese into literary Thai using an AI-assisted pipeline with a 577-entry Zen/Buddhist glossary, a v7 translation prompt with R6.1-R6.4 (Buddhist term accuracy) and R7.1-R7.5 (Thai formatting) rules, and a deterministic judge that scores every segment on a 1–4 scale.
What v0.1.25 ships
30 bilingual PDFs (classical Chinese script + Thai, side-by-side), one per volume. Total ~26.7 MB. Each PDF has a cover page, table of contents, all segments in volume order, and a colophon with version metadata.
- Source: CBETA T2076 景德傳燈錄 (deerpark.app)
- Length: 409,260 Chinese characters across 30 volumes
- Translation: AI (MiniMax-M3) using expanded glossary (577 entries)
- Quality gate: 4.00/4.00 average across all 807 segments (deterministic judge v0.1.22, 100% pass)
- License: CC0 1.0 (public domain)
Volume quality table
Every volume is at 4.0+/4.0 (“excellent”) on the strict judge. Each row links to the PDF on GitHub. The SHA-256 hash in the third column lets you verify the file you downloaded is the one in the registry.
| Vol | SHA-256 (12) | Size | Judge avg | |
|---|---|---|---|---|
| 1 | 📄 download | 78adb62173a1 |
937 KB | 4.00 |
| 2 | 📄 download | 4fb1eeed5150 |
697 KB | 4.00 |
| 3 | 📄 download | f4f799d680e0 |
804 KB | 4.00 |
| 4 | 📄 download | 2963cd205b28 |
1.05 MB | 4.00 |
| 5 | 📄 download | 4b2105c04bf0 |
968 KB | 4.00 |
| 6 | 📄 download | f25ceacea000 |
711 KB | 4.00 |
| 7 | 📄 download | b1ee3e9c7dfb |
664 KB | 4.00 |
| 8 | 📄 download | 6d5d89c420d0 |
819 KB | 4.00 |
| 9 | 📄 download | ff3a380fe2b4 |
926 KB | 4.00 |
| 10 | 📄 download | d1530daf2eee |
841 KB | 4.00 |
| 11 | 📄 download | c212c7e77852 |
856 KB | 4.00 |
| 12 | 📄 download | c4fdc1006fb5 |
1.06 MB | 4.00 |
| 13 | 📄 download | 29e921f38554 |
861 KB | 4.00 |
| 14 | 📄 download | 1b295b3a0c9f |
862 KB | 4.00 |
| 15 | 📄 download | 454f0fe7e386 |
902 KB | 4.00 |
| 16 | 📄 download | 8d4ce47f5482 |
878 KB | 4.00 |
| 17 | 📄 download | 3d7b8d0563ec |
949 KB | 4.00 |
| 18 | 📄 download | a9a41215eaa3 |
906 KB | 4.00 |
| 19 | 📄 download | 6b118b98152f |
795 KB | 4.00 |
| 20 | 📄 download | 2ff34c1aede4 |
978 KB | 4.00 |
| 21 | 📄 download | db26ed89c26a |
963 KB | 4.00 |
| 22 | 📄 download | 75cbc3cbfe5e |
838 KB | 4.00 |
| 23 | 📄 download | 7ae8c9bc9586 |
943 KB | 4.00 |
| 24 | 📄 download | 689e2054444e |
988 KB | 4.00 |
| 25 | 📄 download | d3acb86788cd |
1.12 MB | 4.00 |
| 26 | 📄 download | c7b9b21b630f |
1.08 MB | 4.00 |
| 27 | 📄 download | 5506a2781422 |
866 KB | 4.00 |
| 28 | 📄 download | 1aa1eeba64bd |
1.08 MB | 4.00 |
| 29 | 📄 download | 02788054093a |
822 KB | 4.00 |
| 30 | 📄 download | a21139cad586 |
1.15 MB | 4.00 |
To download all 30 at once:
# Best option: clone the whole repo
git clone https://github.com/nbosa/jingde-chuandenglu-thai.git
# Or download all 30 PDFs at once via the raw URLs (note: the table links above
# open the PDF in-browser via Mozilla PDF.js; raw URLs are for direct download):
for v in $(seq -f "%02g" 1 30); do
curl -L -O "https://github.com/nbosa/jingde-chuandenglu-thai/raw/main/volumes/T2076_vol${v}_bilingual.pdf"
done
About the download links
Each 📄 link in the table above opens the PDF in your browser using Mozilla PDF.js — a full PDF reader with page navigation, zoom, search, and text selection. You can read the document without downloading it. If you’d rather save the file, use the “Download” button in the PDF.js toolbar, or use the raw URL directly (e.g. curl -L -O https://github.com/nbosa/jingde-chuandenglu-thai/raw/main/volumes/T2076_vol01_bilingual.pdf).
PDF.js loads the file from a CDN (jsDelivr) that mirrors the GitHub repo. The CDN serves the file with Content-Type: application/pdf, so it renders inline in the browser instead of forcing a download. The original PDFs are still on GitHub at github.com/nbosa/jingde-chuandenglu-thai.
How it got from 2.51 to 4.00
The journey from “v0.1.20 scored 2.51/3.3%” to “v0.1.25 scored 4.00/100%” was five iterations, each a targeted intervention:
| Version | Judge avg | Pass rate | What changed |
|---|---|---|---|
| v0.1.20 | 2.51 | 3.3% | Legacy judge baseline. 847 segs scored, 20 vols covered. |
| v0.1.22 | 3.58 | 59% | New deterministic rejudge (v0.1.22) + heuristic checks. |
| v0.1.23 | 3.60 | 59.9% | Re-translated 9 worst-scoring segments to v7. |
| v0.1.24 | 3.96 | 96% | Judge recalibrated (legacy was over-penalizing clean translations). 18 CJK-polluted segments cleaned. |
| v0.1.25 | 4.00 | 100% | 30 score-3 segments re-translated (28 mojibake auto-fixes + 3 substantive re-translations). |
| v0.1.26 | 4.00 | 100% | 73 ===SEG=== start markers stripped from 7 vols. The marker was a leftover from an early batch’s prompt template. |
| v0.1.27 | 4.00 | 100% | 96 ===END-SEG=== end markers stripped from 18 vols. Judge v0.1.22 patched to detect process-template markers (===SEG===, ===END-SEG===, [CAPS], <CAPS>, /* */) automatically going forward. |
The biggest single move was v0.1.24, where I realized the v0.1.20 judge was double-counting issues — it was both flagging the original problem in the v0.1.20 report AND downgrading the current translation. Calibrating the judge to treat the legacy v0.1.20 reports as a soft signal (not a hard cap) was the change that pushed the pass rate from 60% to 96% in one rejudge. Then v0.1.25 finished the last 4% with 30 segment-level fixes.
Machine-readable versioning
The version registry lives in two files under /projects/:
/projects/LATEST.json— single object pointing at the current “latest” PDF/projects/VERSION.json— full version history across all 30 volumes, each withgithub_raw_urlandsha256
curl -s https://nbosa.github.io/projects/LATEST.json
# { "current_version": "v0.1.25",
# "github_repo": "https://github.com/nbosa/jingde-chuandenglu-thai",
# "vols_total": 30, "segs_pass": 807,
# "judge_avg": 4.00, "judge_pass_rate": "100%",
# "size_total_mb": 26.7, "license": "CC0 1.0" }
curl -s https://nbosa.github.io/projects/VERSION.json | jq '.volumes.vol01'
# { "vol": "vol01", "version": "v0.1.25",
# "filename": "T2076_vol01_bilingual.pdf",
# "sha256_short": "78adb62173a1",
# "github_raw_url": "https://mozilla.github.io/pdf.js/web/viewer.html?file=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fnbosa%2Fjingde-chuandenglu-thai%40main%2Fvolumes%2FT2076_vol01_bilingual.pdf",
# "size_bytes": 959400, "judge_avg": 4.00, "status": "release" }
Integrity check:
curl -L -o vol01.pdf https://mozilla.github.io/pdf.js/web/viewer.html?file=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fnbosa%2Fjingde-chuandenglu-thai%40main%2Fvolumes%2FT2076_vol01_bilingual.pdf
curl -s https://nbosa.github.io/projects/VERSION.json | jq -r '.volumes.vol01.sha256' | xxd -r -p > /tmp/expected.sha256
sha256sum vol01.pdf
# 78adb62173a1... vol01.pdf ← must start with the prefix from VERSION.json
If the hash doesn’t match, the file was tampered with in transit (or you downloaded a cached copy).
Why PDFs live in a separate repo
A 30-volume translation at full quality weighs in at ~27 MB. That’s a lot for a blog repo. Three reasons to keep the PDFs in their own repo:
- Repo size. A blog repo is a content/asset registry; a translation repo is the actual deliverable. Mixing them inflates the blog repo’s clone time and
.gitsize. - CC0 licensing. The PDFs are released under CC0 1.0 (public domain). They deserve their own repo with their own license, README, and citation instructions.
- Update independence. When the translation changes, only the translation repo needs a new commit. The blog stays as-is, just points to the new files via JSON registry.
What’s next (and what’s not)
Not on the roadmap:
- Mirroring PDFs in the blog repo. They live on github.com/nbosa/jingde-chuandenglu-thai. The blog links to them.
- EPUB or Kindle formats. The 30 bilingual PDFs are the only deliverable.
- Audio narration. A separate project at least as large as this one.
- Reverse direction (Thai→Chinese). Out of scope.
- Other Chan/Zen texts. The Wudeng Huiyuan (五燈會元, 1252) and Jingchu Xuandeng Lu (景德續燈錄) are next-tier candidates but not planned.
On the roadmap (v0.1.26+):
- Human Buddhist-scholar review. The 4.0/4.0 score is a mechanical quality gate — it checks for CJK contamination, length ratio, pinyin tone marks, and anti-fabrication rules. It does not check doctrinal accuracy. A Buddhist scholar walking through 30 volumes is the next step toward a “human-reviewed” status flag.
- Score 5 (perfect tier). The judge currently caps at 4.0. A tighter rule set (naming consistency across volumes, no redundancy in dialogue exchanges, no over-elaboration) could push toward 4.5+ or 5.0.
- Mirror to a CDN. If GitHub download speeds become a problem, a Cloudflare R2 or GitHub Releases mirror would help.
— N