The challenge
"A met Z. They really hit it off."
| answer_id | Question | Format |
|---|---|---|
message |
"Decode the assigned blob completely. What exact answer slug does its final non-empty decoded line instruct you to submit?" | pattern: "three lowercase words separated by hyphens, followed by a hyphen and a two-digit number; submit the slug only"; trimmed |
Reading the prompt: what it said we'd need
| Clue | What it pointed to | What I did about it |
|---|---|---|
| "A met Z" | Atbash: the alphabet folded onto itself, a↔z, b↔y, … | Added Atbash for both cases, leaving digits and punctuation alone (the slug's number survives as-is) |
| "really hit it off" | They pair up both ways: Atbash is its own inverse, like ROT13 and reversal | Treated it like those two: an extra move, not a decoder in Day 1's list, because it always "succeeds" |
| "Decode the assigned blob completely" | Atbash stacks with the earlier days' layers | Added it to the whole-blob search and to each Mastery line's moves |
What was in the files
- Single Solve:
blob.txt, 109 bytes: the usual instruction sentence in Atbash, one line (Mrxv dlip wvxlwrmt gsrh dzinfk! …). Slughandy-candle-quartz-31. - Time Trial:
blob.txt, 108 bytes: the same template in Atbash. Slugsilly-basket-maple-95. - Mastery: one zip of 63 blobs (
blob-01.txt…blob-63.txt). Each has 13 labelled lines (NN<TAB>…) of about 9 characters each, in Day 12's pattern (Base64, ROT13, hex, binary, decimal, octal, percent, HTML entities,\uescapes, Base32, Base64 again, one reversed line) plus one Atbash line, always the last (for exampleyirwtv-78forbridge-78).
Single Solve
The automated morning solver (a scheduled script on our Kali VM) stopped cleanly, as designed: Day 12's solver found "no instruction line" after every pass and sent nothing.
Today's solver wraps Day 12's Back at You (and through it Days 1–11). Atbash only comes into play when the old chain finds nothing, so earlier days' answers can't change: - each labelled line's one-step moves gain Atbash (Day 12's per-line passes look the moves up when they run, so replacing that one function reaches all of them); - after Day 12's chain fails: the whole blob in Atbash, then Day 12's chain on the result; - last: a bounded search (6 moves, 3,000 states) over {Day 1's decoders, ROT13, reverse, Atbash}, never the same self-inverse move twice in a row.
Our regression rehearsal also gained an atbash layer for its generated Mastery.
Tests (7, all pass on our Kali VM):
- Atbash undoes itself and leaves the digits alone;
- a whole-blob Atbash sentence, Atbash under Base64, and Day 12's reversal all still decode;
- a labelled-line blob mixing Atbash, Base64, and hex lines decodes;
- delivery 1: / delivery 2: labels each find their own download;
- the real Single Solve blob answers handy-candle-quartz-31.
Sent once: CORRECT 09:07:28 ET (722689f4…222d).
Regression rehearsal (before any timed start): 45 saved Warmups sets, slowest 4.45 s (Day 12's Mastery, 30 s clock), per-set answers equal, 44 identical to Day 12's solver and 1 newly solved (today's). A generated 60-blob Mastery with Atbash: 60/60 correct in 0.36 s. The rehearsal passed.
Time Trial
CORRECT on the first attempt, ranked. The start replied unique_attempts_remaining: 255 and hall_of_fame_eligible: true: the first ranked Warmups start since Huntress's pool fix.
started_at 2026-10-13T13:08:39.183Z
deadline 2026-10-13T13:09:09.183Z (30 s)
answers 1 silly-basket-maple-95
start 695 ms
artifact 344 ms
solve 1 ms
submit 873 ms
TOTAL 1.91 s (submit +1.31 s after started_at)
result CORRECT flag 14f7907d…0401
Mastery
CORRECT on the first attempt, ranked (63 sets, 80 s clock).
started_at 2026-10-13T13:08:59.622Z
deadline 2026-10-13T13:10:19.622Z (80 s)
answers 63
start 547 ms
artifact 390 ms
solve 1019 ms
submit 841 ms
TOTAL 2.80 s (submit +2.36 s after started_at)
result CORRECT flag 5e89c416…60d6
Solve took 1.0 s for 63 blobs, the biggest part of the run. The per-line passes now try Atbash on every line too, which widens their search. That's the place to look for a faster ranked time.
Time to solve
All three modes were solved by 09:09:01 ET, 8 min 46 s after the Single Solve was started; most of that went to building the Atbash layer (Claude spent the first ~5 minutes on the Metadata lane). The ranked Time Trial and Mastery each went through on the first submit, at +1.31 s and +2.36 s.
Takeaways
- Self-inverse ciphers are moves, not decoders. ROT13, reversal, and now Atbash always "decode" something, so they go into the search as moves and only run when the old chain fails.
- The rehearsal earns its keep. Since a timed run expired on Day 12, no timed start happens until saved sets and a generated Mastery pass inside a quarter of the clock; today it passed first time, and both ranked runs went in cleanly.
- Huntress's pool fix has landed for Warmups: 255 attempts and ranked starts again.