Skip to content

docs: Maestro 비전 보고서 — 보편적 승인·결정·이력 서비스 - #30

Merged
redsunjin merged 1 commit into
mainfrom
docs/vision-universal-approval-record
Jul 21, 2026
Merged

docs: Maestro 비전 보고서 — 보편적 승인·결정·이력 서비스#30
redsunjin merged 1 commit into
mainfrom
docs/vision-universal-approval-record

Conversation

@redsunjin

Copy link
Copy Markdown
Owner

개요

Maestro를 "코드 승인 도구"에서 "AI 시대의 보편적 승인·결정·이력(system of record) 서비스"로 확장하는 개념/비전 보고서를 추가합니다. 코드 변경 없음(docs only).

산출물: docs/vision/2026-07-21-universal-approval-record-service.md

브레인스토밍으로 확정된 전략 방향

항목 확정
독자/용도 내부 북극성 문서
제품 형태 Maestro 자체 진화 (코드 승인 = 첫 결정 유형)
포지셔닝 개인→팀→조직 단계론
AI 자동승인 경계 정책 내 위임 + 사람 에스컬레이션 (WP-008 일반화)
네이밍 오케스트레이션 메타포 유지·확장

핵심 테제

  1. Maestro는 이미 범용 결정 레이어의 원형(ApprovalRequest/Decision, per-agent 토큰, Pull-first+ack, WP-008, 영속 이력)을 코드 도메인에서 검증했다 — §7 매핑 표 중심
  2. decision↔executor 분리가 범용화의 열쇠 — record-only 결정이면 executor 없이 새 결정 유형 추가 가능
  3. 단계적 확장 + YAGNI 경계 명시 (지금 하지 않을 것 목록 포함)

검증

  • docs만 변경, 코드/테스트 무영향
  • 부록 A 상대 링크 경로 확인 완료

🤖 Generated with Claude Code

Maestro를 코드 승인 도구에서 AI 시대의 보편적 승인·결정·이력
(system of record) 레이어로 확장하는 내부 북극성 문서.

- 현 자산(ApprovalRequest/Decision, per-agent 토큰, WP-008,
  history)을 일반 엔티티(Actor/DecisionRequest/Decision/Policy/
  AuditLog/Delegation)로 매핑
- decision↔executor 분리를 범용화의 열쇠로 정리 (record-only 결정)
- 개인→팀→조직 3단계 로드맵 + 리스크/YAGNI 경계
- 위임 철학: 정책 내 위임 + 사람 에스컬레이션
- 네이밍: 오케스트레이션 메타포 유지·확장 (레인→결정 채널)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a9e291515b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

현재의 `ApprovalRequest`를 일반화한 것. `ApprovalRequest`는 **DecisionRequest의 코드 특화형**이다.

- 추가되는 것: `subjectType`(merge / work-intake / plan / spend / publish / data-access / …), `subject`(유형별 payload — 브랜치명+diff 요약은 merge 유형의 payload일 뿐), `requestedActor` / `decidingActor`.
- 유지되는 것: 상태 모델(`pending_decision` → decided), 소스 구분(`agent | legacy | operator`), 프로젝트/채널 귀속.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Treat the request-state transition as a new contract

This labels pending_decision → decided and the operator source as behavior to retain, but the inspected approval path does not provide either: APPROVAL_REQUEST_STATUS contains only pending_decision (maestro-server.js:2245-2247), stored requests remain in that state after a separate decision is created, and the request endpoints supply only agent or legacy sources. Since this table is the implementation roadmap, mark the terminal state and operator ingress as additions (or preserve the existing separate-decision model) so implementers do not assume these migration steps already exist.

Useful? React with 👍 / 👎.

| Agent Registry + per-agent 토큰 (`tokenHash`, `MAESTRO_AGENT_AUTH_ENFORCE`, PR #24) | **Actor** (human/agent 공용 신원) | `actorType` 추가, 사람 신원은 팀 단계에서 |
| `ApprovalRequest` (store + 영속화) | **DecisionRequest** | `subjectType` + 유형별 `subject` payload 추가. ApprovalRequest는 `subjectType=merge` 특화형으로 재해석 |
| `ApprovalDecision` (5어휘 + delivery/ack) | **Decision** | 거의 그대로 — 어휘가 이미 범용적 |
| Pull-first 전달 + `ack` | 결정 전달 계약 그대로 | 변화 없음. AI↔AI에서 "수신 사실의 감사"로 가치 상승 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Bind acknowledgements to authenticated actors

The current ack contract cannot remain unchanged if receipt is meant to be auditable in the AI↔AI flow. In the default open/server-grace modes, authorizeAgentEndpoint has no actor identity (maestro-server.js:215-230), the ownership check runs only for per-agent authentication (maestro-server.js:2124-2134), and acknowledgedBy can come from the request body (maestro-server.js:2822-2829); therefore another caller can acknowledge or falsely attribute receipt. The generalized contract needs identity-bound acknowledgement (or mandatory strict actor authentication) rather than declaring this portion unchanged.

Useful? React with 👍 / 👎.


### 6-2. 부인방지 (Non-repudiation) — 단계적으로

- 개인 단계: append-only 파일 원장 + actor 토큰이면 충분하다. 위협 모델이 "자기 기록의 유실"이지 "적대적 변조"가 아니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Add a personal-stage control for ledger loss

An append-only local file is not sufficient for the stated personal-stage threat of record loss: append-only semantics prevent logical mutation, but disk loss, accidental file removal, or corruption still destroys the only ledger. The inspected history implementation also retains only MAESTRO_HISTORY_MAX_ITEMS entries and evicts older records (maestro-server.js:67-70, 2542-2546). Define durable backup/export and unbounded archival for Stage 1, or change the threat and system-of-record claims; postponing backup until the team stage leaves the explicitly identified personal threat unmitigated.

Useful? React with 👍 / 👎.

@redsunjin
redsunjin merged commit bbdcc4d into main Jul 21, 2026
2 checks passed
@redsunjin
redsunjin deleted the docs/vision-universal-approval-record branch July 21, 2026 11:12
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.

2 participants