feat: 增强 beautiful 模板生产审查门禁

补齐 blue-professional 10/10 page-family smoke 覆盖,新增 production review receipt 校验,确保 production/default 必须绑定 renderer、golden、fidelity、smoke、visual contract 和审查凭证。

新增 34 套 beautiful family 的 production review gallery 作为审查入口,但不作为晋级凭证;其余 33 套继续保持 needs_review,默认链路不被污染。

同步 quality gate 测试夹具到 10 variant contract,并补充 stale receipt、缺失 variant、gallery 非 promotion 的 TDD 用例。
This commit is contained in:
songtianyi.theo
2026-06-24 22:07:00 +08:00
parent 08687d1fa2
commit b6dd77264d
47 changed files with 9350 additions and 22 deletions

View File

@@ -10,6 +10,7 @@
"visual_contract",
"selector_gate",
"quality_gate",
"production_review_receipt",
"visual_contract_path"
]
},
@@ -3349,6 +3350,18 @@
},
"page_family_smoke_deck": "skills/lark-slides/references/page-family-smoke-decks/blue-professional.json",
"page_family_smoke_receipt": "skills/lark-slides/references/receipts/page-family-smoke/blue-professional.executive-dashboard.json",
"page_family_smoke": {
"status": "passed",
"rendered_pages": 10,
"implemented_page_variant_count": 10,
"covered_implemented_page_variant_count": 10,
"missing_implemented_page_variants": [],
"unimplemented_page_variants": [],
"smoke_deck": "skills/lark-slides/references/page-family-smoke-decks/blue-professional.json",
"smoke_receipt": "skills/lark-slides/references/receipts/page-family-smoke/blue-professional.executive-dashboard.json",
"claim_boundary": "blue-professional page-family smoke evidence only; does not promote other families"
},
"production_review_receipt": "skills/lark-slides/references/receipts/production-review/blue-professional.executive-dashboard.json",
"page_family_promotion_gate": {
"status": "passed",
"required_evidence": [

View File

@@ -19,10 +19,11 @@
{"page": 2, "page_role": "agenda", "page_variant_id": "agenda", "title": "Discussion Map"},
{"page": 3, "page_role": "content", "page_variant_id": "dashboard", "title": "Operating Context"},
{"page": 4, "page_role": "data", "page_variant_id": "metrics", "title": "Metric Dashboard"},
{"page": 5, "page_role": "comparison", "page_variant_id": "split", "title": "Option Comparison"},
{"page": 6, "page_role": "quote", "page_variant_id": "quote", "title": "Leadership Signal"},
{"page": 7, "page_role": "process", "page_variant_id": "timeline", "title": "Execution Timeline"},
{"page": 8, "page_role": "detail", "page_variant_id": "detail", "title": "Deep Dive"},
{"page": 9, "page_role": "closing", "page_variant_id": "closing", "title": "Decision Close"}
{"page": 5, "page_role": "data", "page_variant_id": "bars", "title": "Performance Bars"},
{"page": 6, "page_role": "comparison", "page_variant_id": "split", "title": "Option Comparison"},
{"page": 7, "page_role": "quote", "page_variant_id": "quote", "title": "Leadership Signal"},
{"page": 8, "page_role": "process", "page_variant_id": "timeline", "title": "Execution Timeline"},
{"page": 9, "page_role": "detail", "page_variant_id": "detail", "title": "Deep Dive"},
{"page": 10, "page_role": "closing", "page_variant_id": "closing", "title": "Decision Close"}
]
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "8-bit-orbit",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/8-bit-orbit.pixel-orbit-console.json",
"receipt_sha256": "31bab9cafb1fabb4453980f01a8255d16c9a79e1f882d01585b319dee779d556",
"score": 0.8995,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "cover",
"page_variant_id": "slide-1",
"source_class": "data-slide-1",
"source_slide_index": 1
},
{
"page_role": "closing",
"page_variant_id": "slide-10",
"source_class": "data-slide-10",
"source_slide_index": 10
},
{
"page_role": "agenda",
"page_variant_id": "slide-2",
"source_class": "data-slide-2",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-3",
"source_class": "data-slide-3",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-4",
"source_class": "data-slide-4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-5",
"source_class": "data-slide-5",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "slide-6",
"source_class": "data-slide-6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-7",
"source_class": "data-slide-7",
"source_slide_index": 7
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "slide-8",
"source_class": "data-slide-8",
"source_slide_index": 8
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-9",
"source_class": "data-slide-9",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/8-bit-orbit-1.png",
"reference_screenshot_sha256": "c1f0517225fbe17807d69de03a7260881738d25bc456bd4151af67fabbb15281",
"review_artifact_path": "families/8-bit-orbit.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "pixel-orbit-console",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "pixel-orbit-console",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/8-bit-orbit.pixel-orbit-console.json",
"visual_contract_sha256": "9eb1df9b6321fb3273d47a66bc17c5ac69ac61ff7e9ccdc1c975198cb4a2c47b"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "biennale-yellow",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/biennale-yellow.biennale-programme-poster.json",
"receipt_sha256": "27b20213513d6a895ae84c07aea6d784f5acd5a5fcd4b5a6baf0d1868f4a7dfe",
"score": 0.7675,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "cal",
"source_class": "s-cal",
"source_slide_index": 7
},
{
"page_role": "closing",
"page_variant_id": "chapter",
"source_class": "s-chapter",
"source_slide_index": 4
},
{
"page_role": "closing",
"page_variant_id": "colophon",
"source_class": "s-colophon",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data",
"source_class": "s-data",
"source_slide_index": 5
},
{
"page_role": "agenda",
"page_variant_id": "manifesto",
"source_class": "s-manifesto",
"source_slide_index": 2
},
{
"page_role": "content",
"page_variant_id": "programme",
"source_class": "s-programme",
"source_slide_index": 3
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 6
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/biennale-yellow-1.png",
"reference_screenshot_sha256": "8acd74e991ff533d6982f60fc2934ad2020d5ea8e03c5d79d00c24899d6f9e8d",
"review_artifact_path": "families/biennale-yellow.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "biennale-programme-poster",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "biennale-programme-poster",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/biennale-yellow.biennale-programme-poster.json",
"visual_contract_sha256": "8f04a650927de6641fd356ec3d2107b1421cf9f6579e7af8f7e447b36f99c82b"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "block-frame",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/block-frame.block-frame-grid.json",
"receipt_sha256": "e35a3eb5441b55568413e926f2275e9593c0b01d95a4345337995c995ffffd95",
"score": 0.9716,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "slide-2",
"source_slide_index": 2
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "slide-10",
"source_slide_index": 10
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide-1",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard",
"source_class": "slide-3",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-4",
"source_class": "slide-4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-8",
"source_class": "slide-8",
"source_slide_index": 8
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline",
"source_class": "slide-6",
"source_slide_index": 6
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline-7",
"source_class": "slide-7",
"source_slide_index": 7
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline-9",
"source_class": "slide-9",
"source_slide_index": 9
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote_or_emphasis",
"source_class": "slide-5",
"source_slide_index": 5
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/block-frame-1.png",
"reference_screenshot_sha256": "3fd1774d38f1bfbda05df46fc7f2b98a1780de45ced4d71f4925136bbf2460a0",
"review_artifact_path": "families/block-frame.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "block-frame-grid",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "block-frame-grid",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/block-frame.block-frame-grid.json",
"visual_contract_sha256": "b2bede4e48e6b4bd302aaa554c7ca106fff4f1d06bd453ae336ef7aa7096a256"
}

View File

@@ -0,0 +1,222 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": true,
"family_id": "blue-professional",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/blue-professional.executive-dashboard.json",
"receipt_sha256": "f6a4a0a015c09f14cb9e987f69734cbb05a06e79bba9c9b1ba2ca16ed6bc597a",
"score": 0.9855,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 10,
"implemented_page_variants": [
"cover",
"agenda",
"metrics",
"dashboard",
"split",
"bars",
"quote",
"timeline",
"detail",
"closing"
],
"known_blockers": [],
"page_family_promotion_gate": {
"claim_boundary": "page-family role/variant smoke evidence plus blue-professional dedicated renderer sample; does not promote other families",
"required_evidence": [
"page_variants",
"renderer_dispatch",
"golden_specs",
"smoke_deck_receipt",
"quality_gate"
],
"status": "passed"
},
"page_family_promotion_gate_status": "passed",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "layout-agenda",
"source_slide_index": 2
},
{
"page_role": "data_chart",
"page_variant_id": "bars",
"source_class": "layout-bars",
"source_slide_index": 6
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "layout-closing",
"source_slide_index": 10
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "layout-cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "dashboard",
"source_class": "layout-dashboard",
"source_slide_index": 4
},
{
"page_role": "detail",
"page_variant_id": "detail",
"source_class": "layout-detail",
"source_slide_index": 9
},
{
"page_role": "data_metrics",
"page_variant_id": "metrics",
"source_class": "layout-metrics",
"source_slide_index": 3
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "layout-quote",
"source_slide_index": 7
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "layout-split",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "timeline",
"source_class": "layout-timeline",
"source_slide_index": 8
}
],
"promotion_status": "production",
"reference_screenshot": "beautiful-html-templates/screenshots/blue-professional-1.png",
"reference_screenshot_sha256": "0f08aefe70cb14ca7f3126ecc2f34319ca8f281ecdf81c6d6486ea93b2236f8c",
"review_artifact_path": "families/blue-professional.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "executive-dashboard",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": "skills/lark-slides/references/page-family-smoke-decks/blue-professional.json",
"deck_sha256": "ad000e304afc4306e6e7eaaa3c8b624af09a28e80731b35a6d5862e90ee6abd0",
"degraded": false,
"input_hashes": {
"golden_spec.agenda": "360dd0c6f8aa8a7446a1221abea6d29eb97bff41b13f17b0589a96896aa4f9d2",
"golden_spec.bars": "8f6bc2850326d4a0fbd489d83586694201b2d12eab75c5c959d17e81ff602952",
"golden_spec.closing": "3103fc98e5ce67c299f6e1d5fc6adae6c1bbb1cd76cefb83c606b8be3ae837ee",
"golden_spec.cover": "3dd3e57c24acaf47d17d9c658c7b905514362fba86231be5a6d16827c1665573",
"golden_spec.dashboard": "9fdeaf7d2187a61b62803350eefac26dff135782ad3f93b06707b71e679bdb8b",
"golden_spec.detail": "a5168f94a81d44d9e945de36120bf024ab64acc250dd6f54448552ebfd691fb3",
"golden_spec.metrics": "71b17aca5f64aaa653b4fdba9da63a56520b81f37dc3af15c9d096e103d5582b",
"golden_spec.quote": "2044ecea4449cb20761ff47516f17dfa2db0a2f99130ff8aac4a731588b4a717",
"golden_spec.split": "a085125effb6489dd3d8737a280fa2debd638e286a6a47efb9b85e520a99e92e",
"golden_spec.timeline": "e35a0efffd07c38e8319e2f986053df474ad513416556eca32b5177401145e8c",
"smoke_deck": "ad000e304afc4306e6e7eaaa3c8b624af09a28e80731b35a6d5862e90ee6abd0"
},
"missing_required_roles": [],
"page_variant_coverage": {
"agenda": {
"covered": true,
"pages": [
2
],
"variants": [
"agenda"
]
},
"closing": {
"covered": true,
"pages": [
10
],
"variants": [
"closing"
]
},
"comparison": {
"covered": true,
"pages": [
6
],
"variants": [
"split"
]
},
"content": {
"covered": true,
"pages": [
3
],
"variants": [
"dashboard"
]
},
"cover": {
"covered": true,
"pages": [
1
],
"variants": [
"cover"
]
},
"data": {
"covered": true,
"pages": [
4,
5
],
"variants": [
"bars",
"metrics"
]
},
"detail": {
"covered": true,
"pages": [
9
],
"variants": [
"detail"
]
},
"process": {
"covered": true,
"pages": [
8
],
"variants": [
"timeline"
]
},
"quote": {
"covered": true,
"pages": [
7
],
"variants": [
"quote"
]
}
},
"receipt_path": "skills/lark-slides/references/receipts/page-family-smoke/blue-professional.executive-dashboard.json",
"receipt_sha256": "ae3cfa9a3ba970c0f4d6903148d7291375019dd3d12a8c3619599c5520742804",
"rendered_pages": 10,
"status": "passed"
},
"smoke_status": "passed",
"template_id": "executive-dashboard",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/blue-professional.executive-dashboard.json",
"visual_contract_sha256": "1e1f13157126fdd67f9ce274df5b81419ea29e91e976890f8c099188c2af5a84"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "bold-poster",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/bold-poster.poster-stat-punch.json",
"receipt_sha256": "5cb7f128615cbb801b3e66df177a5c1d61b3339c92cba3a04b9db00aadce0635",
"score": 0.9499,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "closing",
"page_variant_id": "close",
"source_class": "slide-close",
"source_slide_index": 10
},
{
"page_role": "content",
"page_variant_id": "financial",
"source_class": "slide-financial",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "global",
"source_class": "slide-global",
"source_slide_index": 9
},
{
"page_role": "cover",
"page_variant_id": "hero",
"source_class": "slide-hero",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "pillars",
"source_class": "slide-pillars",
"source_slide_index": 8
},
{
"page_role": "agenda",
"page_variant_id": "red",
"source_class": "slide-red",
"source_slide_index": 2
},
{
"page_role": "process_or_timeline",
"page_variant_id": "roadmap",
"source_class": "slide-roadmap",
"source_slide_index": 7
},
{
"page_role": "process_or_timeline",
"page_variant_id": "services",
"source_class": "slide-services",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "stat",
"source_class": "slide-stat",
"source_slide_index": 5
},
{
"page_role": "detail",
"page_variant_id": "summary",
"source_class": "slide-summary",
"source_slide_index": 3
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/bold-poster-1.png",
"reference_screenshot_sha256": "95a9351619463053bda29bdf472702ed4bc650a4510fa6b3cfcc34d5e3ba79b1",
"review_artifact_path": "families/bold-poster.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "poster-stat-punch",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "poster-stat-punch",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/bold-poster.poster-stat-punch.json",
"visual_contract_sha256": "7c8e40b48896fddcfa1d4340d2842c8f749f551aeec9d60c43daa0a50dbf2b7e"
}

View File

