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,94 @@
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 同族标注)"
24
+ },
25
+ "id": "POLICY.WEB.API.SESSION_RECOVERY_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
+ "401 refresh once",
39
+ "403 reject no refresh",
40
+ "single flight",
41
+ "replay cap"
42
+ ],
43
+ "applies_when": {
44
+ "lane": "frontend",
45
+ "condition": "实现会话失效与权限拒绝处理时",
46
+ "lanes": [
47
+ "frontend"
48
+ ],
49
+ "capabilities": [
50
+ "CAPABILITY.API_CONTRACT"
51
+ ],
52
+ "applicability_note": "实现会话失效与权限拒绝处理时"
53
+ },
54
+ "enforcement": "required_when_applicable",
55
+ "authority": {
56
+ "owner": "HUMAN_OWNER",
57
+ "delegates": [],
58
+ "write_policy": "EVOLUTION_CHANNEL",
59
+ "escalation_hint": "catalog-batch4-uplift"
60
+ },
61
+ "origin": "ingested",
62
+ "origin_note": "batch-4 语料批 split-ledger UNIVERSAL/HYBRID universal 半上提;词面独立改写(clean-room),零逐字拷贝源文本",
63
+ "sub_rules": [
64
+ {
65
+ "rule_id": "clients.appClient",
66
+ "statement_zh": "业务客户端对认证失效与权限拒绝必须分开处理:认证失效时刷新一次并以原请求重放一次;权限拒绝直接拒绝、不触发刷新;令牌刷新必须全局单飞;每个请求的重放次数必须设显式上限。",
67
+ "provenance": {
68
+ "asset_id": "http-client-policy",
69
+ "entry_id": "clients.appClient",
70
+ "decision": "HYBRID",
71
+ "merge_group": "MG-HTTP-RECOVERY",
72
+ "corpus_batch": "batch-4/HTTP_CLIENT",
73
+ "split_ledger": "POMaster_VNext/corpus/master/batch-4/split-ledger.yaml"
74
+ }
75
+ }
76
+ ],
77
+ "sources": [
78
+ {
79
+ "type": "design_seed",
80
+ "ref": "POMaster_VNext/corpus/master/batch-4/split-ledger.yaml",
81
+ "captured_by": "agent:claude/batch-4-catalog-uplift",
82
+ "locator": {
83
+ "asset": "http-client-policy",
84
+ "entry": "clients.appClient",
85
+ "corpus_batch": "batch-4/HTTP_CLIENT",
86
+ "upstream_source_ref": "outputs/frontend/10_planned/http-client-policy.yaml"
87
+ },
88
+ "clean_room_note": "independently rewritten from field corpus batch-4 material; zero verbatim copy"
89
+ }
90
+ ],
91
+ "review_notes": [
92
+ "与既有 POLICY.WEB.API.ERROR_NORMALIZATION / POLICY.WEB.API.RETRY_DISCIPLINE 面审(MIG-B4):本条只覆盖会话恢复链(刷新单飞/重放上限/权限拒绝不刷新),错误归一化与一般重试纪律仍归既有条款管辖。"
93
+ ]
94
+ }
@@ -0,0 +1,88 @@
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 同族标注);HTTP Client 契约消费面"
27
+ },
28
+ "id": "POLICY.WEB.API.SINGLE_HTTP_CLIENT",
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": "HTTP Client 单点统一",
39
+ "statement_zh": "base URL、认证、超时、取消、trace 与响应 envelope 必须由统一 HTTP Client 单点处理。",
40
+ "statement_en_keywords": [
41
+ "single http client",
42
+ "base url",
43
+ "auth",
44
+ "timeout",
45
+ "cancellation",
46
+ "trace",
47
+ "envelope"
48
+ ],
49
+ "applies_when": {
50
+ "lane": "frontend",
51
+ "condition": "构建请求基础设施",
52
+ "lanes": [
53
+ "frontend"
54
+ ],
55
+ "capabilities": [
56
+ "CAPABILITY.API_CONTRACT"
57
+ ],
58
+ "applicability_note": "构建请求基础设施"
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": "MUST 第2条"
75
+ }
76
+ }
77
+ ],
78
+ "review_notes": [],
79
+ "review": {
80
+ "disposition": "ACCEPT",
81
+ "seq": "pilot-0001",
82
+ "ref": "docs/catalog-pilot-report.md:L226(§8.2 #24)",
83
+ "absorbed_duplicates": [
84
+ "POLICY.WEB.API.NO_RAW_FETCH",
85
+ "POLICY.WEB.API.NO_LOGIC_DUPLICATION"
86
+ ]
87
+ }
88
+ }
@@ -0,0 +1,81 @@
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": "仅建议:任何 gate 永不因本条目单独 FAIL,至多产生 WARN/HINT 或进入 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.SINGLE_LOADING_SOURCE",
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": "loading 状态单一来源",
39
+ "statement_zh": "loading 状态来源应唯一,避免多处布尔重复。",
40
+ "statement_en_keywords": [
41
+ "single loading source",
42
+ "no duplicated boolean state"
43
+ ],
44
+ "applies_when": {
45
+ "lane": "frontend",
46
+ "condition": "页面加载态管理",
47
+ "lanes": [
48
+ "frontend"
49
+ ],
50
+ "capabilities": [
51
+ "CAPABILITY.API_CONTRACT"
52
+ ],
53
+ "applicability_note": "页面加载态管理"
54
+ },
55
+ "enforcement": "advisory",
56
+ "authority": {
57
+ "owner": "HUMAN_OWNER",
58
+ "delegates": [],
59
+ "write_policy": "EVOLUTION_CHANNEL",
60
+ "escalation_hint": "catalog-pilot-human-review"
61
+ },
62
+ "origin": "ingested",
63
+ "sources": [
64
+ {
65
+ "type": "design_seed",
66
+ "ref": "pomaster/components/frontend-hard-spec/assets/universal/15-request-api-protocol.md",
67
+ "captured_by": "agent:claude/semantic-decomposition-pilot",
68
+ "locator": {
69
+ "section": "SHOULD 第2条"
70
+ }
71
+ }
72
+ ],
73
+ "review_notes": [
74
+ "SHOULD 正确降级 advisory"
75
+ ],
76
+ "review": {
77
+ "disposition": "ACCEPT",
78
+ "seq": "pilot-0001",
79
+ "ref": "docs/catalog-pilot-report.md:L241(§8.2 #39)"
80
+ }
81
+ }
@@ -0,0 +1,81 @@
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.TRANSPORT_VS_BUSINESS",
29
+ "kind": "policy",
30
+ "axis_profile": "policy_default",
31
+ "classification": "UNIVERSAL_POLICY",
32
+ "axes": {
33
+ "lifecycle": "PROPOSED",
34
+ "confidence": "UNRESOLVED",
35
+ "evidence": "PLANNED",
36
+ "change": "STABLE"
37
+ },
38
+ "title_zh": "传输成功与业务成功分判",
39
+ "statement_zh": "传输成功与业务成功必须分别判定;HTTP 非成功状态、契约解析失败、取消、超时、离线与业务错误不得混为同一类。",
40
+ "statement_en_keywords": [
41
+ "transport vs business success",
42
+ "error taxonomy separation"
43
+ ],
44
+ "applies_when": {
45
+ "lane": "frontend",
46
+ "condition": "请求结果判定",
47
+ "lanes": [
48
+ "frontend"
49
+ ],
50
+ "capabilities": [
51
+ "CAPABILITY.API_CONTRACT"
52
+ ],
53
+ "applicability_note": "请求结果判定"
54
+ },
55
+ "enforcement": "required_when_applicable",
56
+ "authority": {
57
+ "owner": "HUMAN_OWNER",
58
+ "delegates": [],
59
+ "write_policy": "EVOLUTION_CHANNEL",
60
+ "escalation_hint": "catalog-pilot-human-review"
61
+ },
62
+ "origin": "ingested",
63
+ "sources": [
64
+ {
65
+ "type": "design_seed",
66
+ "ref": "pomaster/components/frontend-hard-spec/assets/universal/15-request-api-protocol.md",
67
+ "captured_by": "agent:claude/semantic-decomposition-pilot",
68
+ "locator": {
69
+ "section": "MUST 第7条"
70
+ }
71
+ }
72
+ ],
73
+ "review_notes": [
74
+ "语义上跨车道通用(任何 client 侧);pilot-0001 R-F:已上提 UNIVERSAL_POLICY(判据:语句实体——传输/业务成功判定——可跨 lane 存在;applies_when.lane 维持不动,待 V7 lane 轴登记后再议)"
75
+ ],
76
+ "review": {
77
+ "disposition": "ADJUST",
78
+ "seq": "pilot-0001",
79
+ "ref": "docs/catalog-pilot-report.md:L231(§8.2 #29)"
80
+ }
81
+ }
@@ -0,0 +1,82 @@
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.TRUSTED_ENDPOINT_SOURCE",
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": "endpoint 只来自受控来源",
39
+ "statement_zh": "endpoint、redirect 与 base URL 只能来自受控配置或正式契约,禁止由不可信 URL 参数直接拼接。",
40
+ "statement_en_keywords": [
41
+ "trusted endpoint sources",
42
+ "no untrusted URL concatenation",
43
+ "SSRF-adjacent"
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 第10条"
71
+ }
72
+ }
73
+ ],
74
+ "review_notes": [
75
+ "安全相关;与 BE 12『正式契约=OpenAPI 权威』构成跨车道契约链;pilot-0001 互引:POLICY.API.NO_INFORMAL_CONTRACT"
76
+ ],
77
+ "review": {
78
+ "disposition": "ACCEPT",
79
+ "seq": "pilot-0001",
80
+ "ref": "docs/catalog-pilot-report.md:L234(§8.2 #32)"
81
+ }
82
+ }
@@ -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 正文层(两种落法待裁决,见 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.TYPED_DOMAIN_NAMING",
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": "请求函数类型化与领域命名",
39
+ "statement_zh": "请求函数必须带类型并使用稳定的领域动词命名。",
40
+ "statement_en_keywords": [
41
+ "typed request functions",
42
+ "stable domain verb naming"
43
+ ],
44
+ "applies_when": {
45
+ "lane": "frontend",
46
+ "condition": "定义任何请求函数",
47
+ "lanes": [
48
+ "frontend"
49
+ ],
50
+ "capabilities": [
51
+ "CAPABILITY.API_CONTRACT"
52
+ ],
53
+ "applicability_note": "定义任何请求函数"
54
+ },
55
+ "enforcement": "required_when_applicable",
56
+ "authority": {
57
+ "owner": "HUMAN_OWNER",
58
+ "delegates": [],
59
+ "write_policy": "EVOLUTION_CHANNEL",
60
+ "escalation_hint": "catalog-pilot-human-review"
61
+ },
62
+ "origin": "ingested",
63
+ "sources": [
64
+ {
65
+ "type": "design_seed",
66
+ "ref": "pomaster/components/frontend-hard-spec/assets/universal/15-request-api-protocol.md",
67
+ "captured_by": "agent:claude/semantic-decomposition-pilot",
68
+ "locator": {
69
+ "section": "MUST 第3条"
70
+ }
71
+ }
72
+ ],
73
+ "review_notes": [],
74
+ "review": {
75
+ "disposition": "ACCEPT",
76
+ "seq": "pilot-0001",
77
+ "ref": "docs/catalog-pilot-report.md:L227(§8.2 #25)"
78
+ }
79
+ }