Skip to content

Commit 811bb45

Browse files
committed
docs: add deep research roadmap packet
1 parent 3e9214c commit 811bb45

15 files changed

Lines changed: 1578 additions & 6 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Changeset Summary
2+
3+
Date: 2026-05-17
4+
5+
## Files Added
6+
7+
- `PROJECT_CONTEXT.md` - canonical consolidated project context for future AI
8+
and maintainer sessions.
9+
- `.ai/research/2026-05-17/STATE_OF_REPO.md` - local repository reconnaissance
10+
memo.
11+
- `.ai/research/2026-05-17/MEMORY_CONSOLIDATION.md` - instruction/memory
12+
inventory and reconciliation.
13+
- `.ai/research/2026-05-17/SOURCE_REGISTER.md` - local, memory, external,
14+
competitor, and security source register.
15+
- `.ai/research/2026-05-17/RESEARCH_LOG.md` - search strategies, commands,
16+
failed searches, and saturation notes.
17+
- `.ai/research/2026-05-17/COMPETITOR_MATRIX.md` - competitor and adjacent
18+
project matrix.
19+
- `.ai/research/2026-05-17/FEATURE_BACKLOG.md` - raw harvested ideas before
20+
prioritization.
21+
- `.ai/research/2026-05-17/PRIORITIZATION_MATRIX.md` - scored candidate matrix.
22+
- `.ai/research/2026-05-17/SECURITY_AND_DEPENDENCY_REVIEW.md` - dependency,
23+
OSV, release, privacy, and platform hardening review.
24+
- `.ai/research/2026-05-17/DATASET_MODEL_INTEGRATION_REVIEW.md` - data,
25+
model, Health Connect, integration, and evaluation review.
26+
- `app/schemas/com.sysadmindoc.alarmclock.data.local.AlarmDatabase/10.json` -
27+
generated Room v10 schema export discovered missing during reconnaissance.
28+
29+
## Files Modified
30+
31+
- `ROADMAP.md` - added a 2026-05-17 deep-research refresh and corrected release
32+
workflow drift language.
33+
- `app/src/main/java/com/sysadmindoc/alarmclock/ui/alarmedit/AlarmEditScreen.kt`
34+
- restored the missing `AppFilterChip` import discovered during verification.
35+
- `app/src/main/java/com/sysadmindoc/alarmclock/ui/settings/SettingsScreen.kt`
36+
- restored the missing `AppFilterChip` import discovered during verification.
37+
38+
## Verification
39+
40+
- `git diff --check` passed. Git reported the existing line-ending normalization
41+
warning that `ROADMAP.md` will be converted to CRLF the next time Git touches
42+
it.
43+
- `.\gradlew.bat :app:testPlayDebugUnitTest :app:assemblePlayDebug :app:assembleFdroidDebug :wear:assembleDebug --console=plain` passed after the import repair. Gradle still reports existing deprecation warnings for `PhoneStateListener`, `Vibrator.vibrate(...)`, `Icons.Filled.VolumeOff`, `rememberSwipeToDismissBoxState(confirmValueChange)`, `CrashLogger` package info, and Moshi KAPT codegen.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Competitor Matrix
2+
3+
Date: 2026-05-17
4+
5+
## Summary
6+
7+
AlarmClockXtreme is already ahead of many FOSS clocks on heavy-sleeper features,
8+
backup, weather/news context, and wake-readiness UI. The leading gaps are not
9+
basic alarm CRUD; they are sleep data, wearable depth, Direct Boot/reproducible
10+
release discipline, and dependency/release trust.
11+
12+
| Product / Project | Positioning | Notable Features | Lessons For AlarmClockXtreme | Sources |
13+
|---|---|---|---|---|
14+
| Alarmy | Commercial heavy-sleeper / morning wellness app | Missions such as math, shake, photo, barcode, memory, squat; sleep analysis; wake-up enforcement | ACX already has broad challenge coverage. Next differentiation should be mission stacking, wake-up verification after dismissal, and clearer challenge reliability metrics. | https://alar.my/en, https://alarmy-android.zendesk.com/hc/en-us/articles/360004242254--Mission-How-can-I-set-the-Alarm-off-method-math-shake-etc- |
15+
| Sleep as Android | Mature sleep tracker plus smart alarm | Health Connect integration, wearables, sleep tracking, sonar-style concepts, anti-snoring ecosystem | ACX should finish Health Connect read path before building its own classifier. Local-first sleep insights can compete without cloud coaching. | https://docs.sleep.urbandroid.org/services/health_connect.html |
16+
| Sleep Cycle | Commercial smart alarm and sleep coaching | Smart wake window, sound analysis, snore/cough tracking, sleep aid, statistics, coaching | ACX needs a credible smart-wake story: import sleep sessions first, then on-device signals. Avoid unsupported medical claims. | https://sleepcycle.com/features/smart-alarm-clock/, https://support.sleepcycle.com/hc/en-us/articles/7859664023452-Using-the-Sleep-Cycle-app |
17+
| Sleepwave | Commercial contactless smart alarm | Contactless motion/breathing estimates, sleep depth, sound recordings, dream journal, watch taps | Motion/breathing ideas are attractive but high-risk. Treat as experimental and opt-in, with battery/privacy controls. | https://sleepwave.com/ |
18+
| Fossify Clock | FOSS clock/timer/stopwatch baseline | Offline, no ads, widgets, custom alarm settings, timer/stopwatch, themes | ACX has richer alarm features but must match FOSS trust: F-Droid metadata, release reproducibility, and privacy statements need to be current. | https://github.com/FossifyOrg/Clock |
19+
| BlackyHawky Clock | Privacy-first AOSP-derived FOSS clock | Direct Boot, reproducible builds, date-specific alarms, random ringtones, shake/flip actions, permission issue notes | Direct Boot and reproducible-build/release discipline are high-value, concrete ACX roadmap items. | https://github.com/BlackyHawky/Clock |
20+
| QRAlarm | FOSS QR/barcode wake app | QR/barcode dismissal and signed release fingerprint communication | ACX already has QR challenge capability; add signed artifact/fingerprint trust to release docs. | https://github.com/sweakpl/qralarm-android |
21+
| AOSP / DeskClock lineage | Baseline Android clock source family | Stock alarm/timer/clock behavior and integration expectations | Preserve familiar Android alarm behavior while adding heavy-sleeper controls. | https://android.googlesource.com/platform/packages/apps/DeskClock/ |
22+
| yt-dlp ecosystem | Maintained downloader ecosystem | High release cadence for extractor breakage | ACX Play downloader should track a maintained update path or be isolated from alarm-critical runtime. | https://github.com/yt-dlp/yt-dlp |
23+
| NewPipeExtractor | Android-friendly extractor library | Hotfix releases for YouTube/SoundCloud extractor changes | Useful but volatile. Keep Play-only and covered by dependency/security review. | https://github.com/TeamNewPipe/NewPipeExtractor/releases |
24+
25+
## Opportunity Patterns
26+
27+
- Commercial leaders sell outcomes: "wake up during light sleep", "prove you
28+
are awake", "understand your night". ACX can express the same outcomes while
29+
staying local-first and transparent.
30+
- FOSS leaders win trust through offline operation, reproducible builds, Direct
31+
Boot, and clear metadata. ACX needs to close its release/metadata drift to
32+
match this trust posture.
33+
- Wearables are now a core expectation for sleep/alarm apps. ACX has a tile, but
34+
should add complications, watch-side state, and physical-device QA.
35+
- Health Connect is the best first data integration because it avoids inventing
36+
a cloud account or raw sleep-data import format.
37+
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# Dataset, Model, And Integration Review
2+
3+
Date: 2026-05-17
4+
5+
## Applicability
6+
7+
This project is not an ML-first repository. It has no current model training
8+
pipeline, no cloud analytics stack, and no dataset ingestion layer. However, it
9+
does have strong data and integration angles:
10+
11+
- Health Connect sleep sessions.
12+
- Local alarm/event history.
13+
- Local wake-streak, snooze, missed-alarm, and challenge metrics.
14+
- Weather, holiday, alert, news, radio, Hue, webhook, Wear, and downloader
15+
integrations.
16+
17+
The file is therefore not thin: the best strategy is local-first data use, not a
18+
new cloud dataset.
19+
20+
## Health Connect
21+
22+
Recommended near-term integration:
23+
24+
- Add `androidx.health.connect:connect-client` to the Play flavor only.
25+
- Request only `android.permission.health.READ_SLEEP` initially.
26+
- Read `SleepSessionRecord` for recent windows.
27+
- Show sleep duration/stage summaries in Bedtime and Stats.
28+
- Use data only on device.
29+
- Keep F-Droid copy honest: no SDK and no Health Connect read path unless a
30+
compatible FOSS distribution path exists.
31+
32+
Evidence:
33+
34+
- Android Health Connect sleep-session docs define `SleepSessionRecord` for
35+
session and stage data.
36+
- Android Health Connect publishing docs require Play Console declarations and
37+
permission justification for data types.
38+
39+
## Local Analytics
40+
41+
Useful local-only derived metrics:
42+
43+
- Time to dismiss by alarm and challenge.
44+
- Snooze count by alarm.
45+
- Missed alarm count by alarm/time of day.
46+
- Challenge retry count.
47+
- Wake-streak trend.
48+
- Sleep duration vs. alarm success once Health Connect is present.
49+
- Smart-wake window effectiveness.
50+
51+
These can be computed from local Room/DataStore history without any remote
52+
service.
53+
54+
## Candidate Models
55+
56+
Near-term:
57+
58+
- No ML model. Use rule-based Health Connect summaries and local statistics.
59+
60+
Later, only if needed:
61+
62+
- Actigraphy-light smart-wake heuristic using accelerometer motion while the
63+
phone is charging.
64+
- Tiny on-device audio/noise classifier for snore/noise events, guarded by
65+
explicit microphone consent and clear non-medical language.
66+
- On-device recommendation heuristics for challenge selection based on dismissal
67+
history.
68+
69+
Rejected for now:
70+
71+
- Remote AI sleep coach by default.
72+
- Medical diagnosis language for snoring, apnea, or sleep quality.
73+
- Uploading sleep/audio/alarm history to a developer service.
74+
75+
## Integration Inventory
76+
77+
Current or planned external surfaces:
78+
79+
- Open-Meteo weather and geocoding.
80+
- Nager.Date holidays.
81+
- National Weather Service alerts.
82+
- Windy map/forecast surface.
83+
- Google News/RSS-style feed URLs.
84+
- User-configured webhooks.
85+
- Philips Hue LAN bridge.
86+
- Internet radio streams.
87+
- YouTube downloader/resolution in the Play flavor.
88+
- Wear OS Data Layer and tile.
89+
- Health Connect sleep sessions, scaffolded but not yet wired.
90+
91+
Privacy note: the policy should describe these surfaces as optional/user-driven
92+
where applicable and distinguish developer collection from third-party network
93+
requests triggered by app features.
94+
95+
## Evaluation Opportunities
96+
97+
- Unit-test Health Connect repository logic with fake client abstractions.
98+
- Add golden fixtures for sleep-session windows and time zones.
99+
- Add DST/time-zone regression cases for smart-wake calculations.
100+
- Add migration tests before any new DB field.
101+
- Add release smoke tests for both flavors to prove Play-only dependencies do
102+
not leak into F-Droid.
103+
- Add Wear tile/complication render tests or screenshot QA.
104+
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Feature Backlog
2+
3+
Date: 2026-05-17
4+
5+
This is the raw harvested backlog before final prioritization. Scored items are
6+
in `PRIORITIZATION_MATRIX.md`; active roadmap order is in `ROADMAP.md`.
7+
8+
## Release, Trust, And Documentation
9+
10+
- Fix `.github/workflows/release.yml` so tag builds produce signed release
11+
artifacts for Play, F-Droid, and Wear instead of debug APKs.
12+
- Refresh F-Droid metadata to current version/code and current anti-feature
13+
language.
14+
- Update privacy policy and data-safety narrative for every network/data
15+
surface, not only Health Connect.
16+
- Add signed artifact SHA-256 and certificate fingerprint publication pattern.
17+
- Add SBOM/dependency inventory artifact for releases.
18+
- Add Dependabot or Renovate for Gradle dependencies and GitHub Actions.
19+
- Add OSV/dependency vulnerability check that works with Gradle Kotlin DSL.
20+
- Add release checklist covering build, sign, verify, tag, GitHub release,
21+
install smoke, and metadata sync.
22+
- Add `PROJECT_CONTEXT.md` as canonical memory and keep it in version control.
23+
24+
## Reliability And Android Platform
25+
26+
- Enforce Room schema export checks and migration tests. The missing v10 schema
27+
export was generated and added by this research changeset.
28+
- Add migration tests for every schema bump and verify fresh-install parity.
29+
- Add Direct Boot support for the minimum alarm data required before first
30+
unlock.
31+
- Add full-screen intent / notification permission diagnostic for Android 14+ and
32+
vendor-specific settings.
33+
- Add Android 15 foreground-service timeout audit for `dataSync` and
34+
media-processing paths.
35+
- Add app standby/battery optimization troubleshooting export.
36+
- Add crash log export/share from Settings.
37+
- Tighten Hue v2 TLS by pinning bridge identity or Signify trust material.
38+
- Add backup-export warning when optional secrets/integration URLs are present.
39+
40+
## Health, Sleep, And Analytics
41+
42+
- Complete Play-flavor Health Connect SDK integration for sleep sessions.
43+
- Surface last-night sleep duration/stages in Bedtime and Stats.
44+
- Use Health Connect sleep windows to choose a smart-wake point inside a user
45+
configured window.
46+
- Add local-only sleep trend charts.
47+
- Add local sleep quality correlations with wake-streak, snooze count, missed
48+
alarms, and alarm difficulty.
49+
- Add optional manual sleep/mood note after dismissal.
50+
- Add actigraphy-light experimental mode using accelerometer while charging.
51+
- Add local-only snore/noise event detection behind explicit microphone consent.
52+
- Add Vico or equivalent charting library for trend views.
53+
54+
## Wear OS
55+
56+
- Add next-alarm complication data source.
57+
- Add Wear tile refresh QA and physical-device verification notes.
58+
- Add watch-side quick actions for skip/snooze/dismiss state with sync failure
59+
recovery.
60+
- Add haptic-only watch alarm profile.
61+
- Add standalone watch fallback investigation for users without phone nearby.
62+
- Add Wear screenshot/test harness for tile/complication outputs.
63+
64+
## Challenges And Wake Enforcement
65+
66+
- Add mission stacking / multi-step dismissal.
67+
- Add wake-up check after dismissal with configurable grace period.
68+
- Add typing phrase challenge.
69+
- Add brightness/light-sensor challenge.
70+
- Add NFC tag challenge.
71+
- Add floor/room QR challenge templates with recovery codes.
72+
- Add challenge effectiveness analytics: dismiss time, retries, false starts,
73+
snooze loops.
74+
- Add per-alarm recommended challenge profiles.
75+
76+
## Audio, Media, And Integrations
77+
78+
- Evaluate Media3/ExoPlayer for internet radio/alarm audio path.
79+
- Isolate or replace `youtubedl-android` Play dependency path.
80+
- Add safer update path for extractor/downloader dependencies.
81+
- Add per-alarm audio fallback tests for local URI, ringtone URI, stream, and
82+
downloaded audio.
83+
- Add local network integration test stubs for Hue and webhook delivery.
84+
- Add NWS/Open-Meteo/Nager/Windy/RSS privacy and failure-mode docs.
85+
86+
## UX And Product Polish
87+
88+
- Update README architecture/version facts.
89+
- Add first-run trust walkthrough that explains exact alarms, notifications,
90+
battery, full-screen alarm, and Health Connect separately.
91+
- Add empty/error/recovery states for every integration settings card.
92+
- Add tablet/foldable two-pane Settings and alarm edit layout.
93+
- Add home-screen/lock-screen widget roadmap once Android platform APIs are
94+
stable enough.
95+
- Add user-visible release notes source from `CHANGELOG.md` or "What's New".
96+
97+
## Research-Only Or Conditional
98+
99+
- AI sleep coach: only after local sleep/session data exists and only if local
100+
model or explicit opt-in remote model is viable.
101+
- Menstrual-cycle aware alarms: only if Health Connect read/write policy and
102+
user value justify the sensitivity.
103+
- Blood pressure/weight/mood quick-entry: weak product fit for an alarm app.
104+
- Cloud sync/account: conflicts with current privacy-first stance unless the
105+
user explicitly chooses a self-hosted or BYO backend model.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Memory Consolidation
2+
3+
Date: 2026-05-17
4+
5+
## Files Inventoried
6+
7+
Repo-local:
8+
9+
- `AGENTS.md`
10+
- `CLAUDE.md`
11+
- `README.md`
12+
- `CHANGELOG.md`
13+
- `ROADMAP.md`
14+
- `PRIVACY_POLICY.html`
15+
- `.github/workflows/release.yml`
16+
- `.github/workflows/version-lint.yml`
17+
- `metadata/com.sysadmindoc.alarmclock.yml`
18+
- `metadata/en-US/fdroid.yml`
19+
20+
No nested `.claude`, `.cursor`, `GEMINI.md`, `COPILOT_INSTRUCTIONS.md`,
21+
`ARCHITECTURE*`, `CONTRIBUTING*`, or existing `.ai` files were present before
22+
this research run.
23+
24+
Shared instruction and memory files inspected:
25+
26+
- `C:\Users\--\.claude\CLAUDE.md`
27+
- `C:\Users\--\CLAUDE.md`
28+
- `C:\Users\--\.claude\projects\c--Users----repos\memory\MEMORY.md`
29+
- `C:\Users\--\.claude\projects\c--Users----repos\memory\stack-android.md`
30+
- `C:\Users\--\.claude\projects\c--Users----repos\memory\android-apk.md`
31+
- `C:\Users\--\.codex\memories\MEMORY.md`
32+
- `C:\Users\--\.codex\memories\skills\autonomous-roadmap-loop\SKILL.md`
33+
34+
## Instruction Reconciliation
35+
36+
`AGENTS.md` delegates repo-specific details to `CLAUDE.md` and shared global
37+
files. It should remain tool-specific.
38+
39+
`CLAUDE.md` is useful as living working notes, but it is ignored by `.gitignore`.
40+
Treat it as active local memory, not as the only durable project source.
41+
42+
Shared global rules that mattered in this run:
43+
44+
- Read repo `CLAUDE.md` and recent git history at session start.
45+
- Use `rtk` as a command prefix when available.
46+
- Keep roadmap/state files synchronized with implementation or planning.
47+
- Commit and push after completing autonomous work unless a real blocker stops
48+
the session.
49+
50+
The consolidated durable context is now `PROJECT_CONTEXT.md`. Future sessions
51+
should read it after tool-specific instructions.
52+
53+
## Stale Or Contradictory Claims
54+
55+
| Claim | Location | Current Evidence | Disposition |
56+
|---|---|---|---|
57+
| Current version around v1.6.3 or v1.9.5 | shared memories | `app/build.gradle.kts`, `wear/build.gradle.kts`, `CHANGELOG.md` are v1.13.1 | Stale memory; use only for historical release workflow. |
58+
| Room DB v6 | `CLAUDE.md` path notes | `AlarmDatabase.kt` is version 10 | Stale local memory. |
59+
| Room DB v8 | `README.md` architecture box | `AlarmDatabase.kt` is version 10 | Tracked doc drift. |
60+
| 19 challenge types/views | `README.md`, `CLAUDE.md` path notes | `ROADMAP.md` and code describe 22 user-facing dismiss challenges | Tracked/local doc drift. |
61+
| Release workflow builds both flavor artifacts | `ROADMAP.md` release hygiene note | `.github/workflows/release.yml` runs `assembleDebug` | Corrected in new roadmap refresh as an active gap. |
62+
| Privacy policy says only Open-Meteo/geocoding network requests | `PRIVACY_POLICY.html` older section | README and source include Nager.Date, NWS, Windy, RSS/news, webhooks, Hue LAN, internet radio, YouTube resolution | Active compliance/doc gap. |
63+
| Latest release tag reflects current app version | tag namespace | latest local tag is `v1.9.5`, app is `v1.13.1` | Release hygiene gap. |
64+
65+
## Durable Facts Extracted To `PROJECT_CONTEXT.md`
66+
67+
- Current version, DB version, backup format, modules, flavors, and branch state.
68+
- Product stance and privacy-first operating principles.
69+
- Architecture map for core files.
70+
- Verification and release commands.
71+
- Active risks from this research pass.
72+
- Pointer to the new research packet.
73+
74+
## Open Conflicts
75+
76+
- `CLAUDE.md` is helpful but ignored. Decide whether to track it, keep it local,
77+
or move its durable content into `PROJECT_CONTEXT.md` and keep `CLAUDE.md`
78+
as a local-only operational scratchpad.
79+
- The release automation story is not aligned across roadmap and workflow. The
80+
workflow is authoritative for actual behavior; roadmap now treats signed
81+
release automation as unshipped.
82+
- The Play flavor's downloader value is real, but the transitive dependency
83+
security profile is worse than the privacy-first product posture. Decide
84+
whether to force safer transitive versions, isolate the downloader, or move
85+
to a maintained update path.
86+

0 commit comments

Comments
 (0)