| Metadata | Value |
|---|---|
| Status | In progress |
| Version | 0.4.0 |
| Last Updated | 2026-09-10 |
| Author | Sangeetha Grantha Team |
| Document Type | Evidence record |
[!NOTE] Historical evidence: results, counts, commands, and observations below belong to the original work described here. The editorial update date is not a new test or corpus verification. For present behavior, use current feature map.
The accepted track owns requirements and node status. The execution guide defines the proof loop. This report records observed results, not release certification.
Baseline revision: 13cd5ccfa87b92203f0bff66688a7d16ce0ec1c3. Existing uncommitted changes were TRACK-140 planning documents. Corrected make test-frontend to invoke the package’s Vitest test:unit script.
| Check | Result |
|---|---|
make test |
PASS — Gradle BUILD SUCCESSFUL |
make test-integration |
PASS — Gradle BUILD SUCCESSFUL, isolated Testcontainers |
make test-mobile |
PASS — Gradle BUILD SUCCESSFUL |
make mobile-android |
PASS — assembleDebug BUILD SUCCESSFUL |
make test-frontend |
PASS — 10 files / 61 tests |
Worker uv run ruff check . / ruff format --check . / mypy . / pytest |
PASS — 78 formatted files; typecheck 77 source files; 407 tests |
make mobile-ios with explicit iPhone 17 destination |
FAIL — existing SIGNING[@]: unbound variable under macOS Bash; repair assigned to N01 |
| Local stack/public coverage | No running Compose services; localhost:8080 unavailable. Live counts remain unknown; integration gates own live coverage after compatible startup. |
| Devices | iPhone 17 / iOS 26.5 / C0104896-CD64-4533-A919-1E5F22036561 available, shutdown. Android AVD Rasika_API34 configured; no running adb device. |
Initial Gradle/uv/Docker sandbox access failures were resolved with reviewed elevated tool access. No test was skipped or weakened. Java 25.0.2, Bun 1.4.0, uv 0.12.6 and Python 3.14.7 were observed. Baseline logs: build/track-140/run-01/P01/gradle.log, frontend.log, ios.log; worker output is also recorded in the task tool results. No real corpus was changed. Native build/runtime proof and existing-row musicological assessment remain distinct obligations.
Additive Flyway V59 (enum value) and V60 (column default) plus domain/DAL/worker/curator defaults to UNESTABLISHED. Existing rows are not backfilled. Isolated proofs passed; the user stack was not migrated.
| Check | Result |
|---|---|
make test |
PASS |
make test-frontend |
PASS — 11 files / 66 tests |
| Worker ruff / mypy / pytest | PASS — 408 tests |
| User-stack migrate | Not run (M2 sequencing: wait for B01 isolated proofs) |
V1 catalogue and anonymous /v1/krithis exclude UNESTABLISHED; V2 includes it, serves discovery, and keeps Cache-Control: no-store. Frozen V1 decoder rejects the V2 unestablished fixture.
| Check | Result |
|---|---|
make test |
PASS |
make test-integration |
PASS — Testcontainers, no db-reset |
KtorCatalogueApi uses /v2/catalogue only, including discovery. LocalDocumentStore serializes writes and refuses to overwrite corrupt or future-version documents.
| Check | Result |
|---|---|
make test-mobile |
PASS |
tools/mobile/verify-rasika-journeys.sh requires an explicit Android serial or iOS UDID and refuses generic destinations. Android RasikaJourneyTest and iOS RasikaAppUITests exist. CI compiles assembleDebugAndroidTest; hosted runners still do not boot devices.
| Check | Result |
|---|---|
| Generic destination | FAIL as required (exit 2) |
assembleDebug / assembleDebugAndroidTest |
PASS |
| Device journeys | Not run — no running adb device / simulator boot in this pass |
Four tabs (Home / Explore / Library / Settings), Home search independent of discovery, ordered RagaSequence on cards, System/Light/Dark radio group with persistence rollback. Explore still uses the TRACK-138 search list; category filters and the source-faithful reader remain U02/U03.
| Check | Result |
|---|---|
make test-mobile |
PASS |
| Native appearance matrix | Deferred to device journeys (N01/GA) |
Krithis / Ragas / Composers under one explicit-submit query; draft/apply/cancel/reset filters; chip removal commits immediately; paging keeps loaded items on next-page failure; raga/composer destinations use detail DTOs and exact UUID works filters. Directory captions use parent melakarta numbers (M5). Home raga/composer shortcuts open Explore categories, not Browse.
| Check | Result |
|---|---|
make test-mobile |
PASS |
Backend compile after optional parentMelakartaNumber on raga summaries |
PASS |
Variant swap keeps the previous reading labelled until the new lyrics succeed; Trinity hero removed; per-section raga labels require sectionId; UNESTABLISHED has no form badge; stored section labels win over enum fallbacks.
| Check | Result |
|---|---|
make test-mobile |
PASS |
| Device reader journeys | Not run — N01/GA |
Native journeys now cover: empty-query Load more against a 33-row paging fixture; bookmark save → Library → restart → remove; Latin/Devanagari source switch; 200% font scale / AccessibilityXXL; animator-scale 0 / Reduce Motion. TalkBack and VoiceOver remain manual: the new tests assert the labelled semantics tree a screen reader consumes, which is necessary but is not a screen-reader pass.
| Check | Result |
|---|---|
make test-mobile |
PASS |
ExplorePagingPresenterTest |
JVM paging across two pages |
Android RasikaR18ExtendedJourneyTest / iOS RasikaR18ExtendedJourneyTests |
Written; device runtime still N01/GA |