pomaster 0.4.0 → 0.5.0

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 (228) hide show
  1. package/README.md +51 -15
  2. package/catalog/catalog-lock.draft.json +117 -117
  3. package/catalog/policies/policy.ai.change_plan_first.json +1 -1
  4. package/catalog/policies/policy.ai.fact_inference_separation.json +1 -1
  5. package/catalog/policies/policy.ai.read_search_verify_before_write.json +1 -1
  6. package/catalog/policies/policy.ai.rule_relaxation_approval.json +1 -1
  7. package/catalog/policies/policy.arch.adr_immutable_history.json +1 -1
  8. package/catalog/policies/policy.arch.no_convenience_over_boundary.json +1 -1
  9. package/catalog/policies/policy.arch.prefer_verifiable_option.json +2 -2
  10. package/catalog/policies/policy.authz.no_gating_proxy_trust.json +1 -1
  11. package/catalog/policies/policy.authz.permission_scope_expansion_gate.json +1 -1
  12. package/catalog/policies/policy.authz.server_five_factor_verification.json +1 -1
  13. package/catalog/policies/policy.be.conc.prefer_db_constraints.json +1 -1
  14. package/catalog/policies/policy.be.db.expand_migrate_contract.json +1 -1
  15. package/catalog/policies/policy.be.idem.key_payload_conflict.json +1 -1
  16. package/catalog/policies/policy.be.model.single_boundary_conversion.json +1 -1
  17. package/catalog/policies/policy.be.sql.index_for_known_queries.json +1 -1
  18. package/catalog/policies/policy.be.state.single_rule_source.json +1 -1
  19. package/catalog/policies/policy.be.txn.short_locks_compensation.json +1 -1
  20. package/catalog/policies/policy.bound.search_first_entry_only.json +1 -1
  21. package/catalog/policies/policy.boundary.validate_in_encode_out.json +1 -1
  22. package/catalog/policies/policy.cache.failure_mode_guards.json +1 -1
  23. package/catalog/policies/policy.cache.schema_versioning.json +1 -1
  24. package/catalog/policies/policy.cfg.config_attribute_completeness.json +1 -1
  25. package/catalog/policies/policy.cfg.key_rename_dual_read.json +1 -1
  26. package/catalog/policies/policy.cfg.no_secret_dispersal.json +1 -1
  27. package/catalog/policies/policy.cfg.production_safe_defaults.json +1 -1
  28. package/catalog/policies/policy.cfg.schema_backed_config.json +1 -1
  29. package/catalog/policies/policy.chg.no_unrelated_changes.json +1 -1
  30. package/catalog/policies/policy.contract.no_invented_facts.json +1 -1
  31. package/catalog/policies/policy.dep.build_path_supply_chain.json +1 -1
  32. package/catalog/policies/policy.dep.no_untrusted_source_no_lock_bypass.json +1 -1
  33. package/catalog/policies/policy.dep.time_boxed_urgent_exception.json +1 -1
  34. package/catalog/policies/policy.deploy.no_dev_env_as_production_fact.json +1 -1
  35. package/catalog/policies/policy.deploy.operational_capabilities.json +1 -1
  36. package/catalog/policies/policy.deploy.runtime_fact_record.json +1 -1
  37. package/catalog/policies/policy.err.failure_five_part_mapping.json +1 -1
  38. package/catalog/policies/policy.err.no_internal_detail_exposure.json +1 -1
  39. package/catalog/policies/policy.err.published_code_immutable.json +1 -1
  40. package/catalog/policies/policy.evid.acceptance_binds_verifiable_evidence.json +1 -1
  41. package/catalog/policies/policy.evid.no_silent_gate_removal.json +1 -1
  42. package/catalog/policies/policy.evid.no_unverifiable_pass.json +1 -1
  43. package/catalog/policies/policy.flag.cleanup_after_full_rollout.json +1 -1
  44. package/catalog/policies/policy.flag.consistent_off_state.json +1 -1
  45. package/catalog/policies/policy.flag.kill_switch.json +1 -1
  46. package/catalog/policies/policy.flag.lifecycle_metadata.json +1 -1
  47. package/catalog/policies/policy.flag.not_a_permission.json +1 -1
  48. package/catalog/policies/policy.gate.p0_non_bypassable.json +1 -1
  49. package/catalog/policies/policy.gate.risk_factors_confirmed.json +1 -1
  50. package/catalog/policies/policy.guard.no_check_weakening.json +2 -2
  51. package/catalog/policies/policy.integration.call_definition_minimum.json +1 -1
  52. package/catalog/policies/policy.integration.fault_containment.json +1 -1
  53. package/catalog/policies/policy.job.lifecycle_definition.json +1 -1
  54. package/catalog/policies/policy.job.no_unmanaged_execution.json +1 -1
  55. package/catalog/policies/policy.job.operational_features.json +1 -1
  56. package/catalog/policies/policy.obs.actionable_signals.json +1 -1
  57. package/catalog/policies/policy.obs.alert_with_owner.json +1 -1
  58. package/catalog/policies/policy.obs.context_field_baseline.json +1 -1
  59. package/catalog/policies/policy.obs.no_sensitive_or_unbounded_logging.json +1 -1
  60. package/catalog/policies/policy.obs.no_sensitive_raw_values.json +1 -1
  61. package/catalog/policies/policy.obs.signal_change_impact.json +1 -1
  62. package/catalog/policies/policy.obs.source_map_access_control.json +1 -1
  63. package/catalog/policies/policy.obs.telemetry_lifecycle_declared.json +1 -1
  64. package/catalog/policies/policy.obs.trace_correlation.json +1 -1
  65. package/catalog/policies/policy.perf.budget_change_retest.json +1 -1
  66. package/catalog/policies/policy.perf.evidence_binding.json +1 -1
  67. package/catalog/policies/policy.perf.observation_dimensions.json +1 -1
  68. package/catalog/policies/policy.proc.checklist_change_policy.json +2 -2
  69. package/catalog/policies/policy.proc.scope_drift_reclassify.json +1 -1
  70. package/catalog/policies/policy.prv.processing_scope_re_review.json +1 -1
  71. package/catalog/policies/policy.prv.sensitive_data_six_facts.json +1 -1
  72. package/catalog/policies/policy.registry.human_fields_validated_decorrelated.json +1 -1
  73. package/catalog/policies/policy.rel.no_irreversible_unmonitored_full_release.json +1 -1
  74. package/catalog/policies/policy.rel.observability_before_ship.json +1 -1
  75. package/catalog/policies/policy.rel.process_change_needs_drill_audit.json +1 -1
  76. package/catalog/policies/policy.rel.traceable_build.json +1 -1
  77. package/catalog/policies/policy.role.human_signs_for_ai.json +1 -1
  78. package/catalog/policies/policy.sec.authn_policy_unified.json +1 -1
  79. package/catalog/policies/policy.sec.no_client_side_trust.json +4 -1
  80. package/catalog/policies/policy.sec.no_longterm_security_disable.json +1 -1
  81. package/catalog/policies/policy.sec.no_script_readable_credentials.json +1 -1
  82. package/catalog/policies/policy.sec.no_secrets_in_client_surface.json +2 -2
  83. package/catalog/policies/policy.sec.relaxation_approval.json +1 -1
  84. package/catalog/policies/policy.sec.security_relaxation_gate.json +4 -1
  85. package/catalog/policies/policy.sec.trust_boundary_enforcement.json +4 -1
  86. package/catalog/policies/policy.sec.upload_download_server_recheck.json +1 -1
  87. package/catalog/policies/policy.sec.url_source_allowlist.json +1 -1
  88. package/catalog/policies/policy.spec.family_conflict_precedence.json +1 -1
  89. package/catalog/policies/policy.spec.freeze_before_use.json +1 -1
  90. package/catalog/policies/policy.spec.primary_source_basis.json +1 -1
  91. package/catalog/policies/policy.struct.module_entry_dependency_declared.json +1 -1
  92. package/catalog/policies/policy.struct.no_unexplained_top_level_dir.json +1 -1
  93. package/catalog/policies/policy.struct.reuse_proven_structure.json +1 -1
  94. package/catalog/policies/policy.test.control_nondeterminism_keep_diagnosis.json +1 -1
  95. package/catalog/policies/policy.test.isolation_and_cleanup.json +1 -1
  96. package/catalog/policies/policy.test.no_synthetic_stability.json +1 -1
  97. package/catalog/policies/policy.test.pyramid_and_ci_matrix.json +1 -1
  98. package/catalog/policies/policy.test.removal_justification.json +1 -1
  99. package/catalog/policies/policy.test.removal_needs_substitute_evidence.json +1 -1
  100. package/catalog/policies/policy.test.risk_driven_plan.json +1 -1
  101. package/catalog/policies/policy.test.stable_observable_assertions.json +1 -1
  102. package/catalog/policies/policy.tool.discoverable_toolchain.json +1 -1
  103. package/catalog/policies/policy.tool.no_hand_edit_generated_no_ci_drift.json +1 -1
  104. package/catalog/policies/policy.tool.no_vendored_body_edits.json +1 -1
  105. package/catalog/policies/policy.tool.upgrade_verify_lock_rollback.json +1 -1
  106. package/catalog/policies/policy.web.comp.no_trivial_or_god_component.json +1 -1
  107. package/catalog/policies/policy.web.comp.public_contract_completeness.json +1 -1
  108. package/catalog/policies/policy.web.copy.action_object_clarity.json +1 -1
  109. package/catalog/policies/policy.web.copy.enumerable_placement.json +1 -1
  110. package/catalog/policies/policy.web.copy.error_next_step.json +1 -1
  111. package/catalog/policies/policy.web.handoff.state_matrix_full.json +1 -1
  112. package/catalog/policies/policy.web.i18n.copy_key_discipline.json +1 -1
  113. package/catalog/policies/policy.web.i18n.raw_value_for_compute.json +1 -1
  114. package/catalog/policies/policy.web.page.region_consistency.json +1 -1
  115. package/catalog/policies/policy.web.track.attempt_result_correlation.json +1 -1
  116. package/catalog/policies/policy.web.track.no_synthetic_actions.json +1 -1
  117. package/catalog/policies/policy.web.track.typed_client_validation.json +1 -1
  118. package/catalog/policies/policy.wf.no_planned_as_verified.json +1 -1
  119. package/catalog/policies/policy.wf.task_facts_preconfirm.json +1 -1
  120. package/dist/bin.js +10121 -6733
  121. package/package.json +1 -1
  122. package/seeds/aggregation-manifest.json +691 -0
  123. package/seeds/manifest.json +466 -1043
  124. package/seeds/specs/hard/stacks/antdesign/antdesign-ui-overlay.md +48 -0
  125. package/seeds/specs/hard/stacks/antdesign/index.md +20 -0
  126. package/seeds/specs/hard/stacks/css/css-system-overlay.md +52 -0
  127. package/seeds/specs/hard/stacks/css/index.md +20 -0
  128. package/seeds/specs/hard/stacks/geist/geist-design-system-overlay.md +48 -0
  129. package/seeds/specs/hard/stacks/geist/index.md +20 -0
  130. package/seeds/specs/hard/stacks/vue3/index.md +20 -0
  131. package/seeds/specs/hard/stacks/vue3/vue3-framework-overlay.md +71 -0
  132. package/seeds/specs/hard/themes/ai-generated-code.md +171 -0
  133. package/seeds/specs/hard/themes/api-contract-and-error-semantics.md +532 -0
  134. package/seeds/specs/hard/themes/architecture-and-module-boundaries.md +323 -0
  135. package/seeds/specs/hard/themes/data-and-transactions.md +582 -0
  136. package/seeds/specs/hard/themes/engineering-toolchain-and-dependencies.md +333 -0
  137. package/seeds/specs/hard/themes/environment-and-configuration.md +196 -0
  138. package/seeds/specs/hard/themes/frontend-state-and-client-data.md +342 -0
  139. package/seeds/specs/hard/themes/index.md +374 -0
  140. package/seeds/specs/hard/themes/integration-and-async-runtime.md +331 -0
  141. package/seeds/specs/hard/{frontend/38-internationalization-protocol.md → themes/internationalization-and-copywriting.md} +112 -5
  142. package/seeds/specs/hard/themes/observability-and-analytics.md +305 -0
  143. package/seeds/specs/hard/themes/page-composition-and-browser-environment.md +554 -0
  144. package/seeds/specs/hard/{frontend/31-performance-protocol.md → themes/performance-and-capacity.md} +95 -6
  145. package/seeds/specs/hard/themes/permission-and-authorization.md +168 -0
  146. package/seeds/specs/hard/themes/privacy-and-data-lifecycle.md +176 -0
  147. package/seeds/specs/hard/themes/release-and-feature-flags.md +237 -0
  148. package/seeds/specs/hard/{frontend/04-security-protocol.md → themes/security.md} +95 -6
  149. package/seeds/specs/hard/themes/task-governance-and-acceptance.md +554 -0
  150. package/seeds/specs/hard/themes/testing-and-verification.md +266 -0
  151. package/seeds/specs/hard/themes/ui-presentation-and-design.md +670 -0
  152. package/seeds/specs/hard/themes/value-semantics-and-domain-data.md +339 -0
  153. package/seeds/specs/hard/backend/01-architecture-governance-protocol.md +0 -68
  154. package/seeds/specs/hard/backend/02-project-structure-governance-protocol.md +0 -68
  155. package/seeds/specs/hard/backend/03-directory-boundary-protocol.md +0 -68
  156. package/seeds/specs/hard/backend/04-layering-architecture-protocol.md +0 -68
  157. package/seeds/specs/hard/backend/05-task-workflow-protocol.md +0 -68
  158. package/seeds/specs/hard/backend/06-ai-generated-code-protocol.md +0 -68
  159. package/seeds/specs/hard/backend/07-evidence-acceptance-protocol.md +0 -68
  160. package/seeds/specs/hard/backend/08-contract-change-protocol.md +0 -68
  161. package/seeds/specs/hard/backend/09-role-responsibility-protocol.md +0 -68
  162. package/seeds/specs/hard/backend/10-security-protocol.md +0 -68
  163. package/seeds/specs/hard/backend/11-environment-configuration-protocol.md +0 -67
  164. package/seeds/specs/hard/backend/12-api-contract-protocol.md +0 -68
  165. package/seeds/specs/hard/backend/13-privacy-data-lifecycle-protocol.md +0 -68
  166. package/seeds/specs/hard/backend/14-business-rules-state-protocol.md +0 -68
  167. package/seeds/specs/hard/backend/15-data-model-protocol.md +0 -68
  168. package/seeds/specs/hard/backend/16-error-code-protocol.md +0 -68
  169. package/seeds/specs/hard/backend/17-permission-authorization-protocol.md +0 -68
  170. package/seeds/specs/hard/backend/18-database-schema-migration-protocol.md +0 -68
  171. package/seeds/specs/hard/backend/19-query-index-sql-protocol.md +0 -68
  172. package/seeds/specs/hard/backend/20-transaction-boundary-protocol.md +0 -68
  173. package/seeds/specs/hard/backend/21-concurrency-locking-protocol.md +0 -68
  174. package/seeds/specs/hard/backend/22-idempotency-protocol.md +0 -68
  175. package/seeds/specs/hard/backend/23-cache-redis-consistency-protocol.md +0 -68
  176. package/seeds/specs/hard/backend/24-external-integration-resilience-protocol.md +0 -68
  177. package/seeds/specs/hard/backend/25-async-job-scheduler-protocol.md +0 -68
  178. package/seeds/specs/hard/backend/26-engineering-tooling-protocol.md +0 -68
  179. package/seeds/specs/hard/backend/27-dependency-supply-chain-protocol.md +0 -68
  180. package/seeds/specs/hard/backend/28-testing-protocol.md +0 -68
  181. package/seeds/specs/hard/backend/29-observability-logging-tracing-protocol.md +0 -68
  182. package/seeds/specs/hard/backend/30-performance-capacity-protocol.md +0 -68
  183. package/seeds/specs/hard/backend/31-runtime-deployment-protocol.md +0 -68
  184. package/seeds/specs/hard/backend/32-release-versioning-rollback-protocol.md +0 -68
  185. package/seeds/specs/hard/backend/index.md +0 -177
  186. package/seeds/specs/hard/frontend/01-development-checklist-protocol.md +0 -86
  187. package/seeds/specs/hard/frontend/02-ai-generated-code-protocol.md +0 -82
  188. package/seeds/specs/hard/frontend/03-acceptance-gate-protocol.md +0 -86
  189. package/seeds/specs/hard/frontend/05-environment-configuration-protocol.md +0 -80
  190. package/seeds/specs/hard/frontend/06-change-governance-protocol.md +0 -90
  191. package/seeds/specs/hard/frontend/07-frontend-backend-communication-protocol.md +0 -219
  192. package/seeds/specs/hard/frontend/08-role-responsibility-protocol.md +0 -80
  193. package/seeds/specs/hard/frontend/09-module-boundary-protocol.md +0 -81
  194. package/seeds/specs/hard/frontend/10-engineering-tooling-protocol.md +0 -89
  195. package/seeds/specs/hard/frontend/11-dependency-package-management-protocol.md +0 -87
  196. package/seeds/specs/hard/frontend/12-business-rules-protocol.md +0 -79
  197. package/seeds/specs/hard/frontend/13-monetary-precision-protocol.md +0 -81
  198. package/seeds/specs/hard/frontend/14-data-model-protocol.md +0 -85
  199. package/seeds/specs/hard/frontend/15-request-api-protocol.md +0 -87
  200. package/seeds/specs/hard/frontend/16-error-handling-protocol.md +0 -79
  201. package/seeds/specs/hard/frontend/17-permission-protocol.md +0 -79
  202. package/seeds/specs/hard/frontend/18-state-management-protocol.md +0 -88
  203. package/seeds/specs/hard/frontend/19-cache-protocol.md +0 -79
  204. package/seeds/specs/hard/frontend/20-testing-protocol.md +0 -88
  205. package/seeds/specs/hard/frontend/21-design-system-protocol.md +0 -79
  206. package/seeds/specs/hard/frontend/22-theme-protocol.md +0 -79
  207. package/seeds/specs/hard/frontend/23-accessibility-protocol.md +0 -189
  208. package/seeds/specs/hard/frontend/24-component-protocol.md +0 -80
  209. package/seeds/specs/hard/frontend/25-page-structure-protocol.md +0 -79
  210. package/seeds/specs/hard/frontend/26-style-layout-protocol.md +0 -80
  211. package/seeds/specs/hard/frontend/27-rendering-state-protocol.md +0 -81
  212. package/seeds/specs/hard/frontend/28-form-protocol.md +0 -88
  213. package/seeds/specs/hard/frontend/29-routing-url-protocol.md +0 -79
  214. package/seeds/specs/hard/frontend/30-data-grid-protocol.md +0 -83
  215. package/seeds/specs/hard/frontend/32-file-import-export-protocol.md +0 -80
  216. package/seeds/specs/hard/frontend/33-release-versioning-protocol.md +0 -79
  217. package/seeds/specs/hard/frontend/34-monitoring-logging-protocol.md +0 -128
  218. package/seeds/specs/hard/frontend/35-mock-protocol.md +0 -97
  219. package/seeds/specs/hard/frontend/36-feature-flag-protocol.md +0 -79
  220. package/seeds/specs/hard/frontend/37-browser-device-compatibility-protocol.md +0 -83
  221. package/seeds/specs/hard/frontend/39-copywriting-protocol.md +0 -79
  222. package/seeds/specs/hard/frontend/40-analytics-protocol.md +0 -98
  223. package/seeds/specs/hard/frontend/41-design-handoff-protocol.md +0 -80
  224. package/seeds/specs/hard/frontend/42-browser-runtime-lifecycle-protocol.md +0 -86
  225. package/seeds/specs/hard/frontend/43-time-temporal-protocol.md +0 -86
  226. package/seeds/specs/hard/frontend/44-privacy-data-lifecycle-protocol.md +0 -87
  227. package/seeds/specs/hard/frontend/45-browser-storage-protocol.md +0 -87
  228. package/seeds/specs/hard/frontend/index.md +0 -308
