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,79 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/21-design-system-protocol.md
3
+ seed_source_sha256: 317d4086949eb7d26ea2465adc6521ba6ebb611dca0d2f32aec2c57a985be4f3
4
+ seed_version: B6B-1
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
+ # 21 设计系统协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义合法 UI 的 token、组件、视觉状态、栅格、密度和动效来源。
18
+
19
+ ## Non-Scope
20
+
21
+ 不决定具体品牌主题,不替代页面结构、可访问性和设计交付协议。
22
+
23
+ ## Terms
24
+
25
+ - Design Token:可复用的设计决策变量。
26
+ - Semantic Token:按用途而非具体值命名的 token。
27
+ - Component Token:组件级语义变量。
28
+
29
+ ## MUST
30
+
31
+ - 定义颜色、字体、间距、圆角、阴影、层级、断点、状态和动效 token。
32
+ - UI 只能从 token 和批准组件取得视觉规则。
33
+ - hover、active、focus、disabled、loading、empty、error 状态完整。
34
+ - token 到代码和设计工具的映射有唯一来源。
35
+ - 新视觉规则有复用语义和 Owner。
36
+
37
+ ## MUST NOT
38
+
39
+ - MUST NOT 写孤立色值、魔法间距和临时阴影。
40
+ - MUST NOT 用“看起来差不多”代替 token。
41
+ - MUST NOT 在业务页面创建第二套视觉语言。
42
+ - MUST NOT 用设计稿临时样式覆盖 Design Token。
43
+
44
+ ## SHOULD
45
+
46
+ - SHOULD 使用语义 token 分离品牌值与组件用途。
47
+ - SHOULD 自动校验 token 使用和弃用。
48
+
49
+ ## Contract
50
+
51
+ ```text
52
+ TokenName, Layer, SemanticMeaning, ValueByTheme,
53
+ AllowedConsumers, Deprecated?, Owner
54
+ ```
55
+
56
+ ## Checklist
57
+
58
+ - [ ] 所有视觉值来自 token。
59
+ - [ ] 状态与断点完整。
60
+ - [ ] 设计和代码来源一致。
61
+ - [ ] 新 token 有复用语义。
62
+
63
+ ## Examples
64
+
65
+ ### 内容示例,可删除
66
+
67
+ 组件使用 `color.action.primary`,而不是直接写品牌蓝十六进制值。
68
+
69
+ ## Anti-patterns
70
+
71
+ 页面根据设计截图手写近似颜色和 13px/17px 等孤立间距。
72
+
73
+ ## Ownership
74
+
75
+ Design System Owner 与前端 Owner 共同维护,组件 Owner 消费但不私自改值。
76
+
77
+ ## Change Policy
78
+
79
+ Token 改名/删除先 deprecated;值变化评估所有组件并执行视觉与对比度回归。
@@ -0,0 +1,79 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/22-theme-protocol.md
3
+ seed_source_sha256: b93ed272a0def5abc689fe66d939b87cacf6f38cce5d6278cfd5c94d1754b3ec
4
+ seed_version: B6B-1
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
+ # 22 主题协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义亮暗、品牌、紧凑、大字体等主题及 token 覆盖、切换和持久化。
18
+
19
+ ## Non-Scope
20
+
21
+ 不定义基础 token 语义,不允许主题改变业务含义。
22
+
23
+ ## Terms
24
+
25
+ - Theme:一组完整 token 值。
26
+ - Theme Mode:light/dark 或其他可选模式。
27
+ - Theme Adapter:同步第三方组件、图表和 portal 的适配层。
28
+
29
+ ## MUST
30
+
31
+ - 明确支持的主题列表和默认主题。
32
+ - 所有主题覆盖完整语义 token,而非只换背景。
33
+ - 表格、图表、弹层、焦点和状态随主题同步。
34
+ - 切换、持久化、系统偏好和失败回退有策略。
35
+ - 每个主题满足可访问性和视觉回归。
36
+
37
+ ## MUST NOT
38
+
39
+ - MUST NOT 在业务组件写死应由主题控制的颜色。
40
+ - MUST NOT 让局部页面自行换肤。
41
+ - MUST NOT 只处理页面背景而遗漏 portal/图表。
42
+ - MUST NOT 用主题切换表达权限或业务状态。
43
+
44
+ ## SHOULD
45
+
46
+ - SHOULD 使用 CSS variables 或等价运行时 token。
47
+ - SHOULD 避免主题切换闪烁和布局变化。
48
+
49
+ ## Contract
50
+
51
+ ```text
52
+ ThemeId, TokenSet, Default, Persistence,
53
+ SystemPreference, ThirdPartyAdapters[], Fallback
54
+ ```
55
+
56
+ ## Checklist
57
+
58
+ - [ ] 支持范围和默认值明确。
59
+ - [ ] token 覆盖完整。
60
+ - [ ] 第三方与 portal 同步。
61
+ - [ ] 对比度和回退通过。
62
+
63
+ ## Examples
64
+
65
+ ### 内容示例,可删除
66
+
67
+ 主题切换统一更新页面、弹窗、表格和图表 palette。
68
+
69
+ ## Anti-patterns
70
+
71
+ 仅给 body 加 dark class,而下拉、弹窗和图表仍使用亮色。
72
+
73
+ ## Ownership
74
+
75
+ Design System Owner 维护主题 token,平台 Owner 维护切换,组件 Owner 负责兼容。
76
+
77
+ ## Change Policy
78
+
79
+ 新增主题必须完整覆盖和验收;删除主题需迁移用户偏好并提供回退。
@@ -0,0 +1,189 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/23-accessibility-protocol.md
3
+ seed_source_sha256: 10557bf1221d1cf2748e29149820890e4523789701a35f7336e3f661fed82bfb
4
+ seed_version: B6B-1
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
+ # 23 可访问性协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义项目级可访问性治理:以 WCAG 2.2 AA 为默认目标,覆盖语义化 HTML、键盘导航、焦点管理、ARIA 使用、屏幕阅读器支持、颜色与对比度、表单与错误、动态内容/通知、响应式/缩放/触控目标、媒体与动画、时间限制/会话、可读性与认知负荷,以及第三方/自造组件 a11y 矩阵。具体组件的 props/role/keyboard map/focus 行为由 component-registry 的 vendor_api_ref 或自造组件 a11y 字段落地;本协议定义项目级检查点、工具链、例外流程和跨目录层级责任。
18
+
19
+ ## Non-Scope
20
+
21
+ - 不替代 WCAG 2.2、WAI-ARIA 1.2、WAI-ARIA APG 等官方标准;本协议是项目治理层对它们的应用与检查点映射。
22
+ - 不替代具体组件业务规则,也不以自动化扫描通过作为可访问性验收的唯一证据。
23
+ - 不在组件协议 24 中重复定义组件级 a11y API;组件协议 24 的 Checklist 引用本协议,组件实现细节落到 component-registry / vendor_api_ref。
24
+ - 不定义消费项目的视觉稿或品牌色;项目阈值和选型下沉到 a11y-requirements.yaml,universal 只规定必须存在的决策与证据。
25
+
26
+ ## Terms
27
+
28
+ - **Accessible Name**:辅助技术识别控件时朗读的名称,可来自可见文本、aria-label、aria-labelledby 或原生标签。
29
+ - **Focus Indicator**:键盘焦点在控件上可见的指示器,可以是浏览器默认轮廓或同等级可见替代。
30
+ - **Landmark**:HTML 语义区域(main、nav、aside、header、footer、section 等),辅助技术可快速跳转。
31
+ - **Live Region**:不抢夺焦点即可向屏幕阅读器宣布动态内容的区域(aria-live polite/assertive)。
32
+ - **Roving Tabindex**:组合组件(tabs、listbox、grid)中仅在活动项上放置 tabindex="0"、其余为 -1 的键盘模式。
33
+ - **Skip Link**:跳到主内容(main)的隐藏/可见链接,使键盘用户绕过重复导航块(WCAG 2.4.1)。
34
+ - **WCAG SC**:Web Content Accessibility Guidelines 成功准则(Success Criterion),例如 1.4.3、2.1.1。
35
+
36
+ ## MUST
37
+
38
+ - 默认目标必须达到 WCAG 2.2 AA;未满足项必须记录适用成功准则、影响、替代路径、Owner 和修复期限。
39
+ - 所有交互元素必须可通过键盘到达并操作;Tab 顺序与视觉顺序一致(WCAG 2.1.1 / 2.4.3)。
40
+ - 页面使用 header、nav、main、aside、footer、section、article 等语义元素;存在唯一的 main 地标(WCAG 2.4.1 / 1.3.1)。
41
+ - 主导航和重复块必须可被跳过(skip link 或地标跳转);标题层级 h1–h6 与视觉层级一致,不跳过层级(WCAG 2.4.6)。
42
+ - 使用原生 HTML 语义可承载时优先使用原生元素;不得用无语义 div/span 模拟按钮、链接、表单控件(WCAG 4.1.2)。
43
+ - 弹层、抽屉、对话框打开后必须接管焦点,关闭后返回触发元素;背景不得保持可 Tab(WCAG 2.4.3 / 2.1.2)。
44
+ - 焦点必须可见,且不得被吸顶栏、浮层、sticky 元素完全遮挡(WCAG 2.4.7 / 2.4.11)。
45
+ - 所有非装饰图像必须提供等效 alt 文本;复杂图像提供 longer description 或 aria-describedby(WCAG 1.1.1)。
46
+ - 表单控件必须通过 label、aria-label 或 aria-labelledby 提供可见/可访问名称;placeholder 不得作为唯一标签(WCAG 3.3.2 / 1.3.1)。
47
+ - 错误必须与字段关联,并以文本描述提供纠错建议;提交时提供错误摘要并聚焦第一个错误字段(WCAG 3.3.1 / 3.3.3)。
48
+ - 颜色不得作为唯一信息来源;文本对比度至少 4.5:1,大文本至少 3:1,UI 组件/图标边界至少 3:1(WCAG 1.4.1 / 1.4.3 / 1.4.11)。
49
+ - 内容在 320 CSS px 宽度下可纵向阅读,不出现横向滚动;不得禁用浏览器缩放或固定视口(WCAG 1.4.10 / 1.4.4)。
50
+ - 触控目标尺寸至少 24×24 CSS px,且目标之间提供足够间距(WCAG 2.5.8);建议达到 44×44(AAA)。
51
+ - 依赖拖拽的操作必须提供无需拖拽的等价路径(WCAG 2.5.7)。
52
+ - 动态状态、异步结果、进度变化必须可在不抢夺焦点的前提下被辅助技术识别;使用 aria-live 区域并区分 polite/assertive(WCAG 4.1.3)。
53
+ - 路由/页面切换后必须更新 document.title 并宣布页面变化(如聚焦到 h1 或 live region)。
54
+ - 自动播放音频超过 3 秒必须提供暂停/停止/音量控制;自动播放视频必须可被控制且不得禁用 reduced-motion(WCAG 1.4.2 / 2.3.3)。
55
+ - 尊重 prefers-reduced-motion:动画、滚动、过渡在减少动效模式下关闭或降级;闪烁内容不超过每秒 3 次(WCAG 2.3.1 / 2.3.3)。
56
+ - 登录、认证、会话超时流程必须兼容密码管理器和粘贴;超时前至少提供 20 秒警告并允许延长(WCAG 2.2.1 / 2.2.6 / 3.3.8)。
57
+ - 同一流程已输入的信息不得无理由要求重复录入;高风险操作必须提供确认、复核、撤销或等效防错机制(WCAG 3.3.4 / 3.3.7)。
58
+ - 页面 html 必须声明主语言 lang;内容中局部语言变化使用 lang 属性(WCAG 3.1.1 / 3.1.2)。
59
+ - 必须建立并维护 vendor_a11y_matrix:每个第三方组件(Ant Design、Vant、图表库、编辑器、地图等)记录已知 a11y 能力、缺陷、版本限制与替代策略;升级前进行破坏性变更评估。
60
+ - 自造组件或无 vendor 可引用时,必须写完整 a11y spec:role、keyboard map、focus entry/return、live announcement、contrast、target size、reduced-motion(WCAG 2.2 AA)。
61
+
62
+ ### 分层责任(按目录层级)
63
+
64
+ 可访问性是架构期约束,按目录层级分担责任;每层有明确的检查点与禁止行为。层级划分与 09-module-boundary-protocol 一致。
65
+
66
+ - **app 层 — 应用级可访问性骨架**:提供唯一的 main 地标、skip link、lang 声明、document.title 更新策略、全局 reduced-motion 开关和 focus indicator token。MUST NOT 在 body 或顶层容器使用 aria-hidden="true";MUST NOT 禁用浏览器缩放或锁定视口。
67
+ - **platform 层 — 状态/会话可访问性**:认证/会话超时状态必须通过文本或 live region 宣布;全局错误/通知必须使用统一的 live region 策略。MUST NOT 在超时或认证失败后无警告地丢失已输入数据;MUST NOT 要求用户仅靠记忆、转录或解谜完成认证。
68
+ - **api 层 — 后端契约与错误可读性**:API 错误 message 必须可映射到可读文本和修复建议;auth/session 接口必须支持密码管理器、粘贴和超时延长。MUST NOT 返回仅依赖颜色或错误码的内部错误文本。
69
+ - **domain 层 — 领域语义与 a11y 映射**:领域实体状态(如审核结果、风险等级)不得仅用颜色/图标表达;必须提供文本标签和 aria 等价描述。MUST NOT 把业务语义隐藏在无标签的图标或图表元素中。
70
+ - **feature 层 — 页面级可访问性**:每个页面必须声明 WCAG 目标、skip link、焦点策略、live region 策略和错误聚焦行为;页面内组合组件(tabs、grid、listbox)必须实现 ARIA APG 键盘模式。MUST NOT 页面内存在无法通过键盘到达的交互;MUST NOT 路由切换无标题更新/读屏宣布。
71
+ - **shared 层 — 公共组件可访问性**:Table / Tree / Select / Form / Modal / Virtual List / Tabs / Grid 等公共组件必须有文档化的 role、keyboard map、focus entry/return、live announcement 和 contrast 要求;第三方组件必须引用 vendor_a11y_ref。MUST NOT 使用无 a11y spec 的自造组件;MUST NOT 用自定义 ARIA 覆盖破坏 vendor 默认键盘/焦点行为。
72
+
73
+ ## MUST NOT
74
+
75
+ - MUST NOT 用无语义 div/span 模拟按钮、链接或表单控件。
76
+ - MUST NOT 移除焦点轮廓而无同等级可见替代。
77
+ - MUST NOT 仅通过颜色、hover 或 tooltip 传递关键信息。
78
+ - MUST NOT 弹层/抽屉焦点泄漏到背景。
79
+ - MUST NOT 在 aria-hidden="true" 下包裹仍可聚焦元素或包含可聚焦子元素。
80
+ - MUST NOT 使用已废弃的 ARIA role(如 directory)或拼写错误的 role。
81
+ - MUST NOT 在 body 上使用 aria-hidden="true"。
82
+ - MUST NOT 禁用浏览器缩放(user-scalable=no / maximum-scale=1.0)或锁定设备方向。
83
+ - MUST NOT 以自动化扫描通过作为可访问性验收的唯一证据。
84
+ - MUST NOT 图标按钮缺少 aria-label 或等效可访问名称。
85
+ - MUST NOT 错误提示仅通过颜色或 tooltip 呈现;不得在输入时无提示提交错误数据。
86
+ - MUST NOT 错误通知自动消失且不可恢复(除非用户可重新查看)。
87
+ - MUST NOT 非关键消息使用 assertive live region;MUST NOT 关键状态不宣布。
88
+ - MUST NOT 装饰图像使用非空 alt;MUST NOT 信息图像缺少 alt。
89
+ - MUST NOT 自动播放带声音的视频且无控制;MUST NOT 使用 blink / marquee 等已废弃元素。
90
+ - MUST NOT 超时/会话在无警告下失效;MUST NOT 认证流程禁用粘贴或仅依赖认知测试。
91
+ - MUST NOT 第三方组件假设开箱即用即符合项目 WCAG 目标;MUST NOT 用自定义 ARIA 覆盖破坏 vendor 默认键盘/焦点行为。
92
+ - MUST NOT 同一路径使用不同文案或图标表示同一功能;MUST NOT 导航/标签在页面内不一致。
93
+
94
+ ## SHOULD
95
+
96
+ - SHOULD 以 WCAG 2.2 AA 为默认目标,并在关键公开路径追求 AAA 增强项。
97
+ - SHOULD 自动扫描(axe-core / Lighthouse)加人工键盘遍历、屏幕阅读器抽查和触控测试。
98
+ - SHOULD 为复杂组合组件使用 ARIA APG 设计模式(tabs、dialog、menu、treegrid)。
99
+ - SHOULD 提供统一、设计系统级别的 focus indicator token(颜色、宽度、offset、:focus-visible)。
100
+ - SHOULD 支持 prefers-reduced-motion 并关闭/降级动画、滚动、过渡。
101
+ - SHOULD 为长表单、多步骤流程提供进度保存与恢复机制。
102
+ - SHOULD 为复杂图表、媒体提供数据表格、长描述或音频描述。
103
+ - SHOULD 对第三方组件进行 spot check(键盘 + 屏幕阅读器 + axe-core)并记录到组件注册表。
104
+
105
+ ## Contract
106
+
107
+ 组件级 a11y 契约(保留原有字段,用于 component-registry / vendor_api_ref):
108
+
109
+ ```text
110
+ Component, Role, AccessibleName, KeyboardMap,
111
+ FocusEntry, FocusReturn, LiveAnnouncements, ContrastRequirement
112
+ ```
113
+
114
+ 项目级可访问性治理契约(按目录层级):
115
+
116
+ ```text
117
+ Layer, AccessibilityRequirement, WcagTarget, AssistiveTechMatrix,
118
+ KeyboardPolicy, FocusPolicy, TargetSizePolicy, ReducedMotionPolicy, VendorA11yRef
119
+ ```
120
+
121
+ 分层责任契约表(按目录层级,与 09-module-boundary-protocol 一致):
122
+
123
+ ```text
124
+ app, 应用级骨架(地标/skip/lang/缩放/focus token), 2.4.1/2.4.6/1.3.1/1.4.4/2.4.7, 屏幕阅读器/键盘, skip link, focus indicator, 24/44px, prefers-reduced-motion, N/A
125
+ platform, 会话/状态/通知可读性, 2.2.1/2.2.6/3.3.8/4.1.3, 屏幕阅读器, 超时延长, 全局 live region, N/A, N/A, N/A
126
+ api, 后端错误可读性/认证支持, 3.3.1/3.3.2/3.3.8, 屏幕阅读器, 粘贴/密码管理器, 错误关联, N/A, N/A, N/A
127
+ domain, 领域语义/状态文本化, 1.4.1/1.3.1, 屏幕阅读器/色觉, N/A, 图标/图表标签, N/A, N/A, N/A
128
+ feature, 页面级键盘/焦点/路由/表单, 2.1.1/2.4.3/2.4.7/2.4.11/3.3.1/3.3.3, 键盘/屏幕阅读器, roving tabindex, 弹层焦点管理, 24/44px, 动画降级, vendor_a11y_ref
129
+ shared, 公共组件 a11y spec/矩阵, 4.1.2/1.1.1/2.4.7/2.5.8, 键盘/屏幕阅读器/放大, APG 键盘图, focus entry/return, 24/44px, reduced-motion, vendor_a11y_ref
130
+ ```
131
+
132
+ ## Checklist
133
+
134
+ - [ ] 默认 WCAG 2.2 AA 目标及例外记录完成。
135
+ - [ ] 语义 HTML 与地标(main/nav/header/footer/skip link)正确。
136
+ - [ ] 标题层级与视觉层级一致,无跳过层级。
137
+ - [ ] 键盘路径完整,Tab 顺序与视觉顺序一致,焦点可见且不被遮挡。
138
+ - [ ] 弹层/抽屉焦点管理正确(进入、困住、返回、背景屏蔽)。
139
+ - [ ] ARIA 使用有效,无冗余、无废弃 role、无 aria-hidden 包裹可聚焦元素。
140
+ - [ ] 屏幕阅读器标签、alt 文本、表单 label、错误关联正确。
141
+ - [ ] 对比度、颜色依赖、focus indicator、320px reflow、缩放策略通过。
142
+ - [ ] 表单错误聚焦、摘要、纠正建议、required 标识通过。
143
+ - [ ] 动态内容/通知使用合适的 live region,路由/页面切换有标题更新和宣布。
144
+ - [ ] 触控目标 >=24px、间距合理,响应式/缩放/方向策略合规。
145
+ - [ ] 媒体/动画有控制、字幕/音频描述、reduced-motion、闪烁安全。
146
+ - [ ] 时间限制/会话超时/认证流程支持延长、粘贴、密码管理器、数据保留。
147
+ - [ ] 可读性:lang 声明、局部语言、导航一致性、错误文本可读、缩写解释。
148
+ - [ ] 第三方/自造组件 a11y 矩阵和 spot check 完成;vendor_a11y_ref 正确引用。
149
+ - [ ] 分层责任按 app/platform/api/domain/feature/shared 确认,每层检查点与禁止行为已落地。
150
+
151
+ ## Examples
152
+
153
+ ### 真实示例(推荐)
154
+
155
+ - 筛选抽屉打开时,焦点进入抽屉内第一个可聚焦元素(如标题或首个字段);关闭时焦点返回到触发按钮,并 polite 宣布“筛选条件已应用,N 个结果”。
156
+ - 表单提交失败时,页面顶部出现错误摘要,并自动聚焦到第一个错误字段;每个错误字段使用 aria-describedby 关联具体错误文本。
157
+ - 数据表格使用 APG 的 grid 模式:方向键在单元格间移动,Enter 进入编辑,Escape 退出编辑,焦点始终停留在表格内,不会泄漏到背景。
158
+ - 页面 html lang="zh-CN";当用户切换到英文内容块时,该块使用 lang="en",屏幕阅读器切换语音。
159
+ - 图表组件同时提供数据表格视图入口和 aria-label 摘要,使屏幕阅读器用户能访问数值和趋势。
160
+ - 认证页面允许粘贴密码,会话超时前弹出 20 秒警告,提供“延长会话”按钮,并自动保存表单草稿以便恢复。
161
+
162
+ ## Anti-patterns
163
+
164
+ - 可点击 div 只支持鼠标,键盘和屏幕阅读器无法触发。
165
+ - 状态仅用红绿颜色区分(如“成功/失败”),未提供文本或图标标签。
166
+ - 移除所有按钮的 outline 而未提供替代 focus indicator,导致键盘用户无法看到焦点。
167
+ - 弹层打开后背景仍可 Tab,或关闭后焦点丢失到 body 而不是触发按钮。
168
+ - 信息图像使用 alt="" 或被 CSS 背景隐藏,屏幕阅读器无法识别。
169
+ - 图标按钮缺少 aria-label,屏幕阅读器只朗读“按钮”或“未标记”。
170
+ - 错误提示仅显示红色边框或 tooltip,未与字段关联,也未提供纠正建议。
171
+ - 禁用缩放导致低视力用户无法放大到 200%。
172
+ - 自动播放的宣传视频无暂停控制,且未响应 prefers-reduced-motion。
173
+ - 超时后立即登出并清空表单,未警告也未保存草稿。
174
+ - 第三方图表库假设开箱即用,未记录其 a11y 缺陷和规避策略。
175
+
176
+ ## Ownership
177
+
178
+ - 前端 A11y Owner 维护 WCAG 目标、检查点、vendor_a11y_matrix 和扫描工具链。
179
+ - 设计 Owner 负责颜色对比度、focus indicator、触控目标、reduced-motion 视觉策略。
180
+ - 组件 Owner 负责实现组件级 a11y spec(role、keyboard map、focus entry/return、live announcement)。
181
+ - QA / Accessibility Owner 负责键盘遍历、屏幕阅读器抽查、axe-core 扫描和例外审批。
182
+ - 后端 Owner 配合认证/会话/错误 message 的可读性与超时策略。
183
+
184
+ ## Change Policy
185
+
186
+ - 可访问性例外必须记录阻塞原因、适用 WCAG SC、影响、替代路径、Owner 和修复期限。
187
+ - 新增第三方组件或升级第三方组件前,必须对比 vendor_a11y_matrix,评估破坏性 a11y 变更。
188
+ - 新增自造组件必须同步提交组件级 a11y spec,未经 review 不得进入公共组件目录。
189
+ - 页面级 WCAG 目标收紧(如从 AA 到 AAA)或放宽(如特定页面降级)必须走变更治理,并更新 a11y-requirements.yaml。
@@ -0,0 +1,80 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/24-component-protocol.md
3
+ seed_source_sha256: 5ed49550278ae263d7b4f3914c20c31a3005dc101d45bbd48c025a444f7441c4
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
+ # 24 组件协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义组件分层、复用门槛、目录、Props、Events、Slots、状态和公共 API。
18
+
19
+ ## Non-Scope
20
+
21
+ 不定义页面整体结构,不允许组件隐式承担接口、路由和全局状态职责。
22
+
23
+ ## Terms
24
+
25
+ - Base Component:无业务语义的基础控件。
26
+ - Domain Component:具有稳定领域语义的组件。
27
+ - Page-local Component:只服务单页的内部组件。
28
+ - Public Component:跨所有者复用并有稳定 contract 的组件。
29
+
30
+ ## MUST
31
+
32
+ - 新建前搜索现有组件并记录不能复用的原因。
33
+ - 组件归属、Owner、目的和非目标明确。
34
+ - Public Component 有类型化 Props、Events、Slots、状态、文档、测试和公开入口。
35
+ - 状态至少考虑 loading、empty、error、disabled、readonly 和 focus。
36
+ - 第二个消费者出现时重新评估提升层级。
37
+
38
+ ## MUST NOT
39
+
40
+ - MUST NOT 为减少几行代码创建无职责组件。
41
+ - MUST NOT 传整个 DTO 或万能配置对象。
42
+ - MUST NOT 让展示组件偷偷请求接口、改路由或全局状态。
43
+ - MUST NOT 从其他页面内部目录引用组件。
44
+
45
+ ## SHOULD
46
+
47
+ - SHOULD 使用受控输入和语义事件。
48
+ - SHOULD 提供可运行示例和弃用策略。
49
+
50
+ ## Contract
51
+
52
+ ```text
53
+ Purpose, Owner, Props, Events, Slots, PublicMethods,
54
+ States, Permissions, Accessibility, Tokens, ReuseRules, ForbiddenChanges
55
+ ```
56
+
57
+ ## Checklist
58
+
59
+ - [ ] 复用搜索完成。
60
+ - [ ] 分层和公开入口正确。
61
+ - [ ] 接口与状态完整。
62
+ - [ ] 测试、示例和 a11y 齐全。
63
+
64
+ ## Examples
65
+
66
+ ### 内容示例,可删除
67
+
68
+ 业务状态标签放领域层,基础 Tag 只负责通用视觉和语义。
69
+
70
+ ## Anti-patterns
71
+
72
+ 创建 `CommonTable2`,接收任意对象并在内部请求多个业务 API。
73
+
74
+ ## Ownership
75
+
76
+ 组件 Owner 维护 contract,调用方遵守公开 API,Design System Owner 维护基础组件视觉。
77
+
78
+ ## Change Policy
79
+
80
+ 公共 API 变化遵循影响评估、兼容、deprecated、迁移和删除周期。
@@ -0,0 +1,79 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/25-page-structure-protocol.md
3
+ seed_source_sha256: 5fb926a798842262d7f87555e3e63e104c868a401eb27f3c1f899e677fdf5f4f
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
+ # 25 页面结构协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义列表、详情、报表、工作台等页面类型的固定区域、顺序和交互容器。
18
+
19
+ ## Non-Scope
20
+
21
+ 不定义组件内部 API、具体视觉 token 或业务字段。
22
+
23
+ ## Terms
24
+
25
+ - Page Type:有稳定目标和结构的页面类别。
26
+ - Page Contract:页面 key、结构、权限、状态和导航契约。
27
+ - Region:Header、Context、Search、Toolbar、Main、SidePanel、Footer 等区域。
28
+
29
+ ## MUST
30
+
31
+ - 新页面先选择 Page Type 和 Page Contract。
32
+ - 每类页面定义标题、面包屑、筛选、工具栏、主体、分页和详情位置。
33
+ - 主次操作、批量操作和状态信息位置一致。
34
+ - 抽屉、弹窗和路由跳转有选择规则。
35
+ - 同类页面共性问题在共享结构层修复。
36
+
37
+ ## MUST NOT
38
+
39
+ - MUST NOT 新页面临场创造区域顺序。
40
+ - MUST NOT 把筛选、操作、表格和分页揉成不可复用单体。
41
+ - MUST NOT 让不同页面类型共享含糊结构。
42
+ - MUST NOT 绕过 Page Contract 创建路由页面。
43
+
44
+ ## SHOULD
45
+
46
+ - SHOULD 使用标准 PageShell 和区域组件。
47
+ - SHOULD 让上下文、状态和恢复路径可见。
48
+
49
+ ## Contract
50
+
51
+ ```text
52
+ PageKey, PageType, Regions[], PrimaryActions[],
53
+ Permissions[], States[], Navigation, Owner
54
+ ```
55
+
56
+ ## Checklist
57
+
58
+ - [ ] 页面已归类。
59
+ - [ ] 区域顺序正确。
60
+ - [ ] 操作、状态和导航完整。
61
+ - [ ] 同类页面使用共享结构。
62
+
63
+ ## Examples
64
+
65
+ ### 内容示例,可删除
66
+
67
+ 标准列表页按 Header、Search、Toolbar、Table、Pagination、Drawer 排列。
68
+
69
+ ## Anti-patterns
70
+
71
+ 每个 CRUD 页面复制一套不同筛选和按钮顺序,逐渐产生不一致。
72
+
73
+ ## Ownership
74
+
75
+ UX/前端架构 Owner 维护 Page Type,领域 Owner 维护具体 Page Contract。
76
+
77
+ ## Change Policy
78
+
79
+ 新增 Page Type 需证明现有类型不能覆盖,并评估所有同类页面和迁移。
@@ -0,0 +1,80 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/26-style-layout-protocol.md
3
+ seed_source_sha256: a66b216ca119c7296431233fb2bb6db9affd1f71ba011e5394aaaafdab9e8240
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
+ # 26 样式与布局协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义 CSS 组织、尺寸职责、溢出、层级、响应式、第三方覆盖和布局稳定。
18
+
19
+ ## Non-Scope
20
+
21
+ 不定义品牌色值、页面业务结构或组件 API。
22
+
23
+ ## Terms
24
+
25
+ - Layout Owner:负责外层尺寸和区域关系的容器。
26
+ - Content Owner:负责内部内容排布的组件。
27
+ - Stable Dimension:动态状态下不引发布局跳动的尺寸约束。
28
+
29
+ ## MUST
30
+
31
+ - 明确全局、组件、主题和第三方样式边界。
32
+ - 外层负责布局与 overflow,内层不得反向撑爆。
33
+ - 固定格式控件定义稳定尺寸、min/max 或比例。
34
+ - 文本换行、截断、tooltip 和横向滚动有统一规则。
35
+ - z-index 只能来自层级 token。
36
+ - 响应式断点和密度切换有验收矩阵。
37
+
38
+ ## MUST NOT
39
+
40
+ - MUST NOT 为单页问题修改全局 CSS。
41
+ - MUST NOT 依赖特定父 DOM 才能正常显示。
42
+ - MUST NOT 使用孤立 magic number、无来源 z-index 和随意 `!important`。
43
+ - MUST NOT 通过缩小字体掩盖溢出。
44
+
45
+ ## SHOULD
46
+
47
+ - SHOULD 优先使用标准 layout primitives。
48
+ - SHOULD 集中第三方样式适配。
49
+
50
+ ## Contract
51
+
52
+ ```text
53
+ Container, SizeOwner, OverflowPolicy, MinMax,
54
+ BreakpointBehavior, ZIndexToken, TextPolicy
55
+ ```
56
+
57
+ ## Checklist
58
+
59
+ - [ ] 尺寸责任明确。
60
+ - [ ] 长文本和小屏不破坏布局。
61
+ - [ ] 层级和第三方覆盖集中。
62
+ - [ ] 动态状态无跳动。
63
+
64
+ ## Examples
65
+
66
+ ### 内容示例,可删除
67
+
68
+ 页面容器管理横向滚动,表格声明最小内容宽度,单元格不硬编码页面宽度。
69
+
70
+ ## Anti-patterns
71
+
72
+ 为修复一个弹窗把全局 z-index 提到极大值,随后所有 dropdown 层级失控。
73
+
74
+ ## Ownership
75
+
76
+ Design System Owner 维护 token,Layout Owner 维护区域,组件 Owner 维护内部样式。
77
+
78
+ ## Change Policy
79
+
80
+ 全局布局和层级变化必须评估全部页面类型并执行视觉回归。
@@ -0,0 +1,81 @@
1
+ ---
2
+ seed_source: pomaster/components/frontend-hard-spec/assets/universal/27-rendering-state-protocol.md
3
+ seed_source_sha256: a640bacd811e05a35075d96ffb99ba51b8b6e11cc2a5443e3bbca0eb124738e4
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
+ # 27 渲染状态协议
14
+
15
+ ## Scope
16
+
17
+ P1。定义 loading、refreshing、empty、error、permission、partial、offline、stale 和大数据状态。
18
+
19
+ ## Non-Scope
20
+
21
+ 不定义后端错误码、业务状态机和具体文案风格。
22
+
23
+ ## Terms
24
+
25
+ - Initial Loading:首次无可用内容加载。
26
+ - Background Refresh:保留已有内容的刷新。
27
+ - Partial Success:部分对象成功、部分失败。
28
+ - Stale Data:仍可展示但可能过期的数据。
29
+
30
+ ## MUST
31
+
32
+ - 页面覆盖非理想状态并定义优先级。
33
+ - 首屏骨架保持主要布局尺寸。
34
+ - empty 区分无数据与筛选无结果。
35
+ - error、permission 和 offline 提供恢复动作。
36
+ - partial success 提供成功/失败/跳过数量和明细。
37
+ - 弹层声明销毁、保留、dirty 和关闭策略。
38
+
39
+ ## MUST NOT
40
+
41
+ - MUST NOT 只实现成功有数据状态。
42
+ - MUST NOT 后台刷新时清空已有内容。
43
+ - MUST NOT 用 Toast 代替页面或字段状态。
44
+ - MUST NOT 错误后不给恢复入口。
45
+
46
+ ## SHOULD
47
+
48
+ - SHOULD 使用统一状态组件并允许领域化内容。
49
+ - SHOULD 对 stale 和离线数据标识更新时间。
50
+
51
+ ## Contract
52
+
53
+ ```text
54
+ State, Priority, Presentation, RecoverAction,
55
+ LayoutReservation, AccessibilityAnnouncement
56
+ ```
57
+
58
+ ## Checklist
59
+
60
+ - [ ] 状态矩阵完整。
61
+ - [ ] 优先级无冲突。
62
+ - [ ] 恢复动作可用。
63
+ - [ ] 布局和焦点稳定。
64
+
65
+ ## Examples
66
+
67
+ ### 内容示例,可删除
68
+
69
+ 后台刷新保留表格行,只在工具栏显示轻量进度;失败后仍可查看旧数据。
70
+
71
+ ## Anti-patterns
72
+
73
+ 每次翻页都整页白屏,错误后只弹一次 Toast 且无法重试。
74
+
75
+ ## Ownership
76
+
77
+ 页面 Owner 维护状态矩阵,Design System Owner 维护状态组件,API Owner 提供必要信息。
78
+
79
+ ## Change Policy
80
+
81
+ 新增状态必须更新页面 contract、组件、文案、可访问性和测试。