report HAN-355 codex draft 2026-05-24

Wansu Slack Persona Playbook - 2026-05-24

Purpose

새 페르소나를 Slack에서 별도 발화자로 운영할 때, "누가 말했는지"와 "어떤 실행 권한/모델 경로로 답했는지"가 데이터에 남아야 한다. Wansu는 Codex 기반 엔지니어링 리드로, #northstar에서 전략을 실행 현실·리스크·검증 루프로 당겨오는 역할이다.

Decisions

AreaDecisionReason
Visible identityJarvis 대리 발화가 아니라 별도 Slack app/bot회고·추적에서 주체가 섞이지 않도록 함
Name표시명 `완수`, username `wansu`Slack username 제약은 ASCII로 두고, 사용자-facing 이름은 한글 유지
Model pathCodex provider구현·검증·로컬 작업 실행력이 핵심 차별점
Reasoning`WANSU_CODEX_REASONING_EFFORT=high` 기본비용보다 신중함 우선. 가벼운 라우팅은 후속 최적화
First scoperead-only/review-oriented코드/PR/deploy는 사용자가 명시 요청할 때만 수행
Channel`#northstar`루트 목표와 높은 수준의 전략 결정을 다루는 공간

Slack App Creation Notes

1. Slack configuration token으로 apps.manifest.create를 호출하면 private app 생성, OAuth 설치 URL, bot token, signing secret 확보가 가능하다.

2. Socket Mode용 app-level token은 connections:write scope의 xapp- 토큰이며, Slack app UI에서 별도 생성해야 한다.

3. manifest의 bot display_name에 한글을 바로 넣으면 username 검증에 걸릴 수 있다. 우선 wansu로 만들고, Slack app UI의 App Home에서 bot display name을 완수로 바꾼다.

4. Slack desktop은 표시명과 아이콘을 캐시한다. 반영이 늦으면 새로고침 또는 앱 재시작이 필요하다.

5. bot token으로 users.setPhoto를 호출하면 not_allowed_token_type이 날 수 있다. app icon은 Basic Information UI에서 업로드한다.

6. Slack Developer Console에 Marketplace 섹션이 보여도, manifest로 만든 app이 자동 제출되는 것은 아니다.

Runtime Contract

Persona Creation Checklist

StepCheck
Role기존 페르소나와 사고 구조·책임이 겹치지 않는가?
AttributionSlack에서 별도 발화자로 보이는가?
Model/cost호출량이 많은 persona와 고비용 모델이 분리되는가?
Trigger암묵 자동응답과 명시 명령의 경계가 분명한가?
Memory이 persona 생성에서 얻은 운영 지식이 docs/memory에 남는가?

Teach-back Prompt

다음에 새 페르소나를 만들기 전 사용자에게 확인할 질문:

> 이번 페르소나는 왜 기존 Jarvis가 대리 발화하면 안 되고, 별도 Slack 발화자여야 하나요? 추적·비용·역할 측면에서 3문장으로 설명해주세요.

See also: source: [HAN-355 PR](https://github.com/hangseung/pantheon/pull/136) · extends: [Agent Knowledge Transfer Loop](agent-knowledge-transfer-loop-2026-05-23.md) · related: [Persona Collaboration Architecture](../advisories/2026-05-20-persona-collab-arch.md)