pomaster 0.3.0 → 0.4.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 (393) hide show
  1. package/README.md +9 -10
  2. package/catalog/archetypes/archetype.frontend.error_taxonomy.json +13 -5
  3. package/catalog/archetypes/archetype.frontend.feature_oriented.json +1 -1
  4. package/catalog/archetypes/archetype.state.async_command.json +4 -4
  5. package/catalog/catalog-lock.draft.json +1120 -104
  6. package/catalog/gates/gate.be.api.contract_checks.json +2 -1
  7. package/catalog/gates/gate.be.chg.contract_change_checks.json +2 -1
  8. package/catalog/gates/gate.chg.prechange_checks.json +2 -1
  9. package/catalog/gates/gate.web.api.request_checks.json +2 -1
  10. package/catalog/gates/gate.web.grid.checks.json +2 -1
  11. package/catalog/knowledge/knowledge.api.example_stable_error_code.json +2 -1
  12. package/catalog/knowledge/knowledge.chg.example_compat_window.json +2 -1
  13. package/catalog/knowledge/knowledge.chg.example_prop_migration.json +2 -1
  14. package/catalog/knowledge/knowledge.fp.api.field_drift_no_contract.json +2 -1
  15. package/catalog/knowledge/knowledge.fp.api.per_page_http_client.json +2 -1
  16. package/catalog/knowledge/knowledge.fp.be.contract_drift.json +2 -1
  17. package/catalog/knowledge/knowledge.fp.chg.page_local_padding.json +2 -1
  18. package/catalog/knowledge/knowledge.fp.grid.global_td_width.json +2 -1
  19. package/catalog/knowledge/knowledge.web.api.example_get_entity_list.json +2 -1
  20. package/catalog/knowledge/knowledge.web.grid.example_column_preset.json +2 -1
  21. package/catalog/policies/authority.be.api_contract_ownership.json +2 -1
  22. package/catalog/policies/authority.be.contract_ownership.json +2 -1
  23. package/catalog/policies/authority.chg.change_owners.json +2 -1
  24. package/catalog/policies/authority.web.api.request_owners.json +2 -1
  25. package/catalog/policies/authority.web.grid.ownership.json +2 -1
  26. package/catalog/policies/policy.ai.change_plan_first.json +91 -0
  27. package/catalog/policies/policy.ai.fact_inference_separation.json +91 -0
  28. package/catalog/policies/policy.ai.read_search_verify_before_write.json +92 -0
  29. package/catalog/policies/policy.ai.rule_relaxation_approval.json +91 -0
  30. package/catalog/policies/policy.api.backward_compat_defaults.json +2 -1
  31. package/catalog/policies/policy.api.contract_impl_consistency.json +2 -1
  32. package/catalog/policies/policy.api.no_informal_contract.json +2 -1
  33. package/catalog/policies/policy.arch.adr_immutable_history.json +91 -0
  34. package/catalog/policies/policy.arch.decision_tradeoff_record.json +2 -1
  35. package/catalog/policies/policy.arch.no_convenience_over_boundary.json +93 -0
  36. package/catalog/policies/policy.arch.prefer_verifiable_option.json +92 -0
  37. package/catalog/policies/policy.authz.no_gating_proxy_trust.json +99 -0
  38. package/catalog/policies/policy.authz.permission_scope_expansion_gate.json +99 -0
  39. package/catalog/policies/policy.authz.server_five_factor_verification.json +101 -0
  40. package/catalog/policies/policy.be.conc.prefer_db_constraints.json +97 -0
  41. package/catalog/policies/policy.be.db.expand_migrate_contract.json +97 -0
  42. package/catalog/policies/policy.be.idem.key_payload_conflict.json +97 -0
  43. package/catalog/policies/policy.be.model.single_boundary_conversion.json +97 -0
  44. package/catalog/policies/policy.be.sql.index_for_known_queries.json +97 -0
  45. package/catalog/policies/policy.be.state.single_rule_source.json +97 -0
  46. package/catalog/policies/policy.be.txn.short_locks_compensation.json +96 -0
  47. package/catalog/policies/policy.bound.search_first_entry_only.json +91 -0
  48. package/catalog/policies/policy.boundary.validate_in_encode_out.json +92 -0
  49. package/catalog/policies/policy.cache.failure_mode_guards.json +93 -0
  50. package/catalog/policies/policy.cache.lifecycle_definition.json +2 -1
  51. package/catalog/policies/policy.cache.schema_versioning.json +91 -0
  52. package/catalog/policies/policy.cfg.config_attribute_completeness.json +95 -0
  53. package/catalog/policies/policy.cfg.key_rename_dual_read.json +92 -0
  54. package/catalog/policies/policy.cfg.no_secret_dispersal.json +90 -0
  55. package/catalog/policies/policy.cfg.production_safe_defaults.json +92 -0
  56. package/catalog/policies/policy.cfg.schema_backed_config.json +92 -0
  57. package/catalog/policies/policy.chg.affect_templates.json +2 -1
  58. package/catalog/policies/policy.chg.breaking_versioning.json +2 -1
  59. package/catalog/policies/policy.chg.compat_migration_rollback.json +2 -1
  60. package/catalog/policies/policy.chg.deprecate_before_delete.json +2 -1
  61. package/catalog/policies/policy.chg.fix_at_root_cause_level.json +2 -1
  62. package/catalog/policies/policy.chg.no_unrelated_changes.json +91 -0
  63. package/catalog/policies/policy.chg.observable_evolution.json +2 -1
  64. package/catalog/policies/policy.chg.prechange_consumer_scan.json +2 -1
  65. package/catalog/policies/policy.chg.staged_rollout.json +2 -1
  66. package/catalog/policies/policy.chg.sync_contract_docs_tests.json +2 -1
  67. package/catalog/policies/policy.conflict.priority_ladder.json +2 -1
  68. package/catalog/policies/policy.contract.no_invented_facts.json +93 -0
  69. package/catalog/policies/policy.dep.admission_six_dimension_check.json +2 -1
  70. package/catalog/policies/policy.dep.build_path_supply_chain.json +93 -0
  71. package/catalog/policies/policy.dep.change_surface_review.json +2 -1
  72. package/catalog/policies/policy.dep.introduction_review.json +2 -1
  73. package/catalog/policies/policy.dep.no_untrusted_source_no_lock_bypass.json +92 -0
  74. package/catalog/policies/policy.dep.time_boxed_urgent_exception.json +91 -0
  75. package/catalog/policies/policy.deploy.no_dev_env_as_production_fact.json +91 -0
  76. package/catalog/policies/policy.deploy.operational_capabilities.json +93 -0
  77. package/catalog/policies/policy.deploy.runtime_fact_record.json +97 -0
  78. package/catalog/policies/policy.derived.single_implementation.json +2 -1
  79. package/catalog/policies/policy.err.failure_five_part_mapping.json +101 -0
  80. package/catalog/policies/policy.err.no_internal_detail_exposure.json +97 -0
  81. package/catalog/policies/policy.err.published_code_immutable.json +98 -0
  82. package/catalog/policies/policy.evid.acceptance_binds_verifiable_evidence.json +92 -0
  83. package/catalog/policies/policy.evid.no_silent_gate_removal.json +90 -0
  84. package/catalog/policies/policy.evid.no_unverifiable_pass.json +92 -0
  85. package/catalog/policies/policy.flag.cleanup_after_full_rollout.json +94 -0
  86. package/catalog/policies/policy.flag.consistent_off_state.json +92 -0
  87. package/catalog/policies/policy.flag.kill_switch.json +91 -0
  88. package/catalog/policies/policy.flag.lifecycle_metadata.json +93 -0
  89. package/catalog/policies/policy.flag.not_a_permission.json +92 -0
  90. package/catalog/policies/policy.gate.p0_non_bypassable.json +92 -0
  91. package/catalog/policies/policy.gate.risk_factors_confirmed.json +93 -0
  92. package/catalog/policies/policy.guard.no_check_weakening.json +92 -0
  93. package/catalog/policies/policy.integration.call_definition_minimum.json +95 -0
  94. package/catalog/policies/policy.integration.fault_containment.json +94 -0
  95. package/catalog/policies/policy.job.lifecycle_definition.json +96 -0
  96. package/catalog/policies/policy.job.no_unmanaged_execution.json +92 -0
  97. package/catalog/policies/policy.job.operational_features.json +93 -0
  98. package/catalog/policies/policy.obs.actionable_signals.json +93 -0
  99. package/catalog/policies/policy.obs.alert_with_owner.json +91 -0
  100. package/catalog/policies/policy.obs.context_field_baseline.json +91 -0
  101. package/catalog/policies/policy.obs.correlation_context_minimum.json +2 -1
  102. package/catalog/policies/policy.obs.no_sensitive_or_unbounded_logging.json +92 -0
  103. package/catalog/policies/policy.obs.no_sensitive_raw_values.json +93 -0
  104. package/catalog/policies/policy.obs.rum_dimension_whitelist.json +2 -1
  105. package/catalog/policies/policy.obs.signal_change_impact.json +91 -0
  106. package/catalog/policies/policy.obs.source_map_access_control.json +92 -0
  107. package/catalog/policies/policy.obs.telemetry_lifecycle_declared.json +93 -0
  108. package/catalog/policies/policy.obs.trace_correlation.json +91 -0
  109. package/catalog/policies/policy.perf.budget_change_retest.json +91 -0
  110. package/catalog/policies/policy.perf.evidence_binding.json +95 -0
  111. package/catalog/policies/policy.perf.observation_dimensions.json +94 -0
  112. package/catalog/policies/policy.proc.checklist_change_policy.json +91 -0
  113. package/catalog/policies/policy.proc.pre_code_declaration.json +2 -1
  114. package/catalog/policies/policy.proc.scope_drift_reclassify.json +91 -0
  115. package/catalog/policies/policy.prv.processing_scope_re_review.json +97 -0
  116. package/catalog/policies/policy.prv.sensitive_data_six_facts.json +102 -0
  117. package/catalog/policies/policy.registry.human_fields_validated_decorrelated.json +93 -0
  118. package/catalog/policies/policy.rel.no_irreversible_unmonitored_full_release.json +91 -0
  119. package/catalog/policies/policy.rel.observability_before_ship.json +91 -0
  120. package/catalog/policies/policy.rel.pre_release_confirmation.json +2 -1
  121. package/catalog/policies/policy.rel.process_change_needs_drill_audit.json +91 -0
  122. package/catalog/policies/policy.rel.traceable_build.json +93 -0
  123. package/catalog/policies/policy.role.domain_decision_authority.json +2 -1
  124. package/catalog/policies/policy.role.human_signs_for_ai.json +93 -0
  125. package/catalog/policies/policy.sec.authn_policy_unified.json +91 -0
  126. package/catalog/policies/policy.sec.no_client_side_trust.json +92 -0
  127. package/catalog/policies/policy.sec.no_longterm_security_disable.json +91 -0
  128. package/catalog/policies/policy.sec.no_script_readable_credentials.json +91 -0
  129. package/catalog/policies/policy.sec.no_secrets_in_client_surface.json +91 -0
  130. package/catalog/policies/policy.sec.relaxation_approval.json +92 -0
  131. package/catalog/policies/policy.sec.security_relaxation_gate.json +92 -0
  132. package/catalog/policies/policy.sec.third_party_execution_register.json +2 -1
  133. package/catalog/policies/policy.sec.trust_boundary_enforcement.json +93 -0
  134. package/catalog/policies/policy.sec.upload_download_server_recheck.json +91 -0
  135. package/catalog/policies/policy.sec.url_source_allowlist.json +91 -0
  136. package/catalog/policies/policy.spec.admission_criteria.json +2 -1
  137. package/catalog/policies/policy.spec.derived_view_regeneration.json +2 -1
  138. package/catalog/policies/policy.spec.draft_not_baseline.json +2 -1
  139. package/catalog/policies/policy.spec.family_conflict_precedence.json +93 -0
  140. package/catalog/policies/policy.spec.file_structure_contract.json +2 -1
  141. package/catalog/policies/policy.spec.freeze_before_use.json +93 -0
  142. package/catalog/policies/policy.spec.metadata_required.json +2 -1
  143. package/catalog/policies/policy.spec.post_dev_backfill_classify.json +2 -1
  144. package/catalog/policies/policy.spec.primary_source_basis.json +93 -0
  145. package/catalog/policies/policy.spec.procedural_record_not_surrogate.json +2 -1
  146. package/catalog/policies/policy.spec.semantic_identity.json +2 -1
  147. package/catalog/policies/policy.spec.unresolved_ledger_gate.json +2 -1
  148. package/catalog/policies/policy.stack.derived_store_not_authority.json +93 -0
  149. package/catalog/policies/policy.stack.dual_web_stack_boundary.json +93 -0
  150. package/catalog/policies/policy.stack.entry_chain_recorded.json +93 -0
  151. package/catalog/policies/policy.stack.entry_limits_aligned.json +94 -0
  152. package/catalog/policies/policy.stack.local_form_not_prod_fact.json +93 -0
  153. package/catalog/policies/policy.stack.multi_datastore_ownership.json +93 -0
  154. package/catalog/policies/policy.stack.no_implicit_selection.json +2 -1
  155. package/catalog/policies/policy.stack.persistence_coexistence_scope.json +93 -0
  156. package/catalog/policies/policy.stack.toolchain_versions_pinned.json +95 -0
  157. package/catalog/policies/policy.stack.upgrade_compat_verified.json +93 -0
  158. package/catalog/policies/policy.struct.module_entry_dependency_declared.json +92 -0
  159. package/catalog/policies/policy.struct.no_unexplained_top_level_dir.json +91 -0
  160. package/catalog/policies/policy.struct.reuse_proven_structure.json +91 -0
  161. package/catalog/policies/policy.test.control_nondeterminism_keep_diagnosis.json +91 -0
  162. package/catalog/policies/policy.test.isolation_and_cleanup.json +93 -0
  163. package/catalog/policies/policy.test.no_synthetic_stability.json +92 -0
  164. package/catalog/policies/policy.test.pyramid_and_ci_matrix.json +92 -0
  165. package/catalog/policies/policy.test.removal_justification.json +91 -0
  166. package/catalog/policies/policy.test.removal_needs_substitute_evidence.json +91 -0
  167. package/catalog/policies/policy.test.risk_driven_plan.json +92 -0
  168. package/catalog/policies/policy.test.stable_observable_assertions.json +92 -0
  169. package/catalog/policies/policy.tool.discoverable_toolchain.json +92 -0
  170. package/catalog/policies/policy.tool.no_hand_edit_generated_no_ci_drift.json +91 -0
  171. package/catalog/policies/policy.tool.no_vendored_body_edits.json +94 -0
  172. package/catalog/policies/policy.tool.scoped_scan_boundary.json +2 -1
  173. package/catalog/policies/policy.tool.upgrade_verify_lock_rollback.json +92 -0
  174. package/catalog/policies/policy.web.api.auth_app_client_split.json +2 -1
  175. package/catalog/policies/policy.web.api.client_change_impact.json +2 -1
  176. package/catalog/policies/policy.web.api.domain_api_only.json +2 -1
  177. package/catalog/policies/policy.web.api.error_normalization.json +2 -1
  178. package/catalog/policies/policy.web.api.generated_client.json +2 -1
  179. package/catalog/policies/policy.web.api.late_result_guard.json +2 -1
  180. package/catalog/policies/policy.web.api.mutation_idempotency.json +2 -1
  181. package/catalog/policies/policy.web.api.no_network_optimism.json +2 -1
  182. package/catalog/policies/policy.web.api.query_cancel_stale_drop.json +2 -1
  183. package/catalog/policies/policy.web.api.request_infrastructure.json +2 -1
  184. package/catalog/policies/policy.web.api.retry_discipline.json +2 -1
  185. package/catalog/policies/policy.web.api.session_recovery_split.json +2 -1
  186. package/catalog/policies/policy.web.api.single_http_client.json +2 -1
  187. package/catalog/policies/policy.web.api.single_loading_source.json +2 -1
  188. package/catalog/policies/policy.web.api.transport_vs_business.json +2 -1
  189. package/catalog/policies/policy.web.api.trusted_endpoint_source.json +2 -1
  190. package/catalog/policies/policy.web.api.typed_domain_naming.json +2 -1
  191. package/catalog/policies/policy.web.arch.layer_isolation.json +2 -1
  192. package/catalog/policies/policy.web.arch.naming_conventions.json +2 -1
  193. package/catalog/policies/policy.web.arch.public_api_barrel.json +2 -1
  194. package/catalog/policies/policy.web.chg.controlled_change_triggers.json +2 -1
  195. package/catalog/policies/policy.web.comp.no_trivial_or_god_component.json +91 -0
  196. package/catalog/policies/policy.web.comp.public_contract_completeness.json +93 -0
  197. package/catalog/policies/policy.web.copy.action_object_clarity.json +92 -0
  198. package/catalog/policies/policy.web.copy.enumerable_placement.json +91 -0
  199. package/catalog/policies/policy.web.copy.error_next_step.json +92 -0
  200. package/catalog/policies/policy.web.copy.suppression_ledger_discipline.json +2 -1
  201. package/catalog/policies/policy.web.grid.column_schema_fields.json +2 -1
  202. package/catalog/policies/policy.web.grid.config_isolation.json +2 -1
  203. package/catalog/policies/policy.web.grid.freeze_key_columns.json +2 -1
  204. package/catalog/policies/policy.web.grid.interaction_registry.json +2 -1
  205. package/catalog/policies/policy.web.grid.keyboard_clipboard.json +2 -1
  206. package/catalog/policies/policy.web.grid.schema_driven_shell.json +2 -1
  207. package/catalog/policies/policy.web.grid.schema_versioning.json +2 -1
  208. package/catalog/policies/policy.web.grid.server_ops_virtualization.json +2 -1
  209. package/catalog/policies/policy.web.grid.shell_change_matrix.json +2 -1
  210. package/catalog/policies/policy.web.grid.width_fix_ladder.json +2 -1
  211. package/catalog/policies/policy.web.handoff.state_matrix_full.json +94 -0
  212. package/catalog/policies/policy.web.i18n.copy_key_discipline.json +92 -0
  213. package/catalog/policies/policy.web.i18n.raw_value_for_compute.json +91 -0
  214. package/catalog/policies/policy.web.page.region_consistency.json +93 -0
  215. package/catalog/policies/policy.web.perf.budget_skeleton.json +2 -1
  216. package/catalog/policies/policy.web.style.ownership_matrix.json +2 -1
  217. package/catalog/policies/policy.web.track.attempt_result_correlation.json +91 -0
  218. package/catalog/policies/policy.web.track.consent_lifecycle.json +2 -1
  219. package/catalog/policies/policy.web.track.no_synthetic_actions.json +92 -0
  220. package/catalog/policies/policy.web.track.privacy_default_deny.json +2 -1
  221. package/catalog/policies/policy.web.track.stable_event_keys.json +2 -1
  222. package/catalog/policies/policy.web.track.typed_client_validation.json +91 -0
  223. package/catalog/policies/policy.web.uiux.provider_evidence_not_business_truth.json +2 -1
  224. package/catalog/policies/policy.wf.no_planned_as_verified.json +91 -0
  225. package/catalog/policies/policy.wf.task_facts_preconfirm.json +94 -0
  226. package/catalog/policies/profile.baseline.java_enterprise_default.json +96 -0
  227. package/catalog/sensors/sensor.browser.deterministic.json +2 -1
  228. package/catalog/sensors/sensor.browser.interactive.json +2 -1
  229. package/catalog/sensors/sensor.build.static.json +2 -1
  230. package/catalog/sensors/sensor.contract.conformance.json +2 -1
  231. package/catalog/sensors/sensor.performance.budget.json +2 -1
  232. package/catalog/sensors/sensor.production.metric.json +2 -1
  233. package/catalog/tools/seed_b6b_frontend.py +1424 -0
  234. package/catalog/tools/seed_b6c_backend.py +1495 -0
  235. package/catalog/tools/seed_b6d_baseline.py +620 -0
  236. package/catalog/tools/seed_b6e_evidence.py +1305 -0
  237. package/catalog/tools/seed_d3_review.py +1105 -0
  238. package/catalog/tools/seed_v06_batch2_materials.py +27 -18
  239. package/dist/bin.js +23026 -16635
  240. package/package.json +2 -1
  241. package/seeds/baseline/backend/api-contract.md +26 -0
  242. package/seeds/baseline/backend/architecture.md +31 -0
  243. package/seeds/baseline/backend/data-access.md +31 -0
  244. package/seeds/baseline/backend/directory-structure.md +11 -0
  245. package/seeds/baseline/backend/integration-runtime.md +21 -0
  246. package/seeds/baseline/backend/quality.md +31 -0
  247. package/seeds/baseline/backend/stack.yaml +13 -0
  248. package/seeds/baseline/backend/transaction-concurrency.md +26 -0
  249. package/seeds/baseline/data/lineage.md +11 -0
  250. package/seeds/baseline/data/migration.md +11 -0
  251. package/seeds/baseline/data/model.md +31 -0
  252. package/seeds/baseline/data/precision-units.md +31 -0
  253. package/seeds/baseline/data/quality.md +31 -0
  254. package/seeds/baseline/frontend/api-and-error.md +21 -0
  255. package/seeds/baseline/frontend/architecture.md +26 -0
  256. package/seeds/baseline/frontend/design-system.md +21 -0
  257. package/seeds/baseline/frontend/directory-structure.md +16 -0
  258. package/seeds/baseline/frontend/quality.md +26 -0
  259. package/seeds/baseline/frontend/stack.yaml +17 -0
  260. package/seeds/baseline/frontend/state-and-data.md +26 -0
  261. package/seeds/baseline/manifest.yaml +32 -0
  262. package/seeds/baseline/platform/delivery.md +36 -0
  263. package/seeds/baseline/platform/environment.md +11 -0
  264. package/seeds/baseline/platform/observability.md +31 -0
  265. package/seeds/baseline/platform/security.md +26 -0
  266. package/seeds/manifest.json +2006 -0
  267. package/seeds/specs/evidence/accessibility.md +89 -0
  268. package/seeds/specs/evidence/architecture.md +89 -0
  269. package/seeds/specs/evidence/browser-e2e.md +91 -0
  270. package/seeds/specs/evidence/build.md +91 -0
  271. package/seeds/specs/evidence/business-acceptance.md +89 -0
  272. package/seeds/specs/evidence/complexity-crap.md +97 -0
  273. package/seeds/specs/evidence/contract.md +89 -0
  274. package/seeds/specs/evidence/coverage.md +91 -0
  275. package/seeds/specs/evidence/data-migration.md +91 -0
  276. package/seeds/specs/evidence/dead-code-duplicate.md +89 -0
  277. package/seeds/specs/evidence/dependency-supply-chain.md +89 -0
  278. package/seeds/specs/evidence/index.md +55 -0
  279. package/seeds/specs/evidence/mutation.md +89 -0
  280. package/seeds/specs/evidence/performance.md +89 -0
  281. package/seeds/specs/evidence/release.md +91 -0
  282. package/seeds/specs/evidence/runtime-observability.md +91 -0
  283. package/seeds/specs/evidence/security.md +89 -0
  284. package/seeds/specs/evidence/typecheck-lint.md +91 -0
  285. package/seeds/specs/evidence/unit-component-integration.md +91 -0
  286. package/seeds/specs/evidence/visual-regression.md +89 -0
  287. package/seeds/specs/hard/backend/01-architecture-governance-protocol.md +68 -0
  288. package/seeds/specs/hard/backend/02-project-structure-governance-protocol.md +68 -0
  289. package/seeds/specs/hard/backend/03-directory-boundary-protocol.md +68 -0
  290. package/seeds/specs/hard/backend/04-layering-architecture-protocol.md +68 -0
  291. package/seeds/specs/hard/backend/05-task-workflow-protocol.md +68 -0
  292. package/seeds/specs/hard/backend/06-ai-generated-code-protocol.md +68 -0
  293. package/seeds/specs/hard/backend/07-evidence-acceptance-protocol.md +68 -0
  294. package/seeds/specs/hard/backend/08-contract-change-protocol.md +68 -0
  295. package/seeds/specs/hard/backend/09-role-responsibility-protocol.md +68 -0
  296. package/seeds/specs/hard/backend/10-security-protocol.md +68 -0
  297. package/seeds/specs/hard/backend/11-environment-configuration-protocol.md +67 -0
  298. package/seeds/specs/hard/backend/12-api-contract-protocol.md +68 -0
  299. package/seeds/specs/hard/backend/13-privacy-data-lifecycle-protocol.md +68 -0
  300. package/seeds/specs/hard/backend/14-business-rules-state-protocol.md +68 -0
  301. package/seeds/specs/hard/backend/15-data-model-protocol.md +68 -0
  302. package/seeds/specs/hard/backend/16-error-code-protocol.md +68 -0
  303. package/seeds/specs/hard/backend/17-permission-authorization-protocol.md +68 -0
  304. package/seeds/specs/hard/backend/18-database-schema-migration-protocol.md +68 -0
  305. package/seeds/specs/hard/backend/19-query-index-sql-protocol.md +68 -0
  306. package/seeds/specs/hard/backend/20-transaction-boundary-protocol.md +68 -0
  307. package/seeds/specs/hard/backend/21-concurrency-locking-protocol.md +68 -0
  308. package/seeds/specs/hard/backend/22-idempotency-protocol.md +68 -0
  309. package/seeds/specs/hard/backend/23-cache-redis-consistency-protocol.md +68 -0
  310. package/seeds/specs/hard/backend/24-external-integration-resilience-protocol.md +68 -0
  311. package/seeds/specs/hard/backend/25-async-job-scheduler-protocol.md +68 -0
  312. package/seeds/specs/hard/backend/26-engineering-tooling-protocol.md +68 -0
  313. package/seeds/specs/hard/backend/27-dependency-supply-chain-protocol.md +68 -0
  314. package/seeds/specs/hard/backend/28-testing-protocol.md +68 -0
  315. package/seeds/specs/hard/backend/29-observability-logging-tracing-protocol.md +68 -0
  316. package/seeds/specs/hard/backend/30-performance-capacity-protocol.md +68 -0
  317. package/seeds/specs/hard/backend/31-runtime-deployment-protocol.md +68 -0
  318. package/seeds/specs/hard/backend/32-release-versioning-rollback-protocol.md +68 -0
  319. package/seeds/specs/hard/backend/index.md +177 -0
  320. package/seeds/specs/hard/frontend/01-development-checklist-protocol.md +86 -0
  321. package/seeds/specs/hard/frontend/02-ai-generated-code-protocol.md +82 -0
  322. package/seeds/specs/hard/frontend/03-acceptance-gate-protocol.md +86 -0
  323. package/seeds/specs/hard/frontend/04-security-protocol.md +283 -0
  324. package/seeds/specs/hard/frontend/05-environment-configuration-protocol.md +80 -0
  325. package/seeds/specs/hard/frontend/06-change-governance-protocol.md +90 -0
  326. package/seeds/specs/hard/frontend/07-frontend-backend-communication-protocol.md +219 -0
  327. package/seeds/specs/hard/frontend/08-role-responsibility-protocol.md +80 -0
  328. package/seeds/specs/hard/frontend/09-module-boundary-protocol.md +81 -0
  329. package/seeds/specs/hard/frontend/10-engineering-tooling-protocol.md +89 -0
  330. package/seeds/specs/hard/frontend/11-dependency-package-management-protocol.md +87 -0
  331. package/seeds/specs/hard/frontend/12-business-rules-protocol.md +79 -0
  332. package/seeds/specs/hard/frontend/13-monetary-precision-protocol.md +81 -0
  333. package/seeds/specs/hard/frontend/14-data-model-protocol.md +85 -0
  334. package/seeds/specs/hard/frontend/15-request-api-protocol.md +87 -0
  335. package/seeds/specs/hard/frontend/16-error-handling-protocol.md +79 -0
  336. package/seeds/specs/hard/frontend/17-permission-protocol.md +79 -0
  337. package/seeds/specs/hard/frontend/18-state-management-protocol.md +88 -0
  338. package/seeds/specs/hard/frontend/19-cache-protocol.md +79 -0
  339. package/seeds/specs/hard/frontend/20-testing-protocol.md +88 -0
  340. package/seeds/specs/hard/frontend/21-design-system-protocol.md +79 -0
  341. package/seeds/specs/hard/frontend/22-theme-protocol.md +79 -0
  342. package/seeds/specs/hard/frontend/23-accessibility-protocol.md +189 -0
  343. package/seeds/specs/hard/frontend/24-component-protocol.md +80 -0
  344. package/seeds/specs/hard/frontend/25-page-structure-protocol.md +79 -0
  345. package/seeds/specs/hard/frontend/26-style-layout-protocol.md +80 -0
  346. package/seeds/specs/hard/frontend/27-rendering-state-protocol.md +81 -0
  347. package/seeds/specs/hard/frontend/28-form-protocol.md +88 -0
  348. package/seeds/specs/hard/frontend/29-routing-url-protocol.md +79 -0
  349. package/seeds/specs/hard/frontend/30-data-grid-protocol.md +83 -0
  350. package/seeds/specs/hard/frontend/31-performance-protocol.md +137 -0
  351. package/seeds/specs/hard/frontend/32-file-import-export-protocol.md +80 -0
  352. package/seeds/specs/hard/frontend/33-release-versioning-protocol.md +79 -0
  353. package/seeds/specs/hard/frontend/34-monitoring-logging-protocol.md +128 -0
  354. package/seeds/specs/hard/frontend/35-mock-protocol.md +97 -0
  355. package/seeds/specs/hard/frontend/36-feature-flag-protocol.md +79 -0
  356. package/seeds/specs/hard/frontend/37-browser-device-compatibility-protocol.md +83 -0
  357. package/seeds/specs/hard/frontend/38-internationalization-protocol.md +243 -0
  358. package/seeds/specs/hard/frontend/39-copywriting-protocol.md +79 -0
  359. package/seeds/specs/hard/frontend/40-analytics-protocol.md +98 -0
  360. package/seeds/specs/hard/frontend/41-design-handoff-protocol.md +80 -0
  361. package/seeds/specs/hard/frontend/42-browser-runtime-lifecycle-protocol.md +86 -0
  362. package/seeds/specs/hard/frontend/43-time-temporal-protocol.md +86 -0
  363. package/seeds/specs/hard/frontend/44-privacy-data-lifecycle-protocol.md +87 -0
  364. package/seeds/specs/hard/frontend/45-browser-storage-protocol.md +87 -0
  365. package/seeds/specs/hard/frontend/index.md +308 -0
  366. package/seeds/specs/hard/stacks/java/index.md +20 -0
  367. package/seeds/specs/hard/stacks/java/java-language-overlay.md +35 -0
  368. package/seeds/specs/hard/stacks/jpa/index.md +20 -0
  369. package/seeds/specs/hard/stacks/jpa/jpa-persistence-overlay.md +35 -0
  370. package/seeds/specs/hard/stacks/kubernetes-ingress/index.md +20 -0
  371. package/seeds/specs/hard/stacks/kubernetes-ingress/kubernetes-ingress-overlay.md +35 -0
  372. package/seeds/specs/hard/stacks/messaging/index.md +20 -0
  373. package/seeds/specs/hard/stacks/messaging/messaging-reliability-overlay.md +35 -0
  374. package/seeds/specs/hard/stacks/mybatis/index.md +20 -0
  375. package/seeds/specs/hard/stacks/mybatis/mybatis-persistence-overlay.md +35 -0
  376. package/seeds/specs/hard/stacks/mysql/index.md +20 -0
  377. package/seeds/specs/hard/stacks/mysql/mysql-database-overlay.md +35 -0
  378. package/seeds/specs/hard/stacks/nginx/index.md +20 -0
  379. package/seeds/specs/hard/stacks/nginx/nginx-proxy-overlay.md +35 -0
  380. package/seeds/specs/hard/stacks/postgresql/index.md +20 -0
  381. package/seeds/specs/hard/stacks/postgresql/postgresql-database-overlay.md +35 -0
  382. package/seeds/specs/hard/stacks/redis/index.md +20 -0
  383. package/seeds/specs/hard/stacks/redis/redis-cache-overlay.md +35 -0
  384. package/seeds/specs/hard/stacks/spring-batch/index.md +20 -0
  385. package/seeds/specs/hard/stacks/spring-batch/spring-batch-job-overlay.md +35 -0
  386. package/seeds/specs/hard/stacks/spring-boot/index.md +20 -0
  387. package/seeds/specs/hard/stacks/spring-boot/spring-boot-application-overlay.md +35 -0
  388. package/seeds/specs/hard/stacks/spring-mvc/index.md +20 -0
  389. package/seeds/specs/hard/stacks/spring-mvc/spring-mvc-web-overlay.md +35 -0
  390. package/seeds/specs/hard/stacks/spring-webflux/index.md +20 -0
  391. package/seeds/specs/hard/stacks/spring-webflux/spring-webflux-reactive-overlay.md +35 -0
  392. package/seeds/specs/hard/stacks/tomcat/index.md +20 -0
  393. package/seeds/specs/hard/stacks/tomcat/tomcat-runtime-overlay.md +35 -0
