diff --git a/docs/superpowers/plans/2026-05-08-overlay-file-tree.md b/docs/superpowers/plans/2026-05-08-overlay-file-tree.md index f56561d..158e71f 100644 --- a/docs/superpowers/plans/2026-05-08-overlay-file-tree.md +++ b/docs/superpowers/plans/2026-05-08-overlay-file-tree.md @@ -15,7 +15,7 @@ See the design doc for rationale. Implementation-relevant summary: - New blueprint `files_bp` registered in `l4d2web/app.py` next to `overlay_bp`. - Path resolution chains through `l4d2host.paths.overlay_path()` (already validates the overlay ref + resolves under `LEFT4ME_ROOT/overlays/`) and `l4d2web.services.security.validate_overlay_ref` (rejects empty/`.`/`..`/absolute/whitespace/backslash for the sub-path component). - Listing rule: target must be a descendant of `overlay_root` after `Path.resolve()`. Download rule: real path must be a descendant of `LEFT4ME_ROOT` after `os.path.realpath()`. -- Tree shape: single recursive partial. `_overlay_file_tree.html` renders `