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.
- package/COMMERCIAL_LICENSE.md +35 -0
- package/LICENSE +83 -0
- package/README.md +396 -0
- package/SECURITY.md +22 -0
- package/TRADEMARKS.md +12 -0
- package/catalog/candidates/candidates-draft.json +198 -0
- package/catalog/candidates/rejected.json +422 -0
- package/catalog/catalog-lock.draft.json +822 -0
- package/catalog/gates/gate.be.api.contract_checks.json +138 -0
- package/catalog/gates/gate.be.chg.contract_change_checks.json +138 -0
- package/catalog/gates/gate.chg.prechange_checks.json +155 -0
- package/catalog/gates/gate.web.api.request_checks.json +149 -0
- package/catalog/gates/gate.web.grid.checks.json +149 -0
- package/catalog/knowledge/knowledge.api.example_stable_error_code.json +80 -0
- package/catalog/knowledge/knowledge.chg.example_compat_window.json +87 -0
- package/catalog/knowledge/knowledge.chg.example_prop_migration.json +87 -0
- package/catalog/knowledge/knowledge.fp.api.field_drift_no_contract.json +83 -0
- package/catalog/knowledge/knowledge.fp.api.per_page_http_client.json +83 -0
- package/catalog/knowledge/knowledge.fp.be.contract_drift.json +87 -0
- package/catalog/knowledge/knowledge.fp.chg.page_local_padding.json +88 -0
- package/catalog/knowledge/knowledge.fp.grid.global_td_width.json +87 -0
- package/catalog/knowledge/knowledge.web.api.example_get_entity_list.json +83 -0
- package/catalog/knowledge/knowledge.web.grid.example_column_preset.json +83 -0
- package/catalog/policies/authority.be.api_contract_ownership.json +77 -0
- package/catalog/policies/authority.be.contract_ownership.json +73 -0
- package/catalog/policies/authority.chg.change_owners.json +75 -0
- package/catalog/policies/authority.web.api.request_owners.json +82 -0
- package/catalog/policies/authority.web.grid.ownership.json +78 -0
- package/catalog/policies/policy.api.backward_compat_defaults.json +83 -0
- package/catalog/policies/policy.api.contract_impl_consistency.json +81 -0
- package/catalog/policies/policy.api.no_informal_contract.json +82 -0
- package/catalog/policies/policy.arch.decision_tradeoff_record.json +78 -0
- package/catalog/policies/policy.cache.lifecycle_definition.json +79 -0
- package/catalog/policies/policy.chg.affect_templates.json +79 -0
- package/catalog/policies/policy.chg.breaking_versioning.json +81 -0
- package/catalog/policies/policy.chg.compat_migration_rollback.json +82 -0
- package/catalog/policies/policy.chg.deprecate_before_delete.json +82 -0
- package/catalog/policies/policy.chg.fix_at_root_cause_level.json +78 -0
- package/catalog/policies/policy.chg.observable_evolution.json +78 -0
- package/catalog/policies/policy.chg.prechange_consumer_scan.json +83 -0
- package/catalog/policies/policy.chg.staged_rollout.json +79 -0
- package/catalog/policies/policy.chg.sync_contract_docs_tests.json +81 -0
- package/catalog/policies/policy.conflict.priority_ladder.json +79 -0
- package/catalog/policies/policy.dep.admission_six_dimension_check.json +84 -0
- package/catalog/policies/policy.dep.change_surface_review.json +82 -0
- package/catalog/policies/policy.dep.introduction_review.json +83 -0
- package/catalog/policies/policy.derived.single_implementation.json +77 -0
- package/catalog/policies/policy.obs.correlation_context_minimum.json +81 -0
- package/catalog/policies/policy.obs.rum_dimension_whitelist.json +77 -0
- package/catalog/policies/policy.proc.pre_code_declaration.json +78 -0
- package/catalog/policies/policy.rel.pre_release_confirmation.json +77 -0
- package/catalog/policies/policy.role.domain_decision_authority.json +77 -0
- package/catalog/policies/policy.sec.third_party_execution_register.json +78 -0
- package/catalog/policies/policy.spec.admission_criteria.json +79 -0
- package/catalog/policies/policy.spec.derived_view_regeneration.json +79 -0
- package/catalog/policies/policy.spec.draft_not_baseline.json +77 -0
- package/catalog/policies/policy.spec.file_structure_contract.json +76 -0
- package/catalog/policies/policy.spec.metadata_required.json +76 -0
- package/catalog/policies/policy.spec.post_dev_backfill_classify.json +74 -0
- package/catalog/policies/policy.spec.procedural_record_not_surrogate.json +76 -0
- package/catalog/policies/policy.spec.semantic_identity.json +77 -0
- package/catalog/policies/policy.spec.unresolved_ledger_gate.json +79 -0
- package/catalog/policies/policy.stack.no_implicit_selection.json +77 -0
- package/catalog/policies/policy.tool.scoped_scan_boundary.json +78 -0
- package/catalog/policies/policy.web.api.auth_app_client_split.json +93 -0
- package/catalog/policies/policy.web.api.client_change_impact.json +86 -0
- package/catalog/policies/policy.web.api.domain_api_only.json +84 -0
- package/catalog/policies/policy.web.api.error_normalization.json +82 -0
- package/catalog/policies/policy.web.api.generated_client.json +82 -0
- package/catalog/policies/policy.web.api.late_result_guard.json +80 -0
- package/catalog/policies/policy.web.api.mutation_idempotency.json +84 -0
- package/catalog/policies/policy.web.api.no_network_optimism.json +82 -0
- package/catalog/policies/policy.web.api.query_cancel_stale_drop.json +80 -0
- package/catalog/policies/policy.web.api.request_infrastructure.json +95 -0
- package/catalog/policies/policy.web.api.retry_discipline.json +87 -0
- package/catalog/policies/policy.web.api.session_recovery_split.json +94 -0
- package/catalog/policies/policy.web.api.single_http_client.json +88 -0
- package/catalog/policies/policy.web.api.single_loading_source.json +81 -0
- package/catalog/policies/policy.web.api.transport_vs_business.json +81 -0
- package/catalog/policies/policy.web.api.trusted_endpoint_source.json +82 -0
- package/catalog/policies/policy.web.api.typed_domain_naming.json +79 -0
- package/catalog/policies/policy.web.arch.layer_isolation.json +376 -0
- package/catalog/policies/policy.web.arch.naming_conventions.json +207 -0
- package/catalog/policies/policy.web.arch.public_api_barrel.json +134 -0
- package/catalog/policies/policy.web.chg.controlled_change_triggers.json +79 -0
- package/catalog/policies/policy.web.copy.suppression_ledger_discipline.json +78 -0
- package/catalog/policies/policy.web.grid.column_schema_fields.json +78 -0
- package/catalog/policies/policy.web.grid.config_isolation.json +78 -0
- package/catalog/policies/policy.web.grid.freeze_key_columns.json +77 -0
- package/catalog/policies/policy.web.grid.interaction_registry.json +80 -0
- package/catalog/policies/policy.web.grid.keyboard_clipboard.json +79 -0
- package/catalog/policies/policy.web.grid.schema_driven_shell.json +81 -0
- package/catalog/policies/policy.web.grid.schema_versioning.json +78 -0
- package/catalog/policies/policy.web.grid.server_ops_virtualization.json +81 -0
- package/catalog/policies/policy.web.grid.shell_change_matrix.json +76 -0
- package/catalog/policies/policy.web.grid.width_fix_ladder.json +79 -0
- package/catalog/policies/policy.web.perf.budget_skeleton.json +110 -0
- package/catalog/policies/policy.web.style.ownership_matrix.json +207 -0
- package/catalog/policies/policy.web.track.consent_lifecycle.json +78 -0
- package/catalog/policies/policy.web.track.privacy_default_deny.json +81 -0
- package/catalog/policies/policy.web.track.stable_event_keys.json +78 -0
- package/catalog/policies/policy.web.uiux.provider_evidence_not_business_truth.json +86 -0
- package/catalog/projection-presets/registry-tree.yaml +307 -0
- package/catalog/sensors/sensor.browser.deterministic.json +53 -0
- package/catalog/sensors/sensor.browser.interactive.json +58 -0
- package/catalog/sensors/sensor.build.static.json +45 -0
- package/catalog/sensors/sensor.contract.conformance.json +47 -0
- package/catalog/sensors/sensor.performance.budget.json +46 -0
- package/catalog/sensors/sensor.production.metric.json +44 -0
- package/catalog/tools/apply_human_review_pilot_0001.py +488 -0
- package/catalog/tools/materialize_batch4_uplift.py +776 -0
- package/catalog/tools/materialize_catalog_pilot.py +784 -0
- package/dist/bin.js +52362 -0
- package/legal/THIRD_PARTY_NOTICES.md +336 -0
- 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
|
+
}
|