Skip to content

nisavid/rolecasting

v1.0.0MIT

Rolecasting: portable model selection and delegation topology for agent work.

Rolecasting plugin

Rolecasting is an Agent Plugins v1 package for choosing bounded worker topology and selecting an executable model and reasoning effort after delegation is settled. Claude Code uses a native manifest projected from the same canonical package identity.

Delegation freezes independent dimensions: target family, surface, version, and executor; child, peer, or external relationship; leader-owned or user-owned ownership; native-tool, task-api, CLI, app-server, or remote-API transport; and the observed and consumer-minimum product-attested, controller-observed, or self-reported assurance for each evidence dimension. Model choice remains separate. A transport never determines the relationship, and a user-owned peer requires explicit user consent.

Initial operational support uses separate native-child adapter profiles for ChatGPT Codex and Codex CLI/TUI. Both freeze the complete plan and assurance minima before native spawn and bind same-leader launch, status, and result observations afterward. A separate verification digest and strict Boolean preserve completed-but-blocked or unverified results as unusable. Their current maximum assurance is controller-observed for target, topology, and result, and self-reported for model and effective authority. Claude Code and Claude Desktop follow, then Cursor and Cursor Agent together or in close succession. Ordinary consumers use a frozen same-leader invocation plan and a separate live model-selection record. These bind requested execution and observed capability; they do not authenticate actual model execution or authority enforcement. Operational support is not evidence issuance: witnessed-publication producer and issuer qualification remains pending for every exact surface, version, executor, transport, and assurance source.

It does not decide repository ownership, review disposition, publication, or pull-request work.

Skills

Public nameResponsibility
$rolecasting:delegating-cross-agent-workFreeze target, relationship, ownership, transport, assurance, and authority; batch same-shape work, use bounded waits, and retain leader integration.
$rolecasting:choosing-agent-modelsSelect a model-effort pair proven by the live-catalog and target-executor-schema intersection after delegation is settled.

Layout

plugins/rolecasting/
├── plugin.json                     # Canonical Agent Plugins v1 manifest
├── .claude-plugin/plugin.json      # Validated Claude identity projection
├── task-witness-provider.json      # Dispatch-evidence owner registration
├── content-lock.json               # Generated semantic and rubric snapshot
├── evals/delivery.json             # Isolated executor/grader delivery contract
├── skills/                         # Skills, owner validator, references, and evals
└── topology.json                    # Authoritative ownership and call graph

The root manifest is the sole package identity and carries Codex presentation metadata under extensions.com.openai.interface. The Claude manifest is an exact projection of the common identity fields with only Claude's displayName added. The single skills/ tree is portable; Codex selectively reads each preserved skills/*/agents/openai.yaml interface. Skill discovery supplies the rolecasting: namespace, and every relative runtime resource stays inside the package. The schema_version in topology.json versions Rolecasting's local topology shape, not a repository-wide interchange schema.

Rolecasting's registered owner validator accepts a strict, generic dispatch bundle and returns rolecasting-dispatch-projection-v2. Its pure renderer cannot authenticate a selected executor, and no authenticated owning harness integration is currently bound into the issuer identity. The registered provider therefore declares empty producer and issuer inventories and retains only the active validator plus its exact renderer module. Task Witness is optional future equipment for callers that require a stronger cross-harness evidence contract. Without it, the pure validator can check structure and identity, while issuer or producer authority remains unavailable.

The owner interface is documented in the delegating skill's dispatch-evidence.md reference. Rolecasting exposes no trust-path or runtime- path CLI and does not interpret review or publication semantics. Its separate native adapter deterministically freezes supplied, already-observed execution facts; it does not launch workers or claim to authenticate observations the harness has not supplied. Its rolecasting-bootstrap-adapter-v2 issuer contract is independent of the dispatch-evidence bundle contract. Private tests may construct test-owned bootstrap trust to exercise historical validation, but no Rolecasting historical trust has been installed and those results cannot become authenticated evidence for witnessed publication. The skill-mediated native Codex module sequences pre-spawn freeze and post-result same-leader recording, but it is not a harness actuator and emits neither portable evidence nor product attestation. Explicitly witnessed publication stays blocked until a real native harness integration authenticates execution and its exact owning bytes are bound into a newly registered producer/issuer identity. That witnessed route requires a product-attested ChatGPT Codex child. Ordinary consumers require controller-observed assurance for every fact they rely on. Self-reported dimensions are diagnostic and non-gating; the native route is usable only when actual model execution and effective authority are not gate inputs. Live selection capability and granted or requested authority remain ordinary plan inputs. The publication owner separately decides whether ordinary publication is authorized; these records do not grant it. The validator preserves both clean and nonclean execution evidence: usable is a strict Boolean carried into every execution projection, and false remains a valid result rather than being discarded.

Validation

From the repository root, run:

uv run --with PyYAML python scripts/validate_rolecasting.py
uv run --with PyYAML python -m unittest tests/test_agent_plugins_standard.py
uv run --with PyYAML python -m unittest tests/test_validate_rolecasting.py
python3 -m unittest tests/test_rolecasting_eval_corpus.py
python3 -m unittest tests/plugins/test_rolecasting_dispatch_evidence.py
python3 -m unittest tests/plugins/test_rolecasting_native_codex.py

The validator rejects Agent Plugins schema drift, duplicate keys and non-finite JSON, malformed discovery YAML, invalid CLI arity, non-direct skill discovery, resource escapes, component drift, non-portable content, projection or adapter namespace drift, graph invariant violations, semantic-lock drift, grader-answer leakage, and lexical ancestor symlinks.