Sangeetha-Grantha

Metadata Value
Status Done
Version 1.1.0
Last Updated 2026-08-29
Author Sangeetha Grantha Team

Track: Library Upgrades — August 2026

ID: TRACK-135 Status: Done Owner: Sangeetha Grantha Team Created: 2026-08-29 Updated: 2026-08-29

Goal

Refresh Kotlin, React, and Python worker dependencies to the current stable lines (29 Aug 2026). Apply security patches first, then isolated batches through AGP 9.3 / Gradle 9.7. Defer TypeScript 7, Vitest 5, Flyway 13, Logback 1.6, and kotlinx-datetime 0.8.

Context

Intent

Status: Accepted Accepted by: User (asked to create the track and start Batch 1–2c) Accepted at: 2026-08-29

Problem

Pins last moved in June–July 2026. PostgreSQL JDBC 42.7.11 is in the CVE-2026-54291 window. Ktor, Exposed, CMP, AGP, Flyway 12.x, React toolchain, and the Python lock have published stables behind what we ship. current-versions.md Python rows are also stale versus uv.lock.

Proposed outcome

Security patch plus Batches 1–2c land: drop-in minors, Exposed 1.x, Kotlin 2.4.10 + CMP 1.12, AGP 9.3.2 + Gradle 9.7.1. Docs match source files. Deferred majors stay listed on this track.

Affected users and systems

Backend (modules/backend), shared KMP (modules/shared), admin web (modules/frontend/sangita-admin-web), extraction worker (tools/krithi-extract-enrich-worker), Flyway image pins (compose.yaml, CI, worker integration tests).

Constraints

Open questions

None for Batches 1–2c. Deferred items stay on this track for a later session.

Spec

Status: Accepted Accepted by: User (asked to start Batch 1–2c) Accepted at: 2026-08-29

Requirements

  1. PostgreSQL JDBC 42.7.1142.7.13 (CVE-2026-54291).
  2. Batch 1 drop-ins: Ktor 3.5.2, coroutines 1.11.0, serialization 1.11.0, Koin 4.2.2, HikariCP 7.1.0, Logback 1.5.38, JWT 4.6.0, MockK 1.14.11, Jsoup 1.23.2, Caffeine 3.2.4, password4j 1.8.4, Shadow 9.6.1, Flyway 12.11.0 (catalog + compose.yaml + CI + worker FLYWAY_IMAGE), Micrometer 1.17.1, Google Auth 1.51.0, AWS SDK 2.54.7.
  3. Frontend Batch 1: React 19.2.8, React Router 7.18.3, TanStack Query 5.102.8, Tailwind 4.3.3, Vite 8.2.2, plugin-react 6.1.1, Vitest 4.1.11, ESLint 10.9.1, typescript-eslint 8.68.0, Playwright 1.62.1, plus the listed patch/minor devDeps. TypeScript stays ~6.0.0.
  4. Python: uv lock --upgrade of named packages (PyMuPDF, pydantic, pydantic-settings, google-genai, click, ruff, mypy). Floors in pyproject.toml stay ranges; lock is source of truth.
  5. Batch 2a: Exposed 1.0.01.5.0 (Maven latest; if 1.5.0 is unusable, land 1.4.0 and record why).
  6. Batch 2b: Kotlin 2.4.02.4.10, CMP 1.11.11.12.0; AndroidX activity-compose 1.13.0, core-ktx 1.19.0, material 1.14.0. material3 remains 1.9.0.
  7. Batch 2c: AGP 9.0.09.3.2, Gradle wrapper 9.1.09.7.1.
  8. Sync current-versions.md, tech-stack.md, migrations.md, README.md.

Design

All JVM versions live in gradle/libs.versions.toml. Flyway Community image tags must match the catalog (compose.yaml, .github/workflows/ci.yml, tools/krithi-extract-enrich-worker/tests/integration/conftest.py). Frontend caret ranges in package.json then bun install. Worker lock via uv lock --upgrade-package.

Flagged concerns

Open questions carried forward

None for this slice.

Plan

Status: Accepted Accepted by: User (asked to start Batch 1–2c) Accepted at: 2026-08-29

Files that change

Order of work

  1. Create this track and branch track-135-library-upgrades-aug-2026.
  2. Batch 1 version pins (including JDBC 42.7.13 and Flyway 12.11.0) + frontend bun install + worker uv lock.
  3. Batch 2a Exposed 1.5.0; fix compile if APIs moved.
  4. Batch 2b Kotlin 2.4.10 + CMP 1.12.0 + AndroidX.
  5. Batch 2c AGP 9.3.2 + Gradle 9.7.1 wrapper.
  6. Sync version docs.
  7. Proof commands below.

Risks

Proof

Implementation Plan

Deferred (not this session)

Progress Log