← Back to Blog

DROPPEDBIT BLOG

The Misfiled Manifest: Solution

Author: DroppedBit Published: Puzzle: autumn-2026-07

Weekly Puzzle #07 of the Autumn 2026 season presented The Misfiled Manifest, a five-locker cargo puzzle wrapped in a Serenity freight-office dispatch. With Weekly Puzzle #08 now active, ranked submissions for Issue 07 have concluded.

Spoiler warning: This post contains the complete solution for Weekly Puzzle #07. If you have not reviewed the transmission yet, you can inspect the archived puzzle record.

1. The Challenge Artifact

The transmission presented a set of detached cargo labels and recovered notes from a five-locker bay and asked solvers to rebuild the manifest and read the channel marks from locker 1 to locker 5:

SERENITY / CARGO BAY
Personal effects: Jayne’s knitted hat.
Do not include it in the freight count.

Lockers run left to right, 1 through 5.
Each holds one case on one unique channel.

Cases: relay, diode, coil, antenna, engine
Channels and printed marks:
42 A   21 R   35 D   27 C   14 E

Recovered notes:
- Coil is immediately left of engine.
- Diode is left of antenna.
- Antenna is left of relay.
- Coil uses channel 27; relay uses 21.
- Channel 14 is immediately left of 35.
- Channel 42 is next to relay.
- Channel 35 is two lockers right of coil.

"Left of" need not mean adjacent unless
"immediately" is stated.

Each of the five lockers (1 through 5, left to right) holds both a case (relay, diode, coil, antenna, engine) and a unique channel (42, 21, 35, 27, 14). Because the recovered notes mix case-to-case rules, channel-to-channel rules, and cross-constraints between cases and channels, neither permutation can be solved in isolation.

2. The Traps: Uncoupled Ordering and Adjacency Assumptions

Several shortcuts fail before constraint propagation even begins:

  1. Reading the printed channel marks in table or numeric order: Reading the Channels and printed marks row directly (42 A 21 R 35 D 27 C 14 E) yields ARDCE, while sorting by channel number (14, 21, 27, 35, 42) yields ERCDA. The channel numbers are identifiers, not locker indices or sort keys.

  2. Treating every "left of" clue as adjacent: The footer explicitly distinguishes relative order from adjacency:

  3. Coil is immediately left of engine requires pos(engine) = pos(coil) + 1.
  4. Channel 14 is immediately left of 35 requires pos(35) = pos(14) + 1.
  5. Diode is left of antenna and Antenna is left of relay require only pos(diode) < pos(antenna) < pos(relay)—the three cases can be separated by coil and engine.

  6. Counting the personal-effects line as cargo: The header notes Personal effects: Jayne’s knitted hat. Do not include it in the freight count. It is a narrative red herring rather than a sixth item.

3. Structural Reduction: Four Candidate Case Layouts

Although 5! × 5! = 14,400 combined (case, channel) pairings exist in principle, the case constraints alone collapse the search space to just four candidate case arrangements:

  • coil and engine form a contiguous two-locker block (coil, engine) starting at locker k ∈ {1, 2, 3, 4}.
  • Once (coil, engine) occupies lockers (k, k + 1), exactly three lockers remain empty.
  • Because diode, antenna, and relay must appear in strict left-to-right order (diode < antenna < relay), there is only one way to place them into the three remaining lockers for any choice of k:
Candidate coil pos (k) Locker 1 Locker 2 Locker 3 Locker 4 Locker 5
Layout 1 1 coil engine diode antenna relay
Layout 2 2 diode coil engine antenna relay
Layout 3 3 diode antenna coil engine relay
Layout 4 4 diode antenna relay coil engine

Now consider how the channel rules attach to coil at locker k:

  • Coil uses channel 27 places channel 27 (C) in locker k.
  • Channel 35 is two lockers right of coil places channel 35 (D) in locker k + 2.
  • Channel 14 is immediately left of 35 places channel 14 (E) in locker (k + 2) - 1 = k + 1—the exact locker occupied by engine.

Together, these three clues form a rigid three-locker channel block (27, 14, 35) spanning lockers (k, k + 1, k + 2):

pos(27) = k           (coil)
pos(14) = k + 1       (engine)
pos(35) = k + 2

4. Eliminating the Impossible Placements

