← Docs hub

2026-10-08 최신 전체 현황: 12개 구역 · 97개 할 일과 진행 단계. 소스 연결과 기기 인수를 분리해 기록했습니다. 아래 날짜가 앞선 상태 설명은 당시 이력이며 최신 완료 판정은 새 표를 기준으로 확인하세요.

SKIX 제품 프레임워크 리팩터링 진행 현황

이 문서는 “일반 AOSP 위의 제품 공통 Robotics Framework” 목표에 맞춰 실제 폴더·SDK 계약·DeviceAgent 실행 owner·소비자 빌드·미검증 시스템 경계를 함께 추적한다. 구조 정의만으로 완료 처리하지 않고 source caller와 build 입력을 기준으로 상태를 적는다.

구현률은 하나의 총괄 퍼센트로 합산하지 않는다. 각 WBS 구역의 확인된 코드·테스트·빌드 증거와 남은 완료 조건으로 진행도를 판단하며, Binder·AOSP·실기기 검증은 별도 게이트로 표시한다.

Blueprint 준비 WBS: P0–P7 진행 순서와 19개 업무 구역에서 요구 정리→Blueprint 검토·설계→담당 배정→구축→제품 인수까지 전체 흐름을 본다. 201개 번호별 TODO는 각 구역의 해야 할 일, 주담당, 상태, 완료 결과, 업체 확인 항목을 적었다. 브랜치 간 코드 정합 목록은 이 WBS와 별개다.

6명 System 팀 책임 분할과 전체 TODO: System 6인 Manager R&R 및 전체 TODO에서 기능별 단일 책임자, 현재 실행 owner, 전체 WBS와 완료 증거를 한눈에 확인한다. 세부 실행 카드와 최신 검증 근거는 실행 TODO, 브랜치·제품 정합 판단은 브랜치 정합 대표 문서를 기준으로 본다.

현재 기준 — 2026-09-30

2026-09-29 — SDK 2.0 AAR를 알려진 소비 앱에 전환

기존 devicecontrolapi-release.aar 6개(정본과 SKMLauncher, SKMLauncher2, IotAgent, EventAssetAgent, PairingAgent)를 SDK 2.0 후보로 교체했다. 25개 public return descriptor 변경과 기존 LLM submission API 제거가 있어 바이너리 drop-in은 아니다. 모든 알려진 소비 앱은 새 ABI로 재빌드하는 major migration 경로다. artifact manifest에 2.0.0, source base 4d9b1a57, dirty worktree 여부를 기록했고, verify-framework-sdk-artifact.sh가 6개 SHA 일치를 확인한다.

검증: SDK release JVM 233 tests / 80 suites, 실패·오류·skip 0; release AAR bundle PASS. SKMLauncher, SKMLauncher2, EventAssetAgent, PairingAgent debug APK assemble PASS, IotAgent devDebug assemble와 5개 flavor Java compile PASS. 이번 Gradle 실행은 candidate SHA가 이전 검증과 동일해 UP-TO-DATE로 끝났다. signed release, APK install/run, Binder IPC, AOSP/product inclusion 및 실제 장치 동작은 검증하지 않았다.

2026-09-29 — OTA 결과·소비자 정합 및 빈 패키지 축소

SkixManageManager.launcherOtaUpdate()와 launcherOtaUpdateJenkins() 반환형을 team 경로 service.UpdateCommandResult로 맞췄다. 기존 manager 패키지 타입은 deprecated 호환 상위 타입으로 남겨 재컴파일 시 대입 호환을 제공한다. 이는 이전 AAR ABI 호환을 보장하지 않으므로 소비자 AAR은 교체하지 않았고 전체 consumer 재빌드가 S4 gate다. 계약 회귀 전 SDK 233 tests / 80 suites 통과.

팀 SDK와 source path도 비교해 canonical DeviceControlService를 compatibility/java에서 core/java로 이동했다. SkixManager가 의존하는 SDK transport owner이므로 backward dependency를 없앴다. public FQCN을 유지하고 raw Bundle 진입점은 deprecated 처리했다. 이 경계 회귀는 RED→GREEN, SDK release JVM 233/80 및 release AAR build PASS.

팀 SDK와 source path도 비교해 canonical DeviceControlService를 compatibility/java에서 core/java로 이동했다. SkixManager가 의존하는 SDK transport owner이므로 backward dependency를 없앴다. public FQCN을 유지하고 raw Bundle 진입점은 deprecated 처리했다. 이 경계 회귀는 RED→GREEN, SDK release JVM 233/80 및 release AAR build PASS.

실제 Java 구현이 없던 domain/schedule, execution/workflow, integration/{agent,android,hal,mcu}, legacy의 package marker 7개를 삭제했다. Tree verifier fixture는 marker-only 패키지를 RED로 재현하며, 수정 후 fixture와 실제 tree 검사가 모두 통과했다. 이 변경은 구현 소스가 있는 Soong 계층을 제거하지 않는다.

실제 제품 경로와 Blueprint host 경로, branch convergence WBS

정합 상태·폴더 위치·다음 게이트를 크게 보기 · 코드 근거 상세 문서

2026-09-29 — CameraAccessRequest SDK 정합

팀 SDK의 CameraAccessRequest와 SkixCameraManager.requestAccess(CameraAccessRequest) 계약을 base/core에 추가했다. 기존 (String, Usage) overload는 deprecated 처리하고 DTO로 위임해 client ID 검증과 null usage의 STREAM 기본값을 팀 동작과 맞췄다. 기존 wire method/key는 그대로 유지했다.

TDD RED→GREEN 및 독립 명세/품질 검토 PASS. SDK 228 tests / 78 suites, failure/error/skip 0; release AAR SHA-256 51f4bec5…. Team의 reportError() no-op과 달리 로컬 SDK는 DeviceAgent reportCameraAccessError → CameraCommandHandler → CameraAccessPolicy가 실제 처리하므로 제품 경로를 보존했다. Consumer AAR 교체, 앱 실행, Binder/AOSP/device 검증은 포함하지 않는다.

2026-09-29 — DeploymentEnvironment typed query 정합

팀의 DeploymentEnvironment와 EnvironmentService.getDeploymentEnvironment()를 추가했다. 기존 getDeployEnvType() command 및 type key를 재사용하고 문자열 호환 API와 SkixManageManager facade는 deprecated 처리했다. DeviceAgent의 미설정값 -1과 누락/미지원 값은 모두 UNKNOWN으로 매핑한다.

