CLAUDE.md: build/test gotchas from the cyclic-taper + backup sessions
Six recurring, non-obvious learnings: Gradle config-cache corruption fix, Room NOT NULL-column migrations needing @ColumnInfo(defaultValue), the scrypt wf=15 rationale (do not bump to 18), Compose dialogs not being adb/uiautomator-tappable (verify via instrumented tests), backticks breaking git commit -m, and wireless adb port rotation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
eeed098b1a
commit
dfb7c5a826
1 changed files with 12 additions and 0 deletions
12
CLAUDE.md
12
CLAUDE.md
|
|
@ -58,6 +58,10 @@ The name says the brief: nag me to take the dose *now*.
|
||||||
- Room 3 (`androidx.room3`) is alpha — stay on Room 2.x. `room-ktx` is merged into `room-runtime`.
|
- Room 3 (`androidx.room3`) is alpha — stay on Room 2.x. `room-ktx` is merged into `room-runtime`.
|
||||||
- androidx security-crypto is fully deprecated — SettingsStore is our own Keystore wrapper instead.
|
- androidx security-crypto is fully deprecated — SettingsStore is our own Keystore wrapper instead.
|
||||||
- No appcompat: `?attr/colorControlNormal` doesn't exist; Compose tints icons via LocalContentColor.
|
- No appcompat: `?attr/colorControlNormal` doesn't exist; Compose tints icons via LocalContentColor.
|
||||||
|
- Gradle config-cache can corrupt → `BuildOperationInvocationException (no error message)`;
|
||||||
|
fix: `rm -rf .gradle/configuration-cache` (it's not a code error).
|
||||||
|
- A migration that ADDs a NOT NULL column needs `@ColumnInfo(defaultValue = "0")` on the entity,
|
||||||
|
else Room's migration validation fails (exported schema has no default, the ALTER does).
|
||||||
|
|
||||||
## Load-bearing — change with care
|
## Load-bearing — change with care
|
||||||
- The reminder subsystem is the reliability core. After any change, re-verify: alarms
|
- The reminder subsystem is the reliability core. After any change, re-verify: alarms
|
||||||
|
|
@ -75,6 +79,8 @@ The name says the brief: nag me to take the dose *now*.
|
||||||
- kage is trusted only because CctvScryptVectorTest passes — keep the vendored CCTV
|
- kage is trusted only because CctvScryptVectorTest passes — keep the vendored CCTV
|
||||||
vectors green when bumping kage.
|
vectors green when bumping kage.
|
||||||
- Doctor PDF formatting is locale-pinned to nb; the default locale prints English month names.
|
- Doctor PDF formatting is locale-pinned to nb; the default locale prints English month names.
|
||||||
|
- Backup scrypt work factor is 15, not age's default 18 — 18 needs ~256 MiB and OOM-crashes
|
||||||
|
on-device; `largeHeap` only covers DECRYPTING foreign wf-18 files. Don't bump it back.
|
||||||
|
|
||||||
## Out of scope — don't add without asking
|
## Out of scope — don't add without asking
|
||||||
Caregiver/"Team" alerts, multi-profile, Health Connect, streaks/gamification,
|
Caregiver/"Team" alerts, multi-profile, Health Connect, streaks/gamification,
|
||||||
|
|
@ -99,5 +105,11 @@ All gradlew calls need `JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64` — system
|
||||||
unscoped.** Every `adb` call gets `-s <serial>`; connected tests get
|
unscoped.** Every `adb` call gets `-s <serial>`; connected tests get
|
||||||
`ANDROID_SERIAL=emulator-<n>`. The build fails connected* tasks without an emulator
|
`ANDROID_SERIAL=emulator-<n>`. The build fails connected* tasks without an emulator
|
||||||
serial — that guard stays. The phone is never a test target.
|
serial — that guard stays. The phone is never a test target.
|
||||||
|
- Can't drive Compose dialogs via adb/uiautomator (esp. with the soft keyboard up — it
|
||||||
|
reports phantom button nodes and taps don't land). Verify dialog flows with instrumented
|
||||||
|
tests (see the backup round-trip / migration tests), not screen tapping.
|
||||||
|
- `git commit -m`: no backticks — bash command-substitutes `` `word` `` inside double quotes
|
||||||
|
and eats it. Use single-quoted or plain messages.
|
||||||
|
- Wireless adb port rotates between sessions; rediscover with `adb devices` / `adb connect <ip:port>`.
|
||||||
|
|
||||||
See @README.md for architecture detail.
|
See @README.md for architecture detail.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue