# Release timeline & known issues The releases that explain today's invariants, in order, with what each one changed and the rule it left behind; then the items that are still open and who owns them. - Page: - Updated: 2026-10-16 - Verified against: `d2f2e41` on 2026-09-27 - From the Sri Guru Granth Sahib Ji — Knowledge Base wiki. Sri Guru Granth Sahib Ji is quoted verbatim, cited by Ang, and never altered. --- `CHANGELOG.md` is the authoritative release history. This page keeps the releases that explain an invariant you will meet in the code, and the items that are still open. The 2026-06 static audit and live verification passes live under [reports](https://docs.gurbanisoul.com/reports/). ## Timeline | Release | Date | What changed | The invariant it left | |---|---|---|---| | **Live verification** | 2026-06-19 | Scripture integrity proven end to end: reconcile char-exact, golden all-pass, 1,430 Angs gap-free, 60,658 lines; footer/version bug fixed. | The Ang 1256 "duplicate" is a **legitimate refrain — never de-duplicate it.** | | **v2.9.3** | 2026-06-19 | `MANIFEST.json` re-certified; version strings synced; `build_db.py` no longer hardcodes a version; `rebuild_all.sh` builds the analytics, vaar and semantic tables (validated by a full green rebuild, vaars=22); `concept_lines(line_id)` index fixes the Constellation hang. | A rebuild populates every layer; large concepts need that index. | | **v2.9.4** | 2026-06-19 | Lineage redesign, plain-language Insights captions; `line_neighbors` rebuilt as exact sparse cosine (header-excluded, verbatim-twin de-duplicated, 0.30 floor, `source='tfidf-exact-cosine-lite'`, scipy at build) with relatedness bands; `db_sha256` re-certified. | Neighbour scores are shown as bands, never a raw percentage. Scripture byte-identical. | | **v2.9.5** | 2026-06-19 | Insights accuracy from the audit: theme tags curated, `akal_kaal` split into `akal` + `kaal` (concepts 53 → 54), resonance refreshed, full-edge theme network (min-PPMI 0.7 by default), hardened neighbour matmul; PPMI/Jaccard recompute exact. | 54 concepts. Scripture byte-identical. | | **v2.10.0** | 2026-06-20 | Bundled **Sant Lipi** Gurmukhi webfont (SIL OFL 1.1, `unicode-range`-scoped) and the **traditional saroop** display toggle (`saroop.ts`), which collapses the doubled subjoined ya in rendered glyphs only. | **Display only:** the corpus, DB, API, search and copy stay verbatim; the saroop markup never enters stored text or `/api`. Sant Lipi's inline addha-yayya is a legitimate but *different* tradition from the printed Bir's deep subscript; pending a scholar's review. | | **v2.10.1** | 2026-06-20 | Saroop becomes the default rendering without writing `localStorage`; an explicit choice (`sggs_saroop` `'0'`/`'1'`) is stored and respected. | To change the default, flip `let ON` in `saroop.ts`. | | **v2.11.0** | 2026-06-26 | Apple-grade hardening: `verify.py` FTS tokens sanitised and quoted with a central empty-`MATCH` guard (a crafted quote/asterisk no longer 500s or leaks the exception type); `min_ppmi` clamped; `nosniff`, `X-Frame-Options: DENY`, `Referrer-Policy: no-referrer` on every response; `lang="pa"` on verse containers; pinch-zoom re-enabled; charts honour reduced motion; theme network gains a data-table alternative; styled 404. | 500s return a generic body. Security headers on every response. | | **v2.12.1 / iOS 1.1.1** | 2026-09-05 | Pre-TestFlight hardening. | `romannorm.py` is the single Roman fold and must equal the pipeline's (24,719 golden vectors); every integer query parameter goes through `_int()`; the Study-Trail pin reads verbatim text from `data-gm`, never rendered text (`/api/lines?ids=` repairs old pins); iOS `sheetHosted` gate, SwiftData ladder, `SavedLineSchemaV1`; an English-bundled iOS build needs `LICENSED: true`. | | **v1.0.0** | 2026-09-06 | Version strings reset to one unified baseline ahead of the first public release; no code, corpus or DB change. | One version number across web, API and app ([ADR-0004](https://docs.gurbanisoul.com/adr/0004-unified-semver/)). | | **v1.1.0 – v1.1.5** | 2026-09 | `comp_id` groups a heading run with its composition (post-pass 1b); v1.1.4 demoted 233 verses mis-flagged as headings; CI-gated deploys; Soul Gold brand. | No body line ever changes `comp_id`; deploys only through CI. | | **v1.3.8** | 2026-09-24 | Three repositories: data, platform, app ([ADR-0007](https://docs.gurbanisoul.com/adr/0007-three-repositories/)); the database arrives by pin ([ADR-0008](https://docs.gurbanisoul.com/adr/0008-dataset-by-pin/)). | `dataset.lock.json` is the only way a dataset changes here; the editorial ledger is 4 rules, 11 applications. | | **v1.3.9** | 2026-09-25 | Every bounded context runs as its own service on staging behind a gateway generated from the route table ([ADR-0010](https://docs.gurbanisoul.com/adr/0010-services-behind-a-generated-gateway/)); `/api/v1/*` with strict errors beside a byte-identical legacy `/api/*`; request ids; continuous production verification. | Routing is generated, never hand-written; legacy `/api/*` stays byte-identical (the golden contract pins it). | | **v1.3.10** | 2026-09-25 | The API runs as Python functions inside the Vercel web project in production ([ADR-0011](https://docs.gurbanisoul.com/adr/0011-api-as-functions-in-the-web-project/)), replayed against the golden contract before it goes live; the Render API keeps deploying as the rollback; this wiki launches at docs.gurbanisoul.com. | The website and the API deploy — and roll back — together. | | **v1.4.0** | 2026-10-14 | The Knowledge Base is redressed (thirteen themes, a new shell) and gains the app's Reader, Nitnem, Search and Raag Clock; the wiki gains its page menu, Markdown and PDF. The API is unchanged and production keeps the single `all` function. | A web release ships first and the app follows as iOS `1.4.0 (1)` from the tag; until that update is approved the site reports 1.4.0 and the App Store binary 1.3.10. | ## Still open | Item | State | Owner | |---|---|---| | Analytics-chart accessibility: the D3 charts are mouse-driven; the theme network has a data-table alternative, the others do not yet | open | web | | One line with an empty `translit_norm` (id 35328, Ang 829) | fixes on the next rebuild; tracked row by row in sggs-data's data-quality baseline | data | | 21 source-faithful lines with a vowel sign that has no base consonant (Angs 214, 342, 695, 698, 699, 897, 1203, 1205) | flagged for scholarly review; never silently changed (the Ang 1354/1358/1387 rows were resolved by the editorial corrections approved in the scholar review of 2026-09-24) | scholar review | | Eight web-only colour themes (`review` in `docs/brand/web-themes.json`) and the rule that Gurmukhi is ink in every theme: scholar review | shipped in 1.4.0 labelled `review`; the review was waived for the release by the owner on 2026-10-13 and runs after it | brand | | Five-person task check of the redressed Knowledge Base | waived for the 1.4.0 release by the owner on 2026-10-13; runs after it | web | | The site reports 1.4.0 while the App Store binary is 1.3.10 | planned gap; closes when iOS 1.4.0 (1) is approved and released | release | | Japji `author = null`: author filters for Guru Nanak miss it | known, deferred | data | | `comp_type` mislabelled in places | suppressed at the display layer; prefer `comp_id`/`section` | data | What each of these means for the text is on [the editorial ledger](https://docs.gurbanisoul.com/data/editorial-ledger/) page. Closed since the last list: the traditional saroop rendering was accepted as the app's default at the brand sensitivity gate on 2026-09-26. The deep-subscript ya that acceptance said would need another font was in Sant Lipi all along, as the yakash sign U+0A75: since 2026-10-16 the saroop draws it, matching the printed Bir, and goes back to the scholar with icon v2; `Validation-Report.md` is archived.