Executor-Tyrant-Framework Claude Sonnet 4.6 commited on
Commit
128f4e8
Β·
1 Parent(s): 5409740

fix(schema): add read_only_paths to constraints schema (#168)

Browse files

spec_executor.py already consumed read_only_paths from constraints but
work_block_schema.py had additionalProperties:False with the field absent.
Any spec using read_only_paths failed validation before execution reached
the field. One property added; no executor changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. work_block_schema.py +11 -0
work_block_schema.py CHANGED
@@ -1,4 +1,10 @@
1
  # ---- Changelog ----
 
 
 
 
 
 
2
  # [2026-04-06] Josh + Claude β€” Add edit_file tool + shell_allowlist constraint
3
  # What: (1) edit_file in _TOOL_NAMES (2) shell_allowlist in constraints schema
4
  # Why: Gap 2 β€” specs need to extend shell allowlist; Gap 3 β€” edit_file is a new tool
@@ -289,6 +295,11 @@ WORK_BLOCK_SCHEMA = {
289
  },
290
  "max_iterations": {"type": "integer", "minimum": 1, "maximum": 100, "default": 15},
291
  "timeout_seconds": {"type": "integer", "minimum": 30, "maximum": 3600, "default": 300},
 
 
 
 
 
292
  },
293
  },
294
  "steps": {
 
1
  # ---- Changelog ----
2
+ # [2026-05-03] Claude (Sonnet 4.6) β€” Add read_only_paths to constraints schema (#168)
3
+ # What: Added read_only_paths as a valid constraints property
4
+ # Why: spec_executor.py already reads this field (lines 96-100) but work_block_schema.py
5
+ # constraints had additionalProperties:False with no read_only_paths entry β€” any spec
6
+ # using it failed schema validation before execution could reach the field.
7
+ # How: One new property added to constraints; no executor changes (already handled).
8
  # [2026-04-06] Josh + Claude β€” Add edit_file tool + shell_allowlist constraint
9
  # What: (1) edit_file in _TOOL_NAMES (2) shell_allowlist in constraints schema
10
  # Why: Gap 2 β€” specs need to extend shell allowlist; Gap 3 β€” edit_file is a new tool
 
295
  },
296
  "max_iterations": {"type": "integer", "minimum": 1, "maximum": 100, "default": 15},
297
  "timeout_seconds": {"type": "integer", "minimum": 30, "maximum": 3600, "default": 300},
298
+ "read_only_paths": {
299
+ "type": "array",
300
+ "items": {"type": "string"},
301
+ "description": "Absolute paths outside workspace that read_file may access (read-only). Typical use: sibling repos QB needs to inspect without writing.",
302
+ },
303
  },
304
  },
305
  "steps": {