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.
- package/README.md +9 -10
- package/catalog/archetypes/archetype.frontend.error_taxonomy.json +13 -5
- package/catalog/archetypes/archetype.frontend.feature_oriented.json +1 -1
- package/catalog/archetypes/archetype.state.async_command.json +4 -4
- package/catalog/catalog-lock.draft.json +1120 -104
- package/catalog/gates/gate.be.api.contract_checks.json +2 -1
- package/catalog/gates/gate.be.chg.contract_change_checks.json +2 -1
- package/catalog/gates/gate.chg.prechange_checks.json +2 -1
- package/catalog/gates/gate.web.api.request_checks.json +2 -1
- package/catalog/gates/gate.web.grid.checks.json +2 -1
- package/catalog/knowledge/knowledge.api.example_stable_error_code.json +2 -1
- package/catalog/knowledge/knowledge.chg.example_compat_window.json +2 -1
- package/catalog/knowledge/knowledge.chg.example_prop_migration.json +2 -1
- package/catalog/knowledge/knowledge.fp.api.field_drift_no_contract.json +2 -1
- package/catalog/knowledge/knowledge.fp.api.per_page_http_client.json +2 -1
- package/catalog/knowledge/knowledge.fp.be.contract_drift.json +2 -1
- package/catalog/knowledge/knowledge.fp.chg.page_local_padding.json +2 -1
- package/catalog/knowledge/knowledge.fp.grid.global_td_width.json +2 -1
- package/catalog/knowledge/knowledge.web.api.example_get_entity_list.json +2 -1
- package/catalog/knowledge/knowledge.web.grid.example_column_preset.json +2 -1
- package/catalog/policies/authority.be.api_contract_ownership.json +2 -1
- package/catalog/policies/authority.be.contract_ownership.json +2 -1
- package/catalog/policies/authority.chg.change_owners.json +2 -1
- package/catalog/policies/authority.web.api.request_owners.json +2 -1
- package/catalog/policies/authority.web.grid.ownership.json +2 -1
- package/catalog/policies/policy.ai.change_plan_first.json +91 -0
- package/catalog/policies/policy.ai.fact_inference_separation.json +91 -0
- package/catalog/policies/policy.ai.read_search_verify_before_write.json +92 -0
- package/catalog/policies/policy.ai.rule_relaxation_approval.json +91 -0
- package/catalog/policies/policy.api.backward_compat_defaults.json +2 -1
- package/catalog/policies/policy.api.contract_impl_consistency.json +2 -1
- package/catalog/policies/policy.api.no_informal_contract.json +2 -1
- package/catalog/policies/policy.arch.adr_immutable_history.json +91 -0
- package/catalog/policies/policy.arch.decision_tradeoff_record.json +2 -1
- package/catalog/policies/policy.arch.no_convenience_over_boundary.json +93 -0
- package/catalog/policies/policy.arch.prefer_verifiable_option.json +92 -0
- package/catalog/policies/policy.authz.no_gating_proxy_trust.json +99 -0
- package/catalog/policies/policy.authz.permission_scope_expansion_gate.json +99 -0
- package/catalog/policies/policy.authz.server_five_factor_verification.json +101 -0
- package/catalog/policies/policy.be.conc.prefer_db_constraints.json +97 -0
- package/catalog/policies/policy.be.db.expand_migrate_contract.json +97 -0
- package/catalog/policies/policy.be.idem.key_payload_conflict.json +97 -0
- package/catalog/policies/policy.be.model.single_boundary_conversion.json +97 -0
- package/catalog/policies/policy.be.sql.index_for_known_queries.json +97 -0
- package/catalog/policies/policy.be.state.single_rule_source.json +97 -0
- package/catalog/policies/policy.be.txn.short_locks_compensation.json +96 -0
- package/catalog/policies/policy.bound.search_first_entry_only.json +91 -0
- package/catalog/policies/policy.boundary.validate_in_encode_out.json +92 -0
- package/catalog/policies/policy.cache.failure_mode_guards.json +93 -0
- package/catalog/policies/policy.cache.lifecycle_definition.json +2 -1
- package/catalog/policies/policy.cache.schema_versioning.json +91 -0
- package/catalog/policies/policy.cfg.config_attribute_completeness.json +95 -0
- package/catalog/policies/policy.cfg.key_rename_dual_read.json +92 -0
- package/catalog/policies/policy.cfg.no_secret_dispersal.json +90 -0
- package/catalog/policies/policy.cfg.production_safe_defaults.json +92 -0
- package/catalog/policies/policy.cfg.schema_backed_config.json +92 -0
- package/catalog/policies/policy.chg.affect_templates.json +2 -1
- package/catalog/policies/policy.chg.breaking_versioning.json +2 -1
- package/catalog/policies/policy.chg.compat_migration_rollback.json +2 -1
- package/catalog/policies/policy.chg.deprecate_before_delete.json +2 -1
- package/catalog/policies/policy.chg.fix_at_root_cause_level.json +2 -1
- package/catalog/policies/policy.chg.no_unrelated_changes.json +91 -0
- package/catalog/policies/policy.chg.observable_evolution.json +2 -1
- package/catalog/policies/policy.chg.prechange_consumer_scan.json +2 -1
- package/catalog/policies/policy.chg.staged_rollout.json +2 -1
- package/catalog/policies/policy.chg.sync_contract_docs_tests.json +2 -1
- package/catalog/policies/policy.conflict.priority_ladder.json +2 -1
- package/catalog/policies/policy.contract.no_invented_facts.json +93 -0
- package/catalog/policies/policy.dep.admission_six_dimension_check.json +2 -1
- package/catalog/policies/policy.dep.build_path_supply_chain.json +93 -0
- package/catalog/policies/policy.dep.change_surface_review.json +2 -1
- package/catalog/policies/policy.dep.introduction_review.json +2 -1
- package/catalog/policies/policy.dep.no_untrusted_source_no_lock_bypass.json +92 -0
- package/catalog/policies/policy.dep.time_boxed_urgent_exception.json +91 -0
- package/catalog/policies/policy.deploy.no_dev_env_as_production_fact.json +91 -0
- package/catalog/policies/policy.deploy.operational_capabilities.json +93 -0
- package/catalog/policies/policy.deploy.runtime_fact_record.json +97 -0
- package/catalog/policies/policy.derived.single_implementation.json +2 -1
- package/catalog/policies/policy.err.failure_five_part_mapping.json +101 -0
- package/catalog/policies/policy.err.no_internal_detail_exposure.json +97 -0
- package/catalog/policies/policy.err.published_code_immutable.json +98 -0
- package/catalog/policies/policy.evid.acceptance_binds_verifiable_evidence.json +92 -0
- package/catalog/policies/policy.evid.no_silent_gate_removal.json +90 -0
- package/catalog/policies/policy.evid.no_unverifiable_pass.json +92 -0
- package/catalog/policies/policy.flag.cleanup_after_full_rollout.json +94 -0
- package/catalog/policies/policy.flag.consistent_off_state.json +92 -0
- package/catalog/policies/policy.flag.kill_switch.json +91 -0
- package/catalog/policies/policy.flag.lifecycle_metadata.json +93 -0
- package/catalog/policies/policy.flag.not_a_permission.json +92 -0
- package/catalog/policies/policy.gate.p0_non_bypassable.json +92 -0
- package/catalog/policies/policy.gate.risk_factors_confirmed.json +93 -0
- package/catalog/policies/policy.guard.no_check_weakening.json +92 -0
- package/catalog/policies/policy.integration.call_definition_minimum.json +95 -0
- package/catalog/policies/policy.integration.fault_containment.json +94 -0
- package/catalog/policies/policy.job.lifecycle_definition.json +96 -0
- package/catalog/policies/policy.job.no_unmanaged_execution.json +92 -0
- package/catalog/policies/policy.job.operational_features.json +93 -0
- package/catalog/policies/policy.obs.actionable_signals.json +93 -0
- package/catalog/policies/policy.obs.alert_with_owner.json +91 -0
- package/catalog/policies/policy.obs.context_field_baseline.json +91 -0
- package/catalog/policies/policy.obs.correlation_context_minimum.json +2 -1
- package/catalog/policies/policy.obs.no_sensitive_or_unbounded_logging.json +92 -0
- package/catalog/policies/policy.obs.no_sensitive_raw_values.json +93 -0
- package/catalog/policies/policy.obs.rum_dimension_whitelist.json +2 -1
- package/catalog/policies/policy.obs.signal_change_impact.json +91 -0
- package/catalog/policies/policy.obs.source_map_access_control.json +92 -0
- package/catalog/policies/policy.obs.telemetry_lifecycle_declared.json +93 -0
- package/catalog/policies/policy.obs.trace_correlation.json +91 -0
- package/catalog/policies/policy.perf.budget_change_retest.json +91 -0
- package/catalog/policies/policy.perf.evidence_binding.json +95 -0
- package/catalog/policies/policy.perf.observation_dimensions.json +94 -0
- package/catalog/policies/policy.proc.checklist_change_policy.json +91 -0
- package/catalog/policies/policy.proc.pre_code_declaration.json +2 -1
- package/catalog/policies/policy.proc.scope_drift_reclassify.json +91 -0
- package/catalog/policies/policy.prv.processing_scope_re_review.json +97 -0
- package/catalog/policies/policy.prv.sensitive_data_six_facts.json +102 -0
- package/catalog/policies/policy.registry.human_fields_validated_decorrelated.json +93 -0
- package/catalog/policies/policy.rel.no_irreversible_unmonitored_full_release.json +91 -0
- package/catalog/policies/policy.rel.observability_before_ship.json +91 -0
- package/catalog/policies/policy.rel.pre_release_confirmation.json +2 -1
- package/catalog/policies/policy.rel.process_change_needs_drill_audit.json +91 -0
- package/catalog/policies/policy.rel.traceable_build.json +93 -0
- package/catalog/policies/policy.role.domain_decision_authority.json +2 -1
- package/catalog/policies/policy.role.human_signs_for_ai.json +93 -0
- package/catalog/policies/policy.sec.authn_policy_unified.json +91 -0
- package/catalog/policies/policy.sec.no_client_side_trust.json +92 -0
- package/catalog/policies/policy.sec.no_longterm_security_disable.json +91 -0
- package/catalog/policies/policy.sec.no_script_readable_credentials.json +91 -0
- package/catalog/policies/policy.sec.no_secrets_in_client_surface.json +91 -0
- package/catalog/policies/policy.sec.relaxation_approval.json +92 -0
- package/catalog/policies/policy.sec.security_relaxation_gate.json +92 -0
- package/catalog/policies/policy.sec.third_party_execution_register.json +2 -1
- package/catalog/policies/policy.sec.trust_boundary_enforcement.json +93 -0
- package/catalog/policies/policy.sec.upload_download_server_recheck.json +91 -0
- package/catalog/policies/policy.sec.url_source_allowlist.json +91 -0
- package/catalog/policies/policy.spec.admission_criteria.json +2 -1
- package/catalog/policies/policy.spec.derived_view_regeneration.json +2 -1
- package/catalog/policies/policy.spec.draft_not_baseline.json +2 -1
- package/catalog/policies/policy.spec.family_conflict_precedence.json +93 -0
- package/catalog/policies/policy.spec.file_structure_contract.json +2 -1
- package/catalog/policies/policy.spec.freeze_before_use.json +93 -0
- package/catalog/policies/policy.spec.metadata_required.json +2 -1
- package/catalog/policies/policy.spec.post_dev_backfill_classify.json +2 -1
- package/catalog/policies/policy.spec.primary_source_basis.json +93 -0
- package/catalog/policies/policy.spec.procedural_record_not_surrogate.json +2 -1
- package/catalog/policies/policy.spec.semantic_identity.json +2 -1
- package/catalog/policies/policy.spec.unresolved_ledger_gate.json +2 -1
- package/catalog/policies/policy.stack.derived_store_not_authority.json +93 -0
- package/catalog/policies/policy.stack.dual_web_stack_boundary.json +93 -0
- package/catalog/policies/policy.stack.entry_chain_recorded.json +93 -0
- package/catalog/policies/policy.stack.entry_limits_aligned.json +94 -0
- package/catalog/policies/policy.stack.local_form_not_prod_fact.json +93 -0
- package/catalog/policies/policy.stack.multi_datastore_ownership.json +93 -0
- package/catalog/policies/policy.stack.no_implicit_selection.json +2 -1
- package/catalog/policies/policy.stack.persistence_coexistence_scope.json +93 -0
- package/catalog/policies/policy.stack.toolchain_versions_pinned.json +95 -0
- package/catalog/policies/policy.stack.upgrade_compat_verified.json +93 -0
- package/catalog/policies/policy.struct.module_entry_dependency_declared.json +92 -0
- package/catalog/policies/policy.struct.no_unexplained_top_level_dir.json +91 -0
- package/catalog/policies/policy.struct.reuse_proven_structure.json +91 -0
- package/catalog/policies/policy.test.control_nondeterminism_keep_diagnosis.json +91 -0
- package/catalog/policies/policy.test.isolation_and_cleanup.json +93 -0
- package/catalog/policies/policy.test.no_synthetic_stability.json +92 -0
- package/catalog/policies/policy.test.pyramid_and_ci_matrix.json +92 -0
- package/catalog/policies/policy.test.removal_justification.json +91 -0
- package/catalog/policies/policy.test.removal_needs_substitute_evidence.json +91 -0
- package/catalog/policies/policy.test.risk_driven_plan.json +92 -0
- package/catalog/policies/policy.test.stable_observable_assertions.json +92 -0
- package/catalog/policies/policy.tool.discoverable_toolchain.json +92 -0
- package/catalog/policies/policy.tool.no_hand_edit_generated_no_ci_drift.json +91 -0
- package/catalog/policies/policy.tool.no_vendored_body_edits.json +94 -0
- package/catalog/policies/policy.tool.scoped_scan_boundary.json +2 -1
- package/catalog/policies/policy.tool.upgrade_verify_lock_rollback.json +92 -0
- package/catalog/policies/policy.web.api.auth_app_client_split.json +2 -1
- package/catalog/policies/policy.web.api.client_change_impact.json +2 -1
- package/catalog/policies/policy.web.api.domain_api_only.json +2 -1
- package/catalog/policies/policy.web.api.error_normalization.json +2 -1
- package/catalog/policies/policy.web.api.generated_client.json +2 -1
- package/catalog/policies/policy.web.api.late_result_guard.json +2 -1
- package/catalog/policies/policy.web.api.mutation_idempotency.json +2 -1
- package/catalog/policies/policy.web.api.no_network_optimism.json +2 -1
- package/catalog/policies/policy.web.api.query_cancel_stale_drop.json +2 -1
- package/catalog/policies/policy.web.api.request_infrastructure.json +2 -1
- package/catalog/policies/policy.web.api.retry_discipline.json +2 -1
- package/catalog/policies/policy.web.api.session_recovery_split.json +2 -1
- package/catalog/policies/policy.web.api.single_http_client.json +2 -1
- package/catalog/policies/policy.web.api.single_loading_source.json +2 -1
- package/catalog/policies/policy.web.api.transport_vs_business.json +2 -1
- package/catalog/policies/policy.web.api.trusted_endpoint_source.json +2 -1
- package/catalog/policies/policy.web.api.typed_domain_naming.json +2 -1
- package/catalog/policies/policy.web.arch.layer_isolation.json +2 -1
- package/catalog/policies/policy.web.arch.naming_conventions.json +2 -1
- package/catalog/policies/policy.web.arch.public_api_barrel.json +2 -1
- package/catalog/policies/policy.web.chg.controlled_change_triggers.json +2 -1
- package/catalog/policies/policy.web.comp.no_trivial_or_god_component.json +91 -0
- package/catalog/policies/policy.web.comp.public_contract_completeness.json +93 -0
- package/catalog/policies/policy.web.copy.action_object_clarity.json +92 -0
- package/catalog/policies/policy.web.copy.enumerable_placement.json +91 -0
- package/catalog/policies/policy.web.copy.error_next_step.json +92 -0
- package/catalog/policies/policy.web.copy.suppression_ledger_discipline.json +2 -1
- package/catalog/policies/policy.web.grid.column_schema_fields.json +2 -1
- package/catalog/policies/policy.web.grid.config_isolation.json +2 -1
- package/catalog/policies/policy.web.grid.freeze_key_columns.json +2 -1
- package/catalog/policies/policy.web.grid.interaction_registry.json +2 -1
- package/catalog/policies/policy.web.grid.keyboard_clipboard.json +2 -1
- package/catalog/policies/policy.web.grid.schema_driven_shell.json +2 -1
- package/catalog/policies/policy.web.grid.schema_versioning.json +2 -1
- package/catalog/policies/policy.web.grid.server_ops_virtualization.json +2 -1
- package/catalog/policies/policy.web.grid.shell_change_matrix.json +2 -1
- package/catalog/policies/policy.web.grid.width_fix_ladder.json +2 -1
- package/catalog/policies/policy.web.handoff.state_matrix_full.json +94 -0
- package/catalog/policies/policy.web.i18n.copy_key_discipline.json +92 -0
- package/catalog/policies/policy.web.i18n.raw_value_for_compute.json +91 -0
- package/catalog/policies/policy.web.page.region_consistency.json +93 -0
- package/catalog/policies/policy.web.perf.budget_skeleton.json +2 -1
- package/catalog/policies/policy.web.style.ownership_matrix.json +2 -1
- package/catalog/policies/policy.web.track.attempt_result_correlation.json +91 -0
- package/catalog/policies/policy.web.track.consent_lifecycle.json +2 -1
- package/catalog/policies/policy.web.track.no_synthetic_actions.json +92 -0
- package/catalog/policies/policy.web.track.privacy_default_deny.json +2 -1
- package/catalog/policies/policy.web.track.stable_event_keys.json +2 -1
- package/catalog/policies/policy.web.track.typed_client_validation.json +91 -0
- package/catalog/policies/policy.web.uiux.provider_evidence_not_business_truth.json +2 -1
- package/catalog/policies/policy.wf.no_planned_as_verified.json +91 -0
- package/catalog/policies/policy.wf.task_facts_preconfirm.json +94 -0
- package/catalog/policies/profile.baseline.java_enterprise_default.json +96 -0
- package/catalog/sensors/sensor.browser.deterministic.json +2 -1
- package/catalog/sensors/sensor.browser.interactive.json +2 -1
- package/catalog/sensors/sensor.build.static.json +2 -1
- package/catalog/sensors/sensor.contract.conformance.json +2 -1
- package/catalog/sensors/sensor.performance.budget.json +2 -1
- package/catalog/sensors/sensor.production.metric.json +2 -1
- package/catalog/tools/seed_b6b_frontend.py +1424 -0
- package/catalog/tools/seed_b6c_backend.py +1495 -0
- package/catalog/tools/seed_b6d_baseline.py +620 -0
- package/catalog/tools/seed_b6e_evidence.py +1305 -0
- package/catalog/tools/seed_d3_review.py +1105 -0
- package/catalog/tools/seed_v06_batch2_materials.py +27 -18
- package/dist/bin.js +23026 -16635
- package/package.json +2 -1
- package/seeds/baseline/backend/api-contract.md +26 -0
- package/seeds/baseline/backend/architecture.md +31 -0
- package/seeds/baseline/backend/data-access.md +31 -0
- package/seeds/baseline/backend/directory-structure.md +11 -0
- package/seeds/baseline/backend/integration-runtime.md +21 -0
- package/seeds/baseline/backend/quality.md +31 -0
- package/seeds/baseline/backend/stack.yaml +13 -0
- package/seeds/baseline/backend/transaction-concurrency.md +26 -0
- package/seeds/baseline/data/lineage.md +11 -0
- package/seeds/baseline/data/migration.md +11 -0
- package/seeds/baseline/data/model.md +31 -0
- package/seeds/baseline/data/precision-units.md +31 -0
- package/seeds/baseline/data/quality.md +31 -0
- package/seeds/baseline/frontend/api-and-error.md +21 -0
- package/seeds/baseline/frontend/architecture.md +26 -0
- package/seeds/baseline/frontend/design-system.md +21 -0
- package/seeds/baseline/frontend/directory-structure.md +16 -0
- package/seeds/baseline/frontend/quality.md +26 -0
- package/seeds/baseline/frontend/stack.yaml +17 -0
- package/seeds/baseline/frontend/state-and-data.md +26 -0
- package/seeds/baseline/manifest.yaml +32 -0
- package/seeds/baseline/platform/delivery.md +36 -0
- package/seeds/baseline/platform/environment.md +11 -0
- package/seeds/baseline/platform/observability.md +31 -0
- package/seeds/baseline/platform/security.md +26 -0
- package/seeds/manifest.json +2006 -0
- package/seeds/specs/evidence/accessibility.md +89 -0
- package/seeds/specs/evidence/architecture.md +89 -0
- package/seeds/specs/evidence/browser-e2e.md +91 -0
- package/seeds/specs/evidence/build.md +91 -0
- package/seeds/specs/evidence/business-acceptance.md +89 -0
- package/seeds/specs/evidence/complexity-crap.md +97 -0
- package/seeds/specs/evidence/contract.md +89 -0
- package/seeds/specs/evidence/coverage.md +91 -0
- package/seeds/specs/evidence/data-migration.md +91 -0
- package/seeds/specs/evidence/dead-code-duplicate.md +89 -0
- package/seeds/specs/evidence/dependency-supply-chain.md +89 -0
- package/seeds/specs/evidence/index.md +55 -0
- package/seeds/specs/evidence/mutation.md +89 -0
- package/seeds/specs/evidence/performance.md +89 -0
- package/seeds/specs/evidence/release.md +91 -0
- package/seeds/specs/evidence/runtime-observability.md +91 -0
- package/seeds/specs/evidence/security.md +89 -0
- package/seeds/specs/evidence/typecheck-lint.md +91 -0
- package/seeds/specs/evidence/unit-component-integration.md +91 -0
- package/seeds/specs/evidence/visual-regression.md +89 -0
- package/seeds/specs/hard/backend/01-architecture-governance-protocol.md +68 -0
- package/seeds/specs/hard/backend/02-project-structure-governance-protocol.md +68 -0
- package/seeds/specs/hard/backend/03-directory-boundary-protocol.md +68 -0
- package/seeds/specs/hard/backend/04-layering-architecture-protocol.md +68 -0
- package/seeds/specs/hard/backend/05-task-workflow-protocol.md +68 -0
- package/seeds/specs/hard/backend/06-ai-generated-code-protocol.md +68 -0
- package/seeds/specs/hard/backend/07-evidence-acceptance-protocol.md +68 -0
- package/seeds/specs/hard/backend/08-contract-change-protocol.md +68 -0
- package/seeds/specs/hard/backend/09-role-responsibility-protocol.md +68 -0
- package/seeds/specs/hard/backend/10-security-protocol.md +68 -0
- package/seeds/specs/hard/backend/11-environment-configuration-protocol.md +67 -0
- package/seeds/specs/hard/backend/12-api-contract-protocol.md +68 -0
- package/seeds/specs/hard/backend/13-privacy-data-lifecycle-protocol.md +68 -0
- package/seeds/specs/hard/backend/14-business-rules-state-protocol.md +68 -0
- package/seeds/specs/hard/backend/15-data-model-protocol.md +68 -0
- package/seeds/specs/hard/backend/16-error-code-protocol.md +68 -0
- package/seeds/specs/hard/backend/17-permission-authorization-protocol.md +68 -0
- package/seeds/specs/hard/backend/18-database-schema-migration-protocol.md +68 -0
- package/seeds/specs/hard/backend/19-query-index-sql-protocol.md +68 -0
- package/seeds/specs/hard/backend/20-transaction-boundary-protocol.md +68 -0
- package/seeds/specs/hard/backend/21-concurrency-locking-protocol.md +68 -0
- package/seeds/specs/hard/backend/22-idempotency-protocol.md +68 -0
- package/seeds/specs/hard/backend/23-cache-redis-consistency-protocol.md +68 -0
- package/seeds/specs/hard/backend/24-external-integration-resilience-protocol.md +68 -0
- package/seeds/specs/hard/backend/25-async-job-scheduler-protocol.md +68 -0
- package/seeds/specs/hard/backend/26-engineering-tooling-protocol.md +68 -0
- package/seeds/specs/hard/backend/27-dependency-supply-chain-protocol.md +68 -0
- package/seeds/specs/hard/backend/28-testing-protocol.md +68 -0
- package/seeds/specs/hard/backend/29-observability-logging-tracing-protocol.md +68 -0
- package/seeds/specs/hard/backend/30-performance-capacity-protocol.md +68 -0
- package/seeds/specs/hard/backend/31-runtime-deployment-protocol.md +68 -0
- package/seeds/specs/hard/backend/32-release-versioning-rollback-protocol.md +68 -0
- package/seeds/specs/hard/backend/index.md +177 -0
- package/seeds/specs/hard/frontend/01-development-checklist-protocol.md +86 -0
- package/seeds/specs/hard/frontend/02-ai-generated-code-protocol.md +82 -0
- package/seeds/specs/hard/frontend/03-acceptance-gate-protocol.md +86 -0
- package/seeds/specs/hard/frontend/04-security-protocol.md +283 -0
- package/seeds/specs/hard/frontend/05-environment-configuration-protocol.md +80 -0
- package/seeds/specs/hard/frontend/06-change-governance-protocol.md +90 -0
- package/seeds/specs/hard/frontend/07-frontend-backend-communication-protocol.md +219 -0
- package/seeds/specs/hard/frontend/08-role-responsibility-protocol.md +80 -0
- package/seeds/specs/hard/frontend/09-module-boundary-protocol.md +81 -0
- package/seeds/specs/hard/frontend/10-engineering-tooling-protocol.md +89 -0
- package/seeds/specs/hard/frontend/11-dependency-package-management-protocol.md +87 -0
- package/seeds/specs/hard/frontend/12-business-rules-protocol.md +79 -0
- package/seeds/specs/hard/frontend/13-monetary-precision-protocol.md +81 -0
- package/seeds/specs/hard/frontend/14-data-model-protocol.md +85 -0
- package/seeds/specs/hard/frontend/15-request-api-protocol.md +87 -0
- package/seeds/specs/hard/frontend/16-error-handling-protocol.md +79 -0
- package/seeds/specs/hard/frontend/17-permission-protocol.md +79 -0
- package/seeds/specs/hard/frontend/18-state-management-protocol.md +88 -0
- package/seeds/specs/hard/frontend/19-cache-protocol.md +79 -0
- package/seeds/specs/hard/frontend/20-testing-protocol.md +88 -0
- package/seeds/specs/hard/frontend/21-design-system-protocol.md +79 -0
- package/seeds/specs/hard/frontend/22-theme-protocol.md +79 -0
- package/seeds/specs/hard/frontend/23-accessibility-protocol.md +189 -0
- package/seeds/specs/hard/frontend/24-component-protocol.md +80 -0
- package/seeds/specs/hard/frontend/25-page-structure-protocol.md +79 -0
- package/seeds/specs/hard/frontend/26-style-layout-protocol.md +80 -0
- package/seeds/specs/hard/frontend/27-rendering-state-protocol.md +81 -0
- package/seeds/specs/hard/frontend/28-form-protocol.md +88 -0
- package/seeds/specs/hard/frontend/29-routing-url-protocol.md +79 -0
- package/seeds/specs/hard/frontend/30-data-grid-protocol.md +83 -0
- package/seeds/specs/hard/frontend/31-performance-protocol.md +137 -0
- package/seeds/specs/hard/frontend/32-file-import-export-protocol.md +80 -0
- package/seeds/specs/hard/frontend/33-release-versioning-protocol.md +79 -0
- package/seeds/specs/hard/frontend/34-monitoring-logging-protocol.md +128 -0
- package/seeds/specs/hard/frontend/35-mock-protocol.md +97 -0
- package/seeds/specs/hard/frontend/36-feature-flag-protocol.md +79 -0
- package/seeds/specs/hard/frontend/37-browser-device-compatibility-protocol.md +83 -0
- package/seeds/specs/hard/frontend/38-internationalization-protocol.md +243 -0
- package/seeds/specs/hard/frontend/39-copywriting-protocol.md +79 -0
- package/seeds/specs/hard/frontend/40-analytics-protocol.md +98 -0
- package/seeds/specs/hard/frontend/41-design-handoff-protocol.md +80 -0
- package/seeds/specs/hard/frontend/42-browser-runtime-lifecycle-protocol.md +86 -0
- package/seeds/specs/hard/frontend/43-time-temporal-protocol.md +86 -0
- package/seeds/specs/hard/frontend/44-privacy-data-lifecycle-protocol.md +87 -0
- package/seeds/specs/hard/frontend/45-browser-storage-protocol.md +87 -0
- package/seeds/specs/hard/frontend/index.md +308 -0
- package/seeds/specs/hard/stacks/java/index.md +20 -0
- package/seeds/specs/hard/stacks/java/java-language-overlay.md +35 -0
- package/seeds/specs/hard/stacks/jpa/index.md +20 -0
- package/seeds/specs/hard/stacks/jpa/jpa-persistence-overlay.md +35 -0
- package/seeds/specs/hard/stacks/kubernetes-ingress/index.md +20 -0
- package/seeds/specs/hard/stacks/kubernetes-ingress/kubernetes-ingress-overlay.md +35 -0
- package/seeds/specs/hard/stacks/messaging/index.md +20 -0
- package/seeds/specs/hard/stacks/messaging/messaging-reliability-overlay.md +35 -0
- package/seeds/specs/hard/stacks/mybatis/index.md +20 -0
- package/seeds/specs/hard/stacks/mybatis/mybatis-persistence-overlay.md +35 -0
- package/seeds/specs/hard/stacks/mysql/index.md +20 -0
- package/seeds/specs/hard/stacks/mysql/mysql-database-overlay.md +35 -0
- package/seeds/specs/hard/stacks/nginx/index.md +20 -0
- package/seeds/specs/hard/stacks/nginx/nginx-proxy-overlay.md +35 -0
- package/seeds/specs/hard/stacks/postgresql/index.md +20 -0
- package/seeds/specs/hard/stacks/postgresql/postgresql-database-overlay.md +35 -0
- package/seeds/specs/hard/stacks/redis/index.md +20 -0
- package/seeds/specs/hard/stacks/redis/redis-cache-overlay.md +35 -0
- package/seeds/specs/hard/stacks/spring-batch/index.md +20 -0
- package/seeds/specs/hard/stacks/spring-batch/spring-batch-job-overlay.md +35 -0
- package/seeds/specs/hard/stacks/spring-boot/index.md +20 -0
- package/seeds/specs/hard/stacks/spring-boot/spring-boot-application-overlay.md +35 -0
- package/seeds/specs/hard/stacks/spring-mvc/index.md +20 -0
- package/seeds/specs/hard/stacks/spring-mvc/spring-mvc-web-overlay.md +35 -0
- package/seeds/specs/hard/stacks/spring-webflux/index.md +20 -0
- package/seeds/specs/hard/stacks/spring-webflux/spring-webflux-reactive-overlay.md +35 -0
- package/seeds/specs/hard/stacks/tomcat/index.md +20 -0
- package/seeds/specs/hard/stacks/tomcat/tomcat-runtime-overlay.md +35 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/28-form-protocol.md
|
|
3
|
+
seed_source_sha256: 1359f0b753ece0f633b1aadea11e4ffd03dfc38f5b1f59e8cd869eba502e4807
|
|
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
|
+
# 28 表单协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P1。定义表单布局、模型、校验、联动、提交、回显、草稿、错误和冲突。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不定义具体业务字段和后端权威规则,不替代页面结构。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- FormModel:独立于 DTO 的编辑模型。
|
|
26
|
+
- Dirty State:当前值偏离初始值。
|
|
27
|
+
- Field Error:绑定具体字段的错误。
|
|
28
|
+
|
|
29
|
+
## MUST
|
|
30
|
+
|
|
31
|
+
- 使用独立 FormModel 和 typed schema。
|
|
32
|
+
- 必填、只读、自动计算、回填和无权限字段可区分。
|
|
33
|
+
- 前端先做格式校验,后端字段错误定位并聚焦字段。
|
|
34
|
+
- 提交防重复并保留失败输入。
|
|
35
|
+
- 联动规则集中可测试,隐藏字段清值策略明确。
|
|
36
|
+
- dirty 离开、草稿隔离和版本冲突有策略。
|
|
37
|
+
- 每个输入必须有持久可见且程序化关联的标签、格式说明和必要性提示;placeholder 不得替代标签。
|
|
38
|
+
- 校验错误必须与字段程序化关联,并在可行时给出修复建议;错误摘要必须能导航到对应字段。
|
|
39
|
+
- 姓名、地址、联系方式、认证等常见字段必须使用语义正确的 autocomplete/inputmode 等浏览器提示,除非有明确的安全或业务理由。
|
|
40
|
+
- 同一流程已提供的数据必须复用或允许用户确认,避免重复录入;删除、提交、转账等高风险动作必须提供复核、确认、撤销或等效防错。
|
|
41
|
+
|
|
42
|
+
## MUST NOT
|
|
43
|
+
|
|
44
|
+
- MUST NOT 直接绑定 DTO。
|
|
45
|
+
- MUST NOT 在 template 临时写业务校验。
|
|
46
|
+
- MUST NOT 提交失败清空输入。
|
|
47
|
+
- MUST NOT 用大量互相触发 watcher 实现联动。
|
|
48
|
+
- MUST NOT 只用颜色、图标、toast 或页面顶部文案表达字段错误。
|
|
49
|
+
- MUST NOT 禁止密码管理器或无理由阻止粘贴。
|
|
50
|
+
|
|
51
|
+
## SHOULD
|
|
52
|
+
|
|
53
|
+
- SHOULD 大表单按业务语义分区或分步。
|
|
54
|
+
- SHOULD 提供错误摘要和首错导航。
|
|
55
|
+
|
|
56
|
+
## Contract
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
FormModel, Schema, InitialValues, Validation,
|
|
60
|
+
SubmitCommand, DraftPolicy, DirtyPolicy, ConflictPolicy
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Checklist
|
|
64
|
+
|
|
65
|
+
- [ ] 模型和 schema 独立。
|
|
66
|
+
- [ ] 字段错误可定位。
|
|
67
|
+
- [ ] 防重复与冲突完整。
|
|
68
|
+
- [ ] 草稿和离开策略安全。
|
|
69
|
+
- [ ] 标签、说明、错误和字段程序化关联。
|
|
70
|
+
- [ ] 自动填充、重复录入和高风险动作已检查。
|
|
71
|
+
|
|
72
|
+
## Examples
|
|
73
|
+
|
|
74
|
+
### 内容示例,可删除
|
|
75
|
+
|
|
76
|
+
后端 422 字段错误映射到对应输入,保留用户数据并聚焦第一个错误。
|
|
77
|
+
|
|
78
|
+
## Anti-patterns
|
|
79
|
+
|
|
80
|
+
表单直接修改 DTO,失败后 reset,用户输入全部丢失。
|
|
81
|
+
|
|
82
|
+
## Ownership
|
|
83
|
+
|
|
84
|
+
领域 Owner 维护字段规则,前端 Owner 维护 FormModel,后端 Owner 维护权威校验。
|
|
85
|
+
|
|
86
|
+
## Change Policy
|
|
87
|
+
|
|
88
|
+
字段或联动变化必须同步 schema、adapter、草稿版本、错误映射和测试。
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/29-routing-url-protocol.md
|
|
3
|
+
seed_source_sha256: 3066c383489e1cb72271fe48d4a716860c58381d90e46ee1b2f114c61010949e
|
|
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
|
+
# 29 路由与 URL 协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P1。定义路由命名、参数、URL 状态、返回恢复、守卫和异常页面。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不定义页面内部布局、权限来源和全局状态库。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- Route Contract:name、path、meta 和页面 key 的稳定定义。
|
|
26
|
+
- Shareable State:刷新、分享、返回后应恢复的状态。
|
|
27
|
+
- Ephemeral State:弹窗、hover、未提交输入等临时状态。
|
|
28
|
+
|
|
29
|
+
## MUST
|
|
30
|
+
|
|
31
|
+
- 每个页面路由有稳定 name、path、page key、title、权限和布局 meta。
|
|
32
|
+
- 分页、筛选、排序、tab 等 Shareable State 进入 URL。
|
|
33
|
+
- Query 有 schema、默认值、解析失败兜底和版本策略。
|
|
34
|
+
- 返回恢复分页、筛选、排序和必要视图状态。
|
|
35
|
+
- 401、403、404、500 和资源删除有统一路由策略。
|
|
36
|
+
|
|
37
|
+
## MUST NOT
|
|
38
|
+
|
|
39
|
+
- MUST NOT 把 token、敏感信息、大对象和未提交表单放入 URL。
|
|
40
|
+
- MUST NOT 用标题字符串或 URL 截取判断菜单。
|
|
41
|
+
- MUST NOT 在页面直接修改全局路由表。
|
|
42
|
+
- MUST NOT 改 path/name 而不更新调用方。
|
|
43
|
+
|
|
44
|
+
## SHOULD
|
|
45
|
+
|
|
46
|
+
- SHOULD 由 Page Contract 生成路由、菜单和埋点关联。
|
|
47
|
+
- SHOULD 使用 typed query parser。
|
|
48
|
+
|
|
49
|
+
## Contract
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
RouteName, Path, PageKey, Meta, ParamsSchema,
|
|
53
|
+
QuerySchema, RestorePolicy, ErrorRoutes
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Checklist
|
|
57
|
+
|
|
58
|
+
- [ ] 路由和页面 key 一致。
|
|
59
|
+
- [ ] URL 状态可分享恢复。
|
|
60
|
+
- [ ] 临时/敏感状态未进入 URL。
|
|
61
|
+
- [ ] 异常路由完整。
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
### 内容示例,可删除
|
|
66
|
+
|
|
67
|
+
列表分页筛选写入 query,返回列表时按 URL 恢复,不依赖全局临时 store。
|
|
68
|
+
|
|
69
|
+
## Anti-patterns
|
|
70
|
+
|
|
71
|
+
用中文标题匹配当前菜单,将所有页面筛选永久存入全局状态。
|
|
72
|
+
|
|
73
|
+
## Ownership
|
|
74
|
+
|
|
75
|
+
平台路由 Owner 维护机制,页面 Owner 维护 Route Contract,权限 Owner 维护守卫语义。
|
|
76
|
+
|
|
77
|
+
## Change Policy
|
|
78
|
+
|
|
79
|
+
路由破坏性变化必须提供重定向、链接迁移和监控观察期。
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/30-data-grid-protocol.md
|
|
3
|
+
seed_source_sha256: c702a9956fd5e7aac40e1eefebcdd7a3518b95bd1a750bfcb31cbaddb80f41ff
|
|
4
|
+
seed_version: B6B-2
|
|
5
|
+
lane: frontend
|
|
6
|
+
status: CURRENT
|
|
7
|
+
authority_scope: mixed_required_and_advisory
|
|
8
|
+
applies_to: [frontend]
|
|
9
|
+
related_evidence_specs: []
|
|
10
|
+
related_tools: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 30 数据表格协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P1。定义表格壳、列 schema、列宽、固定列、分页、排序筛选、虚拟滚动、列配置和导出。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不定义业务字段口径,不允许表格库决定页面权限和数据契约。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- Grid Type:可编辑宽表、只读表、报表、主数据表等类型。
|
|
26
|
+
- Column Schema:列 key、类型、宽度、权限和行为契约。
|
|
27
|
+
- Saved View:用户保存的列、筛选和排序配置。
|
|
28
|
+
|
|
29
|
+
## MUST
|
|
30
|
+
|
|
31
|
+
- 表格通过统一壳和 typed Column Schema 渲染。
|
|
32
|
+
- 每列有稳定 key、标题、值类型、宽度策略、权限和导出规则。
|
|
33
|
+
- 大数据使用服务端分页/筛选/排序及虚拟化。
|
|
34
|
+
- 列配置按页面、表格、用户和 schema 版本隔离。
|
|
35
|
+
- 列宽修复先判断单页、同类型、领域 preset、表格壳或全局 token。
|
|
36
|
+
- 公共壳变更验证全部 Grid Type。
|
|
37
|
+
- 表格的交互状态(行 click / double-click / select / drag-select / 列头排序 click / 单元格 focus 等)MUST 在 `interaction-contract-registry` 中逐项声明,每项绑定触发的 `action_id` 与调用的 `api_requirement_ids`;表格不得存在未声明的交互。并非每个表格都要支持所有交互,但所支持的交互子集 MUST 显式界定并说明触发后果。排斥键盘的交互(drag / drag-select / hover-only)MUST 声明键盘等价路径(协议 23)。
|
|
38
|
+
|
|
39
|
+
## MUST NOT
|
|
40
|
+
|
|
41
|
+
- MUST NOT template 手写列或跨页面复制列数组。
|
|
42
|
+
- MUST NOT 为单页列宽修改全局 CSS。
|
|
43
|
+
- MUST NOT 不同类型表格共享污染配置 key。
|
|
44
|
+
- MUST NOT 前端加载全量数据假分页。
|
|
45
|
+
|
|
46
|
+
## SHOULD
|
|
47
|
+
|
|
48
|
+
- SHOULD 固定关键标识/操作列并限制冻结总宽。
|
|
49
|
+
- SHOULD 支持键盘、复制粘贴、冲突和保存视图的明确契约。
|
|
50
|
+
|
|
51
|
+
## Contract
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
GridType, RowKey, ColumnSchema[], ServerOperations,
|
|
55
|
+
Virtualization, SavedViewKey, ExportScope, Permissions,
|
|
56
|
+
InteractionContracts[]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Checklist
|
|
60
|
+
|
|
61
|
+
- [ ] 表格由 schema 驱动。
|
|
62
|
+
- [ ] 列宽影响层级正确。
|
|
63
|
+
- [ ] 大数据和配置隔离安全。
|
|
64
|
+
- [ ] 导出与当前视图一致。
|
|
65
|
+
- [ ] 每个支持的交互(行点击/双击/拖选/排序/聚焦)在 interaction-contract-registry 声明并绑定 action + API。
|
|
66
|
+
|
|
67
|
+
## Examples
|
|
68
|
+
|
|
69
|
+
### 内容示例,可删除
|
|
70
|
+
|
|
71
|
+
同类型报表共享 column preset;单页例外写在 page contract,不改可编辑宽表。
|
|
72
|
+
|
|
73
|
+
## Anti-patterns
|
|
74
|
+
|
|
75
|
+
为某报表加全局 `.table td { width }`,导致所有列表和宽表一起变化。
|
|
76
|
+
|
|
77
|
+
## Ownership
|
|
78
|
+
|
|
79
|
+
表格平台 Owner 维护壳,领域 Owner 维护列 schema,页面 Owner 维护例外。
|
|
80
|
+
|
|
81
|
+
## Change Policy
|
|
82
|
+
|
|
83
|
+
列 schema 和保存视图结构必须版本化;公共行为变化遵循影响评估和视觉回归。
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/31-performance-protocol.md
|
|
3
|
+
seed_source_sha256: 416ff411c75e538feec3aad8be5e733b95913580fd937c0abebd16aa0d21608c
|
|
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
|
+
# 31 性能协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P1。定义首屏、包体、请求、列表、表格、图表、长任务和渲染稳定的性能规则。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不替代后端容量规划和基础设施性能,不允许只追分数牺牲正确性。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- Performance Budget:可验证的时间、大小或资源阈值。
|
|
26
|
+
- Core Web Vitals:LCP、INP、CLS 等反映加载、交互响应和视觉稳定性的用户体验指标。
|
|
27
|
+
- RUM Distribution:按页面类型、设备、网络、浏览器、版本和采样窗口聚合的真实用户指标分布。
|
|
28
|
+
- Virtualization:仅渲染可见窗口数据。
|
|
29
|
+
- Stale Response:已被新请求替代的旧响应。
|
|
30
|
+
|
|
31
|
+
## MUST
|
|
32
|
+
|
|
33
|
+
- 定义首屏、包体、交互和核心页面预算。
|
|
34
|
+
- 路由、图表和重组件按需加载。
|
|
35
|
+
- 大列表服务端分页,宽表虚拟化。
|
|
36
|
+
- 搜索防抖、旧请求取消、过期响应丢弃。
|
|
37
|
+
- 长任务异步执行并可恢复。
|
|
38
|
+
- 性能变更用同数据量测量并记录结果。
|
|
39
|
+
- 性能预算必须区分实验室数据与真实用户数据,记录设备、网络、浏览器、采样窗口、指标版本和 p75 等统计口径。
|
|
40
|
+
- 启用真实用户监测时,核心 Web Vitals 应按当前稳定定义分设备评估;默认参考目标为 p75 的 LCP ≤ 2.5s、INP ≤ 200ms、CLS ≤ 0.1,项目可基于证据收紧或批准例外。
|
|
41
|
+
- LCP、INP、CLS、FCP、TTFB、长任务和关键业务交互预算必须声明数据源、指标版本、测量起止点、样本下限、排除规则、聚合窗口和适用页面类型;p75 用于主要放行判断,p95/p99 用于尾部退化诊断。
|
|
42
|
+
- RUM 报告必须按页面类型、设备类别、网络类别、浏览器和应用版本切分,实验室结果不得冒充真实用户分布;运行采集与传输韧性引用 `34-monitoring-logging-protocol`。
|
|
43
|
+
- 页面隐藏、恢复与离开时必须暂停不必要工作并释放资源,恢复后重新校验数据新鲜度;遵守浏览器运行时生命周期协议。
|
|
44
|
+
|
|
45
|
+
### 分层性能责任(按目录层级)
|
|
46
|
+
|
|
47
|
+
性能是架构期约束,按目录层级分担责任;每层有明确的性能检查点与禁止行为。层级划分与 `09-module-boundary-protocol` 一致。
|
|
48
|
+
|
|
49
|
+
- **app 层 — 应用启动性能**:初始化代码、Provider 数量、全局插件、首屏依赖必须精简。路由必须懒加载(router-level lazy loading)。MUST NOT 在应用入口(如 `main.ts`)直接同步 import 重型编辑器、图表库或大表组件(用户打开登录页即加载整个系统能力 → 首屏变慢)。
|
|
50
|
+
- **platform 层 — 状态管理性能**:server state 走 Query Cache,local UI state 走状态库(如 Pinia)。MUST NOT 在全局 store 存储大量业务数据(如 10 万 BOM 节点入 Pinia → reactive 开销、刷新慢、内存增加)。
|
|
51
|
+
- **api 层 — 网络性能治理**:页面初始化请求必须并行或由后端聚合。MUST NOT 串行发起可并行的请求(如打开页面串行 GET user/permission/menu/bom/supplier/price/config = N×RTT)。
|
|
52
|
+
- **domain 层 — 计算性能**:实时轻计算在前端,重计算后台异步。MUST NOT 前端遍历大数据全集做计算(如改一个零件价格就遍历 10 万 BOM 节点 → CPU 100%、页面冻结)。
|
|
53
|
+
- **feature 层 — 页面级性能**:页面进入核心优先、非核心延迟加载(如 BOM 编辑页:核心表格先加载,历史/图表/分析延迟)。MUST NOT 一次加载页面全部重组件。
|
|
54
|
+
- **shared 层 — 公共组件性能**:Table / Tree / Select / Form / Modal / Virtual List 面对大数据必须虚拟滚动或分页。MUST NOT 大列表用普通 `v-for` 渲染全量数据(如 10000 行表格普通渲染)。
|
|
55
|
+
|
|
56
|
+
## MUST NOT
|
|
57
|
+
|
|
58
|
+
- MUST NOT 一次渲染大数据全部节点。
|
|
59
|
+
- MUST NOT 每次按键立即请求。
|
|
60
|
+
- MUST NOT 让旧响应覆盖新状态。
|
|
61
|
+
- MUST NOT 在 render 中执行复杂计算。
|
|
62
|
+
- MUST NOT 为追求性能分数牺牲安全、正确性、可访问性或用户可恢复性。
|
|
63
|
+
- MUST NOT 混用不同版本、不同环境或不同统计口径的性能结果作直接回归结论。
|
|
64
|
+
- MUST NOT 只报告平均值而省略样本量、分位数、窗口和切分维度。
|
|
65
|
+
- MUST NOT 在本协议定义业务行为漏斗或事件用途;这些规则归 `40-analytics-protocol`。
|
|
66
|
+
- MUST NOT 在应用入口同步 import 重型编辑器、图表库或大表组件(首屏重依赖)。
|
|
67
|
+
- MUST NOT 在全局状态库存储大量业务数据(server state 须走 Query Cache)。
|
|
68
|
+
- MUST NOT 串行发起可并行的页面初始化请求(须并行或后端聚合)。
|
|
69
|
+
- MUST NOT 前端遍历大数据全集做计算(须实时轻计算 + 后台异步重计算)。
|
|
70
|
+
- MUST NOT 一次加载页面全部重组件(须核心优先、非核心延迟加载)。
|
|
71
|
+
- MUST NOT 大列表用普通 `v-for` 渲染全量数据(须虚拟滚动或分页)。
|
|
72
|
+
|
|
73
|
+
## SHOULD
|
|
74
|
+
|
|
75
|
+
- SHOULD 监控真实用户核心指标和业务交互时间。
|
|
76
|
+
- SHOULD 同时观察 p75 与 p95/p99,区分总体回归和长尾退化,并为样本不足标记不可判定而非假定通过。
|
|
77
|
+
- SHOULD 保持行高、工具栏和 loading 尺寸稳定。
|
|
78
|
+
|
|
79
|
+
## Contract
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
Scenario, DatasetSize, BudgetMetric, Threshold,
|
|
83
|
+
MeasurementMethod, DataSource, MetricVersion, SampleWindow, SampleSize,
|
|
84
|
+
Percentile, Dimensions, Baseline, Owner
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
分层性能责任契约(按目录层级,与 `09-module-boundary-protocol` 层级一致):
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
Layer, Responsibility, CheckPoint, Forbidden
|
|
91
|
+
app, 启动性能/路由懒加载, 入口依赖 + Provider/插件数 + 首屏包, 入口同步 import 重型组件
|
|
92
|
+
platform, 状态管理性能, server vs local 归属 + store 数据量, 全局 store 存大数据
|
|
93
|
+
api, 网络性能, 请求并行/聚合 + 串行风暴, 可并行请求串行发起
|
|
94
|
+
domain, 计算性能, 实时轻计算 + 后台异步, 前端遍历大数据全集
|
|
95
|
+
feature, 页面级性能, 核心优先 + 非核心延迟, 一次加载全部重组件
|
|
96
|
+
shared, 公共组件性能, 虚拟滚动/分页, 大列表普通 v-for
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Checklist
|
|
100
|
+
|
|
101
|
+
- [ ] 预算和数据量明确。
|
|
102
|
+
- [ ] 分包、分页、虚拟化合理。
|
|
103
|
+
- [ ] 请求并发安全。
|
|
104
|
+
- [ ] 有测量证据。
|
|
105
|
+
- [ ] 实验室/真实用户口径、指标版本和分位数已记录。
|
|
106
|
+
- [ ] LCP/INP/CLS 等预算含数据源、样本下限、窗口、排除规则和页面适用范围。
|
|
107
|
+
- [ ] RUM 报告包含 p75 主要口径与 p95/p99 长尾诊断,样本不足不会被提升为通过。
|
|
108
|
+
- [ ] 隐藏、恢复与离开场景无无效工作和资源泄漏。
|
|
109
|
+
- [ ] 分层性能责任已按 app/platform/api/domain/feature/shared 分担,每层检查点与禁止行为已确认。
|
|
110
|
+
|
|
111
|
+
## Examples
|
|
112
|
+
|
|
113
|
+
### 内容示例,可删除
|
|
114
|
+
|
|
115
|
+
筛选输入防抖并取消旧请求,详情抽屉按需加载,导出创建后台任务。
|
|
116
|
+
|
|
117
|
+
## Anti-patterns
|
|
118
|
+
|
|
119
|
+
下载十万行到浏览器假分页,导致内存和交互崩溃。
|
|
120
|
+
|
|
121
|
+
应用入口同步 import 重型编辑器/图表/大表组件,导致登录页首屏被拖慢。
|
|
122
|
+
|
|
123
|
+
全局 Pinia store 存储 10 万 BOM 节点,reactive 开销致刷新慢、内存涨。
|
|
124
|
+
|
|
125
|
+
打开页面串行发起 6 个可并行请求,体验 N×RTT。
|
|
126
|
+
|
|
127
|
+
修改一个零件价格即遍历 10 万 BOM 节点重新计算,CPU 100%、页面冻结。
|
|
128
|
+
|
|
129
|
+
10000 行表格用普通 `v-for` 渲染,未虚拟滚动。
|
|
130
|
+
|
|
131
|
+
## Ownership
|
|
132
|
+
|
|
133
|
+
前端性能 Owner 维护预算,模块 Owner 修复回归,后端 Owner 配合数据和接口容量。
|
|
134
|
+
|
|
135
|
+
## Change Policy
|
|
136
|
+
|
|
137
|
+
预算放宽必须有数据和批准;新增重依赖或核心页面需建立基线。
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/32-file-import-export-protocol.md
|
|
3
|
+
seed_source_sha256: 2262d7ce2e910e4d64b0c6f3ef1af0b72c3cafc31d6cb1a796a8fb8b1801cbbc
|
|
4
|
+
seed_version: B6B-2
|
|
5
|
+
lane: frontend
|
|
6
|
+
status: CURRENT
|
|
7
|
+
authority_scope: mixed_required_and_advisory
|
|
8
|
+
applies_to: [frontend]
|
|
9
|
+
related_evidence_specs: []
|
|
10
|
+
related_tools: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 32 文件、导入与导出协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P1。定义文件上传、下载、模板、导入校验、错误明细、导出范围和后台任务。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不定义底层存储实现,不替代安全、权限和异步任务接口契约。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- Import Template:与 schema 版本匹配的输入模板。
|
|
26
|
+
- Partial Success:部分行成功、失败、跳过或警告。
|
|
27
|
+
- Export Scope:当前页、选中行、筛选全量、保存视图或汇总。
|
|
28
|
+
|
|
29
|
+
## MUST
|
|
30
|
+
|
|
31
|
+
- 上传声明类型、大小、数量、文件名和安全校验。
|
|
32
|
+
- 导入流程包含模板、上传、校验、任务、进度、结果和错误明细。
|
|
33
|
+
- 错误明细至少包含行、列、字段、原值、错误码和修复建议。
|
|
34
|
+
- 导出明确范围、字段、权限和有效期。
|
|
35
|
+
- 大文件使用后台任务,完成后刷新依赖数据。
|
|
36
|
+
- 下载时重新鉴权和校验数据范围。
|
|
37
|
+
|
|
38
|
+
## MUST NOT
|
|
39
|
+
|
|
40
|
+
- MUST NOT 静默导入失败。
|
|
41
|
+
- MUST NOT 大文件同步阻塞页面。
|
|
42
|
+
- MUST NOT 页面自行拼导出字段或绕过权限。
|
|
43
|
+
- MUST NOT 成功后遗漏缓存刷新。
|
|
44
|
+
|
|
45
|
+
## SHOULD
|
|
46
|
+
|
|
47
|
+
- SHOULD 支持取消、重试、结果通知和来源页面跳转。
|
|
48
|
+
- SHOULD 让模板和错误文件可追踪 schema 版本。
|
|
49
|
+
|
|
50
|
+
## Contract
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
FilePolicy, TemplateVersion, ImportJob,
|
|
54
|
+
ErrorRowSchema, ExportScope, ResultExpiry, Permissions
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Checklist
|
|
58
|
+
|
|
59
|
+
- [ ] 文件策略明确。
|
|
60
|
+
- [ ] 导入全流程和部分成功完整。
|
|
61
|
+
- [ ] 导出范围与权限一致。
|
|
62
|
+
- [ ] 大文件任务化。
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
### 内容示例,可删除
|
|
67
|
+
|
|
68
|
+
导入完成显示成功、失败、跳过和警告数量,并提供字段级错误文件。
|
|
69
|
+
|
|
70
|
+
## Anti-patterns
|
|
71
|
+
|
|
72
|
+
上传后只显示“导入失败”,没有行号、原因、TraceId 或重试路径。
|
|
73
|
+
|
|
74
|
+
## Ownership
|
|
75
|
+
|
|
76
|
+
业务 Owner 定义字段,文件/任务 Owner 维护流程,安全 Owner 维护文件策略。
|
|
77
|
+
|
|
78
|
+
## Change Policy
|
|
79
|
+
|
|
80
|
+
模板、字段和错误 schema 变化必须版本化并提供兼容/迁移说明。
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/33-release-versioning-protocol.md
|
|
3
|
+
seed_source_sha256: aae0557f4935bac24d04e37ebde5638471b709ff568fea0d13de35bd5dd404af
|
|
4
|
+
seed_version: B6B-2
|
|
5
|
+
lane: frontend
|
|
6
|
+
status: CURRENT
|
|
7
|
+
authority_scope: mixed_required_and_advisory
|
|
8
|
+
applies_to: [frontend]
|
|
9
|
+
related_evidence_specs: []
|
|
10
|
+
related_tools: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 33 版本与发布协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P2。定义版本标识、分支/提交、灰度、回滚、公共 API 兼容和发布证据。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不替代验收门禁、组织发布平台和基础设施部署流程。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- App Version:可关联提交、构建、环境和 source map 的版本。
|
|
26
|
+
- Gray Release:受控用户/环境范围内逐步发布。
|
|
27
|
+
- Rollback:恢复到已验证版本和兼容状态。
|
|
28
|
+
|
|
29
|
+
## MUST
|
|
30
|
+
|
|
31
|
+
- 每个构建有可观测版本和来源。
|
|
32
|
+
- 发布前契约、测试、安全、配置、监控和回滚满足门禁。
|
|
33
|
+
- 高风险变更定义灰度和停止条件。
|
|
34
|
+
- 回滚同时考虑前端资源、接口、缓存、任务和数据兼容。
|
|
35
|
+
- 公共 breaking change 先 deprecated 并提供迁移期。
|
|
36
|
+
|
|
37
|
+
## MUST NOT
|
|
38
|
+
|
|
39
|
+
- MUST NOT 无版本标识发布。
|
|
40
|
+
- MUST NOT 无回滚上线破坏性变化。
|
|
41
|
+
- MUST NOT 直接删除公共 API。
|
|
42
|
+
- MUST NOT 发布后才补监控和 source map。
|
|
43
|
+
|
|
44
|
+
## SHOULD
|
|
45
|
+
|
|
46
|
+
- SHOULD 自动生成变更摘要和发布证据。
|
|
47
|
+
- SHOULD 使用 Feature Flag 降低高风险上线范围。
|
|
48
|
+
|
|
49
|
+
## Contract
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
Version, Commit, BuildTime, Environment, Changes,
|
|
53
|
+
Flags, Migration, Monitoring, Rollback, Owner
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Checklist
|
|
57
|
+
|
|
58
|
+
- [ ] 版本可追踪。
|
|
59
|
+
- [ ] 门禁和契约通过。
|
|
60
|
+
- [ ] 灰度与回滚可执行。
|
|
61
|
+
- [ ] deprecated/迁移完整。
|
|
62
|
+
|
|
63
|
+
## Examples
|
|
64
|
+
|
|
65
|
+
### 内容示例,可删除
|
|
66
|
+
|
|
67
|
+
公共组件新 API 与旧 API 并存一个迁移周期,再在版本公告后删除旧 API。
|
|
68
|
+
|
|
69
|
+
## Anti-patterns
|
|
70
|
+
|
|
71
|
+
静态资源已回滚,但新缓存 schema 和后台任务仍不兼容旧页面。
|
|
72
|
+
|
|
73
|
+
## Ownership
|
|
74
|
+
|
|
75
|
+
发布 Owner 负责流程,模块 Owner 负责兼容,平台 Owner 负责回滚和监控。
|
|
76
|
+
|
|
77
|
+
## Change Policy
|
|
78
|
+
|
|
79
|
+
版本和发布策略变化必须同步 CI/CD、门禁、文档和责任人。
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: pomaster/components/frontend-hard-spec/assets/universal/34-monitoring-logging-protocol.md
|
|
3
|
+
seed_source_sha256: 3c37c1c3aa3ade8d43532a1fcc7561e95aef42a19e46b6eb53d864054a2da013
|
|
4
|
+
seed_version: B6B-2
|
|
5
|
+
lane: frontend
|
|
6
|
+
status: CURRENT
|
|
7
|
+
authority_scope: mixed_required_and_advisory
|
|
8
|
+
applies_to: [frontend]
|
|
9
|
+
related_evidence_specs: []
|
|
10
|
+
related_tools: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 34 监控与日志协议
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
P1。作为前端运行可观测性的主权威,定义结构化日志、技术遥测、错误与白屏、Trace/Span/Breadcrumb、RED 指标、RUM 采集、告警和遥测传输韧性。
|
|
18
|
+
|
|
19
|
+
## Non-Scope
|
|
20
|
+
|
|
21
|
+
不替代后端审计、基础设施容量监控和具体 APM 厂商选型;业务行为事件、漏斗和分析用途归 `40-analytics-protocol`,LCP/INP/CLS 等性能预算、RUM 统计口径和分位数归 `31-performance-protocol`。不允许监控收集权限外数据。
|
|
22
|
+
|
|
23
|
+
## Terms
|
|
24
|
+
|
|
25
|
+
- Error Event:可定位的运行失败记录。
|
|
26
|
+
- Trace:一次端到端请求的因果链,由 trace-id 贯穿。
|
|
27
|
+
- Span:Trace 内的单个操作单元,记录开始/结束时间、父关系和受控元数据。
|
|
28
|
+
- Breadcrumb:错误前的受控操作路径。
|
|
29
|
+
- RED 指标:Rate(请求率)、Errors(错误率)、Duration(耗时)。
|
|
30
|
+
- RUM:Real User Monitoring,采集真实用户设备、网络、性能和交互指标的运行监测方式。
|
|
31
|
+
- Source Map:映射压缩代码到源代码的受控文件。
|
|
32
|
+
|
|
33
|
+
## MUST
|
|
34
|
+
|
|
35
|
+
- 每个应用、页面和关键 API 面必须声明运行可观测性 Owner,负责日志字段、技术指标、追踪、告警和恢复证据。
|
|
36
|
+
- 采集并分类运行错误、Promise rejection、资源失败、接口错误、白屏和根组件渲染失败;每类必须关联 `16-error-handling-protocol` 定义的 UI 状态与恢复策略。
|
|
37
|
+
- 结构化日志包含时间、级别、稳定 message_id、版本、环境、页面、组件/操作、trace-id、浏览器和安全上下文摘要。
|
|
38
|
+
- 关键 API 调用必须生成或传播 trace-id;请求、响应、错误日志与 breadcrumb 必须保持同一关联标识,Span 必须记录父子关系、耗时、结果和受控元数据。
|
|
39
|
+
- HTTP client 与关键异步任务必须聚合 RED 指标;指标名称、单位、维度和版本必须稳定,完整 URL、DOM 文本、用户输入或其他高基数字段不得作为维度。
|
|
40
|
+
- 启用 RUM 时必须采集真实用户运行信号,并携带页面类别、设备类别、网络类别、应用版本和指标版本;性能预算、统计窗口与分位数引用 `31-performance-protocol`,不得在本协议重复定义阈值。
|
|
41
|
+
- source map 与版本对应且受权限保护。
|
|
42
|
+
- 日志字段脱敏并限制请求/响应摘要。
|
|
43
|
+
- 关键错误率、API 失败率、白屏率和运行退化信号必须有告警阈值、升级策略、负责人、静默窗口和运行手册。
|
|
44
|
+
- 监控事件 schema、版本、采样率、批大小、缓存上限、刷新时机、重试退避、用途、保留期限和删除策略必须明确;页面隐藏、卸载或网络恢复时必须按受控策略尽力刷新待发送遥测。
|
|
45
|
+
- 监控 SDK 初始化失败、遥测序列化失败或发送失败必须 fail-open,不得阻断应用主流程;失败本身必须产生可恢复的安全诊断信号,且缓存必须有容量与过期边界。
|
|
46
|
+
|
|
47
|
+
### 分层运行可观测性责任(按目录层级)
|
|
48
|
+
|
|
49
|
+
运行可观测性是架构期横切能力,层级划分与 `09-module-boundary-protocol` 一致。
|
|
50
|
+
|
|
51
|
+
- **app 层 — 启动与全局运行观测**:初始化日志、指标、追踪和 RUM SDK,注册全局错误处理器与白屏检测,声明全局 trace 传播策略;不得用入口 console 输出替代生产遥测或吞错不上报。
|
|
52
|
+
- **platform 层 — 状态与网络观测**:统一记录全局状态操作的受控 span,在 HTTP client 注入请求/响应拦截、RED 指标与 trace-id;不得记录完整状态对象或让业务请求自定义 trace 头格式。
|
|
53
|
+
- **api 层 — 请求链路观测**:记录请求分类、耗时、错误码、重试次数和 trace 传播;不得记录 token,也不得以完整 URL 或 DOM 文本制造高基数维度。
|
|
54
|
+
- **domain 层 — 计算与转换观测**:记录复杂计算/转换耗时、输入量级、异常分支和异步任务状态;不得把 UI Toast/Alert 当作唯一诊断手段。
|
|
55
|
+
- **feature 层 — 页面运行观测**:声明页面运行状态转换、错误边界、关键 API 技术信号和性能预算对比;业务 page-view/action 漏斗与事件去重归 `40-analytics-protocol`。
|
|
56
|
+
- **shared 层 — 组件与工具观测**:公共组件暴露受控 telemetry hook,工具函数记录异常边界;不得把内部调试日志当正式遥测或硬编码业务分析 schema。
|
|
57
|
+
|
|
58
|
+
## MUST NOT
|
|
59
|
+
|
|
60
|
+
- MUST NOT 记录 token、密码、敏感原值或完整文件。
|
|
61
|
+
- MUST NOT 仅用 console 作为生产监控。
|
|
62
|
+
- MUST NOT 捕获后静默吞错。
|
|
63
|
+
- MUST NOT 公开部署 source map。
|
|
64
|
+
- MUST NOT 把用户标识、PII、认证信息或业务原值放入 Trace Context、breadcrumb 或高基数字段。
|
|
65
|
+
- MUST NOT 在没有 trace-id 的情况下发起关键 API 请求。
|
|
66
|
+
- MUST NOT 让页面、组件或请求层各自发明不兼容的日志、指标或追踪字段。
|
|
67
|
+
- MUST NOT 让 SDK 初始化、遥测缓存或发送重试阻塞首屏、用户操作或错误恢复。
|
|
68
|
+
- MUST NOT 把业务行为漏斗、转化口径或分析用途定义在运行诊断 schema 中。
|
|
69
|
+
|
|
70
|
+
## SHOULD
|
|
71
|
+
|
|
72
|
+
- SHOULD 关联用户操作、请求和异步任务 TraceId。
|
|
73
|
+
- SHOULD 控制采样并防止告警风暴。
|
|
74
|
+
- SHOULD 在启用分布式追踪时遵循 W3C Trace Context,并验证跨来源边界的头部传播和信任策略。
|
|
75
|
+
- SHOULD 对告警关联运行手册、最近变更和可回滚版本。
|
|
76
|
+
- SHOULD 对遥测批处理、缓存、退避和丢弃量建立自监控,但不得形成无限递归上报。
|
|
77
|
+
|
|
78
|
+
## Contract
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
SignalType, SchemaVersion, AppVersion, Environment, Page, ComponentOrOperation,
|
|
82
|
+
TraceId, SpanId, ParentSpanId, MessageId, ErrorCode, Duration, SafeDimensions,
|
|
83
|
+
SamplingPolicy, Retention, Timestamp, Owner
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
分层运行可观测性责任契约(与 `09-module-boundary-protocol` 层级一致):
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
Layer, Responsibility, CheckPoint, Forbidden
|
|
90
|
+
app, SDK/全局错误/白屏/trace 策略, 初始化降级 + 全局处理器 + 版本绑定, console 替代遥测 / 吞错
|
|
91
|
+
platform, 状态与网络技术遥测, store span + HTTP RED + trace 注入, 完整状态对象 / 自定义 trace 格式
|
|
92
|
+
api, 请求链路, 分类 + 耗时 + 错误码 + 重试 + trace, token / 高基数 URL 或 DOM
|
|
93
|
+
domain, 计算与异步任务, 耗时 + 数据量级 + 异常分支 + 任务状态, UI 提示作为唯一诊断
|
|
94
|
+
feature, 页面运行状态, 错误边界 + 技术信号 + 性能预算引用, 重复定义业务分析漏斗
|
|
95
|
+
shared, 公共 telemetry hook, 组件/工具异常边界, 调试日志当正式遥测 / 业务 schema 硬编码
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Checklist
|
|
99
|
+
|
|
100
|
+
- [ ] 错误和白屏可定位。
|
|
101
|
+
- [ ] 版本与 source map 对应。
|
|
102
|
+
- [ ] 日志无敏感信息。
|
|
103
|
+
- [ ] 告警和 Owner 明确。
|
|
104
|
+
- [ ] Trace/Span/Breadcrumb 与关键 API、错误和异步任务可关联。
|
|
105
|
+
- [ ] RED 与 RUM 技术信号有稳定名称、单位、维度和指标版本;预算与分位数口径引用 31。
|
|
106
|
+
- [ ] schema、版本、采样、批处理、缓存、重试、保留和删除策略明确。
|
|
107
|
+
- [ ] 遥测故障不影响主流程,Trace Context 不携带敏感数据。
|
|
108
|
+
- [ ] 分层责任已按 app/platform/api/domain/feature/shared 分担并引用 09。
|
|
109
|
+
|
|
110
|
+
## Examples
|
|
111
|
+
|
|
112
|
+
### 内容示例,可删除
|
|
113
|
+
|
|
114
|
+
系统错误展示 TraceId;HTTP client、错误日志和 breadcrumb 记录同一 TraceId 与版本。遥测按受控批次发送,SDK 故障时主流程继续并记录安全降级信号,不记录输入原值。
|
|
115
|
+
|
|
116
|
+
## Anti-patterns
|
|
117
|
+
|
|
118
|
+
生产只打印 console.error,用户截图是唯一定位依据。
|
|
119
|
+
|
|
120
|
+
每个页面自行初始化 SDK、定义 trace 头和日志字段,导致链路无法关联;发送失败时无限重试并阻塞页面卸载。
|
|
121
|
+
|
|
122
|
+
## Ownership
|
|
123
|
+
|
|
124
|
+
Observability/平台 Owner 维护运行遥测 schema、SDK、trace 传播和告警;模块 Owner 维护安全上下文与恢复映射;性能 Owner 维护 31 的预算与统计口径;数据/产品 Owner 维护 40 的业务分析事件;安全/隐私 Owner 审核字段、采样、保留和删除策略。
|
|
125
|
+
|
|
126
|
+
## Change Policy
|
|
127
|
+
|
|
128
|
+
运行遥测 schema、日志字段、技术指标、trace 传播、采样、批处理、缓存、重试、保留、告警和 source map 策略变化必须评审隐私、性能、成本、兼容性和可诊断性;不得把 31/40 的权威规则复制回本协议。
|