@@ -0,0 +1,150 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "broadside",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/broadside.editorial-quote-chart.json",
"receipt_sha256": "fd3c0b8d0ae82ecad0cbeb13974361d5bf8f9e76083619edf5a88d77b0b5f664",
"score": 0.9397,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 16,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "chapter",
"source_class": "slide--chapter",
"source_slide_index": 2
},
{
"page_role": "closing",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 10
},
{
"page_role": "process_or_timeline",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 9
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "content",
"page_variant_id": "cycle",
"source_class": "slide--cycle",
"source_slide_index": 15
},
{
"page_role": "detail",
"page_variant_id": "diagram",
"source_class": "slide--diagram",
"source_slide_index": 11
},
{
"page_role": "data_dashboard",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 16
},
{
"page_role": "content",
"page_variant_id": "fadelist",
"source_class": "slide--fadelist",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "pie",
"source_class": "slide--pie",
"source_slide_index": 12
},
{
"page_role": "content",
"page_variant_id": "pyramid",
"source_class": "slide--pyramid",
"source_slide_index": 13
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 8
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide--split",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "vtimeline",
"source_class": "slide--vtimeline",
"source_slide_index": 14
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/broadside-1.png",
"reference_screenshot_sha256": "96805bd67e4502f94b078b723d252717183fe8eb34f2eb529c44b772b4dcdce4",
"review_artifact_path": "families/broadside.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "editorial-quote-chart",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "editorial-quote-chart",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/broadside.editorial-quote-chart.json",
"visual_contract_sha256": "be278ba76d6c3722086bde248d72efd31cd8eb7ff7f33a842194aac78212e899"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "capsule",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/capsule.capsule-card-system.json",
"receipt_sha256": "38ef8db0e9fdaf4d3c4f83f3b9ab1a2c956661315784c6090c301faac93f2f8c",
"score": 0.9158,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "slide-2",
"source_slide_index": 2
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "slide-10",
"source_slide_index": 10
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide-1",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard",
"source_class": "slide-3",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-4",
"source_class": "slide-4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-7",
"source_class": "slide-7",
"source_slide_index": 7
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline",
"source_class": "slide-6",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote_or_emphasis",
"source_class": "slide-5",
"source_slide_index": 5
},
{
"page_role": "content",
"page_variant_id": "slide-8",
"source_class": "slide-8",
"source_slide_index": 8
},
{
"page_role": "content",
"page_variant_id": "slide-9",
"source_class": "slide-9",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/capsule-1.png",
"reference_screenshot_sha256": "468b1b618668660274e7a46a528d0a323fb926c3e47f7e5895ec03189efd35b3",
"review_artifact_path": "families/capsule.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "capsule-card-system",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "capsule-card-system",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/capsule.capsule-card-system.json",
"visual_contract_sha256": "5d93d9bc2bf6025343271fac5efa91d43fa1753e7e0638653c3671818eea9d65"
}

View File

@@ -0,0 +1,108 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "cartesian",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/cartesian.architectural-spec.json",
"receipt_sha256": "d7bec45b7684b8ab2e98755e76624fffdf5048fd864aa64d7092aeb6aba3a62d",
"score": 0.9801,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 9,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "slide-agenda",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "barchart",
"source_class": "slide-barchart",
"source_slide_index": 3
},
{
"page_role": "content",
"page_variant_id": "cards",
"source_class": "slide-cards",
"source_slide_index": 5
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "slide-closing",
"source_slide_index": 9
},
{
"page_role": "data_dashboard",
"page_variant_id": "linechart",
"source_class": "slide-linechart",
"source_slide_index": 6
},
{
"page_role": "agenda",
"page_variant_id": "statement",
"source_class": "slide-statement",
"source_slide_index": 2
},
{
"page_role": "detail",
"page_variant_id": "team",
"source_class": "slide-team",
"source_slide_index": 8
},
{
"page_role": "process_or_timeline",
"page_variant_id": "timeline",
"source_class": "slide-timeline",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "twocol",
"source_class": "slide-twocol",
"source_slide_index": 4
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/cartesian-1.png",
"reference_screenshot_sha256": "59af0f5ee20b85f07ada82a1d6bb8ab5e69b81bb08b5abf2a7520eca4934e93e",
"review_artifact_path": "families/cartesian.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "architectural-spec",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "architectural-spec",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/cartesian.architectural-spec.json",
"visual_contract_sha256": "0eaba0fe4ff403fb63bbe64692bcb137d6122f1897096d588d82133ac45386b4"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "cobalt-grid",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/cobalt-grid.trend-grid-report.json",
"receipt_sha256": "fd2b394777733364723f20d0d732a346f93edba0a748628ce9a1e5596726cb02",
"score": 0.9296,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "content",
"page_variant_id": "chapter",
"source_class": "s-chapter",
"source_slide_index": 4
},
{
"page_role": "content",
"page_variant_id": "colophon",
"source_class": "s-colophon",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data",
"source_class": "s-data",
"source_slide_index": 5
},
{
"page_role": "data_dashboard",
"page_variant_id": "index",
"source_class": "s-index",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "manifesto",
"source_class": "s-manifesto",
"source_slide_index": 2
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "table",
"source_class": "s-table",
"source_slide_index": 7
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/cobalt-grid-1.png",
"reference_screenshot_sha256": "e85989914eb7ca3bb279e03cc792df19c5d06f8d3ba0e59515211164fca5ae2d",
"review_artifact_path": "families/cobalt-grid.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "trend-grid-report",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "trend-grid-report",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/cobalt-grid.trend-grid-report.json",
"visual_contract_sha256": "d4c4dfaf72ea1557439bc9dc2575ef25adc01e849d53a2492512e5308c004e5d"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "coral",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/coral.coral-magazine-feature.json",
"receipt_sha256": "dd795f5b763b8b5769e173a07ba63f2a2da2345fefaf96cb48989b7a5ba4ef2c",
"score": 0.9491,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "slide-2",
"source_slide_index": 2
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "slide-10",
"source_slide_index": 10
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide-1",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard",
"source_class": "slide-4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-6",
"source_class": "slide-6",
"source_slide_index": 6
},
{
"page_role": "detail",
"page_variant_id": "detail",
"source_class": "slide-3",
"source_slide_index": 3
},
{
"page_role": "detail",
"page_variant_id": "detail-9",
"source_class": "slide-9",
"source_slide_index": 9
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline",
"source_class": "slide-5",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline-8",
"source_class": "slide-8",
"source_slide_index": 8
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote_or_emphasis",
"source_class": "slide-7",
"source_slide_index": 7
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/coral-1.png",
"reference_screenshot_sha256": "3cce11542e0c380396c14d2e7ac7406af704af163e7ba85b8ce9e2fdf7d12015",
"review_artifact_path": "families/coral.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "coral-magazine-feature",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "coral-magazine-feature",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/coral.coral-magazine-feature.json",
"visual_contract_sha256": "4a49a52df2fc350355fe88276d9d0af73c518d3bb3c0f4ce30fa966846e6d0df"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "creative-mode",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/creative-mode.creative-mode-grid.json",
"receipt_sha256": "51de4317d40671c7a4ba0868cacfa3c86ca2de0d14eecb8d07177f6c53506acf",
"score": 0.9409,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "cover",
"page_variant_id": "s1",
"source_class": "s1",
"source_slide_index": 1
},
{
"page_role": "agenda",
"page_variant_id": "s2",
"source_class": "s2",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "s3",
"source_class": "s3",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "s4",
"source_class": "s4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "s5",
"source_class": "s5",
"source_slide_index": 5
},
{
"page_role": "data_dashboard",
"page_variant_id": "s6",
"source_class": "s6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "s7",
"source_class": "s7",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "s8",
"source_class": "s8",
"source_slide_index": 8
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/creative-mode-1.png",
"reference_screenshot_sha256": "aaac87da4e7f0e1e294f8f3d88616b067174687f4b89dafcad0acb4b967e9633",
"review_artifact_path": "families/creative-mode.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "creative-mode-grid",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "creative-mode-grid",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/creative-mode.creative-mode-grid.json",
"visual_contract_sha256": "ae208aa5cb4ec3e197f51d997ab4e68109275c7b79bb020a3767cfa494dc227a"
}

View File

@@ -0,0 +1,108 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "daisy-days",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/daisy-days.daisy-workshop-playbook.json",
"receipt_sha256": "926bc15a8016d24e25c00a42eb878578dbb825471d6ba2abc316bf48016ab5bc",
"score": 0.9711,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 9,
"page_variants": [
{
"page_role": "detail",
"page_variant_id": "cards",
"source_class": "slide-cards",
"source_slide_index": 5
},
{
"page_role": "data_dashboard",
"page_variant_id": "chart_bar",
"source_class": "slide-chart-bar",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "donut",
"source_class": "slide-donut",
"source_slide_index": 9
},
{
"page_role": "content",
"page_variant_id": "process",
"source_class": "slide-process",
"source_slide_index": 8
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide-quote",
"source_slide_index": 6
},
{
"page_role": "detail",
"page_variant_id": "team",
"source_class": "slide-team",
"source_slide_index": 7
},
{
"page_role": "process_or_timeline",
"page_variant_id": "timeline",
"source_class": "slide-timeline",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "weekly",
"source_class": "slide-weekly",
"source_slide_index": 2
},
{
"page_role": "cover",
"page_variant_id": "welcome",
"source_class": "slide-welcome",
"source_slide_index": 1
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/daisy-days-1.png",
"reference_screenshot_sha256": "65f6615ff2ec51a3d4a77573c2a53471b356724a58bd33dffdb55ed69ab2b73b",
"review_artifact_path": "families/daisy-days.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "daisy-workshop-playbook",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "daisy-workshop-playbook",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/daisy-days.daisy-workshop-playbook.json",
"visual_contract_sha256": "9f481ab2692c478b75690c69edf7a8e55a233e476aadf2d2d3954e7a0ed28a68"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "editorial-forest",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/editorial-forest.serif-stat-editorial.json",
"receipt_sha256": "64abadb7a840271a45d482c1f3a7e8f4e75909ac007ef2c13d4ac0f77c77fdaf",
"score": 0.9627,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "agenda",
"source_slide_index": 2
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data",
"source_class": "data",
"source_slide_index": 5
},
{
"page_role": "detail",
"page_variant_id": "framework",
"source_class": "framework",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement",
"source_class": "statement",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "stats",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "summary",
"source_class": "summary",
"source_slide_index": 8
},
{
"page_role": "data_dashboard",
"page_variant_id": "two_col",
"source_class": "two-col",
"source_slide_index": 4
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/editorial-forest-1.png",
"reference_screenshot_sha256": "a081f3b16a3dd72dd16d9fdfcf30aa61cf66c79c865189eb380d22bd425c2a1c",
"review_artifact_path": "families/editorial-forest.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "serif-stat-editorial",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "serif-stat-editorial",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/editorial-forest.serif-stat-editorial.json",
"visual_contract_sha256": "35d65f6b44f6f19b883b3c0feccd5310e5468c7fb0f9a558360c180101a286a6"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "editorial-tri-tone",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/editorial-tri-tone.tritone-editorial-spread.json",
"receipt_sha256": "5bf44805d7dc674b07da8f0ac8f0a749bfc78893371e921567db82e5bf3a251b",
"score": 0.9274,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "s-chart",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "closer",
"source_class": "s-closer",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "content",
"page_variant_id": "grid",
"source_class": "s-grid",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "manifesto",
"source_class": "s-manifesto",
"source_slide_index": 2
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "stat",
"source_class": "s-stat",
"source_slide_index": 4
},
{
"page_role": "process_or_timeline",
"page_variant_id": "timeline",
"source_class": "s-timeline",
"source_slide_index": 5
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/editorial-tri-tone-1.png",
"reference_screenshot_sha256": "0b89022af5bfcc26356b7bdb48156510ba16b643e9bc01027ae8197092ead507",
"review_artifact_path": "families/editorial-tri-tone.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "tritone-editorial-spread",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "tritone-editorial-spread",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/editorial-tri-tone.tritone-editorial-spread.json",
"visual_contract_sha256": "732fba46fdbbdc3d6c40c0c56775e508523ff100cbc015a0a033c8adc347fb83"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "emerald-editorial",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/emerald-editorial.emerald-editorial-cover.json",
"receipt_sha256": "7aa06118b44f3dcc6202b56e64ec03134f5487d3e48a25279a9ccfeb09c1c81b",
"score": 0.9697,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "cover",
"page_variant_id": "s1",
"source_class": "s1",
"source_slide_index": 1
},
{
"page_role": "agenda",
"page_variant_id": "s2",
"source_class": "s2",
"source_slide_index": 2
},
{
"page_role": "detail",
"page_variant_id": "s3",
"source_class": "s3",
"source_slide_index": 3
},
{
"page_role": "process_or_timeline",
"page_variant_id": "s4",
"source_class": "s4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "s5",
"source_class": "s5",
"source_slide_index": 5
},
{
"page_role": "detail",
"page_variant_id": "s6",
"source_class": "s6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "s7",
"source_class": "s7",
"source_slide_index": 7
},
{
"page_role": "closing",
"page_variant_id": "s8",
"source_class": "s8",
"source_slide_index": 8
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/emerald-editorial-1.png",
"reference_screenshot_sha256": "fda35bb4c4810369a5c5bccd70cbcd9d474691027c79a0d94ebf59dbf673c150",
"review_artifact_path": "families/emerald-editorial.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "emerald-editorial-cover",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "emerald-editorial-cover",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/emerald-editorial.emerald-editorial-cover.json",
"visual_contract_sha256": "d1045f952aa4385a33084a25788785509dd62154b8bf18b8c342c9d6a212df98"
}

View File

@@ -0,0 +1,126 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "grove",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/grove.grove-organic-brief.json",
"receipt_sha256": "72a5d983bb922049b536f086eedb89d0e3a7959b72480aab5fcfce63842d7455",
"score": 0.8025,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 12,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "chapter",
"source_class": "slide--chapter",
"source_slide_index": 2
},
{
"page_role": "content",
"page_variant_id": "chapter-9",
"source_class": "slide--chapter",
"source_slide_index": 9
},
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 11
},
{
"page_role": "data_dashboard",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 12
},
{
"page_role": "data_dashboard",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 7
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide--split",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 3
},
{
"page_role": "closing",
"page_variant_id": "statement-10",
"source_class": "slide--statement",
"source_slide_index": 10
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 5
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/grove-1.png",
"reference_screenshot_sha256": "6a01598d4b183837b96c698eb9453962fea4bea072a431ee4d71aef6e09da3eb",
"review_artifact_path": "families/grove.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "grove-organic-brief",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "grove-organic-brief",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/grove.grove-organic-brief.json",
"visual_contract_sha256": "7b26c718abe40c305f7ba14a64cea6cfc66d12c7d8c24f2d61e1d91e9d5368ee"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "long-table",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/long-table.printed-program.json",
"receipt_sha256": "96948f5547801870efb639d755ee4b944114cd0925c3fd03f6d15cafe935119e",
"score": 0.964,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "cal",
"source_class": "s-cal",
"source_slide_index": 7
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "s-closing",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "featured",
"source_class": "s-featured",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "index",
"source_class": "s-index",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "manifesto",
"source_class": "s-manifesto",
"source_slide_index": 2
},
{
"page_role": "content",
"page_variant_id": "menu",
"source_class": "s-menu",
"source_slide_index": 5
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 6
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/long-table-1.png",
"reference_screenshot_sha256": "79f7956399971a6038c6b98ba7850b8d232c593bafb1c484c7127e5d3fd60bba",
"review_artifact_path": "families/long-table.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "printed-program",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "printed-program",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/long-table.printed-program.json",
"visual_contract_sha256": "505151ef203ca83bad790f90553bc14186740bef093cbb84fc3bd2e00a5bcd84"
}

View File

@@ -0,0 +1,108 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "mat",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/mat.mat-midcentury-board.json",
"receipt_sha256": "e1e95e38f4ea8124a378b7de4a0eb81593f192811ea42e7b31085ed84410cf34",
"score": 0.8843,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 9,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 8
},
{
"page_role": "content",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 7
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "content",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 9
},
{
"page_role": "content",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 5
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide--split",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 4
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/mat-1.png",
"reference_screenshot_sha256": "acac0ac30af8fbb206adfb6810573c72d3ca96b00293f9f850fdeefed1ae11dc",
"review_artifact_path": "families/mat.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "mat-midcentury-board",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "mat-midcentury-board",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/mat.mat-midcentury-board.json",
"visual_contract_sha256": "22f9899bfa852ac964a8e42a4178cc2898ff113d1e97da9584d0674d721e2319"
}

View File

