# STEP1_5_CONSOLIDATION.md ## Doel Consolidatie van stap 1 t/m 5 (backend skeleton, path_guard, unit tests, browse endpoint, golden tests). ## 1. Test-run context Tests draaien vanuit repository root met: - `PYTHONPATH=webui` Definitieve testcommando's voor deze fase: - `PYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests/unit -p "test_*.py" -v` - `PYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests/golden -p "test_*.py" -v` - `PYTHONPATH=webui python3 -m unittest discover -s webui/backend/tests -p "test_*.py" -v` ## 2. Minimale dependencies voor stap 1-5 Vastgelegd in: - `webui/backend/requirements.txt` Benodigd voor deze fase: - FastAPI app + browse endpoint - unit tests - golden tests Dependencies: - `fastapi==0.111.0` - `starlette==0.37.2` - `pydantic==2.12.5` - `httpx==0.27.2` - `anyio==4.4.0` - `sniffio==1.3.1` ## 3. Minimale wijzigingen in deze fase Functioneel gewijzigde bestanden: - `webui/backend/app/api/routes_browse.py` - `webui/backend/app/dependencies.py` - `webui/backend/app/main.py` Testmatig gewijzigde bestanden: - `webui/backend/tests/golden/test_api_browse_golden.py` - `webui/backend/tests/golden/test_api_errors_golden.py` Waarom golden tests van TestClient naar `httpx.ASGITransport` zijn omgezet: - In deze omgeving blokkeerde de TestClient-runner op sync execution pad. - `httpx.ASGITransport` voert requests in-memory tegen de ASGI app uit zonder die blokkade. - Dit is een testuitvoerbaarheidsfix, geen API-contractwijziging. Waarom async wijzigingen nodig waren: - Error-pad en dependency-pad moesten async blijven om runtime-blokkade in deze omgeving te vermijden. - De wijzigingen zijn intern uitvoeringsgericht; het HTTP-contract blijft gelijk. ## 4. Contractbehoud (expliciet) Door deze consolidatiestap is niets gewijzigd aan: - endpointpad: `GET /api/browse` - query parameters: `path`, `show_hidden` - response shape: `path`, `directories[]`, `files[]` met dezelfde velden - error codes: o.a. `invalid_root_alias`, `path_traversal_detected`, `path_not_found`, `path_type_conflict` - hidden files policy: default hidden uit, optioneel via `show_hidden=true` ## 5. Scopebevestiging Niet geïmplementeerd in deze consolidatiestap: - rename - mkdir - delete - copy - move - tasks/worker - frontend