Originally created by: jasperdingg
Pull Request
Slice
- Repo: doberman-core
- Feature / Slice: [#314]
- Plan reference: Issue [#314]
What this PR does
Adds an OpenClaw test proving apply_patch cannot modify Doberman’s control plane, then updates the parity matrix.
Closes [#314].
Tests added (run in CI)
- Focused OpenClaw tests: 44 passed
- Full suite: 2,574 passed, 6 skipped
- Ruff, formatting, parity, and import-linter pass
Public-release safety (doberman-core only)
- [x] Contains nothing from the "not allowed" list: no enterprise/hosted code, no proprietary detection, no customer data, no secrets, no commercial-license code
- [x] Core still builds/tests/runs with NO enterprise package installed
Security checklist
- [x] Fails closed on error / uncertainty
- [x] No secret, full file, or unredacted prompt logged or committed
- [x] Any guardrail/learning change is raise-only (no silent loosening)
- [x] Every BLOCK/AUTH carries reason codes + a human explanation
- [x] doberman-core does not import doberman_enterprise
Edge cases covered / Deviations from plan / Risks introduced
- Tests the real OpenClaw
derivedPaths target-recovery path.
- Mutation-checked, removing the control-plane rule caused the test to fail.
Ticket changed by: fu351
Originally posted by: fu351
Merged — thank you for closing the OpenClaw control-plane cell. The decision that makes this test worth having: you drove it through the real
derivedPathsrecovery path with the actual wire shape OpenClaw sends, instead of handing the engine a pre-cooked path. That means it proves the adapter's plumbing, not just the rule underneath — which is the whole point of a parity cell.Nothing changed on your branch. Before merging I re-ran a mutation check of my own: stripped the
.dobermanglobs out ofCONTROL_PLANE_GLOBSand your test went red on the spot; reverted, all 44 OpenClaw tests green.If you want the next cell, #312 (
level-3) is the natural one: the secret-egress taint floor on Codex — same lattice, different host, and the fixture pattern you used here transfers almost directly. If you'd rather switch from proving guarantees to building one, #336 (level-5) makes the egress velocity thresholds policy-configurable (tighten-only) and is open too.