diff --git a/logs/laneC.md b/logs/laneC.md index e8b3281..a53c6ae 100644 --- a/logs/laneC.md +++ b/logs/laneC.md @@ -8,4 +8,30 @@ Format per session: BLOCKED/REQUESTS: … NEXT: … -(no sessions yet) +## 2026-07-18 session 1 +DONE: M1 code-complete. Commit bb85eef. +- `requirements.txt` (fastapi, uvicorn only); `.gitignore` += `.venv/`. +- `scenegod/server.py` single file: statics (`/` no-store placeholder, + `/web/{path}` short-cache, path-guarded), `/assets/tree` (5s cache, + per-category grouping), `/assets/file` (traversal-guarded), `/scenes` + CRUD with atomic write + slugify + `validate_scene`, render endpoints + (begin/frame accept + save; end/status/out 501 until M3). +- `scripts/test_server.py`: 5 groups green (tree grouping, file stream, + 4 traversal attempts rejected, scene round-trip w/ slugify, 5 validation + failures + 1 fade-overlap-allowed). `OK: 5 test groups passed`. +DECISIONS: +- System python3 is 3.14 (fastapi present but pydantic missing); made a + `.venv` on python3.11 per CLAUDE.md stack rule. Tests + server use + `.venv/bin/python`. `.venv/` gitignored. +- `web/` is under `scenegod/web/` per PLAN §2 (not repo root) — `WEB` + points there; Lane A/B statics resolve via `/web/{path}`. +- Asset grouping: per-category primary ext set (models for chars/anims/ + props, images for backdrops, audio for audio). Non-primary image sharing + a stem → `thumb`, not a `format`. `path` prefers glb else first model. + Entries with no primary format dropped (thumb-only stems aren't assets). +- Clip-overlap check: violation if `next.start < a.end - a.fade`, where + `a.end = start + (out-in)*loop`. Fade-region overlap allowed. +BLOCKED/REQUESTS: none. +NEXT: M2 (when unlocked): scene-validation hardening + asset thumbnails +endpoint. M3 render pipeline (ffmpeg encode + web/render.js) is designed in +C-server.md §C5, endpoints already stubbed — implement at SYNC-2/M3.