release-manifest.json 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. {
  2. "schema": "release-manifest/v0",
  3. "detail_style_baseline": {
  4. "confirmed_by": "用户裁决 2026-09-06 (确认 C1; 删末块与门户一致; 补返回门户/重新选择后冻结)",
  5. "route": "/v2 (8033) → 目标架构 /detail/",
  6. "source": "src/windscada/ui + src/windscada/lang.py",
  7. "git_commit": "db2f7ad5",
  8. "source_blobs_sha16": {
  9. "src/windscada/ui/shell.html": "a8acac8142a4d928",
  10. "src/windscada/ui/app.css": "c49667615c15ffd6",
  11. "src/windscada/ui/app.js": "7b9afa74d6a5c38f",
  12. "src/windscada/ui/charts.js": "aa29b853a9f07d4f",
  13. "src/windscada/ui/build.py": "c5f8fd4edc2227aa",
  14. "src/windscada/lang.py": "c7d0387f4057f11d"
  15. },
  16. "build_cmd": "python -m src.windscada.ui.build zh",
  17. "built": "2026-09-06T22:23",
  18. "artifact_sha256": "4788166ea3cd8e5319f29049669491ea3557d24021a0455ad14f325c12bf6fa3",
  19. "artifact_size": 225088,
  20. "portal_reference_sha256": "6fe7ec7b88d26facad29f3a6b3ff8f37fb18c6b73a4ff9b006e41a018e133aa7",
  21. "portal_tokens": {
  22. "--ground": "#F5F7F8",
  23. "--ink": "#1B2430",
  24. "--accent": "#1F6F8B",
  25. "--line": "#DDE3E8"
  26. },
  27. "css_tokens": {
  28. "--ground": "#F5F7F8",
  29. "--panel": "#FFFFFF",
  30. "--ink": "#1B2430",
  31. "--muted": "#5C6B78",
  32. "--line": "#DDE3E8",
  33. "--hair": "#C9D1D8",
  34. "--accent": "#1F6F8B",
  35. "--accent-deep": "#175A71",
  36. "--accent-soft": "#BFDCE6",
  37. "--wash": "#E8F2F6",
  38. "--critical": "#C8372D",
  39. "--warning": "#D48A1E",
  40. "--good": "#2E8B6A",
  41. "--excellent": "#8FCBB5",
  42. "--sans": "Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft YaHei\",Arial,sans-serif",
  43. "--mono": "\"SF Mono\",Menlo,Consolas,monospace"
  44. },
  45. "n_root_blocks": 2,
  46. "tabs": [
  47. "overview",
  48. "energy",
  49. "component",
  50. "vibration",
  51. "generation",
  52. "fault",
  53. "decision",
  54. "assistant",
  55. "report",
  56. "system"
  57. ],
  58. "nav_zh": [
  59. "总览",
  60. "电量算账",
  61. "部件问题",
  62. "振动融合分析",
  63. "发电性能",
  64. "故障统计",
  65. "检修决策",
  66. "检修助手",
  67. "汇报定制",
  68. "系统维护"
  69. ],
  70. "actions": {
  71. "ui.back_portal": "← 返回门户",
  72. "ui.reselect": "重新选择机组 / 测点",
  73. "ui.back_to": "← 返回{tab}",
  74. "win.label": "时间窗"
  75. },
  76. "dom": {
  77. "shell_ids": [
  78. "top",
  79. "tabs",
  80. "root",
  81. "foot"
  82. ],
  83. "header_controls": [
  84. "backPortal",
  85. "reselect",
  86. "win"
  87. ],
  88. "theme_attr": false,
  89. "lang": "zh"
  90. },
  91. "fingerprint": "b469bc0e8d67d5c2",
  92. "screenshot_note": "2026-09-06 浏览器实测 computed style: --ground #F5F7F8 / --ink #1B2430 / --accent #1F6F8B / --line #DDE3E8, 10 tab, 返回门户 href=/ (?portal= 可覆盖), 重新选择 存在; 像素级截图指纹未建 (无基线截图机制), fingerprint = 令牌+导航+DOM 摘要 sha",
  93. "frozen": [
  94. "色彩令牌",
  95. "字体",
  96. "字号层级/留白/卡片/边框 (app.css)",
  97. "顶部导航与十模块顺序",
  98. "返回门户/重新选择 位置与语义",
  99. "板块框架 (总览…系统维护)"
  100. ],
  101. "allowed_changes": "仅结构化事实契约驱动的数据/时间窗/结论/图表数据/报告文本; 不得改 DOM 布局/CSS 令牌/导航顺序/按钮层级"
  102. },
  103. "content_contract": {
  104. "path": "outputs/rudong/guanlan/facts_contract_v0.json",
  105. "schema": "guanlan-facts-contract/v0",
  106. "version": "v0",
  107. "contract_sha256": "225909ed15911b1c16b9c7884a7d0f0433264ddb7c083c16ab05028ceca9fe1f",
  108. "n_claims": 119,
  109. "by_verdict": {
  110. "定论": 18,
  111. "准定论·预警": 11,
  112. "候选": 62,
  113. "参考": 15,
  114. "INSUFFICIENT": 9,
  115. "撤回": 4
  116. },
  117. "inputs": {
  118. "findings": {
  119. "path": "outputs/rudong/sop/findings.json",
  120. "sha16": "8132848beb62d6ed"
  121. },
  122. "e5": {
  123. "path": "outputs/rudong/paradigm_r1/experiments/E5_coverage_table/底稿.json",
  124. "sha16": "64e04cabe7d6597e"
  125. },
  126. "e3": {
  127. "path": "outputs/rudong/paradigm_r1/experiments/E3_candidate_closure/底稿.json",
  128. "sha16": "0e35d593e415543a"
  129. },
  130. "s0": {
  131. "path": "outputs/rudong/paradigm_r1/experiments/E8_rudong_rebuild/底稿_s0.json",
  132. "sha16": "3bb1aac9084427f0"
  133. }
  134. },
  135. "consumers": {
  136. "portal_claims.json": "63a2029adb4f62a4",
  137. "detail_cards.json": "392ba483b0fa71dc",
  138. "report_summary.md": "ad5b77e9034ab774",
  139. "qa_refs.json": "e8c08f4980e6536c"
  140. },
  141. "rule": "数据/时间窗/结论/图表数据/报告文本只经本契约更新 (build → render); 消费者禁手改 (内嵌 contract sha, check 校验); 探针: probe <claim_id> 四消费者必全变",
  142. "wiring_status": "v0: 四消费者为派生文件; 8033 /api/* 与门户正文尚未切到契约生成 (须改 windscada_serve.py 路由 = 共享脏文件, 待批)",
  143. "renderer": "scripts/guanlan_facts_contract.py",
  144. "ci": "tests/guanlan/test_facts_contract.py (5 项)",
  145. "consumers_wired": {
  146. "8033": [
  147. "/api/facts",
  148. "/api/facts/claim",
  149. "rpt paper rptFacts()"
  150. ],
  151. "portal": "section#contract-claims (findings 页, 注入器幂等)"
  152. }
  153. }
  154. }