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