모델 value mapping, typed service descriptor, legacy deprecation 테스트를 추가했다. 명세·품질 검토 PASS. 본 변경을 포함한 SDK 전체 232 tests / 80 suites, failure/error/skip 0; release AAR SHA-256 2f94c3a2…. Team ManagerInfo handler command와 로컬 DeviceAgent 경로를 확인했으며, 실제 앱 호출·Binder/AOSP/device 결과는 미검증이다.

2026-09-29 — On-device schedule snapshot typed API 정합

Team SDK의 SkixScheduleManager.getOnDeviceSchedules()를 현재 SDK에 추가했다. 확인된 공통 경로는 getschedule → DeviceAgent ScheduleCommandHandler → outdata.scheduleList이며, 기존 DeviceSchedule 변환기를 재사용해 immutable typed 목록을 반환한다. 이 계약을 위해 SkixResult.getBundleArrayList()를 내부 adapter 전용 deprecated accessor로 추가했다. 신규 manager/provider/layer나 중복 result wrapper는 만들지 않았다.

두 API 부재를 reflection contract test 2개로 먼저 재현(RED)한 뒤 구현 후 focused GREEN. SDK 전체 235 tests / 80 suites, failure/error/skip 0; release AAR bundle PASS, source candidate SHA-256 5b758b805bba0d8ba0eb29be3f75c6b3f76235068c9586b67620c10a641ff049. 이번 slice에서는 checked-in 소비자 AAR를 갱신하지 않았고 consumer rebuild, Binder/AOSP/device 실행은 미검증이다. SDK 파일 수 차이 101은 남은 작업 건수가 아닌 정적 inventory다.

2026-09-29 — SKMLauncher2 typed schedule consumer 연결

ScheduleRepository가 schedule().addListener(List<DeviceSchedule>)를 등록하고 typed DTO로 화면 state를 갱신하도록 옮겼다. SKMLauncherApp의 전역 getschedule Bundle 파싱 분기는 제거해 한 경로만 남겼다. 팀 구현과 다른 local WssConfigState 검증은 그대로 보존했다. TDD source contract는 RED→GREEN, app unit 3/3·Kotlin/Java compile·:app:assembleDebug PASS; APK zip integrity PASS. debug APK는 1,095,192,038 bytes (1.10 GB / 1.02 GiB)이며 리소스 payload가 큼. 앱 화면, Binder 왕복, 설치·실기기 동작과 listener lifecycle은 미검증이다. 로그 /tmp/skix-launcher2-typed-schedule-final-20260929.log, /tmp/skix-launcher2-typed-schedule-apk-20260929.log.

2026-09-29 — Launcher2 SafeCare schedule와 구독 listener owner 정합

예약 청소 시작은 ReceivedScheduleInfo typed adapter를 거쳐 SafeCareStartRequest로 바꾸고 EventAssetAgent의 named scheduled-patrol API에 전달한다. 이번 후속 변경은 전역 구독 상태와 WSS running-state callback을 모두 SkixSecurityManager typed listener로 옮겼다. 구독 초기 상태 조회도 같은 manager에서 수행하며 등록 실패 시 listener cleanup을 시도한다. START/STOP 화면 전환, station-return guard, 지연 종료 처리는 보존했다. SDK compatibility 구현은 현재 legacy WSS transport에 연결되어 있어 이는 앱 의존 경계 정합이지 WSS transport 완전 제거가 아니다. 수동 start/pause/resume/stop 및 auth/config 호출은 별도 payload와 결과 계약을 확인할 때까지 남는다.

TDD source contract는 RED→GREEN, 연관 Python 계약 6/6, Launcher2 :app:testDebugUnitTest 4/4 및 Kotlin/Java compile PASS. DataBinding namespace 경고 61개와 기존 Gradle deprecation 경고가 남는다. APK assemble/install, Binder 왕복, 서비스 재연결, 화면 동작과 실제 기기 동작은 미검증이다. Gradle 로그는 별도 저장하지 않았다.

2026-09-29 — Launcher2 SafeCare 공유 예약 모델 정합

팀 브랜치의 SafeCareScheduleConfig를 데이터 모델로 수용하고 ReceivedScheduleInfo·ScheduleRepository·예약 실행/표시 모델·이동 화면의 공유 참조를 전환했다. 스케줄 행 DataBinding도 새 타입을 사용한다. 데이터·저장소에서 화면 전용 WssConfigState를 참조하는 역방향 의존은 사라졌고, 구형 WSS 화면 내부의 로컬 상태 모델은 아직 남아 있다.

회귀 계약은 RED를 확인한 뒤 GREEN. Python source contract 5/5, Launcher2 JVM 2/2, Kotlin/Java compile PASS. 기존 DataBinding namespace 경고 61개와 Kotlin toChar() deprecation 1건이 남는다. APK·Binder·화면·기기 동작은 미검증이며, 설정/auth 및 수동 명령 caller 정합은 다음 단계다.

2026-09-29 — Launcher2 SafeCare scalar 호출 SDK 정합

PIN 검증, 얼굴 확인 시작/종료, 감지 pause/resume/stage, 배터리·AWS/네트워크·저조도 조회, 구독 갱신과 patrol pause/resume/stop을 SkixSecurityManager로 연결했다. pause는 인수와 무관하게 PUI, resume은 schedule 외 PUI, stop은 기본 PIN이던 기존 trigger 선택을 보존했다. 화면 repository의 기존 예외 처리 및 오류 기본값도 유지했다. Patrol start 파라미터는 compatibility converter가 변환하지 않는 legacy 중첩 공간 필드를 포함할 수 있어 직통 경로를 유지했다. rich availability와 raw transaction/config도 아직 legacy 경계에 있다.

새 source contract는 기존 직접 호출에 대해 RED를 확인한 뒤 수정 후 GREEN. Launcher2 focused JVM 3/3, Java/Kotlin compile PASS. 61개 기존 DataBinding namespace 경고와 Kotlin deprecation 1건이 남고 APK·Binder·화면·기기 실행은 미검증이다.

2026-09-29 — Launcher2 StayViewModel availability 계약 정합

