pomaster 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/README.md +25 -10
  2. package/catalog/archetypes/archetype.frontend.error_taxonomy.json +13 -5
  3. package/catalog/archetypes/archetype.frontend.feature_oriented.json +1 -1
  4. package/catalog/archetypes/archetype.state.async_command.json +4 -4
  5. package/catalog/catalog-lock.draft.json +1120 -104
  6. package/catalog/gates/gate.be.api.contract_checks.json +2 -1
  7. package/catalog/gates/gate.be.chg.contract_change_checks.json +2 -1
  8. package/catalog/gates/gate.chg.prechange_checks.json +2 -1
  9. package/catalog/gates/gate.web.api.request_checks.json +2 -1
  10. package/catalog/gates/gate.web.grid.checks.json +2 -1
  11. package/catalog/knowledge/knowledge.api.example_stable_error_code.json +2 -1
  12. package/catalog/knowledge/knowledge.chg.example_compat_window.json +2 -1
  13. package/catalog/knowledge/knowledge.chg.example_prop_migration.json +2 -1
  14. package/catalog/knowledge/knowledge.fp.api.field_drift_no_contract.json +2 -1
  15. package/catalog/knowledge/knowledge.fp.api.per_page_http_client.json +2 -1
  16. package/catalog/knowledge/knowledge.fp.be.contract_drift.json +2 -1
  17. package/catalog/knowledge/knowledge.fp.chg.page_local_padding.json +2 -1
  18. package/catalog/knowledge/knowledge.fp.grid.global_td_width.json +2 -1
  19. package/catalog/knowledge/knowledge.web.api.example_get_entity_list.json +2 -1
  20. package/catalog/knowledge/knowledge.web.grid.example_column_preset.json +2 -1
  21. package/catalog/policies/authority.be.api_contract_ownership.json +2 -1
  22. package/catalog/policies/authority.be.contract_ownership.json +2 -1
  23. package/catalog/policies/authority.chg.change_owners.json +2 -1
  24. package/catalog/policies/authority.web.api.request_owners.json +2 -1
  25. package/catalog/policies/authority.web.grid.ownership.json +2 -1
  26. package/catalog/policies/policy.ai.change_plan_first.json +91 -0
  27. package/catalog/policies/policy.ai.fact_inference_separation.json +91 -0
  28. package/catalog/policies/policy.ai.read_search_verify_before_write.json +92 -0
  29. package/catalog/policies/policy.ai.rule_relaxation_approval.json +91 -0
  30. package/catalog/policies/policy.api.backward_compat_defaults.json +2 -1
  31. package/catalog/policies/policy.api.contract_impl_consistency.json +2 -1
  32. package/catalog/policies/policy.api.no_informal_contract.json +2 -1
  33. package/catalog/policies/policy.arch.adr_immutable_history.json +91 -0
  34. package/catalog/policies/policy.arch.decision_tradeoff_record.json +2 -1
  35. package/catalog/policies/policy.arch.no_convenience_over_boundary.json +93 -0
  36. package/catalog/policies/policy.arch.prefer_verifiable_option.json +92 -0
  37. package/catalog/policies/policy.authz.no_gating_proxy_trust.json +99 -0
  38. package/catalog/policies/policy.authz.permission_scope_expansion_gate.json +99 -0
  39. package/catalog/policies/policy.authz.server_five_factor_verification.json +101 -0
  40. package/catalog/policies/policy.be.conc.prefer_db_constraints.json +97 -0
  41. package/catalog/policies/policy.be.db.expand_migrate_contract.json +97 -0
  42. package/catalog/policies/policy.be.idem.key_payload_conflict.json +97 -0
  43. package/catalog/policies/policy.be.model.single_boundary_conversion.json +97 -0
  44. package/catalog/policies/policy.be.sql.index_for_known_queries.json +97 -0
  45. package/catalog/policies/policy.be.state.single_rule_source.json +97 -0
  46. package/catalog/policies/policy.be.txn.short_locks_compensation.json +96 -0
  47. package/catalog/policies/policy.bound.search_first_entry_only.json +91 -0
  48. package/catalog/policies/policy.boundary.validate_in_encode_out.json +92 -0
  49. package/catalog/policies/policy.cache.failure_mode_guards.json +93 -0
  50. package/catalog/policies/policy.cache.lifecycle_definition.json +2 -1
  51. package/catalog/policies/policy.cache.schema_versioning.json +91 -0
  52. package/catalog/policies/policy.cfg.config_attribute_completeness.json +95 -0
  53. package/catalog/policies/policy.cfg.key_rename_dual_read.json +92 -0
  54. package/catalog/policies/policy.cfg.no_secret_dispersal.json +90 -0
  55. package/catalog/policies/policy.cfg.production_safe_defaults.json +92 -0
  56. package/catalog/policies/policy.cfg.schema_backed_config.json +92 -0
  57. package/catalog/policies/policy.chg.affect_templates.json +2 -1
  58. package/catalog/policies/policy.chg.breaking_versioning.json +2 -1
  59. package/catalog/policies/policy.chg.compat_migration_rollback.json +2 -1
  60. package/catalog/policies/policy.chg.deprecate_before_delete.json +2 -1
  61. package/catalog/policies/policy.chg.fix_at_root_cause_level.json +2 -1
  62. package/catalog/policies/policy.chg.no_unrelated_changes.json +91 -0
  63. package/catalog/policies/policy.chg.observable_evolution.json +2 -1
  64. package/catalog/policies/policy.chg.prechange_consumer_scan.json +2 -1
  65. package/catalog/policies/policy.chg.staged_rollout.json +2 -1
  66. package/catalog/policies/policy.chg.sync_contract_docs_tests.json +2 -1
  67. package/catalog/policies/policy.conflict.priority_ladder.json +2 -1
  68. package/catalog/policies/policy.contract.no_invented_facts.json +93 -0
  69. package/catalog/policies/policy.dep.admission_six_dimension_check.json +2 -1
  70. package/catalog/policies/policy.dep.build_path_supply_chain.json +93 -0
  71. package/catalog/policies/policy.dep.change_surface_review.json +2 -1
  72. package/catalog/policies/policy.dep.introduction_review.json +2 -1
  73. package/catalog/policies/policy.dep.no_untrusted_source_no_lock_bypass.json +92 -0
  74. package/catalog/policies/policy.dep.time_boxed_urgent_exception.json +91 -0
  75. package/catalog/policies/policy.deploy.no_dev_env_as_production_fact.json +91 -0
  76. package/catalog/policies/policy.deploy.operational_capabilities.json +93 -0
  77. package/catalog/policies/policy.deploy.runtime_fact_record.json +97 -0
  78. package/catalog/policies/policy.derived.single_implementation.json +2 -1
  79. package/catalog/policies/policy.err.failure_five_part_mapping.json +101 -0
  80. package/catalog/policies/policy.err.no_internal_detail_exposure.json +97 -0
  81. package/catalog/policies/policy.err.published_code_immutable.json +98 -0
  82. package/catalog/policies/policy.evid.acceptance_binds_verifiable_evidence.json +92 -0
  83. package/catalog/policies/policy.evid.no_silent_gate_removal.json +90 -0
  84. package/catalog/policies/policy.evid.no_unverifiable_pass.json +92 -0
  85. package/catalog/policies/policy.flag.cleanup_after_full_rollout.json +94 -0
  86. package/catalog/policies/policy.flag.consistent_off_state.json +92 -0
  87. package/catalog/policies/policy.flag.kill_switch.json +91 -0
  88. package/catalog/policies/policy.flag.lifecycle_metadata.json +93 -0
  89. package/catalog/policies/policy.flag.not_a_permission.json +92 -0
  90. package/catalog/policies/policy.gate.p0_non_bypassable.json +92 -0
  91. package/catalog/policies/policy.gate.risk_factors_confirmed.json +93 -0
  92. package/catalog/policies/policy.guard.no_check_weakening.json +92 -0
  93. package/catalog/policies/policy.integration.call_definition_minimum.json +95 -0
  94. package/catalog/policies/policy.integration.fault_containment.json +94 -0
  95. package/catalog/policies/policy.job.lifecycle_definition.json +96 -0
  96. package/catalog/policies/policy.job.no_unmanaged_execution.json +92 -0
  97. package/catalog/policies/policy.job.operational_features.json +93 -0
  98. package/catalog/policies/policy.obs.actionable_signals.json +93 -0
  99. package/catalog/policies/policy.obs.alert_with_owner.json +91 -0
  100. package/catalog/policies/policy.obs.context_field_baseline.json +91 -0
  101. package/catalog/policies/policy.obs.correlation_context_minimum.json +2 -1
  102. package/catalog/policies/policy.obs.no_sensitive_or_unbounded_logging.json +92 -0
  103. package/catalog/policies/policy.obs.no_sensitive_raw_values.json +93 -0
  104. package/catalog/policies/policy.obs.rum_dimension_whitelist.json +2 -1
  105. package/catalog/policies/policy.obs.signal_change_impact.json +91 -0
  106. package/catalog/policies/policy.obs.source_map_access_control.json +92 -0
  107. package/catalog/policies/policy.obs.telemetry_lifecycle_declared.json +93 -0
  108. package/catalog/policies/policy.obs.trace_correlation.json +91 -0
  109. package/catalog/policies/policy.perf.budget_change_retest.json +91 -0
  110. package/catalog/policies/policy.perf.evidence_binding.json +95 -0
  111. package/catalog/policies/policy.perf.observation_dimensions.json +94 -0
  112. package/catalog/policies/policy.proc.checklist_change_policy.json +91 -0
  113. package/catalog/policies/policy.proc.pre_code_declaration.json +2 -1
  114. package/catalog/policies/policy.proc.scope_drift_reclassify.json +91 -0
  115. package/catalog/policies/policy.prv.processing_scope_re_review.json +97 -0
  116. package/catalog/policies/policy.prv.sensitive_data_six_facts.json +102 -0
  117. package/catalog/policies/policy.registry.human_fields_validated_decorrelated.json +93 -0
  118. package/catalog/policies/policy.rel.no_irreversible_unmonitored_full_release.json +91 -0
  119. package/catalog/policies/policy.rel.observability_before_ship.json +91 -0
  120. package/catalog/policies/policy.rel.pre_release_confirmation.json +2 -1
  121. package/catalog/policies/policy.rel.process_change_needs_drill_audit.json +91 -0
  122. package/catalog/policies/policy.rel.traceable_build.json +93 -0
  123. package/catalog/policies/policy.role.domain_decision_authority.json +2 -1
  124. package/catalog/policies/policy.role.human_signs_for_ai.json +93 -0
  125. package/catalog/policies/policy.sec.authn_policy_unified.json +91 -0
  126. package/catalog/policies/policy.sec.no_client_side_trust.json +92 -0
  127. package/catalog/policies/policy.sec.no_longterm_security_disable.json +91 -0
  128. package/catalog/policies/policy.sec.no_script_readable_credentials.json +91 -0
  129. package/catalog/policies/policy.sec.no_secrets_in_client_surface.json +91 -0
  130. package/catalog/policies/policy.sec.relaxation_approval.json +92 -0
  131. package/catalog/policies/policy.sec.security_relaxation_gate.json +92 -0
  132. package/catalog/policies/policy.sec.third_party_execution_register.json +2 -1
  133. package/catalog/policies/policy.sec.trust_boundary_enforcement.json +93 -0
  134. package/catalog/policies/policy.sec.upload_download_server_recheck.json +91 -0
  135. package/catalog/policies/policy.sec.url_source_allowlist.json +91 -0
  136. package/catalog/policies/policy.spec.admission_criteria.json +2 -1
  137. package/catalog/policies/policy.spec.derived_view_regeneration.json +2 -1
  138. package/catalog/policies/policy.spec.draft_not_baseline.json +2 -1
  139. package/catalog/policies/policy.spec.family_conflict_precedence.json +93 -0
  140. package/catalog/policies/policy.spec.file_structure_contract.json +2 -1
  141. package/catalog/policies/policy.spec.freeze_before_use.json +93 -0
  142. package/catalog/policies/policy.spec.metadata_required.json +2 -1
  143. package/catalog/policies/policy.spec.post_dev_backfill_classify.json +2 -1
  144. package/catalog/policies/policy.spec.primary_source_basis.json +93 -0
  145. package/catalog/policies/policy.spec.procedural_record_not_surrogate.json +2 -1
  146. package/catalog/policies/policy.spec.semantic_identity.json +2 -1
  147. package/catalog/policies/policy.spec.unresolved_ledger_gate.json +2 -1
  148. package/catalog/policies/policy.stack.derived_store_not_authority.json +93 -0
  149. package/catalog/policies/policy.stack.dual_web_stack_boundary.json +93 -0
  150. package/catalog/policies/policy.stack.entry_chain_recorded.json +93 -0
  151. package/catalog/policies/policy.stack.entry_limits_aligned.json +94 -0
  152. package/catalog/policies/policy.stack.local_form_not_prod_fact.json +93 -0
  153. package/catalog/policies/policy.stack.multi_datastore_ownership.json +93 -0
  154. package/catalog/policies/policy.stack.no_implicit_selection.json +2 -1
  155. package/catalog/policies/policy.stack.persistence_coexistence_scope.json +93 -0
  156. package/catalog/policies/policy.stack.toolchain_versions_pinned.json +95 -0
  157. package/catalog/policies/policy.stack.upgrade_compat_verified.json +93 -0
  158. package/catalog/policies/policy.struct.module_entry_dependency_declared.json +92 -0
  159. package/catalog/policies/policy.struct.no_unexplained_top_level_dir.json +91 -0
  160. package/catalog/policies/policy.struct.reuse_proven_structure.json +91 -0
  161. package/catalog/policies/policy.test.control_nondeterminism_keep_diagnosis.json +91 -0
  162. package/catalog/policies/policy.test.isolation_and_cleanup.json +93 -0
  163. package/catalog/policies/policy.test.no_synthetic_stability.json +92 -0
  164. package/catalog/policies/policy.test.pyramid_and_ci_matrix.json +92 -0
  165. package/catalog/policies/policy.test.removal_justification.json +91 -0
  166. package/catalog/policies/policy.test.removal_needs_substitute_evidence.json +91 -0
  167. package/catalog/policies/policy.test.risk_driven_plan.json +92 -0
  168. package/catalog/policies/policy.test.stable_observable_assertions.json +92 -0
  169. package/catalog/policies/policy.tool.discoverable_toolchain.json +92 -0
  170. package/catalog/policies/policy.tool.no_hand_edit_generated_no_ci_drift.json +91 -0
  171. package/catalog/policies/policy.tool.no_vendored_body_edits.json +94 -0
  172. package/catalog/policies/policy.tool.scoped_scan_boundary.json +2 -1
  173. package/catalog/policies/policy.tool.upgrade_verify_lock_rollback.json +92 -0
  174. package/catalog/policies/policy.web.api.auth_app_client_split.json +2 -1
  175. package/catalog/policies/policy.web.api.client_change_impact.json +2 -1
  176. package/catalog/policies/policy.web.api.domain_api_only.json +2 -1
  177. package/catalog/policies/policy.web.api.error_normalization.json +2 -1
  178. package/catalog/policies/policy.web.api.generated_client.json +2 -1
  179. package/catalog/policies/policy.web.api.late_result_guard.json +2 -1
  180. package/catalog/policies/policy.web.api.mutation_idempotency.json +2 -1
  181. package/catalog/policies/policy.web.api.no_network_optimism.json +2 -1
  182. package/catalog/policies/policy.web.api.query_cancel_stale_drop.json +2 -1
  183. package/catalog/policies/policy.web.api.request_infrastructure.json +2 -1
  184. package/catalog/policies/policy.web.api.retry_discipline.json +2 -1
  185. package/catalog/policies/policy.web.api.session_recovery_split.json +2 -1
  186. package/catalog/policies/policy.web.api.single_http_client.json +2 -1
  187. package/catalog/policies/policy.web.api.single_loading_source.json +2 -1
  188. package/catalog/policies/policy.web.api.transport_vs_business.json +2 -1
  189. package/catalog/policies/policy.web.api.trusted_endpoint_source.json +2 -1
  190. package/catalog/policies/policy.web.api.typed_domain_naming.json +2 -1
  191. package/catalog/policies/policy.web.arch.layer_isolation.json +2 -1
  192. package/catalog/policies/policy.web.arch.naming_conventions.json +2 -1
  193. package/catalog/policies/policy.web.arch.public_api_barrel.json +2 -1
  194. package/catalog/policies/policy.web.chg.controlled_change_triggers.json +2 -1
  195. package/catalog/policies/policy.web.comp.no_trivial_or_god_component.json +91 -0
  196. package/catalog/policies/policy.web.comp.public_contract_completeness.json +93 -0
  197. package/catalog/policies/policy.web.copy.action_object_clarity.json +92 -0
  198. package/catalog/policies/policy.web.copy.enumerable_placement.json +91 -0
  199. package/catalog/policies/policy.web.copy.error_next_step.json +92 -0
  200. package/catalog/policies/policy.web.copy.suppression_ledger_discipline.json +2 -1
  201. package/catalog/policies/policy.web.grid.column_schema_fields.json +2 -1
  202. package/catalog/policies/policy.web.grid.config_isolation.json +2 -1
  203. package/catalog/policies/policy.web.grid.freeze_key_columns.json +2 -1
  204. package/catalog/policies/policy.web.grid.interaction_registry.json +2 -1
  205. package/catalog/policies/policy.web.grid.keyboard_clipboard.json +2 -1
  206. package/catalog/policies/policy.web.grid.schema_driven_shell.json +2 -1
  207. package/catalog/policies/policy.web.grid.schema_versioning.json +2 -1
  208. package/catalog/policies/policy.web.grid.server_ops_virtualization.json +2 -1
  209. package/catalog/policies/policy.web.grid.shell_change_matrix.json +2 -1
  210. package/catalog/policies/policy.web.grid.width_fix_ladder.json +2 -1
  211. package/catalog/policies/policy.web.handoff.state_matrix_full.json +94 -0
  212. package/catalog/policies/policy.web.i18n.copy_key_discipline.json +92 -0
  213. package/catalog/policies/policy.web.i18n.raw_value_for_compute.json +91 -0
  214. package/catalog/policies/policy.web.page.region_consistency.json +93 -0
  215. package/catalog/policies/policy.web.perf.budget_skeleton.json +2 -1
  216. package/catalog/policies/policy.web.style.ownership_matrix.json +2 -1
  217. package/catalog/policies/policy.web.track.attempt_result_correlation.json +91 -0
  218. package/catalog/policies/policy.web.track.consent_lifecycle.json +2 -1
  219. package/catalog/policies/policy.web.track.no_synthetic_actions.json +92 -0
  220. package/catalog/policies/policy.web.track.privacy_default_deny.json +2 -1
  221. package/catalog/policies/policy.web.track.stable_event_keys.json +2 -1
  222. package/catalog/policies/policy.web.track.typed_client_validation.json +91 -0
  223. package/catalog/policies/policy.web.uiux.provider_evidence_not_business_truth.json +2 -1
  224. package/catalog/policies/policy.wf.no_planned_as_verified.json +91 -0
  225. package/catalog/policies/policy.wf.task_facts_preconfirm.json +94 -0
  226. package/catalog/policies/profile.baseline.java_enterprise_default.json +96 -0
  227. package/catalog/sensors/sensor.browser.deterministic.json +2 -1
  228. package/catalog/sensors/sensor.browser.interactive.json +2 -1
  229. package/catalog/sensors/sensor.build.static.json +2 -1
  230. package/catalog/sensors/sensor.contract.conformance.json +2 -1
  231. package/catalog/sensors/sensor.performance.budget.json +2 -1
  232. package/catalog/sensors/sensor.production.metric.json +2 -1
  233. package/catalog/tools/seed_b6b_frontend.py +1424 -0
  234. package/catalog/tools/seed_b6c_backend.py +1495 -0
  235. package/catalog/tools/seed_b6d_baseline.py +620 -0
  236. package/catalog/tools/seed_b6e_evidence.py +1305 -0
  237. package/catalog/tools/seed_d3_review.py +1105 -0
  238. package/catalog/tools/seed_v06_batch2_materials.py +27 -18
  239. package/dist/bin.js +31967 -24201
  240. package/package.json +2 -1
  241. package/seeds/baseline/backend/api-contract.md +26 -0
  242. package/seeds/baseline/backend/architecture.md +31 -0
  243. package/seeds/baseline/backend/data-access.md +31 -0
  244. package/seeds/baseline/backend/directory-structure.md +11 -0
  245. package/seeds/baseline/backend/integration-runtime.md +21 -0
  246. package/seeds/baseline/backend/quality.md +31 -0
  247. package/seeds/baseline/backend/stack.yaml +13 -0
  248. package/seeds/baseline/backend/transaction-concurrency.md +26 -0
  249. package/seeds/baseline/data/lineage.md +11 -0
  250. package/seeds/baseline/data/migration.md +11 -0
  251. package/seeds/baseline/data/model.md +31 -0
  252. package/seeds/baseline/data/precision-units.md +31 -0
  253. package/seeds/baseline/data/quality.md +31 -0
  254. package/seeds/baseline/frontend/api-and-error.md +21 -0
  255. package/seeds/baseline/frontend/architecture.md +26 -0
  256. package/seeds/baseline/frontend/design-system.md +21 -0
  257. package/seeds/baseline/frontend/directory-structure.md +16 -0
  258. package/seeds/baseline/frontend/quality.md +26 -0
  259. package/seeds/baseline/frontend/stack.yaml +17 -0
  260. package/seeds/baseline/frontend/state-and-data.md +26 -0
  261. package/seeds/baseline/manifest.yaml +32 -0
  262. package/seeds/baseline/platform/delivery.md +36 -0
  263. package/seeds/baseline/platform/environment.md +11 -0
  264. package/seeds/baseline/platform/observability.md +31 -0
  265. package/seeds/baseline/platform/security.md +26 -0
  266. package/seeds/manifest.json +2006 -0
  267. package/seeds/specs/evidence/accessibility.md +89 -0
  268. package/seeds/specs/evidence/architecture.md +89 -0
  269. package/seeds/specs/evidence/browser-e2e.md +91 -0
  270. package/seeds/specs/evidence/build.md +91 -0
  271. package/seeds/specs/evidence/business-acceptance.md +89 -0
  272. package/seeds/specs/evidence/complexity-crap.md +97 -0
  273. package/seeds/specs/evidence/contract.md +89 -0
  274. package/seeds/specs/evidence/coverage.md +91 -0
  275. package/seeds/specs/evidence/data-migration.md +91 -0
  276. package/seeds/specs/evidence/dead-code-duplicate.md +89 -0
  277. package/seeds/specs/evidence/dependency-supply-chain.md +89 -0
  278. package/seeds/specs/evidence/index.md +55 -0
  279. package/seeds/specs/evidence/mutation.md +89 -0
  280. package/seeds/specs/evidence/performance.md +89 -0
  281. package/seeds/specs/evidence/release.md +91 -0
  282. package/seeds/specs/evidence/runtime-observability.md +91 -0
  283. package/seeds/specs/evidence/security.md +89 -0
  284. package/seeds/specs/evidence/typecheck-lint.md +91 -0
  285. package/seeds/specs/evidence/unit-component-integration.md +91 -0
  286. package/seeds/specs/evidence/visual-regression.md +89 -0
  287. package/seeds/specs/hard/backend/01-architecture-governance-protocol.md +68 -0
  288. package/seeds/specs/hard/backend/02-project-structure-governance-protocol.md +68 -0
  289. package/seeds/specs/hard/backend/03-directory-boundary-protocol.md +68 -0
  290. package/seeds/specs/hard/backend/04-layering-architecture-protocol.md +68 -0
  291. package/seeds/specs/hard/backend/05-task-workflow-protocol.md +68 -0
  292. package/seeds/specs/hard/backend/06-ai-generated-code-protocol.md +68 -0
  293. package/seeds/specs/hard/backend/07-evidence-acceptance-protocol.md +68 -0
  294. package/seeds/specs/hard/backend/08-contract-change-protocol.md +68 -0
  295. package/seeds/specs/hard/backend/09-role-responsibility-protocol.md +68 -0
  296. package/seeds/specs/hard/backend/10-security-protocol.md +68 -0
  297. package/seeds/specs/hard/backend/11-environment-configuration-protocol.md +67 -0
  298. package/seeds/specs/hard/backend/12-api-contract-protocol.md +68 -0
  299. package/seeds/specs/hard/backend/13-privacy-data-lifecycle-protocol.md +68 -0
  300. package/seeds/specs/hard/backend/14-business-rules-state-protocol.md +68 -0
  301. package/seeds/specs/hard/backend/15-data-model-protocol.md +68 -0
  302. package/seeds/specs/hard/backend/16-error-code-protocol.md +68 -0
  303. package/seeds/specs/hard/backend/17-permission-authorization-protocol.md +68 -0
  304. package/seeds/specs/hard/backend/18-database-schema-migration-protocol.md +68 -0
  305. package/seeds/specs/hard/backend/19-query-index-sql-protocol.md +68 -0
  306. package/seeds/specs/hard/backend/20-transaction-boundary-protocol.md +68 -0
  307. package/seeds/specs/hard/backend/21-concurrency-locking-protocol.md +68 -0
  308. package/seeds/specs/hard/backend/22-idempotency-protocol.md +68 -0
  309. package/seeds/specs/hard/backend/23-cache-redis-consistency-protocol.md +68 -0
  310. package/seeds/specs/hard/backend/24-external-integration-resilience-protocol.md +68 -0
  311. package/seeds/specs/hard/backend/25-async-job-scheduler-protocol.md +68 -0
  312. package/seeds/specs/hard/backend/26-engineering-tooling-protocol.md +68 -0
  313. package/seeds/specs/hard/backend/27-dependency-supply-chain-protocol.md +68 -0
  314. package/seeds/specs/hard/backend/28-testing-protocol.md +68 -0
  315. package/seeds/specs/hard/backend/29-observability-logging-tracing-protocol.md +68 -0
  316. package/seeds/specs/hard/backend/30-performance-capacity-protocol.md +68 -0
  317. package/seeds/specs/hard/backend/31-runtime-deployment-protocol.md +68 -0
  318. package/seeds/specs/hard/backend/32-release-versioning-rollback-protocol.md +68 -0
  319. package/seeds/specs/hard/backend/index.md +177 -0
  320. package/seeds/specs/hard/frontend/01-development-checklist-protocol.md +86 -0
  321. package/seeds/specs/hard/frontend/02-ai-generated-code-protocol.md +82 -0
  322. package/seeds/specs/hard/frontend/03-acceptance-gate-protocol.md +86 -0
  323. package/seeds/specs/hard/frontend/04-security-protocol.md +283 -0
  324. package/seeds/specs/hard/frontend/05-environment-configuration-protocol.md +80 -0
  325. package/seeds/specs/hard/frontend/06-change-governance-protocol.md +90 -0
  326. package/seeds/specs/hard/frontend/07-frontend-backend-communication-protocol.md +219 -0
  327. package/seeds/specs/hard/frontend/08-role-responsibility-protocol.md +80 -0
  328. package/seeds/specs/hard/frontend/09-module-boundary-protocol.md +81 -0
  329. package/seeds/specs/hard/frontend/10-engineering-tooling-protocol.md +89 -0
  330. package/seeds/specs/hard/frontend/11-dependency-package-management-protocol.md +87 -0
  331. package/seeds/specs/hard/frontend/12-business-rules-protocol.md +79 -0
  332. package/seeds/specs/hard/frontend/13-monetary-precision-protocol.md +81 -0
  333. package/seeds/specs/hard/frontend/14-data-model-protocol.md +85 -0
  334. package/seeds/specs/hard/frontend/15-request-api-protocol.md +87 -0
  335. package/seeds/specs/hard/frontend/16-error-handling-protocol.md +79 -0
  336. package/seeds/specs/hard/frontend/17-permission-protocol.md +79 -0
  337. package/seeds/specs/hard/frontend/18-state-management-protocol.md +88 -0
  338. package/seeds/specs/hard/frontend/19-cache-protocol.md +79 -0
  339. package/seeds/specs/hard/frontend/20-testing-protocol.md +88 -0
  340. package/seeds/specs/hard/frontend/21-design-system-protocol.md +79 -0
  341. package/seeds/specs/hard/frontend/22-theme-protocol.md +79 -0
  342. package/seeds/specs/hard/frontend/23-accessibility-protocol.md +189 -0
  343. package/seeds/specs/hard/frontend/24-component-protocol.md +80 -0
  344. package/seeds/specs/hard/frontend/25-page-structure-protocol.md +79 -0
  345. package/seeds/specs/hard/frontend/26-style-layout-protocol.md +80 -0
  346. package/seeds/specs/hard/frontend/27-rendering-state-protocol.md +81 -0
  347. package/seeds/specs/hard/frontend/28-form-protocol.md +88 -0
  348. package/seeds/specs/hard/frontend/29-routing-url-protocol.md +79 -0
  349. package/seeds/specs/hard/frontend/30-data-grid-protocol.md +83 -0
  350. package/seeds/specs/hard/frontend/31-performance-protocol.md +137 -0
  351. package/seeds/specs/hard/frontend/32-file-import-export-protocol.md +80 -0
  352. package/seeds/specs/hard/frontend/33-release-versioning-protocol.md +79 -0
  353. package/seeds/specs/hard/frontend/34-monitoring-logging-protocol.md +128 -0
  354. package/seeds/specs/hard/frontend/35-mock-protocol.md +97 -0
  355. package/seeds/specs/hard/frontend/36-feature-flag-protocol.md +79 -0
  356. package/seeds/specs/hard/frontend/37-browser-device-compatibility-protocol.md +83 -0
  357. package/seeds/specs/hard/frontend/38-internationalization-protocol.md +243 -0
  358. package/seeds/specs/hard/frontend/39-copywriting-protocol.md +79 -0
  359. package/seeds/specs/hard/frontend/40-analytics-protocol.md +98 -0
  360. package/seeds/specs/hard/frontend/41-design-handoff-protocol.md +80 -0
  361. package/seeds/specs/hard/frontend/42-browser-runtime-lifecycle-protocol.md +86 -0
  362. package/seeds/specs/hard/frontend/43-time-temporal-protocol.md +86 -0
  363. package/seeds/specs/hard/frontend/44-privacy-data-lifecycle-protocol.md +87 -0
  364. package/seeds/specs/hard/frontend/45-browser-storage-protocol.md +87 -0
  365. package/seeds/specs/hard/frontend/index.md +308 -0
  366. package/seeds/specs/hard/stacks/java/index.md +20 -0
  367. package/seeds/specs/hard/stacks/java/java-language-overlay.md +35 -0
  368. package/seeds/specs/hard/stacks/jpa/index.md +20 -0
  369. package/seeds/specs/hard/stacks/jpa/jpa-persistence-overlay.md +35 -0
  370. package/seeds/specs/hard/stacks/kubernetes-ingress/index.md +20 -0
  371. package/seeds/specs/hard/stacks/kubernetes-ingress/kubernetes-ingress-overlay.md +35 -0
  372. package/seeds/specs/hard/stacks/messaging/index.md +20 -0
  373. package/seeds/specs/hard/stacks/messaging/messaging-reliability-overlay.md +35 -0
  374. package/seeds/specs/hard/stacks/mybatis/index.md +20 -0
  375. package/seeds/specs/hard/stacks/mybatis/mybatis-persistence-overlay.md +35 -0
  376. package/seeds/specs/hard/stacks/mysql/index.md +20 -0
  377. package/seeds/specs/hard/stacks/mysql/mysql-database-overlay.md +35 -0
  378. package/seeds/specs/hard/stacks/nginx/index.md +20 -0
  379. package/seeds/specs/hard/stacks/nginx/nginx-proxy-overlay.md +35 -0
  380. package/seeds/specs/hard/stacks/postgresql/index.md +20 -0
  381. package/seeds/specs/hard/stacks/postgresql/postgresql-database-overlay.md +35 -0
  382. package/seeds/specs/hard/stacks/redis/index.md +20 -0
  383. package/seeds/specs/hard/stacks/redis/redis-cache-overlay.md +35 -0
  384. package/seeds/specs/hard/stacks/spring-batch/index.md +20 -0
  385. package/seeds/specs/hard/stacks/spring-batch/spring-batch-job-overlay.md +35 -0
  386. package/seeds/specs/hard/stacks/spring-boot/index.md +20 -0
  387. package/seeds/specs/hard/stacks/spring-boot/spring-boot-application-overlay.md +35 -0
  388. package/seeds/specs/hard/stacks/spring-mvc/index.md +20 -0
  389. package/seeds/specs/hard/stacks/spring-mvc/spring-mvc-web-overlay.md +35 -0
  390. package/seeds/specs/hard/stacks/spring-webflux/index.md +20 -0
  391. package/seeds/specs/hard/stacks/spring-webflux/spring-webflux-reactive-overlay.md +35 -0
  392. package/seeds/specs/hard/stacks/tomcat/index.md +20 -0
  393. package/seeds/specs/hard/stacks/tomcat/tomcat-runtime-overlay.md +35 -0
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
5
5
  "proposal": "词汇表 PR 登记 GATE. 前缀与 gate_recipe kind;备选落法:gate recipe 住 catalog/gates/ 非 truth 对象层,门禁定义锚沿用 03-gate-result.schema gate_def 的 POLICY.GATE.<NAME>@semver 词形(两种落法待 Owner 裁决,meta.vocab_findings[1])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):GATE. 前缀按注记备选落法定案=catalog 物料标识词形(gates/ 条目住 catalog 面非 truth 对象层——D-2「Catalog 不是第二套 Project Truth」;词形随 catalog_layer_vocab.material_id_prefixes 收编,非 governed 前缀不过 parseGovernedId);gate_recipe kind 在 catalog_layer_vocab.catalog_kind 在册;本 pending 注记就此转正(历史记录原样保留)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
