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:

  1. All 30 volumes shipped. Not just vol04 — every volume in the corpus, 807 segments, in 30 standalone bilingual PDFs.
  2. 100% pass rate, 4.00/4.00 average. The strict judge (v0.1.22) scores every segment at 4 or higher.
  3. Public release. Bilingual PDFs are on GitHub, CC0 1.0, no paywall, no signup. Anyone can download, modify, redistribute, or use commercially.
  4. 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

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 PDF 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

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/:

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:

  1. 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 .git size.
  2. 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.
  3. 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