Allow explicit native role switching for inferred roles #117

Closed
opened 2026-07-28 02:52:52 +00:00 by coilyco-ops · 0 comments
Member

Problem

Agent-compose issue #58 intentionally locks a selected role for the session. That rule also locks a role inferred by an unassigned native interactive agent. As a result, an explicit request such as swap into QA is rejected even though the host roster already exposes the target role and its complete personality meld.

The existing native adaptation policy supports personality changes only. It does not satisfy an explicit request to change the active role charter.

Outcome

An unwarded native agent whose role was inferred from the initial request can accept an explicit user-directed role switch during the same interactive session. Caller-assigned roles remain fixed.

Behavior contract

  • Agent-compose distinguishes an inferred native role from a caller-assigned role.
  • An explicit user request naming a valid target role switches the inferred native role without a second confirmation.
  • An agent-proposed role switch requires a separate confirmation before activation.
  • The agent loads the target role briefing and complete ordered personality meld, announces the new role, and stops acting from the prior role charter.
  • The selected role persists until another explicit switch or session end.
  • The harness, model, tools, permissions, credentials, and executable authority do not change.
  • The agent never uses this behavior in a Ward-bound, composed, staged, containerized, headless, unattended, long-burn, or async session, while an explicit slash goal is active, or when live interaction is uncertain.
  • A caller-assigned role continues to require a new launch for a different role.
  • Personality-only adaptation remains available and does not change the active role.

Acceptance criteria

  • A native interactive fixture infers advisor, receives swap into QA, and activates the QA charter plus meticulous, candid, and playful.
  • The same fixture can explicitly switch back or select another valid role.
  • An unknown role fails with the available role slugs.
  • A caller-assigned compose bundle rejects the same request and directs the caller to launch a new bundle.
  • Tests prove that a native role switch grants no new executable authority or tool surface.
  • Generated roster policy, role-selection documentation, native-adaptation documentation, and integration documentation describe the inferred-versus-assigned boundary consistently.
  • Regression coverage narrows #58 without weakening its role-bound guarantee.
  • ward exec test and ward exec smoke pass.
  • #58 established the current fixed-role contract.
  • #112 preserves the fixed-role boundary while extending personality cue lookup. This issue changes only the inferred native role boundary.
## Problem Agent-compose issue #58 intentionally locks a selected role for the session. That rule also locks a role inferred by an unassigned native interactive agent. As a result, an explicit request such as `swap into QA` is rejected even though the host roster already exposes the target role and its complete personality meld. The existing native adaptation policy supports personality changes only. It does not satisfy an explicit request to change the active role charter. ## Outcome An unwarded native agent whose role was inferred from the initial request can accept an explicit user-directed role switch during the same interactive session. Caller-assigned roles remain fixed. ## Behavior contract * Agent-compose distinguishes an inferred native role from a caller-assigned role. * An explicit user request naming a valid target role switches the inferred native role without a second confirmation. * An agent-proposed role switch requires a separate confirmation before activation. * The agent loads the target role briefing and complete ordered personality meld, announces the new role, and stops acting from the prior role charter. * The selected role persists until another explicit switch or session end. * The harness, model, tools, permissions, credentials, and executable authority do not change. * The agent never uses this behavior in a Ward-bound, composed, staged, containerized, headless, unattended, long-burn, or async session, while an explicit slash goal is active, or when live interaction is uncertain. * A caller-assigned role continues to require a new launch for a different role. * Personality-only adaptation remains available and does not change the active role. ## Acceptance criteria * A native interactive fixture infers `advisor`, receives `swap into QA`, and activates the QA charter plus `meticulous`, `candid`, and `playful`. * The same fixture can explicitly switch back or select another valid role. * An unknown role fails with the available role slugs. * A caller-assigned compose bundle rejects the same request and directs the caller to launch a new bundle. * Tests prove that a native role switch grants no new executable authority or tool surface. * Generated roster policy, role-selection documentation, native-adaptation documentation, and integration documentation describe the inferred-versus-assigned boundary consistently. * Regression coverage narrows #58 without weakening its role-bound guarantee. * `ward exec test` and `ward exec smoke` pass. ## Related * #58 established the current fixed-role contract. * #112 preserves the fixed-role boundary while extending personality cue lookup. This issue changes only the inferred native role boundary.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agent-compose#117
No description provided.