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,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
|
|
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
|
|
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": "优先机器判卷;判卷步骤草案见 catalog/gates/ 同协议 recipe",
|
|
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
|
+
"change_classes",
|
|
23
|
+
"applicability_note"
|
|
24
|
+
],
|
|
25
|
+
"basis": "condition『接口变更过门禁』"
|
|
26
|
+
},
|
|
27
|
+
"id": "GATE.BE.API.CONTRACT_CHECKS",
|
|
28
|
+
"kind": "gate_recipe",
|
|
29
|
+
"axis_profile": "gate_recipe_default",
|
|
30
|
+
"classification": "GATE_RECIPE",
|
|
31
|
+
"axes": {
|
|
32
|
+
"lifecycle": "PROPOSED",
|
|
33
|
+
"confidence": "UNRESOLVED",
|
|
34
|
+
"evidence": "PLANNED",
|
|
35
|
+
"change": "STABLE"
|
|
36
|
+
},
|
|
37
|
+
"title_zh": "API 契约五方同步门禁",
|
|
38
|
+
"statement_zh": "API 契约门禁:契约、实现、生成客户端、测试与 handoff 五者已同步。",
|
|
39
|
+
"applies_when": {
|
|
40
|
+
"lane": "any",
|
|
41
|
+
"condition": "接口变更过门禁",
|
|
42
|
+
"change_classes": [
|
|
43
|
+
"PUBLIC_CONTRACT_CHANGE"
|
|
44
|
+
],
|
|
45
|
+
"applicability_note": "接口变更过门禁"
|
|
46
|
+
},
|
|
47
|
+
"enforcement": "deterministic_where_possible",
|
|
48
|
+
"gate_def_draft": {
|
|
49
|
+
"anchor": "GATE.BE.API.CONTRACT_CHECKS@0.1.0",
|
|
50
|
+
"anchor_note": "03-gate-result.schema gate_def 要求 '<定义id>@semver';若 Owner 裁决 POLICY.GATE.* 落法则改写为 POLICY.GATE.BE.API.CONTRACT_CHECKS@0.1.0",
|
|
51
|
+
"result_schema_ref": "POMaster_VNext/packages/schemas/assets/03-gate-result.schema.json",
|
|
52
|
+
"verdict_vocabulary": [
|
|
53
|
+
"passed",
|
|
54
|
+
"failed",
|
|
55
|
+
"warning",
|
|
56
|
+
"blocked",
|
|
57
|
+
"not_run",
|
|
58
|
+
"not_configured",
|
|
59
|
+
"skipped_blindspot"
|
|
60
|
+
],
|
|
61
|
+
"judging_rules": {
|
|
62
|
+
"counts_not_applicable_required": "counts.not_applicable 必填——『为何没查』必须是数字而非沉默(C1)",
|
|
63
|
+
"trust_twin": "asserted/recomputed 孪生字段组:永不信任自报值,判卷唯一依据为 GateRunner 重算(C5)",
|
|
64
|
+
"blindspot_evidence": "verdict=skipped_blindspot 必须附 blindspot.fixture_regression 证据引用",
|
|
65
|
+
"aggregate_honesty": "聚合值永远不含未声明的静默跳过;not_configured ≠ passed"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"checks": [
|
|
69
|
+
{
|
|
70
|
+
"seq": 1,
|
|
71
|
+
"check_id": "contract_synced",
|
|
72
|
+
"statement_zh": "正式契约(OpenAPI)已同步",
|
|
73
|
+
"judgeability": "machine",
|
|
74
|
+
"machine_support": "operationId 机器键对账(D15)"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"seq": 2,
|
|
78
|
+
"check_id": "implementation_synced",
|
|
79
|
+
"statement_zh": "实现已与契约一致",
|
|
80
|
+
"judgeability": "machine",
|
|
81
|
+
"machine_support": "契约-实现一致性扫描(POLICY.API.CONTRACT_IMPL_CONSISTENCY 为策略正源)"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"seq": 3,
|
|
85
|
+
"check_id": "generated_client_synced",
|
|
86
|
+
"statement_zh": "生成客户端已按新契约再生成",
|
|
87
|
+
"judgeability": "machine",
|
|
88
|
+
"machine_support": "生成产物版本/指纹比对"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"seq": 4,
|
|
92
|
+
"check_id": "tests_synced",
|
|
93
|
+
"statement_zh": "兼容测试已更新",
|
|
94
|
+
"judgeability": "hybrid",
|
|
95
|
+
"machine_support": "测试文件引用 operationId 存在性",
|
|
96
|
+
"manual_part": "断言语义覆盖度"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"seq": 5,
|
|
100
|
+
"check_id": "handoff_synced",
|
|
101
|
+
"statement_zh": "handoff 文档已同步",
|
|
102
|
+
"judgeability": "hybrid",
|
|
103
|
+
"machine_support": "handoff 产物存在性与引用链",
|
|
104
|
+
"manual_part": "内容正确性"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"policy_refs": [
|
|
108
|
+
"AUTHORITY.BE.API_CONTRACT_OWNERSHIP",
|
|
109
|
+
"POLICY.API.BACKWARD_COMPAT_DEFAULTS",
|
|
110
|
+
"POLICY.API.CONTRACT_IMPL_CONSISTENCY",
|
|
111
|
+
"POLICY.API.NO_INFORMAL_CONTRACT"
|
|
112
|
+
],
|
|
113
|
+
"authority": {
|
|
114
|
+
"owner": "HUMAN_OWNER",
|
|
115
|
+
"delegates": [],
|
|
116
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
117
|
+
"escalation_hint": "catalog-pilot-human-review"
|
|
118
|
+
},
|
|
119
|
+
"origin": "ingested",
|
|
120
|
+
"sources": [
|
|
121
|
+
{
|
|
122
|
+
"type": "design_seed",
|
|
123
|
+
"ref": "pomaster/components/backend-hard-spec/assets/universal/12-api-contract-protocol.md",
|
|
124
|
+
"captured_by": "agent:claude/semantic-decomposition-pilot",
|
|
125
|
+
"locator": {
|
|
126
|
+
"section": "Checklist"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"review_notes": [
|
|
131
|
+
"GATE. 前缀需 vocab PR;与 M4 Contract Gate vNext 检查集对照;pilot-0001 §3.4 互指:与 POLICY.CHG.SYNC_CONTRACT_DOCS_TESTS 同步清单对象不同、重叠约 60%(契约/示例/测试/文档/通知 vs 契约/实现/生成客户端/测试/handoff),两口径统一留 Owner 后续裁决"
|
|
132
|
+
],
|
|
133
|
+
"review": {
|
|
134
|
+
"disposition": "ADJUST",
|
|
135
|
+
"seq": "pilot-0001",
|
|
136
|
+
"ref": "docs/catalog-pilot-report.md:L295(§8.5 #78)"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
|
|
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
|
|
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": "优先机器判卷;判卷步骤草案见 catalog/gates/ 同协议 recipe",
|
|
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
|
+
"change_classes",
|
|
24
|
+
"applicability_note"
|
|
25
|
+
],
|
|
26
|
+
"basis": "condition『契约变更过门禁』——词面逐字"
|
|
27
|
+
},
|
|
28
|
+
"id": "GATE.BE.CHG.CONTRACT_CHANGE_CHECKS",
|
|
29
|
+
"kind": "gate_recipe",
|
|
30
|
+
"axis_profile": "gate_recipe_default",
|
|
31
|
+
"classification": "GATE_RECIPE",
|
|
32
|
+
"axes": {
|
|
33
|
+
"lifecycle": "PROPOSED",
|
|
34
|
+
"confidence": "UNRESOLVED",
|
|
35
|
+
"evidence": "PLANNED",
|
|
36
|
+
"change": "STABLE"
|
|
37
|
+
},
|
|
38
|
+
"title_zh": "契约变更五类消费者门禁",
|
|
39
|
+
"statement_zh": "契约变更门禁:API、数据(migration)、消息、配置与运行五类消费者均已检查。",
|
|
40
|
+
"applies_when": {
|
|
41
|
+
"lane": "backend",
|
|
42
|
+
"condition": "契约变更过门禁",
|
|
43
|
+
"lanes": [
|
|
44
|
+
"backend"
|
|
45
|
+
],
|
|
46
|
+
"change_classes": [
|
|
47
|
+
"PUBLIC_CONTRACT_CHANGE"
|
|
48
|
+
],
|
|
49
|
+
"applicability_note": "契约变更过门禁"
|
|
50
|
+
},
|
|
51
|
+
"enforcement": "deterministic_where_possible",
|
|
52
|
+
"gate_def_draft": {
|
|
53
|
+
"anchor": "GATE.BE.CHG.CONTRACT_CHANGE_CHECKS@0.1.0",
|
|
54
|
+
"anchor_note": "03-gate-result.schema gate_def 要求 '<定义id>@semver';若 Owner 裁决 POLICY.GATE.* 落法则改写为 POLICY.GATE.BE.CHG.CONTRACT_CHANGE_CHECKS@0.1.0",
|
|
55
|
+
"result_schema_ref": "POMaster_VNext/packages/schemas/assets/03-gate-result.schema.json",
|
|
56
|
+
"verdict_vocabulary": [
|
|
57
|
+
"passed",
|
|
58
|
+
"failed",
|
|
59
|
+
"warning",
|
|
60
|
+
"blocked",
|
|
61
|
+
"not_run",
|
|
62
|
+
"not_configured",
|
|
63
|
+
"skipped_blindspot"
|
|
64
|
+
],
|
|
65
|
+
"judging_rules": {
|
|
66
|
+
"counts_not_applicable_required": "counts.not_applicable 必填——『为何没查』必须是数字而非沉默(C1)",
|
|
67
|
+
"trust_twin": "asserted/recomputed 孪生字段组:永不信任自报值,判卷唯一依据为 GateRunner 重算(C5)",
|
|
68
|
+
"blindspot_evidence": "verdict=skipped_blindspot 必须附 blindspot.fixture_regression 证据引用",
|
|
69
|
+
"aggregate_honesty": "聚合值永远不含未声明的静默跳过;not_configured ≠ passed"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"checks": [
|
|
73
|
+
{
|
|
74
|
+
"seq": 1,
|
|
75
|
+
"check_id": "api_consumers_checked",
|
|
76
|
+
"statement_zh": "API 类消费者已检查",
|
|
77
|
+
"judgeability": "machine",
|
|
78
|
+
"machine_support": "五类消费者为封闭枚举,可逐类做成 checklist 对账"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"seq": 2,
|
|
82
|
+
"check_id": "data_migration_consumers_checked",
|
|
83
|
+
"statement_zh": "数据(migration)类消费者已检查",
|
|
84
|
+
"judgeability": "machine",
|
|
85
|
+
"machine_support": "同上"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"seq": 3,
|
|
89
|
+
"check_id": "message_consumers_checked",
|
|
90
|
+
"statement_zh": "消息类消费者已检查",
|
|
91
|
+
"judgeability": "machine",
|
|
92
|
+
"machine_support": "同上"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"seq": 4,
|
|
96
|
+
"check_id": "config_consumers_checked",
|
|
97
|
+
"statement_zh": "配置类消费者已检查",
|
|
98
|
+
"judgeability": "machine",
|
|
99
|
+
"machine_support": "同上"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"seq": 5,
|
|
103
|
+
"check_id": "runtime_consumers_checked",
|
|
104
|
+
"statement_zh": "运行类消费者已检查",
|
|
105
|
+
"judgeability": "machine",
|
|
106
|
+
"machine_support": "同上"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"policy_refs": [
|
|
110
|
+
"AUTHORITY.BE.CONTRACT_OWNERSHIP",
|
|
111
|
+
"POLICY.CHG.OBSERVABLE_EVOLUTION"
|
|
112
|
+
],
|
|
113
|
+
"authority": {
|
|
114
|
+
"owner": "HUMAN_OWNER",
|
|
115
|
+
"delegates": [],
|
|
116
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
117
|
+
"escalation_hint": "catalog-pilot-human-review"
|
|
118
|
+
},
|
|
119
|
+
"origin": "ingested",
|
|
120
|
+
"sources": [
|
|
121
|
+
{
|
|
122
|
+
"type": "design_seed",
|
|
123
|
+
"ref": "pomaster/components/backend-hard-spec/assets/universal/08-contract-change-protocol.md",
|
|
124
|
+
"captured_by": "agent:claude/semantic-decomposition-pilot",
|
|
125
|
+
"locator": {
|
|
126
|
+
"section": "Checklist"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"review_notes": [
|
|
131
|
+
"五类消费者枚举可直接做成 checklist gate"
|
|
132
|
+
],
|
|
133
|
+
"review": {
|
|
134
|
+
"disposition": "ACCEPT",
|
|
135
|
+
"seq": "pilot-0001",
|
|
136
|
+
"ref": "docs/catalog-pilot-report.md:L281(§8.4 #69)"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
|
|
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
|
|
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": "优先机器判卷;判卷步骤草案见 catalog/gates/ 同协议 recipe",
|
|
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
|
+
"change_classes",
|
|
23
|
+
"applicability_note"
|
|
24
|
+
],
|
|
25
|
+
"basis": "condition『公共变更过门禁』"
|
|
26
|
+
},
|
|
27
|
+
"id": "GATE.CHG.PRECHANGE_CHECKS",
|
|
28
|
+
"kind": "gate_recipe",
|
|
29
|
+
"axis_profile": "gate_recipe_default",
|
|
30
|
+
"classification": "GATE_RECIPE",
|
|
31
|
+
"axes": {
|
|
32
|
+
"lifecycle": "PROPOSED",
|
|
33
|
+
"confidence": "UNRESOLVED",
|
|
34
|
+
"evidence": "PLANNED",
|
|
35
|
+
"change": "STABLE"
|
|
36
|
+
},
|
|
37
|
+
"title_zh": "变更门禁检查单",
|
|
38
|
+
"statement_zh": "变更门禁检查单:①根因层级明确 ②调用方清单完整 ③兼容/迁移/回滚可执行 ④测试示例通知已更新 ⑤Spec 元数据已登记 ⑥开发后规则回填已归类。",
|
|
39
|
+
"applies_when": {
|
|
40
|
+
"lane": "any",
|
|
41
|
+
"condition": "公共变更过门禁",
|
|
42
|
+
"change_classes": [
|
|
43
|
+
"PUBLIC_CONTRACT_CHANGE"
|
|
44
|
+
],
|
|
45
|
+
"applicability_note": "公共变更过门禁"
|
|
46
|
+
},
|
|
47
|
+
"enforcement": "deterministic_where_possible",
|
|
48
|
+
"gate_def_draft": {
|
|
49
|
+
"anchor": "GATE.CHG.PRECHANGE_CHECKS@0.1.0",
|
|
50
|
+
"anchor_note": "03-gate-result.schema gate_def 要求 '<定义id>@semver';若 Owner 裁决 POLICY.GATE.* 落法则改写为 POLICY.GATE.CHG.PRECHANGE_CHECKS@0.1.0",
|
|
51
|
+
"result_schema_ref": "POMaster_VNext/packages/schemas/assets/03-gate-result.schema.json",
|
|
52
|
+
"verdict_vocabulary": [
|
|
53
|
+
"passed",
|
|
54
|
+
"failed",
|
|
55
|
+
"warning",
|
|
56
|
+
"blocked",
|
|
57
|
+
"not_run",
|
|
58
|
+
"not_configured",
|
|
59
|
+
"skipped_blindspot"
|
|
60
|
+
],
|
|
61
|
+
"judging_rules": {
|
|
62
|
+
"counts_not_applicable_required": "counts.not_applicable 必填——『为何没查』必须是数字而非沉默(C1)",
|
|
63
|
+
"trust_twin": "asserted/recomputed 孪生字段组:永不信任自报值,判卷唯一依据为 GateRunner 重算(C5)",
|
|
64
|
+
"blindspot_evidence": "verdict=skipped_blindspot 必须附 blindspot.fixture_regression 证据引用",
|
|
65
|
+
"aggregate_honesty": "聚合值永远不含未声明的静默跳过;not_configured ≠ passed"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"checks": [
|
|
69
|
+
{
|
|
70
|
+
"seq": 1,
|
|
71
|
+
"check_id": "root_cause_level_declared",
|
|
72
|
+
"statement_zh": "根因层级明确:属公共缺陷不得以局部补丁了结,属局部问题不得擅动公共层",
|
|
73
|
+
"judgeability": "hybrid",
|
|
74
|
+
"machine_support": "change/task 对象 payload.class_scan_result(02 信封 R4 条件式)提供同类扫描留痕",
|
|
75
|
+
"manual_part": "公共 vs 局部的语义判定终审在人"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"seq": 2,
|
|
79
|
+
"check_id": "consumer_list_complete",
|
|
80
|
+
"statement_zh": "调用方清单完整:直接与间接消费方均已枚举",
|
|
81
|
+
"judgeability": "hybrid",
|
|
82
|
+
"machine_support": "引用/调用图扫描可枚举候选消费方",
|
|
83
|
+
"manual_part": "清单完整性需 Owner 抽验"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"seq": 3,
|
|
87
|
+
"check_id": "compat_migration_rollback_executable",
|
|
88
|
+
"statement_zh": "兼容、迁移、回滚方案可执行",
|
|
89
|
+
"judgeability": "human",
|
|
90
|
+
"manual_part": "方案可执行性为语义判断"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"seq": 4,
|
|
94
|
+
"check_id": "tests_examples_docs_updated",
|
|
95
|
+
"statement_zh": "测试、示例、文档已同步更新并发出通知",
|
|
96
|
+
"judgeability": "machine",
|
|
97
|
+
"machine_support": "变更记录对象字段存在性 + 工作区 diff 扫描可机判"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"seq": 5,
|
|
101
|
+
"check_id": "spec_metadata_registered",
|
|
102
|
+
"statement_zh": "机器预检:Spec 元数据字段存在(状态/版本/Owner/更新时间/生效范围)",
|
|
103
|
+
"judgeability": "machine",
|
|
104
|
+
"machine_support": "信封 axes/authority/sources 结构性派生承载,字段存在性可机判(pilot-0001 R-D 裁决:转机器派生)"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"seq": 6,
|
|
108
|
+
"check_id": "post_dev_rule_backfill_classified",
|
|
109
|
+
"statement_zh": "开发后 Spec Update Review 已把新规则显式归类(需求级记录/长期 spec/通用规范候选/无需更新)",
|
|
110
|
+
"judgeability": "hybrid",
|
|
111
|
+
"machine_support": "归类字段非空可机判",
|
|
112
|
+
"manual_part": "归类正确性抽验"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"policy_refs": [
|
|
116
|
+
"AUTHORITY.CHG.CHANGE_OWNERS",
|
|
117
|
+
"POLICY.CHG.AFFECT_TEMPLATES",
|
|
118
|
+
"POLICY.CHG.BREAKING_VERSIONING",
|
|
119
|
+
"POLICY.CHG.COMPAT_MIGRATION_ROLLBACK",
|
|
120
|
+
"POLICY.CHG.DEPRECATE_BEFORE_DELETE",
|
|
121
|
+
"POLICY.CHG.FIX_AT_ROOT_CAUSE_LEVEL",
|
|
122
|
+
"POLICY.CHG.PRECHANGE_CONSUMER_SCAN",
|
|
123
|
+
"POLICY.CHG.STAGED_ROLLOUT",
|
|
124
|
+
"POLICY.CHG.SYNC_CONTRACT_DOCS_TESTS",
|
|
125
|
+
"POLICY.SPEC.DRAFT_NOT_BASELINE",
|
|
126
|
+
"POLICY.SPEC.METADATA_REQUIRED",
|
|
127
|
+
"POLICY.SPEC.POST_DEV_BACKFILL_CLASSIFY",
|
|
128
|
+
"POLICY.WEB.CHG.CONTROLLED_CHANGE_TRIGGERS"
|
|
129
|
+
],
|
|
130
|
+
"authority": {
|
|
131
|
+
"owner": "HUMAN_OWNER",
|
|
132
|
+
"delegates": [],
|
|
133
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
134
|
+
"escalation_hint": "catalog-pilot-human-review"
|
|
135
|
+
},
|
|
136
|
+
"origin": "ingested",
|
|
137
|
+
"sources": [
|
|
138
|
+
{
|
|
139
|
+
"type": "design_seed",
|
|
140
|
+
"ref": "pomaster/components/frontend-hard-spec/assets/universal/06-change-governance-protocol.md",
|
|
141
|
+
"captured_by": "agent:claude/semantic-decomposition-pilot",
|
|
142
|
+
"locator": {
|
|
143
|
+
"section": "Checklist(6 项)"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"review_notes": [
|
|
148
|
+
"GATE. 前缀需 vocab PR(见 meta.vocab_findings);检查项④⑤可机判;pilot-0001 R-D 联动:检查项⑤已按 T2 处方改写为『机器预检元数据字段存在』(转机器派生)"
|
|
149
|
+
],
|
|
150
|
+
"review": {
|
|
151
|
+
"disposition": "ADJUST",
|
|
152
|
+
"seq": "pilot-0001",
|
|
153
|
+
"ref": "docs/catalog-pilot-report.md:L215(§8.1 #18)"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"x-vocab-pr": {
|
|
3
|
+
"status": "vocab_pr_candidate",
|
|
4
|
+
"finding": "GATE. 前缀不在 prefixes_v0 15 前缀闭包内(closed-world:未登记前缀解析即 FATAL);且 kind='gate_recipe' 不在 kinds_registry.truth_bodies",
|
|
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
|
|
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": "优先机器判卷;判卷步骤草案见 catalog/gates/ 同协议 recipe",
|
|
16
|
+
"clean_room_note": "statement_zh 为独立改写(clean-room),零逐字拷贝源协议"
|
|
17
|
+
},
|
|
18
|
+
"x-applicability-review": {
|
|
19
|
+
"status": "human_review_candidate",
|
|
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
|
+
"applicability_note"
|
|
24
|
+
],
|
|
25
|
+
"note": "T3 保守派生未见明确词面证据——capabilities/change_classes 留空回退 lane 缺省(O7 行为零变化);列 Human Review 复核议程"
|
|
26
|
+
},
|
|
27
|
+
"id": "GATE.WEB.API.REQUEST_CHECKS",
|
|
28
|
+
"kind": "gate_recipe",
|
|
29
|
+
"axis_profile": "gate_recipe_default",
|
|
30
|
+
"classification": "GATE_RECIPE",
|
|
31
|
+
"axes": {
|
|
32
|
+
"lifecycle": "PROPOSED",
|
|
33
|
+
"confidence": "UNRESOLVED",
|
|
34
|
+
"evidence": "PLANNED",
|
|
35
|
+
"change": "STABLE"
|
|
36
|
+
},
|
|
37
|
+
"title_zh": "请求层门禁检查单",
|
|
38
|
+
"statement_zh": "请求层门禁检查单:①页面仅用 Domain API ②类型与错误统一 ③取消/重试/幂等明确 ④无重复 loading/认证逻辑 ⑤状态判定、旧结果防护与 endpoint 来源明确。",
|
|
39
|
+
"applies_when": {
|
|
40
|
+
"lane": "frontend",
|
|
41
|
+
"condition": "请求层过门禁",
|
|
42
|
+
"lanes": [
|
|
43
|
+
"frontend"
|
|
44
|
+
],
|
|
45
|
+
"applicability_note": "请求层过门禁"
|
|
46
|
+
},
|
|
47
|
+
"enforcement": "deterministic_where_possible",
|
|
48
|
+
"gate_def_draft": {
|
|
49
|
+
"anchor": "GATE.WEB.API.REQUEST_CHECKS@0.1.0",
|
|
50
|
+
"anchor_note": "03-gate-result.schema gate_def 要求 '<定义id>@semver';若 Owner 裁决 POLICY.GATE.* 落法则改写为 POLICY.GATE.WEB.API.REQUEST_CHECKS@0.1.0",
|
|
51
|
+
"result_schema_ref": "POMaster_VNext/packages/schemas/assets/03-gate-result.schema.json",
|
|
52
|
+
"verdict_vocabulary": [
|
|
53
|
+
"passed",
|
|
54
|
+
"failed",
|
|
55
|
+
"warning",
|
|
56
|
+
"blocked",
|
|
57
|
+
"not_run",
|
|
58
|
+
"not_configured",
|
|
59
|
+
"skipped_blindspot"
|
|
60
|
+
],
|
|
61
|
+
"judging_rules": {
|
|
62
|
+
"counts_not_applicable_required": "counts.not_applicable 必填——『为何没查』必须是数字而非沉默(C1)",
|
|
63
|
+
"trust_twin": "asserted/recomputed 孪生字段组:永不信任自报值,判卷唯一依据为 GateRunner 重算(C5)",
|
|
64
|
+
"blindspot_evidence": "verdict=skipped_blindspot 必须附 blindspot.fixture_regression 证据引用",
|
|
65
|
+
"aggregate_honesty": "聚合值永远不含未声明的静默跳过;not_configured ≠ passed"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"checks": [
|
|
69
|
+
{
|
|
70
|
+
"seq": 1,
|
|
71
|
+
"check_id": "domain_api_only",
|
|
72
|
+
"statement_zh": "页面仅使用 Domain API 函数发起请求",
|
|
73
|
+
"judgeability": "machine",
|
|
74
|
+
"machine_support": "静态扫描页面层 import 与 fetch/axios 直调"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"seq": 2,
|
|
78
|
+
"check_id": "typed_and_unified_errors",
|
|
79
|
+
"statement_zh": "请求函数类型化且错误结构统一",
|
|
80
|
+
"judgeability": "hybrid",
|
|
81
|
+
"machine_support": "函数签名/错误类型引用存在性",
|
|
82
|
+
"manual_part": "类型语义一致性"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"seq": 3,
|
|
86
|
+
"check_id": "cancel_retry_idempotency_declared",
|
|
87
|
+
"statement_zh": "取消、重试、幂等边界已显式声明",
|
|
88
|
+
"judgeability": "machine",
|
|
89
|
+
"machine_support": "请求函数契约字段存在性可机判(内联字段清单:StatusPolicy/Cancellation/Retry/RetryAfter/Idempotency)"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"seq": 4,
|
|
93
|
+
"check_id": "no_duplicated_loading_auth",
|
|
94
|
+
"statement_zh": "无重复 loading 或认证逻辑",
|
|
95
|
+
"judgeability": "machine",
|
|
96
|
+
"machine_support": "模式扫描(多 client 实例创建/重复 token 刷新逻辑)"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"seq": 5,
|
|
100
|
+
"check_id": "status_guard_endpoint_source_declared",
|
|
101
|
+
"statement_zh": "状态判定、旧结果防护与 endpoint 来源明确",
|
|
102
|
+
"judgeability": "hybrid",
|
|
103
|
+
"machine_support": "契约字段存在性(StatusPolicy/LateResultGuard/endpoint 来源声明)",
|
|
104
|
+
"manual_part": "声明与实际行为一致性"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"policy_refs": [
|
|
108
|
+
"AUTHORITY.WEB.API.REQUEST_OWNERS",
|
|
109
|
+
"POLICY.WEB.API.CLIENT_CHANGE_IMPACT",
|
|
110
|
+
"POLICY.WEB.API.DOMAIN_API_ONLY",
|
|
111
|
+
"POLICY.WEB.API.ERROR_NORMALIZATION",
|
|
112
|
+
"POLICY.WEB.API.GENERATED_CLIENT",
|
|
113
|
+
"POLICY.WEB.API.LATE_RESULT_GUARD",
|
|
114
|
+
"POLICY.WEB.API.MUTATION_IDEMPOTENCY",
|
|
115
|
+
"POLICY.WEB.API.NO_NETWORK_OPTIMISM",
|
|
116
|
+
"POLICY.WEB.API.QUERY_CANCEL_STALE_DROP",
|
|
117
|
+
"POLICY.WEB.API.RETRY_DISCIPLINE",
|
|
118
|
+
"POLICY.WEB.API.SINGLE_HTTP_CLIENT",
|
|
119
|
+
"POLICY.WEB.API.SINGLE_LOADING_SOURCE",
|
|
120
|
+
"POLICY.WEB.API.TRANSPORT_VS_BUSINESS",
|
|
121
|
+
"POLICY.WEB.API.TRUSTED_ENDPOINT_SOURCE",
|
|
122
|
+
"POLICY.WEB.API.TYPED_DOMAIN_NAMING"
|
|
123
|
+
],
|
|
124
|
+
"authority": {
|
|
125
|
+
"owner": "HUMAN_OWNER",
|
|
126
|
+
"delegates": [],
|
|
127
|
+
"write_policy": "EVOLUTION_CHANNEL",
|
|
128
|
+
"escalation_hint": "catalog-pilot-human-review"
|
|
129
|
+
},
|
|
130
|
+
"origin": "ingested",
|
|
131
|
+
"sources": [
|
|
132
|
+
{
|
|
133
|
+
"type": "design_seed",
|
|
134
|
+
"ref": "pomaster/components/frontend-hard-spec/assets/universal/15-request-api-protocol.md",
|
|
135
|
+
"captured_by": "agent:claude/semantic-decomposition-pilot",
|
|
136
|
+
"locator": {
|
|
137
|
+
"section": "Checklist(5 项)"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
"review_notes": [
|
|
142
|
+
"GATE. 前缀需 vocab PR;pilot-0001 R-C=b 联动:检查项③原『见 POLICY.TPL.API_FUNCTION_CONTRACT 模板』悬空引用已改为内联字段清单"
|
|
143
|
+
],
|
|
144
|
+
"review": {
|
|
145
|
+
"disposition": "ACCEPT",
|
|
146
|
+
"seq": "pilot-0001",
|
|
147
|
+
"ref": "docs/catalog-pilot-report.md:L243(§8.2 #41)"
|
|
148
|
+
}
|
|
149
|
+
}
|