Skip to content

feat(handoff)!: delegate to rote guidance ids instead of rote skills - #23

Draft
roberts-pumpurs wants to merge 2 commits into
mainfrom
feat/rote-guidance-ids
Draft

roberts-pumpurs wants to merge 2 commits into
mainfrom
feat/rote-guidance-ids

Conversation

@roberts-pumpurs

@roberts-pumpurs roberts-pumpurs commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Rote 0.89.0 deletes its 15 companion skills and the rote-onboard plugin, so Play's 13 delegated actions, which load a rote skill by name, would hit a skill that no longer exists. The rote side is the stack ending in modiqo/rote#2768; ship both on the same day.

Before

references/controller/actions.yaml names a skill per delegated action (specialist: rote-flow-authoring). SKILL.md tells the agent to invoke instruction.specialist through the harness skill mechanism. handoff.py rejects any receipt whose executor.kind is not skill. The installer runs rote install skill --package '*' --force.

After

  • Each delegated action names a guidance id (guidance: play/authoring, registry/org, gate/route, adapters/config, …). The controller projects instruction.guidance, and the agent runs rote guidance <id> in its shell and returns the declared receipt.
  • Receipts carry executor: {kind: guidance, id, digest}. Verification requires the id to equal the packet owner and a sha256: digest from rote guidance <id> --json. The authentication event declares guidance_digest for the receipt Play builds itself.
  • Route and audit owners map to guidance ids: adapters/delegated, shell/essential, browser/essential, workspace/essential, play/authoring, troubleshooting/essential, registry/essential.
  • SKILL.md keeps Play in charge of each delegated step: Rote documents end with ## Next gates and gate branches, and inside a Play step those are informational. The agent returns a declared event to Play, never follows a Rote gate past command_policy, and reads the digest from data.result.digest.
  • The installer drops --package, checks only for the rote skill, and requires rote 0.89.0 or newer.
  • When rote is not installed, the setup handoff points the user at https://getrote.dev, because rote guidance setup/essential needs the binary.

Compatibility

  • Breaking: Play now requires rote 0.89.0. Receipts with executor.kind: skill are rejected.
  • Keep this PR in draft until rote 0.89.0 is released, then merge it the same day.

BREAKING CHANGE: Play requires rote 0.89.0 or newer and delegates to rote guidance ids instead of rote skills; handoff receipts use executor.kind: guidance with an id and digest.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Rote 0.89.0 removes its companion skills and the rote-onboard plugin;
every instruction is served by `rote guidance <id>`. The 13 delegated
actions now name a guidance id, the controller projects
`instruction.guidance` at a `guidance` boundary, and handoff receipts
carry `executor: {kind: guidance, id, digest}`. Explore owners map to
adapters/delegated, shell/essential, browser/essential and
workspace/essential; authentication goes to adapters/config.

`rote install skill` no longer passes `--package`, the Rote skill
provider check requires the single `rote` skill, and the installer
requires Rote 0.89.0 or newer.

BREAKING CHANGE: requires Rote 0.89.0; receipts with executor kind
`skill` are rejected.

This branch has not been deployed

No deployments
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