openworkproof 1.1.0__tar.gz → 1.2.0__tar.gz

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 (159) hide show
  1. {openworkproof-1.1.0/src/openworkproof.egg-info → openworkproof-1.2.0}/PKG-INFO +242 -29
  2. {openworkproof-1.1.0 → openworkproof-1.2.0}/README.md +240 -26
  3. {openworkproof-1.1.0 → openworkproof-1.2.0}/pyproject.toml +3 -4
  4. openworkproof-1.2.0/src/openworkproof/__init__.py +40 -0
  5. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/acceptance.py +674 -0
  6. openworkproof-1.2.0/src/openworkproof/adapters/__init__.py +29 -0
  7. openworkproof-1.2.0/src/openworkproof/adapters/code_delivery_github.py +458 -0
  8. openworkproof-1.2.0/src/openworkproof/agentteams_controller_client.py +130 -0
  9. openworkproof-1.2.0/src/openworkproof/agentteams_matrix_client.py +222 -0
  10. openworkproof-1.2.0/src/openworkproof/authority.py +140 -0
  11. openworkproof-1.2.0/src/openworkproof/binding.py +911 -0
  12. openworkproof-1.2.0/src/openworkproof/binding_transactions.py +1476 -0
  13. openworkproof-1.2.0/src/openworkproof/cli.py +653 -0
  14. openworkproof-1.2.0/src/openworkproof/delivery_package.py +3317 -0
  15. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/evidence.py +506 -26
  16. openworkproof-1.2.0/src/openworkproof/integrity.py +1431 -0
  17. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/mcp_server.py +237 -48
  18. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/mcp_transport.py +293 -1
  19. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/models.py +2551 -73
  20. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/policy.py +282 -4
  21. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schema_registry.py +326 -49
  22. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/acceptance-transition.schema.json +1 -0
  23. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/commitment-anchor.schema.json +1 -0
  24. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/policy-anchor.schema.json +1 -0
  25. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/schema-registry.json +1 -0
  26. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/subject-claim.schema.json +1 -0
  27. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/verification-arm-result.schema.json +1 -0
  28. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/verification-decision.schema.json +1 -0
  29. openworkproof-1.2.0/src/openworkproof/schemas/v0.2/verification-profile.schema.json +1 -0
  30. openworkproof-1.2.0/src/openworkproof/schemas/v0.3/evaluation-scope.schema.json +1 -0
  31. openworkproof-1.2.0/src/openworkproof/schemas/v0.3/schema-registry.json +1 -0
  32. openworkproof-1.2.0/src/openworkproof/schemas/v0.3/verification-arm-result.schema.json +1 -0
  33. openworkproof-1.2.0/src/openworkproof/schemas/v0.3/verification-decision.schema.json +1 -0
  34. openworkproof-1.2.0/src/openworkproof/schemas/v0.3/verification-profile.schema.json +1 -0
  35. openworkproof-1.2.0/src/openworkproof/schemas/v0.4/action-binding-manifest.schema.json +1 -0
  36. openworkproof-1.2.0/src/openworkproof/schemas/v0.4/action-receipt.schema.json +1 -0
  37. openworkproof-1.2.0/src/openworkproof/schemas/v0.4/authority-checkpoint.schema.json +1 -0
  38. openworkproof-1.2.0/src/openworkproof/schemas/v0.4/binding-decision.schema.json +1 -0
  39. openworkproof-1.2.0/src/openworkproof/schemas/v0.4/judgment-commitment.schema.json +1 -0
  40. openworkproof-1.2.0/src/openworkproof/schemas/v0.4/schema-registry.json +1 -0
  41. openworkproof-1.2.0/src/openworkproof/schemas/v0.5/schema-registry.json +1 -0
  42. openworkproof-1.2.0/src/openworkproof/schemas/v0.5/verification-arm-result.schema.json +1 -0
  43. openworkproof-1.2.0/src/openworkproof/schemas/v0.5/verification-decision.schema.json +1 -0
  44. openworkproof-1.2.0/src/openworkproof/schemas/v0.5/verification-profile.schema.json +1 -0
  45. openworkproof-1.2.0/src/openworkproof/scope.py +1512 -0
  46. openworkproof-1.2.0/src/openworkproof/services.py +565 -0
  47. openworkproof-1.2.0/src/openworkproof/settlement.py +368 -0
  48. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/signing.py +221 -16
  49. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/state.py +32 -22
  50. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/team_network_client.py +88 -15
  51. openworkproof-1.2.0/src/openworkproof/verification.py +3673 -0
  52. {openworkproof-1.1.0 → openworkproof-1.2.0/src/openworkproof.egg-info}/PKG-INFO +242 -29
  53. openworkproof-1.2.0/src/openworkproof.egg-info/SOURCES.txt +152 -0
  54. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_acceptance.py +161 -0
  55. openworkproof-1.2.0/tests/test_acceptance_binding_v04.py +320 -0
  56. openworkproof-1.2.0/tests/test_acceptance_v03.py +367 -0
  57. openworkproof-1.2.0/tests/test_acceptance_v05.py +539 -0
  58. openworkproof-1.2.0/tests/test_agentteams_adapters.py +275 -0
  59. openworkproof-1.2.0/tests/test_authority_checkpoint_v04.py +477 -0
  60. openworkproof-1.2.0/tests/test_binding_adversarial_v04.py +624 -0
  61. openworkproof-1.2.0/tests/test_binding_decision_v04.py +524 -0
  62. openworkproof-1.2.0/tests/test_binding_demo_v04.py +145 -0
  63. openworkproof-1.2.0/tests/test_binding_gateway_v04.py +1469 -0
  64. openworkproof-1.2.0/tests/test_binding_holdout_v04.py +108 -0
  65. openworkproof-1.2.0/tests/test_binding_interfaces_v04.py +339 -0
  66. openworkproof-1.2.0/tests/test_binding_manifest_transactions_v04.py +1735 -0
  67. openworkproof-1.2.0/tests/test_binding_models_v04.py +1002 -0
  68. openworkproof-1.2.0/tests/test_binding_schema_v04.py +258 -0
  69. openworkproof-1.2.0/tests/test_binding_transactions_v04.py +490 -0
  70. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_candidate_supplychain_integration.py +17 -0
  71. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_cli_transport.py +106 -0
  72. openworkproof-1.2.0/tests/test_code_delivery_binding_v04.py +251 -0
  73. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_contract.py +9 -2
  74. openworkproof-1.2.0/tests/test_control_integrity_v05.py +663 -0
  75. openworkproof-1.2.0/tests/test_convert_docker_archive.py +179 -0
  76. openworkproof-1.2.0/tests/test_delivery_m4_agentscope.py +168 -0
  77. openworkproof-1.2.0/tests/test_delivery_package_v02.py +904 -0
  78. openworkproof-1.2.0/tests/test_delivery_package_v03.py +181 -0
  79. openworkproof-1.2.0/tests/test_delivery_package_v04.py +369 -0
  80. openworkproof-1.2.0/tests/test_delivery_package_v05.py +367 -0
  81. openworkproof-1.2.0/tests/test_documentation_boundaries.py +95 -0
  82. openworkproof-1.2.0/tests/test_export_evidence_bundles.py +963 -0
  83. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_image_supply_chain.py +47 -0
  84. openworkproof-1.2.0/tests/test_judgment_transactions_v04.py +677 -0
  85. openworkproof-1.2.0/tests/test_package.py +34 -0
  86. openworkproof-1.2.0/tests/test_population_integrity_v05.py +1621 -0
  87. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_run_tests_runner.py +25 -7
  88. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_schema_registry.py +379 -22
  89. openworkproof-1.2.0/tests/test_scope_adversarial_v03.py +601 -0
  90. openworkproof-1.2.0/tests/test_scope_building_v03.py +562 -0
  91. openworkproof-1.2.0/tests/test_scope_demo_v03.py +396 -0
  92. openworkproof-1.2.0/tests/test_scope_interfaces_v03.py +342 -0
  93. openworkproof-1.2.0/tests/test_scope_models_v03.py +407 -0
  94. openworkproof-1.2.0/tests/test_scope_transactions_v03.py +410 -0
  95. openworkproof-1.2.0/tests/test_settlement_readiness.py +539 -0
  96. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_signing.py +18 -1
  97. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_state.py +15 -0
  98. openworkproof-1.2.0/tests/test_team_network_client.py +640 -0
  99. openworkproof-1.2.0/tests/test_v02_adversarial.py +290 -0
  100. openworkproof-1.2.0/tests/test_v02_bundles.py +134 -0
  101. openworkproof-1.2.0/tests/test_v02_interfaces.py +287 -0
  102. openworkproof-1.2.0/tests/test_verification_integrity_adapters_v05.py +2151 -0
  103. openworkproof-1.2.0/tests/test_verification_integrity_adversarial_v05.py +1714 -0
  104. openworkproof-1.2.0/tests/test_verification_integrity_demo_v05.py +632 -0
  105. openworkproof-1.2.0/tests/test_verification_integrity_interfaces_v05.py +585 -0
  106. openworkproof-1.2.0/tests/test_verification_integrity_models_v05.py +1666 -0
  107. openworkproof-1.2.0/tests/test_verification_integrity_transactions_v05.py +2171 -0
  108. openworkproof-1.2.0/tests/test_verification_models_v02.py +910 -0
  109. openworkproof-1.2.0/tests/test_verification_transactions_v02.py +570 -0
  110. openworkproof-1.2.0/tests/test_verification_transactions_v03.py +872 -0
  111. openworkproof-1.1.0/src/openworkproof/__init__.py +0 -1
  112. openworkproof-1.1.0/src/openworkproof/cli.py +0 -164
  113. openworkproof-1.1.0/src/openworkproof.egg-info/SOURCES.txt +0 -70
  114. openworkproof-1.1.0/tests/test_package.py +0 -7
  115. openworkproof-1.1.0/tests/test_team_network_client.py +0 -235
  116. {openworkproof-1.1.0 → openworkproof-1.2.0}/LICENSE +0 -0
  117. {openworkproof-1.1.0 → openworkproof-1.2.0}/setup.cfg +0 -0
  118. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/composition.py +0 -0
  119. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/execution_adapter.py +0 -0
  120. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/external_acceptor.py +0 -0
  121. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/predicates.py +0 -0
  122. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/__init__.py +0 -0
  123. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/analysis.py +0 -0
  124. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/errors.py +0 -0
  125. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/models.py +0 -0
  126. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/output.py +0 -0
  127. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/reader.py +0 -0
  128. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/sources.py +0 -0
  129. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/traversal.py +0 -0
  130. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_tools.py +0 -0
  131. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/runtime_context.py +0 -0
  132. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/acceptance-receipt.schema.json +0 -0
  133. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/acceptance-rejection-receipt.schema.json +0 -0
  134. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/action-receipt.schema.json +0 -0
  135. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/capability-grant.schema.json +0 -0
  136. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/schema-registry.json +0 -0
  137. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/work-order.schema.json +0 -0
  138. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/trusted_helper.py +0 -0
  139. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/dependency_links.txt +0 -0
  140. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/entry_points.txt +0 -0
  141. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/requires.txt +0 -0
  142. {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/top_level.txt +0 -0
  143. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_acceptor_rejection.py +0 -0
  144. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_delivery_m1.py +0 -0
  145. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_delivery_m2.py +0 -0
  146. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_delivery_m3_dify.py +0 -0
  147. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_execution_adapter.py +0 -0
  148. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_independent_recomposition.py +0 -0
  149. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_mcp_server.py +0 -0
  150. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_policy.py +0 -0
  151. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_predicates.py +0 -0
  152. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_prepare_image_context.py +0 -0
  153. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_proof_composition.py +0 -0
  154. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_receipt_chain.py +0 -0
  155. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_replay.py +0 -0
  156. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_repo_pipeline.py +0 -0
  157. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_repo_read_transaction.py +0 -0
  158. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_sandbox.py +0 -0
  159. {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_trusted_helper.py +0 -0
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openworkproof
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: Agent work contracts and verifiable execution protocol — Ed25519-signed, offline-verifiable proof-carrying work for AI agents.
5
- License: MIT
5
+ License-Expression: Apache-2.0
6
6
  Project-URL: Homepage, https://github.com/dengyier/OpenWorkProof
7
7
  Project-URL: Repository, https://github.com/dengyier/OpenWorkProof
8
8
  Project-URL: Issues, https://github.com/dengyier/OpenWorkProof/issues
9
9
  Keywords: agent,verifiable,ai,work-contract,mcp,audit,sign,ed25519,proof-carrying,mcp-server
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: MIT License
13
12
  Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
@@ -35,12 +34,22 @@ Dynamic: license-file
35
34
 
36
35
  # OpenWorkProof
37
36
 
37
+ <!-- mcp-name: io.github.dengyier/OpenWorkProof -->
38
+
38
39
  > Agent 可以生成结果,但凭什么交付?
39
40
  > Agent Work Contracts and Verifiable Execution Protocol
40
41
 
42
+ <div align="center">
43
+ <a href="README_en.md">English</a> | <strong>中文</strong>
44
+ </div>
45
+
46
+ ---
47
+
41
48
  项目地址:https://github.com/dengyier/OpenWorkProof
42
- 当前版本:1.0.0
49
+ 当前版本:1.2.0
43
50
  许可证:Apache-2.0
51
+ PyPI:[openworkproof](https://pypi.org/project/openworkproof/)
52
+ MCP Registry:[io.github.dengyier/OpenWorkProof](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.dengyier%2FOpenWorkProof/versions/1.2.0)
44
53
 
45
54
  ---
46
55
 
@@ -144,7 +153,7 @@ running → locally_verified → proof_ready → awaiting_human → accepted
144
153
  ↘ rejected
145
154
  ```
146
155
 
147
- 详细协议 Schema 见 [specs/v0.1](specs/v0.1/)。
156
+ 详细协议 Schema 见 [specs](specs/)(当前覆盖 v0.1–v0.5)。
148
157
 
149
158
  ---
150
159
 
@@ -152,7 +161,7 @@ running → locally_verified → proof_ready → awaiting_human → accepted
152
161
 
153
162
  ### 环境要求
154
163
 
155
- - Python 3.12(`>=3.12, <3.13`)
164
+ - Python ≥ 3.10(支持 3.10 / 3.11 / 3.12 / 3.13)
156
165
  - Git
157
166
  - macOS 或 Linux
158
167
 
@@ -164,14 +173,14 @@ running → locally_verified → proof_ready → awaiting_human → accepted
164
173
  pip install openworkproof
165
174
  ```
166
175
 
167
- 安装后即获得 `owp` CLI 命令和完整的 Python API。
176
+ 安装后即获得 `owp` CLI 命令、`owp-mcp` MCP Server 命令和完整的 Python API。
168
177
 
169
178
  **本地开发环境:**
170
179
 
171
180
  ```bash
172
181
  git clone https://github.com/dengyier/OpenWorkProof.git
173
182
  cd OpenWorkProof
174
- python3.12 -m venv .venv
183
+ python3 -m venv .venv
175
184
  ./.venv/bin/python -m pip install -r requirements-lock.txt
176
185
  ./.venv/bin/python -m pip install -e . # 可编辑安装,同步代码修改
177
186
  ```
@@ -185,9 +194,106 @@ owp status
185
194
  # 运行全量测试(约 5 分钟,需本地开发环境)
186
195
  ./.venv/bin/python -m pytest -q
187
196
 
188
- # 预期结果:2283 passed, 7 skipped, 0 failed
197
+ # 精确数量以当前命令输出为准;下方记录最终发布候选的 fresh 验证快照
198
+ ```
199
+
200
+ ### Scope-Bound Verification v0.3 与 21 天付费试点
201
+
202
+ v0.3 把“到底验证了哪些文件、测试与交付对象”纳入签名协议。Manager 冻结
203
+ `EvaluationScopeManifest`,Verifier 分别提交正臂和负臂的 Observed Scope,
204
+ Decision composer 只有在两臂人口一致、必选目标完整、注册负控被捕获时,
205
+ 才会形成限定范围的 `VERIFIED`。范围遗漏、选择器漂移或证据不足只能得到
206
+ `UNKNOWN`,不能用局部绿灯冒充完整交付。
207
+
208
+ ```bash
209
+ owp scope-build --claim claim.json --source-revision COMMIT_SHA --rules rules.json
210
+ owp scope-validate scope.json
211
+ owp scope-commit pilot.sqlite3 signed-scope-envelope.json
212
+ owp scope-compare scope.json observed-scope.json
213
+ owp delivery-build --privacy-view customer_private pilot.sqlite3 delivery-package/
214
+ owp audit-replay delivery-package/
215
+ ```
216
+
217
+ v0.3 证明的是代码交付中“声明范围与观察范围精确一致”。它不证明未编码的
218
+ 业务意图、客户已经接受、已经付款、资金已释放、自动结算、普遍正确性或
219
+ 法规合规。MCP/A2A 继续负责互操作、身份、安全、任务和消息能力;
220
+ OpenWorkProof 作为补充层,把一次工作的授权、范围证据和验收依据冻结下来。
221
+
222
+ 商业验证材料见 [21 天范围可验证交付试点](docs/pilot/scope-bound-verification-offer.md),
223
+ 买方交付样例见 [Scope Coverage Report](docs/pilot/scope-coverage-report.example.md)。
224
+ 当前外部付费、客户验收、上游采用与正式部署均为 `not evidenced`。
225
+
226
+ ### 验证完整性 Verification Integrity v0.5
227
+
228
+ v0.5 在 v0.3 的“声明范围与观察范围一致”之上,把**选择前的合格人口**与
229
+ **负控失败原因**一并冻结进签名协议。v0.3 只能证明“被选中的部分被验证了”;
230
+ v0.5 额外证明“选择之前存在哪些合格人口、选择器实际选中了什么,以及负向
231
+ 控制失败是否来自注册的原因”,从而堵住两类此前测不到的盲区:
232
+
233
+ - **人口盲区**:执行引擎能看到多个合格测试,但选择器选出了零个。运行本身
234
+ 正常结束,v0.5 得出 `UNKNOWN / POPULATION_CAPTURE_FAILED`,不会把局部
235
+ 绿灯当成完整交付。
236
+ - **负控腐化**:注册的变异体仍然失败,但失败原因(错误码 / predicate 签名)
237
+ 与注册签名不一致。v0.5 得出 `UNKNOWN / CONTROL_FAILURE_SIGNATURE_MISMATCH`,
238
+ 不会把“碰巧失败”当成“按预期失败”。
239
+
240
+ 三态边界保持单调:`VERIFIED`(人口 matched + 负控 proven + 正臂满足)、
241
+ `REFUTED`(负控 survived)、`UNKNOWN`(人口 empty/capture_failed/drifted/
242
+ unavailable 或负控 mismatched/unavailable)。`UNKNOWN` 是安全结论,不是系统
243
+ 崩溃,也不是失败。
244
+
245
+ ```bash
246
+ owp integrity-observation validate population.json
247
+ owp control-observation validate control.json
248
+ owp delivery-build --privacy-view customer_private pilot.sqlite3 delivery-package/
249
+ owp audit-replay delivery-package/
189
250
  ```
190
251
 
252
+ 退出码:人口 `matched` 为 `0`,其余人口状态为 `3`;负控 `proven` 为 `0`、
253
+ `survived` 为 `4`、`mismatched/unavailable` 为 `3`;输入不合法为 `1`。
254
+
255
+ 离线验证、原因码表与恢复边界见
256
+ [离线验签说明](docs/offline-verification.md)。真实 Issue 演示见
257
+ `tests/integrity-demo/rich-4196/README.md`(Rich #4196)。该演示由
258
+ OpenWorkProof 自建,`upstream_adoption`、`customer_case`、
259
+ `commercial_validation` 均为 `not_evidenced`;它不证明任何客户采用、已经
260
+ 付款、资金已释放、自动结算、普遍正确性或法规合规。
261
+
262
+ ### Evidence Lifecycle v0.2 兼容入口
263
+
264
+ 当前 1.2.0 版本保留 v0.2 的 Profile 校验、正负证据提交、验证决定、Delivery
265
+ Package、离线审计和结算就绪度接口:
266
+
267
+ ```bash
268
+ owp profile-validate signed-profile.json
269
+ owp verify-positive pilot.sqlite3 signed-positive-result.json
270
+ owp verify-negative pilot.sqlite3 signed-negative-result.json
271
+ owp verify-compose --mode prepare pilot.sqlite3 decision-request.json
272
+ owp verify-compose --mode commit pilot.sqlite3 signed-decision.json
273
+ owp delivery-build --privacy-view public pilot.sqlite3 delivery-package/
274
+ owp audit-replay delivery-package/
275
+ owp settlement-status pilot.sqlite3
276
+ ```
277
+
278
+ 既有运营步骤、信任等级成本和商业证据计分卡见
279
+ [v0.2 可验证交付试点](docs/pilot/README.md)。示例对象只用于本地解析和
280
+ 接入演练,不代表真实客户、客户验收、付款、资金释放或正式部署。
281
+
282
+ 1.2.0 本地待发布候选在 source revision
283
+ `d0bec9d2f2c3cf12568fa866d16be1a56de4aa9c` 上完成发布门,并新增不可变
284
+ [候选库存](supply-chain/images/candidates/d0bec9d2f2c3cf12568fa866d16be1a56de4aa9c.json):
285
+
286
+ - v0.5 focused:`401 passed、0 failed`;
287
+ - candidate live:`176 passed、0 failed`;
288
+ - required-live 全量:`3494 passed、0 failed、0 skipped`;
289
+ - 冻结执行镜像:
290
+ `docker.io/openworkproof/execution-test@sha256:6d0dadec750eb498ed4d2260b4de65f33ed1c146adda6e64ec8ba588f7a88097`;
291
+ - Rich #4196 v0.5 交付包离线重放为
292
+ `VERIFICATION PASSED / VERIFIED / READY_FOR_ACCEPTANCE`。
293
+
294
+ `READY_FOR_ACCEPTANCE` 表示证据包满足进入验收的协议条件,不等于客户已经
295
+ 验收、付款或部署。详细环境、耗时与边界见 [docs/status.md](docs/status.md)。
296
+
191
297
  ### 运行端到端演示
192
298
 
193
299
  OpenWorkProof 提供两个独立的端到端验证演示,覆盖不同的项目类型和协议场景:
@@ -200,7 +306,7 @@ OpenWorkProof 提供两个独立的端到端验证演示,覆盖不同的项目
200
306
  ```bash
201
307
  ./.venv/bin/python -m pytest tests/test_delivery_m2.py -q
202
308
 
203
- # 预期结果:5 passed
309
+ # 预期:退出码 0;精确数量以当前命令输出为准
204
310
  ```
205
311
 
206
312
  该演示完整覆盖 9 步证据链:
@@ -227,7 +333,7 @@ OpenWorkProof 提供两个独立的端到端验证演示,覆盖不同的项目
227
333
  ```bash
228
334
  ./.venv/bin/python -m pytest tests/test_delivery_m3_dify.py -q
229
335
 
230
- # 预期结果:7 passed
336
+ # 预期:退出码 0;精确数量以当前命令输出为准
231
337
  ```
232
338
 
233
339
  该 Bug 发生在 Dify 的 QuestionClassifierNode 节点中——用户在工作流中
@@ -310,17 +416,35 @@ payload.json 示例(run-tests):
310
416
  }
311
417
  ```
312
418
 
313
- ### 2. MCP 传输层(stdio)
419
+ ### 2. MCP Server(stdio)
314
420
 
315
- OpenWorkProof 协调器已封装为 MCP 工具,可被任何 MCP 客户端(如 Claude Desktop、
316
- Cursor 等)直接调用:
421
+ OpenWorkProof 已注册到官方 MCP Registry(`io.github.dengyier/OpenWorkProof`),
422
+ 提供 21 个 MCP 工具,可被任何 MCP 客户端(Claude Desktop、Cursor、VS Code 等)直接调用:
317
423
 
318
424
  ```bash
319
- # 启动 stdio MCP 服务器
320
- ./.venv/bin/python -m openworkproof.mcp_transport
425
+ # 启动 MCP Server(pip install 后直接可用)
426
+ owp-mcp
427
+
428
+ # 或通过 Python 模块启动
429
+ python -m openworkproof.mcp_transport
321
430
  ```
322
431
 
323
- 提供的 MCP 工具:
432
+ 提供的 MCP 工具(21 个):
433
+
434
+ **独立验证工具(无需 ledger):**
435
+
436
+ | 工具 | 功能 |
437
+ |------|------|
438
+ | `owp_generate_keypair` | 生成 Ed25519 密钥对 |
439
+ | `owp_compute_key_id` | 从公钥派生 key_id |
440
+ | `owp_sign_payload` | 对规范化载荷签名 |
441
+ | `owp_verify_signature` | 验证已签名载荷 |
442
+ | `owp_compute_digest` | 计算 JCS 规范化 SHA-256 摘要 |
443
+ | `owp_verify_work_order` | 验证 WorkOrder 身份绑定 |
444
+ | `owp_verify_nested_claim` | 验证 AgentRequest / HumanDecision 嵌套声明 |
445
+ | `owp_list_domains` | 列出所有规范域名 |
446
+
447
+ **Ledger 协调工具:**
324
448
 
325
449
  | 工具 | 功能 |
326
450
  |------|------|
@@ -328,19 +452,43 @@ Cursor 等)直接调用:
328
452
  | `owp_run_tests(ledger, payload)` | 转发 run-tests 执行 |
329
453
  | `owp_repo_read(ledger, payload)` | 转发 repo-read 执行 |
330
454
 
455
+ **实用工具:**
456
+
457
+ | 工具 | 功能 |
458
+ |------|------|
459
+ | `owp_get_schema` | 获取权威 JSON Schema |
460
+ | `owp_get_schema_digest` | 获取 Schema 冻结摘要 |
461
+ | `owp_analyze_repo` | 分析仓库结构 |
462
+
331
463
  在 MCP 客户端配置中添加:
332
464
 
465
+ **Claude Desktop**(`~/Library/Application Support/Claude/claude_desktop_config.json`):
466
+
467
+ ```json
468
+ {
469
+ "mcpServers": {
470
+ "openworkproof": {
471
+ "command": "owp-mcp"
472
+ }
473
+ }
474
+ }
475
+ ```
476
+
477
+ **Cursor / VS Code**(`.cursor/mcp.json`):
478
+
333
479
  ```json
334
480
  {
335
481
  "mcpServers": {
336
482
  "openworkproof": {
337
- "command": "/path/to/.venv/bin/python",
338
- "args": ["-m", "openworkproof.mcp_transport"]
483
+ "command": "uvx",
484
+ "args": ["--from", "openworkproof", "owp-mcp"]
339
485
  }
340
486
  }
341
487
  }
342
488
  ```
343
489
 
490
+ 更多配置方式见 [MCP_SERVER.md](MCP_SERVER.md)。
491
+
344
492
  ### 3. Python API
345
493
 
346
494
  ```python
@@ -465,7 +613,7 @@ OpenWorkProof/
465
613
  │ ├── composition.py # 因果回放层 + 确定性 CompositionReport
466
614
  │ ├── acceptance.py # 终态验收 + 离线验签器(verify_acceptance_bundle)
467
615
  │ ├── mcp_server.py # 协调器:complete_receipt_publication / compose_proof 等
468
- │ ├── mcp_transport.py # MCP stdio 传输层
616
+ │ ├── mcp_transport.py # MCP Server(既有工具 + v0.2/v0.3 接口)
469
617
  │ ├── cli.py # CLI 传输层(owp 命令)
470
618
  │ ├── execution_adapter.py # AgentTeams 执行适配层
471
619
  │ ├── team_network_client.py # TCP 网络客户端
@@ -476,9 +624,9 @@ OpenWorkProof/
476
624
  │ ├── repo_tools.py # 仓库管道工具
477
625
  │ ├── runtime_context.py # 运行时上下文
478
626
  │ ├── trusted_helper.py # 可信助手请求分发
479
- │ └── schemas/v0.1/ # JSON Schema 文件
480
- ├── specs/v0.1/ # 协议 Schema(WorkOrder/Grant/Receipt/Acceptance)
481
- ├── tests/ # 2283 项一致性测试
627
+ │ └── schemas/v0.1..v0.5/ # 多版本 JSON Schema 文件
628
+ ├── specs/v0.1..v0.5/ # 公开协议 Schema
629
+ ├── tests/ # 协议、故障注入与端到端测试
482
630
  ├── docs/ # 文档(状态、演示日志、离线验签说明)
483
631
  ├── supply-chain/ # 可信构建镜像 + 候选清单
484
632
  ├── pyproject.toml # 打包元数据
@@ -502,13 +650,15 @@ OpenWorkProof/
502
650
  - Acceptor 拒绝路径:同权威 Acceptor 签名的 AcceptanceRejectionReceipt
503
651
  - 独立 Verifier 结果与确定性 recomposition
504
652
  - deny 收据生产入口(`produce_deny_receipt`)
505
- - CLI(`owp status` / `owp run-tests` / `owp repo-read`)
506
- - MCP stdio 传输层
653
+ - CLI(既有执行入口 + v0.2/v0.3 范围验证、交付包、审计和就绪度入口)
654
+ - MCP Server(既有工具 + 生命周期聚合接口 + 两个只读 Scope 工具;已注册到 MCP Registry
655
+ `io.github.dengyier/OpenWorkProof`)
507
656
  - AgentTeams TCP 网络客户端 + 执行适配层
508
657
  - Docker 生产执行器(STARTED_UNCONFIRMED 恢复)
509
658
  - Rich #4196 完整五角色端到端演示(Acceptor TCP 签名 + 离线验签)
510
659
  - Dify #33013 完整五角色端到端演示(AI 应用平台类,跨项目类型通用性验证)
511
- - **全量测试:2283 passed、0 failed、7 skipped**
660
+ - **v0.5 focused:401 passed、0 failed;candidate live:176 passed、0 failed**
661
+ - **1.2.0 本地待发布 required-live 门:3494 passed、0 failed、0 skipped**
512
662
 
513
663
  **尚未完成:** 其他 ToolCall handler 与 evidence publication 的调用闭包、
514
664
  正式赛事提交。
@@ -558,7 +708,8 @@ Dify 是面向终端用户的 AI 工作流平台,与 Rich 的开发者工具
558
708
  6. ~~完成 Acceptor 拒绝路径、真实外部 Acceptor 复现~~(已完成)
559
709
  7. ~~完成 deny 收据生产入口~~(已完成)
560
710
  8. ~~完成 Dify #33013 自包含演示及跨项目类型通用性验证~~(已完成)
561
- 9. 剩余:其他 ToolCall handler 与 evidence publication 的调用闭包、正式赛事提交。
711
+ 9. ~~MCP Server 注册到官方 MCP Registry~~(`io.github.dengyier/OpenWorkProof` v1.2.0 元数据已就绪;远端发布以 Registry 回读为准)
712
+ 10. 剩余:其他 ToolCall handler 与 evidence publication 的调用闭包、正式赛事提交。
562
713
 
563
714
  ---
564
715
 
@@ -573,8 +724,9 @@ Dify 是面向终端用户的 AI 工作流平台,与 Rich 的开发者工具
573
724
  - 真实开源 Issue 的任务封装
574
725
  - 安全、隐私和数据治理审查
575
726
 
576
- 仓库采用 Apache-2.0 许可证。贡献流程与贡献者协议仍在制定中,
577
- 欢迎先通过 GitHub Issue 提出建议。
727
+ 仓库采用 Apache-2.0 许可证。PyPI 包已发布至 [pypi.org/project/openworkproof](https://pypi.org/project/openworkproof/),
728
+ MCP Server 已注册至 [MCP Registry](https://registry.modelcontextprotocol.io/)。
729
+ 贡献流程与贡献者协议仍在制定中,欢迎先通过 GitHub Issue 提出建议。
578
730
 
579
731
  ## 项目主体
580
732
 
@@ -592,3 +744,64 @@ OpenWorkProof 希望让 Agent 工作从「可以生成结果」,迈向:
592
744
 
593
745
  OpenWorkProof 不提高 Agent 的智力,而是为 Agent 增加进入社会协作所需的
594
746
  责任结构。
747
+
748
+ ---
749
+
750
+ ## Judgment-to-Action Binding v0.4
751
+
752
+ v0.4 为 Agent 交付增加**判断—行动绑定**:用可验证的执行凭证回答
753
+ 「Agent 实际做的,是否仍然对应客户原先批准的业务判断」。
754
+
755
+ ### 业务语言(Business-First)
756
+
757
+ OpenWorkProof 提供的是**可验证的 Agent 执行凭证**。它:
758
+
759
+ - ✅ 证明「这次执行依据什么授权、做了什么、验证器是否真的能抓到谎言」;
760
+ - ❌ 不成为支付机构、不充当真理预言机、不做法律裁决、不替代客户验收。
761
+
762
+ ### v0.4 状态链与门
763
+
764
+ ```text
765
+ Customer Acceptor 签署 JudgmentCommitment(执行前)
766
+ ↓
767
+ Manager 提交 ActionBindingManifest(判断↔执行约束绑定)
768
+ ↓
769
+ Agent v0.4 请求 + ActionReceipt(原生绑定同一 Manifest)
770
+ ↓
771
+ 独立 Verifier 组合 BindingDecision(BOUND / UNBOUND / INDETERMINATE)
772
+ ↓
773
+ 双门:VerificationDecision=VERIFIED ∧ BindingDecision=BOUND ∧ Acceptance=ACTIVE
774
+ ↓
775
+ READY_FOR_SETTLEMENT_REVIEW(不证明付款或结算)
776
+ ```
777
+
778
+ ### 外部权威边界
779
+
780
+ 高风险场景可接入外部 **AuthorityCheckpoint**(客户控制域的独立密钥)。
781
+ OWP 只验证 checkpoint 的格式、签名、链与绑定,**不拥有外部治理与信任根**;
782
+ 权威状态只按行动发生时点(as-of)判定,解析器不可用时不伪造 checkpoint。
783
+
784
+ ### 真值边界(Truth Boundaries)
785
+
786
+ - `BOUND` 只表示「行动与记录判断一致」,**不等于**判断正确、代码无缺陷、
787
+ 客户验收、付款或结算。
788
+ - 未取得的商业状态一律标记 `not_evidenced`(上游采纳、客户使用、付款)。
789
+
790
+ ### 接口
791
+
792
+ ```text
793
+ owp judgment validate
794
+ owp binding-manifest validate
795
+ owp binding compose
796
+ owp binding verify
797
+ owp binding history
798
+ owp package replay --binding
799
+ ```
800
+
801
+ 只读 MCP 工具:`owp_validate_judgment_commitment`、
802
+ `owp_validate_action_binding_manifest`、`owp_get_binding_status`、
803
+ `owp_explain_binding_decision`。MCP 验证**拒绝任何 Acceptor/Verifier 私钥
804
+ 参数**,只读不签名不提交。
805
+
806
+ 完整实现状态见 [docs/status.md](docs/status.md),21 天付费试点材料见
807
+ [docs/pilot/](docs/pilot/)。