Testing the four candidate layouts against the remaining channel rules (relay uses 21 and Channel 42 is next to relay) eliminates three of the four options immediately:

  1. Layout 4 (k = 4, coil in locker 4) — Out of bounds: Channel 35 must sit two lockers right of coil at locker 4 + 2 = 6, which does not exist in a five-locker bay.

  2. Layout 3 (k = 3, coil in locker 3) — Collision at locker 5: With coil in locker 3, channel 35 must go into locker 3 + 2 = 5. However, Layout 3 places relay in locker 5, and relay uses channel 21. Locker 5 cannot hold both channel 35 and channel 21.

  3. Layout 2 (k = 2, coil in locker 2) — Conflict at locker 4: With coil in locker 2 and engine in locker 3, the ordered trio diode, antenna, relay occupies lockers 1, 4, and 5.

  4. Channel 35 goes two lockers right of coil into locker 2 + 2 = 4.
  5. relay sits in locker 5 on channel 21.
  6. Channel 42 is next to relay requires channel 42 to sit in locker 4 (the only neighbor of locker 5), which is already taken by channel 35.

  7. Layout 1 (k = 1, coil in locker 1) — Unique valid manifest:

  8. coil is in locker 1 on channel 27 (C).
  9. engine is immediately to its right in locker 2 on channel 14 (E).
  10. diode, antenna, and relay fill lockers 3, 4, and 5 in order.
  11. Channel 35 (D) sits two lockers right of coil in locker 3 (diode), immediately right of channel 14.
  12. relay occupies locker 5 on channel 21 (R).
  13. Channel 42 (A) sits in locker 4 (antenna), adjacent to relay in locker 5.

5. Verifying with Python

We can verify both the solution and its uniqueness by checking all 5! × 5! = 14,400 case-and-channel permutations:

from itertools import permutations

cases = ["relay", "diode", "coil", "antenna", "engine"]
marks = {"42": "A", "21": "R", "35": "D", "27": "C", "14": "E"}

solutions = []
for case_order in permutations(cases):
    p = {case: case_order.index(case) for case in case_order}
    if not (p["coil"] + 1 == p["engine"] and p["diode"] < p["antenna"] < p["relay"]):
        continue
    for chan_order in permutations(marks):
        q = {chan: chan_order.index(chan) for chan in chan_order}
        if (
            q["27"] == p["coil"]
            and q["21"] == p["relay"]
            and q["14"] + 1 == q["35"]
            and abs(q["42"] - p["relay"]) == 1
            and q["35"] == p["coil"] + 2
        ):
            word = "".join(marks[c] for c in chan_order)
            solutions.append((case_order, chan_order, word))

assert len(solutions) == 1
case_order, chan_order, word = solutions[0]
for locker in range(5):
    c = chan_order[locker]
    print(f"Locker {locker + 1}: {case_order[locker]:7s}  channel {c}  mark {marks[c]}")
print("Answer:", word)  # CEDAR

The reconstructed five-locker manifest is:

Locker Case Channel Printed Mark Satisfied Constraints
1 coil 27 C coil uses 27; immediately left of engine
2 engine 14 E Immediately right of coil; 14 immediately left of 35
3 diode 35 D 35 is two lockers right of coil; diode left of antenna
4 antenna 42 A antenna between diode and relay; 42 next to relay
5 relay 21 R relay uses 21; right of antenna

Reading the channel marks from locker 1 to locker 5 spells:

CEDAR

Submitting CEDAR completed the issue. Letter case and repeated whitespace are ignored by the answer checker.

6. Constraint Satisfaction in Practice

The deduction in The Misfiled Manifest is a compact instance of a finite-domain constraint satisfaction problem (CSP), where variables (cases and channels) must be assigned distinct positions from {1, 2, 3, 4, 5} subject to unary, binary, and alldifferent constraints:

Coupled Variables and Arc Consistency

When two permutation domains are linked by cross-constraints (Coil uses channel 27, Channel 35 is two lockers right of coil), pruning the domain of one variable immediately restricts the other. In automated solvers, arc consistency (AC-3) and bounds propagation formalize this exact step: because pos(35) = pos(coil) + 2 and pos(35) ≤ 5, the solver immediately narrows pos(coil) from {1, 2, 3, 4, 5} to {1, 2, 3} before branching.

Declarative Scheduling and Manifests

Real-world stowage planning, rack-elevation layout, and slot allocation problems use the same constraint structure at larger scales: hazmat containers must maintain minimum separation distances, refrigerated units must land on powered bay channels, and heavy pallets must sit adjacent to structural bulkheads. Rather than writing ad-hoc search loops, engineering teams encode these rules into CP-SAT or SMT solvers (such as OR-Tools or Z3) to find valid layouts or prove that a manifest is over-constrained.

Firefly Theming

The cargo bay header—referencing Serenity and Jayne’s knitted hat—nods to the 2002 space-western series Firefly (specifically the episode "The Message", in which Jayne Cobb receives a homemade orange-and-yellow earflap hat from his mother). As with the Hill Valley service log in Issue 06 and the Wayne Enterprises dispatch in Issue 05, the header provides in-universe flavor while the seven recovered notes completely determine the manifest.


More Weekly Puzzles

Want another technical puzzle? Explore the weekly puzzles →