Faculty onboarding · walkthrough
From “yes I'll review” to your first signed entry — in 30 minutes.
ทุก entry วันนี้อยู่ที่ขั้น ◆ Verified (อ้างอิง + cross-check อย่างน้อย 2 แหล่ง). ขั้นถัดไป — ✓ Expert-reviewed — ต้องมีอาจารย์ผู้เชี่ยวชาญลงนาม Ed25519 และยังไม่มี entry ไหนไปถึง: คุณจะเป็นผู้ลงนามคนแรก. หน้านี้คือ flow จริง — มี $ prompt + sample output + อธิบายว่าแต่ละขั้นตอนทำอะไร (ชื่อและค่าในตัวอย่างเป็นค่าสมมติ).
First-time setup
~30 min
generate key, register PR, install Node
Per entry after
~5 min
read, edit, sign, PR
Hardware needed
None
laptop with Node 20+ and Git
Before you start
What signing means
When you sign an entry, you publicly attest that you personally read every clinical sentence, cross-checked at least one dose against an independent authoritative source, and stand behind the content. Your signature is verifiable by any reader in the world, forever, with no central authority needed. It is structurally stronger than any reviewing relationship in print — Plumb's citations point at a Plumb's edition; here, your name is on the byte-level hash of the exact entry you reviewed.
The flow
5 steps to your first signed entry
Clone the repo + install
2 minคุณต้องมี Node.js 20+ และ Git. ไม่ต้องมี server, ไม่ต้องสมัครบัญชี.
$ git clone https://github.com/palmzamak2547/cuvetsmo-source.git $ cd cuvetsmo-source $ npm install added 359 packages in 48s
Generate your signing key
3 minเลือก kid (key id) ที่สั้น เสถียร และเป็น kebab-case. Convention: firstname.lastname.
$ node scripts/keygen.mjs somsri.example --display "รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง" ✓ Ed25519 keypair generated kid: somsri.example display: รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง fingerprint: ed25519:7c2b9e4f1a3d0c87 public: content/keys/somsri.example.pub.json (COMMIT this) private: ~/.cuvetsmo-keys/somsri.example.priv.json (NEVER commit — outside repo)
key-rotationissue and we'll revoke + reissue.Register your public key (one-time PR)
5 minCreate a PR titled keys: register somsri.example. The maintainer merges after verifying your name + affiliation against the faculty directory.
$ git checkout -b keys/somsri-example $ git add content/keys/somsri.example.pub.json $ git commit -m "keys: register somsri.example" $ git push origin keys/somsri-example $ gh pr create --title "keys: register somsri.example" ✓ PR opened: github.com/palmzamak2547/cuvetsmo-source/pull/N
Pick an entry, review, sign
5–10 min per entryเปิด content/drugs/<slug>.json — read every clinical section, confirm each cited source still says what the entry says, fix any Thai phrasing, cross-check at least one dose against an independent source. Then add your reviewer block:
json"reviewedBy": {
"name": "รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง",
"title": "รองศาสตราจารย์",
"department": "ภาควิชาเภสัชวิทยา",
"affiliation": "คณะสัตวแพทยศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย",
"date": "2026-06-15",
"did": "did:web:source.cuvetsmo.com:faculty:somsri-example",
"signerKeyId": "ed25519:7c2b9e4f1a3d0c87"
}Then sign:
$ npm run check OK — 618 content unit(s) pass Iron Rule 0 integrity checks. $ node scripts/sign.mjs meloxicam --signer somsri.example ✓ Signed meloxicam signer: รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง (kid: somsri.example) fingerprint: ed25519:7c2b9e4f1a3d0c87 contentHash: 10d5c44cc278d863f9d4b8ee1ed669bcc40baceaa6f74bad78ff10c3d859b033 signature: bm5Hb55PtAwQd/Udiue+IyPTjhJ3... (base64, 88 chars) version: 2 log seq: 2 Verify it: npm run verify (CLI lint, crypto-verifies all signatures) http://localhost:3000/verify/meloxicam (browser-side verify, no server trust)
Open the PR, the entry becomes expert-reviewed
3 minFinal PR for the signed entry:
$ git checkout -b sign/meloxicam $ git add content/drugs/meloxicam.json content/log/transparency-log.jsonl $ git commit -m "Sign meloxicam after editorial review" $ git push origin sign/meloxicam $ gh pr create --title "Sign meloxicam — first faculty review" --fill
Once a maintainer merges, the entry moves from ◆ Verified to ✓ Expert-reviewed (emerald) on the live site, and your name + title + date show up in the trust stamp + the transparency log + the chain of trust visualization. Anyone who fetches the entry — now or 10 years from now — can verify in their browser that you specifically vouched for it on this date.
Quick reference
Pre-signing checklist
- ✓I read every clinical section in full (not skimmed)
- ✓I cross-checked at least one dosage against an independent authoritative source
- ✓I confirmed every dose cell still matches the source it cites
- ✓I corrected any Thai phrasing that read awkwardly to a Thai vet practitioner
- ✓
npm run checkpasses locally with no errors - ✓I added myself to
reviewedBywith full title + affiliation - ✓I am signing for content I reviewed — not delegating to a student or RA
Boundaries
When NOT to sign
- ✗You skimmed instead of reading every line
- ✗You signed off on a dose without opening the source it cites
- ✗A student helped translate but you didn't re-read after their edits
- ✗You're uncertain about a specific dose — flag the cell as needing further review instead
- ✗You feel pressure from the maintainer team — let them know rather than sign reluctantly