lesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memolesson 3 of 3 · challenge the recommendation, then rerun the memochallenge the recommendation, then rerun the memo
Checkpoint
One last thing before we move on. pass this to mark the lesson done, or skip and keep moving.
Checkpoint: the ship gate — the whole chapter as one function. A memo leaves the building only if all four hold:
- The cleaning log reconciles:
rows_in − rows_outequals the sum of the log'sdroppedlist. Reason if not:cleaning log does not reconcile - Every number traces: each claim's
refis non-None, exists in the memo'sresults, and matches itsvalue. Reason if not:untraced number in memo - The challenge is real:
challengeris non-empty, differs fromauthor, and all three triad legs are inanswered. Reason if not:challenge missing or self-signed - Rerun matches: the two fingerprints are equal. Reason if not:
rerun drift
Write ship_gate(memo) returning ("SHIP", []) or
("HOLD", reasons) with reasons in check order 1-4. The report loop
is provided.
Expected output:
M-1: SHIP
M-2: HOLD — untraced number in memo; rerun drift
M-3: HOLD — cleaning log does not reconcile; challenge missing or self-signed
M-4: HOLD — challenge missing or self-signed