팀 계약과 맞춰 StayViewModel의 두 SafeCare availability 조회를 SecurityAvailability로 전환하고, 실제 호출처가 없는 legacy wrapper 의존을 제거했다. SafeCareAvailabilityConvergenceSourceTest RED→GREEN 2/2 및 Java/Kotlin compile PASS. 남은 legacy WSS screen command/config 흐름은 별도 owner 경로 검증 대상이다. APK·Binder·AOSP·실기기 동작은 미검증이며, 기존 DataBinding 경고 61건과 Kotlin deprecation 1건은 그대로다.

2026-09-30 — Launcher2 SafeCare 수동 시작 caller 정합

WssViewModel 설정 조회와 patrol start를 SecurityPatrolConfiguration 기반 SDK 호출로 옮겼다. admission은 SecurityAvailability, trigger는 typed enum을 사용한다. 화면 ViewModel에서 WssParameter·WssResult 참조를 제거했고, 기존 공간 선택 순서 및 충전 스테이션 S02 허용 규칙을 유지했다. source contract 4/4 및 Java compile PASS. SDK compatibility가 아직 기존 DeviceAgent transport로 연결되므로 이를 transport 또는 실행 owner 이관 완료로 세지 않는다. 상세 내역과 로그는 branch convergence 상세에 둔다. 기기 동작은 미검증이다.

2026-09-30 — Launcher2 WSS 화면 callback typed 정합

WssActivity의 verify/light/battery/condition listener와 WssCameraFragment 얼굴 인식 listener를 typed SkixSecurityManager 계약으로 전환하고 WssRepository 경유 등록·해제를 적용했다. 기존 Handler executor, resume 등록과 destroy 해제, 화면 callback 분기 및 battery recovery UI 처리를 보존했다. Source contract RED→GREEN, focused Launcher2 JVM 7/7 및 Java compile PASS (/tmp/skix-face-callback-green-20260930.log). compatibility는 기존 DeviceAgent WSS transport를 bridge하므로 실행 owner는 바뀌지 않았다. DeviceAgent raw status/detail caller, Binder·화면·장치 동작은 미검증이다.

2026-09-30 — IotAgent WSS 실행 이벤트 typed 정합

WSSManager가 legacy running enum callback 대신 typed SecurityRunningEvent를 사용한다. 매핑 상태와 원시 state 정수, eventCode, triggerType, result, message, correlationId를 모두 보존한다. SDK 수신부는 Bundle 값을 불변 transport snapshot에 담아 executor queue 전에 전달하여 mutable legacy enum singleton의 이후 이벤트 덮어쓰기를 막는다. 기존 enum listener는 외부 호환을 위해 유지했다. SDK focused 3/3와 release AAR build, IotAgent source contract 1/1와 Java compile PASS. 생성 후보 SHA 7d7b2676…; 체크인 AAR는 교체하지 않았다. Binder/AOSP/설치/기기는 미검증이다.

2026-09-30 — DeviceAgent 설정 gateway composition 정합

ConfigurationSettingsGateway를 DeviceAgent root에서 생성해 MainApi와 DeviceAgentCommandComposition을 거쳐 ConfigurationCommandHandler에 주입한다. Composition이 product adapter를 직접 생성하던 책임을 밖으로 옮겼다. 독립 검토에서 확인된 enable 문자열 호환 차이는 기존 Settings.setNightModeTimeMode와 같은 trim + 대소문자 무시 규칙으로 보존했다. 구현 전 JVM 회귀 테스트 RED, 수정 뒤 ConfigurationCommandHandlerTest 1/1·source wiring contract 3/3·compileDebugJavaWithJavac PASS (/tmp/skix-configuration-gateway-verify-20260930.log). 이는 설정 포트 한 경로의 composition 정합이며 DeviceAgent runtime port 전체 이관이나 실행 owner 변경으로 세지 않는다. Binder/AOSP/APK 설치·실기기 동작은 미검증이다.

2026-09-30 — DeviceAgent WSS 상태·설정 조회 경계 확인

IWssControl.getCurrentStatus()와 getWssConfigParameter()는 공개 AIDL이며 WssControlStub에서 각각 WssManager로 위임된다. WssManagerRemote와 WssManagerFront에도 legacy 조회 메서드가 남아 있다. 현재 checkout의 제품 앱 production source에서는 두 조회 메서드의 직접 호출을 찾지 못했다. getCurrentStatus()는 DeviceAgent 내부에서도 저전력 복귀 조건에 사용된다. 그러므로 외부 IPC와 내부 호출 호환을 보존하고, 앱 호출자 정합 완료로 계산하지 않는다. 외부 consumer 부재는 증명되지 않았으며, 추가 typed status API도 실제 caller가 확인되기 전에는 만들지 않는다.

2026-09-30 — DeviceAgent settings 경로 정합: 7개 팀 포트의 실제 caller 연결

팀 브랜치의 ConfigurationSettingsGateway, DisplaySettingsGateway, AudioSettingsGateway, SystemPreferenceSettingsGateway, CalibrationSettingsGateway, PrivacyVoiceSettingsGateway, UserPreferenceGateway 7개 계약을 DeviceAgent product root → MainApi → DeviceAgentCommandComposition → caller-backed handler에 주입했다. 모두 팀 브랜치에 이미 있던 계약이며 새 포트는 추가하지 않았다. Legacy adapter가 기존 Settings, Utils, SensorCalibrationManager, CleaningTransaction, WelcomeManager, SettingPreferences product owner로 연결한다. LCD 변경 후 200ms 지연 sync는 DelayedActionScheduler로 분리해 product root에서 Android main-thread scheduler를 주입한다. Calibration type 숫자 변환, setLoadCalibration Bundle IoT publish, privacy setSyncMode의 false 기본값, preference 설정별 기존 IoT sync 시점과 night-mode/calibration 조회 결과를 유지했다. Source contract 9/9 PASS; DeviceAgent compileDebugJavaWithJavac 및 선택한 ConfigurationCommandHandlerTest 1/1 PASS. 전용 JVM behavior test는 Configuration handler에 한정되며 새 preference handler 동작은 source contract와 컴파일로 확인했다. 나머지 runtime caller는 미정합이다. APK/Binder/AOSP/장치 동작은 미검증이다.

작업 지도 — 실제 코드 영역별

