Expand description
The call screening (docs/android.md, “Calls”): what becomes of a call from a number nobody knows. The owner’s decision of 14 October 2026: “call screening is not only distraction protection, it’s spam protection too, so it needs to be separated from don’t disturb mode and might get enabled 24/7”; its rules are the decisions 3 to 5 he took on 18 October 2026 (docs/attention.md, §10).
Apart: the people you know (your lists, your address books, the
phone’s contacts, a number you called lately, Always through) are decided
by the matrix of what reaches you, its Calls rows, the time and its layers
(attention); everyone else by the screening alone, which neither
do-not-disturb nor any state of yours switches off. What always rings
(emergency numbers and their callback, the day after you call one, a
second call within 15 minutes) and the blocked come before both
(calls::decide).
What it screens, each kind on its own: a number in no address book
(unknown), a hidden number (hidden), an automated caller (automated:
ARCEP’s roots for machines), a number that cannot be a caller’s
(impossible: one the plan forbids as a caller ID, 089), a number whose
verification failed (unverified). The last three it keeps out at all
hours, a second call too, while they go to voicemail. A number you called
in the last 14 days counts as your contacts do (called). Its hours: at
all hours, or only outside your work and admin hours (hours), for
numbers nobody knows and hidden numbers. Whatever it lets ring by itself
never rings where your contacts’ row declines (do-not-disturb, the night,
a pause): only Expecting a call opens beyond (calls::decide; review of
part 2, 19 October 2026). ARCEP’s list of the blocks it had attributed to
no operator on a day decides nothing: a block attributed since may hold a
new line. A declined call’s line only says it, while the list counts
(unattributed_since).
Kept in [screening], shared with the settings; each key unsaid takes
its first value: unknown and hidden numbers from your Calls rows of
strangers and hidden numbers as they were before the screening was apart
(never ringing where the row declined), the rest as decided. Written a key
at a time, only when you change one; the first written also fixes unknown
and hidden numbers at their first values, which the Calls rows then move
no more (set). No preset nor any write of the matrix touches those rows
(attention::screened). An older Sioul keeps the section as it is. The
numbers known by their kind: data/screening-numbers.toml.
Structs§
- Group
- One group of prefixes, as the plan or ARCEP’s data says them.
- Numbers
- The numbers the screening knows by their kind (
data/screening-numbers.toml). - Screening
- The screening as it stands:
[screening], each key unsaid at its first value. - Settings
[screening]as written, key by key: read leniently, so that a word this version does not know (a later version’s) never stops the configuration from reading; that key then takes its first value.- Table
Part - What the calls’ table says of the screening (version 2), as Java reads it (Calls.Screening): the screening as it stands, and the prefixes it needs.
Enums§
- Hours
- When the screening screens.
- Rule
- What becomes of a call from a number in no address book, or of a hidden number.
- Spam
- What becomes of an automated caller, a number that cannot be a caller’s, a number whose verification failed.
Constants§
- CALLED_
DAYS - A number you called in the last this many days counts as your contacts do (a guess, research 8.3, step 6).
- KEYS
- The keys of
[screening]and the words each takes (“bool”: on or off). - NUMBERS 🔒
Functions§
- first_
rule - A rule’s first value, from your Calls row of strangers or hidden numbers as it was before the screening was apart: the closest rule that never rings where the row declined. Ringing at every hour only when it rang at every time; ringing in work and admin hours when it rang in either; voicemail otherwise (review of part 2, F2: a row that rang in leisure alone once gave ringing at night). Its layers (time for you, do-not-disturb) are no part of the screening.
- national
- A number’s key (
phones::key, “+33199001234”) in the French plan’s national form (“0199001234”), its overseas departments’ included (+262, +590, +594, +596: “+262262123456” is “0262123456”); none for any other. - set
- One setting of the screening written (Settings ▸ This phone ▸ Call
screening),
keyas “screening.unknown”: its value checked, then only that key, in place (config::set_value); the others keep their first values until you change them. Refused, said, for a key or a word it does not take. - shipped
- The numbers as Sioul ships them, read once.
- starts_
with_ any - Whether a national number starts with one of these prefixes.