@@ -0,0 +1,308 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/index.md
3
+ seed_source_sha256: 37fc443ce1f90eaa2584a82e12300d8281760332ec69d55a52b26cb22a2b2375
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
+ # 通用前端工程协作协议总入口
14
+
15
+ > 本目录是框架无关的前端 hard spec。它不规定 Vue、React 或 Svelte 的写法,只规定前端开发必须具备的治理、契约、工程、体验和交付规则。
16
+
17
+ ## 目录结构硬约束
18
+
19
+ - 本目录当前包含 `01`–`45` 共 45 个编号协议,另有一个不计入协议数的 `index.md`。
20
+ - 优先级由协议地图中的 P0/P1/P2 决定,不由编号推断。已发布编号与文件名 append-only;新增协议追加新编号,不重排既有文件。
21
+ - 文档 ID 是稳定身份。内部引用 MUST 使用 `universal:<semantic-id>`,不得只引用数字。
22
+ - 新增、废弃、合并或拆分属于协议架构变更,必须更新索引、命中矩阵、职责边界和目录验证;已发布文件先废弃和迁移,不得静默删除或复用其 ID。
23
+
24
+ ## 通用规则准入与维护来源
25
+
26
+ 规则进入 universal 前必须同时满足:
27
+
28
+ 1. 适用于多个无关业务或来自正式 Web 标准/一手实现规范,而不是单个项目事故的临时补丁。
29
+ 2. 不绑定产品字段、页面、接口、目录、框架、组件库、供应商或组织流程。
30
+ 3. 可以通过审查、自动化、测试或明确证据验证。
31
+ 4. 与现有协议完成 Scope/Non-Scope 和重复职责审计,避免同一事实多处维护。
32
+ 5. 使用官方标准、官方文档或一手仓库作为规则依据;二手文章只能提供检索线索。
33
+ 6. 项目阈值和选型下沉到项目 spec;universal 只规定必须存在的决策、边界和证据。
34
+
35
+ 首选维护来源包括:
36
+
37
+ - 安全:[OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/) 与 [W3C Web Application Security](https://www.w3.org/TR/?tag=security)。
38
+ - 可访问性:[WCAG 2.2](https://www.w3.org/TR/WCAG22/) 与 [WAI-ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/)。
39
+ - Web 平台与生命周期:[WHATWG HTML](https://html.spec.whatwg.org/) 与 [MDN Web Docs](https://developer.mozilla.org/)。
40
+ - 性能:[web.dev Web Vitals](https://web.dev/articles/vitals) 与 W3C Web Performance 规范。
41
+ - 隐私:[W3C Privacy Principles](https://www.w3.org/TR/privacy-principles/)。
42
+ - 时间语义:[ECMAScript Temporal](https://tc39.es/proposal-temporal/)。
43
+ - 工具和供应链:对应 runtime、包管理器、CI 平台和测试工具的官方文档或一手仓库。
44
+
45
+ ## 使用方式
46
+
47
+ 使用本目录时:
48
+
49
+ 1. 默认激活 P0 基线和任务命中的专项协议。
50
+ 2. 已确认规则写成 MUST / MUST NOT / SHOULD 和具体 Contract。
51
+ 3. 暂未决策项保留 `TODO_CONFIRM`,AI 不得在代码中临场发明。
52
+ 4. 开发结束按验收门禁提供证据,而不是只声明“已完成”。
53
+
54
+ ## Pre-Development Checklist
55
+
56
+ - [ ] 确认 `.pomaster/specs/hard/frontend/` 已安装并通过本目录的双向索引校验;项目事实和项目选型写入独立项目 overlay,不修改 universal 文件。
57
+ - [ ] 读取「默认激活基线」,再按「按任务追加激活」选择本次命中的协议;多行命中取并集。
58
+ - [ ] 使用 semantic ID 记录选择理由,不用编号代替协议身份。
59
+ - [ ] 所选协议(semantic ID 形态)以 vNext 上下文投影承载:`pomaster context compile --role <role>` 按 role/capability applicability 检索激活;不得修改 pomaster 工具、hook 或配置来实现自动加载。
60
+ - [ ] 开发前声明本次命中的 MUST/MUST NOT、需要项目确认的阈值/选型和验证方式。
61
+ - [ ] 若 universal 与项目 overlay 冲突,按「协议冲突优先级」停止并记录裁决,不在代码中临场发明。
62
+
63
+ ## Spec 生命周期
64
+
65
+ | 状态 | 含义 | 可用于开发 |
66
+ |---|---|---|
67
+ | Draft | 项目启动后的目录、模板、候选规则和未确认项 | 否 |
68
+ | Candidate | PRD、原型、技术方向、接口风格初步确认,可支撑垂直切片 | 仅限明确标注的切片或 Spike |
69
+ | Baseline | 需求、设计、接口、权限、数据模型、测试验收已确认 | 是 |
70
+ | Controlled Change | 开发开始后对 Baseline 的受控修改 | 是,但必须记录影响与批准 |
71
+ | Release Review | 上线后根据真实问题回填,形成下一版 Baseline | 否,作为下一周期输入 |
72
+
73
+ 冻结含义:
74
+
75
+ - Frozen/Baseline 表示“可以作为开发依据”,不是永远不能改。
76
+ - Baseline 后修改公共组件、接口字段、权限码、错误码、Design Token、目录边界、状态模型、金额精度或验收门禁,必须走 `universal:change-governance-protocol` 的受控变更流程。
77
+ - 前端通用 spec 应在 Sprint 0、技术方案评审或首个垂直切片完成后冻结为 v1.0。
78
+ - 需求级 spec 应在需求进入开发前冻结。
79
+ - 公共组件 spec 应在首次公共复用前冻结。
80
+ - 接口 spec 应在联调前冻结。
81
+
82
+ ## 开发后 Spec Update Review
83
+
84
+ - 每次开发完成后、任务关闭或收口(closeout)流程前,MUST 进行一次 Spec Update Review。
85
+ - 若本次任务产生可复用规则、约定、坑点、接口契约、组件边界、目录规则、测试门禁或 AI 误改防护,MUST 更新对应 spec。
86
+ - 若没有新知识,MUST 明确记录“本次无需更新 spec”及原因。
87
+ - Spec Update Review 的输出属于验收证据;不得把归档、收口、发布记录当成 spec review 的替代品。
88
+
89
+ ## 优先级定义
90
+
91
+ | 等级 | 含义 | 执行规则 |
92
+ |---|---|---|
93
+ | P0 | 治理、安全、环境和跨层契约底座 | 默认激活;失败即阻塞开发或放行 |
94
+ | P1 | 核心架构、数据、UI 和高频工程协议 | 命中场景时强制激活;不得降级为建议 |
95
+ | P2 | 发布、运营、兼容和协作完善协议 | 命中场景时强制执行;未命中可不激活 |
96
+
97
+ P2 表示默认激活优先级较低,不表示协议中的 MUST 可以忽略。
98
+
99
+ ## 单个协议文件标准结构
100
+
101
+ 每个协议文件 MUST 使用以下标题和顺序:
102
+
103
+ 1. `Scope`:本协议负责什么。
104
+ 2. `Non-Scope`:本协议不负责什么。
105
+ 3. `Terms`:关键术语及唯一含义。
106
+ 4. `MUST`:可验证的强制规则。
107
+ 5. `MUST NOT`:可验证的禁止规则。
108
+ 6. `SHOULD`:有适用条件的推荐规则。
109
+ 7. `Contract`:接口、组件、状态、字段、目录或行为契约。
110
+ 8. `Checklist`:开发和验收检查项。
111
+ 9. `Examples`:符合协议的推荐示例;示例正文 MUST 放在 `### 内容示例,可删除` 三级标题下。
112
+ 10. `Anti-patterns`:违反协议的示例及风险。
113
+ 11. `Ownership`:负责人、维护模块和裁决边界。
114
+ 12. `Change Policy`:兼容、废弃、迁移、评审和通知规则。
115
+
116
+ 结构约束:
117
+
118
+ - 标题名称和顺序固定,不得使用近义标题替代。
119
+ - 某节不适用时保留标题并写 `N/A` 及原因。
120
+ - MUST、MUST NOT 和 Contract 必须可由审查、自动化、测试或明确证据验证。
121
+ - Examples 与 Anti-patterns 必须共同说明正确和错误边界。
122
+ - `### 内容示例,可删除` 是模板提示,不是协议规则;项目落地时可删除、替换或改写示例,AI 不得把示例中的字段、路径、组件名或业务行为当作已确认事实。
123
+ - 新建、重写和评审协议时,结构完整性属于强制门禁。
124
+
125
+ ## 协议冲突优先级
126
+
127
+ 1. 项目特定协议 > 通用协议。
128
+ 2. 前后端正式接口契约 > Mock 数据。
129
+ 3. Design Token > 单页设计稿中的临时样式。
130
+ 4. 公共组件 API 文档 > 页面内临时封装。
131
+ 5. 安全协议 > 交互便利性。
132
+ 6. 后端鉴权结果 > 前端权限显示。
133
+ 7. 已发布变更公告 > 历史示例代码。
134
+
135
+ 冲突裁决:
136
+
137
+ - 项目协议需要放宽通用协议时,必须记录原因、风险、负责人和有效期。
138
+ - 同优先级规则冲突时停止实现,由对应 Ownership 负责人裁决。
139
+ - 低优先级 Mock、示例、临时样式和页面封装不得反向修改高优先级契约。
140
+ - 裁决后必须更新产生歧义的协议或契约,不能只保留口头说明。
141
+
142
+ ## 维护 spec:主题 → 协议路由表
143
+
144
+ **要给本项目补充/修改前端规则时,MUST 就地编辑下表命中的编号协议文件,MUST NOT 新建平行文件。**
145
+ 把规则写进目标文件的 `MUST` / `MUST NOT` / `SHOULD` / `Contract` / `Checklist` 章节。
146
+
147
+ | 你要维护的主题(关键词) | 就地编辑这个文件 |
148
+ |---|---|
149
+ | 开发流程、改动范围、提交前自检、验证证据 | `01-development-checklist-protocol.md` |
150
+ | AI 生成代码、复用、临场发明、事实核对 | `02-ai-generated-code-protocol.md` |
151
+ | Review、提测、上线门禁、验收标准 | `03-acceptance-gate-protocol.md` |
152
+ | 登录鉴权、XSS/CSRF、敏感数据、文件上传下载 | `04-security-protocol.md` |
153
+ | 环境变量、API base、Mock 开关、构建配置 | `05-environment-configuration-protocol.md` |
154
+ | 公共变更、破坏性改动、废弃迁移、兼容窗口 | `06-change-governance-protocol.md` |
155
+ | 前后端契约、幂等、并发、接口版本、错误码约定 | `07-frontend-backend-communication-protocol.md` |
156
+ | Owner、RACI、评审与裁决边界 | `08-role-responsibility-protocol.md` |
157
+ | 目录职责、模块依赖方向、公开入口 | `09-module-boundary-protocol.md` |
158
+ | TypeScript、Lint、契约测试、CI、ADR | `10-engineering-tooling-protocol.md` |
159
+ | 依赖包管理、锁文件、供应链审查 | `11-dependency-package-management-protocol.md` |
160
+ | 业务规则、领域状态流转、后端兜底 | `12-business-rules-protocol.md` |
161
+ | 金额、币种、精度、舍入、汇总(如 4c2d) | `13-monetary-precision-protocol.md` |
162
+ | DTO、Adapter、Domain Model、ViewModel 分层 | `14-data-model-protocol.md` |
163
+ | 请求封装、HTTP client、取消、重试、错误归一化 | `15-request-api-protocol.md` |
164
+ | 错误分类、错误呈现、错误边界、恢复策略 | `16-error-handling-protocol.md` |
165
+ | 菜单/页面/按钮/字段/数据范围权限 | `17-permission-protocol.md` |
166
+ | 状态分层(local/page/global/server/url/form)、状态库选型 | `18-state-management-protocol.md` |
167
+ | 缓存 key、缓存隔离、刷新与失效 | `19-cache-protocol.md` |
168
+ | 单元/组件/契约/E2E/视觉/性能测试 | `20-testing-protocol.md` |
169
+ | 设计 token、组件视觉规范、设计合法性 | `21-design-system-protocol.md` |
170
+ | 主题切换、暗色模式、token 持久化 | `22-theme-protocol.md` |
171
+ | 键盘、焦点、语义化、读屏、对比度 | `23-accessibility-protocol.md` |
172
+ | 组件分层、复用、Props/Events/Slots、组件体积 | `24-component-protocol.md` |
173
+ | Page Contract、页面类型、区域顺序、页面骨架 | `25-page-structure-protocol.md` |
174
+ | CSS 方案、尺寸、溢出、层级、响应式断点 | `26-style-layout-protocol.md` |
175
+ | loading/empty/error/partial/offline 渲染态 | `27-rendering-state-protocol.md` |
176
+ | 表单模型、校验、提交、草稿、冲突处理 | `28-form-protocol.md` |
177
+ | 路由、URL 状态、返回恢复、异常页面 | `29-routing-url-protocol.md` |
178
+ | 表格/Grid、分页、排序、筛选、虚拟滚动 | `30-data-grid-protocol.md` |
179
+ | 性能预算、首屏、包体积、懒加载 | `31-performance-protocol.md` |
180
+ | 文件导入导出、Excel、大文件、模板 | `32-file-import-export-protocol.md` |
181
+ | 发布、版本号、回滚 | `33-release-versioning-protocol.md` |
182
+ | 前端运行监控、结构化日志、技术 telemetry、链路追踪、错误/白屏、RUM 采集、告警 | `34-monitoring-logging-protocol.md` |
183
+ | 业务行为事件、漏斗、埋点 schema、去重、同意/授权、分析用途 | `40-analytics-protocol.md` |
184
+ | LCP/INP/CLS、性能预算、RUM 统计口径、p75/p95/p99 | `31-performance-protocol.md` |
185
+ | Mock 数据、契约漂移、mock 生命周期 | `35-mock-protocol.md` |
186
+ | Feature flag、灰度、开关清理 | `36-feature-flag-protocol.md` |
187
+ | 浏览器/设备兼容矩阵、polyfill | `37-browser-device-compatibility-protocol.md` |
188
+ | i18n、多语言、格式化器(日期/数字/货币/空值) | `38-internationalization-protocol.md` |
189
+ | 文案、术语表、提示语口径 | `39-copywriting-protocol.md` |
190
+ | 埋点、指标定义、数据分析 | `40-analytics-protocol.md` |
191
+ | 设计稿交付、还原验收、切图资源 | `41-design-handoff-protocol.md` |
192
+ | 浏览器生命周期、可见性、卸载、资源释放 | `42-browser-runtime-lifecycle-protocol.md` |
193
+ | 时间、时区、日期语义、Temporal | `43-time-temporal-protocol.md` |
194
+ | 隐私、数据最小化、留存与删除 | `44-privacy-data-lifecycle-protocol.md` |
195
+ | localStorage/sessionStorage/IndexedDB/Cookie | `45-browser-storage-protocol.md` |
196
+
197
+ 只有当一条规则在上表里**找不到任何归属主题**时,才允许新增协议文件;此时必须同步下方「协议地图」
198
+ 与任务命中矩阵,保持双向索引完整。
199
+
200
+ 重跑播种(init)默认只补齐缺失文件、不覆盖已存在的协议,所以就地维护不会被覆盖。
201
+
202
+ ## 协议地图
203
+
204
+ | 编号 | 优先级 | 文档 id | 固定文件名 | 核心职责 |
205
+ |---:|:---:|---|---|---|
206
+ | 01 | P0 | `universal:development-checklist-protocol` | `01-development-checklist-protocol.md` | 开发动作、范围、同步和验证证据 |
207
+ | 02 | P0 | `universal:ai-generated-code-protocol` | `02-ai-generated-code-protocol.md` | AI 预检、复用、边界、事实和验证 |
208
+ | 03 | P0 | `universal:acceptance-gate-protocol` | `03-acceptance-gate-protocol.md` | Review、提测、上线门禁 |
209
+ | 04 | P0 | `universal:security-protocol` | `04-security-protocol.md` | 认证、XSS、敏感数据、文件和安全边界 |
210
+ | 05 | P0 | `universal:environment-configuration-protocol` | `05-environment-configuration-protocol.md` | 环境、变量、API、Mock、日志和配置 |
211
+ | 06 | P0 | `universal:change-governance-protocol` | `06-change-governance-protocol.md` | 公共变更、影响、兼容、废弃和迁移 |
212
+ | 07 | P0 | `universal:frontend-backend-communication-protocol` | `07-frontend-backend-communication-protocol.md` | 前后端正式契约、幂等、并发和版本 |
213
+ | 08 | P0 | `universal:role-responsibility-protocol` | `08-role-responsibility-protocol.md` | Owner、RACI、评审和裁决边界 |
214
+ | 09 | P0 | `universal:module-boundary-protocol` | `09-module-boundary-protocol.md` | 目录职责、依赖方向和公开入口 |
215
+ | 10 | P0 | `universal:engineering-tooling-protocol` | `10-engineering-tooling-protocol.md` | 类型、Lint、契约、测试、CI 和 ADR |
216
+ | 11 | P1 | `universal:dependency-package-management-protocol` | `11-dependency-package-management-protocol.md` | 包管理、锁文件、依赖评审和供应链 |
217
+ | 12 | P1 | `universal:business-rules-protocol` | `12-business-rules-protocol.md` | 领域规则、状态流转和后端兜底 |
218
+ | 13 | P1 | `universal:monetary-precision-protocol` | `13-monetary-precision-protocol.md` | 金额、币种、精度、舍入和汇总 |
219
+ | 14 | P1 | `universal:data-model-protocol` | `14-data-model-protocol.md` | DTO、Adapter、Domain Model、ViewModel |
220
+ | 15 | P1 | `universal:request-api-protocol` | `15-request-api-protocol.md` | 前端请求封装、取消、重试和错误归一化 |
221
+ | 16 | P1 | `universal:error-handling-protocol` | `16-error-handling-protocol.md` | 错误分类、呈现、边界和恢复 |
222
+ | 17 | P1 | `universal:permission-protocol` | `17-permission-protocol.md` | 菜单、页面、按钮、字段和数据范围 |
223
+ | 18 | P1 | `universal:state-management-protocol` | `18-state-management-protocol.md` | local/page/global/server/url/form 状态 |
224
+ | 19 | P1 | `universal:cache-protocol` | `19-cache-protocol.md` | 缓存 key、隔离、刷新和失效 |
225
+ | 20 | P1 | `universal:testing-protocol` | `20-testing-protocol.md` | 单元、组件、契约、E2E、视觉和性能测试 |
226
+ | 21 | P1 | `universal:design-system-protocol` | `21-design-system-protocol.md` | Token、组件视觉、状态和设计合法性 |
227
+ | 22 | P1 | `universal:theme-protocol` | `22-theme-protocol.md` | 主题 token、切换、持久化和第三方同步 |
228
+ | 23 | P1 | `universal:accessibility-protocol` | `23-accessibility-protocol.md` | 键盘、焦点、语义、读屏和对比度 |
229
+ | 24 | P1 | `universal:component-protocol` | `24-component-protocol.md` | 组件分层、复用、Props、Events、Slots |
230
+ | 25 | P1 | `universal:page-structure-protocol` | `25-page-structure-protocol.md` | Page Contract、页面类型和区域顺序 |
231
+ | 26 | P1 | `universal:style-layout-protocol` | `26-style-layout-protocol.md` | CSS、尺寸、溢出、层级和响应式 |
232
+ | 27 | P1 | `universal:rendering-state-protocol` | `27-rendering-state-protocol.md` | loading、empty、error、partial、offline |
233
+ | 28 | P1 | `universal:form-protocol` | `28-form-protocol.md` | 表单模型、校验、提交、草稿和冲突 |
234
+ | 29 | P1 | `universal:routing-url-protocol` | `29-routing-url-protocol.md` | 路由、URL 状态、返回恢复和异常页面 |
235
+ | 30 | P1 | `universal:data-grid-protocol` | `30-data-grid-protocol.md` | 表格壳、列宽、虚拟化、列配置和导出 |
236
+ | 31 | P1 | `universal:performance-protocol` | `31-performance-protocol.md` | 预算、分包、分页、虚拟化和并发 |
237
+ | 32 | P1 | `universal:file-import-export-protocol` | `32-file-import-export-protocol.md` | 文件、模板、导入、导出和任务结果 |
238
+ | 33 | P2 | `universal:release-versioning-protocol` | `33-release-versioning-protocol.md` | 版本、灰度、发布、回滚和 breaking change |
239
+ | 34 | P1 | `universal:monitoring-logging-protocol` | `34-monitoring-logging-protocol.md` | 运行日志、技术遥测、错误/白屏、Trace/Span、RED、RUM 采集和告警 |
240
+ | 35 | P2 | `universal:mock-protocol` | `35-mock-protocol.md` | 契约 Mock、异常、大数据和启停 |
241
+ | 36 | P2 | `universal:feature-flag-protocol` | `36-feature-flag-protocol.md` | 功能开关、灰度、关闭态和清理 |
242
+ | 37 | P2 | `universal:browser-device-compatibility-protocol` | `37-browser-device-compatibility-protocol.md` | 浏览器、设备、分辨率和缩放矩阵 |
243
+ | 38 | P2 | `universal:internationalization-protocol` | `38-internationalization-protocol.md` | i18n、locale、RTL、格式化、文案外置、ICU、翻译工作流、SSR hydration、第三方 SDK 本地化 |
244
+ | 39 | P2 | `universal:copywriting-protocol` | `39-copywriting-protocol.md` | 按钮、确认、错误、空态和风险文案 |
245
+ | 40 | P2 | `universal:analytics-protocol` | `40-analytics-protocol.md` | 行为事件、字段、时机、去重和隐私 |
246
+ | 41 | P2 | `universal:design-handoff-protocol` | `41-design-handoff-protocol.md` | 设计状态、组件来源、视口和验收交付 |
247
+ | 42 | P1 | `universal:browser-runtime-lifecycle-protocol` | `42-browser-runtime-lifecycle-protocol.md` | 监听、请求、Worker、长连接和页面生命周期资源释放 |
248
+ | 43 | P1 | `universal:time-temporal-protocol` | `43-time-temporal-protocol.md` | 时间点、日期、时区、持续时长和 Clock 语义 |
249
+ | 44 | P0 | `universal:privacy-data-lifecycle-protocol` | `44-privacy-data-lifecycle-protocol.md` | 数据最小化、目的、用户控制、保留和清理 |
250
+ | 45 | P1 | `universal:browser-storage-protocol` | `45-browser-storage-protocol.md` | 客户端存储选择、隔离、迁移、配额和清理 |
251
+
252
+ ## 默认激活基线
253
+
254
+ 使用本规范时默认激活:
255
+
256
+ ```text
257
+ universal:index
258
+ universal:development-checklist-protocol
259
+ universal:ai-generated-code-protocol
260
+ universal:acceptance-gate-protocol
261
+ universal:security-protocol
262
+ universal:change-governance-protocol
263
+ universal:role-responsibility-protocol
264
+ universal:module-boundary-protocol
265
+ universal:engineering-tooling-protocol
266
+ universal:privacy-data-lifecycle-protocol
267
+ ```
268
+
269
+ 环境、API 或运行行为相关任务追加 `universal:environment-configuration-protocol` 和 `universal:frontend-backend-communication-protocol`。
270
+
271
+ ## 按任务追加激活
272
+
273
+ | 任务类型 | 必须追加的协议 |
274
+ |---|---|
275
+ | 新增/升级/删除依赖 | 11、20、33 |
276
+ | 业务规则、状态流转 | 12、14、16、17、20 |
277
+ | 金额、比例、报表 | 12、13、14、20、43 |
278
+ | API、联调、认证、错误 | 05、07、14–19、35、42 |
279
+ | 新建/修改页面 | 21–29、31、37–39、41、42 |
280
+ | 新建/修改组件 | 21–24、26–28、31、41、42 |
281
+ | 宽表、报表、列宽 | 19、20、23、26、27、30、31 |
282
+ | 表单和编辑流程 | 12–19、23、28 |
283
+ | 导入导出和异步任务 | 04、07、16、17、19、20、31、32、34、35、42、45 |
284
+ | 发布、灰度、回滚 | 03–06、20、33、34、36 |
285
+ | 埋点和用户行为 | 04、08、34、40、44 |
286
+ | 可观测性、链路追踪、告警、埋点、RUM | 08、31、34、40、44 |
287
+ | 日期、时间、时区、日程 | 07、14、20、28、38、43 |
288
+ | 定时器、监听、订阅、实时连接、Worker | 15、18、20、31、34、42 |
289
+ | Cookie、Web Storage、IndexedDB、离线缓存 | 04、18、19、20、44、45 |
290
+ | 个人信息、敏感权限、第三方 SDK | 04、08、20、34、40、44、45 |
291
+
292
+ 同一任务命中多行时取并集;数字用于查表,实际激活必须使用文档 ID。
293
+
294
+ ## 重复职责边界
295
+
296
+ - 前后端通信协议定义上游正式契约;请求协议定义契约进入前端后的实现。
297
+ - 数据模型协议定义 DTO 到稳定模型的转换;业务规则协议定义模型上的领域判断。
298
+ - 错误处理协议定义呈现与恢复;监控与日志协议(34)定义运行诊断的采集、关联、传输与告警。
299
+ - 权限协议定义界面表现;安全协议和后端鉴权定义最终边界。
300
+ - `34-monitoring-logging-protocol` 是运行可观测性的主权威,覆盖结构化日志、技术 telemetry、Trace/Span/Breadcrumb、RED、错误/白屏、RUM 采集、告警和 SDK fail-open;`40-analytics-protocol` 只定义业务行为事件、漏斗、事件 schema、去重、同意/授权和分析用途;`31-performance-protocol` 只定义 LCP/INP/CLS 等性能预算、RUM 统计口径和分位数。
301
+ - Design System 定义 token 语义;Theme 定义不同主题下的 token 值。
302
+ - 页面结构定义区域;样式布局定义尺寸与溢出;组件协议定义局部 API。
303
+ - 测试协议定义怎么验证;验收门禁定义证据是否足以放行。
304
+ - Mock 只能实现正式契约场景,不能反向定义契约。
305
+ - 运行时资源生命周期定义资源如何取得、暂停和释放;性能协议定义预算,状态协议定义数据归属。
306
+ - 时间协议定义日期、时间点和时区的机器语义;国际化协议定义面向用户的本地化显示。
307
+ - 隐私协议定义数据是否必要、用于何种目的及何时清理;安全协议定义如何防止未授权访问和攻击。
308
+ - 浏览器存储协议定义介质、迁移、配额和隔离;缓存协议定义远端数据的新鲜度和失效。
@@ -0,0 +1,20 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/java/index.md
3
+ seed_source_sha256: b7a9c253b74acaf5fbda84dc9650cb807838a74ad062393c08679701029d6cd4
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ ---
12
+
13
+ # Java Overlay 索引
14
+
15
+ 本目录只描述 Java 语言与 JVM 构建边界,不隐式选择 Spring、数据库、缓存、入口代理或容器。
16
+
17
+ | ID | 文件 | 能力 |
18
+ |---|---|---|
19
+ | `backend-stack:java` | `java-language-overlay.md` | `language-runtime` |
20
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/java/java-language-overlay.md
3
+ seed_source_sha256: 38b592a5beaa899abb45e871e5097cafedeea80502baee00bcfbfcfa313dab85
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: backend-stack:java
12
+ capability: language-runtime
13
+ requires: []
14
+ conflicts: []
15
+ coexistence: independent
16
+ stages: [prepare, implement, check, release]
17
+ ---
18
+
19
+ # Java 语言 Overlay
20
+
21
+ ## Scope
22
+
23
+ 本 Overlay 具体化 Java 源码、构建、JDK 与 JVM 兼容边界。
24
+
25
+ ## Rules
26
+
27
+ - 必须固定并记录 JDK、编译目标、构建工具和依赖解析来源。
28
+ - 不得由 Java 选择推断 Spring Boot、数据库、Redis、Nginx 或 Tomcat。
29
+ - 语言升级必须验证字节码、运行时、测试与部署环境兼容性。
30
+
31
+ ## Checklist
32
+
33
+ - [ ] 版本来源、构建命令和 CI 运行时可复现。
34
+ - [ ] 项目技术基线记录实际 JDK 与打包方式。
35
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/jpa/index.md
3
+ seed_source_sha256: 6a1bb930d58d7ee19a65f871829e7f347bbb83eee93412def4c3720a32f2d1f5
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ ---
12
+
13
+ # JPA Overlay 索引
14
+
15
+ 本目录只描述 JPA 持久化能力,不绑定数据库产品。
16
+
17
+ | ID | 文件 | 能力 |
18
+ |---|---|---|
19
+ | `backend-stack:jpa` | `jpa-persistence-overlay.md` | `persistence-framework` |
20
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/jpa/jpa-persistence-overlay.md
3
+ seed_source_sha256: e43479fd8659b89863cf47dee9fee3c52727cc2978ffd1b854ea17c777b1e9e6
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: backend-stack:jpa
12
+ capability: persistence-framework
13
+ requires: [backend-stack:java]
14
+ conflicts: []
15
+ coexistence: explicit-scope
16
+ stages: [prepare, implement, check]
17
+ ---
18
+
19
+ # JPA 持久化 Overlay
20
+
21
+ ## Scope
22
+
23
+ 本 Overlay 具体化实体生命周期、关联加载、查询与持久化上下文边界。
24
+
25
+ ## Rules
26
+
27
+ - Entity 不得直接替代 API DTO 或领域契约。
28
+ - 必须验证关联加载、N+1、脏检查、批处理和事务边界。
29
+ - 与 MyBatis 并存时必须声明模块或数据源范围。
30
+
31
+ ## Checklist
32
+
33
+ - [ ] Java 依赖已显式选择。
34
+ - [ ] schema、迁移和实体映射不存在未经解释的漂移。
35
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/kubernetes-ingress/index.md
3
+ seed_source_sha256: 847ab143549d2776913bdb403abe4283143e188fdc665ae4a045fd2699d8bb30
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ ---
12
+
13
+ # Kubernetes Ingress Overlay 索引
14
+
15
+ 本目录只描述 Kubernetes Ingress 入口能力,不推断具体控制器实现。
16
+
17
+ | ID | 文件 | 能力 |
18
+ |---|---|---|
19
+ | `backend-stack:kubernetes-ingress` | `kubernetes-ingress-overlay.md` | `cluster-ingress` |
20
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/kubernetes-ingress/kubernetes-ingress-overlay.md
3
+ seed_source_sha256: 4369b51a677453c24b5ec4d4b97001c91932918fc779c55562012ebc6b312bf5
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: backend-stack:kubernetes-ingress
12
+ capability: cluster-ingress
13
+ requires: []
14
+ conflicts: []
15
+ coexistence: explicit-entry-chain
16
+ stages: [prepare, implement, check, release]
17
+ ---
18
+
19
+ # Kubernetes Ingress Overlay
20
+
21
+ ## Scope
22
+
23
+ 本 Overlay 具体化集群入口、Service 路由、TLS、annotation 与健康检查边界。
24
+
25
+ ## Rules
26
+
27
+ - 必须记录实际 Ingress Controller、入口类和可信代理链。
28
+ - annotation 与超时不得依赖未审计的集群默认值。
29
+ - 与 Nginx 并存时必须记录完整入口链路与各自责任。
30
+
31
+ ## Checklist
32
+
33
+ - [ ] manifest、路由、证书和回滚路径可复核。
34
+ - [ ] 控制器特有行为已在项目技术基线中声明。
35
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/messaging/index.md
3
+ seed_source_sha256: ab5a2cf4ab18168ea59e1788e1c156d00a059ead9eb509e24266c684feb7b5ea
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ ---
12
+
13
+ # Messaging Overlay 索引
14
+
15
+ 本目录描述与具体厂商无关的消息可靠性能力,不隐式选择任何 broker。
16
+
17
+ | ID | 文件 | 能力 |
18
+ |---|---|---|
19
+ | `backend-stack:messaging` | `messaging-reliability-overlay.md` | `asynchronous-messaging` |
20
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/messaging/messaging-reliability-overlay.md
3
+ seed_source_sha256: ed7f82208521675510ab4a42b229f9be269a52514cf5188c9bf83323d7590572
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: backend-stack:messaging
12
+ capability: asynchronous-messaging
13
+ requires: []
14
+ conflicts: []
15
+ coexistence: explicit-channel
16
+ stages: [prepare, implement, check, release]
17
+ ---
18
+
19
+ # 消息可靠性 Overlay
20
+
21
+ ## Scope
22
+
23
+ 本 Overlay 具体化消息契约、投递、消费、重试、死信与可观测边界。
24
+
25
+ ## Rules
26
+
27
+ - topic、事件 schema、版本、顺序和重复投递语义必须明确。
28
+ - 消费者必须按契约处理幂等、毒消息、重试和死信。
29
+ - 不得把 broker 可用性等同于业务处理成功。
30
+
31
+ ## Checklist
32
+
33
+ - [ ] 生产、消费、补偿和对账证据可关联。
34
+ - [ ] 敏感数据、保留期和权限符合安全与隐私协议。
35
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/mybatis/index.md
3
+ seed_source_sha256: 3248739d1cca70a4d95c62553cddcc308ebe8e85dac8bde0c98440b03d250410
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ ---
12
+
13
+ # MyBatis Overlay 索引
14
+
15
+ 本目录只描述 MyBatis 持久化能力,不绑定数据库产品。
16
+
17
+ | ID | 文件 | 能力 |
18
+ |---|---|---|
19
+ | `backend-stack:mybatis` | `mybatis-persistence-overlay.md` | `persistence-framework` |
20
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/mybatis/mybatis-persistence-overlay.md
3
+ seed_source_sha256: 968bfa7df9b4c675161427809fd3d4e9e5b62b2b53a880420f36af00d2c60e57
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: backend-stack:mybatis
12
+ capability: persistence-framework
13
+ requires: [backend-stack:java]
14
+ conflicts: []
15
+ coexistence: explicit-scope
16
+ stages: [prepare, implement, check]
17
+ ---
18
+
19
+ # MyBatis 持久化 Overlay
20
+
21
+ ## Scope
22
+
23
+ 本 Overlay 具体化 Mapper、SQL 映射、结果映射和动态 SQL 边界。
24
+
25
+ ## Rules
26
+
27
+ - SQL 必须参数化并绑定可复核的 Mapper 与测试坐标。
28
+ - 动态条件、分页、批处理和结果映射必须覆盖空值与类型边界。
29
+ - 与 JPA 并存时必须声明模块或数据源范围。
30
+
31
+ ## Checklist
32
+
33
+ - [ ] Java 依赖已显式选择。
34
+ - [ ] SQL、索引、事务和迁移证据相互一致。
35
+
@@ -0,0 +1,20 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/mysql/index.md
3
+ seed_source_sha256: d3b40d3d12bfb2b6f2af4aa918dade0c8ee762b02e7a1290e1a0a6064400b355
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ ---
12
+
13
+ # MySQL Overlay 索引
14
+
15
+ 本目录只描述 MySQL 数据库能力,不绑定持久化框架。
16
+
17
+ | ID | 文件 | 能力 |
18
+ |---|---|---|
19
+ | `backend-stack:mysql` | `mysql-database-overlay.md` | `relational-database` |
20
+
@@ -0,0 +1,35 @@
1
+ ---
2
+ seed_source: pomaster/components/backend-hard-spec/assets/stacks/mysql/mysql-database-overlay.md
3
+ seed_source_sha256: a47d8c61959c120707bb907275e74ce13b4b36b03fa493bc09cc7d47fcc949d7
4
+ seed_version: B6C
5
+ lane: backend
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: backend-stack:mysql
12
+ capability: relational-database
13
+ requires: []
14
+ conflicts: []
15
+ coexistence: explicit-data-source
16
+ stages: [prepare, implement, check, release]
17
+ ---
18
+
19
+ # MySQL 数据库 Overlay
20
+
21
+ ## Scope
22
+
23
+ 本 Overlay 具体化 MySQL schema、InnoDB、索引、事务与迁移验证边界。
24
+
25
+ ## Rules
26
+
27
+ - 字符集、排序规则、类型、约束和索引必须由 migration 明确表达。
28
+ - 隔离级别、锁行为和执行计划必须以实际版本证据为准。
29
+ - 与其他数据库并存时必须声明数据源与数据所有权。
30
+
31
+ ## Checklist
32
+
33
+ - [ ] migration、rollback 或 roll-forward 路径可验证。
34
+ - [ ] 生产兼容性不依赖本地默认值。
35
+