Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2f5f53101 | ||
|
|
62a4067cf7 | ||
|
|
74e603c0c9 |
+115
@@ -0,0 +1,115 @@
|
||||
# Personal-Weixin R10 B3/B4 Evidence Gate Result
|
||||
|
||||
```yaml
|
||||
status: EVIDENCE_REQUIRED
|
||||
decision: STOP_BEFORE_B3_IMPLEMENTATION
|
||||
task: Personal-Weixin R10 post-F0 B3/B4 evidence gate
|
||||
timestamp_utc8: 20260716T101002UTC8
|
||||
|
||||
foundation:
|
||||
implementation_commit: 2fcab6f5833a405a9a26683811600b6e5f1aa7b1
|
||||
implementation_parent: d5b51e1342541bf51887782f530c3d2971155996
|
||||
implementation_tree: bca1a70cabe91c40ad0008f038105cb92fab5edd
|
||||
result_commit: 64a71b6199a8e2bd609ba145349e67b874888505
|
||||
image_digest: sha256:ed741d1f028c4bd507c6eda71fb1dcc11e0815c0107afcbfcbaaaaa23d5a11bb
|
||||
image_digest_kind: local-image-config-digest
|
||||
status: PASS
|
||||
|
||||
lineage:
|
||||
commit: 74e603c0c943501110577dbe3c7f6a0b18b8ec7d
|
||||
parent: d5b51e1342541bf51887782f530c3d2971155996
|
||||
tree: bf12a3ba54f50b9e1131e7e32fa1a958a79777ed
|
||||
amendment_sha256: 014f0488ca971bf4cd8925882f9fc303ecbde19d15515333ba2073b193183990
|
||||
foundation_node: F0_PERSONAL_WEIXIN_FOUNDATION
|
||||
precedes:
|
||||
- B3
|
||||
- B4
|
||||
- B5
|
||||
- B6
|
||||
- B7
|
||||
|
||||
b3:
|
||||
status: EVIDENCE_REQUIRED
|
||||
exact_allowlist_count: 15
|
||||
allowlist_source_commit: d74229927b2dadca7719455984aea10d010c5123
|
||||
evidence_path: release/v2r1c0-rc1/weixin-bridge-evidence.json
|
||||
evidence_present_at_lineage: false
|
||||
implementation_started: false
|
||||
qualifying_post_f0_ref_present: false
|
||||
missing_non_secret_inputs:
|
||||
- exact installed TypeScript/JavaScript source paths and SHA-256 digests
|
||||
- exact inbound bigint and raw field contract
|
||||
- authenticated account, sender, and conversation source ownership
|
||||
- authority-map owner, mode, and schema
|
||||
- candidate credential contract and enforcement-mode owner
|
||||
action: stop_without_implementation_commit
|
||||
|
||||
b4:
|
||||
status: EVIDENCE_REQUIRED
|
||||
exact_allowlist_count: 19
|
||||
allowlist_source_commit: d74229927b2dadca7719455984aea10d010c5123
|
||||
hermes_evidence_path: release/v2r1c0-rc1/hermes-http-contract-evidence.json
|
||||
outbound_binding_evidence_path: release/v2r1c0-rc1/weixin-outbound-binding-evidence.json
|
||||
hermes_evidence_present_at_lineage: false
|
||||
outbound_binding_evidence_present_at_lineage: false
|
||||
implementation_started: false
|
||||
qualifying_post_f0_ref_present: false
|
||||
missing_non_secret_inputs:
|
||||
- live Hermes listener, unit, source, schema, and source digest
|
||||
- exact downstream timeout and tenant/user ownership contract
|
||||
- repeated route_id idempotency behavior
|
||||
- owner/vendor protocol evidence binding exact client_id to provider message_id
|
||||
action: stop_without_implementation_commit
|
||||
|
||||
later_stages:
|
||||
B5: NOT_STARTED
|
||||
B6: NOT_STARTED
|
||||
B7: NOT_STARTED
|
||||
release_preflight: NOT_STARTED
|
||||
canary: NOT_STARTED
|
||||
production_promotion: NOT_STARTED
|
||||
|
||||
repository_state_at_capture:
|
||||
main_commit: 3cf9958cb94614449e093639cbf902216d73447f
|
||||
v1r4c6_tag_peeled_commit: d8cf6058e99f5c7f2dfd2b45a406c0a7edf955b2
|
||||
v2r1c0_tag_present: false
|
||||
|
||||
production:
|
||||
changed: false
|
||||
declared_baseline: V1R4C6
|
||||
declared_baseline_file: /data/aios-gitops/workspace/baseline/current.json
|
||||
declared_baseline_file_sha256: f8daf701565c1d15dc823ef54c6adfe00318fe502b450a596b17fd8c7bf57481
|
||||
declared_baseline_note: baseline metadata states the release was not yet deployed to production
|
||||
actual_current_runtime: /opt/aios-v23/releases/v3-lite-20260705T103927
|
||||
baseline_runtime_mapping_reconciled: false
|
||||
release_status: paused
|
||||
|
||||
safety:
|
||||
implementation_or_control_branch_modified: false
|
||||
production_mutated: false
|
||||
secret_values_read: false
|
||||
secret_values_recorded: false
|
||||
force_push: false
|
||||
|
||||
execution_counters:
|
||||
permission_denied_count: 0
|
||||
checkout_collision_count: 0
|
||||
git_lock_collision_count: 0
|
||||
```
|
||||
|
||||
## Evidence decision
|
||||
|
||||
The committed R10 plan contains exact B3 and B4 path allowlists, but the
|
||||
required evidence records are absent from the post-F0 lineage tree. Existing
|
||||
historical B3/B4 branches do not contain the accepted F0 implementation or the
|
||||
lineage amendment and therefore are not qualifying continuation inputs.
|
||||
|
||||
B3 must not start until its installed-source and authority evidence is captured
|
||||
without inference. B4 remains independently stopped until both the live Hermes
|
||||
contract and an exact owner/vendor protocol echo binding `client_id` to
|
||||
`message_id` are accepted. A timestamp or local synthetic identifier is not a
|
||||
substitute for that provider evidence.
|
||||
|
||||
Production was not modified. The declared `V1R4C6` baseline and the actual
|
||||
`/opt/aios-v23/current` target are recorded separately because their mapping
|
||||
has not been reconciled. No secret value was inspected or included.
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
# RESULT-CODEX-V2R1-PERSONAL-WEIXIN-UPSTREAM-PROTOCOL-EVIDENCE-20260716T105003UTC8
|
||||
|
||||
```yaml
|
||||
status: EVIDENCE_RECORDED
|
||||
scope: official_upstream_protocol_evidence_only
|
||||
baseline_commit: 62a4067cf7a462ebe7cf29524238bc5d0a70b813
|
||||
verified_at: 2026-07-16T10:50:03+08:00
|
||||
upstream:
|
||||
repository: Tencent/openclaw-weixin
|
||||
release: v2.4.6
|
||||
release_commit: cef0bfc390393f716903e16d50408118047f87e0
|
||||
npm_package: "@tencent-weixin/openclaw-weixin"
|
||||
npm_version: 2.4.6
|
||||
B3: PARTIAL
|
||||
B3_raw_fixture: NOT_AVAILABLE_IN_REVIEWED_OFFICIAL_SOURCES
|
||||
B4: NO_OFFICIAL_EXACT_BINDING_CONTRACT
|
||||
implementation_changed: false
|
||||
main_changed: false
|
||||
production_changed: false
|
||||
```
|
||||
|
||||
## Official primary sources
|
||||
|
||||
- Release commit: <https://github.com/Tencent/openclaw-weixin/commit/cef0bfc>
|
||||
- Release patch with full commit identity: <https://github.com/Tencent/openclaw-weixin/commit/cef0bfc.patch>
|
||||
- Release tag: <https://github.com/Tencent/openclaw-weixin/releases/tag/v2.4.6>
|
||||
- Point-in-time tag/main comparison: <https://github.com/Tencent/openclaw-weixin/compare/v2.4.6...main>
|
||||
- Protocol types at the immutable release commit: <https://raw.githubusercontent.com/Tencent/openclaw-weixin/cef0bfc/src/api/types.ts>
|
||||
- API implementation at the immutable release commit: <https://raw.githubusercontent.com/Tencent/openclaw-weixin/cef0bfc/src/api/api.ts>
|
||||
- Outbound send implementation at the immutable release commit: <https://raw.githubusercontent.com/Tencent/openclaw-weixin/cef0bfc/src/messaging/send.ts>
|
||||
- Protocol README at the release tag: <https://raw.githubusercontent.com/Tencent/openclaw-weixin/v2.4.6/README.md>
|
||||
- Official npm package metadata page: <https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin?activeTab=versions>
|
||||
|
||||
## Version and provenance boundary
|
||||
|
||||
The GitHub release page binds `v2.4.6` to commit `cef0bfc`; the official patch endpoint expands that identity to `cef0bfc390393f716903e16d50408118047f87e0`. At verification time, the official comparison page reported `v2.4.6` and `main` as identical. `main` is mutable and the npm web page is dynamically published metadata, so protocol conclusions below are bound to the immutable release commit, not to future `main` or future dist-tag state.
|
||||
|
||||
The official npm page reported `@tencent-weixin/openclaw-weixin` version `2.4.6` as `latest` at verification time. This corroborates release provenance but does not add wire-level response fields beyond the immutable source.
|
||||
|
||||
## B3 — PARTIAL
|
||||
|
||||
Official documentation and types establish the structural inbound contract:
|
||||
|
||||
- `getUpdates` returns a `msgs` collection and a reusable `get_updates_buf` cursor.
|
||||
- `WeixinMessage` declares `message_id`, `client_id`, `from_user_id`, `to_user_id`, `session_id`, `context_token`, message type/state, and item content fields.
|
||||
- The implementation posts the cursor to `ilink/bot/getupdates`, parses the JSON response as `GetUpdatesResp`, and returns the parsed envelope.
|
||||
|
||||
This is sufficient to identify candidate wire fields and to design a strict parser. It is not sufficient for B3 acceptance because none of the reviewed official URLs provides an authenticated, redacted raw `getUpdates` response captured from the provider. No authoritative raw fixture was available in the reviewed source/document set, so real field presence, numeric/string encoding, authority ownership, credential wiring, and rotation/reload behavior remain unproven.
|
||||
|
||||
```yaml
|
||||
B3:
|
||||
status: PARTIAL
|
||||
official_schema: VERIFIED
|
||||
official_endpoint_semantics: VERIFIED
|
||||
provider_raw_capture: MISSING
|
||||
deployable_authority_map: NOT_PROVEN
|
||||
credential_contract: NOT_PROVEN
|
||||
```
|
||||
|
||||
## B4 — NO_OFFICIAL_EXACT_BINDING_CONTRACT
|
||||
|
||||
The immutable source has two distinct identifier surfaces but does not bind them:
|
||||
|
||||
- `WeixinMessage` can carry both provider-side `message_id` and client-supplied `client_id` on inbound/update messages.
|
||||
- `SendMessageReq` carries the client-generated `client_id`.
|
||||
- `SendMessageResp` contains only `ret` and `errmsg`; it has no provider `message_id` and no echoed `client_id` field.
|
||||
- The API layer treats a zero/absent `ret` as success and returns no provider identifier.
|
||||
- The outbound helper generates a local `client_id`, sends it, then returns that same local value as `messageId`. This is a local alias after accepted send, not evidence of a provider-assigned message ID.
|
||||
|
||||
No reviewed official response schema, event example, source path, release note, or README semantics demonstrates an exact relation of the form `request.client_id -> authoritative provider.message_id` for the same send. Therefore an exact outbound quote binding cannot be asserted from official upstream evidence, and using the helper's returned `messageId` as a provider ID would be semantically incorrect.
|
||||
|
||||
```yaml
|
||||
B4:
|
||||
status: NO_OFFICIAL_EXACT_BINDING_CONTRACT
|
||||
request_client_id: PRESENT
|
||||
send_response_provider_message_id: ABSENT
|
||||
send_response_client_id_echo: ABSENT
|
||||
local_messageId_value: generated_client_id
|
||||
authoritative_provider_binding: NOT_PROVEN
|
||||
safe_policy: keep_outbound_quote_authority_disabled
|
||||
```
|
||||
|
||||
## Verification summary
|
||||
|
||||
```yaml
|
||||
official_source_fetch: PASS
|
||||
release_commit_identity: PASS
|
||||
release_tag_identity: PASS
|
||||
tag_main_point_in_time_comparison: IDENTICAL
|
||||
npm_version_metadata: PASS
|
||||
implementation_tests: NOT_APPLICABLE_RESULT_ONLY
|
||||
secrets_recorded: false
|
||||
long_verbatim_quotes_recorded: false
|
||||
```
|
||||
|
||||
## Release impact
|
||||
|
||||
This result narrows the evidence boundary; it does not authorize B3/B4 implementation, release preflight, canary, tag creation, or production deployment. B3 still requires owner/vendor raw evidence and deployment contracts. B4 requires an owner/vendor exact binding contract or an owner-approved contract amendment that keeps outbound quote authority disabled.
|
||||
-70
@@ -1,70 +0,0 @@
|
||||
status: BLOCKED_DEPENDENCY_SOURCE
|
||||
previous_result_commit: 67b2d571aa1244dbb1a1ef2a293bdf04c59f52aa
|
||||
owner_patch_bundle_sha256: d4c1c0436473a7dda08ad26e628f8ad929a64ca56769e47bebc87025f9427e80
|
||||
owner_requirements_sha256: 5c4307ece9524c883f1926e50fc333d7a98f50b7ebf3811affa8aa007915789a
|
||||
owner_dockerfile_sha256: 68565361c35d5ed6e8d6820c063d413a39fe6398fed5d7775cb7df1c1379f4fd
|
||||
owner_apply_script_sha256: 3ffda9de825bd27f0367256670a80364ff9953c3b650184c2726d176b299134f
|
||||
archive_safety_gate: PASS
|
||||
owner_patch_archive_members: PASS
|
||||
owner_patch_member_sha256: PASS
|
||||
owner_apply_script_syntax: PASS
|
||||
owner_apply_script_result: PASS
|
||||
owner_apply_exit: 0
|
||||
staging_reference_16_sources: PASS
|
||||
changed_paths_exact_18: PASS
|
||||
staging_manifest_valid: PASS
|
||||
symlink_count: 0
|
||||
unauthorized_path_count: 0
|
||||
trusted_portal_python: /tmp/pwx-foundation-retry3.91ecvh/venv/bin/python
|
||||
trusted_django_version: 5.2.15
|
||||
trusted_asgiref_version: 3.12.1
|
||||
trusted_sqlparse_version: 0.5.5
|
||||
trusted_dependency_version_gate: PASS
|
||||
offline_wheelhouse: BLOCKED_DEPENDENCY_SOURCE
|
||||
offline_wheelhouse_manifest_sha256: null
|
||||
offline_wheel_files: []
|
||||
offline_wheel_sha256: {}
|
||||
dependency_network_used: false
|
||||
dependency_source_failure: >
|
||||
Owner wheelhouse materializer rejected the trusted Django distribution RECORD file
|
||||
inventory before wheel generation. Exact stderr: ERROR: unsafe installed-distribution
|
||||
path: '../../../../pycache/tmp/pwx-foundation-retry3.91ecvh/venv/lib/python3.12/site-packages/django/__init__.cpython-312.pyc'
|
||||
implementation_branch: patch/v2r1-personal-weixin-foundation-codex-retry8-20260715T183951UTC8
|
||||
implementation_commit: null
|
||||
implementation_parent: d5b51e1342541bf51887782f530c3d2971155996
|
||||
implementation_commits: 0
|
||||
merge_commits: 0
|
||||
runtime_wheel: NOT_RUN
|
||||
fresh_venv_install: NOT_RUN
|
||||
external_import: NOT_RUN
|
||||
package_identity_tests: NOT_RUN
|
||||
portal_check: NOT_RUN
|
||||
migration_dry_run: NOT_RUN
|
||||
temporary_migration_apply: NOT_RUN
|
||||
model_security: NOT_RUN
|
||||
repository_single_consume: NOT_RUN
|
||||
repository_idempotency: NOT_RUN
|
||||
repository_conflict_fail_closed: NOT_RUN
|
||||
repository_concurrency_contract: NOT_RUN
|
||||
local_base_digest_equivalence: NOT_RUN
|
||||
build_engine: none
|
||||
build_network: none
|
||||
remote_resolution_attempted: false
|
||||
image_build: NOT_RUN
|
||||
container_offline_dependency_gate: NOT_RUN
|
||||
container_non_root: NOT_RUN
|
||||
runtime_uid: null
|
||||
image_id: null
|
||||
image_digest: null
|
||||
image_digest_kind: null
|
||||
image_contract: NOT_RUN
|
||||
gitleaks: NOT_RUN
|
||||
worktree_artifact_pollution: PASS
|
||||
worktree_clean: true
|
||||
production_changed: false
|
||||
baseline_after: V1R4C6
|
||||
release_status: paused
|
||||
b6_b7_started: false
|
||||
canary_started: false
|
||||
owner_action_required: Provide a fresh owner-authorized trusted dependency source without the outside-site-packages RECORD pycache entry, or an owner-authored exception.
|
||||
next_gate: Re-run Retry 8 from fresh staging after owner-authorized dependency-source replacement.
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"contract": "personal-weixin-r10-lineage-amendment",
|
||||
"foundation": {
|
||||
"node": "F0_PERSONAL_WEIXIN_FOUNDATION",
|
||||
"implementationCommit": "2fcab6f5833a405a9a26683811600b6e5f1aa7b1",
|
||||
"resultCommit": "64a71b6199a8e2bd609ba145349e67b874888505",
|
||||
"imageDigest": "sha256:ed741d1f028c4bd507c6eda71fb1dcc11e0815c0107afcbfcbaaaaa23d5a11bb",
|
||||
"status": "PASS"
|
||||
},
|
||||
"precedes": [
|
||||
"B3",
|
||||
"B4",
|
||||
"B5",
|
||||
"B6",
|
||||
"B7"
|
||||
],
|
||||
"production": {
|
||||
"baseline": "V1R4C6",
|
||||
"changed": false,
|
||||
"releaseStatus": "paused"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user