pomaster 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -22
- 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 +95 -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 +95 -0
- package/catalog/policies/policy.sec.third_party_execution_register.json +2 -1
- package/catalog/policies/policy.sec.trust_boundary_enforcement.json +96 -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 +20514 -10735
- package/package.json +2 -1
- package/seeds/aggregation-manifest.json +691 -0
- 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 +1429 -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/stacks/antdesign/antdesign-ui-overlay.md +48 -0
- package/seeds/specs/hard/stacks/antdesign/index.md +20 -0
- package/seeds/specs/hard/stacks/css/css-system-overlay.md +52 -0
- package/seeds/specs/hard/stacks/css/index.md +20 -0
- package/seeds/specs/hard/stacks/geist/geist-design-system-overlay.md +48 -0
- package/seeds/specs/hard/stacks/geist/index.md +20 -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
- package/seeds/specs/hard/stacks/vue3/index.md +20 -0
- package/seeds/specs/hard/stacks/vue3/vue3-framework-overlay.md +71 -0
- package/seeds/specs/hard/themes/ai-generated-code.md +171 -0
- package/seeds/specs/hard/themes/api-contract-and-error-semantics.md +532 -0
- package/seeds/specs/hard/themes/architecture-and-module-boundaries.md +323 -0
- package/seeds/specs/hard/themes/data-and-transactions.md +582 -0
- package/seeds/specs/hard/themes/engineering-toolchain-and-dependencies.md +333 -0
- package/seeds/specs/hard/themes/environment-and-configuration.md +196 -0
- package/seeds/specs/hard/themes/frontend-state-and-client-data.md +342 -0
- package/seeds/specs/hard/themes/index.md +374 -0
- package/seeds/specs/hard/themes/integration-and-async-runtime.md +331 -0
- package/seeds/specs/hard/themes/internationalization-and-copywriting.md +350 -0
- package/seeds/specs/hard/themes/observability-and-analytics.md +305 -0
- package/seeds/specs/hard/themes/page-composition-and-browser-environment.md +554 -0
- package/seeds/specs/hard/themes/performance-and-capacity.md +226 -0
- package/seeds/specs/hard/themes/permission-and-authorization.md +168 -0
- package/seeds/specs/hard/themes/privacy-and-data-lifecycle.md +176 -0
- package/seeds/specs/hard/themes/release-and-feature-flags.md +237 -0
- package/seeds/specs/hard/themes/security.md +372 -0
- package/seeds/specs/hard/themes/task-governance-and-acceptance.md +554 -0
- package/seeds/specs/hard/themes/testing-and-verification.md +266 -0
- package/seeds/specs/hard/themes/ui-presentation-and-design.md +670 -0
- package/seeds/specs/hard/themes/value-semantics-and-domain-data.md +339 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
---
|
|
2
|
+
seed_source: packages/cli/seeds/aggregation-manifest.json
|
|
3
|
+
seed_source_sha256: 039b637ccffacdfe3ce30d85e193f4b38928fcdfb16efdc4eb255e35e05af91f
|
|
4
|
+
seed_version: B7-THEME
|
|
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
|
+
legacy_id: theme:value-semantics-and-domain-data
|
|
12
|
+
criticality: standard # 聚合注记:来源无 criticality 字段,取中性默认;info 性注记非执行语义
|
|
13
|
+
injection_mode: mixed # 聚合注记:来源无 injection_mode 字段(默认基线 + 任务命中激活模型);info 性注记非执行语义
|
|
14
|
+
stages: [] # 聚合注记:来源无 stages 字段;info 性注记非执行语义
|
|
15
|
+
triggers: [] # 聚合注记:来源无 triggers 字段;info 性注记非执行语义
|
|
16
|
+
requires: [] # 聚合注记:来源 requires 并集(全空)
|
|
17
|
+
x-aggregation: # 聚合来源(D6):逐源 vendor pin(sha256 与卡 vendor_pin 同值)
|
|
18
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/12-business-rules-protocol.md
|
|
19
|
+
sha256: dda683a7c907989032c82a2c1c3e552b51226e0e0cd5bdf3b6068cc7f649c525
|
|
20
|
+
seed_version: B6B-1
|
|
21
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/13-monetary-precision-protocol.md
|
|
22
|
+
sha256: 4930246c7dfed2751d3a71d617a21e24b46b376131723451b39152582c7a3d4f
|
|
23
|
+
seed_version: B6B-1
|
|
24
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/14-data-model-protocol.md
|
|
25
|
+
sha256: 7d4e31ef04a1f57d88e982c01dabc22c421bafc850b7295a73d084ec3c6fc838
|
|
26
|
+
seed_version: B6B-1
|
|
27
|
+
- seed_source: pomaster/components/frontend-hard-spec/assets/universal/43-time-temporal-protocol.md
|
|
28
|
+
sha256: 4669cc3d927289f99bbd66c3e906f97d548f0cf8ea9e94b66e8b21cb24d00afb
|
|
29
|
+
seed_version: B6B-2
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# 值语义与领域数据
|
|
33
|
+
|
|
34
|
+
> **聚合纪律**:本文档 12 节正文规则行逐字取自 frontmatter x-aggregation 所列来源协议(节内按「端 → 源编号升序」以加粗来源行分块,源内标题与层级原样保留),零新增、零改写、零删除;新增文本仅限文档标题、本注记与逐节来源行。
|
|
35
|
+
|
|
36
|
+
## Scope
|
|
37
|
+
|
|
38
|
+
**源:FE 12 业务规则协议(pomaster/components/frontend-hard-spec/assets/universal/12-business-rules-protocol.md)**
|
|
39
|
+
|
|
40
|
+
P1。定义领域校验、操作许可、状态流转、时间范围、金额规则入口和后端兜底关系。
|
|
41
|
+
|
|
42
|
+
**源:FE 13 金额精度协议(pomaster/components/frontend-hard-spec/assets/universal/13-monetary-precision-protocol.md)**
|
|
43
|
+
|
|
44
|
+
P1。定义金额、单价、成本、汇率、比例和汇总的传输、计算、比较、展示与导出精度。
|
|
45
|
+
|
|
46
|
+
**源:FE 14 数据模型协议(pomaster/components/frontend-hard-spec/assets/universal/14-data-model-protocol.md)**
|
|
47
|
+
|
|
48
|
+
P1。定义 API DTO、Adapter、Domain Model、ViewModel、FormModel 和 RowModel 的分层。
|
|
49
|
+
|
|
50
|
+
**源:FE 43 时间、日期与时区协议(pomaster/components/frontend-hard-spec/assets/universal/43-time-temporal-protocol.md)**
|
|
51
|
+
|
|
52
|
+
P1。定义时间点、日历日期、墙上时间、带时区计划、持续时长、序列化、计算、显示和测试语义。
|
|
53
|
+
|
|
54
|
+
## Non-Scope
|
|
55
|
+
|
|
56
|
+
**源:FE 12 业务规则协议**
|
|
57
|
+
|
|
58
|
+
不定义视觉呈现,不允许前端规则替代后端权威规则。
|
|
59
|
+
|
|
60
|
+
**源:FE 13 金额精度协议**
|
|
61
|
+
|
|
62
|
+
不定义业务公式、税务政策、币种范围或最终结算口径。
|
|
63
|
+
|
|
64
|
+
**源:FE 14 数据模型协议**
|
|
65
|
+
|
|
66
|
+
不定义接口传输协议或具体业务公式,不允许模型层承担页面布局。
|
|
67
|
+
|
|
68
|
+
**源:FE 43 时间、日期与时区协议**
|
|
69
|
+
|
|
70
|
+
不决定项目业务时区、营业日历、节假日或具体日期库,不替代国际化显示协议。
|
|
71
|
+
|
|
72
|
+
## Terms
|
|
73
|
+
|
|
74
|
+
**源:FE 12 业务规则协议**
|
|
75
|
+
|
|
76
|
+
- Domain Rule:不依赖具体页面的业务判断。
|
|
77
|
+
- State Machine:合法状态及转换集合。
|
|
78
|
+
- Authoritative Validation:决定业务结果的后端校验。
|
|
79
|
+
|
|
80
|
+
**源:FE 13 金额精度协议**
|
|
81
|
+
|
|
82
|
+
- Amount:十进制定点值。
|
|
83
|
+
- Currency:正式币种标识。
|
|
84
|
+
- Scale:小数位数量。
|
|
85
|
+
- Rounding Mode/Stage:舍入方式与时点。
|
|
86
|
+
|
|
87
|
+
**源:FE 14 数据模型协议**
|
|
88
|
+
|
|
89
|
+
- DTO:接口原始结构。
|
|
90
|
+
- Adapter:边界转换函数。
|
|
91
|
+
- Domain Model:稳定业务语义模型。
|
|
92
|
+
- ViewModel:面向展示或交互的模型。
|
|
93
|
+
|
|
94
|
+
**源:FE 43 时间、日期与时区协议**
|
|
95
|
+
|
|
96
|
+
- Instant:全球唯一的精确时间点。
|
|
97
|
+
- Local Date:不带时间与时区的日历日期。
|
|
98
|
+
- Wall-clock Time:某地日历和时钟上的本地时间,不天然对应唯一 Instant。
|
|
99
|
+
- Zoned Schedule:带命名时区和日历规则的计划时间。
|
|
100
|
+
- Duration:两个时间点之间的经过量或业务定义时长。
|
|
101
|
+
|
|
102
|
+
## MUST
|
|
103
|
+
|
|
104
|
+
**源:FE 12 业务规则协议 · §MUST**
|
|
105
|
+
|
|
106
|
+
- 规则集中存放、命名、测试并有 Owner。
|
|
107
|
+
- 页面和组件调用规则函数,不复制表达式。
|
|
108
|
+
- 状态转换声明来源、目标、条件、权限和失败码。
|
|
109
|
+
- 金额、比例、日期区间和操作限制有明确契约。
|
|
110
|
+
- 后端执行最终一致性和权威校验。
|
|
111
|
+
|
|
112
|
+
**源:FE 13 金额精度协议 · §MUST**
|
|
113
|
+
|
|
114
|
+
- 金额声明 amount、currency、scale 和舍入规则。
|
|
115
|
+
- 传输使用十进制字符串或无歧义最小单位整数。
|
|
116
|
+
- 权威计算使用 Decimal/BigDecimal 等十进制能力。
|
|
117
|
+
- 区分原始、计算、展示和导出值。
|
|
118
|
+
- 汇总按正式顺序计算和舍入。
|
|
119
|
+
- 百分比声明传输倍率。
|
|
120
|
+
|
|
121
|
+
**源:FE 14 数据模型协议 · §MUST**
|
|
122
|
+
|
|
123
|
+
- 使用 `DTO -> Adapter -> Domain Model -> View/Form/Row Model` 链路。
|
|
124
|
+
- 明确类型命名、位置、Owner 和公开边界。
|
|
125
|
+
- 空值、未知枚举、日期、金额和单位在边界统一处理。
|
|
126
|
+
- API、浏览器存储、跨窗口消息、运行时配置和第三方 SDK 等外部数据必须在信任边界执行 schema 校验后再转换;失败时保守降级并产生安全监控。
|
|
127
|
+
- opaque ID、超出 JavaScript safe integer 的整数和高精度数值必须使用不会静默丢失精度的传输与模型类型。
|
|
128
|
+
- 后端字段变化优先只影响契约和 adapter。
|
|
129
|
+
- adapter 有正常、空值、未知值和边界测试。
|
|
130
|
+
|
|
131
|
+
**源:FE 43 时间、日期与时区协议 · §MUST**
|
|
132
|
+
|
|
133
|
+
- 每个时间字段必须分类为 Instant、Local Date、Wall-clock Time、Zoned Schedule 或 Duration,并在契约中记录精度、时区、日历和空值语义。
|
|
134
|
+
- 跨系统传输必须使用无歧义、版本化的机器格式;Instant 携带 UTC 或明确 offset,Zoned Schedule 同时保留命名时区。
|
|
135
|
+
- Local Date 不得隐式转换为午夜 Instant;Wall-clock Time 转换为 Instant 时必须提供时区和夏令时歧义策略。
|
|
136
|
+
- 解析必须使用明确格式,不依赖浏览器 locale、宿主默认时区或实现相关的字符串猜测。
|
|
137
|
+
- 比较、排序、筛选和计算必须使用规范化原始值,不得使用本地化显示文本。
|
|
138
|
+
- 时间单位必须显式,秒、毫秒、微秒等不得依靠数值大小猜测。
|
|
139
|
+
- 当前时间必须经可替换 Clock 获取;测试必须固定 Clock、时区和 locale,并覆盖月末、闰日、夏令时跳变及重复时刻。
|
|
140
|
+
- 经过时长和超时测量必须使用不受系统时钟回拨影响的单调时间来源;业务日历计算使用明确规则。
|
|
141
|
+
|
|
142
|
+
## MUST NOT
|
|
143
|
+
|
|
144
|
+
**源:FE 12 业务规则协议 · §MUST NOT**
|
|
145
|
+
|
|
146
|
+
- MUST NOT 将同一规则散落在组件、文案和 API 回调。
|
|
147
|
+
- MUST NOT 以按钮禁用代替后端校验。
|
|
148
|
+
- MUST NOT 在无正式来源时发明状态或公式。
|
|
149
|
+
- MUST NOT 用展示文案作为规则返回值。
|
|
150
|
+
|
|
151
|
+
**源:FE 13 金额精度协议 · §MUST NOT**
|
|
152
|
+
|
|
153
|
+
- MUST NOT 使用二进制浮点执行正式金额累计、乘除和相等比较。
|
|
154
|
+
- MUST NOT 用 `toFixed` 代替十进制计算。
|
|
155
|
+
- MUST NOT 混合币种直接求和。
|
|
156
|
+
- MUST NOT 页面、报表、导出各自决定精度。
|
|
157
|
+
|
|
158
|
+
**源:FE 14 数据模型协议 · §MUST NOT**
|
|
159
|
+
|
|
160
|
+
- MUST NOT 让 DTO 穿透公共组件、模板或列定义。
|
|
161
|
+
- MUST NOT 在页面重复字段转换和兜底。
|
|
162
|
+
- MUST NOT 使用万能对象代替类型。
|
|
163
|
+
- MUST NOT 在模型转换中隐藏正式业务计算。
|
|
164
|
+
- MUST NOT 用 TypeScript 类型、类型断言或生成类型替代运行时外部数据校验。
|
|
165
|
+
- MUST NOT 把 opaque ID 或大整数转成可能丢失精度的 `number`。
|
|
166
|
+
|
|
167
|
+
**源:FE 43 时间、日期与时区协议 · §MUST NOT**
|
|
168
|
+
|
|
169
|
+
- MUST NOT 用字符串截断、手工 offset 加减或固定 24 小时替代日历/时区运算。
|
|
170
|
+
- MUST NOT 把无时区值静默解释为浏览器本地时区或 UTC。
|
|
171
|
+
- MUST NOT 混用秒与毫秒、日期与时间点、经过时长与日历天数。
|
|
172
|
+
- MUST NOT 将格式化后的日期时间用于计算、排序、缓存键或接口提交。
|
|
173
|
+
- MUST NOT 在业务代码中直接读取不可控的系统当前时间。
|
|
174
|
+
|
|
175
|
+
## SHOULD
|
|
176
|
+
|
|
177
|
+
**源:FE 12 业务规则协议 · §SHOULD**
|
|
178
|
+
|
|
179
|
+
- SHOULD 使用纯函数、schema 和状态机表达可测试规则。
|
|
180
|
+
- SHOULD 返回稳定原因码供 UI 映射文案。
|
|
181
|
+
|
|
182
|
+
**源:FE 13 金额精度协议 · §SHOULD**
|
|
183
|
+
|
|
184
|
+
- SHOULD 使用统一 Money/Decimal 类型、parser 和 formatter。
|
|
185
|
+
- SHOULD 测试负数、极值、尾数 5、汇总和跨币种边界。
|
|
186
|
+
|
|
187
|
+
**源:FE 14 数据模型协议 · §SHOULD**
|
|
188
|
+
|
|
189
|
+
- SHOULD 使用 schema 校验外部数据。
|
|
190
|
+
- SHOULD 为未知枚举保留安全兜底和监控。
|
|
191
|
+
|
|
192
|
+
**源:FE 43 时间、日期与时区协议 · §SHOULD**
|
|
193
|
+
|
|
194
|
+
- SHOULD 使用能区分日期、时间点、带时区时间和 Duration 的标准平台 API 或经评审的时间库。
|
|
195
|
+
- SHOULD 在用户界面明确展示与用户预期不同的业务时区。
|
|
196
|
+
- SHOULD 在日志和审计中同时记录规范化时间、时区上下文和事件顺序标识。
|
|
197
|
+
|
|
198
|
+
## Contract
|
|
199
|
+
|
|
200
|
+
**源:FE 12 业务规则协议 · §Contract**
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
RuleId, Inputs, Preconditions, Result,
|
|
204
|
+
ReasonCodes[], BackendEnforcement, Owner, Version
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**源:FE 13 金额精度协议 · §Contract**
|
|
208
|
+
|
|
209
|
+
```text
|
|
210
|
+
Money { amount: decimal-string, currency: string, scale: integer }
|
|
211
|
+
Rule { calculationScale, displayScale, roundingMode, roundingStage }
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**源:FE 14 数据模型协议 · §Contract**
|
|
215
|
+
|
|
216
|
+
```text
|
|
217
|
+
SourceDTO, RuntimeSchema, Adapter, DomainModel, ConsumerModel,
|
|
218
|
+
NullPolicy, EnumPolicy, IdentifierPolicy, PrecisionPolicy, FormatPolicy, Owner
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**源:FE 43 时间、日期与时区协议 · §Contract**
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
Field, TemporalKind, MachineFormat, Precision, TimeZone,
|
|
225
|
+
Calendar, AmbiguityPolicy, DisplayZone, ClockSource, TestMatrix
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Checklist
|
|
229
|
+
|
|
230
|
+
**源:FE 12 业务规则协议 · §Checklist**
|
|
231
|
+
|
|
232
|
+
- [ ] 规则来源和 Owner 明确。
|
|
233
|
+
- [ ] 页面未复制规则。
|
|
234
|
+
- [ ] 状态与错误码完整。
|
|
235
|
+
- [ ] 后端有权威兜底。
|
|
236
|
+
|
|
237
|
+
**源:FE 13 金额精度协议 · §Checklist**
|
|
238
|
+
|
|
239
|
+
- [ ] amount/currency/scale/rounding 完整。
|
|
240
|
+
- [ ] 未使用浮点做正式计算。
|
|
241
|
+
- [ ] 展示、汇总和导出一致。
|
|
242
|
+
- [ ] 比例和跨币种语义明确。
|
|
243
|
+
|
|
244
|
+
**源:FE 14 数据模型协议 · §Checklist**
|
|
245
|
+
|
|
246
|
+
- [ ] 模型层次明确。
|
|
247
|
+
- [ ] 外部数据已校验转换。
|
|
248
|
+
- [ ] 组件只消费稳定模型。
|
|
249
|
+
- [ ] adapter 测试完整。
|
|
250
|
+
- [ ] 外部数据校验失败和大整数/opaque ID 已覆盖。
|
|
251
|
+
|
|
252
|
+
**源:FE 43 时间、日期与时区协议 · §Checklist**
|
|
253
|
+
|
|
254
|
+
- [ ] 时间字段类型和单位无歧义。
|
|
255
|
+
- [ ] 日期、时间点和带时区计划未混用。
|
|
256
|
+
- [ ] 解析、排序和计算不依赖显示文本或宿主默认值。
|
|
257
|
+
- [ ] Clock 可替换,边界日期和夏令时已有测试。
|
|
258
|
+
|
|
259
|
+
## Examples
|
|
260
|
+
|
|
261
|
+
**源:FE 12 业务规则协议 · §Examples**
|
|
262
|
+
|
|
263
|
+
### 内容示例,可删除
|
|
264
|
+
|
|
265
|
+
`canApprove(entity, actor)` 返回允许状态和原因码,页面仅决定如何展示。
|
|
266
|
+
|
|
267
|
+
**源:FE 13 金额精度协议 · §Examples**
|
|
268
|
+
|
|
269
|
+
### 内容示例,可删除
|
|
270
|
+
|
|
271
|
+
保留接口金额字符串,通过统一 formatter 展示,不先转为浮点数。
|
|
272
|
+
|
|
273
|
+
**源:FE 14 数据模型协议 · §Examples**
|
|
274
|
+
|
|
275
|
+
### 内容示例,可删除
|
|
276
|
+
|
|
277
|
+
API 的 snake_case DTO 经 adapter 转成稳定 Domain Model,再生成表格 RowModel。
|
|
278
|
+
|
|
279
|
+
**源:FE 43 时间、日期与时区协议 · §Examples**
|
|
280
|
+
|
|
281
|
+
### 内容示例,可删除
|
|
282
|
+
|
|
283
|
+
审计事件保存为 Instant,生日保存为 Local Date,跨地区会议保存为带命名时区的 Zoned Schedule;三者使用不同类型和 adapter。
|
|
284
|
+
|
|
285
|
+
## Anti-patterns
|
|
286
|
+
|
|
287
|
+
**源:FE 12 业务规则协议 · §Anti-patterns**
|
|
288
|
+
|
|
289
|
+
三个页面分别用不同 if 判断“审批中不可编辑”,导致规则漂移。
|
|
290
|
+
|
|
291
|
+
**源:FE 13 金额精度协议 · §Anti-patterns**
|
|
292
|
+
|
|
293
|
+
用 `parseFloat` 累加成本,再 `toFixed(2)` 生成正式报表。
|
|
294
|
+
|
|
295
|
+
**源:FE 14 数据模型协议 · §Anti-patterns**
|
|
296
|
+
|
|
297
|
+
模板直接访问后端字段并在多个单元格各自处理 null 和枚举。
|
|
298
|
+
|
|
299
|
+
**源:FE 43 时间、日期与时区协议 · §Anti-patterns**
|
|
300
|
+
|
|
301
|
+
把 `YYYY-MM-DD` 直接构造成时间点,再用浏览器默认时区显示,导致部分地区日期前移或后移一天。
|
|
302
|
+
|
|
303
|
+
## Ownership
|
|
304
|
+
|
|
305
|
+
**源:FE 12 业务规则协议 · §Ownership**
|
|
306
|
+
|
|
307
|
+
业务/领域 Owner 定义语义,后端 Owner 保证权威执行,前端负责一致呈现。
|
|
308
|
+
|
|
309
|
+
**源:FE 13 金额精度协议 · §Ownership**
|
|
310
|
+
|
|
311
|
+
业务/财务定义口径,后端负责权威计算,前端负责无损传输,QA 验证边界。
|
|
312
|
+
|
|
313
|
+
**源:FE 14 数据模型协议 · §Ownership**
|
|
314
|
+
|
|
315
|
+
API Owner 维护 DTO,领域 Owner 维护 Domain Model,前端模块 Owner 维护 adapter/ViewModel。
|
|
316
|
+
|
|
317
|
+
**源:FE 43 时间、日期与时区协议 · §Ownership**
|
|
318
|
+
|
|
319
|
+
领域 Owner 定义业务时间语义,接口 Owner 定义传输格式,前端平台 Owner 维护 Clock、解析和格式化能力。
|
|
320
|
+
|
|
321
|
+
## Change Policy
|
|
322
|
+
|
|
323
|
+
**源:FE 12 业务规则协议 · §Change Policy**
|
|
324
|
+
|
|
325
|
+
规则或状态变化必须版本化并同步 API、权限、审计、文案和测试。
|
|
326
|
+
|
|
327
|
+
**源:FE 13 金额精度协议 · §Change Policy**
|
|
328
|
+
|
|
329
|
+
精度、币种、舍入或比例语义变化属于破坏性契约变更,必须同步全链路。
|
|
330
|
+
|
|
331
|
+
**源:FE 14 数据模型协议 · §Change Policy**
|
|
332
|
+
|
|
333
|
+
模型字段变化必须说明兼容、迁移和受影响消费者;公共模型不得静默改语义。
|
|
334
|
+
|
|
335
|
+
**源:FE 43 时间、日期与时区协议 · §Change Policy**
|
|
336
|
+
|
|
337
|
+
改变时间类型、精度、时区或序列化格式属于契约变更,必须迁移数据、缓存、测试和调用方,并同步 `universal:data-model-protocol` 与 `universal:internationalization-protocol`。
|
|
338
|
+
|
|
339
|
+
> **语言节**:本主题无语言节挂点(缺席诚实);规则本体即上文通用节。
|