agentcss 0.0.0-stage → 0.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/01-tokens/README.md +236 -0
  2. package/01-tokens/behavior/dismissable.js +132 -0
  3. package/01-tokens/behavior/emit.js +76 -0
  4. package/01-tokens/behavior/focus-return.js +81 -0
  5. package/01-tokens/behavior/roving.js +152 -0
  6. package/01-tokens/behavior/typeahead.js +124 -0
  7. package/01-tokens/focus-ring-demo.html +133 -0
  8. package/01-tokens/focus-ring.css +102 -0
  9. package/01-tokens/page.css +244 -0
  10. package/01-tokens/polyfill.js +116 -0
  11. package/01-tokens/responsive-demo.html +171 -0
  12. package/01-tokens/scrollbar-demo.html +194 -0
  13. package/01-tokens/scrollbar.css +179 -0
  14. package/01-tokens/theme-toggle.js +103 -0
  15. package/01-tokens/tokens.css +972 -0
  16. package/01-tokens/typography.css +156 -0
  17. package/02-primitives/badge/README.md +71 -0
  18. package/02-primitives/badge/badge.css +141 -0
  19. package/02-primitives/badge/demo.html +101 -0
  20. package/02-primitives/button/README.md +99 -0
  21. package/02-primitives/button/button.css +353 -0
  22. package/02-primitives/button/demo.html +200 -0
  23. package/02-primitives/card/README.md +145 -0
  24. package/02-primitives/card/card.css +246 -0
  25. package/02-primitives/card/demo.html +170 -0
  26. package/02-primitives/choice/README.md +161 -0
  27. package/02-primitives/choice/choice.css +395 -0
  28. package/02-primitives/choice/demo.html +277 -0
  29. package/02-primitives/combobox/README.md +79 -0
  30. package/02-primitives/combobox/combobox.css +223 -0
  31. package/02-primitives/combobox/combobox.js +485 -0
  32. package/02-primitives/combobox/demo.html +109 -0
  33. package/02-primitives/date-range/README.md +100 -0
  34. package/02-primitives/date-range/date-range.css +206 -0
  35. package/02-primitives/date-range/date-range.js +301 -0
  36. package/02-primitives/date-range/demo.html +104 -0
  37. package/02-primitives/input/README.md +170 -0
  38. package/02-primitives/input/demo.html +246 -0
  39. package/02-primitives/input/input.css +239 -0
  40. package/02-primitives/popover/README.md +80 -0
  41. package/02-primitives/popover/demo.html +150 -0
  42. package/02-primitives/popover/popover.css +187 -0
  43. package/02-primitives/popover/popover.js +331 -0
  44. package/02-primitives/progress/README.md +82 -0
  45. package/02-primitives/progress/demo.html +154 -0
  46. package/02-primitives/progress/progress.css +172 -0
  47. package/02-primitives/select/README.md +95 -0
  48. package/02-primitives/select/demo.html +121 -0
  49. package/02-primitives/select/select.css +151 -0
  50. package/02-primitives/select/select.js +549 -0
  51. package/02-primitives/separator/README.md +63 -0
  52. package/02-primitives/separator/demo.html +84 -0
  53. package/02-primitives/separator/separator.css +73 -0
  54. package/02-primitives/skeleton/README.md +69 -0
  55. package/02-primitives/skeleton/demo.html +110 -0
  56. package/02-primitives/skeleton/skeleton.css +96 -0
  57. package/02-primitives/switch/README.md +65 -0
  58. package/02-primitives/switch/demo.html +115 -0
  59. package/02-primitives/switch/switch.css +370 -0
  60. package/03-patterns/accordion/README.md +121 -0
  61. package/03-patterns/accordion/accordion.css +453 -0
  62. package/03-patterns/accordion/accordion.js +369 -0
  63. package/03-patterns/accordion/demo.html +223 -0
  64. package/03-patterns/content/README.md +103 -0
  65. package/03-patterns/content/content.css +286 -0
  66. package/03-patterns/content/demo.html +88 -0
  67. package/03-patterns/drawer/README.md +79 -0
  68. package/03-patterns/drawer/demo.html +101 -0
  69. package/03-patterns/drawer/drawer.css +129 -0
  70. package/03-patterns/drawer/drawer.js +258 -0
  71. package/03-patterns/dropdown/README.md +78 -0
  72. package/03-patterns/dropdown/demo.html +101 -0
  73. package/03-patterns/dropdown/dropdown.css +135 -0
  74. package/03-patterns/dropdown/dropdown.js +451 -0
  75. package/03-patterns/form-validation/README.md +147 -0
  76. package/03-patterns/form-validation/demo.html +280 -0
  77. package/03-patterns/form-validation/form-validation.css +263 -0
  78. package/03-patterns/list/README.md +150 -0
  79. package/03-patterns/list/demo.html +225 -0
  80. package/03-patterns/list/flip.js +201 -0
  81. package/03-patterns/list/list.css +162 -0
  82. package/03-patterns/nav/README.md +225 -0
  83. package/03-patterns/nav/demo.html +131 -0
  84. package/03-patterns/nav/nav.css +314 -0
  85. package/03-patterns/nav/nav.js +430 -0
  86. package/03-patterns/nav/toc.js +111 -0
  87. package/03-patterns/overlay/README.md +196 -0
  88. package/03-patterns/overlay/demo.html +241 -0
  89. package/03-patterns/overlay/overlay.css +319 -0
  90. package/03-patterns/overlay/overlay.js +563 -0
  91. package/03-patterns/pagination/README.md +114 -0
  92. package/03-patterns/pagination/demo.html +165 -0
  93. package/03-patterns/pagination/pagination.css +195 -0
  94. package/03-patterns/pagination/pagination.js +395 -0
  95. package/03-patterns/reveal/README.md +91 -0
  96. package/03-patterns/reveal/demo.html +106 -0
  97. package/03-patterns/reveal/reveal.css +93 -0
  98. package/03-patterns/reveal/reveal.js +172 -0
  99. package/03-patterns/states/README.md +141 -0
  100. package/03-patterns/states/demo.html +240 -0
  101. package/03-patterns/states/states.css +252 -0
  102. package/03-patterns/tabs/README.md +84 -0
  103. package/03-patterns/tabs/demo.html +139 -0
  104. package/03-patterns/tabs/tabs.css +172 -0
  105. package/03-patterns/tabs/tabs.js +307 -0
  106. package/03-patterns/tooltip/README.md +96 -0
  107. package/03-patterns/tooltip/demo.html +78 -0
  108. package/03-patterns/tooltip/tooltip.css +89 -0
  109. package/03-patterns/tooltip/tooltip.js +288 -0
  110. package/03-patterns/tree/README.md +94 -0
  111. package/03-patterns/tree/demo.html +138 -0
  112. package/03-patterns/tree/tree.css +113 -0
  113. package/03-patterns/tree/tree.js +456 -0
  114. package/04-recipes/analysis-report/README.md +80 -0
  115. package/04-recipes/analysis-report/analysis-report.css +187 -0
  116. package/04-recipes/analysis-report/demo.html +274 -0
  117. package/04-recipes/data-showcase/README.md +45 -0
  118. package/04-recipes/data-showcase/demo.html +247 -0
  119. package/04-recipes/detail-page/README.md +93 -0
  120. package/04-recipes/detail-page/demo.html +55 -0
  121. package/04-recipes/detail-page/detail-page.css +190 -0
  122. package/04-recipes/detail-page/full.html +60 -0
  123. package/04-recipes/detail-page/null.html +60 -0
  124. package/04-recipes/detail-page/partial.html +60 -0
  125. package/04-recipes/detail-page/verify-skeleton.py +19 -0
  126. package/04-recipes/longform/README.md +93 -0
  127. package/04-recipes/longform/agc-memory.svg +4 -0
  128. package/04-recipes/longform/content.html +610 -0
  129. package/04-recipes/longform/content.md +51 -0
  130. package/04-recipes/longform/longform.html +627 -0
  131. package/04-recipes/report/README.md +176 -0
  132. package/04-recipes/report/demo.html +355 -0
  133. package/04-recipes/report/report.css +364 -0
  134. package/04-recipes/table/README.md +103 -0
  135. package/04-recipes/table/demo.html +455 -0
  136. package/04-recipes/table/table.css +372 -0
  137. package/04-recipes/tierA-tokens.css +189 -0
  138. package/09-assets/README.md +74 -0
  139. package/09-assets/bar/README.md +94 -0
  140. package/09-assets/bar/bar.css +166 -0
  141. package/09-assets/bar/bar.js +320 -0
  142. package/09-assets/bar/demo.html +176 -0
  143. package/09-assets/echarts-adapter/demo.html +192 -0
  144. package/09-assets/echarts-adapter/echarts-adapter.js +277 -0
  145. package/09-assets/model-viewer/README.md +155 -0
  146. package/09-assets/model-viewer/demo.html +105 -0
  147. package/09-assets/model-viewer/model-viewer.css +143 -0
  148. package/09-assets/model-viewer/model-viewer.js +423 -0
  149. package/09-assets/scientific-plot/README.md +94 -0
  150. package/09-assets/scientific-plot/demo.html +252 -0
  151. package/09-assets/scientific-plot/scientific-plot.css +141 -0
  152. package/09-assets/scientific-plot/scientific-plot.js +610 -0
  153. package/09-assets/sparkline/README.md +153 -0
  154. package/09-assets/sparkline/demo.html +163 -0
  155. package/09-assets/sparkline/sparkline.css +158 -0
  156. package/09-assets/sparkline/sparkline.js +508 -0
  157. package/API.md +332 -0
  158. package/CHANGELOG.md +3138 -0
  159. package/CODE_OF_CONDUCT.md +64 -0
  160. package/CONTRIBUTING.md +89 -0
  161. package/ERRORS.md +1658 -0
  162. package/LICENSE +21 -0
  163. package/README.md +497 -2
  164. package/SECURITY.md +72 -0
  165. package/START-HERE.md +164 -0
  166. package/SUPPORT.md +109 -0
  167. package/adapters/presentation/README.md +113 -0
  168. package/adapters/presentation/check.js +101 -0
  169. package/adapters/presentation/deck.schema.json +74 -0
  170. package/adapters/presentation/to-doc.js +138 -0
  171. package/ai/START-HERE.md +104 -0
  172. package/ai/behaviors.json +380 -0
  173. package/ai/behaviors.schema.json +61 -0
  174. package/ai/capabilities.json +56 -0
  175. package/ai/cli.js +387 -0
  176. package/ai/components.json +1944 -0
  177. package/ai/components.meta.json +168 -0
  178. package/ai/components.schema.json +220 -0
  179. package/ai/contract.schema.json +147 -0
  180. package/ai/deprecations.json +55 -0
  181. package/ai/deprecations.schema.json +85 -0
  182. package/ai/motion-policy.json +22 -0
  183. package/ai/patch.js +323 -0
  184. package/ai/patch.schema.json +63 -0
  185. package/ai/profiles.json +92 -0
  186. package/ai/tokens.audience.json +55 -0
  187. package/ai/tokens.audience.schema.json +73 -0
  188. package/ai/tokens.json +762 -0
  189. package/ai/tokens.schema.json +58 -0
  190. package/ai/tokens.tree.json +752 -0
  191. package/ai/tokens.tree.schema.json +56 -0
  192. package/ai/validate.js +383 -0
  193. package/dist/01-tokens/behavior/dismissable.js +60 -0
  194. package/dist/01-tokens/behavior/emit.js +21 -0
  195. package/dist/01-tokens/behavior/focus-return.js +31 -0
  196. package/dist/01-tokens/behavior/roving.js +77 -0
  197. package/dist/01-tokens/behavior/typeahead.js +61 -0
  198. package/dist/01-tokens/focus-ring.css +1 -0
  199. package/dist/01-tokens/page.css +1 -0
  200. package/dist/01-tokens/polyfill.js +78 -0
  201. package/dist/01-tokens/scrollbar.css +1 -0
  202. package/dist/01-tokens/theme-toggle.js +61 -0
  203. package/dist/01-tokens/tokens.css +1 -0
  204. package/dist/01-tokens/typography.css +1 -0
  205. package/dist/02-primitives/badge/badge.css +1 -0
  206. package/dist/02-primitives/button/button.css +1 -0
  207. package/dist/02-primitives/card/card.css +1 -0
  208. package/dist/02-primitives/choice/choice.css +1 -0
  209. package/dist/02-primitives/combobox/combobox.css +1 -0
  210. package/dist/02-primitives/combobox/combobox.js +439 -0
  211. package/dist/02-primitives/date-range/date-range.css +1 -0
  212. package/dist/02-primitives/date-range/date-range.js +267 -0
  213. package/dist/02-primitives/input/input.css +1 -0
  214. package/dist/02-primitives/popover/popover.css +1 -0
  215. package/dist/02-primitives/popover/popover.js +257 -0
  216. package/dist/02-primitives/progress/progress.css +1 -0
  217. package/dist/02-primitives/select/select.css +1 -0
  218. package/dist/02-primitives/select/select.js +449 -0
  219. package/dist/02-primitives/separator/separator.css +1 -0
  220. package/dist/02-primitives/skeleton/skeleton.css +1 -0
  221. package/dist/02-primitives/switch/switch.css +1 -0
  222. package/dist/03-patterns/accordion/accordion.css +1 -0
  223. package/dist/03-patterns/accordion/accordion.js +219 -0
  224. package/dist/03-patterns/content/content.css +1 -0
  225. package/dist/03-patterns/drawer/drawer.css +1 -0
  226. package/dist/03-patterns/drawer/drawer.js +229 -0
  227. package/dist/03-patterns/dropdown/dropdown.css +1 -0
  228. package/dist/03-patterns/dropdown/dropdown.js +365 -0
  229. package/dist/03-patterns/form-validation/form-validation.css +1 -0
  230. package/dist/03-patterns/list/flip.js +117 -0
  231. package/dist/03-patterns/list/list.css +1 -0
  232. package/dist/03-patterns/nav/nav.css +1 -0
  233. package/dist/03-patterns/nav/nav.js +322 -0
  234. package/dist/03-patterns/nav/toc.js +76 -0
  235. package/dist/03-patterns/overlay/overlay.css +1 -0
  236. package/dist/03-patterns/overlay/overlay.js +398 -0
  237. package/dist/03-patterns/pagination/pagination.css +1 -0
  238. package/dist/03-patterns/pagination/pagination.js +273 -0
  239. package/dist/03-patterns/reveal/reveal.css +1 -0
  240. package/dist/03-patterns/reveal/reveal.js +138 -0
  241. package/dist/03-patterns/states/states.css +1 -0
  242. package/dist/03-patterns/tabs/tabs.css +1 -0
  243. package/dist/03-patterns/tabs/tabs.js +242 -0
  244. package/dist/03-patterns/tooltip/tooltip.css +1 -0
  245. package/dist/03-patterns/tooltip/tooltip.js +213 -0
  246. package/dist/03-patterns/tree/tree.css +1 -0
  247. package/dist/03-patterns/tree/tree.js +383 -0
  248. package/dist/04-recipes/analysis-report/analysis-report.css +1 -0
  249. package/dist/04-recipes/detail-page/detail-page.css +1 -0
  250. package/dist/04-recipes/report/report.css +1 -0
  251. package/dist/04-recipes/table/table.css +1 -0
  252. package/dist/04-recipes/tierA-tokens.css +1 -0
  253. package/dist/09-assets/bar/bar.css +1 -0
  254. package/dist/09-assets/bar/bar.js +222 -0
  255. package/dist/09-assets/echarts-adapter/echarts-adapter.js +185 -0
  256. package/dist/09-assets/model-viewer/model-viewer.css +1 -0
  257. package/dist/09-assets/model-viewer/model-viewer.js +320 -0
  258. package/dist/09-assets/scientific-plot/scientific-plot.css +1 -0
  259. package/dist/09-assets/scientific-plot/scientific-plot.js +568 -0
  260. package/dist/09-assets/sparkline/sparkline.css +1 -0
  261. package/dist/09-assets/sparkline/sparkline.js +265 -0
  262. package/dist/COSTS.md +56 -0
  263. package/docs/AI-CONTRACT.md +197 -0
  264. package/docs/BACKLOG.md +127 -0
  265. package/docs/BENCHMARK.md +252 -0
  266. package/docs/GUIDANCE.md +154 -0
  267. package/docs/INVARIANT.md +372 -0
  268. package/docs/LAYER-BASELINE.md +158 -0
  269. package/docs/RELEASING.md +311 -0
  270. package/docs/RFC-THEME-SCOPE.md +141 -0
  271. package/docs/ROADMAP.md +182 -0
  272. package/index.html +82 -0
  273. package/package.json +107 -4
  274. package/types/index.d.ts +310 -0
