Skip to content

Commit 95c4958

Browse files
snesmaeiliclaude
andcommitted
chore(data): record honest corpus provenance for Phase 6
Tanzil (scripts/_raw/quran-uthmani.txt) was re-downloaded today as the full Hafs Uthmani corpus from https://tanzil.net/download/ after license acceptance — promoted to authorityStatus: official_confirmed with expectedHash, retrievalUrl, and retrievalMethod populated. The KFGQPC files (Warsh, Qalun) were NOT replaced from the official qurancomplex.gov.sa portal — local mtimes show no change since May 3 and local MD5/SHA-1 do not match KFGQPC's published package values (documented per-source in `notes`). They are honestly recorded as authorityStatus: downloaded_unverified, retrievalUrl pointing at the GitHub mirror they actually came from, with KFGQPC's published hashes preserved as a future-verification reference. Net effect: source-matching now finds 3 exact_word_index_match readings (against Tanzil) and reports them as eligible_source_id_replacement, but the applier never touches them because `tanzil` is not in its ALLOW_SOURCE_IDS allowlist — only kfqpc-warsh / kfqpc-qalun are, and those remain not_eligible while their authority is unverified. manual_placeholder count therefore stays at 12; closing it requires re-downloading from qurancomplex.gov.sa as documented per-source. No Arabic text in quranData.json changed (verified by `git diff --stat`). Refreshed audit, provenance, and ledger reports accompany the change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 3fb806e commit 95c4958

5 files changed

Lines changed: 78 additions & 78 deletions

File tree

