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,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "id 域段待登记:BE(vocab-lock@v0.9-resolved policy_id_domains 35 段未含——PR-0010 后新用域段沿用候选注记先例,词汇表 PR 增补)",
|
|
5
|
+
"proposal": "词汇表 PR 增补新 id 域段至 catalog_layer_vocab.policy_id_domains(与 PR-0009/PR-0010 同轴追加,append-only)",
|
|
6
|
+
"locked_vocab_untouched": true
|
|
7
|
+
},
|
|
8
|
+
"x-spec-d-materialization": {
|
|
9
|
+
"status": "PROPOSAL",
|
|
10
|
+
"package": "裁定批 G/D3-R2 排除卡逐卡复核物化·R2 轮(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
|
|
11
|
+
"human_review_required": true,
|
|
12
|
+
"evidence": "PLANNED",
|
|
13
|
+
"provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
|
|
14
|
+
"group": "BE-G3",
|
|
15
|
+
"candidate_id": "POLICY.BE.CONC.PREFER_DB_CONSTRAINTS",
|
|
16
|
+
"pool_statement_sha16": "1450bfee21b1c2fc",
|
|
17
|
+
"curated_rule": "D3 逐卡复核批 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核;裁定批 G 收尾批):R1 入册 25(required 9 + advisory 16)后余量 17 张 advisory 全量入册——SHOULD 锚 13(卡层行锚缺席,复核回 MASTer 源取得行级证据:B6c BE-G4 六 + BE-G3 七)+ 非 12 段锚 4(B6b-II FE index 2 / B6c BE index 冲突优先序 1 / B6b-I FE20 Change Policy 锚 1,extra_master_sections 如实登记);全部 advisory(池判 required 卡强度只降不升);D6 合并口径 ≤25/批满足(17 ≤ 25);72 张总账=R1 25 + R2 17 + 维持排除 30",
|
|
18
|
+
"denominator": "MASTer(池卡锚)"
|
|
19
|
+
},
|
|
20
|
+
"x-b6-porting": {
|
|
21
|
+
"status": "PROPOSAL",
|
|
22
|
+
"batch": "D3-R2",
|
|
23
|
+
"human_review_required": true,
|
|
24
|
+
"classification_face": "policy",
|
|
25
|
+
"enforcement_axis": {
|
|
26
|
+
"source_sections": [
|
|
27
|
+
"SHOULD"
|
|
28
|
+
],
|
|
29
|
+
"rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
|
|
30
|
+
"asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
|
|
31
|
+
},
|
|
32
|
+
"extra_master_sections": [],
|
|
33
|
+
"denominator": "vendor",
|
|
34
|
+
"vendor_pin": {
|
|
35
|
+
"path": "pomaster/components/backend-hard-spec/assets/universal/21-concurrency-locking-protocol.md",
|
|
36
|
+
"sha256": "6141612e1135cc67ccd9d47553ea5fa7b9c00e05b6e50706f8e117c80d3b8d95",
|
|
37
|
+
"bytes": 1308
|
|
38
|
+
},
|
|
39
|
+
"seeded_spec": ".pomaster/specs/hard/backend/21-concurrency-locking-protocol.md",
|
|
40
|
+
"seed_manifest": "packages/cli/seeds/manifest.json",
|
|
41
|
+
"d3_review": {
|
|
42
|
+
"excluded_from_batch": "B6C",
|
|
43
|
+
"exclusion_reason_at_seed": "池行行锚缺席(锚证据不足,保守排除待复核)",
|
|
44
|
+
"adjudication": "D3 逐卡复核 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核,裁定批 G 落地 2026-09-05):本卡原属 B6C 保守排除留池(排除理由:池行行锚缺席(锚证据不足,保守排除待复核));复核补锚回 MASTer 源取得行级证据,锚段=SHOULD,按强度入册(SHOULD 行锚 advisory 原样(池判一致;复核行锚补证))",
|
|
45
|
+
"anchor_evidence": "MASTer 21-concurrency-locking-protocol.md L33「- 应优先使用数据库约束或带版本条件的原子更新保护不变量。」",
|
|
46
|
+
"pool_enforcement_at_seed": "advisory"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"id": "POLICY.BE.CONC.PREFER_DB_CONSTRAINTS",
|
|
50
|
+
"kind": "policy",
|
|
51
|
+
"axis_profile": "policy_default",
|
|
52
|
+
"classification": "UNIVERSAL_POLICY",
|
|
53
|
+
"axes": {
|
|
54
|
+
"lifecycle": "PROPOSED",
|
|
55
|
+
"confidence": "UNRESOLVED",
|
|
56
|
+
"evidence": "PLANNED",
|
|
57
|
+
"change": "STABLE"
|
|
58
|
+
},
|
|
59
|
+
"title_zh": "不变量保护优先数据库约束",
|
|
60
|
+
"statement_zh": "保护不变量时应优先选用数据库层约束,或带版本条件的原子更新语句,而非应用层自行判断。",
|
|
61
|
+
"statement_en_keywords": [
|
|
62
|
+
"prefer database constraints",
|
|
63
|
+
"version-conditional atomic update",
|
|
64
|
+
"invariant protection"
|
|
65
|
+
],
|
|
66
|
+
"applies_when": {
|
|
67
|
+
"lane": "backend",
|
|
68
|
+
"condition": "选择不变量保护机制时",
|
|
69
|
+
"applicability_note": "选择不变量保护机制时"
|
|
70
|
+
},
|
|
71
|
+
"enforcement": "advisory",
|
|
72
|
+
"authority": {
|
|
73
|
+
"owner": "HUMAN_OWNER",
|
|
74
|
+
"delegates": [],
|
|
75
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
76
|
+
"escalation_hint": "catalog-spec-decomposition"
|
|
77
|
+
},
|
|
78
|
+
"origin": "ingested",
|
|
79
|
+
"origin_note": "裁定批 G/D3-R2 D3 逐卡复核物化·R2 轮(原 B6C 保守排除卡补锚收编);statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"type": "design_seed",
|
|
83
|
+
"ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G3.yaml",
|
|
84
|
+
"captured_by": "agent:claude/spec-d-consolidation",
|
|
85
|
+
"locator": {
|
|
86
|
+
"candidate": "POLICY.BE.CONC.PREFER_DB_CONSTRAINTS",
|
|
87
|
+
"source_protocol": ".trellis/spec/backend/21-concurrency-locking-protocol.md",
|
|
88
|
+
"lines": "L33"
|
|
89
|
+
},
|
|
90
|
+
"clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"review_notes": [
|
|
94
|
+
"数据库约束/版本条件原子更新优先在既有 228 条中无对应条目;与同批 TXN.SHORT_LOCKS_COMPENSATION 同协议正交(不变量保护机制选型 vs 锁时长设计),互引;与 STACK.* 池卡不同层(通用并发纪律 vs 技术栈登记)。",
|
|
95
|
+
"D3-R2 补锚:MASTer 21 L33(SHOULD 段),advisory 原样(池判一致)。"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "id 域段待登记:BE(vocab-lock@v0.9-resolved policy_id_domains 35 段未含——PR-0010 后新用域段沿用候选注记先例,词汇表 PR 增补)",
|
|
5
|
+
"proposal": "词汇表 PR 增补新 id 域段至 catalog_layer_vocab.policy_id_domains(与 PR-0009/PR-0010 同轴追加,append-only)",
|
|
6
|
+
"locked_vocab_untouched": true
|
|
7
|
+
},
|
|
8
|
+
"x-spec-d-materialization": {
|
|
9
|
+
"status": "PROPOSAL",
|
|
10
|
+
"package": "裁定批 G/D3-R2 排除卡逐卡复核物化·R2 轮(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
|
|
11
|
+
"human_review_required": true,
|
|
12
|
+
"evidence": "PLANNED",
|
|
13
|
+
"provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
|
|
14
|
+
"group": "BE-G3",
|
|
15
|
+
"candidate_id": "POLICY.BE.DB.EXPAND_MIGRATE_CONTRACT",
|
|
16
|
+
"pool_statement_sha16": "fbafbb2efb24e2a1",
|
|
17
|
+
"curated_rule": "D3 逐卡复核批 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核;裁定批 G 收尾批):R1 入册 25(required 9 + advisory 16)后余量 17 张 advisory 全量入册——SHOULD 锚 13(卡层行锚缺席,复核回 MASTer 源取得行级证据:B6c BE-G4 六 + BE-G3 七)+ 非 12 段锚 4(B6b-II FE index 2 / B6c BE index 冲突优先序 1 / B6b-I FE20 Change Policy 锚 1,extra_master_sections 如实登记);全部 advisory(池判 required 卡强度只降不升);D6 合并口径 ≤25/批满足(17 ≤ 25);72 张总账=R1 25 + R2 17 + 维持排除 30",
|
|
18
|
+
"denominator": "MASTer(池卡锚)"
|
|
19
|
+
},
|
|
20
|
+
"x-b6-porting": {
|
|
21
|
+
"status": "PROPOSAL",
|
|
22
|
+
"batch": "D3-R2",
|
|
23
|
+
"human_review_required": true,
|
|
24
|
+
"classification_face": "policy",
|
|
25
|
+
"enforcement_axis": {
|
|
26
|
+
"source_sections": [
|
|
27
|
+
"SHOULD"
|
|
28
|
+
],
|
|
29
|
+
"rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
|
|
30
|
+
"asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
|
|
31
|
+
},
|
|
32
|
+
"extra_master_sections": [],
|
|
33
|
+
"denominator": "vendor",
|
|
34
|
+
"vendor_pin": {
|
|
35
|
+
"path": "pomaster/components/backend-hard-spec/assets/universal/18-database-schema-migration-protocol.md",
|
|
36
|
+
"sha256": "e7d0b660673dc1978653c39c9efcc7ad7d9b2809c4a88040a6fcf74839bc82c0",
|
|
37
|
+
"bytes": 1409
|
|
38
|
+
},
|
|
39
|
+
"seeded_spec": ".pomaster/specs/hard/backend/18-database-schema-migration-protocol.md",
|
|
40
|
+
"seed_manifest": "packages/cli/seeds/manifest.json",
|
|
41
|
+
"d3_review": {
|
|
42
|
+
"excluded_from_batch": "B6C",
|
|
43
|
+
"exclusion_reason_at_seed": "池行行锚缺席(锚证据不足,保守排除待复核)",
|
|
44
|
+
"adjudication": "D3 逐卡复核 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核,裁定批 G 落地 2026-09-05):本卡原属 B6C 保守排除留池(排除理由:池行行锚缺席(锚证据不足,保守排除待复核));复核补锚回 MASTer 源取得行级证据,锚段=SHOULD,按强度入册(SHOULD 行锚 advisory 原样(池判一致;复核行锚补证))",
|
|
45
|
+
"anchor_evidence": "MASTer 18-database-schema-migration-protocol.md L33「- 应采用 expand/migrate/contract,避免应用与数据库无法并行部署。」",
|
|
46
|
+
"pool_enforcement_at_seed": "advisory"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"id": "POLICY.BE.DB.EXPAND_MIGRATE_CONTRACT",
|
|
50
|
+
"kind": "policy",
|
|
51
|
+
"axis_profile": "policy_default",
|
|
52
|
+
"classification": "UNIVERSAL_POLICY",
|
|
53
|
+
"axes": {
|
|
54
|
+
"lifecycle": "PROPOSED",
|
|
55
|
+
"confidence": "UNRESOLVED",
|
|
56
|
+
"evidence": "PLANNED",
|
|
57
|
+
"change": "STABLE"
|
|
58
|
+
},
|
|
59
|
+
"title_zh": "结构变更三阶段并行部署",
|
|
60
|
+
"statement_zh": "结构演进宜按「先扩展、再迁移数据、后收缩」三段推进,使应用版本与数据库结构可以各自独立部署、互不锁死。",
|
|
61
|
+
"statement_en_keywords": [
|
|
62
|
+
"expand migrate contract",
|
|
63
|
+
"parallel deployability",
|
|
64
|
+
"three-phase schema evolution"
|
|
65
|
+
],
|
|
66
|
+
"applies_when": {
|
|
67
|
+
"lane": "backend",
|
|
68
|
+
"condition": "规划不兼容结构变更时",
|
|
69
|
+
"applicability_note": "规划不兼容结构变更时"
|
|
70
|
+
},
|
|
71
|
+
"enforcement": "advisory",
|
|
72
|
+
"authority": {
|
|
73
|
+
"owner": "HUMAN_OWNER",
|
|
74
|
+
"delegates": [],
|
|
75
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
76
|
+
"escalation_hint": "catalog-spec-decomposition"
|
|
77
|
+
},
|
|
78
|
+
"origin": "ingested",
|
|
79
|
+
"origin_note": "裁定批 G/D3-R2 D3 逐卡复核物化·R2 轮(原 B6C 保守排除卡补锚收编);statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"type": "design_seed",
|
|
83
|
+
"ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G3.yaml",
|
|
84
|
+
"captured_by": "agent:claude/spec-d-consolidation",
|
|
85
|
+
"locator": {
|
|
86
|
+
"candidate": "POLICY.BE.DB.EXPAND_MIGRATE_CONTRACT",
|
|
87
|
+
"source_protocol": ".trellis/spec/backend/18-database-schema-migration-protocol.md",
|
|
88
|
+
"lines": "L33"
|
|
89
|
+
},
|
|
90
|
+
"clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"review_notes": [
|
|
94
|
+
"expand/migrate/contract 三阶段在既有 228 条中无对应条目;与 POLICY.CHG.COMPAT_MIGRATION_ROLLBACK(B6b-I:通用兼容迁移回滚)、FLAG.CLEANUP_AFTER_FULL_ROLLOUT(存量清退)互引——本卡管库表结构并行的专项时序,应用侧迁移通用纪律不重复。",
|
|
95
|
+
"D3-R2 补锚:MASTer 18 L33(SHOULD 段),advisory 原样(池判一致)。"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "id 域段待登记:BE(vocab-lock@v0.9-resolved policy_id_domains 35 段未含——PR-0010 后新用域段沿用候选注记先例,词汇表 PR 增补)",
|
|
5
|
+
"proposal": "词汇表 PR 增补新 id 域段至 catalog_layer_vocab.policy_id_domains(与 PR-0009/PR-0010 同轴追加,append-only)",
|
|
6
|
+
"locked_vocab_untouched": true
|
|
7
|
+
},
|
|
8
|
+
"x-spec-d-materialization": {
|
|
9
|
+
"status": "PROPOSAL",
|
|
10
|
+
"package": "裁定批 G/D3-R2 排除卡逐卡复核物化·R2 轮(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
|
|
11
|
+
"human_review_required": true,
|
|
12
|
+
"evidence": "PLANNED",
|
|
13
|
+
"provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
|
|
14
|
+
"group": "BE-G3",
|
|
15
|
+
"candidate_id": "POLICY.BE.IDEM.KEY_PAYLOAD_CONFLICT",
|
|
16
|
+
"pool_statement_sha16": "6a3d97a06f5ca174",
|
|
17
|
+
"curated_rule": "D3 逐卡复核批 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核;裁定批 G 收尾批):R1 入册 25(required 9 + advisory 16)后余量 17 张 advisory 全量入册——SHOULD 锚 13(卡层行锚缺席,复核回 MASTer 源取得行级证据:B6c BE-G4 六 + BE-G3 七)+ 非 12 段锚 4(B6b-II FE index 2 / B6c BE index 冲突优先序 1 / B6b-I FE20 Change Policy 锚 1,extra_master_sections 如实登记);全部 advisory(池判 required 卡强度只降不升);D6 合并口径 ≤25/批满足(17 ≤ 25);72 张总账=R1 25 + R2 17 + 维持排除 30",
|
|
18
|
+
"denominator": "MASTer(池卡锚)"
|
|
19
|
+
},
|
|
20
|
+
"x-b6-porting": {
|
|
21
|
+
"status": "PROPOSAL",
|
|
22
|
+
"batch": "D3-R2",
|
|
23
|
+
"human_review_required": true,
|
|
24
|
+
"classification_face": "policy",
|
|
25
|
+
"enforcement_axis": {
|
|
26
|
+
"source_sections": [
|
|
27
|
+
"SHOULD"
|
|
28
|
+
],
|
|
29
|
+
"rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
|
|
30
|
+
"asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
|
|
31
|
+
},
|
|
32
|
+
"extra_master_sections": [],
|
|
33
|
+
"denominator": "vendor",
|
|
34
|
+
"vendor_pin": {
|
|
35
|
+
"path": "pomaster/components/backend-hard-spec/assets/universal/22-idempotency-protocol.md",
|
|
36
|
+
"sha256": "c97d003622b9075f0c094ec5c5bfa950a977e18b2f4ce8ffc9bc014858e27670",
|
|
37
|
+
"bytes": 1310
|
|
38
|
+
},
|
|
39
|
+
"seeded_spec": ".pomaster/specs/hard/backend/22-idempotency-protocol.md",
|
|
40
|
+
"seed_manifest": "packages/cli/seeds/manifest.json",
|
|
41
|
+
"d3_review": {
|
|
42
|
+
"excluded_from_batch": "B6C",
|
|
43
|
+
"exclusion_reason_at_seed": "池行行锚缺席(锚证据不足,保守排除待复核)",
|
|
44
|
+
"adjudication": "D3 逐卡复核 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核,裁定批 G 落地 2026-09-05):本卡原属 B6C 保守排除留池(排除理由:池行行锚缺席(锚证据不足,保守排除待复核));复核补锚回 MASTer 源取得行级证据,锚段=SHOULD,按强度入册(SHOULD 行锚 advisory 原样(池判一致;复核行锚补证))",
|
|
45
|
+
"anchor_evidence": "MASTer 22-idempotency-protocol.md L33「- 应对相同 key 不同 payload 返回稳定冲突,而非重复执行。」",
|
|
46
|
+
"pool_enforcement_at_seed": "advisory"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"id": "POLICY.BE.IDEM.KEY_PAYLOAD_CONFLICT",
|
|
50
|
+
"kind": "policy",
|
|
51
|
+
"axis_profile": "policy_default",
|
|
52
|
+
"classification": "UNIVERSAL_POLICY",
|
|
53
|
+
"axes": {
|
|
54
|
+
"lifecycle": "PROPOSED",
|
|
55
|
+
"confidence": "UNRESOLVED",
|
|
56
|
+
"evidence": "PLANNED",
|
|
57
|
+
"change": "STABLE"
|
|
58
|
+
},
|
|
59
|
+
"title_zh": "幂等键冲突稳定响应",
|
|
60
|
+
"statement_zh": "同一幂等键携带不同请求内容到达时,应返回稳定的冲突响应,而不是当作新请求再次执行。",
|
|
61
|
+
"statement_en_keywords": [
|
|
62
|
+
"same key different payload",
|
|
63
|
+
"stable conflict response",
|
|
64
|
+
"no re-execution"
|
|
65
|
+
],
|
|
66
|
+
"applies_when": {
|
|
67
|
+
"lane": "backend",
|
|
68
|
+
"condition": "处理幂等键与请求内容不匹配时",
|
|
69
|
+
"applicability_note": "处理幂等键与请求内容不匹配时"
|
|
70
|
+
},
|
|
71
|
+
"enforcement": "advisory",
|
|
72
|
+
"authority": {
|
|
73
|
+
"owner": "HUMAN_OWNER",
|
|
74
|
+
"delegates": [],
|
|
75
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
76
|
+
"escalation_hint": "catalog-spec-decomposition"
|
|
77
|
+
},
|
|
78
|
+
"origin": "ingested",
|
|
79
|
+
"origin_note": "裁定批 G/D3-R2 D3 逐卡复核物化·R2 轮(原 B6C 保守排除卡补锚收编);statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"type": "design_seed",
|
|
83
|
+
"ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G3.yaml",
|
|
84
|
+
"captured_by": "agent:claude/spec-d-consolidation",
|
|
85
|
+
"locator": {
|
|
86
|
+
"candidate": "POLICY.BE.IDEM.KEY_PAYLOAD_CONFLICT",
|
|
87
|
+
"source_protocol": ".trellis/spec/backend/22-idempotency-protocol.md",
|
|
88
|
+
"lines": "L33"
|
|
89
|
+
},
|
|
90
|
+
"clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"review_notes": [
|
|
94
|
+
"相同 key 不同 payload 稳定冲突响应在既有 228 条中无对应条目;与 POLICY.WEB.API.MUTATION_IDEMPOTENCY(B6b-I:前端变更幂等)前后端同族互引——彼管客户端重试面,本管服务端键语义,不合并。",
|
|
95
|
+
"D3-R2 补锚:MASTer 22 L33(SHOULD 段),advisory 原样(池判一致)。"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "id 域段待登记:BE(vocab-lock@v0.9-resolved policy_id_domains 35 段未含——PR-0010 后新用域段沿用候选注记先例,词汇表 PR 增补)",
|
|
5
|
+
"proposal": "词汇表 PR 增补新 id 域段至 catalog_layer_vocab.policy_id_domains(与 PR-0009/PR-0010 同轴追加,append-only)",
|
|
6
|
+
"locked_vocab_untouched": true
|
|
7
|
+
},
|
|
8
|
+
"x-spec-d-materialization": {
|
|
9
|
+
"status": "PROPOSAL",
|
|
10
|
+
"package": "裁定批 G/D3-R2 排除卡逐卡复核物化·R2 轮(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
|
|
11
|
+
"human_review_required": true,
|
|
12
|
+
"evidence": "PLANNED",
|
|
13
|
+
"provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
|
|
14
|
+
"group": "BE-G3",
|
|
15
|
+
"candidate_id": "POLICY.BE.MODEL.SINGLE_BOUNDARY_CONVERSION",
|
|
16
|
+
"pool_statement_sha16": "5bd57eb1eeb67cd0",
|
|
17
|
+
"curated_rule": "D3 逐卡复核批 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核;裁定批 G 收尾批):R1 入册 25(required 9 + advisory 16)后余量 17 张 advisory 全量入册——SHOULD 锚 13(卡层行锚缺席,复核回 MASTer 源取得行级证据:B6c BE-G4 六 + BE-G3 七)+ 非 12 段锚 4(B6b-II FE index 2 / B6c BE index 冲突优先序 1 / B6b-I FE20 Change Policy 锚 1,extra_master_sections 如实登记);全部 advisory(池判 required 卡强度只降不升);D6 合并口径 ≤25/批满足(17 ≤ 25);72 张总账=R1 25 + R2 17 + 维持排除 30",
|
|
18
|
+
"denominator": "MASTer(池卡锚)"
|
|
19
|
+
},
|
|
20
|
+
"x-b6-porting": {
|
|
21
|
+
"status": "PROPOSAL",
|
|
22
|
+
"batch": "D3-R2",
|
|
23
|
+
"human_review_required": true,
|
|
24
|
+
"classification_face": "policy",
|
|
25
|
+
"enforcement_axis": {
|
|
26
|
+
"source_sections": [
|
|
27
|
+
"SHOULD"
|
|
28
|
+
],
|
|
29
|
+
"rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
|
|
30
|
+
"asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
|
|
31
|
+
},
|
|
32
|
+
"extra_master_sections": [],
|
|
33
|
+
"denominator": "vendor",
|
|
34
|
+
"vendor_pin": {
|
|
35
|
+
"path": "pomaster/components/backend-hard-spec/assets/universal/15-data-model-protocol.md",
|
|
36
|
+
"sha256": "21cdd88fac93c9dc834a51d62978b51453ca02eca68f223859aeca0ada99c3f2",
|
|
37
|
+
"bytes": 1288
|
|
38
|
+
},
|
|
39
|
+
"seeded_spec": ".pomaster/specs/hard/backend/15-data-model-protocol.md",
|
|
40
|
+
"seed_manifest": "packages/cli/seeds/manifest.json",
|
|
41
|
+
"d3_review": {
|
|
42
|
+
"excluded_from_batch": "B6C",
|
|
43
|
+
"exclusion_reason_at_seed": "池行行锚缺席(锚证据不足,保守排除待复核)",
|
|
44
|
+
"adjudication": "D3 逐卡复核 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核,裁定批 G 落地 2026-09-05):本卡原属 B6C 保守排除留池(排除理由:池行行锚缺席(锚证据不足,保守排除待复核));复核补锚回 MASTer 源取得行级证据,锚段=SHOULD,按强度入册(SHOULD 行锚 advisory 原样(池判一致;复核行锚补证))",
|
|
45
|
+
"anchor_evidence": "MASTer 15-data-model-protocol.md L33「- 应只在边界转换一次,并通过契约或 round-trip 测试验证。」",
|
|
46
|
+
"pool_enforcement_at_seed": "advisory"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"id": "POLICY.BE.MODEL.SINGLE_BOUNDARY_CONVERSION",
|
|
50
|
+
"kind": "policy",
|
|
51
|
+
"axis_profile": "policy_default",
|
|
52
|
+
"classification": "UNIVERSAL_POLICY",
|
|
53
|
+
"axes": {
|
|
54
|
+
"lifecycle": "PROPOSED",
|
|
55
|
+
"confidence": "UNRESOLVED",
|
|
56
|
+
"evidence": "PLANNED",
|
|
57
|
+
"change": "STABLE"
|
|
58
|
+
},
|
|
59
|
+
"title_zh": "模型边界单次转换",
|
|
60
|
+
"statement_zh": "模型转换应收敛到系统边界处发生且仅发生一次,并以契约校验或往返(round-trip)测试证明转换无损。",
|
|
61
|
+
"statement_en_keywords": [
|
|
62
|
+
"convert once at boundary",
|
|
63
|
+
"round-trip test",
|
|
64
|
+
"lossless mapping proof"
|
|
65
|
+
],
|
|
66
|
+
"applies_when": {
|
|
67
|
+
"lane": "backend",
|
|
68
|
+
"condition": "设计模型转换链路时",
|
|
69
|
+
"applicability_note": "设计模型转换链路时"
|
|
70
|
+
},
|
|
71
|
+
"enforcement": "advisory",
|
|
72
|
+
"authority": {
|
|
73
|
+
"owner": "HUMAN_OWNER",
|
|
74
|
+
"delegates": [],
|
|
75
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
76
|
+
"escalation_hint": "catalog-spec-decomposition"
|
|
77
|
+
},
|
|
78
|
+
"origin": "ingested",
|
|
79
|
+
"origin_note": "裁定批 G/D3-R2 D3 逐卡复核物化·R2 轮(原 B6C 保守排除卡补锚收编);statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"type": "design_seed",
|
|
83
|
+
"ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G3.yaml",
|
|
84
|
+
"captured_by": "agent:claude/spec-d-consolidation",
|
|
85
|
+
"locator": {
|
|
86
|
+
"candidate": "POLICY.BE.MODEL.SINGLE_BOUNDARY_CONVERSION",
|
|
87
|
+
"source_protocol": ".trellis/spec/backend/15-data-model-protocol.md",
|
|
88
|
+
"lines": "L33"
|
|
89
|
+
},
|
|
90
|
+
"clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"review_notes": [
|
|
94
|
+
"边界单次转换+契约/round-trip 验证在既有 228 条中无对应条目;与 POLICY.DERIVED.SINGLE_IMPLEMENTATION 互引不同轴(实现唯一 vs 转换次数唯一);与 WEB.API.TRANSPORT_VS_BUSINESS(B6b-I:传输与业务模型分界)正交互补。",
|
|
95
|
+
"D3-R2 补锚:MASTer 15 L33(SHOULD 段),advisory 原样(池判一致)。"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "id 域段待登记:BE(vocab-lock@v0.9-resolved policy_id_domains 35 段未含——PR-0010 后新用域段沿用候选注记先例,词汇表 PR 增补)",
|
|
5
|
+
"proposal": "词汇表 PR 增补新 id 域段至 catalog_layer_vocab.policy_id_domains(与 PR-0009/PR-0010 同轴追加,append-only)",
|
|
6
|
+
"locked_vocab_untouched": true
|
|
7
|
+
},
|
|
8
|
+
"x-spec-d-materialization": {
|
|
9
|
+
"status": "PROPOSAL",
|
|
10
|
+
"package": "裁定批 G/D3-R2 排除卡逐卡复核物化·R2 轮(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
|
|
11
|
+
"human_review_required": true,
|
|
12
|
+
"evidence": "PLANNED",
|
|
13
|
+
"provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
|
|
14
|
+
"group": "BE-G3",
|
|
15
|
+
"candidate_id": "POLICY.BE.SQL.INDEX_FOR_KNOWN_QUERIES",
|
|
16
|
+
"pool_statement_sha16": "b0e2648ecfa88930",
|
|
17
|
+
"curated_rule": "D3 逐卡复核批 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核;裁定批 G 收尾批):R1 入册 25(required 9 + advisory 16)后余量 17 张 advisory 全量入册——SHOULD 锚 13(卡层行锚缺席,复核回 MASTer 源取得行级证据:B6c BE-G4 六 + BE-G3 七)+ 非 12 段锚 4(B6b-II FE index 2 / B6c BE index 冲突优先序 1 / B6b-I FE20 Change Policy 锚 1,extra_master_sections 如实登记);全部 advisory(池判 required 卡强度只降不升);D6 合并口径 ≤25/批满足(17 ≤ 25);72 张总账=R1 25 + R2 17 + 维持排除 30",
|
|
18
|
+
"denominator": "MASTer(池卡锚)"
|
|
19
|
+
},
|
|
20
|
+
"x-b6-porting": {
|
|
21
|
+
"status": "PROPOSAL",
|
|
22
|
+
"batch": "D3-R2",
|
|
23
|
+
"human_review_required": true,
|
|
24
|
+
"classification_face": "policy",
|
|
25
|
+
"enforcement_axis": {
|
|
26
|
+
"source_sections": [
|
|
27
|
+
"SHOULD"
|
|
28
|
+
],
|
|
29
|
+
"rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
|
|
30
|
+
"asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
|
|
31
|
+
},
|
|
32
|
+
"extra_master_sections": [],
|
|
33
|
+
"denominator": "vendor",
|
|
34
|
+
"vendor_pin": {
|
|
35
|
+
"path": "pomaster/components/backend-hard-spec/assets/universal/19-query-index-sql-protocol.md",
|
|
36
|
+
"sha256": "60a660730a82a4f911bc6c18d5f6808a320f722df27d397a4e4b13835111610d",
|
|
37
|
+
"bytes": 1332
|
|
38
|
+
},
|
|
39
|
+
"seeded_spec": ".pomaster/specs/hard/backend/19-query-index-sql-protocol.md",
|
|
40
|
+
"seed_manifest": "packages/cli/seeds/manifest.json",
|
|
41
|
+
"d3_review": {
|
|
42
|
+
"excluded_from_batch": "B6C",
|
|
43
|
+
"exclusion_reason_at_seed": "池行行锚缺席(锚证据不足,保守排除待复核)",
|
|
44
|
+
"adjudication": "D3 逐卡复核 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核,裁定批 G 落地 2026-09-05):本卡原属 B6C 保守排除留池(排除理由:池行行锚缺席(锚证据不足,保守排除待复核));复核补锚回 MASTer 源取得行级证据,锚段=SHOULD,按强度入册(SHOULD 行锚 advisory 原样(池判一致;复核行锚补证))",
|
|
45
|
+
"anchor_evidence": "MASTer 19-query-index-sql-protocol.md L33「- 应让索引服务于已知查询,并记录写放大与存储取舍。」",
|
|
46
|
+
"pool_enforcement_at_seed": "advisory"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"id": "POLICY.BE.SQL.INDEX_FOR_KNOWN_QUERIES",
|
|
50
|
+
"kind": "policy",
|
|
51
|
+
"axis_profile": "policy_default",
|
|
52
|
+
"classification": "UNIVERSAL_POLICY",
|
|
53
|
+
"axes": {
|
|
54
|
+
"lifecycle": "PROPOSED",
|
|
55
|
+
"confidence": "UNRESOLVED",
|
|
56
|
+
"evidence": "PLANNED",
|
|
57
|
+
"change": "STABLE"
|
|
58
|
+
},
|
|
59
|
+
"title_zh": "索引服务已知查询",
|
|
60
|
+
"statement_zh": "建立索引前应先明确它服务哪些已知查询,并把写入放大与存储成本的取舍记录在案。",
|
|
61
|
+
"statement_en_keywords": [
|
|
62
|
+
"index serves known queries",
|
|
63
|
+
"write amplification",
|
|
64
|
+
"storage tradeoff record"
|
|
65
|
+
],
|
|
66
|
+
"applies_when": {
|
|
67
|
+
"lane": "backend",
|
|
68
|
+
"condition": "规划或评审索引时",
|
|
69
|
+
"applicability_note": "规划或评审索引时"
|
|
70
|
+
},
|
|
71
|
+
"enforcement": "advisory",
|
|
72
|
+
"authority": {
|
|
73
|
+
"owner": "HUMAN_OWNER",
|
|
74
|
+
"delegates": [],
|
|
75
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
76
|
+
"escalation_hint": "catalog-spec-decomposition"
|
|
77
|
+
},
|
|
78
|
+
"origin": "ingested",
|
|
79
|
+
"origin_note": "裁定批 G/D3-R2 D3 逐卡复核物化·R2 轮(原 B6C 保守排除卡补锚收编);statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"type": "design_seed",
|
|
83
|
+
"ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G3.yaml",
|
|
84
|
+
"captured_by": "agent:claude/spec-d-consolidation",
|
|
85
|
+
"locator": {
|
|
86
|
+
"candidate": "POLICY.BE.SQL.INDEX_FOR_KNOWN_QUERIES",
|
|
87
|
+
"source_protocol": ".trellis/spec/backend/19-query-index-sql-protocol.md",
|
|
88
|
+
"lines": "L33"
|
|
89
|
+
},
|
|
90
|
+
"clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"review_notes": [
|
|
94
|
+
"索引服务已知查询+写放大/存储取舍记录在既有 228 条中无对应条目;与 POLICY.PERF.* 族不同轴(观测/预算 vs 索引设计取真理);「取舍记录」义务与 ARCH.DECISION_TRADEOFF_RECORD(决策取舍留痕)语义呼应不同层。",
|
|
95
|
+
"D3-R2 补锚:MASTer 19 L33(SHOULD 段),advisory 原样(池判一致)。"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "id 域段待登记:BE(vocab-lock@v0.9-resolved policy_id_domains 35 段未含——PR-0010 后新用域段沿用候选注记先例,词汇表 PR 增补)",
|
|
5
|
+
"proposal": "词汇表 PR 增补新 id 域段至 catalog_layer_vocab.policy_id_domains(与 PR-0009/PR-0010 同轴追加,append-only)",
|
|
6
|
+
"locked_vocab_untouched": true
|
|
7
|
+
},
|
|
8
|
+
"x-spec-d-materialization": {
|
|
9
|
+
"status": "PROPOSAL",
|
|
10
|
+
"package": "裁定批 G/D3-R2 排除卡逐卡复核物化·R2 轮(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
|
|
11
|
+
"human_review_required": true,
|
|
12
|
+
"evidence": "PLANNED",
|
|
13
|
+
"provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
|
|
14
|
+
"group": "BE-G3",
|
|
15
|
+
"candidate_id": "POLICY.BE.STATE.SINGLE_RULE_SOURCE",
|
|
16
|
+
"pool_statement_sha16": "0fc34f43caa33b3d",
|
|
17
|
+
"curated_rule": "D3 逐卡复核批 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核;裁定批 G 收尾批):R1 入册 25(required 9 + advisory 16)后余量 17 张 advisory 全量入册——SHOULD 锚 13(卡层行锚缺席,复核回 MASTer 源取得行级证据:B6c BE-G4 六 + BE-G3 七)+ 非 12 段锚 4(B6b-II FE index 2 / B6c BE index 冲突优先序 1 / B6b-I FE20 Change Policy 锚 1,extra_master_sections 如实登记);全部 advisory(池判 required 卡强度只降不升);D6 合并口径 ≤25/批满足(17 ≤ 25);72 张总账=R1 25 + R2 17 + 维持排除 30",
|
|
18
|
+
"denominator": "MASTer(池卡锚)"
|
|
19
|
+
},
|
|
20
|
+
"x-b6-porting": {
|
|
21
|
+
"status": "PROPOSAL",
|
|
22
|
+
"batch": "D3-R2",
|
|
23
|
+
"human_review_required": true,
|
|
24
|
+
"classification_face": "policy",
|
|
25
|
+
"enforcement_axis": {
|
|
26
|
+
"source_sections": [
|
|
27
|
+
"SHOULD"
|
|
28
|
+
],
|
|
29
|
+
"rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
|
|
30
|
+
"asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
|
|
31
|
+
},
|
|
32
|
+
"extra_master_sections": [],
|
|
33
|
+
"denominator": "vendor",
|
|
34
|
+
"vendor_pin": {
|
|
35
|
+
"path": "pomaster/components/backend-hard-spec/assets/universal/14-business-rules-state-protocol.md",
|
|
36
|
+
"sha256": "fb255dd2331ac35e73a1ad222e4de4ec2f5fb3a09e675de0e1919d80022ac291",
|
|
37
|
+
"bytes": 1287
|
|
38
|
+
},
|
|
39
|
+
"seeded_spec": ".pomaster/specs/hard/backend/14-business-rules-state-protocol.md",
|
|
40
|
+
"seed_manifest": "packages/cli/seeds/manifest.json",
|
|
41
|
+
"d3_review": {
|
|
42
|
+
"excluded_from_batch": "B6C",
|
|
43
|
+
"exclusion_reason_at_seed": "池行行锚缺席(锚证据不足,保守排除待复核)",
|
|
44
|
+
"adjudication": "D3 逐卡复核 R2 轮(Owner 2026-09-05 裁定 D3=逐卡复核,裁定批 G 落地 2026-09-05):本卡原属 B6C 保守排除留池(排除理由:池行行锚缺席(锚证据不足,保守排除待复核));复核补锚回 MASTer 源取得行级证据,锚段=SHOULD,按强度入册(SHOULD 行锚 advisory 原样(池判一致;复核行锚补证))",
|
|
45
|
+
"anchor_evidence": "MASTer 14-business-rules-state-protocol.md L33「- 应集中表达同一权威规则并覆盖边界与非法转移测试。」",
|
|
46
|
+
"pool_enforcement_at_seed": "advisory"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"id": "POLICY.BE.STATE.SINGLE_RULE_SOURCE",
|
|
50
|
+
"kind": "policy",
|
|
51
|
+
"axis_profile": "policy_default",
|
|
52
|
+
"classification": "UNIVERSAL_POLICY",
|
|
53
|
+
"axes": {
|
|
54
|
+
"lifecycle": "PROPOSED",
|
|
55
|
+
"confidence": "UNRESOLVED",
|
|
56
|
+
"evidence": "PLANNED",
|
|
57
|
+
"change": "STABLE"
|
|
58
|
+
},
|
|
59
|
+
"title_zh": "权威规则单点表达",
|
|
60
|
+
"statement_zh": "同一权威业务规则应只在一处集中实现,并为合法边界值与非法转移路径补齐测试用例,避免各入口各自判断。",
|
|
61
|
+
"statement_en_keywords": [
|
|
62
|
+
"single authoritative rule expression",
|
|
63
|
+
"boundary tests",
|
|
64
|
+
"illegal transition coverage"
|
|
65
|
+
],
|
|
66
|
+
"applies_when": {
|
|
67
|
+
"lane": "backend",
|
|
68
|
+
"condition": "实现或重构业务规则时",
|
|
69
|
+
"applicability_note": "实现或重构业务规则时"
|
|
70
|
+
},
|
|
71
|
+
"enforcement": "advisory",
|
|
72
|
+
"authority": {
|
|
73
|
+
"owner": "HUMAN_OWNER",
|
|
74
|
+
"delegates": [],
|
|
75
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
76
|
+
"escalation_hint": "catalog-spec-decomposition"
|
|
77
|
+
},
|
|
78
|
+
"origin": "ingested",
|
|
79
|
+
"origin_note": "裁定批 G/D3-R2 D3 逐卡复核物化·R2 轮(原 B6C 保守排除卡补锚收编);statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
|
|
80
|
+
"sources": [
|
|
81
|
+
{
|
|
82
|
+
"type": "design_seed",
|
|
83
|
+
"ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G3.yaml",
|
|
84
|
+
"captured_by": "agent:claude/spec-d-consolidation",
|
|
85
|
+
"locator": {
|
|
86
|
+
"candidate": "POLICY.BE.STATE.SINGLE_RULE_SOURCE",
|
|
87
|
+
"source_protocol": ".trellis/spec/backend/14-business-rules-state-protocol.md",
|
|
88
|
+
"lines": "L33"
|
|
89
|
+
},
|
|
90
|
+
"clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"review_notes": [
|
|
94
|
+
"同一权威规则集中表达在既有 228 条中无对应条目;与 POLICY.DERIVED.SINGLE_IMPLEMENTATION(B6b-I:单一实现)相邻不同轴——彼管实现派生面,本管业务规则表达唯一权威源;边界与非法转移测试义务与同批 MODEL.SINGLE_BOUNDARY_CONVERSION 的 round-trip 验证正交,互引。",
|
|
95
|
+
"D3-R2 补锚:MASTer 14 L33(SHOULD 段),advisory 原样(池判一致)。"
|
|
96
|
+
]
|
|
97
|
+
}
|