Repository navigation
📌 apps: every app runs the SDK snapshots built on kamera 1.2.1-SNAPSHOT.34 and njia 0.0.1-SNAPSHOT.11 - #259
Conversation
…and njia 0.0.1-SNAPSHOT.11 The four SDKs repinned to kamera .34 and njia .11 (android#704, ios-v12#606, flutter#479, react-native-expo#523) and now ship round 4's validation change: validate() returns the verdict build() reaches. Move every app to those snapshots, and let the Android and iOS preflight follow the change: a flow the SDK would refuse now lands on the unsubmitted job's details with the reason, where the SDK's own Failure lands, instead of returning to the product list.
Harun Wangereka (wangerekaharun)
left a comment
There was a problem hiding this comment.
Approved: 📌 apps: every app runs the SDK snapshots built on kamera 1.2.1-SNAPSHOT.34 and njia 0.0.1-SNAPSHOT.11
Changes 22 files: android/app/src/main/kotlin/com/usesmileid/sampleapps/android/flow/SdkFlowScreen.kt, android/app/src/test/kotlin/com/usesmileid/sampleapps/android/SdkFlowPreflightTest.kt, android/gradle/libs.versions.toml, android/maestro/settings.yaml, android/verify.sh, and 17 more.
Checks at 1d927ed: 1 of 18 passed, 17 still running.
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
| document products. The builder's `validate()` proves it on every platform: it returns the verdict | ||
| `build()` reaches, job-type rules included, so `SdkFlowPreflightTest` sees the Green Book refusal on | ||
| Enhanced Document Verification. |
There was a problem hiding this comment.
Suggestion: The doc now says validate() proves job-type rules on every platform. The iOS preflight in this same PR says the opposite: its validator.validate(configuration:) runs only screen and structural rules, and "the SDK's build also runs the job rules". So on iOS the Green Book refusal still escapes preflight. Scope the claim to the platforms where it holds and keep the iOS gap visible, ideally as a backlog item. [general, importance: 5]
| document products. The builder's `validate()` proves it on every platform: it returns the verdict | |
| `build()` reaches, job-type rules included, so `SdkFlowPreflightTest` sees the Green Book refusal on | |
| Enhanced Document Verification. | |
| document products. On Android, Flutter and React Native the builder's `validate()` proves it: it | |
| returns the verdict `build()` reaches, job-type rules included, so `SdkFlowPreflightTest` sees the | |
| Green Book refusal on Enhanced Document Verification. On iOS the preflight's | |
| `FlowValidator.validate(configuration:)` runs only the screen and structural rules, so job-type | |
| refusals still surface only from the SDK's build. |
User description
Story: N/A. The four SDKs now build on kamera
1.2.1-SNAPSHOT.34and njia0.0.1-SNAPSHOT.11(android#704, ios-v12#606, flutter#479, react-native-expo#523), and they carry round 4's changes: a flow sends its job once, every SDK reaches the same validation verdict, andvalidate()now returns the verdictbuild()reaches. This moves all four apps to those snapshots and follows the validation change in the apps' preflight.Summary
12.3.0-20261026.002955snapshot (built after android#704), and njia to0.0.1-20261025.232953-11.12.3.0-SNAPSHOT.20261026003357.40248619993(after ios-v12#606), andNjiato0.0.1-SNAPSHOT.11.SampleUI/Package.resolvedtakes kamera-spm1.2.1-SNAPSHOT.34, andlicenses.jsonis regenerated.12.3.1-SNAPSHOT.25, andusesmileid_njiaand-testingto0.0.1-SNAPSHOT.11. That coverspubspec.lockand the app's twoPackage.resolvedfiles.12.3.1-SNAPSHOT.71(app and sample UI), and@smileid/njiaand-testingto0.0.1-SNAPSHOT.11, withpnpm-lock.yaml.validate()now returnsbuild()'s verdict, so the Android and iOS preflight sees refusals it used to miss: a flow with no consent, agent mode with enhanced liveness, and the Green Book on Enhanced Document Verification.SdkFlowPreflightTestasserts those refusals, and runs under Robolectric because the SDK now reads the token's bindings withandroid.util.Base64.validate()and matches the exportedValidationState, instead of reading the type name ofbuild()'s internal result.android/verify.shnames the app's real ids in its Maestro hint, and the plan doc and test comments now say whatvalidate()checks today.Known Issues
mainexactly as on this branch. CI's goldens are the ones that count.testAnUnrecognisedValueReadsAsTheDefaultOnTheCard,testAPlainLaunchHasNoProfile). Run alone, that class passes 2 of 2 times on this branch and 2 of 2 onmain: a load flake, not this change.Test Instructions
Device runs, Oct 25, on the
smileid-local-ciemulator (API 34) and iOS 27.0 simulators:android/maestro): settings, token-session, deep-links, shell-navigation, launch-args, profiles, sdk-flow, profile-journey, verifications and document-options.settingsfailed on this branch before the preflight change, at its consent step, where the refused flow must land on the job's details. It passes now and passes onmain.ios/verify.sh allruns tokens, notices, format, the library unit tests, the goldens, the shell unit tests and the navigation UI suite. Every phase passes, except the 2 launch-argument flakes above.flutter/maestro, release APK).expo/maestro, release APK).flutter/verify.sh checkspasses. The Expo app's 512 unit tests pass.Screenshot
N/A
📌
PR Type
Enhancement, Tests
Description
Repin all four apps to new SDK snapshots
1.2.1-SNAPSHOT.340.0.1-SNAPSHOT.11on every platformRefused flows land on unsubmitted job details
SdkFlowScreen.ktand iOSSdkFlowScreen.swiftrouteMisconfiguredtoVerificationDetailswithUNSUBMITTED_JOB_IDTests follow
validate()returningbuild()'s verdictvalidate()instead of the internalbuild()Comments, docs and Maestro notes updated;
verify.shapp ids fixedDiagram Walkthrough
File Walkthrough
2 files
Assert configurations through publicvalidate()instead ofbuild()Robolectric preflight tests for agent-mode and Green Book refusals5 files
Update comment on build versus validate verdictClarify which rules the structural validation coversCorrect application ids in Maestro usage commentsUpdate consent refusal comment for host preflightNote that `validate()` now proves job-type refusals2 files
Misconfigured preflight lands on unsubmitted job detailsMisconfigured flow exits to unsubmitted job details10 files
Bump ios-spm pin to new snapshotBump Android SDK artifacts and njia snapshot buildsBump Expo SDK packages and njia snapshotsBump `@smileid/usesmileid` peer dependency snapshotResolve ios-spm, kamera-spm and njia-spm to new snapshotsResolve ios-spm, kamera-spm and njia-spm to new snapshotsBump Flutter SDK, ML providers and njia snapshotsBump `usesmileid` to 12.3.1-SNAPSHOT.25Bump UseSmileID and Njia exact versionsResolve SampleUI dependencies to new snapshots1 files
Regenerate licenses with kamera-spm and njia-spm versions