|
1 | 1 | # Quality Checks |
2 | 2 |
|
3 | | -Run the checks that match the area you touched. |
| 3 | +Run the checks that match the area you touched. Use the narrowest meaningful command while iterating, then finish with the broader validation required by the risk of the change. |
4 | 4 |
|
5 | | -## Verification Matrix |
| 5 | +For SwiftUI and Compose work, pure presentation changes should not spend most of the loop in full app builds. |
| 6 | + |
| 7 | +## Iteration Matrix |
| 8 | + |
| 9 | +| Change Type | Inner Loop Checks | |
| 10 | +|-------------|-------------------| |
| 11 | +| iOS presentation-only SwiftUI | `cd ios && just build-package <PACKAGE>` | |
| 12 | +| iOS ViewModel, formatter, validation, or display-model behavior | `cd ios && just build-package <PACKAGE>`<br>`cd ios && just test <TARGET>` when a targeted test exists or is added | |
| 13 | +| Android presentation-only Compose or resource change | `cd android && ./gradlew :<module>:assembleDebug` | |
| 14 | +| Android ViewModel, formatter, validation, or display-model behavior | `cd android && ./gradlew :<module>:assembleDebug`<br>`cd android && ./gradlew :<module>:testDebugUnitTest` when a targeted test exists or is added | |
| 15 | +| Core-only Rust change with no mobile API impact | `cd core && just test <CRATE>` | |
| 16 | +| Core change that affects mobile bindings or shared models | `cd core && just test <CRATE>`<br>`just generate`<br>then targeted mobile compile until app integration is ready | |
| 17 | +| Shared localization input change | `just localize`<br>then targeted app/package/module compile where generated strings are consumed | |
| 18 | + |
| 19 | +## Closing Matrix |
6 | 20 |
|
7 | 21 | | Change Type | Minimum Closing Checks | |
8 | 22 | |-------------|------------------------| |
9 | | -| iOS-only Swift or SwiftUI change | `cd ios && just build`<br>`cd ios && just test <TARGET>` or `cd ios && just test`<br>`cd ios && just lint`<br>`cd ios && just format` | |
10 | | -| Android-only Kotlin, Compose, or resource change | `cd android && ./gradlew assembleGoogleDebug` or build the affected module/variant<br>`cd android && ./gradlew test`<br>`cd android && ./gradlew lint`<br>`cd android && ./gradlew detekt`<br>`cd android && ./gradlew ktlintFormat` | |
| 23 | +| iOS presentation-only SwiftUI | `cd ios && just build-package <PACKAGE>`<br>Simulator/device smoke when the changed flow is reachable | |
| 24 | +| iOS ViewModel, navigation, app wiring, or behavioral UI change | `cd ios && just build`<br>`cd ios && just test <TARGET>` or `cd ios && just test`<br>`cd ios && just lint` and `cd ios && just format` when Swift code changed | |
| 25 | +| Android presentation-only Compose or resource change | `cd android && ./gradlew :<module>:assembleDebug`<br>Emulator/device smoke when the changed flow is reachable | |
| 26 | +| Android ViewModel, navigation, app wiring, or behavioral UI change | `cd android && ./gradlew assembleGoogleDebug` or build the affected app/module variant<br>`cd android && ./gradlew :<module>:testDebugUnitTest` or `cd android && ./gradlew test`<br>`cd android && ./gradlew lint`<br>`cd android && ./gradlew detekt`<br>`cd android && ./gradlew ktlintFormat` | |
11 | 27 | | Core-only Rust change with no mobile API impact | `cd core && just test <CRATE>`<br>`cd core && cargo clippy -p <crate> -- -D warnings`<br>`cd core && just format` | |
12 | 28 | | Core change that affects mobile bindings or shared models | `cd core && just test <CRATE>`<br>`cd core && cargo clippy -p <crate> -- -D warnings`<br>`cd core && just format`<br>`just generate`<br>`just ios build`<br>`just android build` | |
13 | 29 | | Shared localization input change | `just localize`<br>Rebuild the affected app(s) if the generated strings are consumed by the change | |
| 30 | +| Documentation-only change | `git diff --check`<br>Inspect changed links, paths, commands, and instructions | |
14 | 31 |
|
15 | | -Use the narrowest relevant test target while iterating, then finish with the broader validation required by the change. |
16 | | - |
17 | | -Closing a task requires at least one real build or test command for the changed area. Do not substitute `git diff`, static inspection, or reasoning for execution. If execution is blocked by unrelated repo state, include the exact command and the blocking failure in the handoff. |
18 | | - |
19 | | -## iOS |
| 32 | +Navigation, app wiring, wallet-critical UI, security-sensitive code, Room migrations, signing, transaction construction, wallet import/export, seed phrases, private keys, and auth flows are never presentation-only. Use the stricter platform/security checks for those tasks. |
20 | 33 |
|
21 | | -```bash |
22 | | -cd ios && just build |
23 | | -cd ios && just test |
24 | | -cd ios && just lint |
25 | | -cd ios && just format |
26 | | -``` |
| 34 | +Except for documentation-only changes, closing a task requires at least one real build or test command for the changed area. Do not substitute `git diff`, static inspection, or reasoning for execution. If execution is blocked by unrelated repo state, include the exact command and the blocking failure in the handoff. |
27 | 35 |
|
28 | | -## Android |
| 36 | +## Ready-to-Commit Batch |
29 | 37 |
|
30 | | -```bash |
31 | | -cd android && ./gradlew test |
32 | | -cd android && ./gradlew lint |
33 | | -cd android && ./gradlew detekt |
34 | | -cd android && ./gradlew ktlintFormat |
35 | | -``` |
| 38 | +Do not run the closing matrix after every edit. Once the implementation is stable and no more code edits are expected, run the applicable closing checks as one batch: |
36 | 39 |
|
37 | | -## Core |
| 40 | +1. Regenerate models/bindings or localization if the changed inputs require it. |
| 41 | +2. Run formatters and linters required for the touched platform. |
| 42 | +3. Run the targeted tests that cover the changed behavior. |
| 43 | +4. Build the affected package/module/app according to the closing matrix. |
| 44 | +5. Exercise the changed UI flow when the platform guide requires a simulator, emulator, or device smoke check. |
38 | 45 |
|
39 | | -```bash |
40 | | -cd core && just test <CRATE> |
41 | | -cd core && cargo clippy -p <crate> -- -D warnings |
42 | | -cd core && just format |
43 | | -``` |
| 46 | +If any step modifies source files or forces a compile fix, return to the narrow iteration loop, then run the affected final checks again. |
44 | 47 |
|
45 | 48 | If you change shared models or bindings, also run the generation steps and validate both mobile apps. |
46 | 49 |
|
|
0 commit comments