bchanot-cv/.claude/memory/blockers.md
Bastien Chanot aa52153b2c docs(memory): BLK-001 favicon 404 in prod — Dockerfile COPY whitelist
Root cause + fix logged. New repo assets must be added to Dockerfile
COPY whitelist explicitly; future option = glob pattern if asset count
grows. Journal updated.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 04:08:18 +02:00

45 lines
2.1 KiB
Markdown

---
type: blockers_registry
entry_prefix: BLK
schema:
id: BLK-XXX
date: YYYY-MM-DD
friction: string (what was blocked)
real_cause: string (root cause, not symptom)
solution: string (workaround or fix)
status: [open | resolved | upstream]
rules:
- Open a blocker as soon as friction > 15 min wasted. Close it with a real cause, not "moved on".
- Link to upstream issue / PR / commit when applicable.
- If cause is a bug in a dependency, set status upstream with a pointer to the tracker.
---
# Blockers registry (BLK)
## Index
| ID | Date | Friction | Status |
|----|------|---------|--------|
| BLK-001 | 2026-05-17 | Favicon 404 in prod after rebuild — Dockerfile selective COPY hid new repo files | resolved |
---
## BLK-001 — Favicon 404 in prod after Docker rebuild
- **Date**: 2026-05-17
- **Friction**: User reported favicon missing on `bchanot.fr` prod despite new landing page being live. `docker compose up -d --build` did not fix it.
- **Real cause**: `Dockerfile` uses selective `COPY index.html ./`, `COPY CV_*` (whitelist), not `COPY . ./`. Favicon assets added in commit `ef31fb3` (`favicon.svg`, `favicon-32.png`, `favicon.ico`, `apple-touch-icon.png`) were never wired into Dockerfile → never entered image layers → 404 from container even after full rebuild. New `index.html` worked because it was already on the COPY whitelist.
- **Solution**: Append `COPY favicon.svg favicon-32.png favicon.ico apple-touch-icon.png ./` to Dockerfile (commit `f1e4392`). Matching nginx cache rule for `*.{ico,svg,png,jpg,jpeg,gif,webp}` added (30d immutable). VPS rebuild required after pull.
- **Status**: resolved
- **Future application**: Whenever the repo grows a new top-level asset that must ship in the image, audit Dockerfile COPY whitelist immediately. Consider replacing the whitelist with `COPY index.html CV_*.html CV_*.pdf favicon.* apple-touch-icon.png ./` or a glob-friendly pattern if asset count grows further.
## BLK-XXX - <friction>
- **Date** : YYYY-MM-DD
- **Friction** : <ce qui était bloqué>
- **Cause réelle** : <cause racine>
- **Solution** : <workaround ou fix>
- **Statut** : open | resolved | upstream
-->