이슈 #448
진행중Phase 0.8 — dKernel Agent Identity Session
0%
설명
배경¶
Phase 1 dFS PoC 종합 이슈 #446 이 마감되면서, 그 후속 작업들을 축별 이슈로 분리. 이 이슈는 로드맵 alphea_edge_delta_d_fs_roadmap.md §Phase 0.8 이 정의하는 AI Agent / dshai / wallet-as-identity 흐름이 사람 개입 없이 서비스 형태로 동작하도록 identity session 계층을 정리한다.
현재 상태:
- Phase 0.7 (이슈 없이 #446 누적) 로 WalletChallenge / WalletVerify + RegisterNode 두 owner principal 수용은 동작
- dshai / cmd/dsh 가 wallet token 을 수동으로 받아서 동작 (1h TTL 만료 시 사람이 재로그인)
- command audit 은 조각으로 흔어져 있음 (access_logs)
- dKernel 자체는 코드로 존재하지 않음 (dshcore 가 임시로 그 자리 메움)
범위 (PoC 컷)¶
- Agent identity bootstrap design — key 출처 (local secret store / CI secret / KMS / HSM) 의 connector 인터페이스
-
Wallet JWT 자동 발급·갱신 —
WalletChallenge → sign → WalletVerify흐름의 daemon. expiry 전에 미리 갱신 - dshai / dKernel token bootstrap — 운영자가 매번 wallet login 안 해도 client 가 알아서
-
Command audit — 어떤 principal 이 어떤 namespace 에서 어떤 명령을 실행했는지 ledger (
access_logs확장 또는 별도 테이블) - dKernel control plane scope — 세션 / namespace 권위 / lease / lock / runtime launch 의 권위 분리. 현재 dshcore 가 ad-hoc 으로 권위를 갖고 있는 부분을 정리
디자인 reference¶
- 로드맵 §Phase 0.8 (Agent Identity Session)
- 이슈 #442 에서 추가된 ALPHEA dKernel Spec v0.1 (RFC-A: Identity/Auth, Session, Namespace/Workspace, Lease/Lock/Version + fencing token, Policy/Permission, Runtime/Launch)
- 이슈 #442 에서 추가된 ALPHEA Distributed Lock Service Application Development Guide v0.1 (Lease + fencing token, gRPC over HTTP/3)
DoD (PoC 컷)¶
- Agent identity bootstrap 디자인 결정 (key 출처 / refresh 주기 / failure mode)
- dshai / dsh 가 wallet token expire 시 자동 갱신 후 재시도 가능
- command audit 스키마 + 기록 helper + dshai/dsh 경유 흐름 온전 기록
- dKernel session/namespace 권위 분리 디자인 (현재 dshcore 권위를 정리)
- sdktest / dshai / dsh 의 reference 검증 흐름 (장기 세션 시나리오)
- 로드맵 §Phase 0.8 의 ✅ 인용문 갱신
관련¶
HP Henry Park이(가) 6달 전에 변경
- Subtask에 #450이(가) 추가되었습니다.
HP Henry Park이(가) 6달 전에 변경
- Subtask에 #451이(가) 추가되었습니다.
HP Henry Park이(가) 6달 전에 변경
- Subtask에 #452이(가) 추가되었습니다.
HP Henry Park이(가) 6달 전에 변경
- Subtask에 #453이(가) 추가되었습니다.
HP Henry Park이(가) 6달 전에 변경
- Subtask에 #454이(가) 추가되었습니다.
HP Henry Park이(가) 5달 전에 변경
Phase 0.8 진척 — 첫 슬라이스 완료¶
commit:server2|752b7be
0.8-1 (Signer abstraction + wallet JWT auto-renew) 가 #450 에서 마감 될. AI Agent 가 cmd/dshai 로 장기 세션을 운영하는 데 운영자 개입이 필요하던 wallet JWT TTL 벍경 공가 막혀. Phase 0.8 의 다른 슬라이스들 (session entity, audit, task routing) 이 의미 있게 동작할 수 있는 기반이 깔림.
명시적 설계 결정¶
docs/phase-0.8/decision-log.md 의 2026-05-20 entry 가 기록:
-
sdk.Signer.Sign은ctx context.Context를 day-one 에서 부터 받음 (KMS/HSM/keychain/remote agent 는 async) -
WalletLogin은 hex string overload 제거 +WalletLoginResultSDK 타입으로 proto 타입 leak 제거 — 이후 0.8-3 agent-session 클래임에서 proto 가 자라도 SDK 표면 안 깨짐 - backward-compat alias 부재 — Phase 0 GoTrue migration 과 같은 원칙
-
dshcore.Client.SetTokenhot-swap 을 서포터 프레임워크 레벨에 넘김 — 0.8-2 audit 과 0.8-3 session refresh 뗌 괴 안에서도 이 시든 재사용
남은 자식 이슈 의존성 체인¶
- #451 (0.8-2 command_audit) → #452 (0.8-3 Agent session) → #453 (0.8-4 DKernelTaskService) → #454 (0.8-5 문서·patent mapping)
- 0.8-1 이 있으므로 0.8-2 감사 레코드가 "장기 세션 운영 중에 쓰이는" 의미를 확보. 0.8-3 session 이 그 위에 SSOT 로 올라감
다음 합류 지점: #451 (0.8-2 command_audit 스키마 + dshcore audit hook).
HP Henry Park이(가) 5달 전에 변경
Wiki 재구조 + README framing 재작성¶
commit:server2|5989ef0
GitLab Wiki 가 87KB 단일 Roadmap 페이지 + 빈 Home 의 상태였어서, Phase 0.8 sub-issue 0.8-5 (문서·patent mapping·decision log) 의 일환으로 wiki 구조를 정리하고 동시에 stale 해진 README 를 dFS/Delta/Lyra/Vega/dKernel layer framing 으로 재작성.
Wiki (GitLab API 로 13개 페이지 생성/업데이트)¶
-
Home/Roadmap을 짧은 navigation + phase 상태표로 교체 (긴 원본은 repo 의alphea_edge_delta_d_fs_roadmap.md가 source-of-truth). -
Architecture— 단일 프로세스 다이어그램 + 명명 체계 (dFS / Delta / Lyra / Vega / dKernel) + Principal 모델 + Storage Evolution Stage 1~4. -
Phases/Phase-0-Auth-and-Identity(0 / 0.5 / 0.7 묶음) /Phases/Phase-0.8-dKernel-Agent-Identity-Session/Phases/Phase-1-dFS-PoC/Phases/Phase-2-Lyra-and-Delta-Registry/Phases/Phase-3-Vega-Runtime/Phases/Phase-4-Web-SDK-and-Capability-Gateway— 각 phase 의 목표 · 완료된 부분 · 후속 · 핵심 commit chain. -
Decisions/Decisions/Phase-0.8-Decision-Log— Phase 0.8 의 2026-05-19 첫 슬라이스 결정, 2026-05-20 Signer/WalletLogin contract, 세 review fold-back 요약 (원본은docs/phase-0.8/decision-log.md). -
References— repo source-of-truth 위치, docs 11종, 외부 시스템 (Redmine / SigNoz / edge-rpc.alphea.io). - 분기 안내: 새 docs 와 roadmap 이
feat/dfs-poc에만 있어서 wiki 의 repo 링크는 전부feat/dfs-poc기준.
URL: https://git.alphea.io/Alphea-Dev/alphea-app-v0/alphea-edge-proto/-/wikis/Home
README (이번 commit 5989ef0)¶
- Lead 문단 + Features 를 "edge compute + AI Agent 앱 실행 계층" framing 으로 재구성 ("AWS Lambda + S3 의 모바일 엣지 버전").
- 새 섹션 "Layer / 명명 체계" 에 dFS / Delta / Lyra / Vega / dKernel + Principal 모델 표.
- Services 표: 12 services / ~67 RPCs. VfsService 제거, DfsService(8) + DeltaService(6, Enable/Disable 포함) 추가. AuthService 7→3 (GenerateKeypair + WalletChallenge + WalletVerify).
- Quick Start 에 sdktest reference flow (keygen → wallet login → node register --auth wallet → dfs put) 추가.
- Project Structure:
cmd/sdktest·apismoke·dsh·dshai+internal/dshcore추가,vfs제거, AIS shell → dShell. - Configuration env 표 갱신: GoTrue 5종,
WALLET_CHALLENGE_DOMAIN·WALLET_TOKEN_TTL_SECONDS,MONITOR_TEST_CLIENT_ENABLED,ADMIN_SAML_*4종 추가.PASSWORD_SALT(deprecated) 제거. - Documentation 섹션이 docs 10·11, phase-0.8 gap report·decision log, roadmap, GitLab Wiki 모두 링크.
Phase 0.8 와의 관계¶
Phase 0.8-1 (#450) 의 결정 기록 + 0.8 전체의 patent mapping 표 + dKernel agent identity layer 위치를 wiki 의 Phases/Phase-0.8-... 와 Decisions/Phase-0.8-Decision-Log 에 정리해, 0.8-5 의 문서·patent mapping·decision log 항목의 절반 (외부 가독 표면) 을 메웠다. 남은 0.8-5 작업은 코드/docs 안쪽의 patent component → 구현 위치 mapping 표와 권한 경계 docstring 일관화.
HP Henry Park이(가) 5달 전에 변경
Phase 0.8 진척 — 두 번째 슬라이스 완료¶
commit:server2|6ee2aa3
0.8-2 (command_audit 스키마 + dshcore audit hook) 가 #451 에서 마감. AI replay 소비자가 읽을 수 있는 구조화된 audit 레코드 + 4 헤더 attribution 규칙이 PoC 레벨로 자리 잡음.
핵심 결정 (decision-log 의 2026-05-20 두 번째 entry)¶
-
X-Alphea-Surface/Command/Request-Id헤더 규칙 (X-Dshai-* 보다 일반적) - Hash =
sha256:<hex>ofproto.MarshalOptions{Deterministic: true}.Marshal(req)— cross-language canonical JSON 은 deferred - error_code 는
dshcore.Code7종 vocabulary 로 collapse (ConnectRPC code 의 상세 은 client 에게 철렬 노출 안 함) - 두 테이블 (
access_logs+command_audit) 공존 — 서로 다른 소비자, 2 DB writes per RPC 는 PoC 에서 수용 - 헤더 는 advisory — permission 은 JWT principal 만
남은 자식 이슈 체인¶
- #452 (0.8-3 Agent session entity) → #453 (0.8-4 DKernelTaskService skeleton) → #454 (0.8-5 문서)
- 0.8-2 가 있으므로 0.8-3 가 추가한 session_id 가 바로 command_audit.agent_session_id 컬럼 을 채운다 — 이미 컬럼 대기
- namespace 컬럼 은 이 슬라이스에서 비워둔 상태 (per-procedure mapping 또는 proto reflection 이 필요)
다음 합류 지점: #452 (0.8-3 Agent session entity + bootstrap RPC).
HP Henry Park이(가) 5달 전에 변경
Phase 0.8 진척 — 세 번째 슬라이스 완료¶
commit:server2|a0ca19e
0.8-3 (Agent session entity + bootstrap RPC) 가 #452 에서 마감. agent_sessions 가 이제 real persisted entity — audit grouping · heartbeat · continuity 의 SSOT. enforcement 는 아직 안 켜진 — dKernel 슬라이스 멫이.
명시적 설계 결정 (decision-log 의 2026-05-20 세 번째 entry)¶
- session = durable persisted row, enforcement 는 후속 — 권한은 JWT 만
- principal_* 는 server-derived from bearer (client 가 못 보냄) — attribution 신뢰 보존
- 4 번째 audit 헤더 (X-Alphea-Agent-Session-Id) 구조적으로 기존 3 헤더와 동일 패턴 (advisory)
- expired/revoked/missing row 는 touch 안 함 — lifecycle 주속·왬곡 방지
- dshai bootstrap = startup hard requirement (no --no-session escape)
남은 자식 이슈¶
- #453 (0.8-4 DKernelTaskService skeleton) → #454 (0.8-5 문서·patent mapping)
- 0.8-2 의 namespace 컬럼 + 0.8-3 의 session row + 0.8-4 의 task RPC 이 dKernel 권위 계층의 다음 장 재료
다음 합류 지점: #453 (0.8-4 DKernelTaskService skeleton).