@@ -1,83 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/30-data-grid-protocol.md
3
- seed_source_sha256: c702a9956fd5e7aac40e1eefebcdd7a3518b95bd1a750bfcb31cbaddb80f41ff
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 30 数据表格协议
14
-
15
- ## Scope
16
-
17
- P1。定义表格壳、列 schema、列宽、固定列、分页、排序筛选、虚拟滚动、列配置和导出。
18
-
19
- ## Non-Scope
20
-
21
- 不定义业务字段口径,不允许表格库决定页面权限和数据契约。
22
-
23
- ## Terms
24
-
25
- - Grid Type:可编辑宽表、只读表、报表、主数据表等类型。
26
- - Column Schema:列 key、类型、宽度、权限和行为契约。
27
- - Saved View:用户保存的列、筛选和排序配置。
28
-
29
- ## MUST
30
-
31
- - 表格通过统一壳和 typed Column Schema 渲染。
32
- - 每列有稳定 key、标题、值类型、宽度策略、权限和导出规则。
33
- - 大数据使用服务端分页/筛选/排序及虚拟化。
34
- - 列配置按页面、表格、用户和 schema 版本隔离。
35
- - 列宽修复先判断单页、同类型、领域 preset、表格壳或全局 token。
36
- - 公共壳变更验证全部 Grid Type。
37
- - 表格的交互状态(行 click / double-click / select / drag-select / 列头排序 click / 单元格 focus 等)MUST 在 `interaction-contract-registry` 中逐项声明,每项绑定触发的 `action_id` 与调用的 `api_requirement_ids`;表格不得存在未声明的交互。并非每个表格都要支持所有交互,但所支持的交互子集 MUST 显式界定并说明触发后果。排斥键盘的交互(drag / drag-select / hover-only)MUST 声明键盘等价路径(协议 23)。
38
-
39
- ## MUST NOT
40
-
41
- - MUST NOT template 手写列或跨页面复制列数组。
42
- - MUST NOT 为单页列宽修改全局 CSS。
43
- - MUST NOT 不同类型表格共享污染配置 key。
44
- - MUST NOT 前端加载全量数据假分页。
45
-
46
- ## SHOULD
47
-
48
- - SHOULD 固定关键标识/操作列并限制冻结总宽。
49
- - SHOULD 支持键盘、复制粘贴、冲突和保存视图的明确契约。
50
-
51
- ## Contract
52
-
53
- ```text
54
- GridType, RowKey, ColumnSchema[], ServerOperations,
55
- Virtualization, SavedViewKey, ExportScope, Permissions,
56
- InteractionContracts[]
57
- ```
58
-
59
- ## Checklist
60
-
61
- - [ ] 表格由 schema 驱动。
62
- - [ ] 列宽影响层级正确。
63
- - [ ] 大数据和配置隔离安全。
64
- - [ ] 导出与当前视图一致。
65
- - [ ] 每个支持的交互(行点击/双击/拖选/排序/聚焦)在 interaction-contract-registry 声明并绑定 action + API。
66
-
67
- ## Examples
68
-
69
- ### 内容示例,可删除
70
-
71
- 同类型报表共享 column preset;单页例外写在 page contract,不改可编辑宽表。
72
-
73
- ## Anti-patterns
74
-
75
- 为某报表加全局 `.table td { width }`,导致所有列表和宽表一起变化。
76
-
77
- ## Ownership
78
-
79
- 表格平台 Owner 维护壳,领域 Owner 维护列 schema,页面 Owner 维护例外。
80
-
81
- ## Change Policy
82
-
83
- 列 schema 和保存视图结构必须版本化;公共行为变化遵循影响评估和视觉回归。
@@ -1,80 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/32-file-import-export-protocol.md
3
- seed_source_sha256: 2262d7ce2e910e4d64b0c6f3ef1af0b72c3cafc31d6cb1a796a8fb8b1801cbbc
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 32 文件、导入与导出协议
14
-
15
- ## Scope
16
-
17
- P1。定义文件上传、下载、模板、导入校验、错误明细、导出范围和后台任务。
18
-
19
- ## Non-Scope
20
-
21
- 不定义底层存储实现,不替代安全、权限和异步任务接口契约。
22
-
23
- ## Terms
24
-
25
- - Import Template:与 schema 版本匹配的输入模板。
26
- - Partial Success:部分行成功、失败、跳过或警告。
27
- - Export Scope:当前页、选中行、筛选全量、保存视图或汇总。
28
-
29
- ## MUST
30
-
31
- - 上传声明类型、大小、数量、文件名和安全校验。
32
- - 导入流程包含模板、上传、校验、任务、进度、结果和错误明细。
33
- - 错误明细至少包含行、列、字段、原值、错误码和修复建议。
34
- - 导出明确范围、字段、权限和有效期。
35
- - 大文件使用后台任务,完成后刷新依赖数据。
36
- - 下载时重新鉴权和校验数据范围。
37
-
38
- ## MUST NOT
39
-
40
- - MUST NOT 静默导入失败。
41
- - MUST NOT 大文件同步阻塞页面。
42
- - MUST NOT 页面自行拼导出字段或绕过权限。
43
- - MUST NOT 成功后遗漏缓存刷新。
44
-
45
- ## SHOULD
46
-
47
- - SHOULD 支持取消、重试、结果通知和来源页面跳转。
48
- - SHOULD 让模板和错误文件可追踪 schema 版本。
49
-
50
- ## Contract
51
-
52
- ```text
53
- FilePolicy, TemplateVersion, ImportJob,
54
- ErrorRowSchema, ExportScope, ResultExpiry, Permissions
55
- ```
56
-
57
- ## Checklist
58
-
59
- - [ ] 文件策略明确。
60
- - [ ] 导入全流程和部分成功完整。
61
- - [ ] 导出范围与权限一致。
62
- - [ ] 大文件任务化。
63
-
64
- ## Examples
65
-
66
- ### 内容示例,可删除
67
-
68
- 导入完成显示成功、失败、跳过和警告数量,并提供字段级错误文件。
69
-
70
- ## Anti-patterns
71
-
72
- 上传后只显示“导入失败”,没有行号、原因、TraceId 或重试路径。
73
-
74
- ## Ownership
75
-
76
- 业务 Owner 定义字段,文件/任务 Owner 维护流程,安全 Owner 维护文件策略。
77
-
78
- ## Change Policy
79
-
80
- 模板、字段和错误 schema 变化必须版本化并提供兼容/迁移说明。
@@ -1,79 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/33-release-versioning-protocol.md
3
- seed_source_sha256: aae0557f4935bac24d04e37ebde5638471b709ff568fea0d13de35bd5dd404af
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 33 版本与发布协议
14
-
15
- ## Scope
16
-
17
- P2。定义版本标识、分支/提交、灰度、回滚、公共 API 兼容和发布证据。
18
-
19
- ## Non-Scope
20
-
21
- 不替代验收门禁、组织发布平台和基础设施部署流程。
22
-
23
- ## Terms
24
-
25
- - App Version:可关联提交、构建、环境和 source map 的版本。
26
- - Gray Release:受控用户/环境范围内逐步发布。
27
- - Rollback:恢复到已验证版本和兼容状态。
28
-
29
- ## MUST
30
-
31
- - 每个构建有可观测版本和来源。
32
- - 发布前契约、测试、安全、配置、监控和回滚满足门禁。
33
- - 高风险变更定义灰度和停止条件。
34
- - 回滚同时考虑前端资源、接口、缓存、任务和数据兼容。
35
- - 公共 breaking change 先 deprecated 并提供迁移期。
36
-
37
- ## MUST NOT
38
-
39
- - MUST NOT 无版本标识发布。
40
- - MUST NOT 无回滚上线破坏性变化。
41
- - MUST NOT 直接删除公共 API。
42
- - MUST NOT 发布后才补监控和 source map。
43
-
44
- ## SHOULD
45
-
46
- - SHOULD 自动生成变更摘要和发布证据。
47
- - SHOULD 使用 Feature Flag 降低高风险上线范围。
48
-
49
- ## Contract
50
-
51
- ```text
52
- Version, Commit, BuildTime, Environment, Changes,
53
- Flags, Migration, Monitoring, Rollback, Owner
54
- ```
55
-
56
- ## Checklist
57
-
58
- - [ ] 版本可追踪。
59
- - [ ] 门禁和契约通过。
60
- - [ ] 灰度与回滚可执行。
61
- - [ ] deprecated/迁移完整。
62
-
63
- ## Examples
64
-
65
- ### 内容示例,可删除
66
-
67
- 公共组件新 API 与旧 API 并存一个迁移周期,再在版本公告后删除旧 API。
68
-
69
- ## Anti-patterns
70
-
71
- 静态资源已回滚,但新缓存 schema 和后台任务仍不兼容旧页面。
72
-
73
- ## Ownership
74
-
75
- 发布 Owner 负责流程,模块 Owner 负责兼容,平台 Owner 负责回滚和监控。
76
-
77
- ## Change Policy
78
-
79
- 版本和发布策略变化必须同步 CI/CD、门禁、文档和责任人。
@@ -1,128 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/34-monitoring-logging-protocol.md
3
- seed_source_sha256: 3c37c1c3aa3ade8d43532a1fcc7561e95aef42a19e46b6eb53d864054a2da013
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 34 监控与日志协议
14
-
15
- ## Scope
16
-
17
- P1。作为前端运行可观测性的主权威,定义结构化日志、技术遥测、错误与白屏、Trace/Span/Breadcrumb、RED 指标、RUM 采集、告警和遥测传输韧性。
18
-
19
- ## Non-Scope
20
-
21
- 不替代后端审计、基础设施容量监控和具体 APM 厂商选型;业务行为事件、漏斗和分析用途归 `40-analytics-protocol`,LCP/INP/CLS 等性能预算、RUM 统计口径和分位数归 `31-performance-protocol`。不允许监控收集权限外数据。
22
-
23
- ## Terms
24
-
25
- - Error Event:可定位的运行失败记录。
26
- - Trace:一次端到端请求的因果链,由 trace-id 贯穿。
27
- - Span:Trace 内的单个操作单元,记录开始/结束时间、父关系和受控元数据。
28
- - Breadcrumb:错误前的受控操作路径。
29
- - RED 指标:Rate(请求率)、Errors(错误率)、Duration(耗时)。
30
- - RUM:Real User Monitoring,采集真实用户设备、网络、性能和交互指标的运行监测方式。
31
- - Source Map:映射压缩代码到源代码的受控文件。
32
-
33
- ## MUST
34
-
35
- - 每个应用、页面和关键 API 面必须声明运行可观测性 Owner,负责日志字段、技术指标、追踪、告警和恢复证据。
36
- - 采集并分类运行错误、Promise rejection、资源失败、接口错误、白屏和根组件渲染失败;每类必须关联 `16-error-handling-protocol` 定义的 UI 状态与恢复策略。
37
- - 结构化日志包含时间、级别、稳定 message_id、版本、环境、页面、组件/操作、trace-id、浏览器和安全上下文摘要。
38
- - 关键 API 调用必须生成或传播 trace-id;请求、响应、错误日志与 breadcrumb 必须保持同一关联标识,Span 必须记录父子关系、耗时、结果和受控元数据。
39
- - HTTP client 与关键异步任务必须聚合 RED 指标;指标名称、单位、维度和版本必须稳定,完整 URL、DOM 文本、用户输入或其他高基数字段不得作为维度。
40
- - 启用 RUM 时必须采集真实用户运行信号,并携带页面类别、设备类别、网络类别、应用版本和指标版本;性能预算、统计窗口与分位数引用 `31-performance-protocol`,不得在本协议重复定义阈值。
41
- - source map 与版本对应且受权限保护。
42
- - 日志字段脱敏并限制请求/响应摘要。
43
- - 关键错误率、API 失败率、白屏率和运行退化信号必须有告警阈值、升级策略、负责人、静默窗口和运行手册。
44
- - 监控事件 schema、版本、采样率、批大小、缓存上限、刷新时机、重试退避、用途、保留期限和删除策略必须明确;页面隐藏、卸载或网络恢复时必须按受控策略尽力刷新待发送遥测。
45
- - 监控 SDK 初始化失败、遥测序列化失败或发送失败必须 fail-open,不得阻断应用主流程;失败本身必须产生可恢复的安全诊断信号,且缓存必须有容量与过期边界。
46
-
47
- ### 分层运行可观测性责任(按目录层级)
48
-
49
- 运行可观测性是架构期横切能力,层级划分与 `09-module-boundary-protocol` 一致。
50
-
51
- - **app 层 — 启动与全局运行观测**:初始化日志、指标、追踪和 RUM SDK,注册全局错误处理器与白屏检测,声明全局 trace 传播策略;不得用入口 console 输出替代生产遥测或吞错不上报。
52
- - **platform 层 — 状态与网络观测**:统一记录全局状态操作的受控 span,在 HTTP client 注入请求/响应拦截、RED 指标与 trace-id;不得记录完整状态对象或让业务请求自定义 trace 头格式。
53
- - **api 层 — 请求链路观测**:记录请求分类、耗时、错误码、重试次数和 trace 传播;不得记录 token,也不得以完整 URL 或 DOM 文本制造高基数维度。
54
- - **domain 层 — 计算与转换观测**:记录复杂计算/转换耗时、输入量级、异常分支和异步任务状态;不得把 UI Toast/Alert 当作唯一诊断手段。
55
- - **feature 层 — 页面运行观测**:声明页面运行状态转换、错误边界、关键 API 技术信号和性能预算对比;业务 page-view/action 漏斗与事件去重归 `40-analytics-protocol`。
56
- - **shared 层 — 组件与工具观测**:公共组件暴露受控 telemetry hook,工具函数记录异常边界;不得把内部调试日志当正式遥测或硬编码业务分析 schema。
57
-
58
- ## MUST NOT
59
-
60
- - MUST NOT 记录 token、密码、敏感原值或完整文件。
61
- - MUST NOT 仅用 console 作为生产监控。
62
- - MUST NOT 捕获后静默吞错。
63
- - MUST NOT 公开部署 source map。
64
- - MUST NOT 把用户标识、PII、认证信息或业务原值放入 Trace Context、breadcrumb 或高基数字段。
65
- - MUST NOT 在没有 trace-id 的情况下发起关键 API 请求。
66
- - MUST NOT 让页面、组件或请求层各自发明不兼容的日志、指标或追踪字段。
67
- - MUST NOT 让 SDK 初始化、遥测缓存或发送重试阻塞首屏、用户操作或错误恢复。
68
- - MUST NOT 把业务行为漏斗、转化口径或分析用途定义在运行诊断 schema 中。
69
-
70
- ## SHOULD
71
-
72
- - SHOULD 关联用户操作、请求和异步任务 TraceId。
73
- - SHOULD 控制采样并防止告警风暴。
74
- - SHOULD 在启用分布式追踪时遵循 W3C Trace Context,并验证跨来源边界的头部传播和信任策略。
75
- - SHOULD 对告警关联运行手册、最近变更和可回滚版本。
76
- - SHOULD 对遥测批处理、缓存、退避和丢弃量建立自监控,但不得形成无限递归上报。
77
-
78
- ## Contract
79
-
80
- ```text
81
- SignalType, SchemaVersion, AppVersion, Environment, Page, ComponentOrOperation,
82
- TraceId, SpanId, ParentSpanId, MessageId, ErrorCode, Duration, SafeDimensions,
83
- SamplingPolicy, Retention, Timestamp, Owner
84
- ```
85
-
86
- 分层运行可观测性责任契约(与 `09-module-boundary-protocol` 层级一致):
87
-
88
- ```text
89
- Layer, Responsibility, CheckPoint, Forbidden
90
- app, SDK/全局错误/白屏/trace 策略, 初始化降级 + 全局处理器 + 版本绑定, console 替代遥测 / 吞错
91
- platform, 状态与网络技术遥测, store span + HTTP RED + trace 注入, 完整状态对象 / 自定义 trace 格式
92
- api, 请求链路, 分类 + 耗时 + 错误码 + 重试 + trace, token / 高基数 URL 或 DOM
93
- domain, 计算与异步任务, 耗时 + 数据量级 + 异常分支 + 任务状态, UI 提示作为唯一诊断
94
- feature, 页面运行状态, 错误边界 + 技术信号 + 性能预算引用, 重复定义业务分析漏斗
95
- shared, 公共 telemetry hook, 组件/工具异常边界, 调试日志当正式遥测 / 业务 schema 硬编码
96
- ```
97
-
98
- ## Checklist
99
-
100
- - [ ] 错误和白屏可定位。
101
- - [ ] 版本与 source map 对应。
102
- - [ ] 日志无敏感信息。
103
- - [ ] 告警和 Owner 明确。
104
- - [ ] Trace/Span/Breadcrumb 与关键 API、错误和异步任务可关联。
105
- - [ ] RED 与 RUM 技术信号有稳定名称、单位、维度和指标版本;预算与分位数口径引用 31。
106
- - [ ] schema、版本、采样、批处理、缓存、重试、保留和删除策略明确。
107
- - [ ] 遥测故障不影响主流程,Trace Context 不携带敏感数据。
108
- - [ ] 分层责任已按 app/platform/api/domain/feature/shared 分担并引用 09。
109
-
110
- ## Examples
111
-
112
- ### 内容示例,可删除
113
-
114
- 系统错误展示 TraceId;HTTP client、错误日志和 breadcrumb 记录同一 TraceId 与版本。遥测按受控批次发送,SDK 故障时主流程继续并记录安全降级信号,不记录输入原值。
115
-
116
- ## Anti-patterns
117
-
118
- 生产只打印 console.error,用户截图是唯一定位依据。
119
-
120
- 每个页面自行初始化 SDK、定义 trace 头和日志字段,导致链路无法关联;发送失败时无限重试并阻塞页面卸载。
121
-
122
- ## Ownership
123
-
124
- Observability/平台 Owner 维护运行遥测 schema、SDK、trace 传播和告警;模块 Owner 维护安全上下文与恢复映射;性能 Owner 维护 31 的预算与统计口径;数据/产品 Owner 维护 40 的业务分析事件;安全/隐私 Owner 审核字段、采样、保留和删除策略。
125
-
126
- ## Change Policy
127
-
128
- 运行遥测 schema、日志字段、技术指标、trace 传播、采样、批处理、缓存、重试、保留、告警和 source map 策略变化必须评审隐私、性能、成本、兼容性和可诊断性;不得把 31/40 的权威规则复制回本协议。
@@ -1,97 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/35-mock-protocol.md
3
- seed_source_sha256: c9288fe227cb26633d23c5d0e2e710b9cde716371f66cf3157c63b3ec8a58342
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 35 Mock 协议
14
-
15
- ## Scope
16
-
17
- P2。定义后端未就绪或测试时的 Mock 来源、场景、契约校验和启停。
18
-
19
- ## Non-Scope
20
-
21
- Mock 不定义正式业务规则,不替代接口契约和真实集成测试。
22
-
23
- ## Terms
24
-
25
- - Fixture:稳定可复用的测试数据。
26
- - Scenario:success、empty、error、timeout 等受控响应模式。
27
- - Contract Mock:由正式 schema 生成或校验的 Mock。
28
-
29
- ## MUST
30
-
31
- - Mock 字段符合正式接口契约。
32
- - Mock schema 必须与正式 OpenAPI 或等价契约保持一致;漂移必须被 CI 检测并阻断。
33
- - 覆盖 success、empty、large、slow、timeout、permission、conflict、error 和 partial success。
34
- - Fixture 使用稳定 id、时间和有种子的生成器。
35
- - Mock 通过统一环境开关启停,生产默认关闭。
36
- - 临时 Mock 必须记录 contract_version、到期日(expires_at)和替换状态(active/deprecated/removed)。
37
- - 真实接口接入后保留测试 Mock 并删除临时错误结构。
38
-
39
- ## MUST NOT
40
-
41
- - MUST NOT 只 Mock 成功小数据。
42
- - MUST NOT 用 Mock 推导正式字段和规则。
43
- - MUST NOT 在业务组件写 Mock 分支。
44
- - MUST NOT 生产默认启用 Mock。
45
-
46
- ## SHOULD
47
-
48
- - SHOULD 由契约生成类型和基础场景。
49
- - SHOULD 模拟幂等、409、429、断线和任务状态。
50
- - SHOULD 在 `outputs/frontend/10_planned/mock-contract.yaml` 中维护场景清单与契约版本绑定。
51
-
52
- ## Contract
53
-
54
- ```text
55
- Endpoint, ScenarioId, RequestMatch, ResponseSchema,
56
- Delay, Error, FixtureSeed, ContractVersion
57
- ```
58
-
59
- ### Mock 生命周期
60
-
61
- `outputs/frontend/10_planned/mock-contract.yaml` 记录每个 Mock 场景:
62
-
63
- ```text
64
- Endpoint, ScenarioId, ContractVersion, Status,
65
- ExpiresAt, ReplacementEndpoint, OpenapiDiffChecked
66
- ```
67
-
68
- - 临时 Mock 必须有到期日;到期前必须完成真实接口替换或显式延期。
69
- - 每个场景必须通过 OpenAPI diff 检查;漂移项必须阻塞合并。
70
-
71
- ## Checklist
72
-
73
- - [ ] 契约一致。
74
- - [ ] OpenAPI/契约漂移检查通过。
75
- - [ ] 非理想态完整。
76
- - [ ] 数据稳定可重复。
77
- - [ ] 生产安全关闭。
78
- - [ ] 临时 Mock 有到期日和替换状态。
79
- - [ ] mock-contract.yaml 已维护。
80
-
81
- ## Examples
82
-
83
- ### 内容示例,可删除
84
-
85
- 同一接口提供 normal、empty、409 和 slow 场景,组件测试通过 scenario id 切换。
86
-
87
- ## Anti-patterns
88
-
89
- 页面内写死假数组,字段与后端完全不同,联调时才重写页面。
90
-
91
- ## Ownership
92
-
93
- 契约 Owner 负责 schema,前端/QA 维护场景,平台 Owner 维护启停基础设施。
94
-
95
- ## Change Policy
96
-
97
- 契约变化必须同步 Mock;删除场景前确认无测试依赖。
@@ -1,79 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/36-feature-flag-protocol.md
3
- seed_source_sha256: ba6cf2d5607ba54d9864cd6c07899d2e13a8d33ea248fbd7469b92c23474f474
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 36 Feature Flag 协议
14
-
15
- ## Scope
16
-
17
- P2。定义功能开关来源、命名、灰度范围、关闭表现、默认值和生命周期。
18
-
19
- ## Non-Scope
20
-
21
- 不替代权限、业务状态和环境配置。
22
-
23
- ## Terms
24
-
25
- - Flag Key:稳定唯一的开关键。
26
- - Targeting:按环境、用户、角色或组织控制命中。
27
- - Kill Switch:紧急关闭新能力的开关。
28
-
29
- ## MUST
30
-
31
- - 每个 flag 有 owner、目的、默认值、目标范围、期限和清理日期。
32
- - 入口、路由和后台请求在关闭时一致停用。
33
- - 获取失败使用保守默认值。
34
- - Flag 与权限同时通过才允许操作。
35
- - 全量稳定后删除临时判断和旧路径。
36
-
37
- ## MUST NOT
38
-
39
- - MUST NOT 在多个页面手写同一判断。
40
- - MUST NOT 将 flag 当权限或业务状态。
41
- - MUST NOT 使用无 owner、无期限的永久临时 flag。
42
- - MUST NOT 关闭 UI 却继续触发后台请求。
43
-
44
- ## SHOULD
45
-
46
- - SHOULD 支持灰度、回滚、监控和实验审计。
47
- - SHOULD 对关键写操作提供 kill switch。
48
-
49
- ## Contract
50
-
51
- ```text
52
- FlagKey, Owner, Default, Targeting, Fallback,
53
- StartAt, EndAt, CleanupAt, Metrics
54
- ```
55
-
56
- ## Checklist
57
-
58
- - [ ] 默认和失败行为安全。
59
- - [ ] UI/路由/请求一致。
60
- - [ ] 不绕过权限。
61
- - [ ] 有清理日期。
62
-
63
- ## Examples
64
-
65
- ### 内容示例,可删除
66
-
67
- 新编辑器 flag 关闭后回到旧编辑器,相关新 API 不再调用。
68
-
69
- ## Anti-patterns
70
-
71
- 组件中散落环境判断,开关关闭后深链接仍能访问新功能。
72
-
73
- ## Ownership
74
-
75
- 功能 Owner 维护业务生命周期,平台 Owner 维护系统,安全/权限 Owner 审查边界。
76
-
77
- ## Change Policy
78
-
79
- Flag 语义和目标规则变化必须记录;转长期配置时迁移到正式配置系统。
@@ -1,83 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/37-browser-device-compatibility-protocol.md
3
- seed_source_sha256: 81c0d4bf8996f6cf6b38d1c8514385065785728011222b524d73d8135703a3b3
4
- seed_version: B6B-2
5
- lane: frontend
6
- status: CURRENT
7
- authority_scope: mixed_required_and_advisory
8
- applies_to: [frontend]
9
- related_evidence_specs: []
10
- related_tools: []
11
- ---
12
-
13
- # 37 浏览器与设备兼容协议
14
-
15
- ## Scope
16
-
17
- P2。定义支持浏览器、设备、分辨率、缩放、输入方式和不支持环境提示。
18
-
19
- ## Non-Scope
20
-
21
- 不要求所有项目支持移动端或旧浏览器,不替代响应式布局协议。
22
-
23
- ## Terms
24
-
25
- - Support Matrix:正式支持并测试的环境组合。
26
- - Graceful Degradation:能力不足时的安全降级。
27
- - Unsupported Environment:明确不提供质量承诺的环境。
28
-
29
- ## MUST
30
-
31
- - 明确浏览器及最低版本、操作系统、设备和输入方式。
32
- - 明确关键分辨率和 100%/125%/150% 等缩放矩阵。
33
- - 关键流程在所有支持组合验证。
34
- - 不支持环境提供可操作说明或安全降级。
35
- - 使用能力检测而非脆弱 user-agent 业务判断。
36
- - 支持矩阵必须覆盖关键 Web API 能力与约束,包括存储、权限、Worker、文件/媒体能力和长连接;能力缺失或被策略禁用时提供可测试降级。
37
- - 页面必须兼容 `pagehide` / `pageshow`、可见性变化和 bfcache 恢复;恢复后重新校验连接、缓存、权限与数据新鲜度。
38
-
39
- ## MUST NOT
40
-
41
- - MUST NOT 只在开发者默认环境验收。
42
- - MUST NOT 未测试就宣称支持。
43
- - MUST NOT 用缩小字体解决小屏。
44
- - MUST NOT 为旧环境引入无人维护的大型 polyfill。
45
- - MUST NOT 使用 `unload` 作为保存或清理的可靠信号;`beforeunload` 仅在存在未保存用户输入时按需注册并及时移除。
46
-
47
- ## SHOULD
48
-
49
- - SHOULD 优先支持组织真实使用环境。
50
- - SHOULD 自动运行代表性兼容测试。
51
-
52
- ## Contract
53
-
54
- ```text
55
- Browser, MinVersion, OS, Device, Viewport,
56
- Zoom, Input, SupportLevel, TestEvidence
57
- ```
58
-
59
- ## Checklist
60
-
61
- - [ ] 支持矩阵明确。
62
- - [ ] 关键视口与缩放通过。
63
- - [ ] 不支持提示可用。
64
- - [ ] polyfill 风险已评估。
65
- - [ ] 生命周期/bfcache 恢复通过,关键能力降级可验证。
66
-
67
- ## Examples
68
-
69
- ### 内容示例,可删除
70
-
71
- 企业桌面项目明确支持受管 Chrome/Edge 版本和关键办公分辨率,不含手机 Safari。
72
-
73
- ## Anti-patterns
74
-
75
- 只在 1920×1080@100% 测试,1366 笔记本上按钮和表格互相遮挡。
76
-
77
- ## Ownership
78
-
79
- 产品 Owner 定义范围,前端/QA 维护矩阵,平台 Owner 维护构建目标。
80
-
81
- ## Change Policy
82
-
83
- 增加或停止支持环境必须公告、更新构建与测试,并提供升级路径。