@@ -0,0 +1,150 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "monochrome",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/monochrome.ledger-briefing.json",
"receipt_sha256": "7fd4a1a4f9929a0add47861c0f489f80b3cfe4dd9e91dc13014ec264811c78c5",
"score": 0.9841,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 16,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "chapter",
"source_class": "slide--chapter",
"source_slide_index": 2
},
{
"page_role": "closing",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 10
},
{
"page_role": "data_dashboard",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 7
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "cycle",
"source_class": "slide--cycle",
"source_slide_index": 14
},
{
"page_role": "data_dashboard",
"page_variant_id": "dense",
"source_class": "slide--dense",
"source_slide_index": 9
},
{
"page_role": "data_dashboard",
"page_variant_id": "diagram",
"source_class": "slide--diagram",
"source_slide_index": 11
},
{
"page_role": "data_dashboard",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 16
},
{
"page_role": "data_dashboard",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "pie",
"source_class": "slide--pie",
"source_slide_index": 12
},
{
"page_role": "data_dashboard",
"page_variant_id": "pyramid",
"source_class": "slide--pyramid",
"source_slide_index": 17
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 8
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide--split",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "vtimeline",
"source_class": "slide--vtimeline",
"source_slide_index": 13
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/monochrome-1.png",
"reference_screenshot_sha256": "bac6b00bf1d0b3c97b19d2a0c45edf44af5cbf369f2cf3ebe78a207a7b6b8c7b",
"review_artifact_path": "families/monochrome.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "ledger-briefing",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "ledger-briefing",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/monochrome.ledger-briefing.json",
"visual_contract_sha256": "22f4d6c5ae06606df6d47ad3c7bd7e560cde90e4192a9b95f461be024f6ff053"
}

View File

@@ -0,0 +1,126 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "neo-grid-bold",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/neo-grid-bold.dense-panel-grid.json",
"receipt_sha256": "9d0ced3d64a642e028edf86ff6457c36def39175b3079fff6a4c97b645803228",
"score": 0.8085,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 12,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "s-chart",
"source_slide_index": 5
},
{
"page_role": "closing",
"page_variant_id": "chart2",
"source_class": "s-chart2",
"source_slide_index": 10
},
{
"page_role": "data_dashboard",
"page_variant_id": "consult",
"source_class": "s-consult",
"source_slide_index": 9
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "detail",
"page_variant_id": "cta",
"source_class": "s-cta",
"source_slide_index": 8
},
{
"page_role": "detail",
"page_variant_id": "features",
"source_class": "s-features",
"source_slide_index": 4
},
{
"page_role": "content",
"page_variant_id": "matrix2",
"source_class": "s-matrix2",
"source_slide_index": 12
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process2",
"source_class": "s-process2",
"source_slide_index": 11
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 7
},
{
"page_role": "content",
"page_variant_id": "section",
"source_class": "s-section",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "s-stats",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "toc",
"source_class": "s-toc",
"source_slide_index": 2
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/neo-grid-bold-1.png",
"reference_screenshot_sha256": "c53ba5da0f1b85b23ad1975da65edafaee84f029f06c468b2fbd036031ce15e5",
"review_artifact_path": "families/neo-grid-bold.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "dense-panel-grid",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "dense-panel-grid",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/neo-grid-bold.dense-panel-grid.json",
"visual_contract_sha256": "a4ecaab6b9ffcca493e015eb2a3e591ffb71aa199d9eebd25aa53a5225b4180a"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "peoples-platform",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/peoples-platform.people-platform-manifesto.json",
"receipt_sha256": "679368f5526815a2cb311d583f0f86871000639c85643e6b47099ab91566d5cc",
"score": 0.739,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "closing",
"page_variant_id": "close",
"source_class": "s-close",
"source_slide_index": 10
},
{
"page_role": "detail",
"page_variant_id": "compare",
"source_class": "s-compare",
"source_slide_index": 9
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "manifesto",
"source_class": "s-manifesto",
"source_slide_index": 3
},
{
"page_role": "detail",
"page_variant_id": "pillars",
"source_class": "s-pillars",
"source_slide_index": 4
},
{
"page_role": "detail",
"page_variant_id": "platform",
"source_class": "s-platform",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "stat",
"source_class": "s-stat",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "timeline",
"source_class": "s-timeline",
"source_slide_index": 8
},
{
"page_role": "agenda",
"page_variant_id": "toc",
"source_class": "s-toc",
"source_slide_index": 2
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/peoples-platform-1.png",
"reference_screenshot_sha256": "9a0c40acaa0fb9c058745cbd16c875f9b7a0417d46c6c37dede388e32cf52d25",
"review_artifact_path": "families/peoples-platform.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "people-platform-manifesto",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "people-platform-manifesto",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/peoples-platform.people-platform-manifesto.json",
"visual_contract_sha256": "32839a4cac6a261ce9088ed2017536f11448621234e2b2b8dd70c882e0bc6c0e"
}

View File

@@ -0,0 +1,120 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "pin-and-paper",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/pin-and-paper.annotated-field-board.json",
"receipt_sha256": "b6aa5696947e5fc7fcd633c340cea26e983956f97a0a54b72eb035818d6a3d76",
"score": 0.8566,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 11,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "s-agenda",
"source_slide_index": 2
},
{
"page_role": "process_or_timeline",
"page_variant_id": "chart",
"source_class": "s-chart",
"source_slide_index": 6
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "process_or_timeline",
"page_variant_id": "cta",
"source_class": "s-cta",
"source_slide_index": 11
},
{
"page_role": "process_or_timeline",
"page_variant_id": "matrix",
"source_class": "s-matrix",
"source_slide_index": 8
},
{
"page_role": "process_or_timeline",
"page_variant_id": "notes",
"source_class": "s-notes",
"source_slide_index": 3
},
{
"page_role": "process_or_timeline",
"page_variant_id": "notice",
"source_class": "s-notice",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process",
"source_class": "s-process",
"source_slide_index": 7
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 10
},
{
"page_role": "content",
"page_variant_id": "sec",
"source_class": "s-sec",
"source_slide_index": 4
},
{
"page_role": "process_or_timeline",
"page_variant_id": "stats",
"source_class": "s-stats",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/pin-and-paper-1.png",
"reference_screenshot_sha256": "35ff94a10d71d18318fa11e1c95fb6a32e2b1801ffff24ccc8e0f36afe187387",
"review_artifact_path": "families/pin-and-paper.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "annotated-field-board",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "annotated-field-board",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/pin-and-paper.annotated-field-board.json",
"visual_contract_sha256": "69e9062c9e5f8a9df6e536d0168eaaf4b164cc95e2b7086d84989affd1a9e6b7"
}

View File

@@ -0,0 +1,108 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "pink-script",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/pink-script.pink-nocturne-feature.json",
"receipt_sha256": "ff075c2947f7c09785c47c57f68d995722873676d91251a822747e0b096b88bf",
"score": 0.8587,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 9,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "s-chart",
"source_slide_index": 5
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "process_or_timeline",
"page_variant_id": "cta",
"source_class": "s-cta",
"source_slide_index": 9
},
{
"page_role": "content",
"page_variant_id": "matrix",
"source_class": "s-matrix",
"source_slide_index": 7
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process",
"source_class": "s-process",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 8
},
{
"page_role": "content",
"page_variant_id": "section",
"source_class": "s-section",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "s-stats",
"source_slide_index": 3
},
{
"page_role": "agenda",
"page_variant_id": "toc",
"source_class": "s-toc",
"source_slide_index": 2
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/pink-script-1.png",
"reference_screenshot_sha256": "d39af58b620fe59ab0e28db0f070fd6e13214896115aa984be069369ef594ff7",
"review_artifact_path": "families/pink-script.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "pink-nocturne-feature",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "pink-nocturne-feature",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/pink-script.pink-nocturne-feature.json",
"visual_contract_sha256": "b6f6845aa9f78d5c98f51a3279c2afde366f68c0a88fee5521c2c146a3a6b971"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "playful",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/playful.playful-indie-launch.json",
"receipt_sha256": "e828f367dda5704dca8c804fb833051e8e3888202e9b76169082ac50164873d8",
"score": 0.8008,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "slide-2",
"source_slide_index": 2
},
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "slide-10",
"source_slide_index": 10
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide-1",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard",
"source_class": "slide-3",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-4",
"source_class": "slide-4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-6",
"source_class": "slide-6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "data_dashboard-8",
"source_class": "slide-8",
"source_slide_index": 8
},
{
"page_role": "detail",
"page_variant_id": "detail",
"source_class": "slide-5",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process_or_timeline",
"source_class": "slide-7",
"source_slide_index": 7
},
{
"page_role": "content",
"page_variant_id": "slide-9",
"source_class": "slide-9",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/playful-1.png",
"reference_screenshot_sha256": "75c22cf0736c2c349599de769e984af4e55440dbf83fb4abac35e5c0842abe81",
"review_artifact_path": "families/playful.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "playful-indie-launch",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "playful-indie-launch",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/playful.playful-indie-launch.json",
"visual_contract_sha256": "b16366831a2ff2e7df7e443765c1921e043d096145d73f08073110cb8897791b"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "raw-grid",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/raw-grid.brutalist-matrix.json",
"receipt_sha256": "fee9ac2b5c6d69612a2a082849f1829f5b3c75f2a5c2d29b76657361f4fc04cc",
"score": 0.9879,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "cover",
"page_variant_id": "s1",
"source_class": "s1",
"source_slide_index": 1
},
{
"page_role": "closing",
"page_variant_id": "s10",
"source_class": "s10",
"source_slide_index": 10
},
{
"page_role": "agenda",
"page_variant_id": "s2",
"source_class": "s2",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "s3",
"source_class": "s3",
"source_slide_index": 3
},
{
"page_role": "content",
"page_variant_id": "s4",
"source_class": "s4",
"source_slide_index": 4
},
{
"page_role": "content",
"page_variant_id": "s5",
"source_class": "s5",
"source_slide_index": 5
},
{
"page_role": "detail",
"page_variant_id": "s6",
"source_class": "s6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "s7",
"source_class": "s7",
"source_slide_index": 7
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "s8",
"source_class": "s8",
"source_slide_index": 8
},
{
"page_role": "content",
"page_variant_id": "s9",
"source_class": "s9",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/raw-grid-1.png",
"reference_screenshot_sha256": "4056c85b9415ba7a9a988d45f5316cbdfbaf18ee959e3f7727e2ef90f59f42bc",
"review_artifact_path": "families/raw-grid.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "brutalist-matrix",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "brutalist-matrix",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/raw-grid.brutalist-matrix.json",
"visual_contract_sha256": "fb4dc324a40f42349b253e2ad99ad3c5a7bec51e31944a4dc1e9872199441f8a"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "retro-windows",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/retro-windows.retro-ui-dashboard.json",
"receipt_sha256": "d9f718418fe0cba65d03c26230b5655764011c1197b9b52cb3ab15b0787cd8b6",
"score": 0.8558,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "cover",
"page_variant_id": "slide-1",
"source_class": "data-slide-1",
"source_slide_index": 1
},
{
"page_role": "closing",
"page_variant_id": "slide-10",
"source_class": "data-slide-10",
"source_slide_index": 10
},
{
"page_role": "agenda",
"page_variant_id": "slide-2",
"source_class": "data-slide-2",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-3",
"source_class": "data-slide-3",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-4",
"source_class": "data-slide-4",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-5",
"source_class": "data-slide-5",
"source_slide_index": 5
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-6",
"source_class": "data-slide-6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-7",
"source_class": "data-slide-7",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-8",
"source_class": "data-slide-8",
"source_slide_index": 8
},
{
"page_role": "process_or_timeline",
"page_variant_id": "slide-9",
"source_class": "data-slide-9",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/retro-windows-1.png",
"reference_screenshot_sha256": "8d9fc0a05ab025310cc35f15c2d3b2de629c79a49df9fe1c7d63b2f7b8a00543",
"review_artifact_path": "families/retro-windows.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "retro-ui-dashboard",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "retro-ui-dashboard",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/retro-windows.retro-ui-dashboard.json",
"visual_contract_sha256": "0e791a06d076a86dc292b0ead47827882a4a8698b169d2d8e4424ef220afec0c"
}

View File

