aboutsummaryrefslogtreecommitdiffstats
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md7
1 files changed, 7 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index b2ff32a..14d1980 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -245,6 +245,13 @@ keypair bundle, or anything that looks like a user's public key.
the task for good. Symptom is always the same — daemon running, logging nothing,
`connected_nodes: 0`, socket in CLOSE-WAIT. Look there first
+- **`create_all()` is not a migration.** It creates missing *tables* and never a
+ missing *column*, so a new column reaches the tests (fresh DB every run) and never
+ reaches the deployed hub. Symptom: one endpoint answering 500 with an HTML body
+ while everything else works, and a `psycopg` `UndefinedColumn` in the journal.
+ `deploy-hub.sh` runs `alembic upgrade head` before restarting the service; a schema
+ change that skips a migration file will still pass every test you have
+
**Corrections to remember:**
- `punch_nat()` is **not** a NAT traversal stack — one UDP probe, no STUN, no candidate
gathering, one ISP validated. **ICE/STUN (WebRTC) is the traversal path**, for native