16 KiB
16 KiB
status, applies-to-version, superseded-by, exclude-from, note
| status | applies-to-version | superseded-by | exclude-from | note | ||
|---|---|---|---|---|---|---|
| historical-snapshot | registry 62 roles / 26 families / 11 lenses (설계 시점) | 현재 정본 registry 73 roles / 28 families / 12 lenses — org-os/00-role-registry/* |
|
구현 완료된 과거 설계. 본문의 62/26/11 수치는 당시 스냅샷이며 현재 정본은 org-os 레지스트리다(finding #20). |
협업 효율화 + 다양성 보존 오버레이 설계
- 작성일: 2026-07-05
- 대상 하네스:
company-haness/ Org OS (현재 100% 명세 단계) - 범위: 설계/명세만 개선 (
.claude구현·validator 스크립트는 이번 범위 밖) - 인코딩 방식: 가산적 오버레이 (새 파일 추가 + 기존 파일 참조 한 줄씩만)
1. 목적과 문제
문제
현재 구조는 모든 작업을 동일한 무거운 DRAI 의식으로 처리한다. Claude Code subagent는 서로 직접 대화하지 못하고 파일을 경유해 직렬로 handoff하며, handoff마다 컨텍스트 전체를 재적재한다. 그 결과:
- 저위험 작업(오타·소규모 기능)도 다수 역할이 순차 개입해 느리고 토큰이 무겁다.
- 발산(아이디어)과 수렴(결정)을 같은 무거운 기계로 처리해, 아이디어를 얻는데도 결정용 의식을 돌린다.
- 62개 세분 역할이 유사 역할로 흩어져 같은 컨텍스트를 반복 재적재한다.
목표
협업의 handoff 수·직렬성·재적재 비용을 낮추되, 관점 다양성은 보존/강화한다. 핵심 통찰: 다양성 = 서로 다른 렌즈의 수이지 역할 headcount가 아니다. 따라서 중복 역할 통합과 의식 경량화는 다양성을 줄이지 않는다.
비목표 (Out of scope)
.claude/agents·commands·hooks·.mcp.json등 실행체 구현- 참조 무결성 validator 스크립트(코드) — 다음 라운드 후속
- 신규 role 추가 또는 기존 62 role 삭제
2. 핵심 모델: 2개의 직교 축 + 다양성 바닥
| TIER-LIGHT (저위험·가역·단일도메인) | TIER-STANDARD (중간·교차도메인) | TIER-HEAVY (고위험·비가역·프로덕션/매출/보안/법무) | |
|---|---|---|---|
| DIVERGENT (아이디어 생성) | 3개 렌즈 병렬 + 합성 1 | 5개 렌즈 + 역발상 필수 + 합성 | 전 관련 렌즈 + 역발상 필수 + 트레이드오프 매트릭스 |
| CONVERGE (결정·승인) | owner + 리뷰어 1, 감사 없음 | decider + 추천(병렬) + 감사 1 | 풀 DRAI + 감사 병렬 팬아웃(≥3) + 인간 게이트 |
- Mode(무엇을):
divergent|converge— intake에서 명시적으로 선택. - Tier(얼마나 무겁게):
light|standard|heavy— 위험도·가역성·영향반경에서 파생. - 하위호환 원칙: TIER-HEAVY = 오늘의 DRAI 동작 그대로. 기존 rigor를 제거하지 않고, 그 아래 급행 차선(light/standard)을 신설한다. 기존 High/Critical 경로는 자동으로 TIER-HEAVY에 대응된다.
3. 신규 오버레이 파일 (관심사당 파일 하나)
3.1 org-os/00-role-registry/lens-registry.yaml — 다양성 바닥
서로 구별되는 11개 평가 렌즈를 불가침으로 고정한다. 각 렌즈는 "이 렌즈가 던지는 질문"과 "이 렌즈를 실을 수 있는 패밀리"를 명시한다.
| lens-id | 던지는 질문 | 주 carrier 패밀리 |
|---|---|---|
| LENS-VALUE | 장기 회사가치·포트폴리오 적합성? | FAM-CEO, FAM-STRATEGY |
| LENS-TECH | 아키텍처·안정성·확장성·기술부채? | FAM-CTO, FAM-ARCHITECTURE-TECH, FAM-PLATFORM-INFRA, FAM-DATA, FAM-VPENG |
| LENS-PRODUCT | 고객문제·제품가치·로드맵·P/L? | FAM-CPO, FAM-PRODUCT-MGMT |
| LENS-FINANCE | 비용·ROI·자본효율·기회비용? | FAM-CFO, FAM-REVOPS, FAM-STRATEGY |
| LENS-OPS | 운영타당성·프로세스·지원부담? | FAM-COO, FAM-OPS-DELIVERY, FAM-ARCHITECTURE-BIZ |
| LENS-INTEGRATION | 제품-기술 통합·충돌 감소? | FAM-CPTO |
| LENS-SECURITY | 위협·shift-left·데이터 무결성? | FAM-SECURITY, FAM-PLATFORM-INFRA |
| LENS-LEGAL | 계약·컴플라이언스·프라이버시? | FAM-LEGAL |
| LENS-CUSTOMER | 사용자 리서치·고객의 소리·경험? | FAM-UX-RESEARCH, FAM-DESIGN, FAM-GTM-SALES, FAM-OPS-DELIVERY |
| LENS-REVENUE | 매출영향·GTM motion·lead-to-cash? | FAM-REVOPS, FAM-GTM-GROWTH, FAM-GTM-SALES |
| LENS-CONTRARIAN | 이걸 하지 말아야 할 이유·무엇이 깨지나? | (로테이션) 옵션 작성 패밀리가 아닌 임의 reviewer/auditor 가능 패밀리 |
규칙(파일에 명문화):
- R1. 패밀리 통합 시 서로 다른 렌즈는 절대 병합 금지. 같은 렌즈의 중복 역할만 합친다.
- R2.
divergent모드는 tier별 최소 렌즈 수 이상을 병렬 커버해야 한다. - R3.
converge모드(특히 heavy)는 렌즈 의견을 하나로 뭉치지 말고 트레이드오프째 노출한다. (기존team-topology-map.yaml의 executive-balance 계승) - R4. LENS-CONTRARIAN을 담당하는 패밀리는 해당 옵션을 작성한 패밀리와 달라야 한다(이해상충 방지).
3.2 org-os/00-role-registry/capability-families.yaml — 62 → 26 패밀리
62개 role은 참조 분류체계로 보존하고, 실제 인스턴스화·라우팅 단위는 아래 26개 패밀리로 한다. 각 패밀리는 같은 렌즈/역량을 공유하는 role의 묶음이다.
| 패밀리 | 소속 role-id | 비고 |
|---|---|---|
| FAM-CEO | EXEC-CEO | 렌즈: VALUE |
| FAM-ORCH | OPS-ORCH | 코디네이터(무렌즈) |
| FAM-CTO | EXEC-CTO | 렌즈: TECH |
| FAM-CPO | EXEC-CPO | 렌즈: PRODUCT |
| FAM-CFO | EXEC-CFO | 렌즈: FINANCE |
| FAM-COO | EXEC-COO | 렌즈: OPS |
| FAM-CPTO | EXEC-CPTO | 렌즈: INTEGRATION |
| FAM-VPENG | EXEC-VPENG | 엔지니어링 딜리버리 리더십(reviewer) |
| FAM-PRODUCT-MGMT | PROD-PM, PROD-PO, PROD-TPO, PROD-PPO | 제품관리(stream/tech/platform) |
| FAM-UX-RESEARCH | UX-RESEARCHER, DATA-ANALYST | 고객·데이터 인사이트 |
| FAM-DESIGN | DES-PROD, DES-PLATFORM, DES-INTERNAL | 디자인 |
| FAM-STRATEGY | STR-ANALYST | 전략분석 |
| FAM-ENG-FRONTEND | ENG-FE, ENG-FEPLAT, ENG-FEUX | 프론트엔드 |
| FAM-ENG-BACKEND | ENG-BE, ENG-BEGEN, ENG-PRODSERVER, ENG-PLATSERVER, ENG-PRODUCTMINDED, ENG-SW | 백엔드 6역할 통합 |
| FAM-ENG-SPECIAL | ENG-DESKTOP, ENG-PRODCHAPTER | 데스크톱/생산성 특수 |
| FAM-PLATFORM-INFRA | INFRA-DEV, INFRA-PLATFORM, INFRA-DEVOPS, SRE, SEC-DEVSECOPS | 인프라·신뢰성 (SRE=audit-capable) |
| FAM-ARCHITECTURE-TECH | ARCH-EA, ARCH-SOLUTION, ARCH-APP, ARCH-TECH, ARCH-IT, ARCH-SYSANALYST, ARCH-SWAT | 기술 아키텍처 (SWAT=audit-capable) |
| FAM-ARCHITECTURE-BIZ | ARCH-BA, ARCH-BIZANALYST | 비즈니스 아키텍처 |
| FAM-DATA | ARCH-DATA, DATA-ENGINEER, DATA-BIGDATA | 데이터 플랫폼 |
| FAM-QA | QA | 품질(audit-capable) |
| FAM-SECURITY | SEC-ENGINEER, SEC-APPSEC, SEC-CHAMPION | 보안(audit-capable) |
| FAM-OPS-DELIVERY | OPS-CH, OPS-CREW | 고객상담·오퍼레이션 |
| FAM-GTM-GROWTH | GTM-GROWTHPM, GTM-DEMANDGEN, GTM-PMM, GTM-CI | 수요창출·성장·마케팅·경쟁정보 |
| FAM-GTM-SALES | GTM-SALES, GTM-CS, GTM-PARTNER | 영업·CS·파트너 |
| FAM-REVOPS | GTM-REVOPS, GTM-PRICING | 레비뉴옵스·프라이싱 |
| FAM-LEGAL | GTM-LEGAL | 법무/컴플라이언스(렌즈: LEGAL) |
- 총 26개 패밀리, 62개 role 전부 정확히 1개 패밀리에 배정(중복·누락 없음).
- 효율 이득의 핵심: 엔지니어 11→3, 아키텍처/데이터 10→3, GTM 10→4로 통합. 임원 8개는 각자 distinct 렌즈라 통합하지 않음(다양성 유지의 직접 결과).
- 각 패밀리 필드:
family-id,member-role-ids,carries-lenses,audit-capable(bool),default-team-types,instantiation-priority(MVP 여부).
3.3 org-os/06-agent-work/collaboration-modes.yaml — 발산/수렴
- DIVERGENT
- 목적: 다양한 옵션·아이디어 생성.
- 메커니즘: 렌즈별 병렬 팬아웃 — 서로 다른 렌즈/프레이밍을 부여한 N개 에이전트를 동시에 스폰.
- 합성: 합성 에이전트 1명이 옵션을 수집·정리(결정 아님), 렌즈별 트레이드오프 노출. 하나의 추천으로 병합 금지.
- 배리어: 허용(모든 옵션을 모아야 합성 가능 — 정당한 배리어).
- CONVERGE
- 목적: 책임소재 있는 결정·승인.
- 메커니즘: tier 가중 DRAI. 추천자 병렬 실행, 감사자 병렬(heavy), decider가 종합.
- 출력: decision-record = 선택 옵션 + 인정된 트레이드오프 + 반대의견(dissent) 기록.
- 규칙: High/Critical 위험 → 인간 decider (기존 유지).
- 2단계 파이프라인:
divergent → converge를 원할 때 파이프라인으로 연결(발산 결과가 수렴 입력).
3.4 org-os/06-agent-work/governance-tiers.yaml — 기어(티어)
- 파생 입력 3종:
risk-level(Low/Med/High/Critical),reversibility(two-way-door/one-way-door),blast-radius(single-role/cross-team/production-customer-revenue). - 파생 규칙(레벨 가산 방식 — "비가역=무조건 HEAVY" 과분류 방지):
- base = 위험도로 결정:
Low→LIGHT,Med→STANDARD,High|Critical→HEAVY. - modifier(각 +1 레벨, HEAVY에서 상한):
one-way-door+1,cross-team+1. - hard floor:
production/customer/revenue blast이면 최소 HEAVY.
- 예) Low+one-way+single = LIGHT+1 = STANDARD (HEAVY 아님). Med+one-way+cross = HEAVY. Low+two-way+single = LIGHT.
- 인간은 언제나 상향 escalate 가능. Orchestrator는 제안만. 위험도 base 아래로 자동 하향 금지(High/Critical는 항상 HEAVY).
- base = 위험도로 결정:
- 티어별 요구(converge):
- LIGHT: owner + 리뷰어1. evidence-grade 최소 E2. 보안/법무/프라이버시 접촉 시에만 감사자 +1. 인간 불필요.
- STANDARD: decider + 관련 추천(병렬) + 감사1. evidence 최소 E3. 인간 informed(비차단).
- HEAVY:
drai-matrix그대로 풀 DRAI + 감사 병렬 팬아웃(≥3) + evidence 최소 E3, unresolved-critical-risks=false (기존 state-transition Approved 조건과 동일).- 인간 게이트 조건(단일 인간 병목 완화): 위험
High|Critical또는production/customer/revenue blast이면 인간 decider(차단). 그 외 modifier로만 HEAVY에 도달한 경우(예: Med+비가역+교차팀)는 EXEC-CEO decider + 인간 informed(비차단). 인간은 항상 상향해 직접 decider가 될 수 있다.
- 인간 게이트 조건(단일 인간 병목 완화): 위험
- 티어별 요구(divergent): LIGHT=3렌즈/역발상 선택, STANDARD=5렌즈+역발상 필수, HEAVY=전 관련 렌즈+역발상 필수+트레이드오프 매트릭스.
3.5 org-os/06-agent-work/execution-policy.yaml — 파이프라인·병렬감사
pipeline-default: true— 항목이 wave 동료를 기다리지 않고 단계 간 흐름.barrier-allowed-only-when: [divergent-synthesis, dedup-across-all-findings, early-exit-on-zero, cross-item-comparison-required].wave-size ≤ 5= 동시성 상한이지 배리어가 아님(scorecard의 hard-rule 재해석).parallel-audit-fanout(heavy): 독립 검증자 N≥3, 서로 다른 렌즈, 각자 반증(refute) 지향 프롬프트; 과반 반증 →Blocked.verifier-independence: 검증자 패밀리는 자기 패밀리가 작성한 산출물을 검증하지 않는다(기존 independent-audit 이해상충 규칙과 정합).re-hydration-control: 각 단계는 **구조화 요약(evidence 링크)**만 다음 단계로 전달, raw 로그 금지 —context-package-spec의 compression-policy 강제.
4. 기존 파일 최소 수정 (참조만 추가, 의미 제거 없음)
4.1 role-selection-scorecard.yaml
output-template에mode,tier,assigned-lens,lens-coverage필드 추가.- hard-rules 추가:
- "wave 전에 mode와 tier를 선언해야 한다."
- "divergent는 tier별 최소 렌즈 수를 충족해야 한다."
- "converge-heavy는 렌즈를 하나로 병합하지 않는다."
4.2 context-package-spec.yaml
- required/schema에
mode,tier,assigned-lens,divergent-framing(발산 시 각 에이전트에 주는 상이한 프레이밍) 추가.
4.3 state-transition-rules.yaml
- 상태 어휘 3중 정합(state-vocabulary-map) 블록 추가 — 이번 작업의 파이프라인/티어가 돌기 위한 전제라 포함:
workflow-stage(라이프사이클, 단일 원천): intake→discovery→design→review→implementation→verification→release→closed (+blocked)document-state(개별 산출물): Draft→Review→Approved→Closedreview-state(부모-자식 수용 1건): Submitted-for-Review→Accepted|Changes-Requested|Blocked- 매핑: workflow-stage가 워크플로우의 단일 원천. 각 stage 내부에서 document는 document-state를, handoff는 review-state를 가진다. hook은 document-state/review-state를 전이시키고, 해당 stage의 게이팅 문서가 Approved/Accepted에 도달하면 workflow-stage가 전진한다.
tier-modifiers참조 추가: LIGHT는 감사자 요구 완화 + evidence 최소 E2 허용, HEAVY는 기존 조건 그대로. (실제 값은governance-tiers.yaml이 단일 원천)
4.4 org-os/README.md
- 신규 5개 파일 등재.
03-products드리프트 정리:{product-id}/pr-faq.md·roadmap.md·metrics.md구조를 정본으로 채택(README 기준), Claude Code 명세 쪽을 이에 맞춤은 후속 메모.- 패밀리가 인스턴스화 단위이고 62 role은 참조 분류체계임을 한 줄 명시.
5. 의도된 흐름 (나중 구현용 스펙 — 이번엔 문서화만)
/ceo-intake → CEO AI: (a) mode 선택받음(divergent/converge)
(b) risk·reversibility·blast-radius로 tier 제안
/plan-wave → Orchestrator: mode×tier로 팬아웃 형태 결정
divergent → 렌즈별 병렬 팬아웃 + 합성
converge → tier 가중 DRAI(추천 병렬, heavy면 감사 병렬 팬아웃)
/run-wave → execution-policy에 따라 배리어가 아닌 파이프라인으로 실행
이 흐름은 command 계층(=.claude) 구현 대상이므로 이번 라운드에서는 명세 기술만 하고 구현하지 않는다.
6. 컴포넌트 경계 (격리·독립성)
| 컴포넌트 | 하는 일 | 의존 |
|---|---|---|
| lens-registry | 다양성 바닥·렌즈↔패밀리 매핑 제공 | capability-families |
| capability-families | 62 role → 26 패밀리 인스턴스화 매핑 | roles.yaml(참조) |
| collaboration-modes | 발산/수렴의 실행 형태 정의 | lens-registry, execution-policy |
| governance-tiers | 위험→티어 파생·티어별 요구 정의 | drai-matrix, state-transition-rules(참조) |
| execution-policy | 파이프라인·병렬감사·재적재 제어 | context-package-spec(참조) |
각 파일은 단일 관심사만 담고 다른 파일은 id/참조로만 연결 → 하나를 바꿔도 나머지가 안 깨진다.
7. 성공 기준 (수용 조건)
- 62개 role이 정확히 1개 패밀리에 배정(중복·누락 0).
- 11개 렌즈 각각 carrier 패밀리 ≥ 1.
- tier×mode 6개 셀 모두 요구사항 정의됨.
- 기존 파일 변경은 참조 추가뿐이고 기존 rigor 의미 제거 없음(HEAVY == 오늘 동작).
- 신규 파일이 참조하는 모든 role-id/family-id/lens-id가 실제 정의에 존재(orphan 0).
- TIER-HEAVY 경로가 기존
state-transition-rules의 Approved/Closed 조건과 모순되지 않음.
8. 리스크와 대응
| 리스크 | 대응 |
|---|---|
| 티어 오분류로 고위험 작업이 경량 처리 | 위험도 바닥 규칙(High/Critical→HEAVY 자동), 인간 상향 escalate 상시 허용 |
| 패밀리 통합으로 시각 축소 우려 | R1(다른 렌즈 병합 금지) + 성공기준 2로 구조적 차단 |
| 상태 어휘 3중이 hook 구현 시 혼란 | §4.3 state-vocabulary-map으로 단일 원천(workflow-stage) 확정 |
| 명세만 바뀌고 실행체와 괴리 | §5를 구현용 스펙으로 남겨 다음 라운드(.claude) 입력으로 사용 |
9. 후속(이번 범위 밖, 메모)
- 참조 무결성 validator 스크립트(모든 role/family/lens id 존재 검사).
- thin vertical slice(.claude 에이전트·command·hook) — 위 §5 흐름을 실제로 구현·검증.
- Claude Code 명세 문서와 README의
03-products표기 일원화 반영.