Skip to content

Architecture

Three repositories and pins

1 min readUpdated Verified against a661527 on 2026-09-26

Page actions

ChatGPT and Claude are third-party services. The link gives them this page's public address and a short instruction. This site records nothing.

The hand-offs between sggs-data, sggs-platform and gurbani-soul-ios, each a reviewed lock file with a commit and a checksum, drawn as one poster you can step through.

The project is three repositories joined by pins — small, reviewed files naming an exact commit and the sha256 of the artifact taken from it — so nothing is copied by hand and nothing can drift. The newcomer’s version of this page is How the repositories fit together; the decisions are ADR-0007 and ADR-0008.

Three repositories and their pins sggs-data builds and publishes the scripture database; sggs-platform pins it by commit and sha256, serves the API and website, and publishes the golden contract; gurbani-soul-ios pins the contract at a platform release and builds its own database from the same dataset pin; this wiki pins the sibling repositories’ docs. One version number spans web, API and app. 02 · Three repositories and their pins Nothing is copied by hand between data, platform and app — every hand-off is areviewed lock file with a commit and a checksum sggs-data — the scripturesggs-platform — API and webgurbani-soul-ios Source Bir PDF — sha256 attestedSource Bir PDFsha256 attestedRebuild + gates — char-exact, ledgeredRebuild + gateschar-exact, ledgereddb/sggs.sqlite — commit + sha256db/sggs.sqlitecommit + sha256pinsdataset.lock.json — commit + sha256dataset.lock.jsoncommit + sha256make dataset — verified, atomicmake datasetverified, atomicgeneratesAPI + website — one APP_VERSIONAPI + websiteone APP_VERSIONcontract/ — golden vectors — + the OpenAPI speccontract/golden vectors+ the OpenAPI specpinssame pinvendor.lock.json — contract, by tagvendor.lock.jsoncontract, by tagBundled DB pair — built from the pinBundled DB pairbuilt from the pindataset.lock.json — the same pindataset.lock.jsonthe same pinByte-parity tests — Swift = PythonByte-parity testsSwift = PythonThe app — version = platformThe appversion = platformsources.lock.json — sibling docs (wiki)sources.lock.jsonsibling docs (wiki)One version number — the website = the API = the App Store binaryOne version numberthe website = the API = the App Store binary data at restcomponent in this projectpin: a reviewed lock fileproven, verified stategate: fails the build or the deployflow: data or control moves this wayreference: pins, reads or derives from Source of truth: dataset.lock.json · scripts/data/fetch_dataset.py ·docs-site/sources.lock.json · tools/gen_golden_vectors.py v1.3.10 · verified 2026-09-27 · d85c2adSri Guru Granth Sahib Ji — Knowledge Base · engineering wiki
Poster 02 — three repositories and the pins that join them · open full size

The four pins

PinWhereNamesProved by
dataset.lock.jsonplatformsggs-data commit · db/sggs.sqlite sha256 · sizemake dataset-check (scripts/data/fetch_dataset.py --check-pin), scripture-integrity
dataset.lock.jsonappthe same objectthe app’s CI
vendor.lock.jsonappplatform tag vX.Y.Z · sha256 per vendored contract/ filethe app’s parity tests and release gate
docs-site/sources.lock.jsonplatform (wiki)sibling commit · sha256 per published doctools/fetch_sibling_docs.py --check in the docs job

A bump of any of them is a small pull request that a reviewer can read in full. The wiki’s own pin is proposed automatically: every Monday docs-pins opens that pull request when a sibling changed a file the wiki publishes, and moves nothing otherwise.