pomaster 0.3.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 (344) hide show
  1. package/README.md +57 -22
  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 +95 -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 +95 -0
  132. package/catalog/policies/policy.sec.third_party_execution_register.json +2 -1
  133. package/catalog/policies/policy.sec.trust_boundary_enforcement.json +96 -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 +20514 -10735
  240. package/package.json +2 -1
  241. package/seeds/aggregation-manifest.json +691 -0
  242. package/seeds/baseline/backend/api-contract.md +26 -0
  243. package/seeds/baseline/backend/architecture.md +31 -0
  244. package/seeds/baseline/backend/data-access.md +31 -0
  245. package/seeds/baseline/backend/directory-structure.md +11 -0
  246. package/seeds/baseline/backend/integration-runtime.md +21 -0
  247. package/seeds/baseline/backend/quality.md +31 -0
  248. package/seeds/baseline/backend/stack.yaml +13 -0
  249. package/seeds/baseline/backend/transaction-concurrency.md +26 -0
  250. package/seeds/baseline/data/lineage.md +11 -0
  251. package/seeds/baseline/data/migration.md +11 -0
  252. package/seeds/baseline/data/model.md +31 -0
  253. package/seeds/baseline/data/precision-units.md +31 -0
  254. package/seeds/baseline/data/quality.md +31 -0
  255. package/seeds/baseline/frontend/api-and-error.md +21 -0
  256. package/seeds/baseline/frontend/architecture.md +26 -0
  257. package/seeds/baseline/frontend/design-system.md +21 -0
  258. package/seeds/baseline/frontend/directory-structure.md +16 -0
  259. package/seeds/baseline/frontend/quality.md +26 -0
  260. package/seeds/baseline/frontend/stack.yaml +17 -0
  261. package/seeds/baseline/frontend/state-and-data.md +26 -0
  262. package/seeds/baseline/manifest.yaml +32 -0
  263. package/seeds/baseline/platform/delivery.md +36 -0
  264. package/seeds/baseline/platform/environment.md +11 -0
  265. package/seeds/baseline/platform/observability.md +31 -0
  266. package/seeds/baseline/platform/security.md +26 -0
  267. package/seeds/manifest.json +1429 -0
  268. package/seeds/specs/evidence/accessibility.md +89 -0
  269. package/seeds/specs/evidence/architecture.md +89 -0
  270. package/seeds/specs/evidence/browser-e2e.md +91 -0
  271. package/seeds/specs/evidence/build.md +91 -0
  272. package/seeds/specs/evidence/business-acceptance.md +89 -0
  273. package/seeds/specs/evidence/complexity-crap.md +97 -0
  274. package/seeds/specs/evidence/contract.md +89 -0
  275. package/seeds/specs/evidence/coverage.md +91 -0
  276. package/seeds/specs/evidence/data-migration.md +91 -0
  277. package/seeds/specs/evidence/dead-code-duplicate.md +89 -0
  278. package/seeds/specs/evidence/dependency-supply-chain.md +89 -0
  279. package/seeds/specs/evidence/index.md +55 -0
  280. package/seeds/specs/evidence/mutation.md +89 -0
  281. package/seeds/specs/evidence/performance.md +89 -0
  282. package/seeds/specs/evidence/release.md +91 -0
  283. package/seeds/specs/evidence/runtime-observability.md +91 -0
  284. package/seeds/specs/evidence/security.md +89 -0
  285. package/seeds/specs/evidence/typecheck-lint.md +91 -0
  286. package/seeds/specs/evidence/unit-component-integration.md +91 -0
  287. package/seeds/specs/evidence/visual-regression.md +89 -0
  288. package/seeds/specs/hard/stacks/antdesign/antdesign-ui-overlay.md +48 -0
  289. package/seeds/specs/hard/stacks/antdesign/index.md +20 -0
  290. package/seeds/specs/hard/stacks/css/css-system-overlay.md +52 -0
  291. package/seeds/specs/hard/stacks/css/index.md +20 -0
  292. package/seeds/specs/hard/stacks/geist/geist-design-system-overlay.md +48 -0
  293. package/seeds/specs/hard/stacks/geist/index.md +20 -0
  294. package/seeds/specs/hard/stacks/java/index.md +20 -0
  295. package/seeds/specs/hard/stacks/java/java-language-overlay.md +35 -0
  296. package/seeds/specs/hard/stacks/jpa/index.md +20 -0
  297. package/seeds/specs/hard/stacks/jpa/jpa-persistence-overlay.md +35 -0
  298. package/seeds/specs/hard/stacks/kubernetes-ingress/index.md +20 -0
  299. package/seeds/specs/hard/stacks/kubernetes-ingress/kubernetes-ingress-overlay.md +35 -0
  300. package/seeds/specs/hard/stacks/messaging/index.md +20 -0
  301. package/seeds/specs/hard/stacks/messaging/messaging-reliability-overlay.md +35 -0
  302. package/seeds/specs/hard/stacks/mybatis/index.md +20 -0
  303. package/seeds/specs/hard/stacks/mybatis/mybatis-persistence-overlay.md +35 -0
  304. package/seeds/specs/hard/stacks/mysql/index.md +20 -0
  305. package/seeds/specs/hard/stacks/mysql/mysql-database-overlay.md +35 -0
  306. package/seeds/specs/hard/stacks/nginx/index.md +20 -0
  307. package/seeds/specs/hard/stacks/nginx/nginx-proxy-overlay.md +35 -0
  308. package/seeds/specs/hard/stacks/postgresql/index.md +20 -0
  309. package/seeds/specs/hard/stacks/postgresql/postgresql-database-overlay.md +35 -0
  310. package/seeds/specs/hard/stacks/redis/index.md +20 -0
  311. package/seeds/specs/hard/stacks/redis/redis-cache-overlay.md +35 -0
  312. package/seeds/specs/hard/stacks/spring-batch/index.md +20 -0
  313. package/seeds/specs/hard/stacks/spring-batch/spring-batch-job-overlay.md +35 -0
  314. package/seeds/specs/hard/stacks/spring-boot/index.md +20 -0
  315. package/seeds/specs/hard/stacks/spring-boot/spring-boot-application-overlay.md +35 -0
  316. package/seeds/specs/hard/stacks/spring-mvc/index.md +20 -0
  317. package/seeds/specs/hard/stacks/spring-mvc/spring-mvc-web-overlay.md +35 -0
  318. package/seeds/specs/hard/stacks/spring-webflux/index.md +20 -0
  319. package/seeds/specs/hard/stacks/spring-webflux/spring-webflux-reactive-overlay.md +35 -0
  320. package/seeds/specs/hard/stacks/tomcat/index.md +20 -0
  321. package/seeds/specs/hard/stacks/tomcat/tomcat-runtime-overlay.md +35 -0
  322. package/seeds/specs/hard/stacks/vue3/index.md +20 -0
  323. package/seeds/specs/hard/stacks/vue3/vue3-framework-overlay.md +71 -0
  324. package/seeds/specs/hard/themes/ai-generated-code.md +171 -0
  325. package/seeds/specs/hard/themes/api-contract-and-error-semantics.md +532 -0
  326. package/seeds/specs/hard/themes/architecture-and-module-boundaries.md +323 -0
  327. package/seeds/specs/hard/themes/data-and-transactions.md +582 -0
  328. package/seeds/specs/hard/themes/engineering-toolchain-and-dependencies.md +333 -0
  329. package/seeds/specs/hard/themes/environment-and-configuration.md +196 -0
  330. package/seeds/specs/hard/themes/frontend-state-and-client-data.md +342 -0
  331. package/seeds/specs/hard/themes/index.md +374 -0
  332. package/seeds/specs/hard/themes/integration-and-async-runtime.md +331 -0
  333. package/seeds/specs/hard/themes/internationalization-and-copywriting.md +350 -0
  334. package/seeds/specs/hard/themes/observability-and-analytics.md +305 -0
  335. package/seeds/specs/hard/themes/page-composition-and-browser-environment.md +554 -0
  336. package/seeds/specs/hard/themes/performance-and-capacity.md +226 -0
  337. package/seeds/specs/hard/themes/permission-and-authorization.md +168 -0
  338. package/seeds/specs/hard/themes/privacy-and-data-lifecycle.md +176 -0
  339. package/seeds/specs/hard/themes/release-and-feature-flags.md +237 -0
  340. package/seeds/specs/hard/themes/security.md +372 -0
  341. package/seeds/specs/hard/themes/task-governance-and-acceptance.md +554 -0
  342. package/seeds/specs/hard/themes/testing-and-verification.md +266 -0
  343. package/seeds/specs/hard/themes/ui-presentation-and-design.md +670 -0
  344. package/seeds/specs/hard/themes/value-semantics-and-domain-data.md +339 -0