@@ -0,0 +1,610 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>AGC 的内存 · 内容渲染示例</title>
7
+ <style>
8
+ /* ---- 由 md-render.py 内联自 frontend-lib/01-tokens/tokens.css ---- */
9
+ /* ============================================================================
10
+ frontend-lib / 01-tokens / tokens.css
11
+ 纸感中性基底 · 第一版
12
+
13
+ 铁律:这里的每一个颜色都必须带着 05-audit/contrast.py 的实测数字进来。
14
+ 凭感觉填的色一律不许入库 —— 第一版就抓出 5 项不达标(见文件末尾"废弃记录")。
15
+
16
+ 使用方式:
17
+ 1) 现代构建:直接 @import 或复制进你的样式入口
18
+ 2) 单文件版:只复制 [核心] 段,其余删掉,可内联进 <style>
19
+
20
+ 改色流程:改值 -> 跑 python 05-audit/contrast.py -> 把新数字写回注释 -> 才允许提交
21
+ ========================================================================= */
22
+
23
+ :root {
24
+ /* ---------------------------------------------------------------- 基底
25
+ paper = 页面底(冷灰白)。🔴 不能更浅:与 --surface 的对比度要 >= 1.06:1,
26
+ 否则页面看着就是纯白,"表面浮在底上"的分层完全消失。
27
+ surface= 卡片/面板底,比纸底亮一档,靠明度差而非描边来分层
28
+ ---------------------------------------------------------------- */
29
+ --paper: #f6f7f8;
30
+ --surface: #ffffff;
31
+ --surface-sunken: #f1f3f5; /* 内凹区:代码块、表格头、禁用底 */
32
+
33
+ /* ---------------------------------------------------------------- 文字
34
+ 三档够用了。超过三档说明信息层级没想清楚,不是 token 不够。
35
+ 全部数字由 05-audit/contrast.py 从本文件实测得出,不是手写的。
36
+ 改任何颜色后必须重跑该脚本 —— 手写注释必然漂移(已发生过)。
37
+ ---------------------------------------------------------------- */
38
+ --text-primary: #15181c; /* 16.60 / 17.81 AAA */
39
+ --text-secondary: #4f555e; /* 7.01 AAA */
40
+ --text-tertiary: #606770; /* 4.51 AA */
41
+ --text-on-accent: #ffffff; /* 压在下方任意 accent 上均 >= 5.2 AA */
42
+
43
+ /* ---------------------------------------------------------------- 边框
44
+ 🔴 本库最容易被做错的一处,两类不许合并:
45
+
46
+ control = 控件边界(输入框、按钮的轮廓)。WCAG 1.4.11 要求 >= 3.0,
47
+ 因为它是"识别出这是个控件"的唯一线索。必须达标。
48
+ decor = 纯装饰分隔(卡片内线、表格行线)。WCAG 不强制。
49
+ 对它强求 3.0 会把界面做得很重很难看 —— 那是误读规范。
50
+ ---------------------------------------------------------------- */
51
+ --border-control: #868b94; /* 3.19 / 3.42 AA Large */
52
+ --border-decor: #e2e5e9; /* 1.18 纯装饰,WCAG 不强制 */
53
+ --border-decor-str: #c8cdd4; /* 1.49 装饰,需要更强分隔时用 */
54
+
55
+ /* ---------------------------------------------------------------- 语义色
56
+ 全部实测 >= 5.6 AA(vs 纸底)。可当文字用,也可当底色用。
57
+ ---------------------------------------------------------------- */
58
+ --danger: #c0392b; /* 5.07 AA */
59
+ --success: #2f6b3a; /* 6.12 */
60
+ --warning: #8a5a00; /* 5.68 */
61
+ --info: #1d5f8a; /* 6.58 */
62
+
63
+ /* 语义色的浅底(用于提示条背景,不放正文) */
64
+ --danger-bg: #fdeeec;
65
+ --success-bg: #eaf2e6;
66
+ --warning-bg: #fbf1dd;
67
+ --info-bg: #e8f1f8;
68
+
69
+ /* ---------------------------------------------------------------- 强调色
70
+ 🔴 一源原则:一个项目只选一个 accent,不要混用。
71
+ accent 决定"可点击"的语义,混用等于取消了这层语义。
72
+ 三选一,把另外两个删掉,别全留着。
73
+ ---------------------------------------------------------------- */
74
+ --accent: #1b4d8f; /* 7.82 AAA */
75
+ --accent-hover: #163a6d; /* 白字压上去 7.73 AAA(hover 态最容易漏测) */
76
+ --accent-soft: #e6eef7; /* focus ring / 浅底,不要拿它放正文 */
77
+ /* --accent: #0f7a6c; 薄荷绿 5.00 —— 活泼/工具类 */
78
+ /* --accent-hover: #0c6459; 白字 7.04 AAA */
79
+ /* --accent-soft: #dff1ec; */
80
+ /* --accent: #185fa5; 蓝 6.25 —— 严肃/数据类 */
81
+
82
+ /* ================================================================ [核心]
83
+ 间距:8px 网格为基准,大值流体。
84
+ 想要的值不在表里 => 说明布局没规划,改设计,不要加 token。
85
+
86
+ 🔴 哪些该流体:--sp-4 往上(区块间距,随屏幕变大而变大,观感自然)
87
+ 哪些不该:--sp-1..3(元素内部间距,流体化会让控件尺寸忽大忽小)
88
+ ---------------------------------------------------------------- */
89
+ --sp-1: 4px;
90
+ --sp-2: 8px;
91
+ --sp-3: 12px;
92
+ --sp-4: clamp(1rem, 0.95rem + 0.3vw, 1.25rem); /* 16 → 20px */
93
+ --sp-5: clamp(1.25rem, 1.15rem + 0.7vw, 1.75rem); /* 20 → 28px */
94
+ --sp-6: clamp(1.5rem, 1.3rem + 1.2vw, 2.25rem); /* 24 → 36px */
95
+ --sp-7: clamp(2rem, 1.7rem + 1.8vw, 3.5rem); /* 32 → 56px */
96
+ --sp-8: clamp(2.5rem, 2.1rem + 2.4vw, 4.5rem); /* 40 → 72px */
97
+
98
+ /* ================================================================ [核心]
99
+ 断点令牌
100
+ ----------------------------------------------------------------
101
+ 🔴 CSS 变量**不能**用在 media query 条件里。
102
+ 所以下面四个只是"文档与计算的单一出处",写 media query 时仍要写字面值:
103
+
104
+ @media (min-width: 48rem) { ... } ← 只能写字面值,不能写 var(--bp-md)
105
+
106
+ 留它们的理由:算流体值、给脚本查、以及让"我们有几个断点"这件事有唯一答案。
107
+ ⚠️ 断点用的是 rem 不是 px —— 用户调大字号时断点跟着变,这才是对的。
108
+ ---------------------------------------------------------------- */
109
+ --bp-sm: 30rem; /* 480px 大手机 / 小平板 */
110
+ --bp-md: 48rem; /* 768px 平板 */
111
+ --bp-lg: 64rem; /* 1024px 小笔记本 */
112
+ --bp-xl: 80rem; /* 1280px 桌面 */
113
+
114
+ /* ================================================================ [核心]
115
+ 字号阶梯
116
+ ----------------------------------------------------------------
117
+ 🔴 修正:上下限从 px 改成 rem。
118
+ px 上下限不尊重"用户把浏览器默认字号调大"的设置 ——
119
+ 那样 clamp 的下限会锁死,用户放到 200% 也涨不上去。
120
+ rem 基准跟着用户设置走,这是无障碍底线。
121
+
122
+ 🔴 哪些该流体、哪些不该(这条更容易做错):
123
+
124
+ 该流体:正文、小标题、大标题、间距
125
+ —— 它们随屏幕变大而变大,观感自然
126
+
127
+ **不该流体**:UI 文本(--fs-xs / --fs-sm)、小间距(--sp-1..3)
128
+ —— 它们是控件尺寸的一部分。流体会让按钮和输入框在不同屏幕下
129
+ 大小不一,布局抖动。搜索到的原话:
130
+ "UI typography benefits from minimal scaling.
131
+ Too much fluidity breaks layout."
132
+
133
+ 公式:clamp(MIN-REM, REM基准 + VW系数, MAX-REM)
134
+ VW 系数怎么来:先定 min/max 视口(375px / 1280px),
135
+ 系数 ≈ (max-rem - min-rem) × 100 / (1280 - 375) ≈ 差值 × 0.1105
136
+
137
+ ✅ WCAG 1.4.4 判据:只要 MAX ≤ 2.5 × MIN,就一定通过 resize-text 检查。
138
+ 本阶梯最大比值 2.5rem/1.75rem = 1.43,安全。
139
+ ---------------------------------------------------------------- */
140
+ --fs-xs: 0.75rem; /* 12px 固定:辅助文字不流体 */
141
+ --fs-sm: 0.875rem; /* 14px 固定:UI 文本不流体 */
142
+ --fs-base: clamp(1rem, 0.95rem + 0.3vw, 1.125rem); /* 16 → 18px */
143
+ --fs-md: clamp(1.125rem, 1.05rem + 0.5vw, 1.3125rem); /* 18 → 21px */
144
+ --fs-lg: clamp(1.3125rem, 1.2rem + 0.7vw, 1.5rem); /* 21 → 24px */
145
+ --fs-xl: clamp(1.5rem, 1.3rem + 1.2vw, 1.875rem); /* 24 → 30px */
146
+ --fs-2xl: clamp(1.75rem, 1.45rem + 1.8vw, 2.5rem); /* 28 → 40px */
147
+
148
+ /* 行高:正文 1.7 是中文长文的舒适值(西文常用 1.5,中文需要更松) */
149
+ --lh-tight: 1.25; /* 标题 */
150
+ --lh-base: 1.7; /* 正文 */
151
+ --lh-loose: 1.85; /* 长段落、低龄/无障碍场景 */
152
+
153
+ /* 行长:65ch 左右是阅读上限。超过就要分栏或收窄容器。
154
+ (裸的 --measure 已在 0.7.3 从 tokens.css 移除:它没被引用也没被文档记载,
155
+ 版心请用 --measure-page / --measure-prose。)*/
156
+
157
+ /* ---------------------------------------------------------------- 圆角
158
+ 一套就够。圆角混搭(卡片 20px、按钮 4px)是典型的没想清楚。
159
+ ---------------------------------------------------------------- */
160
+ --r-sm: 6px;
161
+ --r-md: 10px;
162
+ --r-lg: 14px;
163
+ --r-pill: 999px;
164
+
165
+ /* ---------------------------------------------------------------- 阴影
166
+ 两级。第三级阴影出现的时候,通常说明层级设计出了问题。
167
+ y 轴偏移小、模糊大 —— 模拟纸面浮起,不是悬浮在太空。
168
+ ---------------------------------------------------------------- */
169
+ --shadow-1: 0 1px 2px rgba(31, 29, 25, 0.05), 0 1px 3px rgba(31, 29, 25, 0.06);
170
+ --shadow-2: 0 2px 4px rgba(31, 29, 25, 0.05), 0 6px 16px rgba(31, 29, 25, 0.08);
171
+
172
+ /* ---------------------------------------------------------------- 动效
173
+ 🔴 一源原则:全项目只用这一组时长和缓动。
174
+ 六个地方来的六个效果 => 六个不同的缓动曲线 => 看起来像没设计过。
175
+ ---------------------------------------------------------------- */
176
+ --dur-fast: 120ms; /* 颜色、透明度 */
177
+ --dur-base: 180ms; /* 位移、展开 */
178
+ --dur-slow: 280ms; /* 大块入场、遮罩 */
179
+
180
+ --ease-out: cubic-bezier(0.23, 1, 0.32, 1); /* UI 默认:入场、展开 */
181
+ --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1); /* 屏上位移、折叠 */
182
+ --ease-drawer: cubic-bezier(0.32, 0.72, 0, 1); /* 抽屉式滑入(iOS 观感)*/
183
+
184
+ /* 🔴 修正:上一版这三个曲线是**我自编**的
185
+ (0.22,1,0.36,1 / 0.65,0,0.35,1),现已换成业界通用值 ——
186
+ 与 Tailwind v4 默认、Emil Kowalski 技能库一致。
187
+ **曲线不该自己编**:自编的曲线没有经过大量实现验证,
188
+ 阻尼比、重心位置都是猜的,跨浏览器表现不一致。
189
+ 跨浏览器表现不一致。 */
190
+ /* 位移距离:动效的"幅度"也要统一,不然同样 180ms 也会感觉乱 */
191
+ --lift-sm: 1px;
192
+ --lift-md: 2px;
193
+ --lift-lg: 8px;
194
+
195
+ /* ---------------------------------------------------------------- z-index
196
+ 乱写 z-index(999、9999)是前端最常见的失控点。
197
+ 只用这六个值。需要更高的 => 说明层级模型有问题。
198
+ ---------------------------------------------------------------- */
199
+ --z-base: 0;
200
+ --z-sticky: 10;
201
+ --z-header: 20;
202
+ --z-overlay: 30;
203
+ --z-modal: 40;
204
+ --z-toast: 50;
205
+ }
206
+
207
+ /* ============================================================================
208
+ 无障碍兜底 —— 这一段必须随 token 一起走,不许删
209
+ ========================================================================= */
210
+
211
+ /* 尊重系统的"减少动效"设置。评委、无障碍用户、晕动症人群会开这个。
212
+ 不写这段,前面所有动效在那些机器上就是灾难。 */
213
+ @media (prefers-reduced-motion: reduce) {
214
+ *,
215
+ *::before,
216
+ *::after {
217
+ animation-duration: 0.01ms !important;
218
+ animation-iteration-count: 1 !important;
219
+ transition-duration: 0.01ms !important;
220
+ scroll-behavior: auto !important;
221
+ }
222
+ }
223
+
224
+ /* 键盘焦点环。用 :focus-visible 而不是 :focus ——
225
+ 前者只在键盘导航时显示,鼠标点击不会冒出难看的框。
226
+ 🔴 只写 outline: none 而不给替代焦点指示,是无障碍事故。 */
227
+ :focus-visible {
228
+ outline: 2px solid var(--accent);
229
+ outline-offset: 2px;
230
+ border-radius: var(--r-sm);
231
+ }
232
+
233
+ /* ============================================================================
234
+ 废弃记录 —— 保留在这里是为了不再犯同样的错
235
+ =========================================================================
236
+ 第一版自检抓出 5 项不达标,全部是"凭感觉填的":
237
+
238
+ text-tertiary #8a8478 vs 纸底 = 3.56 → 正文需 4.5,不达标
239
+ vs 白面 = 3.72 → 同样不达标
240
+ 改 #6f6a5e(5.16 / 5.39)
241
+ 教训:辅助文字色最容易填浅,因为它"看起来就该浅"。
242
+
243
+ border #cfc9bb vs 纸底 = 1.58 → UI 边界需 3.0,不达标
244
+ 改 #8a8478(3.56)
245
+ 但:装饰分隔线不需要 3.0,硬套会让界面变重
246
+ → 因此把边框拆成 control / decor 两类,这是第一版最大的收获。
247
+ ========================================================================= */
248
+
249
+ /* ---- 由 md-render.py 内联自 frontend-lib/03-patterns/content/content.css ---- */
250
+ /* ============================================================================
251
+ frontend-lib / 03-patterns / content / content.css
252
+ 内容渲染样式 —— 接管 CommonMark / GFM 的标准输出
253
+
254
+ 依赖:01-tokens/tokens.css
255
+ 版本:A ✅ / B ✅ / C ✅
256
+
257
+ 🔴 本文件最重要的设计决定:**不发明任何类名**。
258
+
259
+ 结构由渲染器(CommonMark / GFM 规范)决定,
260
+ 样式由本文件按**元素选择器**接管。
261
+ 所以从任何 CommonMark 兼容渲染器拿到的 HTML,
262
+ **不需要任何后处理**就能正确显示。
263
+
264
+ 只有一个自定义类名:`.prose` —— 用于限定作用域。
265
+ 它不改变任何语义,只是"这块是正文"的标记。
266
+
267
+ 依据:本文件顶部列出的渲染约定
268
+ ========================================================================= */
269
+
270
+ .prose {
271
+ /* 正文行长:中文长文 68ch 是硬约束(超过就跳行) */
272
+ max-width: var(--measure-prose);
273
+ color: var(--text-primary);
274
+ }
275
+
276
+ /* ---------------------------------------------------------------- 元素间距
277
+ 用兄弟选择器统一控制,不给每个元素写 margin。
278
+ 这是"接管"的正确姿势 —— 渲染器不排版,排版归我们。 */
279
+ .prose > * + * { margin-top: var(--sp-4); }
280
+
281
+ /* ---------------------------------------------------------------- 标题
282
+ 结构必须是 <h1>-<h6>,不能是 <div class="heading">。
283
+ 层级不跳级由 a11y.py 门禁检查。 */
284
+ .prose > h1,
285
+ .prose > h2,
286
+ .prose > h3,
287
+ .prose > h4,
288
+ .prose > h5,
289
+ .prose > h6 {
290
+ font-family: var(--sans);
291
+ font-weight: 500;
292
+ line-height: var(--lh-tight);
293
+ letter-spacing: -0.008em;
294
+ margin: var(--sp-7) 0 0;
295
+ }
296
+ .prose > h1 { font-size: var(--fs-2xl); margin-top: 0; }
297
+ .prose > h2 {
298
+ font-size: var(--fs-lg);
299
+ padding-top: var(--sp-5);
300
+ border-top: 2px solid var(--accent);
301
+ /* 短线段 + 通栏细线:既有分隔又不像卡片那样"框住" */
302
+ max-width: 92%;
303
+ }
304
+ .prose > h3 { font-size: var(--fs-md); }
305
+ .prose > h4, .prose > h5, .prose > h6 {
306
+ font-size: var(--fs-base);
307
+ color: var(--text-secondary);
308
+ }
309
+
310
+ /* ---------------------------------------------------------------- 段落与行内 */
311
+ .prose > p { margin: 0; line-height: 1.75; }
312
+
313
+ /* 行内代码:衬线底 + 细边
314
+ ⚠️ 中文正文里的 `code` 通常是函数名/参数名,用等宽更清楚。 */
315
+ .prose > code,
316
+ .prose > li > code,
317
+ .prose > td > code,
318
+ .prose > th > code {
319
+ font-family: var(--mono);
320
+ font-size: 0.88em;
321
+ background: var(--surface-sunken);
322
+ border: 1px solid var(--border-decor);
323
+ border-radius: 3px;
324
+ padding: 0.05em 0.3em;
325
+ }
326
+
327
+ /* 🔴 代码块内的 <code> 必须排除行内样式。
328
+ CommonMark 两种代码块都输出 <pre><code>,不排除的话
329
+ 代码块里的每行都会带上行内代码的边框和底色。 */
330
+ .prose > pre > code,
331
+ .prose > pre {
332
+ font-family: inherit;
333
+ font-size: inherit;
334
+ background: none;
335
+ border: none;
336
+ padding: 0;
337
+ border-radius: 0;
338
+ }
339
+
340
+ /* ---------------------------------------------------------------- 列表
341
+ CommonMark 的嵌套列表是 <li> 内直接嵌 <ul>,靠缩进表达层级。 */
342
+ .prose > ul,
343
+ .prose > ol { padding-left: 1.5em; margin: 0; }
344
+ .prose > ul { list-style: disc; }
345
+ .prose > ol { list-style: decimal; }
346
+ .prose li + li { margin-top: var(--sp-2); }
347
+ .prose li > ul,
348
+ .prose li > ol { margin-top: var(--sp-2); }
349
+ .prose li > ul { list-style: circle; } /* 二级用空心圆,三级会自动变方块 */
350
+
351
+ /* ---------------------------------------------------------------- 引用
352
+ CommonMark 输出 <blockquote><p>…</p></blockquote> */
353
+ .prose > blockquote {
354
+ margin: var(--sp-5) 0;
355
+ padding: 0 0 0 var(--sp-4);
356
+ border-left: 3px solid var(--accent);
357
+ }
358
+ .prose > blockquote > p {
359
+ color: var(--text-secondary);
360
+ font-size: var(--fs-md);
361
+ line-height: 1.6;
362
+ }
363
+ /* 引用里再套引用 */
364
+ .prose > blockquote > blockquote { margin: var(--sp-3) 0; }
365
+
366
+ /* ---------------------------------------------------------------- 代码块
367
+ 两种都输出 <pre><code>;围栏的带 class="language-xxx",缩进的不带。
368
+ 🔴 不给缩进代码块硬加 class —— 规范说它没有。 */
369
+ .prose > pre {
370
+ margin: 0;
371
+ padding: var(--sp-4);
372
+ background: var(--surface-sunken);
373
+ border-left: 3px solid var(--border-decor-str);
374
+ border-radius: 0 var(--r-sm) var(--r-sm) 0;
375
+ overflow-x: auto;
376
+ font-family: var(--mono);
377
+ font-size: var(--fs-xs);
378
+ line-height: 1.6;
379
+ tab-size: 4;
380
+ -webkit-overflow-scrolling: touch;
381
+ }
382
+ /* 缩进代码块没有左边框语言标记,给个更淡的,暗示"这是次要代码" */
383
+ .prose > pre:not([class]) { border-left-color: var(--border-decor); }
384
+
385
+ /* ---------------------------------------------------------------- 表格(GFM)
386
+ 🔴 必须是 <table>,不能用 div 模拟 —— div 会让屏幕阅读器读不出行列关系。 */
387
+ .prose > table {
388
+ width: 100%;
389
+ border-collapse: collapse;
390
+ table-layout: auto; /* ⚠️ 有 <colgroup> 时改用 fixed */
391
+ font-size: var(--fs-sm);
392
+ }
393
+ .prose > table th,
394
+ .prose > table td {
395
+ text-align: left;
396
+ padding: var(--sp-2) var(--sp-4) var(--sp-2) 0;
397
+ border-bottom: 1px solid var(--border-decor);
398
+ vertical-align: top;
399
+ }
400
+ .prose > table th {
401
+ font-weight: 500;
402
+ font-size: var(--fs-xs);
403
+ color: var(--text-secondary);
404
+ }
405
+ .prose > table tbody tr:last-child td { border-bottom: 1px solid var(--border-decor-str); }
406
+
407
+ /* ---------------------------------------------------------------- 其他元素 */
408
+ .prose > hr {
409
+ margin: var(--sp-7) 0;
410
+ border: 0;
411
+ border-top: 1px solid var(--border-decor);
412
+ height: 0; /* 🔴 hr 默认有 inset 边框,必须清掉 */
413
+ }
414
+
415
+ .prose > img {
416
+ max-width: 100%;
417
+ height: auto;
418
+ display: block;
419
+ /* 🔴 每个 img 必须有显式宽高(CLS)——
420
+ 这条由 viewport.py 门禁检查,本 CSS 不兜底 */
421
+ border-radius: var(--r-sm);
422
+ }
423
+ .prose > a {
424
+ color: var(--accent);
425
+ text-decoration: underline;
426
+ text-underline-offset: 2px;
427
+ text-decoration-thickness: 1px;
428
+ }
429
+ .prose > a:hover { color: var(--text-primary); }
430
+ .prose > a:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
431
+
432
+ /* 外链可访问性:新窗口打开必须告知 */
433
+ .prose > a[target="_blank"]::after {
434
+ content: " ↗";
435
+ font-size: 0.8em;
436
+ vertical-align: 0.1em;
437
+ }
438
+
439
+ /* GFM 删除线
440
+ 🔴 实测:markdown-it 输出 `<s>`,GitHub/GFM 规范规定 `<del>`。
441
+ 两者都是合法 HTML(`<s>`=不再准确,`<del>`=已删除)但语义不同。
442
+ ⇒ 样式必须同时支持,否则换渲染器就掉样式。
443
+ 查证所用渲染器:markdown-it-py(commonmark preset + strikethrough)。 */
444
+ .prose > del,
445
+ .prose > s,
446
+ .prose > li > del,
447
+ .prose > li > s { color: var(--text-tertiary); }
448
+
449
+ /* GFM 任务列表
450
+ CommonMark 核心不产出这个,GFM 扩展才有:
451
+ <li class="task-list-item"><input type="checkbox" disabled> … */
452
+ .prose .task-list-item { list-style: none; margin-left: -1.5em; }
453
+ .prose .task-list-item input[type="checkbox"] {
454
+ margin-right: var(--sp-2);
455
+ vertical-align: middle;
456
+ }
457
+ .prose .task-list-item input[disabled] {
458
+ /* disabled 的复选框不可改,但必须仍能看出状态 —— 不用 opacity */
459
+ accent-color: var(--accent);
460
+ }
461
+
462
+ /* ---------------------------------------------------------------- 无障碍兜底 */
463
+ .prose :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
464
+
465
+ /* ============================================================================
466
+ 反模式
467
+ =========================================================================
468
+ 1. 给每个元素加类(.prose h2、.prose p2 …)
469
+ 渲染器输出没有这些类,样式接不上。**按元素选择器接管**。
470
+
471
+ 2. <div class="code-block"> 装代码
472
+ 渲染器不认。用 <pre><code class="language-x">。
473
+
474
+ 3. <div class="table"> 模拟表格
475
+ 🔴 最严重:辅助技术会当普通 div 念,屏幕阅读器用户拿不到行列关系。
476
+
477
+ 4. <div class="heading"> 代替标题
478
+ 文档大纲全废,屏幕阅读器的"跳到标题"功能失效。
479
+
480
+ 5. 缩进代码块硬加 class="language-"
481
+ CommonMark 规定它没有 class。
482
+
483
+ 6. <b> / <i> 代替 <strong> / <em>
484
+ <b> 只是"视觉加粗",无语义。
485
+
486
+ 7. hr 不清 height 和 border-top
487
+ 默认 hr 有 inset 边框,会出现双线。
488
+
489
+ 8. 依赖行内 <code> 样式而不排除代码块内的
490
+ 代码块每行都会带上边框和底色。
491
+ ========================================================================= */
492
+
493
+ body {
494
+ margin: 0;
495
+ background: var(--paper);
496
+ color: var(--text-primary);
497
+ font-family: var(--sans);
498
+ font-size: var(--fs-base);
499
+ line-height: var(--lh-base);
500
+ -webkit-text-size-adjust: 100%;
501
+ }
502
+ .wrap { max-width: 72ch; margin: 0 auto; padding: var(--sp-7) var(--sp-5) var(--sp-8); }
503
+
504
+ /* 🔴 暗色模式 —— 与 01-tokens/tokens.css 同步。
505
+ 精简档 单文件不外链 CSS,所以色板必须内联一份副本。
506
+ 由 tokens.css 同步而来,**不要手改**(contrast.py 会查漂移)。*/
507
+ @media (prefers-color-scheme: dark) {
508
+ :root {
509
+ --paper
510
+ --surface
511
+ --surface-sunken
512
+ --text-primary
513
+ --text-secondary
514
+ --text-tertiary
515
+ --text-on-accent
516
+ --border-control
517
+ --border-decor
518
+ --border-decor-str
519
+ --danger
520
+ --success
521
+ --warning
522
+ --info
523
+ --accent
524
+ --accent-hover
525
+ --accent-soft
526
+ --danger-bg
527
+ --success-bg
528
+ --warning-bg
529
+ --info-bg
530
+ }
531
+ }
532
+
533
+ /* 🔴 补( H2a 的暗色门禁抓出来的):
534
+ 本页**没有给 <a> 设 color** ⇒ 浏览器默认链接蓝 rgb(0,0,238)
535
+ ⇒ 暗色底上只有 1.91:1,几乎看不见 ⇒ 走令牌,暗色自动跟随。 */
536
+ a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
537
+ a:visited { color: var(--accent); }
538
+ </style>
539
+ </head>
540
+ <body>
541
+ <div class="wrap">
542
+ <div class="prose">
543
+ <h1>AGC 的内存</h1>
544
+ <p>阿波罗制导计算机的核心存储器是 <strong>2048 个 36 位字</strong>,总容量 73,728 位,大约 9 KB。
545
+ 指令与数据混在一起,地址按字计。</p>
546
+ <h2>存储器构成</h2>
547
+ <p>不同 Block II 的分段数有差异,引用时应以具体的手册为准。</p>
548
+ <table>
549
+ <thead>
550
+ <tr>
551
+ <th>区域</th>
552
+ <th>容量</th>
553
+ <th>用途</th>
554
+ </tr>
555
+ </thead>
556
+ <tbody>
557
+ <tr>
558
+ <td>Rope / Fixed</td>
559
+ <td>33,892 字</td>
560
+ <td>常驻代码</td>
561
+ </tr>
562
+ <tr>
563
+ <td>Superrope</td>
564
+ <td>845 字</td>
565
+ <td>磁鼓载入,擦除 ROP</td>
566
+ </tr>
567
+ <tr>
568
+ <td>ROP(每人)</td>
569
+ <td>2,048 字 × 3</td>
570
+ <td>可擦写用户区</td>
571
+ </tr>
572
+ <tr>
573
+ <td>Core rope / erasable</td>
574
+ <td>2,048 字</td>
575
+ <td>主工作区</td>
576
+ </tr>
577
+ </tbody>
578
+ </table>
579
+ <p>上表数字汇总自各手册,<strong>不是单一来源的权威值</strong>。</p>
580
+ <h2>调度</h2>
581
+ <p>AGC 的调度靠优先级抢占。更高优先级的任务可以打断低优先级任务,
582
+ 这让关键任务(姿态、点火)不会被普通计算饿死。</p>
583
+ <ol>
584
+ <li>检测到电流跌落</li>
585
+ <li>尝试重算姿态</li>
586
+ <li>若超时,抛出 <code>1202</code></li>
587
+ <li>地面判断后决定继续</li>
588
+ </ol>
589
+ <blockquote>
590
+ <p>我们没有去修它。我们让它继续报错,然后把能省的电都省下来。</p>
591
+ </blockquote>
592
+ <h2>复现</h2>
593
+ <p>工具链的成熟度足以支撑一次完整考古:</p>
594
+ <pre><code class="language-python"># 不是原文,是按手册重述的伪代码
595
+ if computer_overload():
596
+ issue(1202) # 告警编号写入 AGC 计数区
597
+ # 不停机:停机会丢掉姿态信息,地面将失去唯一的实时数据源
598
+ yield_to_next_task()
599
+ </code></pre>
600
+ <p>命令行的用法见 <a href="https://spec.commonmark.org/">CommonMark 规范</a>(新窗口打开)。</p>
601
+ <hr />
602
+ <p>早期的 <code>agc-emulator</code> 写法已经 <s>废弃</s>,改用 yaAGC。</p>
603
+ <p><img src="agc-memory.svg" alt="AGC 内存板示意"
604
+ width="600" height="120"
605
+ loading="lazy" decoding="async"></p>
606
+
607
+ </div>
608
+ </div>
609
+ </body>
610
+ </html>
@@ -0,0 +1,51 @@
1
+ # AGC 的内存
2
+
3
+ 阿波罗制导计算机的核心存储器是 **2048 个 36 位字**,总容量 73,728 位,大约 9 KB。
4
+ 指令与数据混在一起,地址按字计。
5
+
6
+ ## 存储器构成
7
+
8
+ 不同 Block II 的分段数有差异,引用时应以具体的手册为准。
9
+
10
+ | 区域 | 容量 | 用途 |
11
+ |---|---|---|
12
+ | Rope / Fixed | 33,892 字 | 常驻代码 |
13
+ | Superrope | 845 字 | 磁鼓载入,擦除 ROP |
14
+ | ROP(每人) | 2,048 字 × 3 | 可擦写用户区 |
15
+ | Core rope / erasable | 2,048 字 | 主工作区 |
16
+
17
+ 上表数字汇总自各手册,**不是单一来源的权威值**。
18
+
19
+ ## 调度
20
+
21
+ AGC 的调度靠优先级抢占。更高优先级的任务可以打断低优先级任务,
22
+ 这让关键任务(姿态、点火)不会被普通计算饿死。
23
+
24
+ 1. 检测到电流跌落
25
+ 2. 尝试重算姿态
26
+ 3. 若超时,抛出 `1202`
27
+ 4. 地面判断后决定继续
28
+
29
+ > 我们没有去修它。我们让它继续报错,然后把能省的电都省下来。
30
+
31
+ ## 复现
32
+
33
+ 工具链的成熟度足以支撑一次完整考古:
34
+
35
+ ```python
36
+ # 不是原文,是按手册重述的伪代码
37
+ if computer_overload():
38
+ issue(1202) # 告警编号写入 AGC 计数区
39
+ # 不停机:停机会丢掉姿态信息,地面将失去唯一的实时数据源
40
+ yield_to_next_task()
41
+ ```
42
+
43
+ 命令行的用法见 [CommonMark 规范](https://spec.commonmark.org/)(新窗口打开)。
44
+
45
+ ---
46
+
47
+ 早期的 `agc-emulator` 写法已经 ~~废弃~~,改用 yaAGC。
48
+
49
+ <img src="agc-memory.svg" alt="AGC 内存板示意"
50
+ width="600" height="120"
51
+ loading="lazy" decoding="async">