feat: add nobulex — Ed25519 receipt layer for Dify agents (EU AI Act Article 12)#2500
feat: add nobulex — Ed25519 receipt layer for Dify agents (EU AI Act Article 12)#2500arian-gogani wants to merge 4 commits into
Conversation
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-xqnxrfc8/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Next steps
- Icon validation: Provide a real custom icon file under _assets/ and reference it from manifest.yaml.
- dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.
- Install test: Fix the plugin so test-plugin-install.py passes.
- Packaging test: Fix the plugin so upload-package.py --test passes.
Please address these issues and push an update.
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-0xyq61_2/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-0xyq61_2/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.svg | None. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.9.0 satisfies >= 0.9.0. | None. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-0xyq61_2/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-0xyq61_2/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
✅ Pass | packaging check passed. | None. |
Next steps
- Install test: Fix the plugin so test-plugin-install.py passes.
Please address these issues and push an update.
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-ej8hnrjw/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-ej8hnrjw/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
✅ Pass | icon exists: _assets/icon.svg | None. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
✅ Pass | dify_plugin version 0.9.0 satisfies >= 0.9.0. | None. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-ej8hnrjw/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-ej8hnrjw/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
✅ Pass | packaging check passed. | None. |
Next steps
- Install test: Fix the plugin so test-plugin-install.py passes.
Please address these issues and push an update.
Split the four tools into one module per file, add the NobulexProvider class, and wire extra.python.source into the provider + all four tool manifests. Simplify main.py to manifest-driven discovery. Fixes the pre-check ToolConfigurationExtra validation failure. Validated locally against dify_plugin + nobulex 0.1.0 (manifest loads and all tools run).
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-l2gj5kk4/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Next steps
- Icon validation: Provide a real custom icon file under _assets/ and reference it from manifest.yaml.
- dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.
- Install test: Fix the plugin so test-plugin-install.py passes.
- Packaging test: Fix the plugin so upload-package.py --test passes.
Please address these issues and push an update.
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-1ffu009t/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Next steps
- Icon validation: Provide a real custom icon file under _assets/ and reference it from manifest.yaml.
- dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.
- Install test: Fix the plugin so test-plugin-install.py passes.
- Packaging test: Fix the plugin so upload-package.py --test passes.
Please address these issues and push an update.
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-jtm9lwlg/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Next steps
- Icon validation: Provide a real custom icon file under _assets/ and reference it from manifest.yaml.
- dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.
- Install test: Fix the plugin so test-plugin-install.py passes.
- Packaging test: Fix the plugin so upload-package.py --test passes.
Please address these issues and push an update.
crazywoola
left a comment
There was a problem hiding this comment.
❌ Request Changes
Decision: Request changes
Failed Checks
| Check | Status | Detail | Required action |
|---|---|---|---|
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Full Check Results
| Check | Status | Detail | Required action |
|---|---|---|---|
PR content language |
✅ Pass | PR title/body CJK ratio=0.0% (zh=0, en=2002, ignored_zh=0, allowed_zh<=0) | None. |
Project structure |
✅ Pass | All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. | None. |
Manifest author |
✅ Pass | author is valid. | None. |
Icon validation |
❌ Fail | icon file not found: _assets/_assets/icon.svg | Provide a real custom icon file under _assets/ and reference it from manifest.yaml. |
Version check |
✅ Pass | version 0.0.1 is available. | None. |
README language |
✅ Pass | README.md CJK ratio=0.0% (zh=0, en=1799, allowed_zh<=0) | None. |
PRIVACY.md |
✅ Pass | PRIVACY.md exists and is non-empty. | None. |
Dependency install |
✅ Pass | requirements installed successfully. | None. |
dify_plugin version |
❌ Fail | dify_plugin must be installed and >= 0.9.0, but it was not found. | Use dify_plugin >= 0.9.0 in the packaged plugin environment. |
Install test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/toolkit/validator/test-plugin-install.py -d /var/folders/vc/vfsgl8611qn5… | Fix the plugin so test-plugin-install.py passes. |
Packaging test |
❌ Fail | Command failed (1): /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/.venv/bin/python /var/folders/vc/vfsgl8611qn508whmstl644w0000gn/T/pr-review-helper-j352qpqu/toolkit/uploader/upload-package.py -d /var/folders/vc/vfsgl8611qn508whms… | Fix the plugin so upload-package.py --test passes. |
Next steps
- Icon validation: Provide a real custom icon file under _assets/ and reference it from manifest.yaml.
- dify_plugin version: Use dify_plugin >= 0.9.0 in the packaged plugin environment.
- Install test: Fix the plugin so test-plugin-install.py passes.
- Packaging test: Fix the plugin so upload-package.py --test passes.
Please address these issues and push an update.
….9.0 to requirements
|
Fixed the two pre-check failures:
The latest run ( |
1. Metadata
2. Submission Type
3. Description
Nobulex adds a cryptographic receipt layer to any Dify agent workflow. Every tool call gets an Ed25519-signed, JCS-canonical receipt, hash-chained to the previous one. Change any byte and verification fails at that point. An auditor verifies the complete history offline with only the agent's public key — no vendor dependency.
Four tools:
sign_receipt— sign a receipt for one tool call (action_type + scope + optional policy_version)verify_receipt— verify a receipt's signature and chain integrity offlineexport_article12— export a regulator-facing EU AI Act Article 12 evidence packageget_trust_score— get the agent's Trust Capital score (0-100) based on verified receipt historyEU AI Act Article 12 enforcement begins August 2, 2026. Dify enterprise users deploying agents in regulated industries (finance, healthcare, legal) need tamper-evident per-action evidence — not just platform logs. This plugin produces independently verifiable receipts in a standard format.
Built on pip install nobulex (PyPI, cross-validated against 4 published bilateral receipt test vectors). Sections 8-11 of the OWASP AML and Sanctions Compliance for AI Agent Payments cheat sheet (PR #2210, merged June 2026) include this receipt format's JCS canonicalization rationale and EU AI Act compliance mapping.
4. Checklist
5. Documentation Checklist
6. Privacy Protection Information
Data Collection: The plugin does not collect any user personal data. All cryptographic operations run locally in the Dify environment.