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.
- {openworkproof-1.1.0/src/openworkproof.egg-info → openworkproof-1.2.0}/PKG-INFO +242 -29
- {openworkproof-1.1.0 → openworkproof-1.2.0}/README.md +240 -26
- {openworkproof-1.1.0 → openworkproof-1.2.0}/pyproject.toml +3 -4
- openworkproof-1.2.0/src/openworkproof/__init__.py +40 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/acceptance.py +674 -0
- openworkproof-1.2.0/src/openworkproof/adapters/__init__.py +29 -0
- openworkproof-1.2.0/src/openworkproof/adapters/code_delivery_github.py +458 -0
- openworkproof-1.2.0/src/openworkproof/agentteams_controller_client.py +130 -0
- openworkproof-1.2.0/src/openworkproof/agentteams_matrix_client.py +222 -0
- openworkproof-1.2.0/src/openworkproof/authority.py +140 -0
- openworkproof-1.2.0/src/openworkproof/binding.py +911 -0
- openworkproof-1.2.0/src/openworkproof/binding_transactions.py +1476 -0
- openworkproof-1.2.0/src/openworkproof/cli.py +653 -0
- openworkproof-1.2.0/src/openworkproof/delivery_package.py +3317 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/evidence.py +506 -26
- openworkproof-1.2.0/src/openworkproof/integrity.py +1431 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/mcp_server.py +237 -48
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/mcp_transport.py +293 -1
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/models.py +2551 -73
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/policy.py +282 -4
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schema_registry.py +326 -49
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/acceptance-transition.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/commitment-anchor.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/policy-anchor.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/schema-registry.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/subject-claim.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/verification-arm-result.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/verification-decision.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.2/verification-profile.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.3/evaluation-scope.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.3/schema-registry.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.3/verification-arm-result.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.3/verification-decision.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.3/verification-profile.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.4/action-binding-manifest.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.4/action-receipt.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.4/authority-checkpoint.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.4/binding-decision.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.4/judgment-commitment.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.4/schema-registry.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.5/schema-registry.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.5/verification-arm-result.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.5/verification-decision.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/schemas/v0.5/verification-profile.schema.json +1 -0
- openworkproof-1.2.0/src/openworkproof/scope.py +1512 -0
- openworkproof-1.2.0/src/openworkproof/services.py +565 -0
- openworkproof-1.2.0/src/openworkproof/settlement.py +368 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/signing.py +221 -16
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/state.py +32 -22
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/team_network_client.py +88 -15
- openworkproof-1.2.0/src/openworkproof/verification.py +3673 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0/src/openworkproof.egg-info}/PKG-INFO +242 -29
- openworkproof-1.2.0/src/openworkproof.egg-info/SOURCES.txt +152 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_acceptance.py +161 -0
- openworkproof-1.2.0/tests/test_acceptance_binding_v04.py +320 -0
- openworkproof-1.2.0/tests/test_acceptance_v03.py +367 -0
- openworkproof-1.2.0/tests/test_acceptance_v05.py +539 -0
- openworkproof-1.2.0/tests/test_agentteams_adapters.py +275 -0
- openworkproof-1.2.0/tests/test_authority_checkpoint_v04.py +477 -0
- openworkproof-1.2.0/tests/test_binding_adversarial_v04.py +624 -0
- openworkproof-1.2.0/tests/test_binding_decision_v04.py +524 -0
- openworkproof-1.2.0/tests/test_binding_demo_v04.py +145 -0
- openworkproof-1.2.0/tests/test_binding_gateway_v04.py +1469 -0
- openworkproof-1.2.0/tests/test_binding_holdout_v04.py +108 -0
- openworkproof-1.2.0/tests/test_binding_interfaces_v04.py +339 -0
- openworkproof-1.2.0/tests/test_binding_manifest_transactions_v04.py +1735 -0
- openworkproof-1.2.0/tests/test_binding_models_v04.py +1002 -0
- openworkproof-1.2.0/tests/test_binding_schema_v04.py +258 -0
- openworkproof-1.2.0/tests/test_binding_transactions_v04.py +490 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_candidate_supplychain_integration.py +17 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_cli_transport.py +106 -0
- openworkproof-1.2.0/tests/test_code_delivery_binding_v04.py +251 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_contract.py +9 -2
- openworkproof-1.2.0/tests/test_control_integrity_v05.py +663 -0
- openworkproof-1.2.0/tests/test_convert_docker_archive.py +179 -0
- openworkproof-1.2.0/tests/test_delivery_m4_agentscope.py +168 -0
- openworkproof-1.2.0/tests/test_delivery_package_v02.py +904 -0
- openworkproof-1.2.0/tests/test_delivery_package_v03.py +181 -0
- openworkproof-1.2.0/tests/test_delivery_package_v04.py +369 -0
- openworkproof-1.2.0/tests/test_delivery_package_v05.py +367 -0
- openworkproof-1.2.0/tests/test_documentation_boundaries.py +95 -0
- openworkproof-1.2.0/tests/test_export_evidence_bundles.py +963 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_image_supply_chain.py +47 -0
- openworkproof-1.2.0/tests/test_judgment_transactions_v04.py +677 -0
- openworkproof-1.2.0/tests/test_package.py +34 -0
- openworkproof-1.2.0/tests/test_population_integrity_v05.py +1621 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_run_tests_runner.py +25 -7
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_schema_registry.py +379 -22
- openworkproof-1.2.0/tests/test_scope_adversarial_v03.py +601 -0
- openworkproof-1.2.0/tests/test_scope_building_v03.py +562 -0
- openworkproof-1.2.0/tests/test_scope_demo_v03.py +396 -0
- openworkproof-1.2.0/tests/test_scope_interfaces_v03.py +342 -0
- openworkproof-1.2.0/tests/test_scope_models_v03.py +407 -0
- openworkproof-1.2.0/tests/test_scope_transactions_v03.py +410 -0
- openworkproof-1.2.0/tests/test_settlement_readiness.py +539 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_signing.py +18 -1
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_state.py +15 -0
- openworkproof-1.2.0/tests/test_team_network_client.py +640 -0
- openworkproof-1.2.0/tests/test_v02_adversarial.py +290 -0
- openworkproof-1.2.0/tests/test_v02_bundles.py +134 -0
- openworkproof-1.2.0/tests/test_v02_interfaces.py +287 -0
- openworkproof-1.2.0/tests/test_verification_integrity_adapters_v05.py +2151 -0
- openworkproof-1.2.0/tests/test_verification_integrity_adversarial_v05.py +1714 -0
- openworkproof-1.2.0/tests/test_verification_integrity_demo_v05.py +632 -0
- openworkproof-1.2.0/tests/test_verification_integrity_interfaces_v05.py +585 -0
- openworkproof-1.2.0/tests/test_verification_integrity_models_v05.py +1666 -0
- openworkproof-1.2.0/tests/test_verification_integrity_transactions_v05.py +2171 -0
- openworkproof-1.2.0/tests/test_verification_models_v02.py +910 -0
- openworkproof-1.2.0/tests/test_verification_transactions_v02.py +570 -0
- openworkproof-1.2.0/tests/test_verification_transactions_v03.py +872 -0
- openworkproof-1.1.0/src/openworkproof/__init__.py +0 -1
- openworkproof-1.1.0/src/openworkproof/cli.py +0 -164
- openworkproof-1.1.0/src/openworkproof.egg-info/SOURCES.txt +0 -70
- openworkproof-1.1.0/tests/test_package.py +0 -7
- openworkproof-1.1.0/tests/test_team_network_client.py +0 -235
- {openworkproof-1.1.0 → openworkproof-1.2.0}/LICENSE +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/setup.cfg +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/composition.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/execution_adapter.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/external_acceptor.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/predicates.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/__init__.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/analysis.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/errors.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/models.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/output.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/reader.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/sources.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_pipeline/traversal.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/repo_tools.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/runtime_context.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/acceptance-receipt.schema.json +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/acceptance-rejection-receipt.schema.json +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/action-receipt.schema.json +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/capability-grant.schema.json +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/schema-registry.json +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/schemas/v0.1/work-order.schema.json +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof/trusted_helper.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/dependency_links.txt +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/entry_points.txt +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/requires.txt +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/src/openworkproof.egg-info/top_level.txt +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_acceptor_rejection.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_delivery_m1.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_delivery_m2.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_delivery_m3_dify.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_execution_adapter.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_independent_recomposition.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_mcp_server.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_policy.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_predicates.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_prepare_image_context.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_proof_composition.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_receipt_chain.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_replay.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_repo_pipeline.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_repo_read_transaction.py +0 -0
- {openworkproof-1.1.0 → openworkproof-1.2.0}/tests/test_sandbox.py +0 -0
- {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.
|
|
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:
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
-
#
|
|
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
|
|
419
|
+
### 2. MCP Server(stdio)
|
|
314
420
|
|
|
315
|
-
OpenWorkProof
|
|
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
|
-
# 启动
|
|
320
|
-
|
|
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": "
|
|
338
|
-
"args": ["
|
|
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
|
|
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/
|
|
480
|
-
├── specs/v0.1/
|
|
481
|
-
├── tests/ #
|
|
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
|
|
506
|
-
- MCP
|
|
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
|
-
-
|
|
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.
|
|
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
|
-
|
|
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/)。
|