Both x/elevate and elevate-adapter-superpowerd now default the socket
path to $XDG_RUNTIME_DIR/ollie/elevate.sock (falling back to
/run/user/<uid>/ollie/elevate.sock) when OLLIE_ELEVATE_SOCKET is unset.
Add OLLIE_ELEVATE_SOCKET to env sections of both sandbox configs.
Add {XDG_RUNTIME_DIR}/ollie to restricted sandbox filesystem rw rules
so x/elevate can reach the socket. Update README env block and
scripts/README socket path docs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
x/elevate is now a generic client: reads OLLIE_ELEVATE_SOCKET, sends
{cmd,cwd}, reads back {stdout,stderr,exit_code}. All backend-specific
logic moves to adapters. Add elevate-adapter-superpowerd as the
reference adapter: owns the socket lifecycle, translates the ollie
protocol to superpowerd JSON-RPC ExecuteCommand. Add OLLIE_ELEVATE_SOCKET
to env docs. Update scripts/README.md with protocol spec, adapter
setup, and guide for writing custom adapters.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The purpose is to run steps outside the Landlock sandbox, not to gain
privileges. Clarify the constraint (kernel-enforced, must reach an
external process), reframe the minimal example and superpowerd walkthrough
accordingly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sudo/doas don't work: Landlock is kernel-level and applies regardless
of user privileges within the sandboxed process. The backend must hand
the command to a process spawned outside landrun entirely. The
superpowerd Unix socket pattern is the right model.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
x/elevate handles token acquisition itself via the re-exec through
superpowers run-session when SUPERPOWERD_SESSION_TOKEN is absent.
No manual injection is needed; the paragraph was wrong.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Document the plugin interface contract (args, cwd, stdout/exit code),
plugin path resolution (OLLIE_PLUGINS_PATH / ~/.config/ollie/scripts/x/),
a minimal exec-only example, a step-by-step walkthrough of the default
superpowerd implementation including session token injection, and custom
backend examples (sudo, doas, disable).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add x/ to the namespace list and add an x/elevate section describing
its role as the elevation plugin for execute_code elevated steps, the
calling convention, the default superpowerd implementation, and how to
replace or disable it.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Batch and session namespaces are now a single s/ concept. s/bfg blocks
until the agent finishes and writes to stdout; s/bbg returns immediately
and prints the session path. s/b is the core one-shot runner. Remove all
b/ references from README, USAGE, ARCHITECTURE, and scripts/README.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
b/job now blocks on statewait instead of polling; b/cleanup reads state.
Update all documentation references. Bump 9p submodule.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Install scripts to ~/.config/ollie/scripts/ (not ~/bin/) so they are
served via the 9p mount without PATH changes. Add thin wrappers oq-q
(s/q, foreground one-shot) and oq-schedule (s/sched, background with
b/ path output). Switch osh and oq from OLLIE_9MOUNT to OLLIE.
Update mkfile, docs, and submodule pointer.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>