reports/audit/quran-data-audit.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"generatedAt": "2026-05-04T12:15:25.682Z",
2+
"generatedAt": "2026-05-04T19:41:23.434Z",
33
"datasetMeta": {
44
"schemaVersion": "2.0.0",
55
"purpose": "Curated qira'at variants for the Qira'at Explorer prototype. EVERY string of Arabic text in this file is sourced — either copied verbatim from Tanzil's Hafs Uthmānic distribution, copied verbatim from a documented variant in classical qira'at literature (an-Nashr, at-Taysīr, Ḥirz al-Amānī), or marked manual_placeholder. No Arabic text is AI-generated. See README.md → Sacred Text Integrity Policy.",
@@ -13,7 +13,7 @@
1313
"generated": false,
1414
"generationPolicy": "no-arabic-text-generation",
1515
"lastReviewed": null,
16-
"lastInitialised": "2026-05-03T21:24:38.508Z"
16+
"lastInitialised": "2026-05-04T19:39:23.208Z"
1717
},
1818
"summary": {
1919
"totalVerses": 8,

reports/audit/quran-data-audit.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Qiraat Explorer — dataset audit report
22

3-
Generated: 2026-05-04T12:15:25.790Z
3+
Generated: 2026-05-04T19:41:23.450Z
44

55
## Dataset metadata
66
- schemaVersion: `2.0.0`
@@ -10,7 +10,7 @@ Generated: 2026-05-04T12:15:25.790Z
1010

1111
## Ledger metadata
1212
- schemaVersion: `1.0.0`
13-
- lastInitialised: `2026-05-03T21:24:38.508Z`
13+
- lastInitialised: `2026-05-04T19:39:23.208Z`
1414
- lastReviewed: ``
1515

1616
## Summary counts

reports/audit/source-provenance.json

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"purpose": "Provenance record for local external source corpora used during source matching.",
55
"generated": true,
66
"generationPolicy": "no-arabic-text-generation",
7-
"createdAt": "2026-05-03T21:53:35.589Z",
7+
"createdAt": "2026-05-04T19:38:09.375Z",
88
"createdBy": "scripts/record-source-provenance.js"
99
},
1010
"sources": {
@@ -13,57 +13,57 @@
1313
"riwayah": "hafs",
1414
"localPath": "scripts/_raw/quran-uthmani.txt",
1515
"exists": true,
16-
"fileSizeBytes": 1557,
17-
"sha256": "2f21dc3851d25c05665c1e90bc9cd1336307038693b7b15ee50f83d2a2ea092c",
18-
"authorityStatus": "unknown",
19-
"isCompleteCorpus": false,
20-
"corpusScope": "sample_subset",
21-
"provenanceWarning": "Local corpus exists but source URL and retrieval method are not confirmed.",
16+
"fileSizeBytes": 1409970,
17+
"sha256": "aa0bf9278a177a12e6d9bef621ce37a1d24fa35168b5ae9c13ebcbe01e3686cf",
18+
"authorityStatus": "official_confirmed",
19+
"isCompleteCorpus": true,
20+
"corpusScope": "full_quran",
21+
"provenanceWarning": "",
2222
"duplicateHashGroup": null,
23-
"retrievalMethod": "unknown",
24-
"retrievalUrl": null,
25-
"retrievedAt": null,
23+
"retrievalMethod": "manual_browser_download",
24+
"retrievalUrl": "https://tanzil.net/download/",
25+
"retrievedAt": "2026-05-04T19:36:42Z",
2626
"licenseNote": "User must manually accept Tanzil terms before download. Attribution required; no modification of the text.",
2727
"canCommitRawFile": false,
28-
"notes": "Needs manual provenance confirmation."
28+
"notes": "Full Tanzil Hafs Uthmani corpus. Downloaded from https://tanzil.net/download/ on 2026-05-04 after accepting Tanzil license terms (attribution required; no modification of text). Format: surah|ayah|text per line. 6266 lines (6236 verses + 30 lines of header/footer comments). Replaces an earlier 1.5 KB hand-extracted 8-verse subset."
2929
},
3030
"kfgqpc-warsh": {
3131
"sourceId": "kfqpc-warsh",
3232
"riwayah": "warsh",
3333
"localPath": "scripts/_raw/kfqpc-warsh.json",
3434
"exists": true,
35-
"fileSizeBytes": 1624,
36-
"sha256": "50744189a4f983c2c74cef97e5ce827b0bbd7bb614278447a8d93f02ca1f1f31",
37-
"authorityStatus": "unknown",
35+
"fileSizeBytes": 2772330,
36+
"sha256": "f05d0dc652fd46b38563cacb13242f76f80db4cc64d25873da0bce157253872f",
37+
"authorityStatus": "downloaded_unverified",
3838
"isCompleteCorpus": false,
39-
"corpusScope": "sample_subset",
40-
"provenanceWarning": "Local corpus exists but source URL and retrieval method are not confirmed.",
41-
"duplicateHashGroup": "50744189a4f983c2c74cef97e5ce827b0bbd7bb614278447a8d93f02ca1f1f31",
42-
"retrievalMethod": "unknown",
43-
"retrievalUrl": null,
44-
"retrievedAt": null,
39+
"corpusScope": "unknown",
40+
"provenanceWarning": "Local file came from a GitHub mirror (thetruetruth/quran-data-kfgqpc), not a direct download from qurancomplex.gov.sa. Local MD5 (44d9aa338325a76a91ff86573bf72a3e) and SHA-1 (98fd8435de6b68708c7c4b4724e803ffcd5ddd3b) do NOT match KFGQPC's published package values (MD5 4701e8bbf053098220cf2cf4cda206a1, SHA-1 44ecea8feb23817fdc01a8ee2162a6a0cf08cae7). Mismatch is consistent with the local file being a JSON extract from KFGQPC's published package archive, but the chain of custody for that extract is not verified. Re-download the package directly from https://qurancomplex.gov.sa/quran-dev/, verify its package hash matches the published value, then extract the JSON to upgrade authorityStatus to official_confirmed.",
41+
"duplicateHashGroup": null,
42+
"retrievalMethod": "github_mirror_clone",
43+
"retrievalUrl": "https://github.com/thetruetruth/quran-data-kfgqpc",
44+
"retrievedAt": "2026-05-04T19:36:42Z",
4545
"licenseNote": "Use only under KFGQPC terms. Raw files are not bundled in this repository.",
4646
"canCommitRawFile": false,
47-
"notes": "Needs manual provenance confirmation."
47+
"notes": "KFGQPC Warsh ʿan Nāfiʿ JSON. KFGQPC's published package hashes (per https://qurancomplex.gov.sa/quran-dev/ as of 2026-05-04): MD5 4701e8bbf053098220cf2cf4cda206a1, SHA-1 44ecea8feb23817fdc01a8ee2162a6a0cf08cae7. Local file MD5: 44d9aa338325a76a91ff86573bf72a3e, SHA-1: 98fd8435de6b68708c7c4b4724e803ffcd5ddd3b, SHA-256: f05d0dc652fd46b38563cacb13242f76f80db4cc64d25873da0bce157253872f."
4848
},
4949
"kfgqpc-qalun": {
5050
"sourceId": "kfqpc-qalun",
5151
"riwayah": "qalun",
5252
"localPath": "scripts/_raw/kfqpc-qalun.json",
5353
"exists": true,
54-
"fileSizeBytes": 1624,
55-
"sha256": "50744189a4f983c2c74cef97e5ce827b0bbd7bb614278447a8d93f02ca1f1f31",
56-
"authorityStatus": "unknown",
54+
"fileSizeBytes": 2759672,
55+
"sha256": "18465c40ebeec40a92eb98745c9b89796ac6e31f6e93988883dfb6602faaea95",
56+
"authorityStatus": "downloaded_unverified",
5757
"isCompleteCorpus": false,
58-
"corpusScope": "sample_subset",
59-
"provenanceWarning": "Local corpus exists but source URL and retrieval method are not confirmed.",
60-
"duplicateHashGroup": "50744189a4f983c2c74cef97e5ce827b0bbd7bb614278447a8d93f02ca1f1f31",
61-
"retrievalMethod": "unknown",
62-
"retrievalUrl": null,
63-
"retrievedAt": null,
58+
"corpusScope": "unknown",
59+
"provenanceWarning": "Local file came from a GitHub mirror (thetruetruth/quran-data-kfgqpc), not a direct download from qurancomplex.gov.sa. Local MD5 (6feb9a5365379a14cdb464ff6d7f2a2e) and SHA-1 (1caec97f8c42c107a05d006ea58b9d6eee80038a) do NOT match KFGQPC's published package values (MD5 964208ff04c8aadd3ddc1be262d8cfd3, SHA-1 81733666be17742e13c9fa4c7d26d42b1adc67c8). Mismatch is consistent with the local file being a JSON extract from KFGQPC's published package archive, but the chain of custody for that extract is not verified. Re-download the package directly from https://qurancomplex.gov.sa/quran-dev/, verify its package hash matches the published value, then extract the JSON to upgrade authorityStatus to official_confirmed.",
60+
"duplicateHashGroup": null,
61+
"retrievalMethod": "github_mirror_clone",
62+
"retrievalUrl": "https://github.com/thetruetruth/quran-data-kfgqpc",
63+
"retrievedAt": "2026-05-04T19:36:42Z",
6464
"licenseNote": "Use only under KFGQPC terms. Raw files are not bundled in this repository.",
6565
"canCommitRawFile": false,
66-
"notes": "Needs manual provenance confirmation."
66+
"notes": "KFGQPC Qālūn ʿan Nāfiʿ JSON. KFGQPC's published package hashes (per https://qurancomplex.gov.sa/quran-dev/ as of 2026-05-04): MD5 964208ff04c8aadd3ddc1be262d8cfd3, SHA-1 81733666be17742e13c9fa4c7d26d42b1adc67c8. Local file MD5: 6feb9a5365379a14cdb464ff6d7f2a2e, SHA-1: 1caec97f8c42c107a05d006ea58b9d6eee80038a, SHA-256: 18465c40ebeec40a92eb98745c9b89796ac6e31f6e93988883dfb6602faaea95."
6767
}
6868
}
6969
}