5
5
  "proposal": "词汇表 PR 登记 GATE. 前缀与 gate_recipe kind;备选落法:gate recipe 住 catalog/gates/ 非 truth 对象层,门禁定义锚沿用 03-gate-result.schema gate_def 的 POLICY.GATE.<NAME>@semver 词形(两种落法待 Owner 裁决,meta.vocab_findings[1])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):GATE. 前缀按注记备选落法定案=catalog 物料标识词形(gates/ 条目住 catalog 面非 truth 对象层——D-2「Catalog 不是第二套 Project Truth」;词形随 catalog_layer_vocab.material_id_prefixes 收编,非 governed 前缀不过 parseGovernedId);gate_recipe kind 在 catalog_layer_vocab.catalog_kind 在册;本 pending 注记就此转正(历史记录原样保留)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
5
5
  "proposal": "词汇表 PR 登记 GATE. 前缀与 gate_recipe kind;备选落法:gate recipe 住 catalog/gates/ 非 truth 对象层,门禁定义锚沿用 03-gate-result.schema gate_def 的 POLICY.GATE.<NAME>@semver 词形(两种落法待 Owner 裁决,meta.vocab_findings[1])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):GATE. 前缀按注记备选落法定案=catalog 物料标识词形(gates/ 条目住 catalog 面非 truth 对象层——D-2「Catalog 不是第二套 Project Truth」;词形随 catalog_layer_vocab.material_id_prefixes 收编,非 governed 前缀不过 parseGovernedId);gate_recipe kind 在 catalog_layer_vocab.catalog_kind 在册;本 pending 注记就此转正(历史记录原样保留)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
