<a id="ch-15"></a>

## Chapter 15 — NOT READY names the false keys

### Learning outcomes

After this chapter, you should be able to:

1. Build `missing` as the false keys.
2. Read the printed line as that join.
3. Refuse a count of people inside the Boolean.

### 15.1 One false key. The prose about three accounts is not the value.

`missing` keeps every key whose Boolean is false, in dictionary order. `', '.join(missing)` would separate several keys with a comma and a space. This dictionary has one false key, so the join has nothing to separate. The printed line is exactly `NOT READY: admin accounts use MFA`. `READY` prints only when `missing` is empty. It is not empty.

The opening week speaks of three administrator accounts. The release lesson says one volunteer administrator has not finished multi-factor sign-in. Those sentences are prose. The Boolean does not store the integer 3, the integer 1, or a fraction. It does not store the volunteer's name, which was never given, or the kind of second factor. Two finished accounts and one unfinished account would be a story about the prose. It is not a value the script computed, and this chapter does not print `2 of 3`.

If a second key were false, its name would appear in `missing` in dictionary order, on the same NOT READY line. No second key is false. Changing the MFA Boolean to true in order to see `READY` would be a different file. The published checklist does not make that change.

| Stored by the false Boolean | Not stored |
|---|---|
| The key is unmet | Which of three accounts |
| It is the only unmet key | A name, a factor type, a serial |
| The line names that key | The word READY |

### 15.2 Worked example

| Reading | What `missing` holds | Decision |
|---|---|---|
| NOT READY names one key | `admin accounts use MFA` | Keep |
| READY is the empty-list branch | The list has one key | Keep as the other branch |
| "The script reports 2 of 3 accounts." | No account count is stored | Refuse |
| "Two unmet keys were joined." | One Boolean is false | Refuse |

> **Synthetic case.** The volunteer administrator remains unnamed.

### Errors and limits

Do not turn one Boolean into a census of the three accounts.

### Apply

- **EX061 — The false key.** The last line says `NOT READY: admin accounts use MFA`. A classmate rewrites it as `2 of 3` and adds the unfinished volunteer's name. What does the line actually contain? *Rubric:* 3 = one false key, named in full, after `NOT READY:`; `READY` is not printed; three accounts and one unfinished volunteer stay prose; no name and no `2 of 3` are in the script;; 2 = the printed line stays and the census stays out;; 1 = one token;; 0 = none.

<!-- open-cyber-academy:chapter-navigation:start ch-15 -->
### Continue studying — lesson 15 (chapter 15 of 20)

[← Chapter 14](#ch-14) · [Course chapter index](../SUBJECTS.md) · [Chapter 16 →](#ch-16)

Continue to the next authored lesson.
<!-- open-cyber-academy:chapter-navigation:end -->

## Worked answers

<a id="answer-ex061"></a>
**EX061.** The line is `NOT READY: admin accounts use MFA`. One key is false. Three accounts and one unfinished volunteer are prose. No name and no fraction are stored.
