pomaster 0.1.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 (115) hide show
  1. package/COMMERCIAL_LICENSE.md +35 -0
  2. package/LICENSE +83 -0
  3. package/README.md +396 -0
  4. package/SECURITY.md +22 -0
  5. package/TRADEMARKS.md +12 -0
  6. package/catalog/candidates/candidates-draft.json +198 -0
  7. package/catalog/candidates/rejected.json +422 -0
  8. package/catalog/catalog-lock.draft.json +822 -0
  9. package/catalog/gates/gate.be.api.contract_checks.json +138 -0
  10. package/catalog/gates/gate.be.chg.contract_change_checks.json +138 -0
  11. package/catalog/gates/gate.chg.prechange_checks.json +155 -0
  12. package/catalog/gates/gate.web.api.request_checks.json +149 -0
  13. package/catalog/gates/gate.web.grid.checks.json +149 -0
  14. package/catalog/knowledge/knowledge.api.example_stable_error_code.json +80 -0
  15. package/catalog/knowledge/knowledge.chg.example_compat_window.json +87 -0
  16. package/catalog/knowledge/knowledge.chg.example_prop_migration.json +87 -0
  17. package/catalog/knowledge/knowledge.fp.api.field_drift_no_contract.json +83 -0
  18. package/catalog/knowledge/knowledge.fp.api.per_page_http_client.json +83 -0
  19. package/catalog/knowledge/knowledge.fp.be.contract_drift.json +87 -0
  20. package/catalog/knowledge/knowledge.fp.chg.page_local_padding.json +88 -0
  21. package/catalog/knowledge/knowledge.fp.grid.global_td_width.json +87 -0
  22. package/catalog/knowledge/knowledge.web.api.example_get_entity_list.json +83 -0
  23. package/catalog/knowledge/knowledge.web.grid.example_column_preset.json +83 -0
  24. package/catalog/policies/authority.be.api_contract_ownership.json +77 -0
  25. package/catalog/policies/authority.be.contract_ownership.json +73 -0
  26. package/catalog/policies/authority.chg.change_owners.json +75 -0
  27. package/catalog/policies/authority.web.api.request_owners.json +82 -0
  28. package/catalog/policies/authority.web.grid.ownership.json +78 -0
  29. package/catalog/policies/policy.api.backward_compat_defaults.json +83 -0
  30. package/catalog/policies/policy.api.contract_impl_consistency.json +81 -0
  31. package/catalog/policies/policy.api.no_informal_contract.json +82 -0
  32. package/catalog/policies/policy.arch.decision_tradeoff_record.json +78 -0
  33. package/catalog/policies/policy.cache.lifecycle_definition.json +79 -0
  34. package/catalog/policies/policy.chg.affect_templates.json +79 -0
  35. package/catalog/policies/policy.chg.breaking_versioning.json +81 -0
  36. package/catalog/policies/policy.chg.compat_migration_rollback.json +82 -0
  37. package/catalog/policies/policy.chg.deprecate_before_delete.json +82 -0
  38. package/catalog/policies/policy.chg.fix_at_root_cause_level.json +78 -0
  39. package/catalog/policies/policy.chg.observable_evolution.json +78 -0
  40. package/catalog/policies/policy.chg.prechange_consumer_scan.json +83 -0
  41. package/catalog/policies/policy.chg.staged_rollout.json +79 -0
  42. package/catalog/policies/policy.chg.sync_contract_docs_tests.json +81 -0
  43. package/catalog/policies/policy.conflict.priority_ladder.json +79 -0
  44. package/catalog/policies/policy.dep.admission_six_dimension_check.json +84 -0
  45. package/catalog/policies/policy.dep.change_surface_review.json +82 -0
  46. package/catalog/policies/policy.dep.introduction_review.json +83 -0
  47. package/catalog/policies/policy.derived.single_implementation.json +77 -0
  48. package/catalog/policies/policy.obs.correlation_context_minimum.json +81 -0
  49. package/catalog/policies/policy.obs.rum_dimension_whitelist.json +77 -0
  50. package/catalog/policies/policy.proc.pre_code_declaration.json +78 -0
  51. package/catalog/policies/policy.rel.pre_release_confirmation.json +77 -0
  52. package/catalog/policies/policy.role.domain_decision_authority.json +77 -0
  53. package/catalog/policies/policy.sec.third_party_execution_register.json +78 -0
  54. package/catalog/policies/policy.spec.admission_criteria.json +79 -0
  55. package/catalog/policies/policy.spec.derived_view_regeneration.json +79 -0
  56. package/catalog/policies/policy.spec.draft_not_baseline.json +77 -0
  57. package/catalog/policies/policy.spec.file_structure_contract.json +76 -0
  58. package/catalog/policies/policy.spec.metadata_required.json +76 -0
  59. package/catalog/policies/policy.spec.post_dev_backfill_classify.json +74 -0
  60. package/catalog/policies/policy.spec.procedural_record_not_surrogate.json +76 -0
  61. package/catalog/policies/policy.spec.semantic_identity.json +77 -0
  62. package/catalog/policies/policy.spec.unresolved_ledger_gate.json +79 -0
  63. package/catalog/policies/policy.stack.no_implicit_selection.json +77 -0
  64. package/catalog/policies/policy.tool.scoped_scan_boundary.json +78 -0
  65. package/catalog/policies/policy.web.api.auth_app_client_split.json +93 -0
  66. package/catalog/policies/policy.web.api.client_change_impact.json +86 -0
  67. package/catalog/policies/policy.web.api.domain_api_only.json +84 -0
  68. package/catalog/policies/policy.web.api.error_normalization.json +82 -0
  69. package/catalog/policies/policy.web.api.generated_client.json +82 -0
  70. package/catalog/policies/policy.web.api.late_result_guard.json +80 -0
  71. package/catalog/policies/policy.web.api.mutation_idempotency.json +84 -0
  72. package/catalog/policies/policy.web.api.no_network_optimism.json +82 -0
  73. package/catalog/policies/policy.web.api.query_cancel_stale_drop.json +80 -0
  74. package/catalog/policies/policy.web.api.request_infrastructure.json +95 -0
  75. package/catalog/policies/policy.web.api.retry_discipline.json +87 -0
  76. package/catalog/policies/policy.web.api.session_recovery_split.json +94 -0
  77. package/catalog/policies/policy.web.api.single_http_client.json +88 -0
  78. package/catalog/policies/policy.web.api.single_loading_source.json +81 -0
  79. package/catalog/policies/policy.web.api.transport_vs_business.json +81 -0
  80. package/catalog/policies/policy.web.api.trusted_endpoint_source.json +82 -0
  81. package/catalog/policies/policy.web.api.typed_domain_naming.json +79 -0
  82. package/catalog/policies/policy.web.arch.layer_isolation.json +376 -0
  83. package/catalog/policies/policy.web.arch.naming_conventions.json +207 -0
  84. package/catalog/policies/policy.web.arch.public_api_barrel.json +134 -0
  85. package/catalog/policies/policy.web.chg.controlled_change_triggers.json +79 -0
  86. package/catalog/policies/policy.web.copy.suppression_ledger_discipline.json +78 -0
  87. package/catalog/policies/policy.web.grid.column_schema_fields.json +78 -0
  88. package/catalog/policies/policy.web.grid.config_isolation.json +78 -0
  89. package/catalog/policies/policy.web.grid.freeze_key_columns.json +77 -0
  90. package/catalog/policies/policy.web.grid.interaction_registry.json +80 -0
  91. package/catalog/policies/policy.web.grid.keyboard_clipboard.json +79 -0
  92. package/catalog/policies/policy.web.grid.schema_driven_shell.json +81 -0
  93. package/catalog/policies/policy.web.grid.schema_versioning.json +78 -0
  94. package/catalog/policies/policy.web.grid.server_ops_virtualization.json +81 -0
  95. package/catalog/policies/policy.web.grid.shell_change_matrix.json +76 -0
  96. package/catalog/policies/policy.web.grid.width_fix_ladder.json +79 -0
  97. package/catalog/policies/policy.web.perf.budget_skeleton.json +110 -0
  98. package/catalog/policies/policy.web.style.ownership_matrix.json +207 -0
  99. package/catalog/policies/policy.web.track.consent_lifecycle.json +78 -0
  100. package/catalog/policies/policy.web.track.privacy_default_deny.json +81 -0
  101. package/catalog/policies/policy.web.track.stable_event_keys.json +78 -0
  102. package/catalog/policies/policy.web.uiux.provider_evidence_not_business_truth.json +86 -0
  103. package/catalog/projection-presets/registry-tree.yaml +307 -0
  104. package/catalog/sensors/sensor.browser.deterministic.json +53 -0
  105. package/catalog/sensors/sensor.browser.interactive.json +58 -0
  106. package/catalog/sensors/sensor.build.static.json +45 -0
  107. package/catalog/sensors/sensor.contract.conformance.json +47 -0
  108. package/catalog/sensors/sensor.performance.budget.json +46 -0
  109. package/catalog/sensors/sensor.production.metric.json +44 -0
  110. package/catalog/tools/apply_human_review_pilot_0001.py +488 -0
  111. package/catalog/tools/materialize_batch4_uplift.py +776 -0
  112. package/catalog/tools/materialize_catalog_pilot.py +784 -0
  113. package/dist/bin.js +52362 -0
  114. package/legal/THIRD_PARTY_NOTICES.md +336 -0
  115. package/package.json +36 -0
