சரிபார்ப்பு · The Method
Nothing in this audit needs trust in us. The catalog is public, the registry is public, and every claim carries its source. Here is how to check — one book by hand, or the whole screen with our scripts.
1 · Check one book by hand (two minutes)
- Pick any row in the Ledger. Note the ISBN and the catalog title.
- Open isbn.gov.in → IsbnSearch, choose search type ISBN, paste the number (with hyphens). The registry returns the true owner: title, author, publisher, language, registration date. The registry serves Indian IPs; from abroad, expect it to stall — it does that to everyone.
- Compare. If the registry names a different book, that ISBN is allocated-elsewhere — the catalog copy is riding a stolen or fabricated number. If the registry returns nothing, the number was never registered.
- Cross-check the title on OpenLibrary, WorldCat, and plain web search (put the bare ISBN in quotes). A book with a genuinely registered ISBN leaves some trace. Most of our hijacked titles leave none.
- See the library's own copy: ACL Chennai OPAC and KCL Madurai OPAC (links in the Ledger's footer of each row's biblio). If an OPAC is down — ACL's has been, repeatedly — the hash-chained HTML snapshot in
docs/evidence/ preserves what we saw, byte for byte.
2 · Re-run the whole screen (one evening)
The repo bundles every script we used. From a fresh clone:
git clone https://github.com/LogicIncZo/tn-fake-isbn-audit
cd tn-fake-isbn-audit
# integrity check — every dataset matches its published hash
sha256sum -c evidence/SHA256SUMS
# the live registry check for any ISBN list (one req / ~1.2 s — be polite;
# isbn.gov.in serves Indian IPs, from abroad expect stalls)
python3 scripts/verify_full_registry.py
# rebuild the report page's stats from the raw ledgers
python3 scripts/build_site.py
git diff --stat docs/index.html # numbers should not move
To re-harvest the catalogs yourself (they are public OPACs; we used one request per record, 1.5 s apart):
# ACL Chennai — 5,108 biblio records via the OPAC search index
python3 scripts/harvest_acl.py # list pages, then stem sweep + detail pages
python3 scripts/stem_sweep.py acl # pull every catalogued ISBN under each fake-pub stem
# KCL Madurai — 354 Phoenix-collection records
python3 scripts/harvest_kcl.py && python3 scripts/extract_kcl.py
# registry lookup + classification (check-digit, owner, registrant concentration, waves)
python3 scripts/verify_full_registry.py
python3 scripts/fix_acl_titles.py # restores true titles from registry rows
3 · What each verdict means, precisely
- HIJACKED-ALLOCATED-ELSEWHERE — the ISBN is valid (checksum passes) and the registry has allocated it to a named work by a named registrant that is not what the catalog says. Example: ACL copy "Beyond Borders" shelved as Phoenix, ISBN 978-93-92360-12-1; registry says the number belongs to Banjar Ke Rookh — Vivek Malviya (Hindi, registered 22/12/2021).
- NOT-IN-REGISTRY — checksum passes but no allocation exists. Numbers minted to look real.
- NO-ISBN-IN-CATALOG — the record carries no ISBN to check. Counted, not judged. Every screened record falls in one of these three classes; rows where the registry confirms the catalog copy are excluded from the screen entirely and are not part of the 569.
4 · The evidence chain
docs/evidence/ — archived OPAC pages (ACL + KCL) with SHA256SUMS over every byte; the DVAC complaint scan (3 pages); archive.org captures of the Phoenix website.
data/claims-register.csv — the 29 claims in the report, each with its L0–L5 evidence rung.
report/PROVENANCE.md — chain of custody: what was fetched, when, from where, and what the scripts cannot prove (procurement bills, physical shelf counts — those are for DVAC, which holds the complaint).
evidence/SHA256SUMS — recompute anytime: sha256sum -c evidence/SHA256SUMS from the repo root.
5 · Honest limits
- The registry check is a snapshot. Allocations can be amended; if a registrant transfers an ISBN after our check, the live registry may differ. The snapshot date is on every row.
- "Registry matches" can still hide problems we did not test (print quality, physical existence on the shelf).
- Price columns are the number printed on the catalog record, not audited spend. Total visible spend ₹1,22,018 is an upper-bound on what the records claim — bills live in government files.
- ACL's OPAC was intermittently unreachable during our harvest; the 188-record gap analysis and the login-wall limitation are documented in PROVENANCE.md, not smoothed over.