Files
effectcraft/crates
DWAA1660andClaude Opus 5.5 8408af323a Automation: confine every command that reads or writes a file it is given (#1243)
essential.templateInfo was missing from confine.rs's READS, so its
`path` got no named check, and the fallback only scans absolute-looking
strings: a relative path (or one through `..`) escaped the read roots
and the command parsed and returned a template outside them.

An audit of every registered engine command with a parameter named
like a file found the same gap in more commands, now classified:
- READS: essential.templateInfo, file.importProject,
  file.watchFolder.poll, footage.relink, layer.newModel,
  mediaBrowser.fileInfo / list / import / removeFavorite,
  face.model.install, roto.model.install, templates.create (`path`).
- WRITES: file.exportTimeline, file.createProxy (`path` / `output`,
  which may be a file-name template, as for render.preRender).
- MIXED_WRITES: templates.create writes `projectPath` and `footageDir`.

Tests (confine.rs):
- every_command_with_file_parameters_is_classified fails when a
  command takes a path, paths, folder, file, output... parameter and is
  neither confined, refused, checked by a lookup, a Render Queue output
  (checked when the queue renders) nor listed in NOT_FILES (property
  paths and the like). New file commands can't slip through.
- relative_and_outside_paths_of_newly_listed_commands_are_refused:
  relative, `..` and outside paths are refused and in-root ones allowed,
  directly and in a batch; writes go only to write roots; createProxy
  accepts a name template. It fails on main (templateInfo with
  `t.ectemplate` passes).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:21:14 -06:00
..
2026-10-13 05:23:52 -04:00
2026-10-13 04:47:52 -04:00
2026-10-13 05:23:52 -04:00