Skip to content

feat(interview): add consulting persona rotation (interview+)#143

Draft
hackertaco wants to merge 2 commits intomainfrom
issue-136/interview-persona-consultants
Draft

feat(interview): add consulting persona rotation (interview+)#143
hackertaco wants to merge 2 commits intomainfrom
issue-136/interview-persona-consultants

Conversation

@hackertaco
Copy link
Collaborator

Summary

  • Add ooo interview+ mode that rotates consulting personas (contrarian, architect, researcher, hacker, ontologist) through the system prompt per interview round
  • Question count stays the same — only the perspective lens changes each round
  • Fully opt-in: default ooo interview behavior is completely unchanged
  • Consulting personas persist across session resume
  • Invalid persona names logged with warning (graceful degradation)
  • Usage tracked via consultants_enabled field in interview_started event

Design Decisions

  • Option A (prompt rotation) chosen over separate consulting rounds or agent team — zero additional LLM calls, ~200 tokens extra per round
  • Validated by contrarian (challenged necessity) and architect (confirmed minimal blast radius) agent reviews
  • Code reviewer found 4 issues (session resume persistence, tautology test, silent invalid input, Path B event gap) — all fixed except Path B which is a known limitation

Test Plan

  • 2724 full test suite passed
  • Persona rotation logic (round % len)
  • Prompt injection content verification
  • Default behavior unchanged (empty tuple)
  • MCP parameter parsing with validation
  • Case insensitive persona names
  • Invalid persona filtering with warning log
  • Session resume restores consulting_personas from state

Known Limitations

  • Path B (plugin fallback) interviews don't emit interview_started events, so consultants tracking is MCP-only

Closes #136

)

Add opt-in consulting_personas parameter to InterviewEngine that rotates
persona perspectives (contrarian, architect, researcher, hacker, ontologist)
through the system prompt per round. Question count stays the same —
only the perspective lens changes.

- Persist consulting_personas in InterviewState for session resume
- Log warning for invalid persona names in MCP parameter parsing
- Record consultants_enabled in interview_started event for tracking

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 14, 2026 08:59
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an opt-in “interview+” capability to the interview flow by rotating a set of consulting personas through the system prompt each round, while keeping default ooo interview behavior unchanged. This extends the MCP tool interface, persists persona configuration across resume, and enriches telemetry.

Changes:

  • Add consulting_personas support to the MCP interview tool (parse/validate, pass into engine, persist/restore via state).
  • Inject a per-round “Consulting Persona Lens” section into the interview system prompt based on round-robin rotation.
  • Track usage in interview.started events and expand unit tests + skill documentation.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/ouroboros/mcp/tools/definitions.py Adds MCP parameter parsing + wiring for persona rotation and resume persistence.
src/ouroboros/bigbang/interview.py Adds consulting_personas to state/engine and injects persona lens into _build_system_prompt.
src/ouroboros/events/interview.py Extends interview_started event metadata to include consultants usage/list.
tests/unit/mcp/tools/test_definitions.py Tests new MCP parameter presence, parsing, and engine wiring.
tests/unit/bigbang/test_interview.py Adds extensive prompt-rotation/default-behavior tests around persona injection.
skills/interview/SKILL.md Documents ooo interview+ behavior and available consulting personas.

Comment on lines +532 to +533
f" {i}. {instr}"
for i, instr in enumerate(persona_data.approach_instructions, 1)
_interview_id = session_id

# Restore consulting_personas from state if not provided in this call
if not consulting_personas and state.consulting_personas:
@hackertaco hackertaco marked this pull request as draft March 14, 2026 09:03
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Q00
Copy link
Owner

Q00 commented Mar 14, 2026

it would be a great idea
The interview+ command is brilliant!

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.

Add the personas to the interview as consultants

3 participants