@@ -0,0 +1,76 @@
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+9 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-spec-d-materialization": {
9
+ "status": "PROPOSAL",
10
+ "package": "SPEC-D 语义分解汇总(consolidated-pool D5 精选,cap=25)",
11
+ "human_review_required": true,
12
+ "evidence": "PLANNED",
13
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
14
+ "group": "FE-G1",
15
+ "candidate_id": "POLICY.SPEC.PROCEDURAL_RECORD_NOT_SURROGATE",
16
+ "density_rank": 25,
17
+ "density_score": 33.5,
18
+ "pool_statement_sha16": "4e4db55ddb702ca2",
19
+ "curated_rule": "UNIVERSAL + UNIVERSAL_POLICY + required_when_applicable + 无 uncertainty + 非 project_scope + 非重复 + 与既有 69 条零语义重复;按信息密度排序取前 25"
20
+ },
21
+ "x-applicability-review": {
22
+ "status": "human_review_candidate",
23
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
24
+ "axes": [
25
+ "applicability_note"
26
+ ],
27
+ "note": "T3 保守派生未见明确词面证据——capabilities/change_classes 留空回退 lane 缺省(O7 行为零变化);列 Human Review 复核议程"
28
+ },
29
+ "id": "POLICY.SPEC.PROCEDURAL_RECORD_NOT_SURROGATE",
30
+ "kind": "policy",
31
+ "axis_profile": "policy_default",
32
+ "classification": "UNIVERSAL_POLICY",
33
+ "axes": {
34
+ "lifecycle": "PROPOSED",
35
+ "confidence": "UNRESOLVED",
36
+ "evidence": "PLANNED",
37
+ "change": "STABLE"
38
+ },
39
+ "title_zh": "程序性记录不复代复审",
40
+ "statement_zh": "归档、收尾、发布记录等程序性动作不构成规格复审的替代品;跳过复审直接收尾被禁止,一次性实现细节不得写入长期规格。",
41
+ "statement_en_keywords": [
42
+ "procedural record not surrogate",
43
+ "no skipping review at closeout",
44
+ "no one-off details in long-term spec"
45
+ ],
46
+ "applies_when": {
47
+ "lane": "any",
48
+ "condition": "任务关闭、finish、发布等收尾动作",
49
+ "applicability_note": "任务关闭、finish、发布等收尾动作"
50
+ },
51
+ "enforcement": "required_when_applicable",
52
+ "authority": {
53
+ "owner": "HUMAN_OWNER",
54
+ "delegates": [],
55
+ "write_policy": "EVOLUTION_CHANNEL",
56
+ "escalation_hint": "catalog-spec-decomposition"
57
+ },
58
+ "origin": "ingested",
59
+ "origin_note": "SPEC-D 汇总池 D5 精选物化;statement 沿用候选卡独立措辞(clean-room),零逐字拷贝上游源文本",
60
+ "sources": [
61
+ {
62
+ "type": "design_seed",
63
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G1.yaml",
64
+ "captured_by": "agent:claude/spec-d-consolidation",
65
+ "locator": {
66
+ "candidate": "POLICY.SPEC.PROCEDURAL_RECORD_NOT_SURROGATE",
67
+ "source_protocol": ".trellis/spec/frontend/01-development-checklist-protocol.md",
68
+ "lines": "L33-L34"
69
+ },
70
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
71
+ }
72
+ ],
73
+ "review_notes": [
74
+ "程序性记录与复审的关系在既有 69 条中无对应条目,零语义重复。"
75
+ ]
76
+ }
@@ -0,0 +1,77 @@
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+9 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-spec-d-materialization": {
9
+ "status": "PROPOSAL",
10
+ "package": "SPEC-D 语义分解汇总(consolidated-pool D5 精选,cap=25)",
11
+ "human_review_required": true,
12
+ "evidence": "PLANNED",
13
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
14
+ "group": "FE-G1",
15
+ "candidate_id": "POLICY.SPEC.SEMANTIC_IDENTITY",
16
+ "density_rank": 24,
17
+ "density_score": 33.56,
18
+ "pool_statement_sha16": "484ef38cde8c9d79",
19
+ "curated_rule": "UNIVERSAL + UNIVERSAL_POLICY + required_when_applicable + 无 uncertainty + 非 project_scope + 非重复 + 与既有 69 条零语义重复;按信息密度排序取前 25"
20
+ },
21
+ "x-applicability-review": {
22
+ "status": "human_review_candidate",
23
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
24
+ "axes": [
25
+ "applicability_note"
26
+ ],
27
+ "note": "T3 保守派生未见明确词面证据——capabilities/change_classes 留空回退 lane 缺省(O7 行为零变化);列 Human Review 复核议程"
28
+ },
29
+ "id": "POLICY.SPEC.SEMANTIC_IDENTITY",
30
+ "kind": "policy",
31
+ "axis_profile": "policy_default",
32
+ "classification": "UNIVERSAL_POLICY",
33
+ "axes": {
34
+ "lifecycle": "PROPOSED",
35
+ "confidence": "UNRESOLVED",
36
+ "evidence": "PLANNED",
37
+ "change": "STABLE"
38
+ },
39
+ "title_zh": "规范语义标识与编号纪律",
40
+ "statement_zh": "规范文件的身份由稳定语义标识承载,内部引用必须使用语义标识而非编号;已发布编号只追加不重排,废弃文件不复用其标识。",
41
+ "statement_en_keywords": [
42
+ "semantic spec identity",
43
+ "reference by identity",
44
+ "append-only numbering",
45
+ "no id reuse"
46
+ ],
47
+ "applies_when": {
48
+ "lane": "any",
49
+ "condition": "规范体系引用与编号管理",
50
+ "applicability_note": "规范体系引用与编号管理"
51
+ },
52
+ "enforcement": "required_when_applicable",
53
+ "authority": {
54
+ "owner": "HUMAN_OWNER",
55
+ "delegates": [],
56
+ "write_policy": "EVOLUTION_CHANNEL",
57
+ "escalation_hint": "catalog-spec-decomposition"
58
+ },
59
+ "origin": "ingested",
60
+ "origin_note": "SPEC-D 汇总池 D5 精选物化;statement 沿用候选卡独立措辞(clean-room),零逐字拷贝上游源文本",
61
+ "sources": [
62
+ {
63
+ "type": "design_seed",
64
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G1.yaml",
65
+ "captured_by": "agent:claude/spec-d-consolidation",
66
+ "locator": {
67
+ "candidate": "POLICY.SPEC.SEMANTIC_IDENTITY",
68
+ "source_protocol": ".trellis/spec/frontend/index.md",
69
+ "lines": "L8-L9"
70
+ },
71
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
72
+ }
73
+ ],
74
+ "review_notes": [
75
+ "规范标识与编号纪律在既有 69 条中无对应条目,零语义重复。"
76
+ ]
77
+ }
@@ -0,0 +1,79 @@
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+9 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-spec-d-materialization": {
9
+ "status": "PROPOSAL",
10
+ "package": "SPEC-D 语义分解汇总(consolidated-pool D5 精选,cap=25)",
11
+ "human_review_required": true,
12
+ "evidence": "PLANNED",
13
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
14
+ "group": "FE-G4",
15
+ "candidate_id": "POLICY.SPEC.UNRESOLVED_LEDGER_GATE",
16
+ "density_rank": 8,
17
+ "density_score": 35.56,
18
+ "pool_statement_sha16": "ce9ae008cf94282a",
19
+ "curated_rule": "UNIVERSAL + UNIVERSAL_POLICY + required_when_applicable + 无 uncertainty + 非 project_scope + 非重复 + 与既有 69 条零语义重复;按信息密度排序取前 25",
20
+ "clean_room_rewrite": true
21
+ },
22
+ "x-applicability-review": {
23
+ "status": "human_review_candidate",
24
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
25
+ "axes": [
26
+ "applicability_note"
27
+ ],
28
+ "note": "T3 保守派生未见明确词面证据——capabilities/change_classes 留空回退 lane 缺省(O7 行为零变化);列 Human Review 复核议程"
29
+ },
30
+ "id": "POLICY.SPEC.UNRESOLVED_LEDGER_GATE",
31
+ "kind": "policy",
32
+ "axis_profile": "policy_default",
33
+ "classification": "UNIVERSAL_POLICY",
34
+ "axes": {
35
+ "lifecycle": "PROPOSED",
36
+ "confidence": "UNRESOLVED",
37
+ "evidence": "PLANNED",
38
+ "change": "STABLE"
39
+ },
40
+ "title_zh": "未决项显式登记与就绪阻断",
41
+ "statement_zh": "凡尚未获得确认的业务要素——无论字段、度量口径、数据来源、交互约定还是边界条件——一律以显式的未决状态登记在册;模糊的『待补充』标记、占位文字与心照不宣的假设都不得充当登记;属阻断级别的未决项在关闭之前,对应产物不得声明就绪,也不得取得发布授权。",
42
+ "statement_en_keywords": [
43
+ "unresolved ledger",
44
+ "explicit todo semantics",
45
+ "no placeholder assumptions",
46
+ "readiness blocked"
47
+ ],
48
+ "applies_when": {
49
+ "lane": "any",
50
+ "condition": "产物存在未确认事项或申请就绪状态时",
51
+ "applicability_note": "产物存在未确认事项或申请就绪状态时"
52
+ },
53
+ "enforcement": "required_when_applicable",
54
+ "authority": {
55
+ "owner": "HUMAN_OWNER",
56
+ "delegates": [],
57
+ "write_policy": "EVOLUTION_CHANNEL",
58
+ "escalation_hint": "catalog-spec-decomposition"
59
+ },
60
+ "origin": "ingested",
61
+ "origin_note": "SPEC-D 汇总池 D5 精选物化;statement 在物化层以独立措辞改写(clean-room;源卡语句与上游存在逐字重合,已消除),零逐字拷贝上游源文本",
62
+ "sources": [
63
+ {
64
+ "type": "design_seed",
65
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G4.yaml",
66
+ "captured_by": "agent:claude/spec-d-consolidation",
67
+ "locator": {
68
+ "candidate": "POLICY.SPEC.UNRESOLVED_LEDGER_GATE",
69
+ "source_protocol": ".trellis/spec/frontend/25-page-structure-protocol.md",
70
+ "lines": "L69-L74, L90",
71
+ "section": "项目强制规则·未确认项登记 + 项目禁止"
72
+ },
73
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
74
+ }
75
+ ],
76
+ "review_notes": [
77
+ "与既有 POLICY.SPEC.DRAFT_NOT_BASELINE / POLICY.SPEC.POST_DEV_BACKFILL_CLASSIFY 均不同轴(未决显式化+就绪阻断 vs 草稿态治理/事后补录分类),判非重复。"
78
+ ]
79
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "x-vocab-pr": {
3
+ "status": "vocab_pr_candidate",
4
+ "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world);新 id 域段待登记:STACK",
5
+ "proposal": "词汇表 PR 登记 policy kind 及新域段;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(与前批 45+9 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-spec-d-materialization": {
9
+ "status": "PROPOSAL",
10
+ "package": "SPEC-D 语义分解汇总(consolidated-pool D5 精选,cap=25)",
11
+ "human_review_required": true,
12
+ "evidence": "PLANNED",
13
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
14
+ "group": "BE-G5",
15
+ "candidate_id": "POLICY.STACK.NO_IMPLICIT_SELECTION",
16
+ "density_rank": 13,
17
+ "density_score": 34.12,
18
+ "pool_statement_sha16": "820767c0c31e52ce",
19
+ "curated_rule": "UNIVERSAL + UNIVERSAL_POLICY + required_when_applicable + 无 uncertainty + 非 project_scope + 非重复 + 与既有 69 条零语义重复;按信息密度排序取前 25"
20
+ },
21
+ "x-applicability-review": {
22
+ "status": "human_review_candidate",
23
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
24
+ "axes": [
25
+ "applicability_note"
26
+ ],
27
+ "note": "T3 保守派生未见明确词面证据——capabilities/change_classes 留空回退 lane 缺省(O7 行为零变化);列 Human Review 复核议程"
28
+ },
29
+ "id": "POLICY.STACK.NO_IMPLICIT_SELECTION",
30
+ "kind": "policy",
31
+ "axis_profile": "policy_default",
32
+ "classification": "UNIVERSAL_POLICY",
33
+ "axes": {
34
+ "lifecycle": "PROPOSED",
35
+ "confidence": "UNRESOLVED",
36
+ "evidence": "PLANNED",
37
+ "change": "STABLE"
38
+ },
39
+ "title_zh": "技术栈分层显式选型",
40
+ "statement_zh": "对某一技术层的选型不得被用作推断其他技术层(框架、存储、缓存、入口、运行时容器)的依据;每一层能力都必须经显式选择进入项目技术基线。",
41
+ "statement_en_keywords": [
42
+ "explicit selection",
43
+ "no cross-layer inference",
44
+ "technology baseline"
45
+ ],
46
+ "applies_when": {
47
+ "lane": "any",
48
+ "condition": "引入或变更任一技术栈层时",
49
+ "applicability_note": "引入或变更任一技术栈层时"
50
+ },
51
+ "enforcement": "required_when_applicable",
52
+ "authority": {
53
+ "owner": "HUMAN_OWNER",
54
+ "delegates": [],
55
+ "write_policy": "EVOLUTION_CHANNEL",
56
+ "escalation_hint": "catalog-spec-decomposition"
57
+ },
58
+ "origin": "ingested",
59
+ "origin_note": "SPEC-D 汇总池 D5 精选物化;statement 沿用候选卡独立措辞(clean-room),零逐字拷贝上游源文本",
60
+ "sources": [
61
+ {
62
+ "type": "design_seed",
63
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/BE-G5.yaml",
64
+ "captured_by": "agent:claude/spec-d-consolidation",
65
+ "locator": {
66
+ "candidate": "POLICY.STACK.NO_IMPLICIT_SELECTION",
67
+ "source_protocol": ".trellis/spec/backend/stacks/java/java-language-overlay.md",
68
+ "lines": "L19",
69
+ "source_sha256": "38b592a5beaa899abb45e871e5097cafedeea80502baee00bcfbfcfa313dab85"
70
+ },
71
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
72
+ }
73
+ ],
74
+ "review_notes": [
75
+ "技术栈分层选型治理在既有 69 条中无对应条目,零语义重复;源卡为该域统摄性正本(多个分层实例已 absorbed 于池台账)。"
76
+ ]
77
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "x-vocab-pr": {
3
+ "status": "vocab_pr_candidate",
4
+ "finding": "kind='policy' 不在 vocab-lock kinds_registry.truth_bodies(POLICY. 前缀已冻结注册,closed-world);新 id 域段待登记:TOOL",
5
+ "proposal": "词汇表 PR 登记 policy kind 及新域段;或 Owner 裁决 policy 条目住 catalog/ 而非 truth/objects 正文层(与前批 45+9 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-spec-d-materialization": {
9
+ "status": "PROPOSAL",
10
+ "package": "SPEC-D 语义分解汇总(consolidated-pool D5 精选,cap=25)",
11
+ "human_review_required": true,
12
+ "evidence": "PLANNED",
13
+ "provenance": "POMaster_VNext/corpus/spec-knowledge/candidates/consolidated-pool.yaml",
14
+ "group": "FE-G1",
15
+ "candidate_id": "POLICY.TOOL.SCOPED_SCAN_BOUNDARY",
16
+ "density_rank": 18,
17
+ "density_score": 33.94,
18
+ "pool_statement_sha16": "43eb7a54c7547efb",
19
+ "curated_rule": "UNIVERSAL + UNIVERSAL_POLICY + required_when_applicable + 无 uncertainty + 非 project_scope + 非重复 + 与既有 69 条零语义重复;按信息密度排序取前 25",
20
+ "clean_room_rewrite": true
21
+ },
22
+ "x-applicability-review": {
23
+ "status": "human_review_candidate",
24
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
25
+ "axes": [
26
+ "applicability_note"
27
+ ],
28
+ "note": "T3 保守派生未见明确词面证据——capabilities/change_classes 留空回退 lane 缺省(O7 行为零变化);列 Human Review 复核议程"
29
+ },
30
+ "id": "POLICY.TOOL.SCOPED_SCAN_BOUNDARY",
31
+ "kind": "policy",
32
+ "axis_profile": "policy_default",
33
+ "classification": "UNIVERSAL_POLICY",
34
+ "axes": {
35
+ "lifecycle": "PROPOSED",
36
+ "confidence": "UNRESOLVED",
37
+ "evidence": "PLANNED",
38
+ "change": "STABLE"
39
+ },
40
+ "title_zh": "质量扫描边界显式化",
41
+ "statement_zh": "静态检查与构建校验类命令的作用范围必须被明确划界,只覆盖项目自研代码及其配置;第三方依赖带入的安装产物、生成物以及已由对应工具自身校验机制接管的目录不进入该范围,划界结果以受版本管理的清单固化并保持可评审。",
42
+ "statement_en_keywords": [
43
+ "scan boundary",
44
+ "first-party scope",
45
+ "exclusion list versioned",
46
+ "tool-owned directories"
47
+ ],
48
+ "applies_when": {
49
+ "lane": "any",
50
+ "condition": "质量命令扫描范围配置",
51
+ "applicability_note": "质量命令扫描范围配置"
52
+ },
53
+ "enforcement": "required_when_applicable",
54
+ "authority": {
55
+ "owner": "HUMAN_OWNER",
56
+ "delegates": [],
57
+ "write_policy": "EVOLUTION_CHANNEL",
58
+ "escalation_hint": "catalog-spec-decomposition"
59
+ },
60
+ "origin": "ingested",
61
+ "origin_note": "SPEC-D 汇总池 D5 精选物化;statement 在物化层以独立措辞改写(clean-room;源卡语句与上游存在逐字重合,已消除),零逐字拷贝上游源文本",
62
+ "sources": [
63
+ {
64
+ "type": "design_seed",
65
+ "ref": "POMaster_VNext/corpus/spec-knowledge/candidates/FE-G1.yaml",
66
+ "captured_by": "agent:claude/spec-d-consolidation",
67
+ "locator": {
68
+ "candidate": "POLICY.TOOL.SCOPED_SCAN_BOUNDARY",
69
+ "source_protocol": ".trellis/spec/frontend/10-engineering-tooling-protocol.md",
70
+ "lines": "L29, L95-L97, L143"
71
+ },
72
+ "clean_room_note": "independently rewritten from SPEC-D decomposition candidate cards; zero verbatim copy"
73
+ }
74
+ ],
75
+ "review_notes": [
76
+ "扫描边界治理在既有 69 条中无对应条目,零语义重复;示例中的具体工具目录名不入 statement。"
77
+ ]
78
+ }
@@ -0,0 +1,93 @@
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 条同因同请,合并进同一 vocab PR)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-batch4-uplift": {
9
+ "status": "PROPOSAL",
10
+ "package": "batch-4 语料批 Universal 上提(工程策略族 split-ledger 驱动)",
11
+ "human_review_required": true,
12
+ "evidence": "PLANNED",
13
+ "provenance": "POMaster_VNext/corpus/master/batch-4/split-ledger.yaml"
14
+ },
15
+ "x-applicability-review": {
16
+ "status": "annotated",
17
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
18
+ "axes": [
19
+ "lanes",
20
+ "capabilities",
21
+ "applicability_note"
22
+ ],
23
+ "basis": "policy.web.api 族(case-b W1-A1 同族标注);condition『搭建或调整请求客户端族时』"
24
+ },
25
+ "id": "POLICY.WEB.API.AUTH_APP_CLIENT_SPLIT",
26
+ "kind": "policy",
27
+ "axis_profile": "policy_default",
28
+ "classification": "UNIVERSAL_POLICY",
29
+ "axes": {
30
+ "lifecycle": "PROPOSED",
31
+ "confidence": "UNRESOLVED",
32
+ "evidence": "PLANNED",
33
+ "change": "STABLE"
34
+ },
35
+ "title_zh": "会话与业务客户端族分离",
36
+ "statement_zh": "会话族端点由独立的会话客户端承载、与业务客户端分离;会话端点以受控白名单枚举,会话客户端不进入业务恢复链路,刷新动作单飞合并。",
37
+ "statement_en_keywords": [
38
+ "client split",
39
+ "auth whitelist",
40
+ "single flight refresh"
41
+ ],
42
+ "applies_when": {
43
+ "lane": "frontend",
44
+ "condition": "搭建或调整请求客户端族时",
45
+ "lanes": [
46
+ "frontend"
47
+ ],
48
+ "capabilities": [
49
+ "CAPABILITY.API_CONTRACT"
50
+ ],
51
+ "applicability_note": "搭建或调整请求客户端族时"
52
+ },
53
+ "enforcement": "required_when_applicable",
54
+ "authority": {
55
+ "owner": "HUMAN_OWNER",
56
+ "delegates": [],
57
+ "write_policy": "EVOLUTION_CHANNEL",
58
+ "escalation_hint": "catalog-batch4-uplift"
59
+ },
60
+ "origin": "ingested",
61
+ "origin_note": "batch-4 语料批 split-ledger UNIVERSAL/HYBRID universal 半上提;词面独立改写(clean-room),零逐字拷贝源文本",
62
+ "sub_rules": [
63
+ {
64
+ "rule_id": "clients.authClient",
65
+ "statement_zh": "会话族请求与业务族请求必须分离为两个独立客户端:会话族客户端只服务登录、令牌刷新、注销与当前身份及权限读取;其端点以受控白名单枚举,白名单之外的端点不得经由会话客户端发出;会话客户端不进入业务恢复链路,其刷新动作必须单飞合并。",
66
+ "provenance": {
67
+ "asset_id": "http-client-policy",
68
+ "entry_id": "clients.authClient",
69
+ "decision": "HYBRID",
70
+ "merge_group": "MG-HTTP-RECOVERY",
71
+ "corpus_batch": "batch-4/HTTP_CLIENT",
72
+ "split_ledger": "POMaster_VNext/corpus/master/batch-4/split-ledger.yaml"
73
+ }
74
+ }
75
+ ],
76
+ "sources": [
77
+ {
78
+ "type": "design_seed",
79
+ "ref": "POMaster_VNext/corpus/master/batch-4/split-ledger.yaml",
80
+ "captured_by": "agent:claude/batch-4-catalog-uplift",
81
+ "locator": {
82
+ "asset": "http-client-policy",
83
+ "entry": "clients.authClient",
84
+ "corpus_batch": "batch-4/HTTP_CLIENT",
85
+ "upstream_source_ref": "outputs/frontend/10_planned/http-client-policy.yaml"
86
+ },
87
+ "clean_room_note": "independently rewritten from field corpus batch-4 material; zero verbatim copy"
88
+ }
89
+ ],
90
+ "review_notes": [
91
+ "与既有 POLICY.WEB.API.SINGLE_HTTP_CLIENT / POLICY.WEB.API.TRUSTED_ENDPOINT_SOURCE 面审(MIG-B4 catalog_scope_note):SINGLE_HTTP_CLIENT 约束基础设施单点统一,本条约束客户端族分离(会话族 vs 业务族两实例),两维度正交不冲突;端点来源纪律归 TRUSTED_ENDPOINT_SOURCE,本条不另立来源条款。"
92
+ ]
93
+ }
@@ -0,0 +1,86 @@
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 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-pilot-proposal": {
9
+ "status": "PROPOSAL",
10
+ "package": "语义分解试点送审包(2026-08-28)",
11
+ "human_review_required": true,
12
+ "source_type": "design_seed",
13
+ "evidence": "PLANNED",
14
+ "provenance": "POMaster_VNext/catalog/candidates/candidates-draft.json",
15
+ "enforcement_note": "命中 applies_when 条件时必须遵守;是否升 MUST、接入哪个 gate 由 Human Review 裁决",
16
+ "clean_room_note": "statement_zh 为独立改写(clean-room),零逐字拷贝源协议"
17
+ },
18
+ "x-applicability-review": {
19
+ "status": "annotated",
20
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
21
+ "axes": [
22
+ "lanes",
23
+ "capabilities",
24
+ "change_classes",
25
+ "applicability_note"
26
+ ],
27
+ "basis": "condition『HTTP Client/Domain API 公共行为变更』——公共契约变更词面逐字"
28
+ },
29
+ "id": "POLICY.WEB.API.CLIENT_CHANGE_IMPACT",
30
+ "kind": "policy",
31
+ "axis_profile": "policy_default",
32
+ "classification": "LANE_POLICY",
33
+ "axes": {
34
+ "lifecycle": "PROPOSED",
35
+ "confidence": "UNRESOLVED",
36
+ "evidence": "PLANNED",
37
+ "change": "STABLE"
38
+ },
39
+ "title_zh": "客户端公共变更影响评估",
40
+ "statement_zh": "客户端公共行为变更必须评估全部请求方;函数破坏性变化须提供迁移路径与弃用期。",
41
+ "statement_en_keywords": [
42
+ "client change impact assessment",
43
+ "migration",
44
+ "deprecation window"
45
+ ],
46
+ "applies_when": {
47
+ "lane": "frontend",
48
+ "condition": "HTTP Client/Domain API 公共行为变更",
49
+ "lanes": [
50
+ "frontend"
51
+ ],
52
+ "capabilities": [
53
+ "CAPABILITY.API_CONTRACT"
54
+ ],
55
+ "change_classes": [
56
+ "PUBLIC_CONTRACT_CHANGE"
57
+ ],
58
+ "applicability_note": "HTTP Client/Domain API 公共行为变更"
59
+ },
60
+ "enforcement": "required_when_applicable",
61
+ "authority": {
62
+ "owner": "HUMAN_OWNER",
63
+ "delegates": [],
64
+ "write_policy": "EVOLUTION_CHANNEL",
65
+ "escalation_hint": "catalog-pilot-human-review"
66
+ },
67
+ "origin": "ingested",
68
+ "sources": [
69
+ {
70
+ "type": "design_seed",
71
+ "ref": "pomaster/components/frontend-hard-spec/assets/universal/15-request-api-protocol.md",
72
+ "captured_by": "agent:claude/semantic-decomposition-pilot",
73
+ "locator": {
74
+ "section": "Change Policy"
75
+ }
76
+ }
77
+ ],
78
+ "review_notes": [
79
+ "引用 POLICY.CHG.* 族而非自建流程;pilot-0001 ADJUST:M1 合并出单一 UNIVERSAL 正本后,本条登记为指针条款候选(避免与 CHG 族双写),留后续批次改写"
80
+ ],
81
+ "review": {
82
+ "disposition": "ADJUST",
83
+ "seq": "pilot-0001",
84
+ "ref": "docs/catalog-pilot-report.md:L247(§8.2 #45)"
85
+ }
86
+ }
@@ -0,0 +1,84 @@
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 正文层(两种落法待裁决,见 candidates-draft.json meta.vocab_findings[0],affected=45)",
6
+ "locked_vocab_untouched": true
7
+ },
8
+ "x-pilot-proposal": {
9
+ "status": "PROPOSAL",
10
+ "package": "语义分解试点送审包(2026-08-28)",
11
+ "human_review_required": true,
12
+ "source_type": "design_seed",
13
+ "evidence": "PLANNED",
14
+ "provenance": "POMaster_VNext/catalog/candidates/candidates-draft.json",
15
+ "enforcement_note": "命中 applies_when 条件时必须遵守;是否升 MUST、接入哪个 gate 由 Human Review 裁决",
16
+ "clean_room_note": "statement_zh 为独立改写(clean-room),零逐字拷贝源协议"
17
+ },
18
+ "x-applicability-review": {
19
+ "status": "annotated",
20
+ "campaign": "W1-A2 P0.5-1 T3 标注战役(PRD v0.5.2 §5.2/§14;Owner 裁决 8 ②,2026-09-01)",
21
+ "axes": [
22
+ "lanes",
23
+ "capabilities",
24
+ "applicability_note"
25
+ ],
26
+ "basis": "policy.web.api 族(case-b W1-A1 同族标注);正文请求层契约消费纪律"
27
+ },
28
+ "id": "POLICY.WEB.API.DOMAIN_API_ONLY",
29
+ "kind": "policy",
30
+ "axis_profile": "policy_default",
31
+ "classification": "LANE_POLICY",
32
+ "axes": {
33
+ "lifecycle": "PROPOSED",
34
+ "confidence": "UNRESOLVED",
35
+ "evidence": "PLANNED",
36
+ "change": "STABLE"
37
+ },
38
+ "title_zh": "页面只经 Domain API 调用",
39
+ "statement_zh": "页面层只允许调用封装后的 Domain API 函数,不得接触传输细节。",
40
+ "statement_en_keywords": [
41
+ "domain api only",
42
+ "page layer",
43
+ "no transport details"
44
+ ],
45
+ "applies_when": {
46
+ "lane": "frontend",
47
+ "condition": "页面发起任何后端请求",
48
+ "lanes": [
49
+ "frontend"
50
+ ],
51
+ "capabilities": [
52
+ "CAPABILITY.API_CONTRACT"
53
+ ],
54
+ "applicability_note": "页面发起任何后端请求"
55
+ },
56
+ "enforcement": "required_when_applicable",
57
+ "authority": {
58
+ "owner": "HUMAN_OWNER",
59
+ "delegates": [],
60
+ "write_policy": "EVOLUTION_CHANNEL",
61
+ "escalation_hint": "catalog-pilot-human-review"
62
+ },
63
+ "origin": "ingested",
64
+ "sources": [
65
+ {
66
+ "type": "design_seed",
67
+ "ref": "pomaster/components/frontend-hard-spec/assets/universal/15-request-api-protocol.md",
68
+ "captured_by": "agent:claude/semantic-decomposition-pilot",
69
+ "locator": {
70
+ "section": "MUST 第1条"
71
+ }
72
+ }
73
+ ],
74
+ "review_notes": [],
75
+ "review": {
76
+ "disposition": "ACCEPT",
77
+ "seq": "pilot-0001",
78
+ "ref": "docs/catalog-pilot-report.md:L225(§8.2 #23)",
79
+ "absorbed_duplicates": [
80
+ "POLICY.WEB.API.NO_RAW_FETCH",
81
+ "POLICY.WEB.API.NO_ENVELOPE_IN_COMPONENT"
82
+ ]
83
+ }
84
+ }