Skip to content

feat(actor): v0.6.22 — WU-F owner-scoped schedules + codex-p1 per-run isolated MCP config - #289

Merged
Shooksie merged 3 commits into
mainfrom
feat/actor-tail
Jun 29, 2026
Merged

feat(actor): v0.6.22 — WU-F owner-scoped schedules + codex-p1 per-run isolated MCP config#289
Shooksie merged 3 commits into
mainfrom
feat/actor-tail

Conversation

@Shooksie

Copy link
Copy Markdown
Contributor

What

Two actor-tail follow-ups on protocol v0.1.26 (additive WorkflowSchedule.owner_id/claims + SubjectDispatch.actor).

WU-F — owner-scoped schedules mint the owner's actor. A schedule with owner_id dispatches a run carrying a system-minted Actor{user_id,claims} (the one place the kernel mints rather than relays — owner is config-authored, documented trust boundary); relayed to the runner via the back-compat env channel ANIMUS_ACTOR_JSON (older runner ignores it; global dispatch clears it). Global schedules stay actor=None.

codex-p1 — per-run isolated actor-pinned MCP config. materialize_isolated_mcp_json writes the full actor-pinned contract to a per-run temp dir; the shared cwd .mcp.json stays actor-stripped (no regression). Surfaced on extras.mcp_config_path. The remaining provider-launch --mcp-config consumption is out-of-tree (scoped TODO).

Out-of-tree follow-up

Runner (animus-workflow-runner-default) must read ANIMUS_ACTOR_JSONWorkflowRunInput.actor for WU-F to be live (→ runner v0.4.13).

Verification

build/clippy clean; the only test failures are the 2 pre-existing decision_gate::workflow_*. Codex: no [P1].

🤖 Generated with Claude Code

Shooksie added 3 commits June 29, 2026 15:13
Providers that locate MCP servers only by cwd `.mcp.json` auto-discovery
(ignoring the runtime contract's `mcp` block) previously ran the
auto-discovered `animus` server UNSCOPED on actor-asserted runs: the
actor is deliberately stripped from the shared, persisted cwd file so a
concurrent run or a crash can't let another caller inherit the per-turn
identity.

Close the gap without touching the shared file: for actor-scoped chat
runs, also materialize the FULL (actor-pinned) contract into a per-run
ISOLATED temp dir and surface its `.mcp.json` path on
`extras.mcp_config_path`. A provider that auto-discoves by file can be
pointed at this run-private file (e.g. claude-code's `--mcp-config`) so
the actor reaches that channel too.

Consuming `extras.mcp_config_path` (passing `--mcp-config <path>` to the
provider CLI) is provider-launch plumbing that lives in the provider
plugin; until a plugin adopts it, contract-consuming providers stay
scoped via `extras.runtime_contract`. The shared cwd `.mcp.json` remains
actor-stripped. Resolves the TODO(codex-p1).
A config-declared owner on a schedule now causes the daemon to run the
dispatched workflow AS that user, so it resolves the owner's config
partition and integrations instead of running globally.

- Repin animus-protocol git deps to v0.1.26 (additive WorkflowSchedule
  owner_id + claims; SubjectDispatch.actor + with_actor builder).
- schedule_dispatch mints a system Actor from owner_id/claims and attaches
  it to the SubjectDispatch; a schedule with no owner_id stays global
  (actor = None). This is the ONE place the kernel CONSTRUCTS an actor
  rather than relaying one — sound because owner_id is asserted at
  config-authoring time (trusted config_source), never from runtime/agent
  content. Documented at the mint site.
- build_runner_command relays the minted actor to the workflow runner over
  the back-compat-safe ANIMUS_ACTOR_JSON env channel (new
  animus-runtime-shared::actor_env): an older runner ignores it, a newer
  one threads it into WorkflowRunInput.actor. Global dispatch clears the
  env so the runner never inherits the daemon's identity.

NOTE: Cargo.lock is intentionally left at v0.1.25 — the v0.1.26 protocol
tag must be pushed first (see report); cargo regenerates the lock on the
first build after the tag lands.
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
animus-docs Ready Ready Preview, Comment Jun 29, 2026 9:20pm

Request Review

@Shooksie
Shooksie merged commit 74cffc5 into main Jun 29, 2026
12 of 13 checks passed
Shooksie added a commit that referenced this pull request Jun 29, 2026
…llided with #289) (#290)

PR #288 added subject list --query but its release/v0.6.22 branch landed after
#289 also claimed v0.6.22, so the auto-tagger skipped (tag already existed) and
the v0.6.22 binary excludes --query. The change is on main; this re-cuts it as
v0.6.23.
@Shooksie
Shooksie deleted the feat/actor-tail branch July 4, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant