[RELEASE] Guard enforcement: policy-driven pause/stop/kill behind three locks (carries #5367) - #5470
Merged
Merged
Conversation
…ee locks (carries #5367) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ApawEewWFfK2MEmRWdxKaP
✅ Drift Bot (ClawMetry): no drift detectedDrift Bot analyzed the changed files against this project's blueprints and requirements and found no drift. |
vivekchand
added a commit
that referenced
this pull request
Sep 3, 2026
guard.html shipped in #5470 wrapped in <div id="guard" class="tab-content">. The switcher hides panels via .page / #page-<tab>; nothing hides tab-content, so the Guard cards drew above every tab, stuck on "Loading..." because loadGuardTab keyed on a #page-guard that did not exist. - guard.html is a normal .page panel with id page-guard - the 38 #guard-scoped CSS rules move to #page-guard - guard joins _CM_NODE_TABS so the nav item survives the runtime switcher - tests/test_tab_template_page_wrapper.py guards all three (red on the shipped template and on an orphaned CSS scope); added to the CI file list Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqeUMB1GPqXU3AJgDmg3mW
vivekchand
added a commit
that referenced
this pull request
Sep 3, 2026
…ding (0.12.806 regression) (#5476) * Fix Guard panel rendering on top of every tab (0.12.806 regression) guard.html shipped in #5470 wrapped in <div id="guard" class="tab-content">. The switcher hides panels via .page / #page-<tab>; nothing hides tab-content, so the Guard cards drew above every tab, stuck on "Loading..." because loadGuardTab keyed on a #page-guard that did not exist. - guard.html is a normal .page panel with id page-guard - the 38 #guard-scoped CSS rules move to #page-guard - guard joins _CM_NODE_TABS so the nav item survives the runtime switcher - tests/test_tab_template_page_wrapper.py guards all three (red on the shipped template and on an orphaned CSS scope); added to the CI file list Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqeUMB1GPqXU3AJgDmg3mW * Re-trigger drift-bot: tab panel contract now in the blueprints Local Agent Observability gained a "Dashboard tab panel contract" section and the Guard Enforcement component block cites it for guard.html. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JqeUMB1GPqXU3AJgDmg3mW --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Product record: https://factory.8090.ai/project/b415065f-ab2f-4f53-8864-0c009fd098cb/requirements/c5b10c2a-68c5-457c-a98d-ce73af82472a
What
Release PR for #5367 (merged as 469e1d0): the Guard enforcement half — policy engine, three-lock enforcement in the daemon, Guard tab, one actuator module, Windows native actuators, honest OpenClaw pause. Off by default: new policies are
monitor,CLAWMETRY_POLICY_ENFORCEdefaults to 0, and the entitlement lock fails closed.Why it ships now
The Rootconf talk (2026-09-05) and clawmetry.com present a kill switch for rogue agents; this is the wire from a detector finding to the stop, behind locks the operator opens deliberately.
Verification
python-security-extendedrun), drift-bot no drift, E2E Gate pass.After merge: wait for
release-on-merge.yml+ PyPI, verifyclawmetry/guard_actuator.pyandroutes/guard.pyare in the published wheel, then pin clawmetry-cloud.🤖 Generated with Claude Code
https://claude.ai/code/session_01ApawEewWFfK2MEmRWdxKaP