Garry Tan and Claude Fable 5
0d2f703f28
fix(browse): restrictDirectoryPermissions warns and skips symlinked dirs
...
Closes the Windows Free Tests red: recent lane failures showed a
platform-unguarded POSIX mode-bit assertion ('Expected: 493' — a
symlink-skip test) from PR-branch variants; the KNOWN_WINDOWS_SAFE
force-include reason ('mode-bitmask hits are POSIX-branch only') did
not hold for that shape, and main had neither the guard nor the
behavior.
- product: lstat first; a symlinked dir gets a warning and a skip on
both platforms — chmod AND icacls dereference the link, so
restricting through a symlink hardens an unvetted target (and
/inheritance:r could lock out its real owner). All callers already
treat hardening as best-effort (try/catch).
- test: the symlink regression test, platform-aware — symlinkSync in
the house try/catch skip pattern (Windows runners without Developer
Mode can't create symlinks), mode-bit assertion guarded off win32,
behavior assertions (no throw, warning text, target readable)
everywhere; POSIX still proves the skip (0o755 unchanged, not 0o700)
- KNOWN_WINDOWS_SAFE reason updated to the now-true premise
20/20 pass on Linux.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-29 04:57:22 +00:00
..
2026-08-19 11:42:55 -07:00
2026-03-26 11:15:24 -06:00
2026-03-28 08:35:24 -06:00
2026-08-15 22:20:30 -07:00
2026-05-07 20:14:59 -07:00
2026-05-09 08:06:47 -07:00
2026-05-13 12:22:30 -04:00
2026-08-15 22:20:30 -07:00
2026-08-16 19:34:41 -07:00
2026-04-28 20:08:04 -07:00
2026-08-16 19:34:41 -07:00
2026-04-28 20:08:04 -07:00
2026-05-14 21:46:50 -07:00
2026-04-16 13:49:04 -07:00
2026-08-27 08:46:41 -07:00
2026-08-19 11:42:55 -07:00
2026-08-15 11:42:19 -07:00
2026-08-19 11:42:55 -07:00
2026-08-29 04:44:45 +00:00
2026-05-27 16:09:38 -07:00
2026-04-28 20:08:04 -07:00
2026-08-14 22:02:07 -07:00
2026-05-01 07:21:28 -07:00
2026-08-15 11:42:19 -07:00
2026-05-21 21:21:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 22:20:30 -07:00
2026-08-15 22:20:30 -07:00
2026-08-17 07:50:37 -07:00
2026-08-15 09:37:04 -07:00
2026-03-23 22:15:23 -07:00
2026-04-17 00:45:13 -07:00
2026-08-16 19:34:41 -07:00
2026-05-07 20:14:59 -07:00
2026-04-08 00:41:55 -07:00
2026-08-29 04:44:45 +00:00
2026-08-29 04:44:45 +00:00
2026-08-15 09:37:04 -07:00
2026-04-18 23:25:33 +08:00
2026-04-10 17:13:15 -10:00
2026-08-29 04:50:55 +00:00
2026-08-14 09:28:56 -07:00
2026-03-26 11:15:24 -06:00
2026-08-29 04:57:22 +00:00
2026-08-14 22:02:07 -07:00
2026-05-20 07:35:01 -07:00
2026-05-25 10:57:15 -07:00
2026-04-21 21:58:27 -07:00
2026-08-19 11:42:55 -07:00
2026-08-15 11:42:19 -07:00
2026-08-15 22:20:30 -07:00
2026-08-16 19:34:41 -07:00
2026-04-06 00:47:04 -07:00
2026-05-27 16:09:38 -07:00
2026-05-27 16:09:38 -07:00
2026-08-21 15:32:26 -07:00
2026-08-19 11:42:55 -07:00
2026-04-28 00:57:28 -07:00
2026-04-06 00:47:04 -07:00
2026-04-20 13:20:30 +08:00
2026-03-20 12:22:11 -07:00
2026-08-16 19:34:41 -07:00
2026-08-15 11:42:19 -07:00
2026-08-16 19:34:41 -07:00
2026-05-07 20:14:59 -07:00
2026-05-07 20:14:59 -07:00
2026-05-20 07:35:01 -07:00
2026-05-24 01:43:51 -07:00
2026-08-15 11:42:19 -07:00
2026-05-20 06:56:41 -07:00
2026-05-30 14:57:07 -07:00
2026-05-14 21:46:50 -07:00
2026-05-20 07:35:01 -07:00
2026-08-15 09:37:04 -07:00
2026-04-23 10:23:40 -07:00
2026-08-15 09:37:04 -07:00
2026-08-15 22:20:30 -07:00
2026-05-20 06:56:41 -07:00
2026-08-15 09:37:04 -07:00
2026-04-23 10:23:40 -07:00
2026-08-15 22:20:30 -07:00
2026-05-20 07:35:01 -07:00
2026-08-16 19:34:41 -07:00
2026-08-19 22:33:46 -07:00
2026-08-15 09:37:04 -07:00
2026-08-21 15:32:26 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 11:42:19 -07:00
2026-08-17 07:50:37 -07:00
2026-05-07 20:14:59 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 09:37:04 -07:00
2026-08-16 19:34:41 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 11:42:19 -07:00
2026-08-15 09:37:04 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-05-14 21:55:29 -07:00
2026-08-29 04:50:55 +00:00
2026-05-07 20:14:59 -07:00
2026-05-27 16:09:38 -07:00
2026-08-15 09:37:04 -07:00
2026-03-28 08:35:24 -06:00
2026-06-18 10:45:05 -07:00
2026-08-15 09:37:04 -07:00
2026-08-16 19:34:41 -07:00
2026-08-15 11:42:19 -07:00
2026-08-16 19:34:41 -07:00
2026-04-25 22:52:15 -07:00
2026-05-27 16:09:38 -07:00
2026-08-21 15:32:26 -07:00
2026-05-09 08:06:47 -07:00
2026-08-15 11:42:19 -07:00
2026-08-29 04:44:45 +00:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-16 19:34:41 -07:00
2026-08-15 09:37:04 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-15 09:37:04 -07:00
2026-03-13 00:31:41 -07:00
2026-08-21 15:32:26 -07:00
2026-06-09 21:02:30 -07:00
2026-08-21 15:32:26 -07:00
2026-08-14 22:02:07 -07:00
2026-03-26 11:15:24 -06:00
2026-08-15 11:42:19 -07:00
2026-04-04 10:17:05 -07:00
2026-08-19 11:42:55 -07:00
2026-08-16 19:34:41 -07:00
2026-08-15 22:20:30 -07:00