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,79 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/39-copywriting-protocol.md
3
- seed_source_sha256: 5df3a2ddcd1140b2e62dd80f547cf6c0197c44a91ebbdda02ded44bcaefed351
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
- # 39 文案协议
14
-
15
- ## Scope
16
-
17
- P2。定义按钮、确认、成功、错误、空态、删除、导入导出和高风险操作文案。
18
-
19
- ## Non-Scope
20
-
21
- 不定义业务规则和错误码,不允许文案隐藏系统行为。
22
-
23
- ## Terms
24
-
25
- - Actionable Copy:说明发生什么、影响什么和下一步的文案。
26
- - Risk Copy:明确不可逆性、对象和后果的文案。
27
-
28
- ## MUST
29
-
30
- - 按钮使用明确动作和对象。
31
- - 错误说明发生内容、可恢复性和下一步。
32
- - 空态区分无数据与筛选无结果。
33
- - 高风险确认明确对象、后果和是否可恢复。
34
- - 导入导出说明范围、进度、部分成功和结果有效期。
35
- - 同类操作使用同一名称和语气。
36
-
37
- ## MUST NOT
38
-
39
- - MUST NOT 直接展示后端原始 message 或技术堆栈。
40
- - MUST NOT 高风险操作只写“确定吗”。
41
- - MUST NOT 用颜色或感叹号代替清晰说明。
42
- - MUST NOT 用模糊“操作”“处理”隐藏动作。
43
-
44
- ## SHOULD
45
-
46
- - SHOULD 简洁、专业、可行动。
47
- - SHOULD 复用文案模板和错误码映射。
48
-
49
- ## Contract
50
-
51
- ```text
52
- Scenario, Title, Message, PrimaryAction,
53
- SecondaryAction, Consequence, Recoverability, TraceDisplay
54
- ```
55
-
56
- ## Checklist
57
-
58
- - [ ] 动作和对象明确。
59
- - [ ] 风险与恢复清晰。
60
- - [ ] 同类文案一致。
61
- - [ ] 无原始技术信息。
62
-
63
- ## Examples
64
-
65
- ### 内容示例,可删除
66
-
67
- “该数据已被其他人更新。请比较最新版本后重新提交。”
68
-
69
- ## Anti-patterns
70
-
71
- 系统异常只显示“失败!”,用户不知道对象、原因或下一步。
72
-
73
- ## Ownership
74
-
75
- 内容/产品 Owner 维护语气,领域 Owner 确认语义,前端负责正确映射。
76
-
77
- ## Change Policy
78
-
79
- 公共文案模板变化需评估全部场景;业务术语变化同步 i18n 和帮助内容。
@@ -1,98 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/40-analytics-protocol.md
3
- seed_source_sha256: f638c8054ba32d44a15f1dd4fa42b637e1f6ad39cd73c6e1d45cd5bfd71b2c56
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
- # 40 埋点协议
14
-
15
- ## Scope
16
-
17
- P2。作为业务行为分析的唯一权威,定义用户行为事件、关键业务动作、漏斗、事件 schema、上报时机、去重、同意/授权和分析用途。
18
-
19
- ## Non-Scope
20
-
21
- 不替代错误监控、技术 telemetry、Trace/Span、RUM 运行诊断和后端审计;这些运行可观测性规则归 `34-monitoring-logging-protocol`。LCP/INP/CLS 等性能预算与分位数归 `31-performance-protocol`。不允许收集未批准敏感数据。
22
-
23
- ## Terms
24
-
25
- - Event Schema:事件名和字段契约。
26
- - Funnel:按稳定业务阶段关联的一组行为事件,用于分析到达、转化、放弃和结果。
27
- - OperationId:关联 attempt/result 的操作标识。
28
- - Deduplication Key:防止重复上报的键。
29
- - Consent State:当前用户对非必要分析采集的同意、拒绝或撤回状态。
30
-
31
- ## MUST
32
-
33
- - 事件使用稳定 key,不使用显示文案。
34
- - 定义公共字段、业务白名单、触发时机和去重。
35
- - 每个分析事件必须声明 event_id、schema_version、业务目的、触发条件、字段白名单、隐私分类、Owner、目的地和保留策略;页面或组件不得临时扩展 schema。
36
- - attempt 与 result 通过 OperationId 关联。
37
- - 核心用户旅程必须以稳定业务阶段定义漏斗,并明确进入、成功、失败、放弃和不适用口径;漏斗不得依赖显示文案、DOM 或 URL 猜测。
38
- - 页面重渲染、自动刷新和重试不得误记为用户操作。
39
- - 敏感字段、搜索原文和业务原值默认不上传。
40
- - 新事件有 Owner、用途和保留策略。
41
- - 采集必须遵循适用的同意/授权状态;用户撤回后停止非必要采集,并清理或隔离尚未发送的数据。
42
- - 事件目的地与 payload 字段必须使用白名单;第三方分析脚本、转发规则和数据出境必须经过安全与隐私评审。
43
- - page-view、action、attempt/result 等事件必须使用稳定 page_id/action_id/operation_id 关联;技术 trace-id 仅可作为经批准的关联字段,不得把分析事件变成运行日志副本。
44
-
45
- ## MUST NOT
46
-
47
- - MUST NOT 同一行为多次上报或多名称。
48
- - MUST NOT 页面自行扩展不受控公共字段。
49
- - MUST NOT 用埋点代替审计。
50
- - MUST NOT 上报权限外数据。
51
- - MUST NOT 通过抓取 DOM、可见文本、URL 查询参数或用户输入来临时拼装分析数据。
52
- - MUST NOT 在同意状态未知或撤回后继续发送非必要分析事件。
53
- - MUST NOT 用业务分析事件替代错误、白屏、API RED、Trace/Span 或 RUM 技术遥测。
54
- - MUST NOT 把同一业务漏斗阶段在多个页面或组件中定义为不同语义。
55
-
56
- ## SHOULD
57
-
58
- - SHOULD 通过 typed analytics client 和 schema 校验。
59
- - SHOULD 监控事件质量、丢失和重复率。
60
- - SHOULD 对漏斗的迟到、乱序、重复、跨设备和 consent 变化定义明确处理策略。
61
-
62
- ## Contract
63
-
64
- ```text
65
- EventId, SchemaVersion, Purpose, FunnelId, FunnelStage, PageId, ActionId,
66
- Trigger, CommonFields, BusinessFields, OperationId, DedupKey, ConsentState,
67
- PrivacyClass, Destination, Owner, Retention
68
- ```
69
-
70
- ## Checklist
71
-
72
- - [ ] 名称和字段稳定。
73
- - [ ] 时机与去重正确。
74
- - [ ] 漏斗阶段、成功/失败/放弃口径和 OperationId 关联明确。
75
- - [ ] 隐私边界通过。
76
- - [ ] Owner 和用途明确。
77
- - [ ] 同意、撤回、目的地白名单和待发送队列清理已验证。
78
- - [ ] 业务事件未复制 34 的运行诊断或 31 的性能预算规则。
79
-
80
- ## Examples
81
-
82
- ### 内容示例,可删除
83
-
84
- 用户点击导出记录业务 `attempt`,后台任务完成记录 `result`,两者共享 operation id 并进入同一导出漏斗;API 耗时、错误码和 trace 诊断仍由 34 记录。
85
-
86
- ## Anti-patterns
87
-
88
- 按钮组件和页面都上报点击,导致同一行为计数两次且字段不同。
89
-
90
- 把 JS 错误、API RED 指标和 LCP 阈值塞进分析事件 schema,导致运行诊断、性能预算与业务转化口径互相污染。
91
-
92
- ## Ownership
93
-
94
- 数据/产品 Owner 定义用途,埋点平台 Owner 维护 schema,安全/隐私 Owner 审核字段。
95
-
96
- ## Change Policy
97
-
98
- 事件改名、字段语义和保留变化必须版本化并通知下游消费者。
@@ -1,80 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/41-design-handoff-protocol.md
3
- seed_source_sha256: 335df4991a29eb77222b0596de5db7fcc0bd5d9019ecf9bf882a08cea74c1937
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
- # 41 设计交付协议
14
-
15
- ## Scope
16
-
17
- P2。定义设计到代码的组件来源、token、状态、响应式、可访问性和验收交付。
18
-
19
- ## Non-Scope
20
-
21
- 不允许设计稿覆盖正式组件 API、安全、业务规则和工程边界。
22
-
23
- ## Terms
24
-
25
- - Design Handoff:可供实现和验收的完整设计交付。
26
- - State Matrix:默认、加载、空、错误、权限、禁用、长文本和小屏等状态。
27
- - Design Source:设计系统组件和 token 的唯一来源。
28
-
29
- ## MUST
30
-
31
- - 交付页面类型、组件来源、token、关键视口和交互流程。
32
- - 提供完整 State Matrix,不只理想态。
33
- - 标注响应式、长文本、缩放、键盘和焦点要求。
34
- - 表格/报表交付列宽、固定列、大数据和导出状态。
35
- - 设计变更有版本、原因、影响范围和通知。
36
- - 设计验收同时检查可用性、可访问性和契约。
37
-
38
- ## MUST NOT
39
-
40
- - MUST NOT 未标注来源就要求新建相似组件。
41
- - MUST NOT 用设计稿临时值覆盖 token。
42
- - MUST NOT 只交付桌面理想成功态。
43
- - MUST NOT 通过页面局部 CSS 修补系统问题。
44
-
45
- ## SHOULD
46
-
47
- - SHOULD 使用设计系统组件实例和 token 变量。
48
- - SHOULD 将高风险交互做可点击原型和键盘说明。
49
-
50
- ## Contract
51
-
52
- ```text
53
- PageOrComponent, DesignVersion, SourceComponents[],
54
- Tokens[], States[], Viewports[], Interaction, Accessibility, Owner
55
- ```
56
-
57
- ## Checklist
58
-
59
- - [ ] 组件和 token 来源明确。
60
- - [ ] 状态与视口完整。
61
- - [ ] 表格/长文本/a11y 已覆盖。
62
- - [ ] 版本和影响可追踪。
63
-
64
- ## Examples
65
-
66
- ### 内容示例,可删除
67
-
68
- 设计交付同时包含正常、无权限、错误、长文本、125% 缩放和键盘焦点状态。
69
-
70
- ## Anti-patterns
71
-
72
- 只有一张理想截图,未说明组件来源、错误状态和小屏行为,开发只能猜测。
73
-
74
- ## Ownership
75
-
76
- Design Owner 负责交付完整性,Frontend Owner 负责可实现性,QA/Accessibility Owner 负责验收。
77
-
78
- ## Change Policy
79
-
80
- 开发开始后的设计变化必须更新版本和影响范围;公共组件变化走变更治理。
@@ -1,86 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/42-browser-runtime-lifecycle-protocol.md
3
- seed_source_sha256: b328c8b3bab2006254587143c634e17ff554d2f0103056d07edba5ffaba29fe1
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
- # 42 浏览器运行时资源生命周期协议
14
-
15
- ## Scope
16
-
17
- P1。定义事件监听、计时器、动画帧、Observer、请求、流、长连接、Worker、对象 URL 和页面生命周期资源的所有权、暂停、恢复与释放。
18
-
19
- ## Non-Scope
20
-
21
- 不规定具体框架的生命周期 API,不替代请求重试、缓存新鲜度或后端连接治理。
22
-
23
- ## Terms
24
-
25
- - Runtime Resource:必须显式取得并释放的浏览器资源或异步工作。
26
- - Resource Owner:唯一负责创建、暂停、恢复和销毁资源的作用域。
27
- - Obsolete Work:页面、参数、身份或权限上下文变化后已不再有效的异步工作。
28
- - Page Lifecycle:页面可见、隐藏、冻结、恢复、前进后退缓存和销毁等状态。
29
-
30
- ## MUST
31
-
32
- - 每个 Runtime Resource 必须声明 Owner、创建条件、释放动作、暂停/恢复策略和失效触发器。
33
- - `addEventListener`、计时器、动画帧、Observer、订阅、流、WebSocket、EventSource、BroadcastChannel、Worker 和对象 URL 必须有成对的移除、清除、断开、关闭、终止或撤销动作。
34
- - 请求、异步计算和回调在作用域结束或上下文变化时必须取消;无法取消时必须在提交结果前验证当前请求、身份、权限和参数版本。
35
- - 路由离开、组件销毁、注销、切换账号/租户、权限变化和功能关闭必须清理对应资源与敏感上下文。
36
- - 页面隐藏、冻结或进入前进后退缓存时必须暂停无必要轮询和高频工作;恢复时重新验证数据新鲜度、连接状态和权限上下文。
37
- - `beforeunload` 只能在确有未保存数据时动态注册,并在风险解除后移除。
38
- - 重复进入、挂载、恢复或重试必须保持资源数量有界,并有自动化证据证明不会重复订阅或产生开放句柄。
39
-
40
- ## MUST NOT
41
-
42
- - MUST NOT 依赖 `unload` 完成保存、上报、释放或业务提交。
43
- - MUST NOT 让过期请求、Worker 或订阅结果覆盖新状态。
44
- - MUST NOT 在隐藏或冻结页面持续无必要轮询、动画或重计算。
45
- - MUST NOT 创建没有 Owner 和释放路径的全局监听、计时器、Observer、长连接或第三方实例。
46
- - MUST NOT 在作用域销毁后继续写入 UI、缓存或用户状态。
47
-
48
- ## SHOULD
49
-
50
- - SHOULD 使用 `AbortSignal` 或等价的统一取消机制聚合作用域内资源。
51
- - SHOULD 为复杂页面提供资源注册表或诊断计数,便于测试重复挂载、导航和恢复。
52
- - SHOULD 优先使用 `pagehide`、`pageshow`、`visibilitychange` 等可恢复的页面生命周期信号。
53
-
54
- ## Contract
55
-
56
- ```text
57
- ResourceId, ResourceType, OwnerScope, AcquireCondition,
58
- PauseTrigger, ResumeTrigger, DisposeAction, InvalidationTriggers[],
59
- LateResultGuard, DiagnosticEvidence
60
- ```
61
-
62
- ## Checklist
63
-
64
- - [ ] 每个资源有唯一 Owner 和成对释放动作。
65
- - [ ] 路由、身份、权限和参数变化会取消旧工作。
66
- - [ ] 隐藏、冻结和恢复行为已验证。
67
- - [ ] 重复挂载不会增加订阅或开放句柄。
68
- - [ ] 不依赖 unload 完成关键行为。
69
-
70
- ## Examples
71
-
72
- ### 内容示例,可删除
73
-
74
- 页面作用域通过同一个取消信号管理请求和事件监听;离开页面时关闭订阅、终止 Worker、撤销对象 URL,并拒绝晚到结果写回。
75
-
76
- ## Anti-patterns
77
-
78
- 每次进入页面都新增轮询和全局监听,离开时不清理;返回页面后同一消息被处理多次,旧请求还覆盖了新筛选结果。
79
-
80
- ## Ownership
81
-
82
- 平台 Owner 维护资源基础设施,页面/组件 Owner 声明资源边界,测试 Owner 验证释放和恢复行为。
83
-
84
- ## Change Policy
85
-
86
- 新增资源类型或改变生命周期时必须同步 Owner、释放、恢复、身份失效和测试证据,并检查 `universal:performance-protocol`、`universal:state-management-protocol` 与 `universal:security-protocol`。
@@ -1,86 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/43-time-temporal-protocol.md
3
- seed_source_sha256: 4669cc3d927289f99bbd66c3e906f97d548f0cf8ea9e94b66e8b21cb24d00afb
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
- # 43 时间、日期与时区协议
14
-
15
- ## Scope
16
-
17
- P1。定义时间点、日历日期、墙上时间、带时区计划、持续时长、序列化、计算、显示和测试语义。
18
-
19
- ## Non-Scope
20
-
21
- 不决定项目业务时区、营业日历、节假日或具体日期库,不替代国际化显示协议。
22
-
23
- ## Terms
24
-
25
- - Instant:全球唯一的精确时间点。
26
- - Local Date:不带时间与时区的日历日期。
27
- - Wall-clock Time:某地日历和时钟上的本地时间,不天然对应唯一 Instant。
28
- - Zoned Schedule:带命名时区和日历规则的计划时间。
29
- - Duration:两个时间点之间的经过量或业务定义时长。
30
-
31
- ## MUST
32
-
33
- - 每个时间字段必须分类为 Instant、Local Date、Wall-clock Time、Zoned Schedule 或 Duration,并在契约中记录精度、时区、日历和空值语义。
34
- - 跨系统传输必须使用无歧义、版本化的机器格式;Instant 携带 UTC 或明确 offset,Zoned Schedule 同时保留命名时区。
35
- - Local Date 不得隐式转换为午夜 Instant;Wall-clock Time 转换为 Instant 时必须提供时区和夏令时歧义策略。
36
- - 解析必须使用明确格式,不依赖浏览器 locale、宿主默认时区或实现相关的字符串猜测。
37
- - 比较、排序、筛选和计算必须使用规范化原始值,不得使用本地化显示文本。
38
- - 时间单位必须显式,秒、毫秒、微秒等不得依靠数值大小猜测。
39
- - 当前时间必须经可替换 Clock 获取;测试必须固定 Clock、时区和 locale,并覆盖月末、闰日、夏令时跳变及重复时刻。
40
- - 经过时长和超时测量必须使用不受系统时钟回拨影响的单调时间来源;业务日历计算使用明确规则。
41
-
42
- ## MUST NOT
43
-
44
- - MUST NOT 用字符串截断、手工 offset 加减或固定 24 小时替代日历/时区运算。
45
- - MUST NOT 把无时区值静默解释为浏览器本地时区或 UTC。
46
- - MUST NOT 混用秒与毫秒、日期与时间点、经过时长与日历天数。
47
- - MUST NOT 将格式化后的日期时间用于计算、排序、缓存键或接口提交。
48
- - MUST NOT 在业务代码中直接读取不可控的系统当前时间。
49
-
50
- ## SHOULD
51
-
52
- - SHOULD 使用能区分日期、时间点、带时区时间和 Duration 的标准平台 API 或经评审的时间库。
53
- - SHOULD 在用户界面明确展示与用户预期不同的业务时区。
54
- - SHOULD 在日志和审计中同时记录规范化时间、时区上下文和事件顺序标识。
55
-
56
- ## Contract
57
-
58
- ```text
59
- Field, TemporalKind, MachineFormat, Precision, TimeZone,
60
- Calendar, AmbiguityPolicy, DisplayZone, ClockSource, TestMatrix
61
- ```
62
-
63
- ## Checklist
64
-
65
- - [ ] 时间字段类型和单位无歧义。
66
- - [ ] 日期、时间点和带时区计划未混用。
67
- - [ ] 解析、排序和计算不依赖显示文本或宿主默认值。
68
- - [ ] Clock 可替换,边界日期和夏令时已有测试。
69
-
70
- ## Examples
71
-
72
- ### 内容示例,可删除
73
-
74
- 审计事件保存为 Instant,生日保存为 Local Date,跨地区会议保存为带命名时区的 Zoned Schedule;三者使用不同类型和 adapter。
75
-
76
- ## Anti-patterns
77
-
78
- 把 `YYYY-MM-DD` 直接构造成时间点,再用浏览器默认时区显示,导致部分地区日期前移或后移一天。
79
-
80
- ## Ownership
81
-
82
- 领域 Owner 定义业务时间语义,接口 Owner 定义传输格式,前端平台 Owner 维护 Clock、解析和格式化能力。
83
-
84
- ## Change Policy
85
-
86
- 改变时间类型、精度、时区或序列化格式属于契约变更,必须迁移数据、缓存、测试和调用方,并同步 `universal:data-model-protocol` 与 `universal:internationalization-protocol`。
@@ -1,87 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/44-privacy-data-lifecycle-protocol.md
3
- seed_source_sha256: 5b3472bba296c1bb437c3ce41e1c937b636605e39b78cf06747d1010e46ba08e
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
- # 44 隐私与客户端数据生命周期协议
14
-
15
- ## Scope
16
-
17
- P0。约束个人、敏感和可关联数据在前端的收集、访问、传输、存储、复制、第三方共享、保留、撤回与清理。
18
-
19
- ## Non-Scope
20
-
21
- 不替代适用法律、组织隐私政策、后端数据治理或安全控制;安全负责防止未授权访问,隐私还负责数据是否必要以及应保留多久。
22
-
23
- ## Terms
24
-
25
- - Data Purpose:收集或处理数据的明确用户/业务目的。
26
- - Data Minimization:仅处理实现已批准目的所需的最少数据。
27
- - User Control:同意、拒绝、撤回、删除或选择数据范围的有效机制。
28
- - Privacy Boundary:数据进入浏览器、第三方 SDK、剪贴板、通知、下载或监控系统的边界。
29
-
30
- ## MUST
31
-
32
- - 每类受保护数据必须声明分类、目的、来源、接收方、客户端存储、保留期、删除触发器、用户控制和 Owner。
33
- - 请求、缓存、日志、埋点和第三方共享必须限制为已批准目的所需的最小字段和最小精度。
34
- - 浏览器存储、草稿、下载、剪贴板和通知必须遵守身份、租户、权限、过期和清理策略。
35
- - 注销、切换账号/租户、权限降低、目的撤回或数据过期时,必须停止相关处理并清理无权继续保留的数据与运行时资源。
36
- - 在政策要求同意或选择时,数据采集和第三方 SDK 必须在有效选择之后启用;撤回必须阻止后续采集且不得暗中回退。
37
- - 调用摄像头、麦克风、位置、剪贴板等敏感能力必须由可理解的用户动作触发,并提供拒绝后的安全路径。
38
- - 第三方脚本和数据目的必须有清单、字段白名单、目标域、保留策略、禁用方式和负责人。
39
- - 客户端持久化内容读取时必须视为不可信输入,并执行 schema、身份、权限和版本校验。
40
-
41
- ## MUST NOT
42
-
43
- - MUST NOT 为“以后可能有用”收集、传输或长期保留额外数据。
44
- - MUST NOT 将敏感原值、搜索原文、文件内容或可识别信息放入 URL、日志、trace、埋点或未批准第三方载荷。
45
- - MUST NOT 将去标识化、哈希或内部 ID 自动视为匿名且无隐私风险。
46
- - MUST NOT 用客户端存储内容证明身份、权限或用户已同意。
47
- - MUST NOT 通过默认勾选、阻碍撤回或与目的无关的强制授权获取选择。
48
-
49
- ## SHOULD
50
-
51
- - SHOULD 对新增浏览器权限、稳定标识符、第三方 SDK、跨域传输和持久化数据进行隐私评审。
52
- - SHOULD 为数据访问、导出、删除、撤回和过期清理建立可测试路径。
53
- - SHOULD 优先在本地或边界处聚合、截断或脱敏,避免传输不必要原值。
54
-
55
- ## Contract
56
-
57
- ```text
58
- DataClass, Purpose, MinimumFields, Source, Recipients[],
59
- ClientStorage, Retention, DeletionTriggers[], UserControl,
60
- ThirdPartyPolicy, Redaction, Owner, Evidence
61
- ```
62
-
63
- ## Checklist
64
-
65
- - [ ] 每类数据有明确目的和最小字段。
66
- - [ ] 存储、保留、撤回和清理可执行。
67
- - [ ] 第三方和遥测载荷已白名单化。
68
- - [ ] 身份、租户和权限变化不会遗留数据。
69
- - [ ] 敏感权限有拒绝和撤回路径。
70
-
71
- ## Examples
72
-
73
- ### 内容示例,可删除
74
-
75
- 分析事件只发送批准的事件 key、粗粒度结果和随机 operation id;搜索原文、用户输入和业务数据不进入事件载荷,撤回后停止初始化 SDK。
76
-
77
- ## Anti-patterns
78
-
79
- 为了未来分析把完整表单、查询词和页面文本发送给第三方 SDK,并在用户退出后继续保留在本地缓存。
80
-
81
- ## Ownership
82
-
83
- 隐私/安全 Owner 定义政策,产品 Owner 证明目的与必要性,前端 Owner 实施边界、用户控制和清理,数据 Owner 审核接收与保留。
84
-
85
- ## Change Policy
86
-
87
- 新增目的、字段、接收方、持久化或保留期必须重新评审并更新用户控制;不得用功能发布记录替代隐私批准。同步检查 `universal:security-protocol`、`universal:analytics-protocol` 与 `universal:browser-storage-protocol`。
@@ -1,87 +0,0 @@
1
- ---
2
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/45-browser-storage-protocol.md
3
- seed_source_sha256: 01d0d3cb618519c94c939658526a97ad1df851a8f820a22a9b4595bef03cc2cb
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
- # 45 浏览器存储协议
14
-
15
- ## Scope
16
-
17
- P1。定义 Cookie、Web Storage、IndexedDB、Cache API 和其他客户端持久化的选择、隔离、校验、配额、迁移、一致性与清理。
18
-
19
- ## Non-Scope
20
-
21
- 不定义服务端数据库或 HTTP/CDN 缓存,不允许客户端存储替代后端权威状态、认证或鉴权。
22
-
23
- ## Terms
24
-
25
- - Storage Class:存储介质及其可见范围、持久性和安全属性。
26
- - Isolation Key:用户、租户、组织、权限范围和数据版本等隔离维度。
27
- - Storage Schema:持久化数据的版本化结构。
28
- - Eviction:浏览器因策略、配额或用户操作删除数据。
29
-
30
- ## MUST
31
-
32
- - 每个持久化项必须声明用途、Storage Class、Isolation Key、schema 版本、大小预算、过期时间、迁移/重置策略、清理触发器和 Owner。
33
- - 从浏览器存储读取的数据必须执行 schema、版本、身份、租户和权限校验;失败时保守重置,不得直接信任。
34
- - 必须处理不可用、隐私模式、配额不足、写入失败、被驱逐和数据损坏,并为关键流程提供非持久化降级路径。
35
- - 注销、切换账号/租户、权限变化和数据目的撤回必须清除或重新隔离相关数据。
36
- - 跨标签页共享的数据必须定义冲突、通知、版本和最终一致性策略;不得假设内存状态会自动同步。
37
- - IndexedDB 等版本化数据库必须处理升级阻塞、连接关闭、迁移失败和回滚/重置路径。
38
- - Service Worker 与 Cache API 必须限定作用域、版本化缓存、验证响应来源,并在发布和退出策略中清理过期内容。
39
- - 凭据类数据必须遵守 `universal:security-protocol`;可被脚本读取的存储不得持久化 session identifier、refresh token、secret 或等价凭据,除非存在经批准且有期限的安全例外。
40
-
41
- ## MUST NOT
42
-
43
- - MUST NOT 使用客户端存储值证明身份、权限、价格、审批或其他权威业务事实。
44
- - MUST NOT 多个用户、租户或权限范围复用未隔离的 key、数据库或缓存条目。
45
- - MUST NOT 无限期持久化草稿、文件、接口响应或敏感偏好。
46
- - MUST NOT 在 schema 变化后静默读取旧结构并猜测字段语义。
47
- - MUST NOT 假设客户端存储可靠、保密、不会被修改或永不被驱逐。
48
-
49
- ## SHOULD
50
-
51
- - SHOULD 只在明确需要跨刷新或跨会话时持久化,短生命周期状态优先留在内存。
52
- - SHOULD 提供存储占用、迁移失败和清理结果的安全诊断信息。
53
- - SHOULD 对大型或敏感持久化建立容量、性能和隐私测试。
54
-
55
- ## Contract
56
-
57
- ```text
58
- StorageId, Purpose, StorageClass, IsolationKeys[], SchemaVersion,
59
- SizeBudget, Expiry, Migration, ResetPolicy, EvictionFallback,
60
- CrossTabPolicy, CleanupTriggers[], Owner
61
- ```
62
-
63
- ## Checklist
64
-
65
- - [ ] 存储必要性和介质选择合理。
66
- - [ ] schema、身份、租户和权限均被校验。
67
- - [ ] 配额、驱逐、损坏和不可用有降级路径。
68
- - [ ] 跨标签页和版本迁移行为明确。
69
- - [ ] 注销和权限变化会安全清理。
70
-
71
- ## Examples
72
-
73
- ### 内容示例,可删除
74
-
75
- 用户列偏好按用户、租户和 schema 版本隔离;读取失败或版本不兼容时恢复默认值,不影响核心查询和编辑流程。
76
-
77
- ## Anti-patterns
78
-
79
- 把 token、完整权限矩阵和接口响应长期写入 localStorage,所有账号共享同一 key,并把读取结果直接当作可信状态。
80
-
81
- ## Ownership
82
-
83
- 平台 Owner 维护存储适配和迁移机制,领域 Owner 定义数据必要性与隔离键,安全/隐私 Owner 审核敏感持久化。
84
-
85
- ## Change Policy
86
-
87
- 改变介质、key、schema、隔离或保留策略必须提供迁移、重置、回滚和受影响用户说明,并同步 `universal:state-management-protocol`、`universal:cache-protocol` 与 `universal:privacy-data-lifecycle-protocol`。