Skip to content

feat(actor): v0.6.21 — --actor-json assertion surface (workflow run / config get / chat)#287

Merged
Shooksie merged 2 commits into
mainfrom
feat/actor-cli-flags
Jun 29, 2026
Merged

feat(actor): v0.6.21 — --actor-json assertion surface (workflow run / config get / chat)#287
Shooksie merged 2 commits into
mainfrom
feat/actor-cli-flags

Conversation

@Shooksie

Copy link
Copy Markdown
Contributor

What

Adds the transport assertion surface for the per-user Actor: --actor-json '<JSON>' on workflow run, workflow config get, workflow config validate, and chat send (mirrors the existing mcp serve --actor-json). v0.6.20 already relays/consumes the actor; this is the only missing setter, so a portal that authenticates the user can now scope runs + config reads to them.

  • Fail-closed JSON parse (parse_actor_json_flag); threads the actor into the run request / config load / chat MCP contract.
  • Actor is never written to the shared cwd .mcp.json — it rides the ephemeral runtime contract.

Verification

build/clippy clean; cargo test 1223 pass / 2 pre-existing fail; 7 new tests (clap parse ×3, fail-closed parse, distinct-actor config-get threading, contract strip). codex 4 rounds → 0 findings.

Limitation (tracked)

Providers scoping only off cwd .mcp.json auto-discovery don't get the actor on that channel (needs per-run isolated MCP config — TODO(codex-p1)).

🤖 Generated with Claude Code

Shooksie added 2 commits June 29, 2026 13:24
…un/config + chat

Add the per-user Actor ASSERTION SURFACE so an authenticated transport (the
portal) can scope an operation to a user. v0.6.20 already RELAYS the actor
through the kernel; the only setter was `mcp serve --actor-json`. This wires
the flag onto the surfaces that resolve config / dispatch runs / run chat turns:

- `workflow run --actor-json`: parsed to Option<Actor>, threaded onto the sync
  ExecuteArgs.actor (explicit flag wins over WORKFLOW_ACTOR_ENV), the async
  detached-runner overrides, and the control-wire WorkflowRunRequest.actor.
- `workflow config get/validate --actor-json`: threaded into
  load_workflow_config_with_metadata + load_agent_runtime_config_with_metadata_for_actor
  so both halves resolve the SAME actor partition.
- `chat send --actor-json`: binds the chat turn's built-in `animus` MCP server
  to the actor via the ephemeral runtime contract; parsed FIRST (fail-closed
  before any conversation store write). The actor is NEVER persisted to the
  shared cwd `.mcp.json` (stripped from the materialized copy) to avoid a
  concurrent/crash impersonation window; distinct from `--as-user` (ownership).

New shared helper `parse_actor_json_flag` (fail-closed on malformed JSON),
shared ACTOR_JSON_HELP text, clap parse tests per command, an actor-threading
test for config get via the config_source test seam, and a CLI doc section.

Trust boundary: the flag is a transport assertion; the kernel relays claims, it
does not validate them.
@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 7:26pm

Request Review

@Shooksie
Shooksie merged commit 515b077 into main Jun 29, 2026
12 of 13 checks passed
@Shooksie
Shooksie deleted the feat/actor-cli-flags 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