@@ -0,0 +1,114 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "retro-zine",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/retro-zine.retro-zine-spread.json",
"receipt_sha256": "70330ed527a665653b1934d49e3ad5f14e2f4f866de429f38615ca98f18657ba",
"score": 0.8026,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 10,
"page_variants": [
{
"page_role": "closing",
"page_variant_id": "closing",
"source_class": "slide-closing",
"source_slide_index": 10
},
{
"page_role": "process_or_timeline",
"page_variant_id": "collage",
"source_class": "slide-collage",
"source_slide_index": 8
},
{
"page_role": "process_or_timeline",
"page_variant_id": "editorial",
"source_class": "slide-editorial",
"source_slide_index": 6
},
{
"page_role": "detail",
"page_variant_id": "grid",
"source_class": "slide-grid",
"source_slide_index": 4
},
{
"page_role": "cover",
"page_variant_id": "hero",
"source_class": "slide-hero",
"source_slide_index": 1
},
{
"page_role": "content",
"page_variant_id": "numbers",
"source_class": "slide-numbers",
"source_slide_index": 7
},
{
"page_role": "closing",
"page_variant_id": "rsvp",
"source_class": "slide-rsvp",
"source_slide_index": 9
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide-split",
"source_slide_index": 2
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "statement",
"source_class": "slide-statement",
"source_slide_index": 3
},
{
"page_role": "content",
"page_variant_id": "visual",
"source_class": "slide-visual",
"source_slide_index": 5
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/retro-zine-1.png",
"reference_screenshot_sha256": "bd93d862d934f00253a36df8f03f4aef74f87fb1b0f870c777002b39ae7f2af9",
"review_artifact_path": "families/retro-zine.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "retro-zine-spread",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "retro-zine-spread",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/retro-zine.retro-zine-spread.json",
"visual_contract_sha256": "24b24b38b4a89b009d65195b65ca24fce3f277cc906a2e104645a8d3c3173593"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "sakura-chroma",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/sakura-chroma.product-ribbon.json",
"receipt_sha256": "01ed753670341664ee282238d30060766dba929200e59bb279b31497ec8af736",
"score": 0.946,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "cal",
"source_class": "s-cal",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "catalogue",
"source_class": "s-catalogue",
"source_slide_index": 3
},
{
"page_role": "content",
"page_variant_id": "colophon",
"source_class": "s-colophon",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "data",
"source_class": "s-data",
"source_slide_index": 5
},
{
"page_role": "agenda",
"page_variant_id": "manifesto",
"source_class": "s-manifesto",
"source_slide_index": 2
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "stripe",
"source_class": "s-stripe",
"source_slide_index": 4
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/sakura-chroma-1.png",
"reference_screenshot_sha256": "92bae8fc25051d0dbbb648f931befbfb653cbc331e876ea5e5aaf76afbad0733",
"review_artifact_path": "families/sakura-chroma.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "product-ribbon",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "product-ribbon",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/sakura-chroma.product-ribbon.json",
"visual_contract_sha256": "103a2836d248d9e1db95b89c6cd25b60d6c7a7ad89b6327d6a7b3ae2e78cc5b8"
}

View File

@@ -0,0 +1,102 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "scatterbrain",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/scatterbrain.sticky-workshop-board.json",
"receipt_sha256": "8f986c32012e5a26fff7d1e4b2c73fb73db59885a7bb3f8ba7fc7f1f0cfd927f",
"score": 0.8092,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 8,
"page_variants": [
{
"page_role": "cover",
"page_variant_id": "slide-1",
"source_class": "data-slide-1",
"source_slide_index": 1
},
{
"page_role": "agenda",
"page_variant_id": "slide-2",
"source_class": "data-slide-2",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-3",
"source_class": "data-slide-3",
"source_slide_index": 3
},
{
"page_role": "detail",
"page_variant_id": "slide-4",
"source_class": "data-slide-4",
"source_slide_index": 4
},
{
"page_role": "process_or_timeline",
"page_variant_id": "slide-5",
"source_class": "data-slide-5",
"source_slide_index": 5
},
{
"page_role": "content",
"page_variant_id": "slide-6",
"source_class": "data-slide-6",
"source_slide_index": 6
},
{
"page_role": "data_dashboard",
"page_variant_id": "slide-7",
"source_class": "data-slide-7",
"source_slide_index": 7
},
{
"page_role": "closing",
"page_variant_id": "slide-8",
"source_class": "data-slide-8",
"source_slide_index": 8
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/scatterbrain-1.png",
"reference_screenshot_sha256": "c2ed8f8d89fd124c65976fa3ece9b153afe4f4542d95880c367922bb88d910ca",
"review_artifact_path": "families/scatterbrain.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "sticky-workshop-board",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "sticky-workshop-board",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/scatterbrain.sticky-workshop-board.json",
"visual_contract_sha256": "65fa4706b1e80a7692f2201c6b4fbdace18190f05d3e6923f7d936b06da2b7fd"
}

View File

@@ -0,0 +1,162 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "signal",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/signal.intelligence-brief.json",
"receipt_sha256": "f33e1fed9d3fe80ed000386d4649be14d1120ea455b57d33b8d97a87d2769231",
"score": 0.8021,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 18,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "chapter",
"source_class": "slide--chapter",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 13
},
{
"page_role": "data_dashboard",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "cycle",
"source_class": "slide--cycle",
"source_slide_index": 18
},
{
"page_role": "closing",
"page_variant_id": "dense",
"source_class": "slide--dense",
"source_slide_index": 10
},
{
"page_role": "content",
"page_variant_id": "diagram",
"source_class": "slide--diagram",
"source_slide_index": 14
},
{
"page_role": "data_dashboard",
"page_variant_id": "editorial",
"source_class": "slide--editorial",
"source_slide_index": 9
},
{
"page_role": "closing",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 12
},
{
"page_role": "content",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 7
},
{
"page_role": "data_dashboard",
"page_variant_id": "pie",
"source_class": "slide--pie",
"source_slide_index": 15
},
{
"page_role": "content",
"page_variant_id": "pyramid",
"source_class": "slide--pyramid",
"source_slide_index": 16
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 6
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide--split",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement-11",
"source_class": "slide--statement",
"source_slide_index": 11
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 5
},
{
"page_role": "process_or_timeline",
"page_variant_id": "vtimeline",
"source_class": "slide--vtimeline",
"source_slide_index": 17
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/signal-1.png",
"reference_screenshot_sha256": "ca5487dc68264f209951400c5edddb93c4ae1fc7174b88c2b3dc54a82e0be64a",
"review_artifact_path": "families/signal.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "intelligence-brief",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "intelligence-brief",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/signal.intelligence-brief.json",
"visual_contract_sha256": "6d637f0f69f55293ff9a7ff5db337872b9626ae039c22e46a341929f45e7660f"
}

View File

@@ -0,0 +1,126 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "soft-editorial",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/soft-editorial.soft-editorial-feature.json",
"receipt_sha256": "a7543b7f841153c3dd8d182b0c43d5d3688dc128b4da2f392cb41ee20d275ff3",
"score": 0.95,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 12,
"page_variants": [
{
"page_role": "closing",
"page_variant_id": "chart",
"source_class": "s-chart",
"source_slide_index": 10
},
{
"page_role": "content",
"page_variant_id": "closer",
"source_class": "s-closer",
"source_slide_index": 5
},
{
"page_role": "data_dashboard",
"page_variant_id": "consult",
"source_class": "s-consult",
"source_slide_index": 9
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "agenda",
"page_variant_id": "foreword",
"source_class": "s-foreword",
"source_slide_index": 2
},
{
"page_role": "process_or_timeline",
"page_variant_id": "insights",
"source_class": "s-insights",
"source_slide_index": 4
},
{
"page_role": "content",
"page_variant_id": "matrix",
"source_class": "s-matrix",
"source_slide_index": 12
},
{
"page_role": "detail",
"page_variant_id": "method",
"source_class": "s-method",
"source_slide_index": 3
},
{
"page_role": "data_dashboard",
"page_variant_id": "next",
"source_class": "s-next",
"source_slide_index": 8
},
{
"page_role": "data_dashboard",
"page_variant_id": "numbers",
"source_class": "s-numbers",
"source_slide_index": 6
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process",
"source_class": "s-process",
"source_slide_index": 11
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 7
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/soft-editorial-4.png",
"reference_screenshot_sha256": "3e37602cf749a0a383ef0f0a1f25db85e9633da1d74bafc2be76a91b004a866b",
"review_artifact_path": "families/soft-editorial.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "soft-editorial-feature",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "soft-editorial-feature",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/soft-editorial.soft-editorial-feature.json",
"visual_contract_sha256": "d3a13400806f0fff74391ef91450b5bfb15284077c62f5a74b04ff069c0a8302"
}

View File

@@ -0,0 +1,120 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "stencil-tablet",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/stencil-tablet.stencil-field-manual.json",
"receipt_sha256": "bf32692b17d20d5a20c9c87ac02226c93739131b38f83c7f3b452a14451128fd",
"score": 0.7629,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 11,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "agenda",
"source_class": "s-agenda",
"source_slide_index": 2
},
{
"page_role": "process_or_timeline",
"page_variant_id": "chart",
"source_class": "s-chart",
"source_slide_index": 6
},
{
"page_role": "process_or_timeline",
"page_variant_id": "consult",
"source_class": "s-consult",
"source_slide_index": 5
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "s-cover",
"source_slide_index": 1
},
{
"page_role": "process_or_timeline",
"page_variant_id": "cta",
"source_class": "s-cta",
"source_slide_index": 11
},
{
"page_role": "process_or_timeline",
"page_variant_id": "matrix",
"source_class": "s-matrix",
"source_slide_index": 8
},
{
"page_role": "process_or_timeline",
"page_variant_id": "princ",
"source_class": "s-princ",
"source_slide_index": 3
},
{
"page_role": "process_or_timeline",
"page_variant_id": "process",
"source_class": "s-process",
"source_slide_index": 7
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "s-quote",
"source_slide_index": 10
},
{
"page_role": "content",
"page_variant_id": "sec",
"source_class": "s-sec",
"source_slide_index": 4
},
{
"page_role": "process_or_timeline",
"page_variant_id": "stats",
"source_class": "s-stats",
"source_slide_index": 9
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/stencil-tablet-1.png",
"reference_screenshot_sha256": "b8321134113e99f90a0e17e44e326ab25e64f3735150dd82269e0b2daabaaa2b",
"review_artifact_path": "families/stencil-tablet.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "stencil-field-manual",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "stencil-field-manual",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/stencil-tablet.stencil-field-manual.json",
"visual_contract_sha256": "2754357cbe7401757e4aa5e188a59a9208650f38d75c521ea80c26a3c9fbe963"
}

View File

@@ -0,0 +1,126 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "studio",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/studio.type-mass-poster.json",
"receipt_sha256": "95baeec998aed196a738e4491cc7cab3ad34dbca2c3d5e96a94943f62075f60c",
"score": 0.9814,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 12,
"page_variants": [
{
"page_role": "agenda",
"page_variant_id": "chapter",
"source_class": "slide--chapter",
"source_slide_index": 2
},
{
"page_role": "content",
"page_variant_id": "chapter-9",
"source_class": "slide--chapter",
"source_slide_index": 9
},
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 11
},
{
"page_role": "content",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 8
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "data_dashboard",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 12
},
{
"page_role": "content",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 6
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 7
},
{
"page_role": "content_split",
"page_variant_id": "split",
"source_class": "slide--split",
"source_slide_index": 4
},
{
"page_role": "data_dashboard",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 3
},
{
"page_role": "closing",
"page_variant_id": "statement-10",
"source_class": "slide--statement",
"source_slide_index": 10
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 5
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/studio-1.png",
"reference_screenshot_sha256": "0d7c0646a85c56b4b26e09f0cf8a0b658fe0b1cf36be38255900fd259d0c42d4",
"review_artifact_path": "families/studio.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "type-mass-poster",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "type-mass-poster",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/studio.type-mass-poster.json",
"visual_contract_sha256": "52f47ef1318378f158396849c1040431c3a962f65bc50ebe13e70f2c57ad5ed9"
}

View File

@@ -0,0 +1,108 @@
{
"artifact_kind": "production_review_family_card",
"default_selectable": false,
"family_id": "vellum",
"fidelity": {
"receipt_path": "skills/lark-slides/references/receipts/template-fidelity/vellum.vellum-scholar-brief.json",
"receipt_sha256": "3152f66c029a0f4be72c43d417b2aec470b483239a8070136e5b87993e57ae68",
"score": 0.9885,
"status": "passed",
"threshold": 0.72
},
"fidelity_status": "passed",
"implemented_page_variant_count": 0,
"implemented_page_variants": [],
"known_blockers": [
"page_family_smoke_missing_or_failed",
"production_review_pending",
"quality_gate_integration_pending",
"selector_gate_missing"
],
"page_family_promotion_gate": {
"claim_boundary": null,
"required_evidence": [],
"status": "missing"
},
"page_family_promotion_gate_status": "missing",
"page_variant_count": 9,
"page_variants": [
{
"page_role": "data_dashboard",
"page_variant_id": "chart",
"source_class": "slide--chart",
"source_slide_index": 8
},
{
"page_role": "data_dashboard",
"page_variant_id": "compare",
"source_class": "slide--compare",
"source_slide_index": 7
},
{
"page_role": "cover",
"page_variant_id": "cover",
"source_class": "slide--cover",
"source_slide_index": 1
},
{
"page_role": "closing",
"page_variant_id": "end",
"source_class": "slide--end",
"source_slide_index": 9
},
{
"page_role": "content",
"page_variant_id": "list",
"source_class": "slide--list",
"source_slide_index": 5
},
{
"page_role": "quote_or_emphasis",
"page_variant_id": "quote",
"source_class": "slide--quote",
"source_slide_index": 6
},
{
"page_role": "agenda",
"page_variant_id": "statement",
"source_class": "slide--statement",
"source_slide_index": 2
},
{
"page_role": "data_dashboard",
"page_variant_id": "stats",
"source_class": "slide--stats",
"source_slide_index": 4
},
{
"page_role": "content",
"page_variant_id": "text",
"source_class": "slide--text",
"source_slide_index": 3
}
],
"promotion_status": "needs_review",
"reference_screenshot": "beautiful-html-templates/screenshots/vellum-1.png",
"reference_screenshot_sha256": "8c99c96677fec3c94235098b8fe36b9beeefd31ebfd173989f0ce358d91c4b73",
"review_artifact_path": "families/vellum.json",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
"review_decision": "pending_review",
"runtime_template_id": "vellum-scholar-brief",
"smoke": {
"artifact_kind": "page-family-smoke",
"deck_path": null,
"deck_sha256": null,
"degraded": null,
"input_hashes": {},
"missing_required_roles": [],
"page_variant_coverage": {},
"receipt_path": null,
"receipt_sha256": null,
"rendered_pages": null,
"status": "missing"
},
"smoke_status": "missing",
"template_id": "vellum-scholar-brief",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/vellum.vellum-scholar-brief.json",
"visual_contract_sha256": "a3e4e814788d738fd66b743f06fcafc465b7f4d8e4d02112dee8a3256eacdb93"
}

View File

@@ -0,0 +1,83 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>SVGlide Beautiful Production Review Gallery</title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; margin: 32px; color: #172033; background: #f7f8fb; }
header { max-width: 1180px; margin-bottom: 24px; }
h1 { margin: 0 0 8px; font-size: 28px; }
.warning { background: #fff6d6; border: 1px solid #e7c95b; padding: 12px 14px; border-radius: 8px; }
.summary { display: flex; gap: 12px; flex-wrap: wrap; margin: 18px 0; }
.metric { background: #fff; border: 1px solid #dbe1ea; border-radius: 8px; padding: 10px 12px; min-width: 150px; }
.metric strong { display: block; font-size: 22px; }
table { border-collapse: collapse; width: 100%; background: #fff; border: 1px solid #dbe1ea; }
th, td { border-bottom: 1px solid #e5e9f0; padding: 10px; text-align: left; vertical-align: top; font-size: 13px; }
th { background: #eef2f7; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
code { font-size: 11px; color: #4a5870; word-break: break-all; }
small { color: #65728a; }
</style>
</head>
<body>
<header>
<h1>SVGlide Beautiful Production Review Gallery</h1>
<div class="warning">This gallery is review input only. It is not a promotion receipt and does not change production/default_selectable status.</div>
<div class="summary">
<div class="metric"><strong>34</strong>candidates</div>
<div class="metric"><strong>1</strong>production + default</div>
<div class="metric"><strong>1</strong>default selectable</div>
<div class="metric"><strong>{&quot;missing&quot;: 33, &quot;passed&quot;: 1}</strong>smoke status counts</div>
</div>
</header>
<table>
<thead>
<tr>
<th>Family</th>
<th>Status</th>
<th>Variants</th>
<th>Smoke</th>
<th>Fidelity</th>
<th>Gate</th>
<th>Known Blockers</th>
<th>Evidence</th>
</tr>
</thead>
<tbody>
<tr><td><strong>8-bit-orbit</strong><br><small>pixel-orbit-console</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/8-bit-orbit.pixel-orbit-console.json</code><br><code>beautiful-html-templates/screenshots/8-bit-orbit-1.png</code></td></tr>
<tr><td><strong>biennale-yellow</strong><br><small>biennale-programme-poster</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/biennale-yellow.biennale-programme-poster.json</code><br><code>beautiful-html-templates/screenshots/biennale-yellow-1.png</code></td></tr>
<tr><td><strong>block-frame</strong><br><small>block-frame-grid</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/block-frame.block-frame-grid.json</code><br><code>beautiful-html-templates/screenshots/block-frame-1.png</code></td></tr>
<tr><td><strong>blue-professional</strong><br><small>executive-dashboard</small></td><td>production<br><small>default=true</small></td><td>10 source<br><small>10 implemented</small></td><td>passed<br><small>10 pages</small></td><td>passed</td><td>passed</td><td>none</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/blue-professional.executive-dashboard.json</code><br><code>beautiful-html-templates/screenshots/blue-professional-1.png</code></td></tr>
<tr><td><strong>bold-poster</strong><br><small>poster-stat-punch</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/bold-poster.poster-stat-punch.json</code><br><code>beautiful-html-templates/screenshots/bold-poster-1.png</code></td></tr>
<tr><td><strong>broadside</strong><br><small>editorial-quote-chart</small></td><td>needs_review<br><small>default=false</small></td><td>16 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/broadside.editorial-quote-chart.json</code><br><code>beautiful-html-templates/screenshots/broadside-1.png</code></td></tr>
<tr><td><strong>capsule</strong><br><small>capsule-card-system</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/capsule.capsule-card-system.json</code><br><code>beautiful-html-templates/screenshots/capsule-1.png</code></td></tr>
<tr><td><strong>cartesian</strong><br><small>architectural-spec</small></td><td>needs_review<br><small>default=false</small></td><td>9 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/cartesian.architectural-spec.json</code><br><code>beautiful-html-templates/screenshots/cartesian-1.png</code></td></tr>
<tr><td><strong>cobalt-grid</strong><br><small>trend-grid-report</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/cobalt-grid.trend-grid-report.json</code><br><code>beautiful-html-templates/screenshots/cobalt-grid-1.png</code></td></tr>
<tr><td><strong>coral</strong><br><small>coral-magazine-feature</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/coral.coral-magazine-feature.json</code><br><code>beautiful-html-templates/screenshots/coral-1.png</code></td></tr>
<tr><td><strong>creative-mode</strong><br><small>creative-mode-grid</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/creative-mode.creative-mode-grid.json</code><br><code>beautiful-html-templates/screenshots/creative-mode-1.png</code></td></tr>
<tr><td><strong>daisy-days</strong><br><small>daisy-workshop-playbook</small></td><td>needs_review<br><small>default=false</small></td><td>9 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/daisy-days.daisy-workshop-playbook.json</code><br><code>beautiful-html-templates/screenshots/daisy-days-1.png</code></td></tr>
<tr><td><strong>editorial-forest</strong><br><small>serif-stat-editorial</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/editorial-forest.serif-stat-editorial.json</code><br><code>beautiful-html-templates/screenshots/editorial-forest-1.png</code></td></tr>
<tr><td><strong>editorial-tri-tone</strong><br><small>tritone-editorial-spread</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/editorial-tri-tone.tritone-editorial-spread.json</code><br><code>beautiful-html-templates/screenshots/editorial-tri-tone-1.png</code></td></tr>
<tr><td><strong>emerald-editorial</strong><br><small>emerald-editorial-cover</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/emerald-editorial.emerald-editorial-cover.json</code><br><code>beautiful-html-templates/screenshots/emerald-editorial-1.png</code></td></tr>
<tr><td><strong>grove</strong><br><small>grove-organic-brief</small></td><td>needs_review<br><small>default=false</small></td><td>12 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/grove.grove-organic-brief.json</code><br><code>beautiful-html-templates/screenshots/grove-1.png</code></td></tr>
<tr><td><strong>long-table</strong><br><small>printed-program</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/long-table.printed-program.json</code><br><code>beautiful-html-templates/screenshots/long-table-1.png</code></td></tr>
<tr><td><strong>mat</strong><br><small>mat-midcentury-board</small></td><td>needs_review<br><small>default=false</small></td><td>9 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/mat.mat-midcentury-board.json</code><br><code>beautiful-html-templates/screenshots/mat-1.png</code></td></tr>
<tr><td><strong>monochrome</strong><br><small>ledger-briefing</small></td><td>needs_review<br><small>default=false</small></td><td>16 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/monochrome.ledger-briefing.json</code><br><code>beautiful-html-templates/screenshots/monochrome-1.png</code></td></tr>
<tr><td><strong>neo-grid-bold</strong><br><small>dense-panel-grid</small></td><td>needs_review<br><small>default=false</small></td><td>12 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/neo-grid-bold.dense-panel-grid.json</code><br><code>beautiful-html-templates/screenshots/neo-grid-bold-1.png</code></td></tr>
<tr><td><strong>peoples-platform</strong><br><small>people-platform-manifesto</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/peoples-platform.people-platform-manifesto.json</code><br><code>beautiful-html-templates/screenshots/peoples-platform-1.png</code></td></tr>
<tr><td><strong>pin-and-paper</strong><br><small>annotated-field-board</small></td><td>needs_review<br><small>default=false</small></td><td>11 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/pin-and-paper.annotated-field-board.json</code><br><code>beautiful-html-templates/screenshots/pin-and-paper-1.png</code></td></tr>
<tr><td><strong>pink-script</strong><br><small>pink-nocturne-feature</small></td><td>needs_review<br><small>default=false</small></td><td>9 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/pink-script.pink-nocturne-feature.json</code><br><code>beautiful-html-templates/screenshots/pink-script-1.png</code></td></tr>
<tr><td><strong>playful</strong><br><small>playful-indie-launch</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/playful.playful-indie-launch.json</code><br><code>beautiful-html-templates/screenshots/playful-1.png</code></td></tr>
<tr><td><strong>raw-grid</strong><br><small>brutalist-matrix</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/raw-grid.brutalist-matrix.json</code><br><code>beautiful-html-templates/screenshots/raw-grid-1.png</code></td></tr>
<tr><td><strong>retro-windows</strong><br><small>retro-ui-dashboard</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/retro-windows.retro-ui-dashboard.json</code><br><code>beautiful-html-templates/screenshots/retro-windows-1.png</code></td></tr>
<tr><td><strong>retro-zine</strong><br><small>retro-zine-spread</small></td><td>needs_review<br><small>default=false</small></td><td>10 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/retro-zine.retro-zine-spread.json</code><br><code>beautiful-html-templates/screenshots/retro-zine-1.png</code></td></tr>
<tr><td><strong>sakura-chroma</strong><br><small>product-ribbon</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/sakura-chroma.product-ribbon.json</code><br><code>beautiful-html-templates/screenshots/sakura-chroma-1.png</code></td></tr>
<tr><td><strong>scatterbrain</strong><br><small>sticky-workshop-board</small></td><td>needs_review<br><small>default=false</small></td><td>8 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/scatterbrain.sticky-workshop-board.json</code><br><code>beautiful-html-templates/screenshots/scatterbrain-1.png</code></td></tr>
<tr><td><strong>signal</strong><br><small>intelligence-brief</small></td><td>needs_review<br><small>default=false</small></td><td>18 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/signal.intelligence-brief.json</code><br><code>beautiful-html-templates/screenshots/signal-1.png</code></td></tr>
<tr><td><strong>soft-editorial</strong><br><small>soft-editorial-feature</small></td><td>needs_review<br><small>default=false</small></td><td>12 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/soft-editorial.soft-editorial-feature.json</code><br><code>beautiful-html-templates/screenshots/soft-editorial-4.png</code></td></tr>
<tr><td><strong>stencil-tablet</strong><br><small>stencil-field-manual</small></td><td>needs_review<br><small>default=false</small></td><td>11 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/stencil-tablet.stencil-field-manual.json</code><br><code>beautiful-html-templates/screenshots/stencil-tablet-1.png</code></td></tr>
<tr><td><strong>studio</strong><br><small>type-mass-poster</small></td><td>needs_review<br><small>default=false</small></td><td>12 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/studio.type-mass-poster.json</code><br><code>beautiful-html-templates/screenshots/studio-1.png</code></td></tr>
<tr><td><strong>vellum</strong><br><small>vellum-scholar-brief</small></td><td>needs_review<br><small>default=false</small></td><td>9 source<br><small>0 implemented</small></td><td>missing<br><small> pages</small></td><td>passed</td><td>missing</td><td>page_family_smoke_missing_or_failed, production_review_pending, quality_gate_integration_pending, selector_gate_missing</td><td><code>skills/lark-slides/references/visual-contracts/beautiful/vellum.vellum-scholar-brief.json</code><br><code>beautiful-html-templates/screenshots/vellum-1.png</code></td></tr>
</tbody>
</table>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@
"selected_family_id": "blue-professional",
"selected_template_id": "executive-dashboard",
"selected_theme_id": "blue-professional",
"rendered_pages": 9,
"rendered_pages": 10,
"production_minimum_roles": [
"cover",
"agenda",
@@ -41,26 +41,31 @@
},
{
"page": 5,
"page_role": "data",
"page_variant_id": "bars"
},
{
"page": 6,
"page_role": "comparison",
"page_variant_id": "split"
},
{
"page": 6,
"page": 7,
"page_role": "quote",
"page_variant_id": "quote"
},
{
"page": 7,
"page": 8,
"page_role": "process",
"page_variant_id": "timeline"
},
{
"page": 8,
"page": 9,
"page_role": "detail",
"page_variant_id": "detail"
},
{
"page": 9,
"page": 10,
"page_role": "closing",
"page_variant_id": "closing"
}
@@ -96,16 +101,18 @@
"data": {
"covered": true,
"pages": [
4
4,
5
],
"variants": [
"bars",
"metrics"
]
},
"comparison": {
"covered": true,
"pages": [
5
6
],
"variants": [
"split"
@@ -114,7 +121,7 @@
"quote": {
"covered": true,
"pages": [
6
7
],
"variants": [
"quote"
@@ -123,7 +130,7 @@
"process": {
"covered": true,
"pages": [
7
8
],
"variants": [
"timeline"
@@ -132,7 +139,7 @@
"detail": {
"covered": true,
"pages": [
8
9
],
"variants": [
"detail"
@@ -141,7 +148,7 @@
"closing": {
"covered": true,
"pages": [
9
10
],
"variants": [
"closing"
@@ -149,6 +156,32 @@
}
},
"missing_required_roles": [],
"implemented_page_variants": [
"cover",
"agenda",
"metrics",
"dashboard",
"split",
"bars",
"quote",
"timeline",
"detail",
"closing"
],
"covered_implemented_page_variants": [
"cover",
"agenda",
"metrics",
"dashboard",
"split",
"bars",
"quote",
"timeline",
"detail",
"closing"
],
"missing_implemented_page_variants": [],
"unimplemented_page_variants": [],
"reuse_count": 0,
"variant_reuse_reasons": [],
"degraded": false,
@@ -170,7 +203,7 @@
"smoke_deck": "skills/lark-slides/references/page-family-smoke-decks/blue-professional.json"
},
"input_hashes": {
"smoke_deck": "87a953bd4f4232701b4e7baea9de20a23ab50e7f8fa7efc7221525b605c7e432",
"smoke_deck": "ad000e304afc4306e6e7eaaa3c8b624af09a28e80731b35a6d5862e90ee6abd0",
"golden_spec.cover": "3dd3e57c24acaf47d17d9c658c7b905514362fba86231be5a6d16827c1665573",
"golden_spec.agenda": "360dd0c6f8aa8a7446a1221abea6d29eb97bff41b13f17b0589a96896aa4f9d2",
"golden_spec.metrics": "71b17aca5f64aaa653b4fdba9da63a56520b81f37dc3af15c9d096e103d5582b",
@@ -205,7 +238,9 @@
"summary": {
"error_count": 0,
"warning_count": 0,
"page_count": 9,
"covered_role_count": 9
"page_count": 10,
"covered_role_count": 9,
"implemented_variant_count": 10,
"covered_implemented_variant_count": 10
}
}

View File

@@ -0,0 +1,82 @@
{
"checks": {
"dedicated_renderer_present": true,
"default_selectable_count_not_changed": true,
"golden_fixture_present": true,
"implemented_variant_golden_specs_covered": [
"agenda",
"bars",
"closing",
"cover",
"dashboard",
"detail",
"metrics",
"quote",
"split",
"timeline"
],
"page_family_smoke_passed": true,
"screenshot_fidelity_passed": true,
"selector_gate_integrated": true,
"visual_contract_present": true
},
"claim_boundary": "This production review is an additional approval receipt for blue-professional only; it does not replace fidelity or page-family smoke and does not promote any other beautiful family.",
"family_id": "blue-professional",
"generated_by": "manual production review after M9 page-family smoke and gallery gate",
"input_hashes": {
"fidelity_receipt": "f6a4a0a015c09f14cb9e987f69734cbb05a06e79bba9c9b1ba2ca16ed6bc597a",
"golden_spec": "c70833d5d3022551915eb4ef9f3ced6311d80d14da4f6eb470bf8218d4c48051",
"page_family_smoke_deck": "ad000e304afc4306e6e7eaaa3c8b624af09a28e80731b35a6d5862e90ee6abd0",
"page_family_smoke_receipt": "ae3cfa9a3ba970c0f4d6903148d7291375019dd3d12a8c3619599c5520742804",
"page_variant_golden_specs.agenda": "360dd0c6f8aa8a7446a1221abea6d29eb97bff41b13f17b0589a96896aa4f9d2",
"page_variant_golden_specs.bars": "8f6bc2850326d4a0fbd489d83586694201b2d12eab75c5c959d17e81ff602952",
"page_variant_golden_specs.closing": "3103fc98e5ce67c299f6e1d5fc6adae6c1bbb1cd76cefb83c606b8be3ae837ee",
"page_variant_golden_specs.cover": "3dd3e57c24acaf47d17d9c658c7b905514362fba86231be5a6d16827c1665573",
"page_variant_golden_specs.dashboard": "9fdeaf7d2187a61b62803350eefac26dff135782ad3f93b06707b71e679bdb8b",
"page_variant_golden_specs.detail": "a5168f94a81d44d9e945de36120bf024ab64acc250dd6f54448552ebfd691fb3",
"page_variant_golden_specs.metrics": "71b17aca5f64aaa653b4fdba9da63a56520b81f37dc3af15c9d096e103d5582b",
"page_variant_golden_specs.quote": "2044ecea4449cb20761ff47516f17dfa2db0a2f99130ff8aac4a731588b4a717",
"page_variant_golden_specs.split": "a085125effb6489dd3d8737a280fa2debd638e286a6a47efb9b85e520a99e92e",
"page_variant_golden_specs.timeline": "e35a0efffd07c38e8319e2f986053df474ad513416556eca32b5177401145e8c",
"renderer_module": "420ccf54c88d47de1571857e9bffd5e70d9e0d062ee515b615d01e2b1117a1c1",
"visual_contract_path": "1e1f13157126fdd67f9ce274df5b81419ea29e91e976890f8c099188c2af5a84"
},
"p0_guardrails": [
"not_a_gallery_receipt",
"not_a_bulk_promotion",
"no_candidate_without_renderer_golden_fidelity_smoke_is_promoted",
"input_hashes_must_match_matrix_evidence",
"does_not_replace_fidelity_or_page_family_smoke"
],
"required_evidence": {
"fidelity_receipt": "skills/lark-slides/references/receipts/template-fidelity/blue-professional.executive-dashboard.json",
"golden_spec": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/executive-dashboard.canvas-spec.json",
"page_family_smoke_deck": "skills/lark-slides/references/page-family-smoke-decks/blue-professional.json",
"page_family_smoke_receipt": "skills/lark-slides/references/receipts/page-family-smoke/blue-professional.executive-dashboard.json",
"page_variant_golden_specs": {
"agenda": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.agenda.canvas-spec.json",
"bars": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.bars.canvas-spec.json",
"closing": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.closing.canvas-spec.json",
"cover": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.cover.canvas-spec.json",
"dashboard": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.dashboard.canvas-spec.json",
"detail": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.detail.canvas-spec.json",
"metrics": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.metrics.canvas-spec.json",
"quote": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.quote.canvas-spec.json",
"split": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.split.canvas-spec.json",
"timeline": "skills/lark-slides/scripts/fixtures/svglide_artboard/golden/blue-professional.timeline.canvas-spec.json"
},
"renderer_module": "skills/lark-slides/scripts/artboard_renderer/templates/beautiful/executive-dashboard.mjs",
"visual_contract_path": "skills/lark-slides/references/visual-contracts/beautiful/blue-professional.executive-dashboard.json"
},
"review_decision": {
"allow_default_selectable": true,
"allow_production": true,
"reason": "blue-professional is the only current family with dedicated renderer, golden specs for all implemented variants, page-family smoke receipt, fidelity receipt, selector/gate integration, and explicit production review evidence."
},
"review_type": "production_promotion",
"runtime_template_id": "executive-dashboard",
"scope": "production review receipt for the current single production/default selectable beautiful family only",
"source_matrix": "skills/lark-slides/references/beautiful-template-executable-matrix.json",
"status": "passed",
"version": "svglide-beautiful-production-review/v1"
}

View File

@@ -81,6 +81,12 @@ def _as_text(value: Any) -> str | None:
return None
def _string_list(value: Any) -> list[str]:
if not isinstance(value, list):
return []
return [item.strip() for item in value if isinstance(item, str) and item.strip()]
def _collect_selection_values(payload: dict[str, Any]) -> tuple[set[str], set[str], set[str]]:
family_ids: set[str] = set()
template_ids: set[str] = set()
@@ -267,6 +273,21 @@ def check_project_page_family_smoke(
missing_required_roles = [role for role in PRODUCTION_MINIMUM_ROLES if not role_pages[role]]
variants = [page.get("page_variant_id") for page in pages if page.get("page_variant_id")]
variant_counts = Counter(str(variant) for variant in variants)
implemented_page_variants = _string_list(selected.get("implemented_page_variants"))
implemented_variant_set = set(implemented_page_variants)
covered_implemented_page_variants = [
variant_id for variant_id in implemented_page_variants if variant_counts.get(variant_id, 0) > 0
]
missing_implemented_page_variants = [
variant_id for variant_id in implemented_page_variants if variant_counts.get(variant_id, 0) == 0
]
unimplemented_page_variants = sorted(
{
str(variant)
for variant in variants
if implemented_variant_set and str(variant) not in implemented_variant_set
}
)
reuse_count = sum(count - 1 for count in variant_counts.values() if count > 1)
variant_reuse_reasons = [
{"page_variant_id": variant, "reuse_count": count, "reason": "duplicate_variant_in_smoke_deck"}
@@ -282,6 +303,20 @@ def check_project_page_family_smoke(
{"code": "required_role_missing", "message": f"missing required page-family role: {role}"}
for role in missing_required_roles
)
artifact_issues.extend(
{
"code": "implemented_variant_missing",
"message": f"missing implemented page-family variant: {variant_id}",
}
for variant_id in missing_implemented_page_variants
)
artifact_issues.extend(
{
"code": "unimplemented_variant_used",
"message": f"smoke deck uses unimplemented page-family variant: {variant_id}",
}
for variant_id in unimplemented_page_variants
)
input_paths = {
"slide_plan": Path("02-plan/slide_plan.json"),
"generator_receipt": Path("receipts/generate_svg.json"),
@@ -291,6 +326,10 @@ def check_project_page_family_smoke(
}
if family_id:
input_paths["smoke_deck"] = Path(relpath(SMOKE_DECK_DIR / f"{family_id}.json", project))
golden_specs = selected.get("page_variant_golden_specs") if isinstance(selected.get("page_variant_golden_specs"), dict) else {}
for variant_id, raw_path in sorted(golden_specs.items()):
if isinstance(variant_id, str) and isinstance(raw_path, str) and raw_path:
input_paths[f"golden_spec.{variant_id}"] = Path(raw_path)
input_hashes = {
key: (file_sha256(project / rel) if (project / rel).is_file() else file_sha256(Path(rel)) if Path(rel).is_file() else None)
for key, rel in input_paths.items()
@@ -309,6 +348,10 @@ def check_project_page_family_smoke(
"production_minimum_roles": PRODUCTION_MINIMUM_ROLES,
"page_variant_coverage": page_variant_coverage,
"missing_required_roles": missing_required_roles,
"implemented_page_variants": implemented_page_variants,
"covered_implemented_page_variants": covered_implemented_page_variants,
"missing_implemented_page_variants": missing_implemented_page_variants,
"unimplemented_page_variants": unimplemented_page_variants,
"reuse_count": reuse_count,
"variant_reuse_reasons": variant_reuse_reasons,
"degraded": degraded,
@@ -330,6 +373,8 @@ def check_project_page_family_smoke(
"warning_count": reuse_count,
"page_count": len(pages),
"covered_role_count": len(PRODUCTION_MINIMUM_ROLES) - len(missing_required_roles),
"implemented_variant_count": len(implemented_page_variants),
"covered_implemented_variant_count": len(covered_implemented_page_variants),
},
}

View File

@@ -56,8 +56,9 @@ class BeautifulTemplatePageFamilySmokeTest(unittest.TestCase):
roles = [
("cover", "cover"),
("agenda", "agenda"),
("content", "content"),
("content", "dashboard"),
("data", "metrics"),
("data", "bars"),
("comparison", "split"),
("quote", "quote"),
("process", "timeline"),
@@ -73,8 +74,12 @@ class BeautifulTemplatePageFamilySmokeTest(unittest.TestCase):
self.assertEqual(receipt["selected_family_id"], "blue-professional")
self.assertEqual(receipt["selected_template_id"], "executive-dashboard")
self.assertEqual(receipt["selected_theme_id"], "blue-professional")
self.assertEqual(receipt["rendered_pages"], 9)
self.assertEqual(receipt["rendered_pages"], 10)
self.assertEqual(receipt["missing_required_roles"], [])
self.assertEqual(receipt["missing_implemented_page_variants"], [])
self.assertEqual(receipt["unimplemented_page_variants"], [])
self.assertIn("bars", receipt["implemented_page_variants"])
self.assertIn("bars", receipt["covered_implemented_page_variants"])
self.assertFalse(receipt["degraded"])
self.assertEqual(set(receipt["page_variant_coverage"]), set(smoke.PRODUCTION_MINIMUM_ROLES))
self.assertIn("slide_plan", receipt["input_hashes"])
@@ -82,6 +87,32 @@ class BeautifulTemplatePageFamilySmokeTest(unittest.TestCase):
self.assertIsInstance(receipt["command"], list)
self.assertIsInstance(receipt["provenance"], dict)
def test_blue_professional_smoke_requires_every_implemented_variant(self) -> None:
with tempfile.TemporaryDirectory() as tmpdir:
project = Path(tmpdir)
roles = [
("cover", "cover"),
("agenda", "agenda"),
("content", "dashboard"),
("data", "metrics"),
("comparison", "split"),
("quote", "quote"),
("process", "timeline"),
("detail", "detail"),
("closing", "closing"),
]
write_smoke_plan(project, roles)
receipt = smoke.check_project_page_family_smoke(project)
self.assertEqual(receipt["status"], "failed")
self.assertTrue(receipt["degraded"])
self.assertIn("bars", receipt["missing_implemented_page_variants"])
self.assertIn(
"implemented_variant_missing",
{item["code"] for item in receipt["artifact_issues"]},
)
def test_missing_required_role_degrades_and_fails(self) -> None:
with tempfile.TemporaryDirectory() as tmpdir:
project = Path(tmpdir)

View File

@@ -0,0 +1,388 @@
#!/usr/bin/env python3
# Copyright (c) 2026 Lark Technologies Pte. Ltd.
# SPDX-License-Identifier: MIT
from __future__ import annotations
import argparse
import hashlib
import html
import json
from pathlib import Path
from typing import Any
SCRIPT_DIR = Path(__file__).resolve().parent
REPO_ROOT = SCRIPT_DIR.parents[2]
REFERENCES_DIR = SCRIPT_DIR.parent / "references"
SOURCE_ROOT = Path("/Users/bytedance/bd-projects/beautiful-html-templates")
MATRIX_PATH = REFERENCES_DIR / "beautiful-template-executable-matrix.json"
DEFAULT_OUTPUT_DIR = REFERENCES_DIR / "production-review" / "beautiful"
GENERATOR_VERSION = "svglide-beautiful-production-review-gallery/v1"
def read_json(path: Path) -> dict[str, Any]:
payload = json.loads(path.read_text(encoding="utf-8"))
if not isinstance(payload, dict):
raise ValueError(f"expected JSON object: {path}")
return payload
def read_json_optional(path: Path | None) -> dict[str, Any]:
if path is None or not path.exists():
return {}
try:
return read_json(path)
except (OSError, json.JSONDecodeError, ValueError):
return {}
def file_sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as handle:
for chunk in iter(lambda: handle.read(1024 * 1024), b""):
digest.update(chunk)
return digest.hexdigest()
def optional_sha256(path: Path | None) -> str | None:
return file_sha256(path) if path is not None and path.is_file() else None
def resolve_path(value: object) -> Path | None:
raw = str(value or "").strip()
if not raw:
return None
path = Path(raw)
if path.is_absolute():
return path
if raw.startswith(f"{SOURCE_ROOT.name}/"):
return SOURCE_ROOT.parent / raw
if raw.startswith("screenshots/") or raw.startswith("templates/"):
return SOURCE_ROOT / raw
return REPO_ROOT / raw
def relpath(path: Path | None, base: Path = REPO_ROOT) -> str | None:
if path is None:
return None
try:
return path.resolve().relative_to(base.resolve()).as_posix()
except ValueError:
return path.as_posix()
def matrix_rows() -> list[dict[str, Any]]:
payload = read_json(MATRIX_PATH)
rows = payload.get("candidates")
if not isinstance(rows, list):
raise ValueError("beautiful-template-executable-matrix.json must contain candidates[]")
return [row for row in rows if isinstance(row, dict)]
def matrix_status_counts() -> dict[str, int]:
rows = matrix_rows()
return {
"candidate_count": len(rows),
"default_selectable_count": sum(1 for row in rows if row.get("default_selectable") is True),
"production_count": sum(1 for row in rows if row.get("promotion_status") == "production"),
"production_default_selectable_count": sum(
1
for row in rows
if row.get("promotion_status") == "production" and row.get("default_selectable") is True
),
}
def _as_list(value: object) -> list[Any]:
return value if isinstance(value, list) else []
def _as_dict(value: object) -> dict[str, Any]:
return value if isinstance(value, dict) else {}
def _visual_contract(row: dict[str, Any]) -> tuple[dict[str, Any], Path | None]:
path = resolve_path(row.get("visual_contract_path") or _as_dict(row.get("visual_contract")).get("path"))
return read_json_optional(path), path
def _variant_records(contract: dict[str, Any], row: dict[str, Any]) -> list[dict[str, Any]]:
variants = contract.get("page_variants")
if isinstance(variants, dict):
return [
{
"page_variant_id": str(variant_id),
"page_role": value.get("page_role") if isinstance(value, dict) else None,
"source_class": value.get("source_class") if isinstance(value, dict) else None,
"source_slide_index": value.get("source_slide_index") if isinstance(value, dict) else None,
}
for variant_id, value in sorted(variants.items())
]
source_variants = row.get("source_page_variants")
if isinstance(source_variants, list):
return [
{
"page_variant_id": str(item.get("variant_id") or item.get("page_variant_id") or item.get("source_class")),
"page_role": item.get("page_role"),
"source_class": item.get("source_class"),
"source_slide_index": item.get("source_slide_index"),
}
for item in source_variants
if isinstance(item, dict)
]
page_type = contract.get("page_type")
layout_variants = page_type.get("layout_variants") if isinstance(page_type, dict) else None
if isinstance(layout_variants, list):
return [
{
"page_variant_id": str(item.get("variant_id") or item.get("source_class")),
"page_role": None,
"source_class": item.get("source_class"),
"source_slide_index": item.get("source_slide_index"),
}
for item in layout_variants
if isinstance(item, dict)
]
return []
def _smoke_summary(row: dict[str, Any]) -> dict[str, Any]:
deck_path = resolve_path(row.get("page_family_smoke_deck"))
receipt_path = resolve_path(row.get("page_family_smoke_receipt"))
receipt = read_json_optional(receipt_path)
status = str(receipt.get("status") or "missing")
if not receipt_path or not receipt_path.is_file():
status = "missing"
return {
"artifact_kind": "page-family-smoke",
"status": status,
"deck_path": row.get("page_family_smoke_deck"),
"deck_sha256": optional_sha256(deck_path),
"receipt_path": row.get("page_family_smoke_receipt"),
"receipt_sha256": optional_sha256(receipt_path),
"degraded": bool(receipt.get("degraded")) if receipt else None,
"rendered_pages": receipt.get("rendered_pages"),
"page_variant_coverage": receipt.get("page_variant_coverage") if isinstance(receipt.get("page_variant_coverage"), dict) else {},
"missing_required_roles": _as_list(receipt.get("missing_required_roles")),
"input_hashes": _as_dict(receipt.get("input_hashes")),
}
def _fidelity_summary(row: dict[str, Any]) -> dict[str, Any]:
gate = _as_dict(row.get("fidelity_gate"))
receipt_path = resolve_path(row.get("fidelity_receipt") or gate.get("receipt_path"))
receipt = read_json_optional(receipt_path)
return {
"status": gate.get("status") or receipt.get("status") or "missing",
"score": gate.get("score") if gate.get("score") is not None else receipt.get("score"),
"threshold": gate.get("threshold") if gate.get("threshold") is not None else receipt.get("threshold"),
"receipt_path": row.get("fidelity_receipt") or gate.get("receipt_path"),
"receipt_sha256": optional_sha256(receipt_path),
}
def _promotion_gate_summary(row: dict[str, Any]) -> dict[str, Any]:
gate = _as_dict(row.get("page_family_promotion_gate"))
return {
"status": gate.get("status") or "missing",
"required_evidence": _as_list(gate.get("required_evidence")),
"claim_boundary": gate.get("claim_boundary"),
}
def _known_blockers(row: dict[str, Any], smoke: dict[str, Any], variant_count: int) -> list[str]:
blockers = [str(item) for item in _as_list(row.get("blocking_issues")) if str(item)]
if variant_count <= 0:
blockers.append("page_variants_missing")
if smoke.get("status") != "passed":
blockers.append("page_family_smoke_missing_or_failed")
if row.get("promotion_status") != "production":
blockers.append("production_review_pending")
return sorted(set(blockers))
def _family_review(row: dict[str, Any]) -> dict[str, Any]:
contract, contract_path = _visual_contract(row)
variant_records = _variant_records(contract, row)
smoke = _smoke_summary(row)
fidelity = _fidelity_summary(row)
promotion_gate = _promotion_gate_summary(row)
implemented_variants = [str(item) for item in _as_list(row.get("implemented_page_variants")) if str(item)]
family_id = str(row.get("family_id") or "")
runtime_template_id = str(row.get("runtime_template_id") or row.get("template_id") or "")
blockers = _known_blockers(row, smoke, len(variant_records))
return {
"artifact_kind": "production_review_family_card",
"family_id": family_id,
"runtime_template_id": runtime_template_id,
"template_id": row.get("template_id"),
"visual_contract_path": row.get("visual_contract_path") or _as_dict(row.get("visual_contract")).get("path"),
"visual_contract_sha256": optional_sha256(contract_path),
"reference_screenshot": row.get("reference_screenshot"),
"reference_screenshot_sha256": optional_sha256(resolve_path(row.get("reference_screenshot"))),
"promotion_status": row.get("promotion_status"),
"default_selectable": row.get("default_selectable") is True,
"page_variant_count": len(variant_records),
"page_variants": variant_records,
"implemented_page_variants": implemented_variants,
"implemented_page_variant_count": len(implemented_variants),
"smoke_status": smoke["status"],
"smoke": smoke,
"fidelity_status": fidelity["status"],
"fidelity": fidelity,
"page_family_promotion_gate_status": promotion_gate["status"],
"page_family_promotion_gate": promotion_gate,
"known_blockers": blockers,
"review_decision": "pending_review",
"review_claim_boundary": "gallery_input_only_not_promotion_receipt",
}
def build_gallery_manifest() -> dict[str, Any]:
rows = sorted(matrix_rows(), key=lambda row: str(row.get("family_id") or ""))
families = [_family_review(row) for row in rows]
counts = matrix_status_counts()
smoke_status_counts: dict[str, int] = {}
for family in families:
status = str(family.get("smoke_status") or "missing")
smoke_status_counts[status] = smoke_status_counts.get(status, 0) + 1
return {
"schema_version": GENERATOR_VERSION,
"artifact_kind": "production_review_gallery",
"not_promotion_receipt": True,
"generated_by": "beautiful_template_production_review_gallery.py",
"source_matrix": relpath(MATRIX_PATH),
"source_matrix_sha256": file_sha256(MATRIX_PATH),
"summary": {
**counts,
"smoke_status_counts": smoke_status_counts,
"review_pending_count": len(families),
"families_with_implemented_page_variants": sum(
1 for family in families if family["implemented_page_variant_count"] > 0
),
},
"policy": {
"gallery_is_review_input_only": True,
"does_not_modify_matrix": True,
"does_not_promote_family": True,
"promotion_requires_separate_review_receipt": True,
},
"families": families,
}
def _render_html(manifest: dict[str, Any]) -> str:
summary = manifest["summary"]
rows = []
for family in manifest["families"]:
blocker_text = ", ".join(family["known_blockers"]) or "none"
rows.append(
"<tr>"
f"<td><strong>{html.escape(family['family_id'])}</strong><br><small>{html.escape(family['runtime_template_id'])}</small></td>"
f"<td>{html.escape(str(family['promotion_status']))}<br><small>default={html.escape(str(family['default_selectable']).lower())}</small></td>"
f"<td>{family['page_variant_count']} source<br><small>{family['implemented_page_variant_count']} implemented</small></td>"
f"<td>{html.escape(str(family['smoke_status']))}<br><small>{html.escape(str(family['smoke'].get('rendered_pages') or ''))} pages</small></td>"
f"<td>{html.escape(str(family['fidelity_status']))}</td>"
f"<td>{html.escape(str(family['page_family_promotion_gate_status']))}</td>"
f"<td>{html.escape(blocker_text)}</td>"
f"<td><code>{html.escape(str(family['visual_contract_path']))}</code><br><code>{html.escape(str(family['reference_screenshot']))}</code></td>"
"</tr>"
)
return """<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>SVGlide Beautiful Production Review Gallery</title>
<style>
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; margin: 32px; color: #172033; background: #f7f8fb; }
header { max-width: 1180px; margin-bottom: 24px; }
h1 { margin: 0 0 8px; font-size: 28px; }
.warning { background: #fff6d6; border: 1px solid #e7c95b; padding: 12px 14px; border-radius: 8px; }
.summary { display: flex; gap: 12px; flex-wrap: wrap; margin: 18px 0; }
.metric { background: #fff; border: 1px solid #dbe1ea; border-radius: 8px; padding: 10px 12px; min-width: 150px; }
.metric strong { display: block; font-size: 22px; }
table { border-collapse: collapse; width: 100%%; background: #fff; border: 1px solid #dbe1ea; }
th, td { border-bottom: 1px solid #e5e9f0; padding: 10px; text-align: left; vertical-align: top; font-size: 13px; }
th { background: #eef2f7; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
code { font-size: 11px; color: #4a5870; word-break: break-all; }
small { color: #65728a; }
</style>
</head>
<body>
<header>
<h1>SVGlide Beautiful Production Review Gallery</h1>
<div class="warning">This gallery is review input only. It is not a promotion receipt and does not change production/default_selectable status.</div>
<div class="summary">
<div class="metric"><strong>%(candidate_count)s</strong>candidates</div>
<div class="metric"><strong>%(production_default)s</strong>production + default</div>
<div class="metric"><strong>%(default_count)s</strong>default selectable</div>
<div class="metric"><strong>%(smoke_counts)s</strong>smoke status counts</div>
</div>
</header>
<table>
<thead>
<tr>
<th>Family</th>
<th>Status</th>
<th>Variants</th>
<th>Smoke</th>
<th>Fidelity</th>
<th>Gate</th>
<th>Known Blockers</th>
<th>Evidence</th>
</tr>
</thead>
<tbody>
%(rows)s
</tbody>
</table>
</body>
</html>
""" % {
"candidate_count": html.escape(str(summary["candidate_count"])),
"production_default": html.escape(str(summary["production_default_selectable_count"])),
"default_count": html.escape(str(summary["default_selectable_count"])),
"smoke_counts": html.escape(json.dumps(summary["smoke_status_counts"], sort_keys=True)),
"rows": "\n".join(rows),
}
def write_gallery_artifacts(output_dir: Path = DEFAULT_OUTPUT_DIR) -> dict[str, Any]:
output_dir.mkdir(parents=True, exist_ok=True)
families_dir = output_dir / "families"
families_dir.mkdir(parents=True, exist_ok=True)
manifest = build_gallery_manifest()
for family in manifest["families"]:
family_path = families_dir / f"{family['family_id']}.json"
family["review_artifact_path"] = relpath(family_path, output_dir)
family_path.write_text(json.dumps(family, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
manifest_path = output_dir / "manifest.json"
html_path = output_dir / "index.html"
manifest_path.write_text(json.dumps(manifest, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
html_path.write_text(_render_html(manifest), encoding="utf-8")
return {
"manifest_path": str(manifest_path),
"html_path": str(html_path),
"candidate_count": manifest["summary"]["candidate_count"],
"production_default_selectable_count": manifest["summary"]["production_default_selectable_count"],
"default_selectable_count": manifest["summary"]["default_selectable_count"],
}
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--output-dir", default=str(DEFAULT_OUTPUT_DIR))
parser.add_argument("--stdout", action="store_true", help="print manifest only and do not write artifacts")
parser.add_argument("--pretty", action="store_true")
args = parser.parse_args()
if args.stdout:
manifest = build_gallery_manifest()
print(json.dumps(manifest, ensure_ascii=False, indent=2 if args.pretty else None, sort_keys=True))
return 0
result = write_gallery_artifacts(Path(args.output_dir))
print(json.dumps(result, ensure_ascii=False, indent=2 if args.pretty else None, sort_keys=True))
return 0
if __name__ == "__main__":
raise SystemExit(main())

View File

@@ -0,0 +1,100 @@
#!/usr/bin/env python3
# Copyright (c) 2026 Lark Technologies Pte. Ltd.
# SPDX-License-Identifier: MIT
from __future__ import annotations
import json
import sys
import tempfile
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
import beautiful_template_production_review_gallery as gallery
REQUIRED_FAMILY_FIELDS = {
"family_id",
"runtime_template_id",
"visual_contract_path",
"reference_screenshot",
"promotion_status",
"default_selectable",
"page_variant_count",
"implemented_page_variants",
"smoke_status",
}
class BeautifulTemplateProductionReviewGalleryTest(unittest.TestCase):
def test_gallery_manifest_contains_all_34_candidates_with_review_fields(self) -> None:
manifest = gallery.build_gallery_manifest()
self.assertEqual("production_review_gallery", manifest["artifact_kind"])
self.assertTrue(manifest["not_promotion_receipt"])
self.assertEqual(34, manifest["summary"]["candidate_count"])
self.assertEqual(34, len(manifest["families"]))
family_ids = set()
for family in manifest["families"]:
self.assertTrue(REQUIRED_FAMILY_FIELDS.issubset(family), family)
self.assertTrue(family["family_id"])
self.assertTrue(family["runtime_template_id"])
self.assertTrue(family["visual_contract_path"])
self.assertTrue(family["reference_screenshot"])
self.assertIsInstance(family["default_selectable"], bool)
self.assertIsInstance(family["page_variant_count"], int)
self.assertGreater(family["page_variant_count"], 0)
self.assertIsInstance(family["implemented_page_variants"], list)
self.assertIn(family["smoke_status"], {"passed", "failed", "missing"})
self.assertIn(family["review_decision"], {"pending_review"})
family_ids.add(family["family_id"])
self.assertEqual(34, len(family_ids))
def test_blue_professional_smoke_is_evidence_not_promotion_receipt(self) -> None:
manifest = gallery.build_gallery_manifest()
blue = next(item for item in manifest["families"] if item["family_id"] == "blue-professional")
self.assertEqual("executive-dashboard", blue["runtime_template_id"])
self.assertEqual("production", blue["promotion_status"])
self.assertTrue(blue["default_selectable"])
self.assertEqual("passed", blue["smoke_status"])
self.assertEqual("page-family-smoke", blue["smoke"]["artifact_kind"])
self.assertTrue(blue["smoke"]["receipt_path"])
self.assertTrue(blue["smoke"]["receipt_sha256"])
self.assertGreaterEqual(blue["page_variant_count"], 10)
self.assertEqual("production_review_gallery", manifest["artifact_kind"])
self.assertNotEqual("promotion_receipt", blue.get("artifact_kind"))
def test_non_smoke_families_remain_needs_review_and_missing_smoke(self) -> None:
manifest = gallery.build_gallery_manifest()
candidate = next(item for item in manifest["families"] if item["family_id"] == "8-bit-orbit")
self.assertEqual("needs_review", candidate["promotion_status"])
self.assertFalse(candidate["default_selectable"])
self.assertEqual("missing", candidate["smoke_status"])
self.assertIn("production_review_pending", candidate["known_blockers"])
def test_write_artifacts_keeps_production_default_counts_unchanged(self) -> None:
before = gallery.matrix_status_counts()
with tempfile.TemporaryDirectory() as tmpdir:
result = gallery.write_gallery_artifacts(Path(tmpdir))
manifest_path = Path(result["manifest_path"])
html_path = Path(result["html_path"])
self.assertTrue(manifest_path.is_file())
self.assertTrue(html_path.is_file())
manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
after = gallery.matrix_status_counts()
self.assertEqual(before, after)
self.assertEqual(before["production_default_selectable_count"], manifest["summary"]["production_default_selectable_count"])
self.assertEqual(before["default_selectable_count"], manifest["summary"]["default_selectable_count"])
self.assertEqual(34, manifest["summary"]["candidate_count"])
self.assertTrue(manifest["not_promotion_receipt"])
if __name__ == "__main__":
unittest.main()

View File

@@ -6,6 +6,7 @@ from __future__ import annotations
import json
import argparse
import hashlib
from pathlib import Path
from typing import Any
@@ -16,6 +17,7 @@ REFERENCES_DIR = SCRIPT_DIR.parent / "references"
SOURCE_ROOT = Path("/Users/bytedance/bd-projects/beautiful-html-templates")
MATRIX_PATH = REFERENCES_DIR / "beautiful-template-executable-matrix.json"
FAMILIES_PATH = REFERENCES_DIR / "beautiful-html-template-families.json"
PRODUCTION_REVIEW_GALLERY_PATH = REFERENCES_DIR / "production-review" / "beautiful" / "manifest.json"
REQUIRED_MATRIX_FIELDS = {
"family_id",
@@ -196,6 +198,15 @@ PAGE_VARIANT_REQUIRED_FIELDS = {
"source_refs",
"extraction_confidence",
}
PRODUCTION_REVIEW_REQUIRED_EVIDENCE = (
"renderer_module",
"golden_spec",
"page_variant_golden_specs",
"fidelity_receipt",
"page_family_smoke_deck",
"page_family_smoke_receipt",
"visual_contract_path",
)
def read_json(path: Path) -> dict[str, Any]:
@@ -212,6 +223,10 @@ def read_json_or_empty(path: Path) -> dict[str, Any]:
return {}
def file_sha256(path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
def resolve_path(value: object) -> Path:
raw = str(value or "")
path = Path(raw)
@@ -232,6 +247,12 @@ def is_non_empty(value: object) -> bool:
return value is not None
def string_list(value: object) -> list[str]:
if not isinstance(value, list):
return []
return [item.strip() for item in value if isinstance(item, str) and item.strip()]
def source_paths_for_family(family: dict[str, Any]) -> dict[str, str]:
source = family.get("source") if isinstance(family.get("source"), dict) else {}
return {
@@ -480,6 +501,33 @@ def validate_page_family_candidate(row: dict[str, Any]) -> list[dict[str, str]]:
issues.append(issue("page_family_smoke_receipt_input_hashes_missing", "page_family_smoke_receipt must include non-empty input_hashes", family_id=family_id, path="page_family_smoke_receipt.input_hashes"))
if not isinstance(receipt.get("provenance"), dict) or not receipt.get("provenance"):
issues.append(issue("page_family_smoke_receipt_provenance_missing", "page_family_smoke_receipt must include provenance", family_id=family_id, path="page_family_smoke_receipt.provenance"))
implemented_variants = string_list(row.get("implemented_page_variants"))
if implemented_variants:
pages = receipt.get("pages") if isinstance(receipt.get("pages"), list) else []
receipt_variants = {
str(page.get("page_variant_id")).strip()
for page in pages
if isinstance(page, dict) and is_non_empty(page.get("page_variant_id"))
}
for variant_id in implemented_variants:
if variant_id not in receipt_variants:
issues.append(
issue(
"page_family_smoke_receipt_missing_implemented_variant",
"page_family_smoke_receipt pages must cover every implemented page variant",
family_id=family_id,
path=f"page_family_smoke_receipt.pages.{variant_id}",
)
)
for variant_id in sorted(receipt_variants - set(implemented_variants)):
issues.append(
issue(
"page_family_smoke_receipt_uses_unimplemented_variant",
"page_family_smoke_receipt pages must not use variants outside implemented_page_variants",
family_id=family_id,
path=f"page_family_smoke_receipt.pages.{variant_id}",
)
)
if isinstance(golden_specs, dict):
for variant_id, raw_path in sorted(golden_specs.items()):
if not is_non_empty(raw_path) or not resolve_path(raw_path).is_file():
@@ -512,6 +560,290 @@ def validate_page_family_candidate(row: dict[str, Any]) -> list[dict[str, str]]:
return issues
def production_review_expected_evidence(row: dict[str, Any]) -> tuple[dict[str, Any], list[dict[str, str]]]:
family_id = str(row.get("family_id") or "")
evidence: dict[str, Any] = {}
issues: list[dict[str, str]] = []
for key in PRODUCTION_REVIEW_REQUIRED_EVIDENCE:
value = row.get(key)
if not is_non_empty(value):
issues.append(
issue(
"candidate_production_review_evidence_missing",
f"production review requires {key}",
family_id=family_id,
path=key,
)
)
continue
evidence[key] = value
return evidence, issues
def production_review_expected_hashes(evidence: dict[str, Any]) -> dict[str, str]:
hashes: dict[str, str] = {}
for key, value in sorted(evidence.items()):
if isinstance(value, str):
path = resolve_path(value)
if path.is_file():
hashes[key] = file_sha256(path)
elif isinstance(value, dict):
for nested_key, nested_value in sorted(value.items()):
path = resolve_path(nested_value)
if path.is_file():
hashes[f"{key}.{nested_key}"] = file_sha256(path)
return hashes
def _production_review_gallery_path(row: dict[str, Any]) -> Path:
gallery = row.get("production_review_gallery")
if isinstance(gallery, dict) and is_non_empty(gallery.get("manifest_path")):
return resolve_path(gallery.get("manifest_path"))
if is_non_empty(row.get("production_review_gallery_manifest")):
return resolve_path(row.get("production_review_gallery_manifest"))
return PRODUCTION_REVIEW_GALLERY_PATH
def validate_pending_production_review_gallery(row: dict[str, Any], *, matrix_path: Path) -> tuple[bool, list[dict[str, str]]]:
family_id = str(row.get("family_id") or "")
runtime_template_id = str(row.get("runtime_template_id") or "")
manifest_path = _production_review_gallery_path(row)
issues: list[dict[str, str]] = []
if not manifest_path.is_file():
return False, issues
manifest = read_json_or_empty(manifest_path)
if not manifest:
issues.append(
issue(
"candidate_production_review_gallery_invalid",
"production review gallery manifest must be readable JSON object",
family_id=family_id,
path="production_review_gallery",
)
)
return False, issues
if manifest.get("artifact_kind") != "production_review_gallery" or manifest.get("not_promotion_receipt") is not True:
issues.append(
issue(
"candidate_production_review_gallery_claim_invalid",
"production review gallery must be marked as review input only and not a promotion receipt",
family_id=family_id,
path="production_review_gallery.not_promotion_receipt",
)
)
if manifest.get("source_matrix_sha256") != file_sha256(matrix_path):
issues.append(
issue(
"candidate_production_review_gallery_stale",
"production review gallery source_matrix_sha256 must match the current matrix",
family_id=family_id,
path="production_review_gallery.source_matrix_sha256",
)
)
families = manifest.get("families") if isinstance(manifest.get("families"), list) else []
card = next(
(
item
for item in families
if isinstance(item, dict)
and item.get("family_id") == family_id
and item.get("runtime_template_id") == runtime_template_id
),
None,
)
if not isinstance(card, dict):
issues.append(
issue(
"candidate_production_review_gallery_family_missing",
"production review gallery must include the production/default family card",
family_id=family_id,
path="production_review_gallery.families",
)
)
return False, issues
if card.get("review_decision") != "pending_review":
issues.append(
issue(
"candidate_production_review_gallery_decision_invalid",
"production review gallery card must remain pending_review until a separate production receipt exists",
family_id=family_id,
path="production_review_gallery.review_decision",
)
)
if card.get("artifact_kind") == "promotion_receipt":
issues.append(
issue(
"candidate_production_review_gallery_card_claim_invalid",
"production review gallery family card must not be a promotion receipt",
family_id=family_id,
path="production_review_gallery.families.artifact_kind",
)
)
if card.get("promotion_status") != row.get("promotion_status") or card.get("default_selectable") != (row.get("default_selectable") is True):
issues.append(
issue(
"candidate_production_review_gallery_status_mismatch",
"production review gallery card status must match the candidate matrix",
family_id=family_id,
path="production_review_gallery.families.status",
)
)
return not issues, issues
def validate_production_review_receipt(row: dict[str, Any], *, matrix_path: Path = MATRIX_PATH) -> list[dict[str, str]]:
family_id = str(row.get("family_id") or "")
issues: list[dict[str, str]] = []
evidence, evidence_issues = production_review_expected_evidence(row)
issues.extend(evidence_issues)
receipt_ref = row.get("production_review_receipt")
if not is_non_empty(receipt_ref):
gallery_ok, gallery_issues = validate_pending_production_review_gallery(row, matrix_path=matrix_path)
if gallery_ok:
return issues
issues.extend(gallery_issues)
issues.append(
issue(
"candidate_production_review_receipt_missing",
"production/default selectable beautiful family must have a production review receipt",
family_id=family_id,
path="production_review_receipt",
)
)
return issues
receipt_path = resolve_path(receipt_ref)
if not receipt_path.is_file():
issues.append(
issue(
"candidate_production_review_receipt_missing_file",
"production_review_receipt must point to an existing receipt",
family_id=family_id,
path="production_review_receipt",
)
)
return issues
receipt = read_json_or_empty(receipt_path)
if not receipt:
issues.append(
issue(
"candidate_production_review_receipt_invalid",
"production_review_receipt must be readable JSON object",
family_id=family_id,
path="production_review_receipt",
)
)
return issues
if receipt.get("status") != "passed":
issues.append(
issue(
"candidate_production_review_receipt_not_passed",
"production_review_receipt.status must be passed",
family_id=family_id,
path="production_review_receipt.status",
)
)
if receipt.get("family_id") != row.get("family_id"):
issues.append(
issue(
"candidate_production_review_receipt_family_mismatch",
"production_review_receipt.family_id must match candidate",
family_id=family_id,
path="production_review_receipt.family_id",
)
)
if receipt.get("runtime_template_id") != row.get("runtime_template_id"):
issues.append(
issue(
"candidate_production_review_receipt_template_mismatch",
"production_review_receipt.runtime_template_id must match candidate",
family_id=family_id,
path="production_review_receipt.runtime_template_id",
)
)
if receipt.get("review_type") != "production_promotion":
issues.append(
issue(
"candidate_production_review_receipt_type_invalid",
"production_review_receipt.review_type must be production_promotion",
family_id=family_id,
path="production_review_receipt.review_type",
)
)
decision = receipt.get("review_decision") if isinstance(receipt.get("review_decision"), dict) else {}
if decision.get("allow_production") is not True or decision.get("allow_default_selectable") is not True:
issues.append(
issue(
"candidate_production_review_decision_invalid",
"production_review_receipt.review_decision must explicitly allow production and default selectable",
family_id=family_id,
path="production_review_receipt.review_decision",
)
)
claim_boundary = str(receipt.get("claim_boundary") or "").lower()
if "does not replace" not in claim_boundary or "fidelity" not in claim_boundary:
issues.append(
issue(
"candidate_production_review_claim_boundary_invalid",
"production_review_receipt must state it does not replace fidelity",
family_id=family_id,
path="production_review_receipt.claim_boundary",
)
)
receipt_evidence = receipt.get("required_evidence")
if not isinstance(receipt_evidence, dict):
issues.append(
issue(
"candidate_production_review_required_evidence_missing",
"production_review_receipt.required_evidence must be an object",
family_id=family_id,
path="production_review_receipt.required_evidence",
)
)
receipt_evidence = {}
for key, expected_value in sorted(evidence.items()):
if receipt_evidence.get(key) != expected_value:
issues.append(
issue(
"candidate_production_review_required_evidence_mismatch",
"production_review_receipt.required_evidence must match candidate matrix evidence",
family_id=family_id,
path=f"production_review_receipt.required_evidence.{key}",
)
)
input_hashes = receipt.get("input_hashes")
if not isinstance(input_hashes, dict) or not input_hashes:
issues.append(
issue(
"candidate_production_review_input_hashes_missing",
"production_review_receipt.input_hashes must be a non-empty object",
family_id=family_id,
path="production_review_receipt.input_hashes",
)
)
input_hashes = {}
for key, expected_hash in sorted(production_review_expected_hashes(evidence).items()):
actual_hash = input_hashes.get(key)
if not is_non_empty(actual_hash):
issues.append(
issue(
"candidate_production_review_input_hash_missing",
"production_review_receipt.input_hashes must include every evidence file",
family_id=family_id,
path=f"production_review_receipt.input_hashes.{key}",
)
)
elif actual_hash != expected_hash:
issues.append(
issue(
"candidate_production_review_receipt_stale",
"production_review_receipt.input_hashes must match current evidence files",
family_id=family_id,
path=f"production_review_receipt.input_hashes.{key}",
)
)
return issues
def _role_font_name(value: object) -> str:
if isinstance(value, str):
return value.strip()
@@ -830,6 +1162,7 @@ def validate_candidate_matrix(
if not resolve_path(row.get(key)).is_file():
issues.append(issue("candidate_production_evidence_missing_file", f"production candidate.{key} must exist", family_id=family_id, path=key))
issues.extend(validate_production_role_consumption(row))
issues.extend(validate_production_review_receipt(row, matrix_path=matrix_path))
if status not in PRODUCTION_STATUSES or not is_default:
issues.append(issue("candidate_production_status_inconsistent", "production candidates must be default selectable and vice versa", family_id=family_id))
elif status not in NON_PRODUCTION_STATUSES:

View File

@@ -5,6 +5,7 @@
from __future__ import annotations
import json
import hashlib
import sys
import tempfile
import unittest
@@ -24,6 +25,46 @@ def write_json(path: Path, payload: dict[str, object]) -> None:
path.write_text(json.dumps(payload, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
def file_sha256(path: Path) -> str:
return hashlib.sha256(path.read_bytes()).hexdigest()
def production_review_receipt_for_row(row: dict[str, object], *, status: str = "passed") -> dict[str, object]:
evidence = {
"renderer_module": row.get("renderer_module"),
"golden_spec": row.get("golden_spec"),
"fidelity_receipt": row.get("fidelity_receipt"),
"page_family_smoke_deck": row.get("page_family_smoke_deck"),
"page_family_smoke_receipt": row.get("page_family_smoke_receipt"),
"visual_contract_path": row.get("visual_contract_path"),
}
golden_specs = row.get("page_variant_golden_specs")
if isinstance(golden_specs, dict):
evidence["page_variant_golden_specs"] = golden_specs
input_hashes: dict[str, str] = {}
for key, raw_path in evidence.items():
if isinstance(raw_path, str) and raw_path:
input_hashes[key] = file_sha256(lint.resolve_path(raw_path))
elif isinstance(raw_path, dict):
for variant_id, variant_path in raw_path.items():
input_hashes[f"{key}.{variant_id}"] = file_sha256(lint.resolve_path(variant_path))
return {
"version": "svglide-beautiful-production-review/v1",
"family_id": row.get("family_id"),
"runtime_template_id": row.get("runtime_template_id"),
"status": status,
"review_type": "production_promotion",
"review_decision": {
"allow_production": status == "passed",
"allow_default_selectable": status == "passed",
},
"required_evidence": evidence,
"input_hashes": input_hashes,
"scope": "production review receipt fixture for lint tests",
"claim_boundary": "human/production review evidence only; does not replace fidelity or page-family smoke",
}
def minimal_page_family_contract() -> dict[str, object]:
return {
"family_id": "blue-professional",
@@ -199,6 +240,28 @@ class BeautifulTemplateVisualContractLintTest(unittest.TestCase):
{(item.get("code"), item.get("family_id"), item.get("path")) for item in issues},
)
def test_strict_page_family_matrix_lint_blocks_smoke_receipt_missing_implemented_variant(self) -> None:
matrix = json.loads((REFERENCES_DIR / "beautiful-template-executable-matrix.json").read_text(encoding="utf-8"))
row = next(item for item in matrix["candidates"] if item["promotion_status"] == "production")
receipt = json.loads(lint.resolve_path(row["page_family_smoke_receipt"]).read_text(encoding="utf-8"))
receipt["pages"] = [
page for page in receipt["pages"] if page.get("page_variant_id") != "bars"
]
with tempfile.TemporaryDirectory() as tmp:
tmp_path = Path(tmp)
receipt_path = tmp_path / "smoke.json"
write_json(receipt_path, receipt)
row["page_family_smoke_receipt"] = receipt_path.as_posix()
matrix_path = tmp_path / "matrix.json"
write_json(matrix_path, matrix)
issues = lint.validate_candidate_matrix(matrix_path=matrix_path, page_family_mode="strict")
self.assertIn(
("page_family_smoke_receipt_missing_implemented_variant", row["family_id"], "page_family_smoke_receipt.pages.bars"),
{(item.get("code"), item.get("family_id"), item.get("path")) for item in issues},
)
def test_lint_rejects_candidate_missing_font_typography_text_style_strategy(self) -> None:
matrix = json.loads((REFERENCES_DIR / "beautiful-template-executable-matrix.json").read_text(encoding="utf-8"))
family = matrix["candidates"][0]["family_id"]
@@ -444,6 +507,79 @@ class BeautifulTemplateVisualContractLintTest(unittest.TestCase):
{(item.get("code"), item.get("family_id"), item.get("path")) for item in issues},
)
def test_lint_blocks_default_selectable_without_production_review_receipt(self) -> None:
matrix = json.loads((REFERENCES_DIR / "beautiful-template-executable-matrix.json").read_text(encoding="utf-8"))
row = next(item for item in matrix["candidates"] if item["promotion_status"] == "production")
row.pop("production_review_receipt", None)
with tempfile.TemporaryDirectory() as tmp:
matrix_path = Path(tmp) / "matrix.json"
write_json(matrix_path, matrix)
issues = lint.validate_candidate_matrix(matrix_path=matrix_path)
self.assertIn(
("candidate_production_review_receipt_missing", row["family_id"], "production_review_receipt"),
{(item.get("code"), item.get("family_id"), item.get("path")) for item in issues},
)
def test_lint_blocks_default_selectable_with_failed_production_review_receipt(self) -> None:
matrix = json.loads((REFERENCES_DIR / "beautiful-template-executable-matrix.json").read_text(encoding="utf-8"))
row = next(item for item in matrix["candidates"] if item["promotion_status"] == "production")
receipt = production_review_receipt_for_row(row, status="failed")
with tempfile.TemporaryDirectory() as tmp:
tmp_path = Path(tmp)
receipt_path = tmp_path / "production-review.json"
write_json(receipt_path, receipt)
row["production_review_receipt"] = receipt_path.as_posix()
matrix_path = tmp_path / "matrix.json"
write_json(matrix_path, matrix)
issues = lint.validate_candidate_matrix(matrix_path=matrix_path)
self.assertIn(
("candidate_production_review_receipt_not_passed", row["family_id"], "production_review_receipt.status"),
{(item.get("code"), item.get("family_id"), item.get("path")) for item in issues},
)
def test_lint_blocks_default_selectable_with_stale_production_review_receipt(self) -> None:
matrix = json.loads((REFERENCES_DIR / "beautiful-template-executable-matrix.json").read_text(encoding="utf-8"))
row = next(item for item in matrix["candidates"] if item["promotion_status"] == "production")
receipt = production_review_receipt_for_row(row)
receipt["input_hashes"]["renderer_module"] = "stale"
with tempfile.TemporaryDirectory() as tmp:
tmp_path = Path(tmp)
receipt_path = tmp_path / "production-review.json"
write_json(receipt_path, receipt)
row["production_review_receipt"] = receipt_path.as_posix()
matrix_path = tmp_path / "matrix.json"
write_json(matrix_path, matrix)
issues = lint.validate_candidate_matrix(matrix_path=matrix_path)
self.assertIn(
("candidate_production_review_receipt_stale", row["family_id"], "production_review_receipt.input_hashes.renderer_module"),
{(item.get("code"), item.get("family_id"), item.get("path")) for item in issues},
)
def test_lint_does_not_require_production_review_receipt_for_needs_review_family(self) -> None:
matrix = json.loads((REFERENCES_DIR / "beautiful-template-executable-matrix.json").read_text(encoding="utf-8"))
row = next(item for item in matrix["candidates"] if item["promotion_status"] == "needs_review")
row.pop("production_review_receipt", None)
with tempfile.TemporaryDirectory() as tmp:
matrix_path = Path(tmp) / "matrix.json"
write_json(matrix_path, matrix)
issues = lint.validate_candidate_matrix(matrix_path=matrix_path)
self.assertNotIn(
row["family_id"],
{
item.get("family_id")
for item in issues
if str(item.get("code") or "").startswith("candidate_production_review")
},
)
if __name__ == "__main__":
unittest.main()

View File

@@ -43,8 +43,9 @@ def write_selected_beautiful_page_family_plan(project: Path) -> None:
roles = [
("cover", "cover"),
("agenda", "agenda"),
("content", "content"),
("content", "dashboard"),
("data", "metrics"),
("data", "bars"),
("comparison", "split"),
("quote", "quote"),
("process", "timeline"),