A2A Status and Gap Audit
이 페이지는 현재 A2A 작업이 어디까지 정리되었고, 어떤 증거가 있으며, 무엇이 아직 실기기 또는 업체 구현으로 남아 있는지 추적한다.
상태 요약
| 영역 | 현재 상태 | 증거 | 남은 공백 |
|---|---|---|---|
| Cloud Planner | route family와 multi-step plan 구조 문서화 | main_router.system_prompt.txt, main_router_api.py |
실제 운영 prompt 변경 시 benchmark 재검증 필요 |
| Cloud Runtime | device step을 device_task_requests로 변환하는 구조 문서화 |
runtime/task_manager.py, runtime/orchestrator.py |
실기기 request 수신 확인 필요 |
| Task Event State | 정상/실패 event의 replan 정책 문서화 | runtime/workflow_state.py, task event tests |
실제 DeviceAgent event payload 호환 검증 필요 |
| On-device Bridge | device_intent_step workflow runner 구조 문서화 |
ForegroundService.kt, CloudIntentWorkflowRunner.kt |
APK 설치 후 native callback E2E 필요 |
| DeviceAgent TaskManager | 업체 구현 계약과 API 요구사항 정리 | TaskManager.java, TaskEventListener.java, TaskReasonContract.java |
업체 구현물과 계약 필드 대조 필요 |
| Device Context | plan 전 최소 기기 상태 snapshot 방향 정리 | DevicePlanningContextProvider.java |
실제 값 freshness, 누락값 정책 필요 |
| Speech-LLM Context | STT, voice context, memory, device context, Agent/Skill, 복합제어를 하나의 loop로 묶는 상위 구조 문서화 | Speech-LLM Context-Aware A2A Architecture | noisy speech, active workflow fragment, interruption fixture 필요 |
| Agent & Skills | family별 agent/skill 책임을 상위 구조에 연결 | Speech-LLM Context-Aware A2A Architecture, Planner and Routing | 실제 runtime agent catalog와 prompt/schema 간 drift 점검 필요 |
| Memory | session/day/week/profile 계층 설계 정리 | memory design docs | DB schema, sync cursor, privacy policy 구현 필요 |
| Benchmark | family별 실패 축과 해석 기준 정리 | benchmark/router history docs | 최신 prompt 기준 full-run artifact 보존 필요 |
| Real Device E2E | 검증 절차와 기대 로그 정리 | device_e2e_* tools, validation guide |
ADB 단말 연결 후 최종 증거 수집 필요 |
추적 매트릭스
상세 요구사항 추적은 Requirements Traceability Matrix를 기준으로 관리한다. 아래 표는 상태 요약용이다. 문서별 설계/소스/검증 근거는 A2A Evidence Index를 기준으로 본다.
| 요구사항 | 설계 문서 | 구현 위치 | 테스트/검증 | 상태 |
|---|---|---|---|---|
| 사용자 발화를 family와 step plan으로 분해 | Planner and Routing | gemini/a2a/planner/* |
benchmark, planner sample tests | 부분 완료 |
| ODL/device step을 온디바이스 실행 요청으로 변환 | Device Task Flow, Contract Matrix | gemini/a2a/runtime/task_manager.py |
device task dry-run | 부분 완료 |
| 온디바이스가 device workflow를 순차 실행 | Device Task Flow | CloudIntentWorkflowRunner.kt |
runner unit tests | 부분 완료 |
| 정상 event는 Cloud LLM 재판단 없이 처리 | Contract Matrix, Validation Guide | workflow_state.py |
task event contract tests | 부분 완료 |
| 실패/차단 event는 reason code와 함께 replan 후보 | Vendor Handoff | TaskReasonContract.java, workflow_state.py |
contract tests, real device pending | 부분 완료 |
| 업체가 TaskManager API를 구현 | Vendor Handoff, Work Breakdown | TaskManager.java, MainApi.java |
unit/instrumented tests 필요 | 진행 중 |
| 실제 단말에서 복합명령 E2E 증명 | Validation Guide | 전체 3개 repo | ADB/logcat/artifact validator | 미완료 |
| Speech-LLM context-aware loop 증명 | Speech-LLM Context-Aware A2A Architecture | planner/runtime/session/memory 관련 모듈 | noisy STT, slot fragment, mixed plan fixture | 부분 완료 |
완료로 보지 말아야 하는 것
- HTML 문서가 생성됐다는 사실만으로 실제 기기 실행이 완료된 것은 아니다.
- Unit test가 통과해도 DeviceAgent와 온디바이스 간 실제 callback payload가 맞는지는 별도 검증해야 한다.
COMPLETED이벤트가 Cloud로 올라온다고 해서 Cloud가 매번 반응해야 하는 것은 아니다. 정상 이벤트는 기본적으로 기록과 local unlock 목적이다.reason자연어 문자열만으로는 안정적인 replan이 어렵다. 구조화된reason_code와reason_params가 필요하다.
다음 검증 우선순위
상세 실행 순서는 A2A Next Action Board를 기준으로 관리한다.
- Cloud dry-run으로
device_task_requests구조 확인. - Speech-noisy / active workflow slot fragment / mode interruption fixture를 planner regression에 추가.
- Cloud-only, device-only, mixed multi-step fixture에서
depends_on,input_from,execution_target,wait_policy보존 확인. - 온디바이스 unit test로 dependency unlock과
WORKFLOW_COMPLETED확인. - DeviceAgent TaskManager unit/instrumented test로
submitTask,submitWorkflow,onTaskEvent확인. - ADB 단말 연결 후 APK 설치, 복합명령 입력, logcat evidence 수집.
- Artifact validator로
cloud_plan_id,cloud_step_id,cloud_output_key,requires_cloud_decision확인.
판단 기준
이 작업은 “문서가 있다”가 아니라 “소스, 계약, 테스트, 운영 검증이 같은 이야기를 한다”가 완료 기준이다.