구역 실제 폴더·소유 경계 현재 상태 다음 완료 조건
1. Public SDK 계약 skix-framework/base/core/{java,aidl}; 앱에는 Manager·typed model/result 계약 제공 OTA result FQCN·DeviceControlService core path 정합 포함 candidate JVM 233/233·80 suites + release AAR PASS. Vision Manager의 실제 Binder 전달·외부 앱 호출은 미검증 남은 changed/team-only API를 실제 consumer 기준으로 분류; 모든 소비자 2.0 ABI 재빌드 전에는 checked-in AAR 교체 보류
2. Legacy IPC 호환 skix-framework/base/compatibility/{java,aidl} 현재 DeviceAgent Bundle/AIDL 표현을 SDK 경계에서 유지·번역 source/실행 owner와 계약 일치 확인. 단순 API 복사를 wire 변경으로 확장하지 않음
3. Framework common server base/services/core/java: control → execution → domain → entrypoint → runtime 구현 없는 domain/schedule, execution/workflow, integration/*, legacy package marker 7개 제거. generalized tree verifier fixture RED→GREEN 및 실제 tree PASS. Soong dependency compile checker PASS 남은 계층을 caller·build·lifecycle 근거로 검토; 필요한 모듈 경계와 제품 통합 증거 분리
4. Android host와 실제 실행 base/services/runtime/java, apps/SkixFrameworkService, apps/DeviceAgent DeviceAgent root → MainApi → Composition → handler로 팀 정의 settings gateway 7개 주입(Configuration/Display/Audio/SystemPreference/Calibration/PrivacyVoice/UserPreference). 실제 product owner는 adapters가 유지; LCD 200ms sync, calibration Bundle IoT publish, preference sync semantics 유지. Source contract 9/9, Configuration JVM 1/1, Java compile PASS. Vision 5개 route는 기존 VisionAIManager owner에 연결됨. Framework host/product config inclusion은 별도 미확인 남은 caller/포트를 실제 소비 경로 기준으로 확인; 제품 service 등록·권한·Binder와 실행 owner를 증거로 확인. Host 구조만으로 실행 통합 처리 금지
5. 소비 앱·단일 artifact SKMLauncher, SKMLauncher2, IotAgent, EventAssetAgent, PairingAgent 및 SDK AAR 체크인 2.0 AAR 6개 SHA 0cd1f635… 통일; 앱 assemble/flavor compile PASS. Launcher2 SafeCare caller와 IotAgent WSS config/event typed SDK 사용. 생성 후보 7d7b2676…로 IotAgent compile 확인 새 후보 AAR를 알려진 6개 artifact에 반영한 뒤 signed release·설치·Binder/기기 검증
6. 시스템·기기 인수 AOSP product, Binder, permission/SELinux, install, 로봇 기기 미검증 APK/instrumentation, Binder 실제 왕복, 명령 완료·중단 correlation, 관측값 및 장치 behavior 검증

실제 경로를 읽는 기준

Client / App / Agent
  → base/core 공개 Manager·모델·Task contract
  → Binder와 base/compatibility의 기존 IPC 변환
  → services/core 공통 제어·Task·domain 실행
  → services/runtime Android host / transport
  → 현재 제품에서는 apps/DeviceAgent가 Binder·MainApi·AppCmd를 통해 실제 명령 owner
  → MCU / HAL / 외부 system

services/core의 계층과 services/runtime host는 Blueprint 공통 framework 경로다. 현재 제품 앱이 이 Host를 통해 실행된다고 확인되지 않았으며, 실제 DeviceAgent 경로와 하나의 완료 경로로 합쳐 표시하지 않는다. 새 Manager/Service/Provider/Runtime/Adapter는 caller·소유 상태·dependency edge·별도 lifecycle이 있을 때만 추가한다. Planner는 이번 작업 범위가 아니다.

이번 slice의 코드·검증 근거

기존 전체 지도와 상세 설계 읽기

기존 전체 작업 지도 · 65개 하위 작업 WBS · 초기 폴더별 상세 설명

기존 WBS와 폴더별 그림은 장기 작업 범위·이전 구현 근거로 보존한다. 현재 수행 순서는 위의 브랜치 정합 작업표를 우선한다. 옛 그림의 README 예약 폴더는 현재 제거됐으며, 그 그림을 최신 물리 디렉터리 목록으로 사용하지 않는다.

전체 구조와 앞으로 지킬 Architecture Rule

대표 구조 문서: SKIX Framework Architecture — 용어·의존성·도메인 책임

SKIX 전체 책임 지도 — API·EntryPoint·공통 제어·Task·도메인·장치

책임 지도 크게 보기 · 편집용 Mermaid

이 그림은 목표 책임 구조와 현재 구현 위치를 함께 설명한다. Control은 직렬 중계 서비스가 아니라 공유 기반이다. 조회·관측은 Task를 거치지 않을 수 있고, 도메인 실행기가 공통 Task의 실행권·완료 계약을 사용한다. 모든 공개 API·Binder·제품 장치 연결이 완료됐다는 의미는 아니다.

실행 흐름과 구분한 코드 의존성 방향 및 현재 강제 범위

앞으로 모든 작업 묶음에 적용: 새 추상화의 필요성·상태 소유자·허용 의존성·실패/종료 테스트를 확인한다. Manager/Service/Runtime/Port/Adapter/Endpoint/Gateway/Ingress/Authority/Provider의 사용 조건은 대표 문서의 한 장 표를 따른다. 새 도메인에는 필요한 폴더와 타입만 추가한다.

실제 Framework 폴더 구조와 현재 작업 위치

정본 소스는 skix-framework/base/다. 앱 모듈은 이 소스를 빌드하며, 각 폴더는 아래 책임을 맡는다. 기존 공통 Host·Task·의존성 경계는 유지하고, 지금은 SDK·제품 연결을 팀원 작업과 정합하고 있다. 실제 AMR/Cleaning managed transport 연결은 남아 있다.

skix-framework/base/
├── Android.bp           Soong 소스 목록 · 제품 설치 모듈은 후속
├── README.md            소스 소유권·의존 방향·이관 규칙
├── core/                앱용 typed Manager / DTO / 공개 AIDL [부분 구현]
│   └── tests/           SDK 계약·호환 회귀
├── compatibility/       기존 SDK·IPC 번역 / 비공개 관측 gateway [부분 연결]
├── services/
│   ├── core/java/.../server/
│   │   ├── runtime/     같은 root 조립 / provider 준비 gate [이번 구현]
│   │   ├── entrypoint/  caller·admission·관측 수신 [내부 구현·부분 연결]
│   │   ├── control/     lifecycle·State·policy·자원·capability [기반 구현]
│   │   ├── execution/   Task queue·claim·파일 기록 [구현] / Workflow [골격]
│   │   └── domain/      AMR·Cleaning 등 실제 행동 [도메인별 이관 중]
│   ├── runtime/java/    Android host·Binder·관측 gateway [공통 Host 조립 연결]
│   └── tests/           JVM 회귀 / instrumentation 코드
└── tree.txt             탐색용 트리 스냅샷

구조를 나눈 이유: core는 앱 계약, services/core는 서버의 판단과 실행, services/runtime은 Android 연결을 맡는다. 공통 Task가 실행권을 관리하고 AMR·Cleaning이 자기 행동을 수행한다. 장치 adapter는 실제 제품 owner인 DeviceAgent와 Android 연결 코드에 두고, compatibility는 기존 호출 계약을 보존한다. 구현 없는 예약 폴더 4곳은 제거했다. 생성자뿐인 서비스 8개는 lifecycle 등록과 함께 정리할 후속 대상이다.

이전 폴더별 진행도 자료: 아래 링크는 간소화 전 상태를 포함한다. 현재 물리 구조는 위 트리를 따른다.

폴더 진행도 크게 보기 · 서버 내부 진행도 · 도메인별 진행도 · 3층 구조 설계·폴더별 상세 설명

전체 지도

SKIX 리팩터링 전체 작업 지도 — 2026-09-22

구조도 크게 열기 · 편집용 Mermaid

상단은 공통 기반, 가운데는 실행·저장, 하단은 나머지 도메인과 제품 인수다. WBS 번호는 작업 영역의 식별자이며 전체를 직렬로 구현한다는 뜻은 아니다. Task 기록 저장은 장치 규격 없이 진행할 수 있지만, 실행 복구에는 W05의 provider·자원 재관측이 필요하다. 각 WBS의 색은 작업 상태만 나타내며 전체 완료율을 계산하지 않는다.

정합 착수 전 구현 위치 — 보존 기록

기준 숫자와 구성 경계

항목 현재 판정 읽는 방법
전체 제품 리팩터링 완료율 미산정 전체 도메인 행동과 제품 인수 조건의 분모가 없음
기반 인수 조건 F01–F05, 5/12 JVM 내부 계약 5개만 완료. F06–F12는 제품·기기 인수와 별도
기본 Runtime base11 = Runtime + Manager 10개 createBaseRuntime()의 기본 조립. 24개 SDK ID의 기능 완료율이 아님
Android 기본 host host12 = base11 + Cleaning 등록 같은 root의 Cleaning host 등록까지 포함한 수. managed provider 연결 완료가 아님
Movement 구성 MovementServices13 AMR/Cleaning을 같은 root에 조립하는 transport-free 선택 구성. Android process/Binder 인수와 구분
최신 코드 검증 Framework 1019개 / 97 suites 공통 Host·Task 용량 거절 포함 전체 JVM·앱 APK 통과. Gradle 경계 검사 실행. 테스트 APK·host 정적 7개는 직전 공통 Host 묶음 근거이며 이번 무변경 재실행 없음
DeviceAgent 검증 기준 139개 / 19 suites 직전 Cleaning 팬 관측 묶음의 결과. 이번 묶음은 DeviceAgent 무변경으로 재실행하지 않음
기기·AOSP 미검증 Binder 왕복, 센서, 예약, 물리 정지, 서명·권한·부팅은 W11/W12에서 별도 인수

관측 반환 ≠ Task 성공 ≠ 물리 정지 ≠ Resource FREE. 수신 elapsedRealtime은 전달준비 시각으로 보존하며 장치 관측 시각으로 승격하지 않는다. fan RPM 0 이하나 callback 수신만으로 전체 Cleaning 중단·실행 귀속·자원 반환을 판정하지 않는다.

WBS — 빈 영역을 포함한 전체 작업 지도

상태는 내부 계약 완료, 진행, 일부 구현·골격, 보류, 미검증을 구분한다. 행의 완료 내용은 현재 소스에서 확인되는 범위, 남은 작업은 다음 인수에 필요한 구체 작업이다.

작업 영역 현재 구현 남은 작업
W01 · SDK·호환 / 진행 typed Manager·호환 경계 분리. SKMLauncher2 schedule callback·상태 listener 및 SafeCare 공유 예약 모델 정합; 이번 focused JVM 2/2·source contracts 5/5·Kotlin/Java compile PASS 수동 start/pause/resume/stop·auth/config 호출 계약 정합; 최신 2.0 ABI signed install·Binder 확인
W02 · Runtime·Health·State / 완료(JVM 내부 계약) 명시적 composition, 등록 원자성, 실패 cleanup, Health snapshot, State 세대·순서·TTL 계약 실제 process death/reconnect와 공개 API·제품 health 소비자 연결
W03 · IoT·Power·AQ·Cleaning 팬 관측 / 진행 DeviceAgent callback→mailbox/publisher→보호 gateway→State 경로. Power 원본값, AQ raw frame, Cleaning 원본 100-byte/RPM/firmware 보존 실프로세스 death/reconnect, 센서 단위·유효성, provider readiness와 관측 시각/순번 귀속 검증
W04 · AMR·Cleaning 명령 adapter / 진행 AMR canonical operations와 기존 handler, Cleaning operations/port와 legacy adapter 연결. Cleaning 실행 순서 보존 managed provider IPC, 단일 실행 소유권, 중단·완료 callback의 attempt/epoch/sequence 귀속
W05 · Provider / Resource / Capability / Policy / 진행 Resource 소유권·UNVERIFIED 회복, Capability readiness, Policy admission 내부 계약과 Movement 주입 경계 실제 provider 등록, 제품 정책 adapter, 관측 기반 readiness와 lease 회복 연결
W06 · Task 실행 / 진행 Task owner·queue·claim·permit·cancel, AMR/Cleaning 내부 실행 조립, terminal evidence 책임 분리 MR6 timeout/retry/cancel semantics 대조, provider 실행·물리 취소·완료 evidence 연결
W07 · Task 영속 기록·재시작 복구 / 파일 기록 연결, 실행 복구 남음 파일 journal의 원자 교체·버전·checksum·단일 writer, Task 변경 전 commit, 실패 시 차단, host의 private 파일 연결, 재시작 기록 조회·owner별 중복 차단 기록 보존·압축/용량 회복, 재인증·실행 입력 복구, 미확인 실행·자원의 재조정, 명시적 재개 정책. 현재 기록은 live queue/claim으로 복원하지 않음
W08 · Workflow·예약 / 일부 구현·골격 execution/workflow, execution/scheduler 골격과 주간 예약 계산기 추출. 주간 계산은 영속 scheduler가 아님 MR6 workflow/parallel/예약 저장/AlarmReceiver/재부팅 계약 이식 및 중복 억제
W09 · Vision / UI / MCU / Update / Pairing / EventAsset / System / Diagnostics / Security / 일부 구현·골격 Camera product access 정책은 DeviceAgent owner로 정합; Framework CameraSessionService는 별도 session lease lifecycle로 분리해 유지. 나머지 영역은 식별자·수명주기 골격과 일부 호환 경계 도메인별 typed 계약, 실제 provider/권한/저장/복구, 제품 호출 이관; Camera Broker/Binder/device 동작 검증
W10 · LLM·TTS / 보류 기존 managed TTS relay/compatibility 경계 보존 이번 묶음에서는 신규 typed LLM/TTS 확대를 하지 않음
W11 · 앱·SystemServer·AOSP 통합 / 미검증 base11/host12/MovementServices13의 정적 조립과 private gateway 권한 경계 manifest·signature/UID·SELinux·부팅 등록·Binder lifecycle·앱 API 통합
W12 · 실기기 인수 후속 / 미검증 없음. 코드/JVM/APK 근거만 보유 후속 통합 단계에서 설치·Binder·센서·AMR/Cleaning 물리 동작·예약·재부팅·heap/PSS/RSS/threads/handles 측정

영역별 완료 조건과 소스

아래 조건을 충족해야 각 영역을 제품 완료로 전환한다. 경로의 .../는 아래 서버 접두를 생략한 표기다.

W01 — 대표 앱 호출이 Manager 경계를 거쳐 단일 실행되고 호환 경로의 중복 실행 회귀가 없음. 선행: —.

소스: skix-framework/base/core/java, skix-framework/base/compatibility/java, apps/DeviceAgent

W02 — F01–F05 내부 회귀와 제품 host 인수 조건을 각각 통과. 선행: W01.

소스: skix-framework/base/services/core/java/com/sk/airbot/frameworkservice/server/runtime, control/lifecycle, control/health, control/state

W03 — 각 producer의 Binder·권한·센서 왕복과 현재 세대 State 반영을 기기에서 확인. 선행: W02.

소스: skix-framework/base/services/runtime/java/.../entrypoint/service, skix-framework/base/compatibility/aidl/.../observation, apps/DeviceAgent의 observation mailbox/publisher

W04 — 실제 provider 명령 1회가 실행되고 해당 요청의 terminal evidence·중단·자원 회수가 확인됨. 선행: W02, W03.

소스: skix-framework/base/services/core/java/.../domain/amr, .../domain/cleaning, .../execution, apps/DeviceAgent의 기존 manager/handler

W05 — provider가 READY일 때만 admission, 실행 전 재검증, 새 관측 전 FREE 금지, 실제 정책 결과 귀속. 선행: W03, W04.

소스: .../control/resource, .../control/capability, .../control/policy, .../domain/*, .../runtime/MovementServices

W06 — 단일 owner가 claim을 소비하고 실행·취소·terminal 결과가 같은 Task에 귀속됨. 선행: W04, W05.

소스: .../execution/task, .../execution/evidence, .../domain/amr, MR6 task_manager 원본

W07 — 파일 장애·프로세스 종료 이후에도 기록과 실행 권한을 혼동하지 않으며, 실제 provider 확인을 거친 작업만 재개. 선행: 기록: W06 / 실행 복구: W05.

소스: .../execution/task/{TaskManagerService,FileTaskHistoryJournal,TaskRecoveryRecord}.java, Android SkixFrameworkHostService.java

W08 — 예약이 durable하게 복구되고 소유권·중복·실행 귀속이 검증됨. 선행: W07.

소스: .../execution/workflow, .../execution/scheduler, WeeklyScheduleCalculator.java, MR6 task_manager

W09 — 도메인별 대표 동작이 Manager→provider→evidence로 단일 귀속되고 제품 인수됨. 선행: W01, W05, W06.

소스: .../domain/{vision,ui,mcu,update,pairing,eventasset,system,diagnostics,security}

W10 — 별도 승인된 LLM 범위·provider 계약·검증 계획이 정해질 때 재개. 선행: W01.

소스: .../domain/llm, .../integration/agent, 기존 TTS host/binder

W11 — clean image에서 부팅·등록·권한·death/reconnect·반복 lifecycle을 통과. 선행: W01–W09.

소스: apps/SkixFrameworkService, skix-framework/base/services/runtime, data/etc, services/systemserver

W12 — 서명 일치, 실제 명령·관측·중단·자원 회수와 반복 수명 증거를 저장. 선행: W07, W08, W11.

소스: 기기 인수 절차 문서와 제품 이미지/로그. 현재 실행하지 않음

근거와 검증 경계

정적 코드 근거의 서버 경로 접두는 skix-framework/base/services/core/java/com/sk/airbot/frameworkservice/server/다. 현황의 상세 변경과 검증 식별자는 저장소의 docs/refactor/skix-manager-service-status-2026-09-17.md 최신 절과 docs/refactor/skix-next-session.md에 있다. 공개 페이지는 로컬 문서 수정만으로 배포됐다고 표현하지 않는다.

이번 기준에서 인정하는 것

인정하지 않는 것

구현 경계와 상세 문서

공통 작업 관리는 execution/task/가 소유한다. 도메인 실행기인 domain/amr/execution/와 청소·이동 인계인 domain/cleaning/handoff/는 실행과 관측을 연결하며 Task 소유권을 별도로 만들지 않는다.

영역 현재 내부 계약과 제품 연결 경계
이동 실행 내부 통합 검증, AMR 상태 연결, 관측 수신 검증을 구분한다. CorrelatedMovementRuntime과 MovementExecutionResult, assessCompletion의 완료 인계 준비는 물리 완료나 제품 callback 연결을 뜻하지 않는다.
Task 접근 Task 소유자별 조회·취소와 AMR admission은 내부 계약이다. 공개 Binder의 제품 권한·호출 인수는 별도다.
Android host 비공개 Android 시작 서비스의 코드 등록과 private 저장 경로는 구현했다. 자동 부팅·SystemServer·실제 UID/서명 인수는 남았다.
Vision 내부 세션·종료·복구 구현과 기존 DeviceAgent static 경로 유지를 구분한다. 전체 제품 호출 이관은 남았다.
취소 관측 AMR 취소 관측의 서비스 수명 연결은 내부 구현 범위다. 실제 provider의 전체 중단 확인과 자원 반환으로 확대하지 않는다.

다른 로봇 제어 SDK와의 연동 경계

typed Manager와 legacy adapter는 호환성을 확보하기 위한 설계 경계다. 각 제품 SDK의 명령·관측·취소 계약을 연결하고 단일 실행을 검증해야 하며, 현재 A1 코드의 존재만으로 다른 제품의 호환이 완료되지는 않는다.

상세 문서 찾아보기

각 상세 문서의 날짜별 검증은 당시 근거이며, 현재 판정은 이 페이지의 WBS를 기준으로 읽는다.

상세 문서 관련 범위
SKIX Agent / Legacy 이관 설계·내부 계약·당시 검증 근거
이동 취소의 수명 — 실행 세션 종료 후 중단 확인은 누가 맡는가 설계·내부 계약·당시 검증 근거
SKIX AMR 상태 소유권 — 요청과 실제 관측을 분리하는 서비스 계약 설계·내부 계약·당시 검증 근거
Android 시작 서비스: 내부 프레임워크의 시작과 종료 연결 설계·내부 계약·당시 검증 근거
Cleaning 서비스: 팬 관측과 정지 확인의 소유권 설계·내부 계약·당시 검증 근거
Cleaning → AMR — 청소 소유 구동 자원의 안전한 인계 설계·내부 계약·당시 검증 근거
SKIX 프레임워크 구성요소 상세 지도 — 전체·도메인·구동 구조 설계·내부 계약·당시 검증 근거
SKIX Control Services 리팩터링 설계·내부 계약·당시 검증 근거
DeviceAgent 기능 이관 — AMR·Cleaning·Vision의 실제 연결과 폴더 설계·내부 계약·당시 검증 근거
SKIX 도메인별 Bundle 계약 상수화 설계·내부 계약·당시 검증 근거
SKIX 도메인 정책 사양 카탈로그 설계·내부 계약·당시 검증 근거
이동 작업 실행 — 청소 정지부터 도착·구동부 정지까지 설계·내부 계약·당시 검증 근거
SKIX 전체 Manager / ManagerService / Agent 맵 설계·내부 계약·당시 검증 근거
Task 소유권: 내가 요청한 작업의 조회와 취소 설계·내부 계약·당시 검증 근거
SKIX Product Domain Services 리팩터링 설계·내부 계약·당시 검증 근거
SKIX 제공자 연결과 TTS 전달 — 재연결·순서·작업 결과 설계·내부 계약·당시 검증 근거
SKIX 리팩터링 검증 원장 설계·내부 계약·당시 검증 근거
SKIX 로보틱스 프레임워크 전체 구조 — 처음 보는 안내서 설계·내부 계약·당시 검증 근거
SKIX Root Binder Admission Core 설계·내부 계약·당시 검증 근거
SKIX 서비스 라이프사이클과 도메인 상태 감사 설계·내부 계약·당시 검증 근거
SKIX 상태·자원·동시 접근: 도메인별 소유권과 구현 경계 설계·내부 계약·당시 검증 근거
SKIX Task / Execution 리팩터링 설계·내부 계약·당시 검증 근거
Vision 카메라 — 서비스 내부 세션과 기존 앱의 경계 설계·내부 계약·당시 검증 근거

이전 도메인별 상태 지도 — 2026-09-11는 당시 비교 자료로 보존한다. 최신 작업 순서와 구현 상태는 상단의 2026-09-22 WBS를 기준으로 한다.

변경 이력

날짜 변경
2026-09-29 SKMLauncher2 ScheduleRepository를 typed DeviceSchedule callback 소비자로 이관하고 global raw Bundle callback 제거. local WssConfigState gate 보존. Source contract test + app unit/Java compile PASS; 화면·Binder·실기기 미검증.
2026-09-30 IotAgent WSS running-state 설정 조회를 typed SecurityPatrolConfiguration 단일 snapshot으로 전환. source contract RED→GREEN, devDebug Java compile PASS; legacy WSS start/transport·기기 검증은 잔여.
2026-09-29 Team-only SecurityBasicAvailability model/query를 기존 DeviceAgent command에 연결. SDK 224/76, release AAR SHA 71ac53c3…, spec/quality PASS; 실패 sentinel 정책 사유 오인 방지. Binder/AOSP/device 및 consumer AAR 교체는 미검증.
2026-09-29 Vision SDK 5개 command와 typed status를 team contract 기준으로 추가하고 DeviceAgent MainApi에 Vision handler/runtime gateway 연결. report null guard와 Binder reconnect/disconnect state 오류도 수정. SDK 218/74, DeviceAgent 215/39, release AAR SHA 5c805b0c…, Make/Gradle parity 368 Java·35 AIDL PASS. Binder/AOSP/device 실행 및 consumer AAR 교체는 미검증.
2026-09-28 최신 teammate HEAD 164654fc 기준 Map public API/callback/DTO와 submitOnDeviceMap producer 정합. SDK 180/56 + release AAR, DeviceAgent Map 6 tests, callback host PASS; malformed list shape 차단. Spec/quality PASS. Generated AAR 8e8fa479…와 저장소 root AAR 3ab23a2c… 불일치로 소비자 AAR 교체·앱 재빌드, Binder/AOSP/device 인수는 미완료.
2026-09-27 사용자 요청으로 정합 작업 일시 정지. 마지막 SDK baseline은 176/55 + release AAR PASS. 다음 AirQuality callback slice는 host test-only RED (AirSensorCleaningUpdate, AqmIndoorUpdate, listener API 부재) 상태로 멈췄고 production implementation은 시작하지 않음. 현재 worktree 172 tracked modified + 4 deleted, 419 untracked; branches local/team-only 237/415.
2026-09-27 EventAssetAgent 수동 patrol의 빈 requestId를 유효 execution snapshot으로 보존. DeviceControlGateway를 DeviceConnectionService→legacy adapter 실제 command 경로에 연결하고 WSS correlated result observer를 동일 Binder 이벤트에서 전달. SDK 154/44, release AAR·boundary PASS; EventAssetAgent 290 unit tests, Android-test compile, debug APK assemble PASS; six AAR SHA 4820f8fe… 일치. instrumentation 실행·Binder/AOSP/device 미검증.
2026-09-27 WSS correlated callback과 typed Execution API를 기존 owner/wire에 연결. SDK 153 tests/44 suites, release AAR, boundary verifier, EventAssetAgent Java compile PASS; SDK+5 consumer AAR SHA fb2aaec3… 통일. SystemUI backend owner와 Binder live/device lifecycle은 미검증.
2026-09-27 Launcher1/2 AMR·Cleaning 위치 query 네 저장소 typed 정합. 정본 및 5개 소비 앱 AAR를 SHA 3935884c…로 통일. Launcher1/2·IotAgent oprDebug·EventAssetAgent·PairingAgent Java compile/APK assemble PASS; Cleaning host 14 scenarios PASS. ABI return descriptor 변경으로 기존 설치 APK 호환은 보장되지 않으며 새 AAR 재빌드 필요; signed release·Binder/AOSP/device 미검증.
2026-09-24 팀 SDK Settings 34개·Wi-Fi·Toast·Event 5개 결과형과 Event popup/screen-status listener ingress를 수용. SDK 123 tests/31 suites·release AAR 성공, host contract 7개 통과. 반환 descriptor 변경으로 소비 AAR 재빌드 필요; 앱·Binder·기기 미검증. 상세 지도·SVG 갱신
2026-09-24 canonical SkixMaintenanceManager / device().maintenance()와 team query/command surface 수용. Battery/station/calibration typed callback 및 generation-fenced resultCalibration ingress 연결; Manage façade deprecation 및 part-date query 단일화. contract 6/6, SDK 123/31 + release AAR, spec/quality PASS. Consumer AAR 미교체; calibration runtime-host, Binder/device 미검증.
2026-09-24 팀 onToast(code) callback을 DeviceToastUpdate → DeviceConnectionService → SkixToastManager.Listener로 연결. contract 4/4, SDK-AAR host routing·SDK 123/31·release AAR·명세/품질 리뷰 PASS. 체크인 consumer AAR 보존; Android Binder·UI·device 미검증. 지도·SVG 갱신
2026-09-24 팀 IotAgent의 device().state().addMainStateListener() 소비와 DeviceAgent setMainStateNotify(mainstate, substate) 이벤트를 대조해 MainStateUpdate typed callback ingress를 base/core에 수용. contract 2/2 (Maintenance 포함 focused 8/8), SDK 123/31 suites + release AAR, spec/quality PASS. raw Bundle callback 유지; 소비 앱/AAR·Binder·실기기 미검증.
2026-09-24 팀 IotAgent/UpdateAgent/Launcher2 사용을 확인해 device().state() snapshot/default read·main-state/app-state/enable API와 DeviceStateCommandResult/SettingValue를 수용. 기존 Manage API는 canonical manager로 위임하면서 SkixResult·boolean ABI, 팀 getMainStateSetting/updateMainState 호환 메서드와 wire payload를 보존. 새 contract 3/3, 관련 focused 11/11, SDK 123/31·release AAR, spec/quality PASS. 소비 AAR 교체·기기 검증은 남음.
2026-09-22 전체 지도와 W01–W12 WBS로 페이지를 재구성. Task 파일 기록·host 연결을 W07의 완료 부분으로 표시하고 W03/W04/W11/W12의 미검증 경계를 분리. 새 skix-refactoring-work-map-2026-09-22.svg/.mmd 연결
이전 날짜별 코드·검증 기록은 리팩터링 변경 이력과 관련 상세 문서에 보존

검증 근거와 산출물

기준 코드는 refactor/blueprint-foundation, HEAD 4d9b1a57 + 검증한 미커밋 변경이다. 비교 대상은 refactor/clean-architecture-prebuilt HEAD 164654fc이며 읽기 전용이다. 커밋 하나만으로 최신 변경 전체가 재현되지는 않는다. 상세 변경 식별·명령·로그는 저장소 docs/refactor/skix-next-session.md와 docs/refactor/skix-work-cost.md에 기록한다.

2026-09-30 status update: Launcher2 manual SafeCare config/start now routes through the typed SDK contract, and caller-free raw repository wrappers are removed. Test/compile evidence and device limits are recorded in the branch detail.

2026-09-27 status-only bounded publication (c58e3b43): only the main progress HTML, branch architecture HTML, WBS SVG and their two search-index entries changed against the last production stage. Build 788 pages PASS, lint 0 errors/16 existing freshness warnings, focused progress-doc tests 4 PASS, curated sensitive scan PASS. Canonical and deployment URLs match stage SHA: main 5c5d6d93…, detail 7805406d…, SVG 8aba5c2c…, search index bb751d81…. Main: https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/skix-layer-refactoring-progress-2026-09-04; detail: https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/skix-refactoring-branch-architecture-2026-09-22; SVG: https://sk-intellix-wiki.pages.dev/docs/sk-intellix/framework-sdk/skix-branch-convergence-progress-2026-09-23.svg.

2026-09-29 — Host 계층 경계 및 단위 테스트 게이트

Host :app:testDebugUnitTest가 verifier 단계에서 중단되던 원인은 이미 제거된 8개 빈 package-info 경계를 계속 요구하고, frozen legacy source manifest가 현재 소스 트리와 어긋난 것이었다. 활성 package boundary만 유지하고 legacy inventory 503개 항목을 현재 코드에서 재생성했다. 계층 의존 방향 검사와 실제 Soong 모듈은 그대로 둔다.

tools/verify-skix-layer-boundaries.sh, 해당 fixture 계약 테스트, Host :app:testDebugUnitTest가 통과했다. Host 결과는 99 suites / 1,054 tests / failures·errors·skips 0이다. 이는 JVM/Gradle 검증이며 AOSP product 포함, signed install, Binder IPC instrumentation, 실기기 동작을 확인한 결과는 아니다. 구조별 상태와 후속 W4 게이트는 Branch convergence WBS와 SVG에서 확인한다.

Connections

코드 식별자: AmrManagerService · IotManagerService · LlmManagerService. 개별 클래스의 존재와 제품 기능 이관 상태는 위 WBS에서 구분한다.

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date