↳ RepoQuest
READ / REASON / REVEALOFFLINE CASE FILE
CASE FILE · the-borrowed-menu

Who ordered the extra cake?

The first customer asks for cake. The next customer orders the regular lunch, but cake appears on their receipt too. A fresh service works perfectly. Follow the two requests and find what crossed the counter.

customer-contract menu-service

01 / The evidence

EVERY LINE HAS A SOURCE
REPRODUCTION / BEFORE

Something does not add up.

4 behavior tests · 2 assertion failures

Inspect the captured failing test log
test_customer_menus_are_independent (quest_contract.MenuContract.test_customer_menus_are_independent) ... FAIL
test_default_menu (quest_contract.MenuContract.test_default_menu) ... ok
test_next_customer_gets_default_menu (quest_contract.MenuContract.test_next_customer_gets_default_menu) ... First customer: soup, bread, cake
Second customer: soup, bread, cake
FAIL
test_special_is_added (quest_contract.MenuContract.test_special_is_added) ... ok

======================================================================
FAIL: test_customer_menus_are_independent (quest_contract.MenuContract.test_customer_menus_are_independent)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "<snapshot>\__rq_contract__.py", line 26, in test_customer_menus_are_independent
    self.assertEqual(receipt(first), "soup, bread")
AssertionError: 'soup, bread, cake' != 'soup, bread'
- soup, bread, cake
?            ------
+ soup, bread


======================================================================
FAIL: test_next_customer_gets_default_menu (quest_contract.MenuContract.test_next_customer_gets_default_menu)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "<snapshot>\__rq_contract__.py", line 20, in test_next_customer_gets_default_menu
    self.assertEqual(receipt(second), "soup, bread")
AssertionError: 'soup, bread, cake' != 'soup, bread'
- soup, bread, cake
?            ------
+ soup, bread


----------------------------------------------------------------------
Ran 4 tests in 0.001s

FAILED (failures=2)
menu-source

A clean start

before/cafe.py : 1–5

1"""A tiny cafe menu cache. No network, database, or third-party packages."""234def load_menu():5    return {"name": "Lunch", "items": ["soup", "bread"]}

SHA-256 9bc599d7ec7b14610f0970452f7e959b32812e9fda72cab67d682d1fc10227e8

menu-service

One service, two customers

before/cafe.py : 8–16

8class MenuService:9    def __init__(self):10        self._menu = load_menu()1112    def menu_for(self, special=None):13        menu = self._menu.copy()14        if special is not None:15            menu["items"].append(special)16        return menu

SHA-256 9bc599d7ec7b14610f0970452f7e959b32812e9fda72cab67d682d1fc10227e8

receipt

The receipt printer

before/cafe.py : 19–20

19def receipt(menu):20    return ", ".join(menu["items"])

SHA-256 9bc599d7ec7b14610f0970452f7e959b32812e9fda72cab67d682d1fc10227e8

customer-contract

What every customer should receive

contract.py : 7–27

7class MenuContract(unittest.TestCase):8    def test_default_menu(self):9        self.assertEqual(receipt(MenuService().menu_for()), "soup, bread")1011    def test_special_is_added(self):12        self.assertEqual(receipt(MenuService().menu_for("cake")), "soup, bread, cake")1314    def test_next_customer_gets_default_menu(self):15        service = MenuService()16        first = service.menu_for("cake")17        second = service.menu_for()18        print("First customer:", receipt(first))19        print("Second customer:", receipt(second))20        self.assertEqual(receipt(second), "soup, bread")2122    def test_customer_menus_are_independent(self):23        service = MenuService()24        first = service.menu_for()25        second = service.menu_for("cake")26        self.assertEqual(receipt(first), "soup, bread")27        self.assertEqual(receipt(second), "soup, bread, cake")

SHA-256 66626882801295cb3a926a7695961e01f5611d9e3029bf57604adb2754d3d12a

Evidence provenance & license

An original RepoQuest teaching fixture. The cafe and incident are fictional; the Python behavior and captured test failures are reproducible. This is not a third-party historical bug.

Declared license: MIT

Captured 2026-09-23T02:04:28.187535+00:00 · Python 3.11.5 · win32

Snapshot and contract hashes bind this page to its local verification record. They are integrity checks, not independent attestations.

LICENSE.txt
MIT License

Copyright (c) 2026 RepoQuest contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
All evidence fingerprints
{
  "LICENSE.txt": "aa51c0cfad4e1af314078d4c43f79b715568c53d61687965d1e6f2e90795e64b",
  "after/cafe.py": "339adaaecc3a162bdd7477268de1c0f63d080f536752d1e719063816598c6a32",
  "before/cafe.py": "9bc599d7ec7b14610f0970452f7e959b32812e9fda72cab67d682d1fc10227e8",
  "case.json": "b8783ce6d97c7edffbe1bd6277ace4f5624b09b768ad1e849de1b8cd5aec6f2d",
  "contract.py": "66626882801295cb3a926a7695961e01f5611d9e3029bf57604adb2754d3d12a"
}

Close the case?

This will show the explanation, exact patch, and passing test log. You can keep investigating first.