Repository navigation
v1.18.3 — Brief compliance runtime check (#7 + #8)
Fourth v1.18.x patch — compliance enforcement
Bundles two Known Issues items (#7 packet avoid + #8 locked_dimensions) that shared the same "check tool args against brief constraints" machinery.
🎯 Fix
#7 + #8 — Runtime brief compliance check
Both were advisory-only pre-v1.18.3. This release ships a stateless pure check function in a new mcp_server/creative_director module, exposed as the MCP tool check_brief_compliance(brief, tool_name, tool_args).
Usage: director's Phase 6 calls the tool before each risky execution (EQ parameters, filter settings, new scene creation, clip note editing, send routing). The tool returns {"ok": bool, "violations": [...]}. Violations are reports, not automatic blocks — the director surfaces them to the user with three paths: adjust, override-for-this-turn, or pick a different tool.
Detection — best-effort keyword heuristic:
- anti_pattern matching via keyword tokens + parameter-name heuristics (e.g., "bright top-end" + Hi Gain positive → fires)
- locked_dimension matching via tool → dimension map (e.g., structural lock + create_scene → fires)
Empty brief passes every call (fresh session safety).
Infrastructure
- NEW module
mcp_server/creative_director/(compliance.py + tools.py) - Tool count 427 → 428 (+1:
check_brief_compliance) - Domain count 52 → 53 (+1:
creative_director) - Director SKILL.md Phase 6 documents the check + three-path response protocol
- Full session-state active-brief storage is v1.19 scope
📋 Still open for v1.19
3 items remain:
- Experiment state continuity between branches
- Hybrid-packet compilation algorithm (multi-packet union/intersection)
- Full architectural fix for #3 (director Phase 6 semantic_move routing)
See CHANGELOG.md for full detail.