the signals and their derived score are provisional and subject to change.
validate manually before sharing.
ab73f977058caa7dfa5be48027f7efe71fd2296a1049bc2852171 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi314a21631e3a1 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>327065a66e121 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi112de6d7a4b61 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJid128c18814501 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJif01153386d021 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi8d24dec0d8691 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi9c898f98f3131 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJic654353671451 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi80baa53c9cc01 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJie442892054cd1 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi6f967ca1aa321 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi4c9d46aafe3b1 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi7471fb36bf9e1 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi8d395311b5971 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmc2f6f2fe431b1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmbc869ab595f91 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm8a9dca8440391 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmf773c386eb3d1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm311b9e5eb10b1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm3c893fbda0c81 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm727452ca9dda1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm2da0240a326b1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm79b0dfcadcf61 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmc5d582868ee91 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm73b5095a48701 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm42bc2ea40dfa1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmdef3c6128b041 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm1befdedbea871 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm7eabd8afefb91 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm1837aa1532ed1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm213e246f07261 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJiae194bbd993a1 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJibc5c3d2b96c61 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi3d13ffe69b341 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJib7f1883daa181 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJie7abd1d9bef31 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJie38c37d1ac6f1 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi4ec867eee9b71 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi178d45653b8a1 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi2e245fa504551 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>bb287549fd111 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi249ee5b7c1521 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJid6710c4743961 week agoClaude-Session: https://claude.ai/code/session_016EeevKkrF1E8zoEMVqecJi6e405df9cce31 week agoClaude-Session: https://claude.ai/code/session_018REXyL96QweEh25TduUYPc95cccb7f4b341 week agoClaude-Session: https://claude.ai/code/session_018REXyL96QweEh25TduUYPca360c88983231 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm754792c1771a1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmb55f46b328bb1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm6f6fa469d46a1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm13f0f4145fba1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mme691167889791 week agoClaude-Session: https://claude.ai/code/session_018REXyL96QweEh25TduUYPc532d17d52f7d1 week agoClaude-Session: https://claude.ai/code/session_018REXyL96QweEh25TduUYPc76a79af8dc571 week agoClaude-Session: https://claude.ai/code/session_018REXyL96QweEh25TduUYPc0dfbcadab3d41 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mma972e30b1c5d1 week agoClaude-Session: https://claude.ai/code/session_012ud5cCiBphVQ1DniSXq94Laeb0efcd2c161 week agoClaude-Session: https://claude.ai/code/session_012ud5cCiBphVQ1DniSXq94Le1761da688461 week agoClaude-Session: https://claude.ai/code/session_012ud5cCiBphVQ1DniSXq94L27e3d72505801 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm6b9d0e1e25971 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm4044d48a09021 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm1bead6fb88f51 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm6cd2cea071d51 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm1d0de17a05931 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm949b2e4e114b1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm47e99a18c0a31 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm21fc0e9ba86f1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm9b2b0fd2e6a71 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm53b1e86a11d11 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm9c1897d0c24d1 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>3dfb4152124a1 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>08880c439ccf1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmac0bab9a57191 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mme8c5bae22cc51 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm4fa2e609b2c21 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmd47278a1c9061 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmf8ea2df868011 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm80a19af40d0f1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm0626f1b5e9191 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mmd503a7f9bfc31 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm7d1889a5922c1 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm4d7e36e395671 week agoClaude-Session: https://claude.ai/code/session_011z8C3ipASeprtHpFVFa3mm6e4919bdcdf91 week agoClaude-Session: https://claude.ai/code/session_016jf1nwF7Mv69vLpgVGyNnH8ad0fe49f17c1 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4a245918ff921 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>296178223b391 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>e69322ae62311 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>d137afb3a0b91 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>0097c65d99a41 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>32c3b36aaba21 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>eb1cea2d549f1 week agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>deee69e30c872 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>fb4e87264db32 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>b65d079da1db2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>6845315621972 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>8c40238ac3542 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>28238a191ea92 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>158d4927e2e92 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>af0f924a845b2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ae02b0853b222 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>2285e2a1cca42 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f6982c91f3852 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>71f014c95c362 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>c4f3cabc1d4b2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>c3d5516c608a2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>a4941636de5f2 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>b542986d62d92 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>d7ee6c3c60672 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>668b005cfda52 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>59a96c645dbb2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>ced3b686df6f2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f33e8259ba382 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>54a55a9155f82 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>52e7ce8d95382 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f80e0d7a64e42 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>afe13195e1b12 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>b452a4f7fe112 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>f0747eb9b4bd2 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>588e20e10ab22 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>514ad0800a772 weeks agoCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>d903337969bb2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>9ef5a8e20ff52 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>9dff7408c7762 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>42c99434484d2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>019ce7892df22 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1d29819390b82 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>3d5ca0ca0f682 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>78cfb3f438fc2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>4b6acfc5c7102 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>db8d2b4734e52 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>90983c8f65692 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>9732858f6b0c2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>370b04b6bbd12 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>0b87e2e8e92b2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>eb16e540ea2c2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>331c1ba9f6da2 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>1247fdf1f1a22 weeks agoCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>30e05a74423a2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>98b1638aa2b92 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>e22ef1f4c1172 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>b0b6ec72edbd2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>102d7cb992542 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>90f70efbaa282 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>ba07b36b4aef2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>2b423103a9352 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>ea3a026875282 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>df81445b72a42 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>ac1f3af9a4cd2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>22c585e07bdf2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>f1f0efa75a2c2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>d26da3c9f23c2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>95ab846eda192 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>392cf2104b362 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>47264645b4bb2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>8292c45126c02 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>d9b4421e66152 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>96b34a1c359b2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>89f9994f719f2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>495df1e652b82 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>ac52e08432462 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>a51bddc19dd12 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>6d90c32b93fb2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>2e2023d0f9632 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>4eb9d515737e2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>46ae07a7ab7a2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>28cbcf81b6682 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>46a52055d6502 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>a9aabe4bf94e2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>9a85def1595e2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>a44422df3d3e2 months agoCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>944d4ab181542 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>5b6e818553152 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>582827fa525c2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>c820a8a041302 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>3db5f12a129d2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>bffe3b88b58e2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>b69a95112b8e2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>72cf28e3caaf2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>6d7ec2c7c3022 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>c5a240fd1edf2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>54e7d60760372 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>0d7e811b016d2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>3972ca02c56b2 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>0f745982f5092 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>a41e176528e12 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>206242b51e032 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>35969d96ef222 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>38b703d9b4902 months agoCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com># CLAUDE.md
Guidance for agents working in this repo.
## What this is
Nine is the umbrella project/brand for a suite of Android apps built for
phones with a physical D-pad/keypad and no touchscreen (the target hardware
T9 predictive text was designed for). Each app follows a `[Letter]9` naming
convention:
- **L9**: Launcher on 9 keys
- **C9**: Calendars and Contacts on 9 keys
- **P9**: Phone on 9 keys
- **M9**: Messages on 9 keys
Each app ships as its own installable APK with its own F-Droid listing -
---
name: tickets
description: How to file, triage, label, work on and close Nine tickets on SourceHut (todo.sr.ht) with the hut CLI, and what each label means. Use whenever you read, create, comment on, label or close a ticket, or the user says "issue", "ticket" or "P1/P2/P3".
---
# Tickets
All Nine work is tracked in one SourceHut tracker for the whole suite: **https://todo.sr.ht/~timofurrer/nine**
(`hut todo ... -t nine`). Ticket URL form: `https://todo.sr.ht/~timofurrer/nine/<id>` (hut prints it with ---
name: release
description: Cut a suite-wide Nine release - decide which apps changed, bump versionName/versionCode, write the fastlane changelogs, commit, push, tag and push the tag, then watch the release run and verify the published APKs and F-Droid repo. Use only when the user asks to release (or to bump versions / cut a tag) for L9, C9, P9 or M9.
---
# Releasing the Nine suite
A release is one suite-wide CalVer tag. Pushing it makes sr.ht's `.builds/release.yml` re-test and lint every
module, then---
name: chunk-of-work
description: The end-to-end flow for one chunk of work in Nine - understand, propose (survey the user on design/UX/refactoring decisions), implement (with Opus/Sonnet subagents where it pays off), review, test on the phone, commit, push and close the tickets. Use whenever the user asks to fix, implement or change something, directly or by ticket number ("fix #10", "implement #27, #28", "make the dialer do X").
---
# A chunk of work
One request from the user ("fix #10, #11", "implem---
name: on-device-testing
description: When, what and how to test Nine apps on the user's real phone over adb - asking the user to connect it, safety rules for their daily phone, adb patterns for driving the keypad UI and checking providers/alarms/notifications, and labelling tickets needs-device-testing when no phone is available. Use whenever a change touches platform behaviour unit tests can't prove (Telecom, SMS role, notifications, alarms, broadcasts, providers, sync, intents from other apps, permiss---
name: commit-messages
description: How to write commit messages in this repo. Use whenever you create a git commit (or a squash/merge message) here, and when asked to reword one.
---
# Commit messages
Follow https://cbea.ms/git-commit/, with the project conventions below. Keep it short and written for a
person reading `git log` in a year.
## Subject
- Start with the thing it touches: `L9:`, `C9:`, `P9:`, `M9:` or `Core:` (`Contacts:` for the `:contacts`
module). No other prefixes - no `feat:`, `finone