😏
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
# Visual Engineering
|
||||
|
||||
Use this profile for reference-driven frontend implementation and visual regression work with real image evidence.
|
||||
|
||||
```text
|
||||
Sol visual lead (active multimodal root)
|
||||
├── Terra visual analyst (native, image-capable, read-only)
|
||||
└── Sol visual verifier (MCP, image-capable, read-only)
|
||||
```
|
||||
|
||||
Reference analysis creates textual acceptance criteria before implementation starts. The root then renders the actual UI and supplies both reference and render to the verifier. MCP mechanically validates attachment containment, model/transport modality support, contracts, goal/turn lifecycle, and scope leasing. Stage ordering and production of a meaningful render are instruction- and evaluation-driven.
|
||||
|
||||
Cost and latency are high because visual analysis, implementation, rendering, and comparison have real dependencies. Missing images block visual assurance; transport success alone is not a pass.
|
||||
|
||||
The visual verifier is a persistent supervised app-server worker controlled by the root, with detach-safe trace, partial evidence, continuation, finalization, and cancellation. The Terra visual analyst remains a Codex-native image participant, so MMO does not claim app-server timing or control enforcement for it; its read-only boundary and output remain advisory and root-verified.
|
||||
@@ -0,0 +1 @@
|
||||
Analyze the supplied reference images only. Produce measurable layout, typography, color, spacing, content, responsive, and interaction criteria, each linked to a visible region and uncertainty. Do not edit code, infer invisible behavior as fact, or claim pixel measurements the image does not support.
|
||||
@@ -0,0 +1,3 @@
|
||||
Implement directly from the supplied visual reference; do not hand visual intent to a text-only implementer. Own the canonical workspace and critical path. Use the optional Terra analyst only when multi-screen complexity makes independent visual decomposition valuable, and continue repository/browser setup while it works. Generate real browser renders at required widths and send both original references and render artifacts to the fresh-context verifier.
|
||||
|
||||
Treat screenshot similarity, responsive behavior, browser behavior, and accessibility as separate gates. Read then explicitly accept or reject verifier results. One correction and reverification cycle is available. If the browser or image transport is unavailable, report the blocked visual gate rather than substituting DOM text or a fabricated preview.
|
||||
@@ -0,0 +1 @@
|
||||
Independently compare the original reference images with real Playwright screenshot artifacts at every required viewport. Verify artifact identities, then assess perceptual/pixel/edge differences, responsive layout, browser behavior, and accessibility separately. Link every mismatch to a reference and render artifact. If either side is absent or not a real image artifact, return blocked; never infer visual conformance from HTML, DOM text, or a preview manifest.
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"observations": {
|
||||
"items": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"region": {"minLength": 1, "type": "string"},
|
||||
"observation": {"minLength": 1, "type": "string"},
|
||||
"evidence": {"minLength": 1, "type": "string"},
|
||||
"confidence": {"enum": ["low", "medium", "high"], "type": "string"}
|
||||
},
|
||||
"required": ["region", "observation", "evidence", "confidence"],
|
||||
"type": "object"
|
||||
},
|
||||
"maxItems": 100,
|
||||
"type": "array"
|
||||
},
|
||||
"implementation_criteria": {"items": {"type": "string"}, "maxItems": 100, "type": "array"},
|
||||
"uncertainties": {"items": {"type": "string"}, "maxItems": 100, "type": "array"},
|
||||
"validation_needed": {"items": {"type": "string"}, "maxItems": 100, "type": "array"}
|
||||
},
|
||||
"required": ["observations", "implementation_criteria", "uncertainties", "validation_needed"],
|
||||
"title": "Visual reference analysis",
|
||||
"type": "object"
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"title": "Reference versus real-browser render review",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"verdict": {"type": "string", "enum": ["pass", "concerns", "fail", "blocked"]},
|
||||
"image_artifacts": {
|
||||
"type": "array",
|
||||
"maxItems": 20,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"kind": {"type": "string", "enum": ["reference", "render"]},
|
||||
"relative_path": {"type": "string", "minLength": 1},
|
||||
"sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
|
||||
"viewport_width": {"type": ["integer", "null"], "minimum": 1}
|
||||
},
|
||||
"required": ["kind", "relative_path", "sha256", "viewport_width"]
|
||||
}
|
||||
},
|
||||
"mismatches": {
|
||||
"type": "array",
|
||||
"maxItems": 50,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"gate": {"type": "string", "enum": ["perceptual", "pixel_edge", "responsive", "browser_behavior", "accessibility"]},
|
||||
"severity": {"type": "string", "enum": ["high", "medium", "low", "note"]},
|
||||
"region": {"type": "string", "minLength": 1},
|
||||
"evidence": {"type": "string", "minLength": 1}
|
||||
},
|
||||
"required": ["gate", "severity", "region", "evidence"]
|
||||
}
|
||||
},
|
||||
"blockers": {"type": "array", "items": {"type": "string"}, "maxItems": 20}
|
||||
},
|
||||
"required": ["verdict", "image_artifacts", "mismatches", "blockers"],
|
||||
"allOf": [
|
||||
{
|
||||
"if": {"properties": {"verdict": {"const": "pass"}}, "required": ["verdict"]},
|
||||
"then": {"properties": {"image_artifacts": {"minItems": 2}, "mismatches": {"maxItems": 0}, "blockers": {"maxItems": 0}}}
|
||||
},
|
||||
{
|
||||
"if": {"properties": {"verdict": {"const": "blocked"}}, "required": ["verdict"]},
|
||||
"then": {"properties": {"blockers": {"minItems": 1}}}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
schema_version = 8
|
||||
id = "visual-engineering"
|
||||
version = "8.0.0"
|
||||
display_name = "Visual Engineering"
|
||||
description = "A multimodal Sol root implements directly from references, optionally uses a fast native analyst, and verifies real browser renders in a fresh isolated context."
|
||||
tags = ["multimodal", "browser", "accessibility", "featured"]
|
||||
maturity = "featured"
|
||||
root = "visual_lead"
|
||||
smoke = "smoke.toml"
|
||||
|
||||
[agents.visual_lead]
|
||||
kind = "root"
|
||||
description = "Direct reference-to-code implementer, sole writer, and final visual authority"
|
||||
model = "codex_chatgpt_builtin__gpt_5_6_sol"
|
||||
reasoning = "high"
|
||||
allowed_reasoning_efforts = ["medium", "high", "xhigh", "max"]
|
||||
execution_mode = "goal"
|
||||
goal_token_budget = 400000
|
||||
max_goal_token_budget = 700000
|
||||
stall_warning_seconds = 3600
|
||||
finalization_grace_seconds = 1800
|
||||
plan_reasoning = "high"
|
||||
permissions = "workspace-write"
|
||||
can_spawn = ["visual_analyst", "visual_verifier"]
|
||||
max_active = 1
|
||||
trust = "high"
|
||||
verification = "always"
|
||||
attachments_allowed = true
|
||||
requires_modalities = ["text", "image"]
|
||||
requires_tool_images = true
|
||||
instructions = "agents/visual-lead.md"
|
||||
|
||||
[agents.visual_analyst]
|
||||
description = "Optional native analyst for complex multi-screen references"
|
||||
model = "codex_chatgpt_builtin__gpt_5_6_terra"
|
||||
reasoning = "high"
|
||||
allowed_reasoning_efforts = ["medium", "high", "xhigh", "max"]
|
||||
permissions = "read-only"
|
||||
backends = ["native"]
|
||||
can_spawn = []
|
||||
max_active = 1
|
||||
allowed_task_kinds = ["visual_analysis", "ui_analysis"]
|
||||
trust = "high"
|
||||
verification = "material_changes"
|
||||
attachments_allowed = true
|
||||
requires_modalities = ["text", "image"]
|
||||
contract_enforcement = "warn"
|
||||
output_contract = "contracts/vision.json"
|
||||
instructions = "agents/visual-analyst.md"
|
||||
|
||||
[agents.visual_verifier]
|
||||
description = "Fresh-context verifier comparing the original reference with real Playwright screenshots"
|
||||
model = "codex_chatgpt_builtin__gpt_5_6_sol"
|
||||
reasoning = "high"
|
||||
allowed_reasoning_efforts = ["medium", "high", "xhigh", "max"]
|
||||
execution_mode = "goal"
|
||||
goal_token_budget = 200000
|
||||
max_goal_token_budget = 300000
|
||||
stall_warning_seconds = 1800
|
||||
finalization_grace_seconds = 900
|
||||
permissions = "read-only"
|
||||
backends = ["mcp"]
|
||||
can_spawn = []
|
||||
max_active = 1
|
||||
allowed_task_kinds = ["visual_verification", "accessibility_review"]
|
||||
trust = "adversarial_reviewer"
|
||||
verification = "root_adjudication"
|
||||
attachments_allowed = true
|
||||
requires_modalities = ["text", "image"]
|
||||
requires_tool_images = true
|
||||
contract_enforcement = "strict"
|
||||
output_contract = "contracts/visual-review.json"
|
||||
instructions = "agents/visual-verifier.md"
|
||||
|
||||
[agents.visual_lead.controls.visual_analyst]
|
||||
actions = ["inspect", "trace", "steer", "interrupt", "pause", "continue", "detach", "stop", "finalize", "compact", "respond", "set_effort", "fork"]
|
||||
|
||||
[agents.visual_lead.controls.visual_verifier]
|
||||
actions = ["inspect", "trace", "steer", "interrupt", "pause", "continue", "detach", "stop", "finalize", "compact", "respond", "set_effort", "fork"]
|
||||
|
||||
[coordination]
|
||||
mode = "reference_render_verify"
|
||||
orchestration = "hybrid"
|
||||
max_active_agents = 3
|
||||
max_depth = 1
|
||||
max_children_per_agent = 2
|
||||
max_active_writers = 0
|
||||
native_max_concurrent_threads = 1
|
||||
native_nested_delegation = false
|
||||
reject_ancestor_role = true
|
||||
wait_policy = "dependency_only"
|
||||
write_conflict_policy = "reject"
|
||||
contradiction_policy = "primary_evidence"
|
||||
result_visibility = "ancestors"
|
||||
@@ -0,0 +1,24 @@
|
||||
schema_version = 8
|
||||
|
||||
[[tasks]]
|
||||
agent = "visual_lead"
|
||||
task_kind = "analysis"
|
||||
task = "Inspect the visual evaluation fixture read-only and identify the real-render, multimodal transport, responsive, and accessibility gates."
|
||||
mode = "read-only"
|
||||
wall_timeout_seconds = 600
|
||||
|
||||
[[tasks]]
|
||||
agent = "visual_analyst"
|
||||
task_kind = "visual_analysis"
|
||||
task = "Use the supplied repository context to describe what evidence a real reference analysis must preserve. Do not edit files."
|
||||
backend = "native"
|
||||
mode = "read-only"
|
||||
wall_timeout_seconds = 600
|
||||
|
||||
[[tasks]]
|
||||
agent = "visual_verifier"
|
||||
task_kind = "visual_verification"
|
||||
task = "No reference or browser screenshot artifacts are supplied. Return only the required visual-review JSON with verdict blocked and the exact missing artifact gates; do not infer conformance from source text."
|
||||
backend = "mcp"
|
||||
mode = "read-only"
|
||||
wall_timeout_seconds = 900
|
||||
Reference in New Issue
Block a user