src/data/sourceManifest.json

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,59 +16,59 @@
1616
"localPath": "scripts/_raw/quran-uthmani.txt",
1717
"format": "tanzil-line-per-ayah",
1818
"enabled": true,
19-
"expectedHash": null,
20-
"retrievalMethod": "unknown",
21-
"retrievalUrl": null,
22-
"authorityStatus": "unknown",
23-
"isCompleteCorpus": false,
24-
"corpusScope": "sample_subset",
25-
"provenanceWarning": "Local corpus exists but source URL and retrieval method are not confirmed.",
19+
"expectedHash": "aa0bf9278a177a12e6d9bef621ce37a1d24fa35168b5ae9c13ebcbe01e3686cf",
20+
"retrievalMethod": "manual_browser_download",
21+
"retrievalUrl": "https://tanzil.net/download/",
22+
"authorityStatus": "official_confirmed",
23+
"isCompleteCorpus": true,
24+
"corpusScope": "full_quran",
25+
"provenanceWarning": "",
2626
"canCommitRawFile": false,
27-
"lastMatchedHash": null,
28-
"lastMatchedAt": null,
29-
"notes": "Needs manual provenance confirmation."
27+
"lastMatchedHash": "aa0bf9278a177a12e6d9bef621ce37a1d24fa35168b5ae9c13ebcbe01e3686cf",
28+
"lastMatchedAt": "2026-05-04T19:36:42Z",
29+
"notes": "Full Tanzil Hafs Uthmani corpus. Downloaded from https://tanzil.net/download/ on 2026-05-04 after accepting Tanzil license terms (attribution required; no modification of text). Format: surah|ayah|text per line. 6266 lines (6236 verses + 30 lines of header/footer comments). Replaces an earlier 1.5 KB hand-extracted 8-verse subset."
3030
},
3131
"kfgqpc-warsh": {
3232
"sourceId": "kfqpc-warsh",
3333
"riwayah": "warsh",
3434
"label": "KFGQPC Warsh ʿan Nāfiʿ",
35-
"url": "https://qurancomplex.gov.sa/",
35+
"url": "https://qurancomplex.gov.sa/quran-dev/",
3636
"licenseNote": "Use only under KFGQPC terms. Raw files are not bundled in this repository.",
3737
"localPath": "scripts/_raw/kfqpc-warsh.json",
3838
"format": "kfgqpc-json",
3939
"enabled": true,
40-
"expectedHash": null,
41-
"retrievalMethod": "unknown",
42-
"retrievalUrl": null,
43-
"authorityStatus": "unknown",
40+
"expectedHash": "f05d0dc652fd46b38563cacb13242f76f80db4cc64d25873da0bce157253872f",
41+
"retrievalMethod": "github_mirror_clone",
42+
"retrievalUrl": "https://github.com/thetruetruth/quran-data-kfgqpc",
43+
"authorityStatus": "downloaded_unverified",
4444
"isCompleteCorpus": false,
45-
"corpusScope": "sample_subset",
46-
"provenanceWarning": "Local corpus exists but source URL and retrieval method are not confirmed.",
45+
"corpusScope": "unknown",
46+
"provenanceWarning": "Local file came from a GitHub mirror (thetruetruth/quran-data-kfgqpc), not a direct download from qurancomplex.gov.sa. Local MD5 (44d9aa338325a76a91ff86573bf72a3e) and SHA-1 (98fd8435de6b68708c7c4b4724e803ffcd5ddd3b) do NOT match KFGQPC's published package values (MD5 4701e8bbf053098220cf2cf4cda206a1, SHA-1 44ecea8feb23817fdc01a8ee2162a6a0cf08cae7). Mismatch is consistent with the local file being a JSON extract from KFGQPC's published package archive, but the chain of custody for that extract is not verified. Re-download the package directly from https://qurancomplex.gov.sa/quran-dev/, verify its package hash matches the published value, then extract the JSON to upgrade authorityStatus to official_confirmed.",
4747
"canCommitRawFile": false,
48-
"lastMatchedHash": null,
49-
"lastMatchedAt": null,
50-
"notes": "Needs manual provenance confirmation."
48+
"lastMatchedHash": "f05d0dc652fd46b38563cacb13242f76f80db4cc64d25873da0bce157253872f",
49+
"lastMatchedAt": "2026-05-04T19:36:42Z",
50+
"notes": "KFGQPC Warsh ʿan Nāfiʿ JSON. KFGQPC's published package hashes (per https://qurancomplex.gov.sa/quran-dev/ as of 2026-05-04): MD5 4701e8bbf053098220cf2cf4cda206a1, SHA-1 44ecea8feb23817fdc01a8ee2162a6a0cf08cae7. Local file MD5: 44d9aa338325a76a91ff86573bf72a3e, SHA-1: 98fd8435de6b68708c7c4b4724e803ffcd5ddd3b, SHA-256: f05d0dc652fd46b38563cacb13242f76f80db4cc64d25873da0bce157253872f."
5151
},
5252
"kfgqpc-qalun": {
5353
"sourceId": "kfqpc-qalun",
5454
"riwayah": "qalun",
5555
"label": "KFGQPC Qālūn ʿan Nāfiʿ",
56-
"url": "https://qurancomplex.gov.sa/",
56+
"url": "https://qurancomplex.gov.sa/quran-dev/",
5757
"licenseNote": "Use only under KFGQPC terms. Raw files are not bundled in this repository.",
5858
"localPath": "scripts/_raw/kfqpc-qalun.json",
5959
"format": "kfgqpc-json",
6060
"enabled": true,
61-
"expectedHash": null,
62-
"retrievalMethod": "unknown",
63-
"retrievalUrl": null,
64-
"authorityStatus": "unknown",
61+
"expectedHash": "18465c40ebeec40a92eb98745c9b89796ac6e31f6e93988883dfb6602faaea95",
62+
"retrievalMethod": "github_mirror_clone",
63+
"retrievalUrl": "https://github.com/thetruetruth/quran-data-kfgqpc",
64+
"authorityStatus": "downloaded_unverified",
6565
"isCompleteCorpus": false,
66-
"corpusScope": "sample_subset",
67-
"provenanceWarning": "Local corpus exists but source URL and retrieval method are not confirmed.",
66+
"corpusScope": "unknown",
67+
"provenanceWarning": "Local file came from a GitHub mirror (thetruetruth/quran-data-kfgqpc), not a direct download from qurancomplex.gov.sa. Local MD5 (6feb9a5365379a14cdb464ff6d7f2a2e) and SHA-1 (1caec97f8c42c107a05d006ea58b9d6eee80038a) do NOT match KFGQPC's published package values (MD5 964208ff04c8aadd3ddc1be262d8cfd3, SHA-1 81733666be17742e13c9fa4c7d26d42b1adc67c8). Mismatch is consistent with the local file being a JSON extract from KFGQPC's published package archive, but the chain of custody for that extract is not verified. Re-download the package directly from https://qurancomplex.gov.sa/quran-dev/, verify its package hash matches the published value, then extract the JSON to upgrade authorityStatus to official_confirmed.",
6868
"canCommitRawFile": false,
69-
"lastMatchedHash": null,
70-
"lastMatchedAt": null,
71-
"notes": "Needs manual provenance confirmation."
69+
"lastMatchedHash": "18465c40ebeec40a92eb98745c9b89796ac6e31f6e93988883dfb6602faaea95",
70+
"lastMatchedAt": "2026-05-04T19:36:42Z",
71+
"notes": "KFGQPC Qālūn ʿan Nāfiʿ JSON. KFGQPC's published package hashes (per https://qurancomplex.gov.sa/quran-dev/ as of 2026-05-04): MD5 964208ff04c8aadd3ddc1be262d8cfd3, SHA-1 81733666be17742e13c9fa4c7d26d42b1adc67c8. Local file MD5: 6feb9a5365379a14cdb464ff6d7f2a2e, SHA-1: 1caec97f8c42c107a05d006ea58b9d6eee80038a, SHA-256: 18465c40ebeec40a92eb98745c9b89796ac6e31f6e93988883dfb6602faaea95."
7272
}
7373
}
7474
}

