Task
📝 **Task:** Implement `FileCache` with two methods:
* `upload_or_reuse(content: bytes) -> str` — returns a `file_id`. If `sha256(content)` was seen before, return the cached id. Otherwise call `self._real_upload(content)` (already provided — it returns `f"file_{n}"` where `n` is the call count starting at 1) and remember the mapping.
* `stats() -> tuple[int, int]` — returns `(uploads_called, cache_hits)`.
The starter ends with a canonical driver: 2 distinct uploads + 1 duplicate. Expected canonical output:
```
file_1
file_2
file_1
(2, 1)
```
Two additional graded scenarios run after your code (via `input_append`) and exercise the empty-bytes and hot-doc boundaries — your `FileCache` must generalise so they pass too.
📋 Implement the function above. Tests run automatically.
💡 **Hint:** Re-read the theory if stuck.