@@ -0,0 +1,226 @@
1
+ ---
2
+ seed_source: packages/cli/seeds/aggregation-manifest.json
3
+ seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
4
+ seed_version: B7-THEME
5
+ lane: [frontend, backend]
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [frontend, backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: theme:performance-and-capacity
12
+ criticality: standard # 聚合注记:取源最高;info 性注记非执行语义
13
+ injection_mode: triggered # 聚合注记:来源同值;info 性注记非执行语义
14
+ stages: [prepare, check, release] # 聚合注记:来源 stages 并集;info 性注记非执行语义
15
+ triggers: [performance, capacity] # 聚合注记:来源 triggers 并集;info 性注记非执行语义
16
+ requires: [] # 聚合注记:来源 requires 并集(全空)
17
+ x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
18
+ - seed_source: pomaster/components/frontend-hard-spec/assets/universal/31-performance-protocol.md
19
+ sha256: 416ff411c75e538feec3aad8be5e733b95913580fd937c0abebd16aa0d21608c
20
+ seed_version: B6B-2
21
+ - seed_source: pomaster/components/backend-hard-spec/assets/universal/30-performance-capacity-protocol.md
22
+ sha256: b575dd07e4bb6def646acb55c3d62d086a9fd12035b2ab359ec353bf443773e5
23
+ seed_version: B6C
24
+ ---
25
+
26
+ # 性能与容量
27
+
28
+ > **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
29
+
30
+ ## Scope
31
+
32
+ **源:FE 31 性能协议(pomaster/components/frontend-hard-spec/assets/universal/31-performance-protocol.md)**
33
+
34
+ P1。定义首屏、包体、请求、列表、表格、图表、长任务和渲染稳定的性能规则。
35
+
36
+ **源:BE 30 性能与容量协议(pomaster/components/backend-hard-spec/assets/universal/30-performance-capacity-protocol.md)**
37
+
38
+ 规范延迟、吞吐、连接池、线程、批处理、背压、容量和压测证据。
39
+
40
+ ## Non-Scope
41
+
42
+ **源:FE 31 性能协议**
43
+
44
+ 不替代后端容量规划和基础设施性能,不允许只追分数牺牲正确性。
45
+
46
+ **源:BE 30 性能与容量协议**
47
+
48
+ 不在 universal 中规定具体数值阈值或硬件规模。
49
+
50
+ ## Terms
51
+
52
+ **源:FE 31 性能协议**
53
+
54
+ - Performance Budget:可验证的时间、大小或资源阈值。
55
+ - Core Web Vitals:LCP、INP、CLS 等反映加载、交互响应和视觉稳定性的用户体验指标。
56
+ - RUM Distribution:按页面类型、设备、网络、浏览器、版本和采样窗口聚合的真实用户指标分布。
57
+ - Virtualization:仅渲染可见窗口数据。
58
+ - Stale Response:已被新请求替代的旧响应。
59
+
60
+ **源:BE 30 性能与容量协议**
61
+
62
+ 性能预算是由业务目标与运行环境确认的可测量约束。
63
+
64
+ ## MUST
65
+
66
+ **源:FE 31 性能协议 · §MUST**
67
+
68
+ - 定义首屏、包体、交互和核心页面预算。
69
+ - 路由、图表和重组件按需加载。
70
+ - 大列表服务端分页,宽表虚拟化。
71
+ - 搜索防抖、旧请求取消、过期响应丢弃。
72
+ - 长任务异步执行并可恢复。
73
+ - 性能变更用同数据量测量并记录结果。
74
+ - 性能预算必须区分实验室数据与真实用户数据,记录设备、网络、浏览器、采样窗口、指标版本和 p75 等统计口径。
75
+ - 启用真实用户监测时,核心 Web Vitals 应按当前稳定定义分设备评估;默认参考目标为 p75 的 LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1,项目可基于证据收紧或批准例外。
76
+ - LCP、INP、CLS、FCP、TTFB、长任务和关键业务交互预算必须声明数据源、指标版本、测量起止点、样本下限、排除规则、聚合窗口和适用页面类型;p75 用于主要放行判断,p95/p99 用于尾部退化诊断。
77
+ - RUM 报告必须按页面类型、设备类别、网络类别、浏览器和应用版本切分,实验室结果不得冒充真实用户分布;运行采集与传输韧性引用 `34-monitoring-logging-protocol`。
78
+ - 页面隐藏、恢复与离开时必须暂停不必要工作并释放资源,恢复后重新校验数据新鲜度;遵守浏览器运行时生命周期协议。
79
+
80
+ ### 分层性能责任(按目录层级)
81
+
82
+ 性能是架构期约束,按目录层级分担责任;每层有明确的性能检查点与禁止行为。层级划分与 `09-module-boundary-protocol` 一致。
83
+
84
+ - **app 层 — 应用启动性能**:初始化代码、Provider 数量、全局插件、首屏依赖必须精简。路由必须懒加载(router-level lazy loading)。MUST NOT 在应用入口(如 `main.ts`)直接同步 import 重型编辑器、图表库或大表组件(用户打开登录页即加载整个系统能力 → 首屏变慢)。
85
+ - **platform 层 — 状态管理性能**:server state 走 Query Cache,local UI state 走状态库(如 Pinia)。MUST NOT 在全局 store 存储大量业务数据(如 10 万 BOM 节点入 Pinia → reactive 开销、刷新慢、内存增加)。
86
+ - **api 层 — 网络性能治理**:页面初始化请求必须并行或由后端聚合。MUST NOT 串行发起可并行的请求(如打开页面串行 GET user/permission/menu/bom/supplier/price/config = N×RTT)。
87
+ - **domain 层 — 计算性能**:实时轻计算在前端,重计算后台异步。MUST NOT 前端遍历大数据全集做计算(如改一个零件价格就遍历 10 万 BOM 节点 → CPU 100%、页面冻结)。
88
+ - **feature 层 — 页面级性能**:页面进入核心优先、非核心延迟加载(如 BOM 编辑页:核心表格先加载,历史/图表/分析延迟)。MUST NOT 一次加载页面全部重组件。
89
+ - **shared 层 — 公共组件性能**:Table / Tree / Select / Form / Modal / Virtual List 面对大数据必须虚拟滚动或分页。MUST NOT 大列表用普通 `v-for` 渲染全量数据(如 10000 行表格普通渲染)。
90
+
91
+ **源:BE 30 性能与容量协议 · §MUST**
92
+
93
+ - 性能结论必须绑定负载模型、数据规模、环境、版本和统计口径。
94
+
95
+ ## MUST NOT
96
+
97
+ **源:FE 31 性能协议 · §MUST NOT**
98
+
99
+ - MUST NOT 一次渲染大数据全部节点。
100
+ - MUST NOT 每次按键立即请求。
101
+ - MUST NOT 让旧响应覆盖新状态。
102
+ - MUST NOT 在 render 中执行复杂计算。
103
+ - MUST NOT 为追求性能分数牺牲安全、正确性、可访问性或用户可恢复性。
104
+ - MUST NOT 混用不同版本、不同环境或不同统计口径的性能结果作直接回归结论。
105
+ - MUST NOT 只报告平均值而省略样本量、分位数、窗口和切分维度。
106
+ - MUST NOT 在本协议定义业务行为漏斗或事件用途;这些规则归 `40-analytics-protocol`。
107
+ - MUST NOT 在应用入口同步 import 重型编辑器、图表库或大表组件(首屏重依赖)。
108
+ - MUST NOT 在全局状态库存储大量业务数据(server state 须走 Query Cache)。
109
+ - MUST NOT 串行发起可并行的页面初始化请求(须并行或后端聚合)。
110
+ - MUST NOT 前端遍历大数据全集做计算(须实时轻计算 + 后台异步重计算)。
111
+ - MUST NOT 一次加载页面全部重组件(须核心优先、非核心延迟加载)。
112
+ - MUST NOT 大列表用普通 `v-for` 渲染全量数据(须虚拟滚动或分页)。
113
+
114
+ **源:BE 30 性能与容量协议 · §MUST NOT**
115
+
116
+ - 不得用单次本地耗时、平均值或无代表性数据声称满足容量。
117
+
118
+ ## SHOULD
119
+
120
+ **源:FE 31 性能协议 · §SHOULD**
121
+
122
+ - SHOULD 监控真实用户核心指标和业务交互时间。
123
+ - SHOULD 同时观察 p75 与 p95/p99,区分总体回归和长尾退化,并为样本不足标记不可判定而非假定通过。
124
+ - SHOULD 保持行高、工具栏和 loading 尺寸稳定。
125
+
126
+ **源:BE 30 性能与容量协议 · §SHOULD**
127
+
128
+ - 应同时观察尾延迟、错误率、资源、排队、背压和依赖瓶颈。
129
+
130
+ ## Contract
131
+
132
+ **源:FE 31 性能协议 · §Contract**
133
+
134
+ ```text
135
+ Scenario, DatasetSize, BudgetMetric, Threshold,
136
+ MeasurementMethod, DataSource, MetricVersion, SampleWindow, SampleSize,
137
+ Percentile, Dimensions, Baseline, Owner
138
+ ```
139
+
140
+ 分层性能责任契约(按目录层级,与 `09-module-boundary-protocol` 层级一致):
141
+
142
+ ```text
143
+ Layer, Responsibility, CheckPoint, Forbidden
144
+ app, 启动性能/路由懒加载, 入口依赖 + Provider/插件数 + 首屏包, 入口同步 import 重型组件
145
+ platform, 状态管理性能, server vs local 归属 + store 数据量, 全局 store 存大数据
146
+ api, 网络性能, 请求并行/聚合 + 串行风暴, 可并行请求串行发起
147
+ domain, 计算性能, 实时轻计算 + 后台异步, 前端遍历大数据全集
148
+ feature, 页面级性能, 核心优先 + 非核心延迟, 一次加载全部重组件
149
+ shared, 公共组件性能, 虚拟滚动/分页, 大列表普通 v-for
150
+ ```
151
+
152
+ **源:BE 30 性能与容量协议 · §Contract**
153
+
154
+ 容量计划必须包含场景、预算、峰值、瓶颈、扩缩容和降级策略。
155
+
156
+ ## Checklist
157
+
158
+ **源:FE 31 性能协议 · §Checklist**
159
+
160
+ - [ ] 预算和数据量明确。
161
+ - [ ] 分包、分页、虚拟化合理。
162
+ - [ ] 请求并发安全。
163
+ - [ ] 有测量证据。
164
+ - [ ] 实验室/真实用户口径、指标版本和分位数已记录。
165
+ - [ ] LCP/INP/CLS 等预算含数据源、样本下限、窗口、排除规则和页面适用范围。
166
+ - [ ] RUM 报告包含 p75 主要口径与 p95/p99 长尾诊断,样本不足不会被提升为通过。
167
+ - [ ] 隐藏、恢复与离开场景无无效工作和资源泄漏。
168
+ - [ ] 分层性能责任已按 app/platform/api/domain/feature/shared 分担,每层检查点与禁止行为已确认。
169
+
170
+ **源:BE 30 性能与容量协议 · §Checklist**
171
+
172
+ - [ ] 连接池、线程池、队列、批量、缓存与数据库联动已验证。
173
+
174
+ ## Examples
175
+
176
+ **源:FE 31 性能协议 · §Examples**
177
+
178
+ ### 内容示例,可删除
179
+
180
+ 筛选输入防抖并取消旧请求,详情抽屉按需加载,导出创建后台任务。
181
+
182
+ **源:BE 30 性能与容量协议 · §Examples**
183
+
184
+ - 在目标数据量和并发模型下报告 p95/p99、错误率与资源曲线。
185
+
186
+ ## Anti-patterns
187
+
188
+ **源:FE 31 性能协议 · §Anti-patterns**
189
+
190
+ 下载十万行到浏览器假分页,导致内存和交互崩溃。
191
+
192
+ 应用入口同步 import 重型编辑器/图表/大表组件,导致登录页首屏被拖慢。
193
+
194
+ 全局 Pinia store 存储 10 万 BOM 节点,reactive 开销致刷新慢、内存涨。
195
+
196
+ 打开页面串行发起 6 个可并行请求,体验 N×RTT。
197
+
198
+ 修改一个零件价格即遍历 10 万 BOM 节点重新计算,CPU 100%、页面冻结。
199
+
200
+ 10000 行表格用普通 `v-for` 渲染,未虚拟滚动。
201
+
202
+ **源:BE 30 性能与容量协议 · §Anti-patterns**
203
+
204
+ - 盲目增大池大小导致下游过载和更长排队。
205
+
206
+ ## Ownership
207
+
208
+ **源:FE 31 性能协议 · §Ownership**
209
+
210
+ 前端性能 Owner 维护预算,模块 Owner 修复回归,后端 Owner 配合数据和接口容量。
211
+
212
+ **源:BE 30 性能与容量协议 · §Ownership**
213
+
214
+ 业务 Owner 提供负载目标,Backend 与运行角色验证容量。
215
+
216
+ ## Change Policy
217
+
218
+ **源:FE 31 性能协议 · §Change Policy**
219
+
220
+ 预算放宽必须有数据和批准;新增重依赖或核心页面需建立基线。
221
+
222
+ **源:BE 30 性能与容量协议 · §Change Policy**
223
+
224
+ 预算或容量模型变化必须记录来源并重新运行代表性测试。
225
+
226
+ > **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。
@@ -0,0 +1,168 @@
1
+ ---
2
+ seed_source: packages/cli/seeds/aggregation-manifest.json
3
+ seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
4
+ seed_version: B7-THEME
5
+ lane: [frontend, backend]
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [frontend, backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: theme:permission-and-authorization
12
+ criticality: critical # 聚合注记:取源最高;info 性注记非执行语义
13
+ injection_mode: triggered # 聚合注记:来源同值;info 性注记非执行语义
14
+ stages: [prepare, implement, check] # 聚合注记:来源 stages 并集;info 性注记非执行语义
15
+ triggers: [authorization, tenant, data-scope] # 聚合注记:来源 triggers 并集;info 性注记非执行语义
16
+ requires: [] # 聚合注记:来源 requires 并集(全空)
17
+ x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
18
+ - seed_source: pomaster/components/frontend-hard-spec/assets/universal/17-permission-protocol.md
19
+ sha256: 3f51aeb30497c07a3b552c8f21ecff22730d276c85fd504fde16e9e17b622ec0
20
+ seed_version: B6B-1
21
+ - seed_source: pomaster/components/backend-hard-spec/assets/universal/17-permission-authorization-protocol.md
22
+ sha256: d85a431b682a3a7c3dd4a6ee1f67fc375b54edb4a8e7fe98d283103b64a6b41e
23
+ seed_version: B6C
24
+ ---
25
+
26
+ # 权限与鉴权
27
+
28
+ > **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
29
+
30
+ ## Scope
31
+
32
+ **源:FE 17 权限协议(pomaster/components/frontend-hard-spec/assets/universal/17-permission-protocol.md)**
33
+
34
+ P1。定义菜单、页面、按钮、字段、数据范围和接口权限的前端一致表现。
35
+
36
+ **源:BE 17 权限与鉴权协议(pomaster/components/backend-hard-spec/assets/universal/17-permission-authorization-protocol.md)**
37
+
38
+ 规范操作权限、数据范围、租户隔离、资源归属和字段脱敏。
39
+
40
+ ## Non-Scope
41
+
42
+ **源:FE 17 权限协议**
43
+
44
+ 不替代后端鉴权,不允许前端扩大或计算权威数据权限。
45
+
46
+ **源:BE 17 权限与鉴权协议**
47
+
48
+ 不替代认证机制、业务状态规则或隐私保留决策。
49
+
50
+ ## Terms
51
+
52
+ **源:FE 17 权限协议**
53
+
54
+ - Operation Permission:可执行某动作。
55
+ - Field Permission:字段可见、脱敏、只读或编辑。
56
+ - Data Scope:允许访问的数据集合。
57
+
58
+ **源:BE 17 权限与鉴权协议**
59
+
60
+ 数据范围是主体在当前租户、角色与资源关系下可访问的记录集合。
61
+
62
+ ## MUST
63
+
64
+ **源:FE 17 权限协议 · §MUST**
65
+
66
+ - 菜单、路由、按钮、字段和接口使用同一权限语义。
67
+ - 直达 URL 仍经过页面权限守卫。
68
+ - 字段权限明确可见、脱敏、只读和编辑策略。
69
+ - 数据范围由后端过滤并影响查询、详情和导出。
70
+ - 权限不足提供一致、可解释状态。
71
+
72
+ **源:BE 17 权限与鉴权协议 · §MUST**
73
+
74
+ - 每个受保护操作必须在服务端验证主体、操作、租户、数据范围和资源归属。
75
+
76
+ ## MUST NOT
77
+
78
+ **源:FE 17 权限协议 · §MUST NOT**
79
+
80
+ - MUST NOT 只隐藏菜单或按钮而省略后端鉴权。
81
+ - MUST NOT 前端获取全量数据后自行过滤敏感内容。
82
+ - MUST NOT 按角色名称硬编码权限。
83
+ - MUST NOT 将 Feature Flag 当权限。
84
+
85
+ **源:BE 17 权限与鉴权协议 · §MUST NOT**
86
+
87
+ - 不得只依赖路由隐藏、按钮状态或客户端传入的租户与 owner。
88
+
89
+ ## SHOULD
90
+
91
+ **源:FE 17 权限协议 · §SHOULD**
92
+
93
+ - SHOULD 使用统一 gate/hook/component。
94
+ - SHOULD 对禁用动作展示只读原因。
95
+
96
+ **源:BE 17 权限与鉴权协议 · §SHOULD**
97
+
98
+ - 应采用集中策略并测试越权、跨租户、批量与导出场景。
99
+
100
+ ## Contract
101
+
102
+ **源:FE 17 权限协议 · §Contract**
103
+
104
+ ```text
105
+ PermissionCode, Resource, Action, FieldPolicy?,
106
+ DataScope?, BackendEnforcement, DeniedPresentation
107
+ ```
108
+
109
+ **源:BE 17 权限与鉴权协议 · §Contract**
110
+
111
+ 权限契约必须定义主体、资源、动作、范围、拒绝语义和审计。
112
+
113
+ ## Checklist
114
+
115
+ **源:FE 17 权限协议 · §Checklist**
116
+
117
+ - [ ] 菜单到接口一致。
118
+ - [ ] URL 无法绕过。
119
+ - [ ] 字段和数据范围安全。
120
+ - [ ] 无权限状态可解释。
121
+
122
+ **源:BE 17 权限与鉴权协议 · §Checklist**
123
+
124
+ - [ ] 单条、列表、搜索、批量、导入与导出均执行一致范围控制。
125
+
126
+ ## Examples
127
+
128
+ **源:FE 17 权限协议 · §Examples**
129
+
130
+ ### 内容示例,可删除
131
+
132
+ 无导出权限时入口按产品策略隐藏或禁用,后端导出接口仍拒绝请求。
133
+
134
+ **源:BE 17 权限与鉴权协议 · §Examples**
135
+
136
+ - 查询在数据库条件中收紧租户与数据范围,而不是返回后再过滤。
137
+
138
+ ## Anti-patterns
139
+
140
+ **源:FE 17 权限协议 · §Anti-patterns**
141
+
142
+ 前端按 `role === 'admin'` 显示全部按钮,并认为无需后端校验。
143
+
144
+ **源:BE 17 权限与鉴权协议 · §Anti-patterns**
145
+
146
+ - 只检查角色名,不检查目标资源归属和字段敏感级别。
147
+
148
+ ## Ownership
149
+
150
+ **源:FE 17 权限协议 · §Ownership**
151
+
152
+ 业务/安全 Owner 定义权限,后端执行鉴权,前端平台维护统一呈现。
153
+
154
+ **源:BE 17 权限与鉴权协议 · §Ownership**
155
+
156
+ BP 定义业务权限语义,Backend 执行最终授权。
157
+
158
+ ## Change Policy
159
+
160
+ **源:FE 17 权限协议 · §Change Policy**
161
+
162
+ 权限码和数据范围变化必须同步菜单、路由、缓存、接口、测试和审计。
163
+
164
+ **源:BE 17 权限与鉴权协议 · §Change Policy**
165
+
166
+ 扩大权限范围必须经过正式业务确认、安全评审和回归测试。
167
+
168
+ > **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。
@@ -0,0 +1,176 @@
1
+ ---
2
+ seed_source: packages/cli/seeds/aggregation-manifest.json
3
+ seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
4
+ seed_version: B7-THEME
5
+ lane: [frontend, backend]
6
+ status: CURRENT
7
+ authority_scope: mixed_required_and_advisory
8
+ applies_to: [frontend, backend]
9
+ related_evidence_specs: []
10
+ related_tools: []
11
+ legacy_id: theme:privacy-and-data-lifecycle
12
+ criticality: critical # 聚合注记:取源最高;info 性注记非执行语义
13
+ injection_mode: triggered # 聚合注记:来源同值;info 性注记非执行语义
14
+ stages: [prepare, implement, check, release] # 聚合注记:来源 stages 并集;info 性注记非执行语义
15
+ triggers: [sensitive-data, privacy, data-export] # 聚合注记:来源 triggers 并集;info 性注记非执行语义
16
+ requires: [] # 聚合注记:来源 requires 并集(全空)
17
+ x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
18
+ - seed_source: pomaster/components/frontend-hard-spec/assets/universal/44-privacy-data-lifecycle-protocol.md
19
+ sha256: 5b3472bba296c1bb437c3ce41e1c937b636605e39b78cf06747d1010e46ba08e
20
+ seed_version: B6B-2
21
+ - seed_source: pomaster/components/backend-hard-spec/assets/universal/13-privacy-data-lifecycle-protocol.md
22
+ sha256: df20ccb85008f8744ea16db3ea64e54bdf9fd19d7aa3098c45dc44fff94c3d8d
23
+ seed_version: B6C
24
+ ---
25
+
26
+ # 隐私与数据生命周期
27
+
28
+ > **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
29
+
30
+ ## Scope
31
+
32
+ **源:FE 44 隐私与客户端数据生命周期协议(pomaster/components/frontend-hard-spec/assets/universal/44-privacy-data-lifecycle-protocol.md)**
33
+
34
+ P0。约束个人、敏感和可关联数据在前端的收集、访问、传输、存储、复制、第三方共享、保留、撤回与清理。
35
+
36
+ **源:BE 13 隐私与数据生命周期协议(pomaster/components/backend-hard-spec/assets/universal/13-privacy-data-lifecycle-protocol.md)**
37
+
38
+ 规范数据最小化、分类、脱敏、保留、删除、导出、接收方与审计。
39
+
40
+ ## Non-Scope
41
+
42
+ **源:FE 44 隐私与客户端数据生命周期协议**
43
+
44
+ 不替代适用法律、组织隐私政策、后端数据治理或安全控制;安全负责防止未授权访问,隐私还负责数据是否必要以及应保留多久。
45
+
46
+ **源:BE 13 隐私与数据生命周期协议**
47
+
48
+ 不替代一般安全控制或业务合法性确认。
49
+
50
+ ## Terms
51
+
52
+ **源:FE 44 隐私与客户端数据生命周期协议**
53
+
54
+ - Data Purpose:收集或处理数据的明确用户/业务目的。
55
+ - Data Minimization:仅处理实现已批准目的所需的最少数据。
56
+ - User Control:同意、拒绝、撤回、删除或选择数据范围的有效机制。
57
+ - Privacy Boundary:数据进入浏览器、第三方 SDK、剪贴板、通知、下载或监控系统的边界。
58
+
59
+ **源:BE 13 隐私与数据生命周期协议**
60
+
61
+ 生命周期覆盖收集、传输、存储、使用、共享、导出、保留与删除。
62
+
63
+ ## MUST
64
+
65
+ **源:FE 44 隐私与客户端数据生命周期协议 · §MUST**
66
+
67
+ - 每类受保护数据必须声明分类、目的、来源、接收方、客户端存储、保留期、删除触发器、用户控制和 Owner。
68
+ - 请求、缓存、日志、埋点和第三方共享必须限制为已批准目的所需的最小字段和最小精度。
69
+ - 浏览器存储、草稿、下载、剪贴板和通知必须遵守身份、租户、权限、过期和清理策略。
70
+ - 注销、切换账号/租户、权限降低、目的撤回或数据过期时,必须停止相关处理并清理无权继续保留的数据与运行时资源。
71
+ - 在政策要求同意或选择时,数据采集和第三方 SDK 必须在有效选择之后启用;撤回必须阻止后续采集且不得暗中回退。
72
+ - 调用摄像头、麦克风、位置、剪贴板等敏感能力必须由可理解的用户动作触发,并提供拒绝后的安全路径。
73
+ - 第三方脚本和数据目的必须有清单、字段白名单、目标域、保留策略、禁用方式和负责人。
74
+ - 客户端持久化内容读取时必须视为不可信输入,并执行 schema、身份、权限和版本校验。
75
+
76
+ **源:BE 13 隐私与数据生命周期协议 · §MUST**
77
+
78
+ - 敏感数据必须有目的、来源、接收方、保留期、删除触发与访问控制。
79
+
80
+ ## MUST NOT
81
+
82
+ **源:FE 44 隐私与客户端数据生命周期协议 · §MUST NOT**
83
+
84
+ - MUST NOT 为“以后可能有用”收集、传输或长期保留额外数据。
85
+ - MUST NOT 将敏感原值、搜索原文、文件内容或可识别信息放入 URL、日志、trace、埋点或未批准第三方载荷。
86
+ - MUST NOT 将去标识化、哈希或内部 ID 自动视为匿名且无隐私风险。
87
+ - MUST NOT 用客户端存储内容证明身份、权限或用户已同意。
88
+ - MUST NOT 通过默认勾选、阻碍撤回或与目的无关的强制授权获取选择。
89
+
90
+ **源:BE 13 隐私与数据生命周期协议 · §MUST NOT**
91
+
92
+ - 不得因“以后可能有用”收集或无限期保留数据。
93
+
94
+ ## SHOULD
95
+
96
+ **源:FE 44 隐私与客户端数据生命周期协议 · §SHOULD**
97
+
98
+ - SHOULD 对新增浏览器权限、稳定标识符、第三方 SDK、跨域传输和持久化数据进行隐私评审。
99
+ - SHOULD 为数据访问、导出、删除、撤回和过期清理建立可测试路径。
100
+ - SHOULD 优先在本地或边界处聚合、截断或脱敏,避免传输不必要原值。
101
+
102
+ **源:BE 13 隐私与数据生命周期协议 · §SHOULD**
103
+
104
+ - 应在非必要场景使用最小字段、脱敏值或不可逆标识。
105
+
106
+ ## Contract
107
+
108
+ **源:FE 44 隐私与客户端数据生命周期协议 · §Contract**
109
+
110
+ ```text
111
+ DataClass, Purpose, MinimumFields, Source, Recipients[],
112
+ ClientStorage, Retention, DeletionTriggers[], UserControl,
113
+ ThirdPartyPolicy, Redaction, Owner, Evidence
114
+ ```
115
+
116
+ **源:BE 13 隐私与数据生命周期协议 · §Contract**
117
+
118
+ 数据设计必须记录分类、处理目的、存储位置、流向、保留与删除证据。
119
+
120
+ ## Checklist
121
+
122
+ **源:FE 44 隐私与客户端数据生命周期协议 · §Checklist**
123
+
124
+ - [ ] 每类数据有明确目的和最小字段。
125
+ - [ ] 存储、保留、撤回和清理可执行。
126
+ - [ ] 第三方和遥测载荷已白名单化。
127
+ - [ ] 身份、租户和权限变化不会遗留数据。
128
+ - [ ] 敏感权限有拒绝和撤回路径。
129
+
130
+ **源:BE 13 隐私与数据生命周期协议 · §Checklist**
131
+
132
+ - [ ] URL、日志、trace、缓存、导出和备份均已检查敏感数据。
133
+
134
+ ## Examples
135
+
136
+ **源:FE 44 隐私与客户端数据生命周期协议 · §Examples**
137
+
138
+ ### 内容示例,可删除
139
+
140
+ 分析事件只发送批准的事件 key、粗粒度结果和随机 operation id;搜索原文、用户输入和业务数据不进入事件载荷,撤回后停止初始化 SDK。
141
+
142
+ **源:BE 13 隐私与数据生命周期协议 · §Examples**
143
+
144
+ - 审计记录保存必要标识与操作事实,不复制完整敏感 payload。
145
+
146
+ ## Anti-patterns
147
+
148
+ **源:FE 44 隐私与客户端数据生命周期协议 · §Anti-patterns**
149
+
150
+ 为了未来分析把完整表单、查询词和页面文本发送给第三方 SDK,并在用户退出后继续保留在本地缓存。
151
+
152
+ **源:BE 13 隐私与数据生命周期协议 · §Anti-patterns**
153
+
154
+ - 在测试样例、日志或分析事件中使用真实敏感数据。
155
+
156
+ ## Ownership
157
+
158
+ **源:FE 44 隐私与客户端数据生命周期协议 · §Ownership**
159
+
160
+ 隐私/安全 Owner 定义政策,产品 Owner 证明目的与必要性,前端 Owner 实施边界、用户控制和清理,数据 Owner 审核接收与保留。
161
+
162
+ **源:BE 13 隐私与数据生命周期协议 · §Ownership**
163
+
164
+ 数据 Owner 决定用途与保留,Backend 实施并证明技术控制。
165
+
166
+ ## Change Policy
167
+
168
+ **源:FE 44 隐私与客户端数据生命周期协议 · §Change Policy**
169
+
170
+ 新增目的、字段、接收方、持久化或保留期必须重新评审并更新用户控制;不得用功能发布记录替代隐私批准。同步检查 `universal:security-protocol`、`universal:analytics-protocol` 与 `universal:browser-storage-protocol`。
171
+
172
+ **源:BE 13 隐私与数据生命周期协议 · §Change Policy**
173
+
174
+ 扩大处理范围或接收方必须重新评审目的、权限与保留规则。
175
+
176
+ > **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。