Skip to content

Commit ba84662

Browse files
committed
Add ClawHub completion audit
1 parent df83e04 commit ba84662

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

docs/COMPLETION_AUDIT.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Completion Audit
2+
3+
Last audited: 2026-05-26
4+
5+
Objective: make the `mautic-control` OpenClaw plugin production-ready for ClawHub deployment, preserving the local Docker stack behavior and identifying exact remaining blockers if public deployment is not possible.
6+
7+
## Result
8+
9+
The plugin package is production-prepped for ClawHub package review and private/internal OpenClaw deployment. Public ClawHub listing remains blocked because the GitHub source repository is private and direct ClawHub GitHub-source dry-run cannot fetch it.
10+
11+
Do not mark public ClawHub deployment complete until one of these is true:
12+
13+
- The repository is made public.
14+
- ClawHub has an approved private-source review path for `CompleteTech-LLC-AI-Research/openclaw-mautic-plugin`.
15+
16+
## Prompt-To-Artifact Checklist
17+
18+
| Requirement | Evidence | Status |
19+
| --- | --- | --- |
20+
| Audit package, manifest, runtime, docs, and stack | `docs/CLAWHUB_READINESS.md`, this audit, repeated `npm`/stack/OpenClaw checks | Complete |
21+
| Publishable package metadata | `package.json` has scoped name, version, description, license, author, repository, bugs, homepage, keywords, files, OpenClaw compat/build metadata | Complete |
22+
| Not private-only package posture | `package.json` has `"private": false` | Complete |
23+
| Source metadata | `package.json.repository`, `package.json.homepage`, `package.json.bugs`; `npm run clawhub:dry-run` supplies source repo/ref/commit | Complete |
24+
| License, changelog, security policy | `LICENSE`, `CHANGELOG.md`, `SECURITY.md` | Complete |
25+
| Maintainer/support info | `package.json.author`, `SECURITY.md`, repository issue URL | Complete |
26+
| Keep sensitive values out of package/docs | Secret scan found only variable names and safety docs, not actual token/password values | Complete |
27+
| Threat model documented | `SECURITY.md` primary risks and mitigations | Complete |
28+
| Dangerous capabilities opt-in by default | `openclaw.plugin.json` and `lib/runtime.js` default maintenance, automation, workspace read/write to false | Complete |
29+
| Preserve local maintenance behavior | local stack bootstrap explicitly sets `allowMaintenanceCommands=true`, `allowAutomationJobCommands=false` | Complete |
30+
| API path restriction | `assertMauticApiPath` in `lib/runtime.js`; covered by `test/runtime.test.js` | Complete |
31+
| Workspace path guards | `safeWorkspacePath`, `assertPathWithinRoot`; covered by `test/runtime.test.js` | Complete |
32+
| Workspace read/write/delete policy | `allowWorkspaceRead`, `allowWorkspaceWrite`; live smoke writes/reads a nested file | Complete |
33+
| Console command allowlist | hardcoded command list plus capability toggles; covered by unit and live smoke tests | Complete |
34+
| OpenClaw state no longer on Windows 9p for `/state` | stack uses `openclaw_state:/state`; live stat shows auth/session files mode `600` | Complete |
35+
| Deep security audit no critical findings | `openclaw security audit --deep --json` reports `critical: 0` | Complete |
36+
| Required environment/config docs | `README.md` documents Mautic credentials, console token, base URL, console URL, workspace roots, optional env fallbacks | Complete |
37+
| Console bridge deployment/security docs | `README.md` and `SECURITY.md` document `mautic/console-bridge.php`, token, and private-network requirement | Complete |
38+
| Tool behavior with/without console bridge | `README.md` states only `mautic_console` requires the bridge | Complete |
39+
| Unit tests | `test/runtime.test.js`, run by `npm test` | Complete |
40+
| Live smoke test script | `scripts/live-smoke.mjs`, run by `npm run live:smoke` | Complete |
41+
| CI workflow | `.github/workflows/ci.yml` runs lint, tests, and package validation | Complete |
42+
| ClawHub dry-run | `npm run clawhub:dry-run` passes from local folder with source metadata | Complete |
43+
| Direct GitHub-source ClawHub dry-run | `clawhub package publish CompleteTech-LLC-AI-Research/openclaw-mautic-plugin --dry-run` fails because repo is private | Blocked |
44+
| Repo clean and pushed | `git status --short --branch` reports `main...origin/main` after latest push | Complete |
45+
46+
## Latest Verification Commands
47+
48+
Run from `/mnt/c/users/timot/documents/projects/docker/mautic-plugin`:
49+
50+
```bash
51+
npm run lint
52+
npm test
53+
npm run package:check
54+
npm run live:smoke
55+
npm run clawhub:dry-run
56+
```
57+
58+
Run from `/mnt/c/Users/timot/Documents/projects/docker/openclaw-mautic-stack`:
59+
60+
```bash
61+
node scripts/audit.mjs
62+
node scripts/audit.mjs --live
63+
docker compose exec -T openclaw sh -lc 'openclaw security audit --deep --json'
64+
```
65+
66+
## Remaining Warning
67+
68+
`openclaw security audit --deep --json` reports one warning:
69+
70+
`plugins.tools_reachable_permissive_policy`
71+
72+
This is documented and accepted for the trusted local single-operator stack. Mitigation for broader deployment is to use restrictive OpenClaw profiles or explicit tool allowlists for agents that process untrusted input.

0 commit comments

Comments
 (0)