Тезисы — из 42_Harness_Deck и Simbiot Whitepaper; стиль кость/карбон + лайм Shkor Labs. PNG-слайды и анимированная версия — snapshot/render того же index.html. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
443 lines
14 KiB
JSON
443 lines
14 KiB
JSON
{
|
|
"ok": false,
|
|
"strict": false,
|
|
"browserSkipped": false,
|
|
"lint": {
|
|
"ok": true,
|
|
"errorCount": 0,
|
|
"warningCount": 11,
|
|
"infoCount": 0,
|
|
"findings": [
|
|
{
|
|
"code": "duplicate_media_discovery_risk",
|
|
"severity": "warning",
|
|
"message": "Detected 7 matching img entries with the same source/start/duration.",
|
|
"selector": "[data-composition-id]",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Avoid duplicated media nodes that can be discovered twice during compilation."
|
|
},
|
|
{
|
|
"code": "timeline_track_too_dense",
|
|
"severity": "warning",
|
|
"message": "Track 1 has 8 timed elements in this HTML file. Smaller sub-compositions keep timelines easier to read, iterate on, and diff.",
|
|
"selector": "[data-composition-id]",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move coherent scene groups into separate .html files under compositions/ and mount them from the parent with data-composition-src so the timeline stays easier to inspect, revise, and validate."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<div id=\"bg\"> is a timeline element that contains nested <div id=\"bg-grid\">. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#bg",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <div id=\"bg\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s1\"> is a timeline element that contains nested <div id=\"s1-photo\">. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s1",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s1\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s2\"> is a timeline element that contains nested <div>. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s2",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s2\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s3\"> is a timeline element that contains nested <div>. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s3",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s3\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s4\"> is a timeline element that contains nested <div id=\"s4-photo\">. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s4",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s4\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s5\"> is a timeline element that contains nested <div>. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s5",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s5\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s6\"> is a timeline element that contains nested <div id=\"s6-photo\">. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s6",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s6\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s7\"> is a timeline element that contains nested <div>. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s7",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s7\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
},
|
|
{
|
|
"code": "nested_structure_needs_subcomposition",
|
|
"severity": "warning",
|
|
"message": "<section id=\"s8\"> is a timeline element that contains nested <div id=\"s8-photo\">. The timeline shows one row per top-level element, and the root composition is built only from sub-compositions.",
|
|
"selector": "#s8",
|
|
"dataAttributes": {},
|
|
"sourceFile": "/root/simbiot-harness/video/carousel-ai-future/index.html",
|
|
"bbox": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"width": 0,
|
|
"height": 0
|
|
},
|
|
"time": 0,
|
|
"fixHint": "Move <section id=\"s8\"> and its contents into a sub-composition file and mount it with data-composition-src."
|
|
}
|
|
],
|
|
"filesScanned": 1
|
|
},
|
|
"runtime": {
|
|
"ok": true,
|
|
"errorCount": 0,
|
|
"warningCount": 0,
|
|
"infoCount": 0,
|
|
"findings": []
|
|
},
|
|
"layout": {
|
|
"ok": false,
|
|
"errorCount": 1,
|
|
"warningCount": 0,
|
|
"infoCount": 2,
|
|
"findings": [
|
|
{
|
|
"code": "content_overlap",
|
|
"severity": "error",
|
|
"time": 8.916,
|
|
"selector": "#s3-ring > div:nth-of-type(6)",
|
|
"message": "Two text blocks overlap and may render unreadable.",
|
|
"rect": {
|
|
"left": 494.81,
|
|
"top": 1115.5,
|
|
"right": 585.17,
|
|
"bottom": 1144.5,
|
|
"width": 90.36,
|
|
"height": 29
|
|
},
|
|
"containerSelector": "#s3-sub",
|
|
"text": "memory",
|
|
"fixHint": "Give each block its own zone, or put data-layout-allow-overlap on the text or on a container inside the scene. A marker on the scene root does not apply.",
|
|
"dataAttributes": {},
|
|
"sourceFile": "index.html",
|
|
"bbox": {
|
|
"x": 494.81,
|
|
"y": 1115.5,
|
|
"width": 90.36,
|
|
"height": 29
|
|
},
|
|
"firstSeen": 8.916,
|
|
"lastSeen": 10.48,
|
|
"occurrences": 11,
|
|
"heldMs": 1564,
|
|
"times": [
|
|
8.916,
|
|
9.073,
|
|
9.229,
|
|
9.385,
|
|
9.542,
|
|
9.698,
|
|
9.855,
|
|
10.011,
|
|
10.168,
|
|
10.324,
|
|
10.48
|
|
]
|
|
},
|
|
{
|
|
"code": "container_overflow",
|
|
"severity": "info",
|
|
"time": 1.556,
|
|
"selector": "#s1-photo",
|
|
"message": "Element extends outside a clipping layout container.",
|
|
"rect": {
|
|
"left": -10.75,
|
|
"top": -13.43,
|
|
"right": 1090.75,
|
|
"bottom": 1363.43,
|
|
"width": 1101.49,
|
|
"height": 1376.86
|
|
},
|
|
"containerSelector": "#s1",
|
|
"fixHint": "Resize/reposition the child or container, or mark intentional overflow with data-layout-allow-overflow.",
|
|
"containerRect": {
|
|
"left": 0,
|
|
"top": 0,
|
|
"right": 1080,
|
|
"bottom": 1350,
|
|
"width": 1080,
|
|
"height": 1350
|
|
},
|
|
"overflow": {
|
|
"left": 10.75,
|
|
"right": 10.75,
|
|
"top": 13.43,
|
|
"bottom": 13.43
|
|
},
|
|
"dataAttributes": {},
|
|
"sourceFile": "index.html",
|
|
"bbox": {
|
|
"x": -10.75,
|
|
"y": -13.43,
|
|
"width": 1101.49,
|
|
"height": 1376.86
|
|
},
|
|
"firstSeen": 1.556,
|
|
"lastSeen": 1.556,
|
|
"occurrences": 1,
|
|
"heldMs": 0,
|
|
"times": [
|
|
1.556
|
|
]
|
|
},
|
|
{
|
|
"code": "container_overflow",
|
|
"severity": "info",
|
|
"time": 10.889,
|
|
"selector": "#s4-photo",
|
|
"message": "Element extends outside a clipping layout container.",
|
|
"rect": {
|
|
"left": -38.34,
|
|
"top": -22.72,
|
|
"right": 1118.34,
|
|
"bottom": 662.72,
|
|
"width": 1156.68,
|
|
"height": 685.44
|
|
},
|
|
"containerSelector": "#s4",
|
|
"fixHint": "Resize/reposition the child or container, or mark intentional overflow with data-layout-allow-overflow.",
|
|
"containerRect": {
|
|
"left": 0,
|
|
"top": 0,
|
|
"right": 1080,
|
|
"bottom": 1350,
|
|
"width": 1080,
|
|
"height": 1350
|
|
},
|
|
"overflow": {
|
|
"left": 38.34,
|
|
"right": 38.34,
|
|
"top": 22.72
|
|
},
|
|
"dataAttributes": {},
|
|
"sourceFile": "index.html",
|
|
"bbox": {
|
|
"x": -38.34,
|
|
"y": -22.72,
|
|
"width": 1156.68,
|
|
"height": 685.44
|
|
},
|
|
"firstSeen": 10.889,
|
|
"lastSeen": 10.889,
|
|
"occurrences": 1,
|
|
"heldMs": 0,
|
|
"times": [
|
|
10.889
|
|
]
|
|
}
|
|
],
|
|
"duration": 28,
|
|
"samples": [
|
|
1.556,
|
|
4.667,
|
|
7.778,
|
|
10.889,
|
|
14,
|
|
17.111,
|
|
20.222,
|
|
23.333,
|
|
26.444
|
|
],
|
|
"transitionSamples": [],
|
|
"transitionSamplesDropped": 0,
|
|
"tolerance": 2,
|
|
"totalIssueCount": 3,
|
|
"truncated": false
|
|
},
|
|
"motion": {
|
|
"ok": true,
|
|
"errorCount": 0,
|
|
"warningCount": 0,
|
|
"infoCount": 0,
|
|
"findings": [],
|
|
"enabled": false,
|
|
"samples": 0
|
|
},
|
|
"contrast": {
|
|
"ok": true,
|
|
"errorCount": 0,
|
|
"warningCount": 2,
|
|
"infoCount": 0,
|
|
"findings": [
|
|
{
|
|
"code": "contrast_aa_failure",
|
|
"severity": "warning",
|
|
"message": "Contrast is 1.89:1; WCAG AA requires 4.5:1.",
|
|
"text": "06 / 08",
|
|
"fg": "rgb(168,162,151)",
|
|
"bg": "rgb(222,222,222)",
|
|
"ratio": 1.89,
|
|
"requiredRatio": 4.5,
|
|
"suggestedColor": "rgb(102,98,92)",
|
|
"large": false,
|
|
"selector": "div > section:nth-of-type(6) > div:nth-of-type(3) > div",
|
|
"dataAttributes": {},
|
|
"sourceFile": "index.html",
|
|
"bbox": {
|
|
"x": 895.859375,
|
|
"y": 69.5,
|
|
"width": 120.140625,
|
|
"height": 29
|
|
},
|
|
"time": 20.222,
|
|
"times": [
|
|
20.222
|
|
]
|
|
},
|
|
{
|
|
"code": "contrast_aa_failure",
|
|
"severity": "warning",
|
|
"message": "Contrast is 1.17:1; WCAG AA requires 3:1.",
|
|
"text": "06",
|
|
"fg": "rgb(236,230,218)",
|
|
"bg": "rgb(214,214,214)",
|
|
"ratio": 1.17,
|
|
"requiredRatio": 3,
|
|
"suggestedColor": "rgb(123,120,114)",
|
|
"large": true,
|
|
"selector": "div > section:nth-of-type(6) > div:nth-of-type(3) > div > b",
|
|
"dataAttributes": {},
|
|
"sourceFile": "index.html",
|
|
"bbox": {
|
|
"x": 895.859375,
|
|
"y": 69.5,
|
|
"width": 34.328125,
|
|
"height": 29
|
|
},
|
|
"time": 20.222,
|
|
"times": [
|
|
20.222
|
|
]
|
|
}
|
|
],
|
|
"enabled": true,
|
|
"samples": [
|
|
1.556,
|
|
7.778,
|
|
14,
|
|
20.222,
|
|
26.444
|
|
],
|
|
"checked": 33,
|
|
"passed": 31
|
|
},
|
|
"hdr": {
|
|
"autoPromotion": null,
|
|
"inspection": "available"
|
|
},
|
|
"snapshots": {
|
|
"enabled": false,
|
|
"files": [],
|
|
"times": [],
|
|
"findingFiles": []
|
|
}
|
|
}
|