5
5
  "proposal": "词汇表 PR 登记 GATE. 前缀与 gate_recipe kind;备选落法:gate recipe 住 catalog/gates/ 非 truth 对象层,门禁定义锚沿用 03-gate-result.schema gate_def 的 POLICY.GATE.<NAME>@semver 词形(两种落法待 Owner 裁决,meta.vocab_findings[1])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):GATE. 前缀按注记备选落法定案=catalog 物料标识词形(gates/ 条目住 catalog 面非 truth 对象层——D-2「Catalog 不是第二套 Project Truth」;词形随 catalog_layer_vocab.material_id_prefixes 收编,非 governed 前缀不过 parseGovernedId);gate_recipe kind 在 catalog_layer_vocab.catalog_kind 在册;本 pending 注记就此转正(历史记录原样保留)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
5
5
  "proposal": "词汇表 PR 登记 GATE. 前缀与 gate_recipe kind;备选落法:gate recipe 住 catalog/gates/ 非 truth 对象层,门禁定义锚沿用 03-gate-result.schema gate_def 的 POLICY.GATE.<NAME>@semver 词形(两种落法待 Owner 裁决,meta.vocab_findings[1])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):GATE. 前缀按注记备选落法定案=catalog 物料标识词形(gates/ 条目住 catalog 面非 truth 对象层——D-2「Catalog 不是第二套 Project Truth」;词形随 catalog_layer_vocab.material_id_prefixes 收编,非 governed 前缀不过 parseGovernedId);gate_recipe kind 在 catalog_layer_vocab.catalog_kind 在册;本 pending 注记就此转正(历史记录原样保留)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "no_new_enum__confirm_only",
