Teknium
0e63ed1feb
feat(tools): stat-based special-file guard for read_file + readtool eval harness
...
read_file on a workspace FIFO/socket blocked until the exec timeout —
the existing device guard is name-based (/dev/*, /proc/*) and cannot
see an arbitrary special file. Add _special_file_kind(): one os.stat
on the resolved path, refusing FIFO/socket/char/block devices with a
plain note ('no read was attempted') instead of hanging. Host-visible
filesystems only; regular files, dirs, and missing paths unchanged.
Also adds evals/readtool/: an A/B harness that runs the real AIAgent
against hostile-file fixtures (huge lockfile, one-line bundle, FIFO,
NFD filenames, lying extensions) and measures accuracy, turns, tool
calls, and tokens. Measured for this guard (3 reps, file-only arm):
qwen3.8-max fifo task tokens 122k -> 26k (-79%), turns 9.3 -> 5.0;
opus-4.8 tokens 40k -> 23k; accuracy held 1.00 both arms.
2026-08-09 23:30:02 -07:00
..
2026-08-02 20:21:59 -07:00
2026-08-09 14:35:02 -07:00
2026-07-28 07:58:16 -07:00
2026-07-17 04:53:38 -07:00
2026-08-08 14:56:38 +05:30
2026-08-02 15:11:37 -07:00
2026-07-28 11:52:44 -07:00
2026-08-07 17:45:06 +05:30
2026-08-02 00:11:50 -07:00
2026-07-27 14:32:05 -07:00
2026-07-29 10:54:04 -07:00
2026-08-02 11:18:41 +05:30
2026-06-21 17:46:38 +05:30
2026-07-29 10:14:11 -07:00
2026-07-26 17:46:55 -07:00
2026-07-29 10:14:00 -07:00
2026-08-06 19:35:47 -06:00
2026-08-09 14:35:02 -07:00
2026-07-29 12:19:37 -07:00
2026-08-08 05:44:18 -07:00
2026-08-08 13:48:00 +05:30
2026-07-02 04:20:43 -07:00
2026-06-25 13:52:06 -07:00
2026-08-09 14:35:02 -07:00
2026-07-20 06:50:31 -07:00
2026-08-07 09:07:42 -07:00
2026-07-22 12:13:01 -05:00
2026-08-02 00:11:50 -07:00
2026-08-02 00:36:03 -07:00
2026-08-01 21:17:51 -04:00
2026-08-08 12:34:06 -07:00
2026-08-09 23:30:02 -07:00
2026-07-31 10:17:55 -04:00
2026-08-06 19:35:47 -06:00
2026-08-02 15:51:43 -07:00
2026-08-02 00:11:50 -07:00
2026-07-29 09:33:48 -07:00
2026-08-08 19:59:12 -04:00
2026-08-08 04:19:38 -07:00
2026-07-06 04:58:42 -07:00
2026-08-06 03:16:26 +05:30
2026-08-08 14:06:48 -07:00
2026-08-08 12:32:23 -07:00
2026-07-17 04:50:47 -07:00
2026-07-28 00:53:16 -05:00
2026-07-29 10:02:03 -07:00
2026-08-03 14:24:37 +05:30
2026-07-18 04:15:13 -07:00
2026-08-08 23:56:46 -07:00
2026-08-08 12:32:23 -07:00
2026-07-29 10:13:50 -07:00
2026-07-28 14:07:21 -07:00
2026-08-06 19:35:47 -06:00
2026-08-02 10:02:33 -07:00
2026-08-01 10:47:20 -07:00
2026-08-04 14:34:24 +05:30
2026-07-29 10:14:00 -07:00
2026-08-09 21:43:32 +05:30
2026-06-25 16:40:27 -05:00
2026-08-06 19:35:47 -06:00
2026-08-08 05:51:33 -07:00
2026-08-06 19:35:47 -06:00
2026-08-06 19:35:47 -06:00
2026-08-08 22:17:38 -05:00
2026-08-08 14:56:38 +05:30
2026-08-07 08:58:25 -07:00
2026-08-08 14:56:38 +05:30
2026-08-02 10:01:16 -07:00
2026-08-03 17:50:58 +05:30
2026-08-08 11:12:27 -07:00
2026-08-08 11:12:27 -07:00
2026-07-31 07:30:30 -07:00
2026-08-03 09:56:36 +05:30
2026-08-09 23:14:18 -07:00
2026-07-30 22:31:42 -07:00
2026-07-28 04:24:50 -05:00
2026-08-08 12:32:23 -07:00
2026-08-02 15:08:35 -07:00
2026-08-09 14:35:02 -07:00
2026-07-01 01:05:28 -07:00
2026-08-02 10:04:48 -07:00
2026-07-22 06:56:53 -07:00
2026-08-02 10:04:48 -07:00
2026-06-30 16:39:41 -07:00
2026-08-03 19:11:30 +05:30
2026-08-07 19:26:12 +05:30
2026-07-28 22:31:40 -07:00
2026-07-28 11:55:01 -07:00
2026-08-08 22:54:20 +05:30
2026-07-28 14:17:45 -07:00
2026-08-08 19:59:12 -04:00
2026-08-08 03:59:39 -07:00
2026-08-07 14:38:02 +05:30
2026-08-08 13:49:24 +05:30
2026-07-29 11:53:39 -07:00
2026-07-04 15:08:49 -07:00
2026-08-08 12:34:46 -07:00
2026-06-10 02:57:15 -07:00
2026-07-23 21:06:47 -07:00
2026-08-08 12:32:23 -07:00
2026-06-29 21:11:58 -07:00