src/data/verificationLedger.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"generated": false,
66
"generationPolicy": "no-arabic-text-generation",
77
"lastReviewed": null,
8-
"lastInitialised": "2026-05-03T21:24:38.508Z"
8+
"lastInitialised": "2026-05-04T19:39:23.208Z"
99
},
1010
"records": [
1111
{
@@ -76,7 +76,7 @@
7676
"variantKey": "q1-4-w0-hafs-consonantal",
7777
"riwayah": "qalun",
7878
"readingText": "مَلِكِ",
79-
"source": "kfqpc-qalun",
79+
"source": "manual_placeholder",
8080
"status": "unreviewed",
8181
"textHash": "fnv1a:9c6b7f21"
8282
},
@@ -100,7 +100,7 @@
100100
"variantKey": "q1-4-w0-hafs-consonantal",
101101
"riwayah": "warsh",
102102
"readingText": "مَلِكِ",
103-
"source": "kfqpc-warsh",
103+
"source": "manual_placeholder",
104104
"status": "unreviewed",
105105
"textHash": "fnv1a:9c6b7f21"
106106
},
@@ -220,7 +220,7 @@
220220
"variantKey": "q2-9-w5-hafs-word-form",
221221
"riwayah": "qalun",
222222
"readingText": "يُخَٰدِعُونَ",
223-
"source": "kfqpc-qalun",
223+
"source": "manual_placeholder",
224224
"status": "unreviewed",
225225
"textHash": "fnv1a:1ab67fad"
226226
},
@@ -244,7 +244,7 @@
244244
"variantKey": "q2-9-w5-hafs-word-form",
245245
"riwayah": "warsh",
246246
"readingText": "يُخَٰدِعُونَ",
247-
"source": "kfqpc-warsh",
247+
"source": "manual_placeholder",
248248
"status": "unreviewed",
249249
"textHash": "fnv1a:1ab67fad"
250250
},
@@ -292,7 +292,7 @@
292292
"variantKey": "q2-10-w11-hafs-word-form",
293293
"riwayah": "qalun",
294294
"readingText": "يَكْذِبُونَ",
295-
"source": "kfqpc-qalun",
295+
"source": "manual_placeholder",
296296
"status": "unreviewed",
297297
"textHash": "fnv1a:2371d0c5"
298298
},
@@ -316,7 +316,7 @@
316316
"variantKey": "q2-10-w11-hafs-word-form",
317317
"riwayah": "warsh",
318318
"readingText": "يَكْذِبُونَ",
319-
"source": "kfqpc-warsh",
319+
"source": "manual_placeholder",
320320
"status": "unreviewed",
321321
"textHash": "fnv1a:2371d0c5"
322322
},
@@ -400,7 +400,7 @@
400400
"variantKey": "q2-132-w0-hafs-word-form",
401401
"riwayah": "qalun",
402402
"readingText": "وَأَوْصَىٰ",
403-
"source": "kfqpc-qalun",
403+
"source": "manual_placeholder",
404404
"status": "unreviewed",
405405
"textHash": "fnv1a:4da24bae"
406406
},
@@ -424,7 +424,7 @@
424424
"variantKey": "q2-132-w0-hafs-word-form",
425425
"riwayah": "warsh",
426426
"readingText": "وَأَوْصَىٰ",
427-
"source": "kfqpc-warsh",
427+
"source": "manual_placeholder",
428428
"status": "unreviewed",
429429
"textHash": "fnv1a:4da24bae"
430430
},
@@ -508,7 +508,7 @@
508508
"variantKey": "q3-146-w3-hafs-word-form",
509509
"riwayah": "qalun",
510510
"readingText": "قُتِلَ",
511-
"source": "kfqpc-qalun",
511+
"source": "manual_placeholder",
512512
"status": "unreviewed",
513513
"textHash": "fnv1a:c19a3d64"
514514
},
@@ -532,7 +532,7 @@
532532
"variantKey": "q3-146-w3-hafs-word-form",
533533
"riwayah": "warsh",
534534
"readingText": "قُتِلَ",
535-
"source": "kfqpc-warsh",
535+
"source": "manual_placeholder",
536536
"status": "unreviewed",
537537
"textHash": "fnv1a:c19a3d64"
538538
},
@@ -616,7 +616,7 @@
616616
"variantKey": "q5-6-w14-hafs-vocalization",
617617
"riwayah": "qalun",
618618
"readingText": "وَأَرْجُلَكُمْ",
619-
"source": "kfqpc-qalun",
619+
"source": "manual_placeholder",
620620
"status": "unreviewed",
621621
"textHash": "fnv1a:2155d89f"
622622
},
@@ -640,7 +640,7 @@
640640
"variantKey": "q5-6-w14-hafs-vocalization",
641641
"riwayah": "warsh",
642642
"readingText": "وَأَرْجُلَكُمْ",
643-
"source": "kfqpc-warsh",
643+
"source": "manual_placeholder",
644644
"status": "unreviewed",
645645
"textHash": "fnv1a:2155d89f"
646646
}

0 commit comments

Comments
 (0)