4
4
  "finding": "knowledge_entry kind 已在 vocab-lock kinds_registry.truth_bodies——试点纪律所称『knowledge 无正式 kind』与 vocab-lock 实况不符",
5
5
  "proposal": "无需新 kind;payload 变体(KNOWLEDGE_PATTERN/FAILURE_PATTERN)作为 knowledge_entry 的 kind profile 承载,提请词汇表 PR 时一并确认,不新增枚举值(meta.vocab_findings[2])",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 复核闭合(vocab-lock@v0.8-resolved):knowledge_entry kind 已在 kinds_registry.truth_bodies(零词值改动);knowledge 词形域段随 catalog_layer_vocab.authority_knowledge_profile_domains 收编登记;本 confirm-only 注记就此闭合"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
5
  "proposal": "词汇表 PR 登记 policy kind;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
5
  "proposal": "词汇表 PR 登记 policy kind;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
5
  "proposal": "词汇表 PR 登记 policy kind;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
5
  "proposal": "词汇表 PR 登记 policy kind;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
5
  "proposal": "词汇表 PR 登记 policy kind;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",
@@ -0,0 +1,91 @@
1
+ {
2
+ "x-vocab-pr": {
3
+ "status": "vocab_pr_candidate",
4
+ "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world);新 id 域段待登记:AI",
5
+ "proposal": "词汇表 PR 登记 policy kind 及新域段;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(与前批 45+25 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
8
+ },
9
+ "x-spec-d-materialization": {
10
+ "status": "PROPOSAL",
11
+ "package": "B6b-I FE 播种移植(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
12
+ "human_review_required": true,
13
+ "evidence": "PLANNED",
14
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
15
+ "group": "FE-G1",
16
+ "candidate_id": "POLICY.AI.CHANGE_PLAN_FIRST",
17
+ "density_rank": null,
18
+ "density_score": 32.5,
19
+ "pool_statement_sha16": "a657668433bbaedc",
20
+ "curated_rule": "B6b-I 分母(FE 01-23)required 池(ELIGIBLE 未物化)按池密度序取前 22 + advisory 池(SHOULD 源 backlog policy 卡)按同公式密度序取前 3 = 25(D5 上限);UNIVERSAL + UNIVERSAL_POLICY + 无 uncertainty + 非 project_scope + 非重复",
21
+ "denominator": "MASTer(池卡 source_protocol 锚)"
22
+ },
23
+ "x-b6-porting": {
24
+ "status": "PROPOSAL",
25
+ "batch": "B6B-1",
26
+ "human_review_required": true,
27
+ "enforcement_axis": {
28
+ "source_sections": [
29
+ "MUST"
30
+ ],
31
+ "rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
32
+ "asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
33
+ },
34
+ "extra_master_sections": [],
35
+ "denominator": "vendor",
36
+ "vendor_pin": {
37
+ "path": "pomaster/components/frontend-hard-spec/assets/universal/02-ai-generated-code-protocol.md",
38
+ "sha256": "a80ea1c51c9afc0b96001cfffa0675edafb1572563652840bcf88770d81203c8",
39
+ "bytes": 2130
40
+ },
41
+ "seeded_spec": ".pomaster/specs/hard/frontend/02-ai-generated-code-protocol.md",
42
+ "seed_manifest": "packages/cli/seeds/manifest.json"
43
+ },
44
+ "id": "POLICY.AI.CHANGE_PLAN_FIRST",
45
+ "kind": "policy",
46
+ "axis_profile": "policy_default",
47
+ "classification": "UNIVERSAL_POLICY",
48
+ "axes": {
49
+ "lifecycle": "PROPOSED",
50
+ "confidence": "UNRESOLVED",
51
+ "evidence": "PLANNED",
52
+ "change": "STABLE"
53
+ },
54
+ "title_zh": "AI 编码先出变更计划",
55
+ "statement_zh": "AI 参与编码前必须先读取适用协议,并产出一份写明依据、范围与验证方式的变更计划。",
56
+ "statement_en_keywords": [
57
+ "change plan first",
58
+ "read protocols before coding",
59
+ "ai declared scope and validation"
60
+ ],
61
+ "applies_when": {
62
+ "lane": "any",
63
+ "condition": "AI 代理执行分析、生成、修改、评审或验证时",
64
+ "applicability_note": "AI 代理执行分析、生成、修改、评审或验证时"
65
+ },
66
+ "enforcement": "required_when_applicable",
67
+ "authority": {
68
+ "owner": "HUMAN_OWNER",
69
+ "delegates": [],
70
+ "write_policy": "EVOLUTION_CHANNEL",
71
+ "escalation_hint": "catalog-spec-decomposition"
72
+ },
73
+ "origin": "ingested",
74
+ "origin_note": "B6b-I FE 播种移植物化;statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
75
+ "sources": [
76
+ {
77
+ "type": "design_seed",
78
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G1.yaml",
79
+ "captured_by": "agent:claude/spec-d-consolidation",
80
+ "locator": {
81
+ "candidate": "POLICY.AI.CHANGE_PLAN_FIRST",
82
+ "source_protocol": ".trellis/spec/frontend/02-ai-generated-code-protocol.md",
83
+ "lines": "L19"
84
+ },
85
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
86
+ }
87
+ ],
88
+ "review_notes": [
89
+ "AI 编码前置声明在既有 143 条中无对应条目(POLICY.PROC.PRE_CODE_DECLARATION 为 lane 中性开工声明、适用任何实现者;本条管 AI 参与面的协议读取与计划产出义务),语义相邻互引不合并。"
90
+ ]
91
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "x-vocab-pr": {
3
+ "status": "vocab_pr_candidate",
4
+ "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world);新 id 域段待登记:AI",
5
+ "proposal": "词汇表 PR 登记 policy kind 及新域段;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(与前批 45+25 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
8
+ },
9
+ "x-spec-d-materialization": {
10
+ "status": "PROPOSAL",
11
+ "package": "B6b-I FE 播种移植(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
12
+ "human_review_required": true,
13
+ "evidence": "PLANNED",
14
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
15
+ "group": "FE-G1",
16
+ "candidate_id": "POLICY.AI.FACT_INFERENCE_SEPARATION",
17
+ "density_rank": null,
18
+ "density_score": 32.94,
19
+ "pool_statement_sha16": "ec82d6409ef7484b",
20
+ "curated_rule": "B6b-I 分母(FE 01-23)required 池(ELIGIBLE 未物化)按池密度序取前 22 + advisory 池(SHOULD 源 backlog policy 卡)按同公式密度序取前 3 = 25(D5 上限);UNIVERSAL + UNIVERSAL_POLICY + 无 uncertainty + 非 project_scope + 非重复",
21
+ "denominator": "MASTer(池卡 source_protocol 锚)"
22
+ },
23
+ "x-b6-porting": {
24
+ "status": "PROPOSAL",
25
+ "batch": "B6B-1",
26
+ "human_review_required": true,
27
+ "enforcement_axis": {
28
+ "source_sections": [
29
+ "MUST"
30
+ ],
31
+ "rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
32
+ "asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
33
+ },
34
+ "extra_master_sections": [],
35
+ "denominator": "vendor",
36
+ "vendor_pin": {
37
+ "path": "pomaster/components/frontend-hard-spec/assets/universal/02-ai-generated-code-protocol.md",
38
+ "sha256": "a80ea1c51c9afc0b96001cfffa0675edafb1572563652840bcf88770d81203c8",
39
+ "bytes": 2130
40
+ },
41
+ "seeded_spec": ".pomaster/specs/hard/frontend/02-ai-generated-code-protocol.md",
42
+ "seed_manifest": "packages/cli/seeds/manifest.json"
43
+ },
44
+ "id": "POLICY.AI.FACT_INFERENCE_SEPARATION",
45
+ "kind": "policy",
46
+ "axis_profile": "policy_default",
47
+ "classification": "UNIVERSAL_POLICY",
48
+ "axes": {
49
+ "lifecycle": "PROPOSED",
50
+ "confidence": "UNRESOLVED",
51
+ "evidence": "PLANNED",
52
+ "change": "STABLE"
53
+ },
54
+ "title_zh": "事实推断待确认三分标注",
55
+ "statement_zh": "分析与实现输出必须显式区分已核实事实、推断与待确认项;未决事项以待确认标记保留,不得临场编造。",
56
+ "statement_en_keywords": [
57
+ "fact inference separation",
58
+ "todo confirm markers",
59
+ "no on-the-spot invention"
60
+ ],
61
+ "applies_when": {
62
+ "lane": "any",
63
+ "condition": "AI 输出分析与实现时",
64
+ "applicability_note": "AI 输出分析与实现时"
65
+ },
66
+ "enforcement": "required_when_applicable",
67
+ "authority": {
68
+ "owner": "HUMAN_OWNER",
69
+ "delegates": [],
70
+ "write_policy": "EVOLUTION_CHANNEL",
71
+ "escalation_hint": "catalog-spec-decomposition"
72
+ },
73
+ "origin": "ingested",
74
+ "origin_note": "B6b-I FE 播种移植物化;statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
75
+ "sources": [
76
+ {
77
+ "type": "design_seed",
78
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G1.yaml",
79
+ "captured_by": "agent:claude/spec-d-consolidation",
80
+ "locator": {
81
+ "candidate": "POLICY.AI.FACT_INFERENCE_SEPARATION",
82
+ "source_protocol": ".trellis/spec/frontend/02-ai-generated-code-protocol.md",
83
+ "lines": "L21"
84
+ },
85
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
86
+ }
87
+ ],
88
+ "review_notes": [
89
+ "AI 输出认知纪律在既有 143 条中无对应条目(POLICY.ROLE.* 管签核权归属,不管事实/推断标注),零语义重复。"
90
+ ]
91
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "x-vocab-pr": {
3
+ "status": "vocab_pr_candidate",
4
+ "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
+ "proposal": "词汇表 PR 登记 policy kind 及新域段;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(与前批 45+25+9 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
8
+ },
9
+ "x-spec-d-materialization": {
10
+ "status": "PROPOSAL",
11
+ "package": "B6c BE 播种移植(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
12
+ "human_review_required": true,
13
+ "evidence": "PLANNED",
14
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
15
+ "group": "BE-G1",
16
+ "candidate_id": "POLICY.AI.READ_SEARCH_VERIFY_BEFORE_WRITE",
17
+ "density_rank": "UNIVERSAL",
18
+ "density_score": 32.5,
19
+ "pool_statement_sha16": "13421e41bb1ea5d5",
20
+ "curated_rule": "B6c 分母(BE universal 33:32 编号协议 + index)required 池(ELIGIBLE 未物化 + 卡层锚落 MUST/MUST NOT 且与 MASTer 行锚交叉验证)按池密度序取前 22 + advisory 池(SHOULD 源 backlog policy 卡 + 行锚全落建议段闭包)按同公式密度序取前 3 = 25(D5 上限/批内执行);UNIVERSAL + UNIVERSAL_POLICY + 无 uncertainty + 非 project_scope + 非重复",
21
+ "denominator": "MASTer(池卡 source 锚)"
22
+ },
23
+ "x-b6-porting": {
24
+ "status": "PROPOSAL",
25
+ "batch": "B6C",
26
+ "human_review_required": true,
27
+ "classification_face": "policy",
28
+ "enforcement_axis": {
29
+ "source_sections": [
30
+ "MUST"
31
+ ],
32
+ "rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
33
+ "asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
34
+ },
35
+ "extra_master_sections": [],
36
+ "denominator": "vendor",
37
+ "vendor_pin": {
38
+ "path": "pomaster/components/backend-hard-spec/assets/universal/06-ai-generated-code-protocol.md",
39
+ "sha256": "a88614806137f33161b741d2a9fbc6ee310fa4f0cbf6acd222de07c14aee3d75",
40
+ "bytes": 1288
41
+ },
42
+ "seeded_spec": ".pomaster/specs/hard/backend/06-ai-generated-code-protocol.md",
43
+ "seed_manifest": "packages/cli/seeds/manifest.json"
44
+ },
45
+ "id": "POLICY.AI.READ_SEARCH_VERIFY_BEFORE_WRITE",
46
+ "kind": "policy",
47
+ "axis_profile": "policy_default",
48
+ "classification": "UNIVERSAL_POLICY",
49
+ "axes": {
50
+ "lifecycle": "PROPOSED",
51
+ "confidence": "UNRESOLVED",
52
+ "evidence": "PLANNED",
53
+ "change": "STABLE"
54
+ },
55
+ "title_zh": "写前读规范检索并验证",
56
+ "statement_zh": "写入任何内容前必须先读取适用规范、检索可复用实现,并按风险等级运行可复核的检查。",
57
+ "statement_en_keywords": [
58
+ "read spec first",
59
+ "reuse search",
60
+ "verifiable check"
61
+ ],
62
+ "applies_when": {
63
+ "lane": "any",
64
+ "condition": "执行体做任何写入",
65
+ "applicability_note": "执行体做任何写入"
66
+ },
67
+ "enforcement": "required_when_applicable",
68
+ "authority": {
69
+ "owner": "HUMAN_OWNER",
70
+ "delegates": [],
71
+ "write_policy": "EVOLUTION_CHANNEL",
72
+ "escalation_hint": "catalog-spec-decomposition"
73
+ },
74
+ "origin": "ingested",
75
+ "origin_note": "B6c BE 播种移植物化;statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
76
+ "sources": [
77
+ {
78
+ "type": "design_seed",
79
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G1.yaml",
80
+ "captured_by": "agent:claude/spec-d-consolidation",
81
+ "locator": {
82
+ "candidate": "POLICY.AI.READ_SEARCH_VERIFY_BEFORE_WRITE",
83
+ "source_protocol": ".trellis/spec/backend/06-ai-generated-code-protocol.md",
84
+ "lines": "25"
85
+ },
86
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
87
+ }
88
+ ],
89
+ "review_notes": [
90
+ "与既有 POLICY.AI.CHANGE_PLAN_FIRST、POLICY.PROC.PRE_CODE_DECLARATION 相邻不同轴——彼两条管计划/声明产出,本管写前读规范-检索复用-风险检查三步义务,互引不合并。"
91
+ ]
92
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "x-vocab-pr": {
3
+ "status": "vocab_pr_candidate",
4
+ "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world);新 id 域段待登记:AI",
5
+ "proposal": "词汇表 PR 登记 policy kind 及新域段;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(与前批 45+25 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
8
+ },
9
+ "x-spec-d-materialization": {
10
+ "status": "PROPOSAL",
11
+ "package": "B6b-I FE 播种移植(SPEC-D 池卡复用;分母=MASTer 池卡 + vendor 播种字节双锚)",
12
+ "human_review_required": true,
13
+ "evidence": "PLANNED",
14
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
15
+ "group": "FE-G1",
16
+ "candidate_id": "POLICY.AI.RULE_RELAXATION_APPROVAL",
17
+ "density_rank": null,
18
+ "density_score": 32.94,
19
+ "pool_statement_sha16": "6fad1292d39878e8",
20
+ "curated_rule": "B6b-I 分母(FE 01-23)required 池(ELIGIBLE 未物化)按池密度序取前 22 + advisory 池(SHOULD 源 backlog policy 卡)按同公式密度序取前 3 = 25(D5 上限);UNIVERSAL + UNIVERSAL_POLICY + 无 uncertainty + 非 project_scope + 非重复",
21
+ "denominator": "MASTer(池卡 source_protocol 锚)"
22
+ },
23
+ "x-b6-porting": {
24
+ "status": "PROPOSAL",
25
+ "batch": "B6B-1",
26
+ "human_review_required": true,
27
+ "enforcement_axis": {
28
+ "source_sections": [
29
+ "Change Policy"
30
+ ],
31
+ "rule": "SHOULD/Change Policy 源条目 enforcement 必须 advisory(禁升 required);MUST/MUST NOT 源条目 enforcement 必须 required_when_applicable(降级合法)",
32
+ "asserted_by": "packages/cli/tests/catalog-b6-porting.spec.ts"
33
+ },
34
+ "extra_master_sections": [],
35
+ "denominator": "vendor",
36
+ "vendor_pin": {
37
+ "path": "pomaster/components/frontend-hard-spec/assets/universal/02-ai-generated-code-protocol.md",
38
+ "sha256": "a80ea1c51c9afc0b96001cfffa0675edafb1572563652840bcf88770d81203c8",
39
+ "bytes": 2130
40
+ },
41
+ "seeded_spec": ".pomaster/specs/hard/frontend/02-ai-generated-code-protocol.md",
42
+ "seed_manifest": "packages/cli/seeds/manifest.json"
43
+ },
44
+ "id": "POLICY.AI.RULE_RELAXATION_APPROVAL",
45
+ "kind": "policy",
46
+ "axis_profile": "policy_default",
47
+ "classification": "UNIVERSAL_POLICY",
48
+ "axes": {
49
+ "lifecycle": "PROPOSED",
50
+ "confidence": "UNRESOLVED",
51
+ "evidence": "PLANNED",
52
+ "change": "STABLE"
53
+ },
54
+ "title_zh": "AI 禁令放宽双重批准",
55
+ "statement_zh": "放宽 AI 行为禁令需要工程治理与领域双方责任人共同批准;新型 AI 失误应转化为协议条款或自动门禁。",
56
+ "statement_en_keywords": [
57
+ "ai rule relaxation approval",
58
+ "dual owner sign off",
59
+ "new mistake to protocol"
60
+ ],
61
+ "applies_when": {
62
+ "lane": "any",
63
+ "condition": "调整 AI 行为约束时",
64
+ "applicability_note": "调整 AI 行为约束时"
65
+ },
66
+ "enforcement": "advisory",
67
+ "authority": {
68
+ "owner": "HUMAN_OWNER",
69
+ "delegates": [],
70
+ "write_policy": "EVOLUTION_CHANNEL",
71
+ "escalation_hint": "catalog-spec-decomposition"
72
+ },
73
+ "origin": "ingested",
74
+ "origin_note": "B6b-I FE 播种移植物化;statement 沿用 SPEC-D 候选卡独立措辞(clean-room),零逐字拷贝上游源文本;播种分母=vendor 字节(x-b6-porting.vendor_pin),分解分母=MASTer 池卡(x-spec-d-materialization)",
75
+ "sources": [
76
+ {
77
+ "type": "design_seed",
78
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G1.yaml",
79
+ "captured_by": "agent:claude/spec-d-consolidation",
80
+ "locator": {
81
+ "candidate": "POLICY.AI.RULE_RELAXATION_APPROVAL",
82
+ "source_protocol": ".trellis/spec/frontend/02-ai-generated-code-protocol.md",
83
+ "lines": "L74"
84
+ },
85
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
86
+ }
87
+ ],
88
+ "review_notes": [
89
+ "advisory 物化(Change Policy 源):AI 禁令放宽的批准元规则,源段 Change Policy——advisory 落点;与 POLICY.SEC.RELAXATION_APPROVAL(安全放宽,同池未物化)不同域互引。"
90
+ ]
91
+ }
@@ -3,7 +3,8 @@
3
3
  "status": "vocab_pr_candidate",
4
4
  "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world)",
5
5
  "proposal": "词汇表 PR 登记 policy kind;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
- "locked_vocab_untouched": true
6
+ "locked_vocab_untouched": true,
7
+ "resolution": "2026-09-05 vocab PR-0009 收编落地(vocab-lock@v0.8-resolved,三镜像同 commit;Owner 裁定 D4=(a) 2026-09-05):kind='policy' 是 catalog 物料分类词形(catalog_layer_vocab.catalog_kind 在册——PR-0006,不受 kinds_registry.truth_bodies 闭包管辖),POLICY. 前缀为 governed 闭包既有前缀,id 域段词形随 catalog_layer_vocab.policy_id_domains / policy_web_domains 收编;本 pending 注记就此转正(finding/proposal/locked_vocab_untouched 为创建时点历史记录原样保留——mcp_eyes 先例)"
7
8
  },
8
9
  "x-pilot-proposal": {
9
10
  "status": "PROPOSAL",