RAGE #260: load mutable Python user hooks #298

Open
nsaspy wants to merge 0 commits from rage/260-python-user-hooks into master
Owner

Consumes the next Zara Core slice of #260 from exact master f078a2d3f1bd10b60914153de486130bce787380.

TDD RED is preserved at 5c1809c501f2a038d9a2f0b86f8ab0881e51de72: CI #771 failed the main test job for the intentionally missing zara.agent.user_hooks contract while both shared-mic gates and the Android skeleton gate remained green.

Implementation now adds the trusted-local mutable hooks.py loader behind the existing [hooks] policy and AgentLoopAdviceRegistry: canonical XDG config ownership, no file creation/overwrite, disabled no-exec behavior, fixed core owner identity, idempotent generation replacement, failure atomicity before live replacement, and existing override-policy enforcement. AgentManager autoloads only when its config exposes a real config_dir; narrow adapters remain fail-closed.

Current exact head: 2007e16928017b68956d8284bcf4ddbcc69b6668. Keep draft until full exact-head CI, mergeability, and review/thread gates are green.

Core-only transaction. No android/** edits. No second agent loop, tool approval path, config store, or filesystem watcher.

Continues #260.

Consumes the next Zara Core slice of #260 from exact master `f078a2d3f1bd10b60914153de486130bce787380`. TDD RED is preserved at `5c1809c501f2a038d9a2f0b86f8ab0881e51de72`: CI #771 failed the main test job for the intentionally missing `zara.agent.user_hooks` contract while both shared-mic gates and the Android skeleton gate remained green. Implementation now adds the trusted-local mutable `hooks.py` loader behind the existing `[hooks]` policy and `AgentLoopAdviceRegistry`: canonical XDG config ownership, no file creation/overwrite, disabled no-exec behavior, fixed core owner identity, idempotent generation replacement, failure atomicity before live replacement, and existing override-policy enforcement. `AgentManager` autoloads only when its config exposes a real `config_dir`; narrow adapters remain fail-closed. Current exact head: `2007e16928017b68956d8284bcf4ddbcc69b6668`. Keep draft until full exact-head CI, mergeability, and review/thread gates are green. Core-only transaction. No `android/**` edits. No second agent loop, tool approval path, config store, or filesystem watcher. Continues #260.
Some checks failed
CI / test (pull_request) Failing after 7s
CI / android skeleton gate (pull_request) Failing after 10s
CI / shared mic / Arch Linux (pull_request) Failing after 7m27s
CI / shared mic / Ubuntu 24.04 (pull_request) Has been cancelled
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin rage/260-python-user-hooks:rage/260-python-user-hooks
git switch rage/260-python-user-hooks

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff rage/260-python-user-hooks
git switch rage/260-python-user-hooks
git rebase master
git switch master
git merge --ff-only rage/260-python-user-hooks
git switch rage/260-python-user-hooks
git rebase master
git switch master
git merge --no-ff rage/260-python-user-hooks
git switch master
git merge --squash rage/260-python-user-hooks
git switch master
git merge --ff-only rage/260-python-user-hooks
git switch master
git merge rage/260-python-user-hooks
git push origin master
Sign in to join this conversation.
No description provided.