Framework 독립 실행 · 테스트 준비 현황
10/19 갱신: 아래는 10/13 당시 시험 이력이며 현재 기기 상태를 보장하지 않습니다. 10/14 기본 고정청정의 후속 결과와 10/19 로봇 callback 등록·Mapping 연결·이동청정 callback 직접 등록·실행 권한·Host 위치 조립·첫 이동 계약·발행 실패 처리·부모 예약 팬 공급체·자식 직접·타이머·지연 정지 경로·부모 소유 자식 보고·공기질 완료 판단·자식 표시 타이머·완료 판단/화면 공유 조립·실제 Host factory/Core 예상시간 연결 현황은 최신 전체 현황을 확인하십시오. 전체 DeviceAgent 독립 실행은 미완료이며 이번 갱신에서 기기에 접근하지 않았습니다.
10/13 당시 판정: 전용 정책 적용과 재부팅을 완료했고 DeviceAgent 없이 SDK 조회가 됩니다. 실제 기본 청정 시험에서는 실행 오류가 확인되어 행동 시험 준비 완료는 아닙니다.
2026-10-13 확인 · 기준 refactor/blueprint-foundation / 4d9b1a57 + 미커밋 변경.
10/19 최신 추가: 센서·요청 정보·부모 상태·Basic 자식·Host factory 검증에 이어 부모·자식 교체 경계도 영향 3파일 5건(22.52초), 명세→품질 검토, Host Java 컴파일(83.99초)·2개 소스 해시/API 확인을 완료했습니다. 생성 실패·완료·교체 뒤 이전 권한 폐기와 시험상 RPM 0 뒤 같은 예약 전환을 검증했습니다. 부모 입장은 수동 구성하고 시작·상태·HAL 일부는 대역입니다. 제품 전체 시작·물리 정지·Task 성공 증거가 아닙니다. 실제 센서 생산자→실행별 스냅샷·제품 시작 경로·첫 이동/Scan·최신 APK·서명·DeviceAgent 없는 실기 인수와 잔여 도메인 이관은 남았습니다. 정본:
C20261019-moving-parent-basic/evidence.json. 이번 문서 갱신에서 제품 시험·빌드를 재실행하거나 기기에 접근하지 않았습니다. 전체 완료율은 미산정입니다.
10/20 현재 위치 · 통합 시험 확대, 제품 시작 연결은 진행 중
현재는 이동청정의 주요 실행 로직과 Host 연결을 이관하고, 같은 원 Task에서 이동→Scan 측정→최악 공간 복귀→Basic 청정까지 이어지는 경로를 Host/JVM 시험으로 확인한 단계입니다. DeviceAgent 없이 제품 전체가 부팅·동작하는 단계는 아직 아닙니다.
| 구분 | 현재 확인한 범위 | 남은 조건 |
|---|---|---|
| 이동·Location·Scan·Basic 조립 | 같은 Task·공동 예약·부모 Location을 유지하는 Host 진입점과 실행 조립 검증 | 실제 제품 시작 경로에서 첫 native 이동 전에 조립 호출 |
| 최근 통합 시험 | 실제 Host Scan factory/Core·관측 monitor·부모 transaction·Basic 연결. CW 논리 도착→pause→native CCW, 보고 1회·최악 공간 복귀·Scan 정리 후 Basic 시작 확인 | 한 공간·합성 센서/시계·제어된 native/제품 대역·수동 회전 도착 입력 범위를 넘는 실기 인수 |
| 청정 요청 시작·완료 | 구현 중. 기존 Core·공유 요청 상태를 사용하는 Host binding 추가, 요청 교체·폐기 후 완료 차단 집중 시험 1건 통과 | 원 Task를 캡처하는 factory, 영향 시험·명세/품질 검토·최신 Host 컴파일 미완료 |
| 전체 제품 효과·시작 경로 | 소스 감사에서 transaction의 18개 위임 효과와 시작 override·전체 robot runtime 호출 연결의 공백 확인 | 실제 제품 효과 공급체와 시작 호출 연결. 18개는 해당 계약의 메서드 수이며 전체 잔여 기능 수가 아님 |
| native 관측 | 실행별 원점 식별 계약 미해결 | 수신 시점의 현재 Task를 임의 부착하지 않고 실제 실행·목표·기기 세대와 상관관계 확보 |
| 전체 DeviceAgent 독립 실행 | 미완료 | 오류·이력·초기화·WSS/streaming·소비자/데이터 소유권·MR6 task_manager 이관, 최신 APK·플랫폼 서명·DeviceAgent 없는 실기 인수 |
검증 근거: C20261020-moving-full-scan-completion/evidence.json은 저장된 영향 2건 통과(26.23초, 상속 중복 포함), 명세→품질 검토 통과와 당시 9개 소스 해시 확인을 기록합니다. 제품 수정·빌드·기기 접근 없이 통합 시험을 보강한 결과입니다. 이후 Host 청정 요청 구현이 진행 중이므로 당시 Host 해시·컴파일 결과를 현재 변경 전체의 검증으로 간주하지 않습니다. C20261020-moving-product-endpoints/evidence.json은 소스 감사 정확성 검토 통과이며 제품 공백 해결 완료가 아닙니다. C20261020-moving-robot-cleaning/green-first.log의 1건 통과(3.32초)는 집중 시험 중간 결과입니다.
얼마나 진행했나: 이동청정은 개별 로직 이관에서 같은 Task의 통합 경로 시험까지 진전했습니다. 다음 관문은 청정 요청 lifecycle과 실제 제품 효과를 원 Task에 연결하고 첫 native 이동 전 시작 경로에 통합하는 것입니다. 전체 기능별 완료 기준·규모가 확정되지 않아 전체 완료율은 미산정입니다. 시험 수나 18개 위임 메서드를 전체 진행률로 환산하지 않습니다.
이번 갱신은 문서만 수정·배포하며 기존 구현 변경을 보존합니다. 제품 시험·빌드는 재실행하지 않으며 기기에 접근하지 않습니다. ACK·논리 완료는 물리 도착·정지·Task 성공·자원 해제 증거가 아닙니다. 기준은 refactor/blueprint-foundation / 4d9b1a57 + 미커밋 변경이며 총 토큰·동등 작업 비교 기준은 미측정입니다.
이전 체크포인트 · native 이동과 부모 Scan 조립 검증 완료
현재 단계는 원 Task·부모 Location·Basic·Scan을 제품 시작 경로에 통합하는 중입니다. DeviceAgent 없이 전체 기능이 동작하는 제품 인수는 아직 완료되지 않았습니다.
| 구분 | 진행 상태 | 남은 작업 |
|---|---|---|
| 같은 부모 Location의 Scan·최악 공간 복귀 | 구현·명세/품질 검토·Host Java 컴파일 완료 | 실제 기기 이동·도착·정지 검증 |
| Scan 이동 상태 입력 | 검증 완료. 원 상태를 기존 Core에 전달하며 복귀 상태를 도착·완료로 승격하지 않음 | 부모 관측 공급체와 제품 시작 경로 연결 |
| Scan 효과 독립 주입 | 검증 완료. 10개 Scan 효과를 별도 계약으로 위임하고 기존 생성자·부모 params/clock/movement 유지 | 실제 부모 Scan 실행 공급체를 Host factory에 주입 |
| 부모 Scan 실행 공급체 | 검증 완료. 재진입으로 폐기된 완료 callback 전달을 차단하고 공간 identity·순서와 기존 완료→release 순서를 보존 | 실제 Host factory·부모 관측 주입 |
| 실제 Host Scan Session | 검증 완료. 기존 MovingScanBinding을 부모 Session 계약에 연결. 실제 Core 진행/일시정지 조회와 전체 정리를 위임 | 같은 Task의 factory·관측 연결 |
| Host Scan factory | 검증 완료. 생성 시 동작하지 않으며 초기화 때 같은 Location을 연결. 조립 실패 시 미공개 Scan 소유권 누수 수정·회귀 검증 | 같은 부모에 Scan 실행·관측 동시 주입 |
| 최악 공간 복귀 중 일시정지/재개 | 검증 완료. 기존 Core 정책·세대 검사와 제어 중 동기 도착 차단 유지. 기본 robotStatus 0의 논리 일시정지는 모터 명령을 내리지 않음 | 물리 정지·재개 실기 인수 |
| 부모 Scan 실행·관측 동시 조립 | 검증 완료. 같은 Location으로 Scan 상태·도착·진행 관측을 전달하며 부모 종료/조립 실패 시 로컬 Scan 정리. Android Host 컴파일·API/해시·계층 확인 완료 | 실제 제품 시작 경로 연결·실기 인수 |
| native 이동과 부모 Scan 조립 | 검증 완료. 원 Task·예약·Location을 유지하는 명시적 Host 진입점 추가. 첫 이동 전 조립하며 기존 진입점 보존 | 실행별 native 관측 식별, 전체 제품 효과 공급체·제품 시작 경로 연결 |
| 전체 DeviceAgent 독립 실행 | 미완료 | native 관측 상관관계, 오류·이력·초기화·WSS/streaming·소비자/데이터 소유권·MR6 task_manager 이관, 최신 APK·플랫폼 서명·실기 인수 |
검증 정본: C20261019-moving-scan-status-ingress/evidence.json은 영향 3건 통과(31.66초), 명세→품질 검토, Host Java exit 0(110.75초), 컴파일 API·2개 소스 해시 확인까지 완료했습니다. 이전 체크포인트의 품질/API/해시 대기는 해소됐습니다. C20261019-moving-scan-effect-supplier/evidence.json은 영향 5건 통과(44.36초), 명세→품질 검토, Host Java exit 0(113.87초), 컴파일 API·3개 소스 해시 확인을 기록합니다. 부모 공급체의 후속 완료 근거는 C20261019-moving-parent-scan-supplier/evidence.json: 영향 6건 통과(51.16초), 명세→품질 검토, Host Java exit 0(90.69초), API·2개 소스 해시·계층 확인입니다. 실제 Host Session은 C20261019-moving-host-scan-session/evidence.json: 17시나리오를 포함한 영향 4건 통과(36.82초), 명세→품질 검토, Host Java exit 0(104.88초), API·3개 소스 해시·계층 확인입니다. 후속 factory는 C20261019-moving-host-scan-factory/evidence.json에서 영향 3건 통과(27.28초)와 추가 집중 1건(11.14초, 중복), 명세→품질 검토, Host Java exit 0(107.15초), API·2개 소스 해시·계층 확인까지 완료했습니다. 복귀 제어는 C20261019-moving-scan-return-controls/evidence.json: 영향 4건 통과(41.06초), 명세→품질 검토, Host Java exit 0(111.91초), API·2개 소스 해시·계층 확인입니다. 부모 동시 조립의 최종 정본은 C20261019-moving-parent-scan-composition/evidence.json: 영향 6건 통과(51.04초), 명세→품질 검토, Host Java exit 0(104.83초), 컴파일 API·3개 소스 해시·계층 확인까지 완료했습니다. 후속 C20261019-moving-native-scan-composition/evidence.json은 native 이동과 같은 부모 Scan의 조립 진입점을 검증합니다. 영향 4건 통과(36.75초), 명세→품질 검토, Host Java exit 0(113.56초), 컴파일 API·생산 소스 해시·계층 확인을 기록합니다. 별도 배치 회귀 3건은 앞선 시험과 중복되므로 합산하지 않습니다. native peer와 Scan Session 대역을 포함한 검증이며 실제 Core·Host factory 전체 조합 및 제품 시작 호출자·전체 제품 효과 공급체는 남아 있습니다.
얼마나 진행했나: 이동청정 내부 실행과 Host 공급체, SDK/Launcher 일부 연결에 이어 원 Task의 native 이동·부모 Location·Scan 실행·관측을 함께 조립하는 코드까지 검증했습니다. 다음 관문은 이전 실행의 늦은 관측을 새 Task에 전달하지 않도록 실행 ID·기기 세대·관측 순번을 연결하고, 전체 제품 효과 공급체와 첫 이동 전 제품 시작 경로를 조립하는 것입니다. 이후 최신 APK·플랫폼 서명과 DeviceAgent 미설치/미실행 기기의 기존 기능 인수가 필요합니다. 전체 기능별 인수가 닫히지 않아 전체 완료율은 미산정입니다. 시험 수 합산을 완료율로 환산하지 않습니다.
기준은 refactor/blueprint-foundation / 4d9b1a57 + 보존된 미커밋 변경입니다. 이번 업데이트는 저장된 근거를 사용한 문서 작업이며 제품 시험·빌드·기기 접근을 재실행하지 않았습니다. Host/JVM·컴파일 증거는 APK·서명·실제 물리 동작 증거와 구분합니다. 주/검토 모델 총 토큰과 비교 기준도 미측정입니다. 아래 내용은 각 시점의 이전 체크포인트입니다.
10/19 최신 현황 · 같은 Location의 Scan·최악 공간 복귀 이관
현재는 이동청정의 원 Task·공동 예약을 유지하면서 부모 Location·Basic 자식·Scan을 연결하는 단계입니다. 같은 Location의 Scan 연결은 검증했으며, 실제 큐 시작 경로의 전체 조립과 DeviceAgent 없는 실기 인수는 남아 있습니다. 전체 완료율은 미산정입니다.
| 범위 | 확인한 진척 | 남은 조건 |
|---|---|---|
| 원 Task의 이동·부모 Location | 첫 목표·후속 이동·회전·제어·도착 관측과 기존 Basic 시작 연결 | 실제 시작 경로에서 첫 native 이동 전에 전체 실행 조립 |
| 취소 후 캡처 정지 | 원 소유권 유지 시 기존 Location 정지 순서와 native pause를 1회 실행. tilt 해제 후 pause | 실제 기기의 물리 정지·복구 인수 |
| 추가 검증 · 같은 부모 Location의 Scan | 원 Task 예약과 같은 Location을 configured Scan에 연결. continuation/resume, native 호출 전후 권한 검사, 취소 후 캡처 정지 연결 | 부모 Scan lifecycle·관측 공급체 및 production startup |
| 최신 보완 · 최악 공간 복귀 도착 | 측정 종료 뒤 정상 복귀 발행이 반환된 경우에만 원 구역·복귀 상태·방문 완료·비일시정지 조건으로 도착 1회 수락. 중복·동기 재진입 차단 | 컴파일 API·소스 해시 정리 완료. 실제 기기의 도착·정지 인수는 남음 |
| 추가 완료 · 같은 Location의 최악 공간 복귀 | 기존 측정 결과로 선택한 공간을 원 Task·부모 Location의 native 이동 경로로 전달. 복귀 발행 중 동기 도착·중복·취소·일시정지 재진입 차단 | 부모 전체 실행 조립과 실제 native/기기 수락 |
| 검토 중 · 이동 상태 입력 | 원 상태를 기존 Scan Core에 전달. CW 회전 완료는 기존 대기 단계로 이어지고 복귀 중 상태를 도착·완료로 승격하지 않음. 영향 3건 및 Host Java 통과, 명세 검토 통과 | 최종 품질 검토·컴파일 API/해시 증거 정리. 부모 관측 공급체는 아직 미연결 |
| 전체 독립 실행 | Host·SDK·Launcher 연결과 내부 실행 로직을 단계별 검증 | 실행별 native 관측 상관관계, 오류·이력·초기화·WSS/streaming·나머지 소비자/데이터 소유권, MR6 task_manager 감사·이관, 최신 APK·플랫폼 서명·DeviceAgent 없는 실기 인수 |
저장된 검증 근거: C20261019-moving-location-captured-stop/evidence.json은 최종 증거 정리를 완료했습니다. C20261019-moving-shared-scan/evidence.json은 영향 시험 4건 통과(31.44초), 후속 9시나리오 포함 집중 시험 1건 통과(9.47초, 앞선 시험과 중복), 명세→품질 검토 통과, Host Java 컴파일 exit 0(105.35초), 컴파일 API·소스 해시·계층·추가 공백 확인을 기록합니다. C20261019-moving-scan-parent-ingress는 RED 재현 뒤 최신 영향 시험 3건 통과(32.71초), 명세→품질 검토 통과, Host Java 컴파일 exit 0(112.74초), 최종 API·소스 해시 확인까지 완료했습니다. 서로 겹치는 시험 수를 합산해 전체 진척률로 계산하지 않습니다.
추가 검증 정본: C20261019-moving-scan-native-return/evidence.json은 12시나리오 포함 영향 3건 통과(28.60초), mapping/release/product-state 회귀 3건 통과(7.46초), 명세→품질 검토, Host Java 컴파일 exit 0(106.49초), API·소스 해시·계층·추가 공백 확인을 기록합니다. C20261019-moving-scan-status-ingress는 영향 3건 통과(31.66초), Host Java 컴파일 exit 0(110.75초), 명세 검토 통과까지 확인했으며 최종 품질 검토와 증거 정리는 진행 중입니다. 두 결과 모두 실제 하드웨어 완료 증거는 아닙니다.
다음 한 단계: 부모 Scan lifecycle·관측 공급체를 같은 원 Task·부모 Location에 연결한 뒤, 큐의 첫 native 이동 전에 전체 실행을 조립합니다. 현재 production Port에 이 시작 override가 없다는 점을 확인했으며, 먼저 이동한 뒤 runtime을 붙이는 방식은 사용하지 않습니다.
검증 한계: 위 결과는 저장된 Host/JVM 시험·컴파일 기록이며 Android/native 대역을 포함합니다. 이번 Wiki 갱신에서 제품 시험·빌드 재실행이나 기기 접근은 하지 않았습니다. ACK·논리 OFF·화면 완료는 물리 도착·정지, Task 성공 또는 자원 해제의 증거가 아닙니다. 기준은 refactor/blueprint-foundation / 4d9b1a57 + 보존된 미커밋 변경입니다. 전체 기능별 인수 기준이 닫히지 않아 전체 완료율은 미산정이며, 주 모델·검토 모델의 총 토큰과 동등 작업 기준도 미측정입니다.
이전 체크포인트 · 원 Task의 native 이동과 부모 Location 연결
진행 단계: Framework 내부 실행 로직과 Host·SDK·Launcher 연결을 넘어, 원래 이동청정 Task의 이동 제어를 부모 실행에 연결하고 있습니다. 제품 시작 경로 통합과 DeviceAgent 없는 실기 인수는 아직 남아 있습니다. 전체 완료율은 미산정입니다.
| 구분 | 이번에 확인한 진척 | 남은 작업 |
|---|---|---|
| 검토 완료 · 원 Task native 이동 공급체 | 첫 목표·후속 이동·회전·일시정지/재개·복귀를 기존 Task와 공동 예약에 결합. 취소 뒤 정리는 원 소유권에서 한 번만 허용 | 같은 부모 Location의 Scan 전체 조립 및 실제 시작 호출 경로 |
| 검토 완료 · Scan 취소 경계 | 마지막 하드웨어 조회 중 Task가 취소되어도 이후 효과를 차단. 취소 시점 120곳을 순회하는 시험 포함 | 같은 부모 Location의 이동·회전·보고 효과 공급 |
| 검토 완료 · 부모 Location과 native 연결 | 하나의 부모 Location에 원 Task의 목표·후속 이동·복귀·제어와 도착 관측 연결. 첫 이동 1회·기존 Basic 시작·native 직전 home-lock 재검증 확인 | 같은 Location의 Scan 연결·production startup |
| 검토 완료 · 원 소유권의 캡처 정지 | 기존 Location의 전체 정지 순서와 원 Task native pause 연결. Task 취소 뒤에도 원 Host·queue·motor·공동 예약·하드웨어 소유권이 유지될 때 1회만 허용. MOVING/DOCKING tilt 해제 후 pause 순서 확인 | Scan에서 이 정지 경로 소비, 실제 기기 정지·복구 인수 |
저장된 검증 기록: C20261019-moving-native-owner/evidence.json은 영향 시험 5건 통과(43.67초), 명세→품질 검토 통과, Host Java 컴파일 exit 0(152.36초)입니다. C20261019-moving-scan-final-fence/evidence.json은 영향 시험 3건 통과(46.42초), 명세→품질 검토 통과, Host Java 컴파일 exit 0(175.04초)입니다. C20261019-moving-parent-native-location/evidence.json은 최종 영향 시험 5건 통과(42.67초), 명세→품질 검토 통과, Host Java 컴파일 exit 0(119.23초)입니다. 후속 C20261019-moving-location-captured-stop은 영향 시험 7건 통과(44.86초), tilt 순서 보강 시험 1건 통과(12.63초, 앞선 시험과 중복), 명세→품질 검토 통과, Host Java 컴파일 exit 0(117.51초)를 기록했습니다. 후속 묶음은 검토·시험·컴파일 통과 상태이며 최종 증거 정본 정리는 남아 있습니다. 시험은 제어된 native/Android 대역을 포함하므로 물리 이동·도착·정지 증거가 아닙니다. 이번 문서 갱신에서 제품 시험이나 빌드를 재실행하지 않았습니다.
얼마나 남았나: 다음 통합 관문은 검증된 부모 Location·캡처 정지를 같은 Task의 Scan에 연결하고, 큐의 첫 native 이동 전에 전체 실행을 시작하는 것입니다. 그 뒤 실행별 관측·물리 완료·취소 복구, 오류·이력·초기화·WSS/streaming·나머지 소비자/데이터 소유권, MR6 task_manager 감사·이관, 최신 APK·플랫폼 서명·DeviceAgent 없는 실기 인수가 남습니다. 작업별 규모와 인수 기준이 달라 시험 수나 작업 구역 수를 퍼센트로 환산하지 않습니다. 기기 접근·설치·배포는 수행하지 않았습니다. 총 토큰과 동등 작업 기준은 미측정입니다.
이전 체크포인트 · Launcher 알림과 원 Task의 Scan lifecycle binding 완료
현재는 Framework 내부 로직을 Host·SDK·Launcher에 연결하고, 원래 이동청정 Task에 configured Scan의 lifecycle binding을 결합했습니다. 부모 Location 기반 Scan 전체 조립과 production startup은 남아 있습니다. 첫 이동부터 최종 정지까지 Framework만으로 실행하는 제품 통합과 DeviceAgent 없는 실기 인수는 아직 미완료입니다. 전체 완료율은 미산정입니다.
| 구분 | 검증된 구현 범위 | 아직 남은 조건 |
|---|---|---|
| 이동청정 부모·Basic·Location·transaction | 원래 Task와 이동/팬 공동 예약을 유지하는 Host 조립, 표시 공기질·센서 플래그·자식 팬·온도 보정 연결 | 큐가 첫 native 이동을 발행하기 전에 실제 제품 실행을 시작하는 호출 경로 |
| 도킹 저장 상태 | Framework 소유 저장소에 실제 도킹·이동 시작 관측을 연결하고 Host transaction에서 조회 | 기존 DA 저장값 이관과 LED·오류·설정 등 나머지 생산자. 저장 상태는 신선한 telemetry와 구분 |
| 추가 완료 · Launcher 청정 운전 알림 | 실제 transaction → Host 제품 모드 정책 → ProductSettings Binder/AIDL → SDK → Launcher App의 SettingsViewModel 연결. 진단 모드 차단, 연결 교체·종료 후 callback 방어 | -PskixFrameworkCleaningSyncMode=true 프로필에서만 기존 DA 동기화 callback 억제. 기본값은 false이므로 기본 빌드 전체의 독립 실행 완료는 아님 |
| 추가 완료 · 원 이동청정 Task의 Scan lifecycle binding | 기존 configured Scan의 lifecycle·측정·보고 binding을 원 Task·queue·Host·motor에 결합. 권한 실패·취소·교체 이후 재사용 차단, pause 세대와 정상 stop/release 경로 검증 | 실제 같은 부모 Location을 통한 이동·회전·보고 효과 공급과 production startup 연결. factory 생성 자체는 첫 이동을 발행하지 않음 |
| 전체 인수 | 기존 이관 기록은 아래 체크포인트에 보존 | native 실행별 도착·정지 상관관계, 취소 후 복구, 오류·이력·초기화·WSS/streaming·나머지 소비자와 데이터 소유권, 최신 APK·플랫폼 서명·실기 인수 |
저장된 검증 근거: 알림 연결은 C20261019-cleaning-sync-callback/evidence.json 기준 영향 시험 14건과 fixture·변형 복원 시험 7건(중복 1건)을 합쳐 고유 시험 20건, 명세→품질 검토 통과, 실제 Host/SDK 컴파일 exit 0(174.84초), Launcher 해당 프로필 컴파일 exit 0(157초, 입력 894개 불변)입니다. 이전 Wiki의 App/profile 실패 기록 이후 연결·검토·컴파일을 완료했습니다. 최초 잘못된 경로의 실패는 유효한 RED로 계산하지 않았으며 세부 이력은 해당 provenance.md에 보존했습니다.
Scan 결합은 C20261019-moving-scan-task-binding/evidence.json 기준 영향 시험 6건 통과(27.74초), 정상 stop/release 보강 시험 1건 통과(10.76초, 앞선 6건과 중복), 명세→품질 검토·계층 검사 통과, 실제 Host Java 컴파일 exit 0(107.67초)입니다. 실제 Host Scan/Core를 시험했지만 Android·Task admission 등은 대역입니다. 서로 다른 묶음의 시험 수를 합산해 진행률로 바꾸지 않습니다.
한계: boolean IPC에 종단 간 Task 식별자가 없으므로 Binder 승인 이후 이미 전송된 알림까지 Task 취소와 연계했다고 주장하지 않습니다. Scan의 close()는 로컬 timer·관측 정리이며 물리 정지나 부모 Task/공동 예약 해제를 뜻하지 않습니다. ACK·논리 OFF·화면 완료도 물리 도착·정지 또는 Task 성공의 증거가 아닙니다.
다음 한 단계: 원래 부모 Location과 Scan의 실제 이동·회전·보고 효과를 연결한 뒤, 큐의 첫 native 이동 전에 동일 Task·예약의 전체 실행을 시작합니다. 먼저 이동하고 나중에 runtime을 붙이는 방식은 중복 이동 위험 때문에 사용하지 않습니다.
기준은 refactor/blueprint-foundation / 4d9b1a57 + 보존된 미커밋 변경입니다. 위 시험·컴파일은 저장된 구현 검증 결과이며 이번 문서 갱신에서 재실행하지 않았습니다. 최신 Scan 변경의 Host·시험 소스 2개와 알림 묶음의 나머지 소스 10개를 정본 해시와 대조했습니다. Host는 Scan 후속 변경이 있으므로 알림 묶음의 이전 Host 해시와 동일하다고 주장하지 않습니다. 이번 작업은 문서 갱신이며 제품 코드·기기를 변경하지 않았습니다. 총 토큰 및 동등 작업 비교 기준은 미측정입니다.
이전 체크포인트 · 실제 제품 transaction 효과 연결
현재 단계는 Framework 내부 구현과 Host 조립을 거쳐 실제 제품 시작 경로를 연결하기 직전입니다. DeviceAgent 미설치·미실행 상태의 전체 제품 동작은 아직 검증하지 못했습니다. 전체 기능 목록별 인수 기준이 닫히지 않아 전체 완료율은 산정하지 않습니다.
| 구분 | 완료한 범위 | 남은 범위 |
|---|---|---|
| 이동청정 실행 조립 | 동일 Task·이동/팬 공동 예약 아래 부모·Basic 자식·Location·transaction 조립 | 실제 큐 첫 native 이동 전에 조립된 실행을 시작하는 production caller |
| 실제 제품 효과 연결 | transaction → Framework 표시 공기질·공기질 종류 초기화, 공유 로봇 센서 요청 플래그 해제, 단일 Host 팬 온도 보정, 기존 자식 팬 재사용 | 앱 main callback 실제 소비자 및 저장된 도킹 상태 생산자 연결 |
| 최신 검증 | 저장된 영향 시험 5파일 9건 통과(49.59초), 명세→품질 검토 통과, 계층 검사 통과, Host Java 컴파일 exit 0(102.08초), 컴파일 API·2개 소스 해시 확인 | APK·플랫폼 서명·설치·실기 동작 검증 |
| 나머지 독립 실행 | 기존 이관 기록은 아래 체크포인트에 보존 | Scan·native 실행 상관관계, 오류·이력·초기화·WSS/streaming·소비자·데이터 소유권 등 잔여 이관과 전체 인수 |
당시 factory는 생성만으로 팬·타이머·Task·예약을 추가하지 않습니다. 원래 params/state/clock과 Task 권한을 유지하며 소유자 교체·취소 뒤 효과를 차단합니다. 당시 main callback과 도킹 상태는 호출자가 공급하는 필수 입력이었습니다. 현재는 Host 자체 도킹 저장소를 공급하는 factory를 추가했고 main callback 소비자 연결은 남아 있습니다. 따라서 factory 완료를 제품 시작 연결 완료로 해석하지 않습니다.
다음 한 단계: main callback 소비자를 연결한 뒤, 첫 native 이동 전 startup을 통합합니다. 도킹 저장 상태를 신선한 telemetry 조회로 단순 대체하지 않습니다. 논리 정지·ACK는 물리 정지나 Task 성공의 증거가 아닙니다.
근거: refactor/blueprint-foundation / 4d9b1a57 + 보존된 미커밋 변경, C20261019-host-product-transaction/evidence.json. 최신 소스 해시를 정본과 대조했습니다. 위 시험·컴파일은 저장된 구현 검증 결과이며 이번 문서 작업에서 재실행하지 않았습니다. 기기 접근도 하지 않았습니다. 총 토큰·동등 작업 기준값은 미측정입니다.
10/19 최신 추가 · transaction 매너·야간 모드와 기존 자식 팬 연결 완료
얼마나 진행했나: 이동청정 부모·Basic 자식·Location·transaction의 Host 조립 이후, 같은 Task의 팬에 transaction 공기질을 전달하는 경로와 실제 MCU 온도 처리기의 제품 보정 입력까지 추가했습니다. 논리적 팬 운전 상태 → Host 수명의 온도 보정 소유자 → 실제 MCU 처리기 연결까지 검토·컴파일을 완료했습니다. transaction → 현재 Basic 자식의 기존 팬 연결도 검토·컴파일을 완료했습니다. 실행 전·일시정지 뒤의 자식이 팬을 새로 시작하지 못하도록 차단했습니다. 전체 제품 시작 경로와 DeviceAgent 없는 독립 실행 인수는 아직 미완료입니다. 전체 완료율은 미산정입니다.
| 구분 | 확인한 진척 | 남은 조건 |
|---|---|---|
| 이동청정 팬 공기질 전달 완료 | 원래 Task·공동 예약을 유지하는 팬 2인자 API에 transaction의 표시 공기질과 -1 값을 전달. 영향 시험 7건 통과(31.81초), Host Java exit 0(109.30초), 명세→품질 검토 통과 | 전체 transaction 제품 효과와 시작 caller 연결 |
| 실제 Basic 자식 팬 전달 완료 | 자식 시작·공기질 callback의 값이 같은 팬 API까지 전달되도록 연결. 영향 시험 6건 통과(40.44초), Host Java exit 0(110.26초), 명세→품질 검토 통과 | 제품 전체 시작·Scan 통합과 실제 장치 검증 |
| MCU 온도 처리기의 제품 입력 완료 | 실제 normal 공기질 처리기가 외부 제품 온도 보정 함수를 소비. 센서 재준비·관측 공백에도 외부 보정 이력 보존. 영향 시험 8건 통과(18.67초), Host Java exit 0(110.75초), 명세→품질 검토 통과 | Host 연결은 아래 후속 묶음에서 완료. 전체 제품 시작·실기 검증은 남음 |
| Host 논리 팬·온도 보정 연결 완료 | 관리 팬 시작·정지·최종 실패 → 단일 Host 보정 소유자 → 양쪽 MCU 처리 profile 연결. 저장된 영향 8파일 18건 통과(47.51초), 보완 후 명세→품질 검토 통과, Host Java exit 0(111.16초), 컴파일 API·6개 소스 해시 확인 | 관리 팬 경로의 완료이며 전체 transaction 효과·제품 시작·실기 검증은 남음 |
| transaction → 기존 자식 팬 연결 완료 | 별도 팬·예약 없이 현재 실행 중인 Basic 자식의 팬으로 매너·야간 모드 명령 전달. 부모 설정·상태 identity와 Task 권한 유지; 시작 전·일시정지 뒤·교체·취소 뒤 명령 차단 | 최종 영향 시험 7건 통과(51.96초), 명세→품질 재검토 통과, 계층 검사 통과, Host Java 컴파일 exit 0(106.51초), 실제 컴파일 API·4개 소스 해시 일치. 전체 시작 경로 및 실기 인수 증거는 아님 |
기존 제품의 온도 보정 입력은 측정 RPM과 별개인 논리적 팬 운전 상태입니다. 이번 연결에서도 일시적인 팬 전원 재시도와 최종 정지·실패를 구분합니다. 논리 OFF·정지 요청은 물리 정지·Task 성공·예약 해제의 증거가 아닙니다.
다음 단계: 나머지 실제 transaction 제품 효과 공급체 완성 → 큐의 첫 native 이동 전에 같은 부모·Location 실행 시작 → Scan·관측·취소/장애 통합 → 잔여 오류·이력·초기화·WSS/streaming·소비자 이관 → 최신 서명 APK와 DeviceAgent 미설치/미실행 실기 인수.
근거: 4d9b1a57 + 보존된 미커밋 변경; 완료 정본은 C20261019-moving-fan-quality, C20261019-child-fan-quality, C20261019-product-thermal-input, C20261019-host-thermal-owner의 evidence.json. 팬 연결 완료 정본은 C20261019-transaction-shared-child-fan/evidence.json입니다. 이전 5통과·2실패 기록은 보존하고 최종 7통과 기록으로 갱신했습니다. AUTO 팬의 개선 즉시 반영이라는 시험 기대를 실제 지연 표시 정책에 맞게 수정했으며, 품질 검토에서 발견한 시작 전 팬 제어 결함은 회귀 실패 재현 뒤 수정했습니다. 각 검증은 해당 변경 범위의 증거입니다. 시험 수는 중복되므로 합산 완료율로 바꾸지 않습니다. 이번 Wiki 작업에서는 제품 코드를 수정하거나 제품 시험·Android 빌드를 재실행하지 않았으며 기기에 접근하지 않았습니다. 총 토큰·동등 작업 기준값은 미측정입니다.
이전 체크포인트 · Location·청정 transaction의 Host 조립
현재 위치: 핵심 로직 이관과 실행 소유권 분리를 지나, Framework Host에서 이동청정 부모·Basic 자식·Location·청정 transaction을 같은 Task와 이동/팬 공동 예약으로 조립하는 단계입니다. DeviceAgent 없이 제품 전체가 동작하는 단계는 아직 아닙니다. 전체 완료율은 미산정입니다.
| 최근 완료 묶음 | 저장된 검증 결과 | 실제 제품 연결에서 남은 일 |
|---|---|---|
| Location 이동 효과 | 이동·정지·일시정지·재개·복귀·회전 억제 등 9개 효과를 실제 Location runtime에 위임. 영향 시험 8건 통과(49.42초), Host Java 컴파일 exit 0(107.19초) | native 관측과 전체 Scan 연결 |
| Location·부모·자식 Host 조립 | 같은 Task·예약·transaction으로 Location 복합 runtime과 Basic 자식, 준비된 CLEANING callback을 조립. 시작 전 관측 폐기·시작 후 세대 활성화·교체/취소 차단·실패 rollback 검증. 5건 통과(52.55초), Host Java exit 0(107.68초) | 큐가 첫 이동을 발행하기 전 실제 제품 시작 경로에서 호출해야 함 |
| 구체 청정 transaction | 기존 상태·시계 로직을 상속하고 10개 필수 제품 효과를 실행 권한 검사 전후로 연결. 5건 통과(14.69초), 기존 transaction 비교 144건 포함. Host Java exit 0(83.88초) | 필수 효과 인터페이스의 실제 제품 endpoint 조립은 미완료 |
| transaction Host 생성 | 원래 실행 중인 이동청정 Task·예약과 Host/hardware 수명에 묶은 factory 추가. 취소·교체·예약 상실 뒤 보관된 효과 차단. 7건 통과(40.20초), Host Java exit 0(106.86초) | 실제 제품 시작 caller 및 전체 효과 공급 연결 |
| 센서 요청 해제 endpoint | 기존 로봇 실행의 공유 센서 요청 플래그만 해제. 요청·이동 모드·앱 요청 상태 보존, 중복 해제·이전 소유자 접근 차단. 4건 통과(10.64초), Host Java exit 0(101.99초) | transaction 제품 효과에서 실제 호출하는 조립 필요 |
각 묶음은 계층 검사와 명세→품질 검토를 통과했습니다. 시험은 서로 겹치므로 합산하지 않습니다. 수치는 저장된 제품 검증 기록이며 이번 Wiki 갱신에서는 제품 시험·Android 빌드를 재실행하지 않았습니다. Host Java 컴파일은 APK·서명·실제 장치 동작 증거가 아닙니다.
다음 순서: 실제 팬·표시 공기질·동기화 callback·센서/공기질 초기화 등 transaction 제품 효과 조립 → 큐 startMovingCleaning에서 첫 이동 전 같은 실행을 시작 → Scan·관측·취소/장애 통합 → 오류·이력·초기화·WSS/streaming·소비자 등 잔여 이관 → 최신 서명 APK와 DeviceAgent 미설치/미실행 상태의 실기 인수. 현재 실제 Host의 시작 override와 production caller는 미연결입니다. 팬 정지 요청·화면 완료·ACK를 물리 정지·Task 성공·자원 해제로 간주하지 않습니다.
근거: refactor/blueprint-foundation / 4d9b1a57 + 미커밋 변경; 검증 정본은 C20261019-moving-location-effects, C20261019-moving-location-host, C20261019-product-transaction, C20261019-host-transaction, C20261019-host-sensor-reset의 evidence.json입니다. 기존 변경을 보존했으며 이번 문서 갱신에서 기기에 접근하지 않았습니다. 총 토큰과 동등 작업 기준값은 미측정이므로 절감률도 미산정입니다.
이전 체크포인트 · 요청 스냅샷·부모 시작 조립
진행 단계: 이동청정의 실제 팬·보고·공기질 공급체와 부모·자식 교체 경계에 이어, 요청 시점 공기질 보존 계약을 검증하고 부모 시작 조립을 구현해 영향 시험까지 통과했습니다. 제품 전체 시작 경로 연결과 DeviceAgent 없는 독립 실행 인수는 미완료이며 전체 완료율은 미산정입니다.
| 구분 | 최신 확인 결과 | 남은 조건 |
|---|---|---|
| 요청 시점 공기질 계약 | 실제 accessor·Core 수신·보고서 복사를 사용하는 3파일 6건 통과(16.27초), 명세→품질 검토 통과. 나중 센서값으로 요청 이미지를 치환하는 변형은 기대대로 실패 | 계약 회귀 검증이며 전체 센서 요청 생산자→부모 시작 연결은 남음 |
| 부모 시작 조립 | 실제 Host 정상 공기질 공급자→부모 보고서 복사→시작 시각 설정→센서 범위 선택→상태 발행→동일 자식 시작을 연결. 초기 미시작 상태의 준비·운전 경계 수정까지 영향 5파일 11건 통과(71.02초). 명세 보완→품질 검토, Host Android Java 컴파일 exit 0(105.54초), 컴파일 API·4개 소스 해시 확인 | 실제 제품 시작 caller, 첫 목표·첫 이동 발행·Scan 연결 및 실기 검증 미완료 |
| 전체 독립 실행 | 핵심 runtime·Host 공급체 연결과 실행 교체 방어를 순차 이관 중 | 첫 목표/첫 이동·Scan 조립, 잔여 도메인 이관, 최신 APK·서명·DeviceAgent 없는 실기 인수 필요 |
요청 당시의 구역 공기질과 요청 시점 보고서 대체값을 나중 관측으로 바꾸지 않습니다. null 자동 입력은 이전 cache를 보존하고, 명시적으로 빈 입력은 시작 시점 보고서를 사용합니다. 일반 시작 이미지의 시각은 부모 보고서에 복사한 뒤 설정하며, 센서 요청 이미지는 기존 시각을 유지합니다. 부모 시작 시험에서는 상태 발행·시각 공급 중 자식 교체와 실행 취소 뒤 이전 자식의 시작·팬 효과 차단도 확인했습니다.
초기 시작 순서 수정: 기존 자식 준비 → 부모 시작 상태 설정 → 자식 운전 순서를 유지했습니다. 아직 시작하지 않은 부모에서도 센서 등록·자식 생성은 효과 없이 준비할 수 있고, 시작 전 운전은 차단합니다. 시작 전 받은 관측의 뒤늦은 재사용, 운전 후 시작 상태 해제·소유권 상실 뒤 재활성화도 차단합니다. 초기 실패 재현 후 수정했으며, 부모 시작 상태를 미리 켜는 우회는 사용하지 않았습니다.
정본: C20261019-moving-request-snapshot-contract/evidence.json 및 C20261019-moving-parent-start/evidence.json. 부모 입장은 수동 구성이고 HAL·상태·시각·스냅샷 endpoint는 시험용 대역입니다. 실제 Host의 정상 관측 호출은 컴파일했지만 실제 MCU 관측 증거는 아닙니다. 최신 11건은 종전 warm 상태 7건을 대체하는 통합 결과이며 과거 시험 수와 합산하지 않습니다. 이번 Wiki 갱신에서는 제품 코드를 수정하거나 시험·Android 빌드를 재실행하지 않았으며 기기에 접근하지 않았습니다.
지금 어디까지 왔나
| 단계 | 상태 | 확인한 내용 |
|---|---|---|
| 테스트앱 → SDK → Framework 연결 | 일부 확인 | 실제 SDK 조회와 Task 목록 응답을 확인했습니다. |
| DeviceAgent 비활성 상태 | 확인 | 당시 시험 기기에서 DeviceAgent 프로세스가 없고 비활성 상태입니다. 이것만으로 이관 완료는 아닙니다. |
| Framework → MCU 권한 | 적용 확인 | Enforcing 상태에서 Framework가 전용 도메인으로 부팅했습니다. 공개 상태 API에서 최신 팬 관측(RPM 0·수신 순번)을 확인했습니다. 행동 성공은 별도입니다. |
| 전용 정책 구현·단위 빌드 | 완료 | QSSI와 vendor 정책을 빌드하고 Framework 전용 도메인·권한을 연결했습니다. |
| 기기 정책과 호환성 검사 | 산출물 검증 완료 | 기존 vendor 규칙을 보존했고, 추가 권한 검사 5개와 앱 도메인 설정 검사가 통과했습니다. |
| push 적용·재부팅 후 연결 | 완료 | 정책 12파일을 적용했고 정상 부팅·전용 도메인·DeviceAgent 프로세스 부재를 확인했습니다. 최신 Host APK도 적용했습니다. |
| 기본 청정 Task 시험 | 설정 준비 필요 | 최초 결과 불명 → 수정본에서는 청정 설정 미등록을 명확히 반환합니다. 시작·정지 행동 성공은 아직 아닙니다. |
지금 테스트할 수 있는 것과 없는 것
| 시험 | 현재 범위 | 성공으로 인정할 결과 |
|---|---|---|
| SDK 연결·조회 | 부분 가능 | 연결 상태와 실제 응답값 확인 |
| Task 목록·복구 상태 조회 | 가능 | 실행 중·완료·재확인 필요 상태 구분. 재시작 기록을 자동 재실행하지 않음 |
| MCU 팬 관측 | 실제 수신 확인 | 공개 STATE 응답: OBSERVED·fresh=true·RPM 0·수신 순번 280. 해당 조회 시점의 관측이며 특정 청정 Task 완료 근거는 아닙니다. |
| 기본 청정·Follow | 아직 시험 준비 완료 아님 | 실제 팬/이동 동작, 명시 중단 및 관측 결과 |
| 이동청정 전체 순서 | 구현·통합 남음 | 공간 도착 → 청정 → 보고 → 복귀가 같은 실행의 완료 근거로 이어져야 함 |
| WSS 전체·순찰 | 이관 남음 | 시작·순찰·중단을 Framework가 소유하고 실제 결과가 연결되어야 함 |
이번에 실제로 해결한 준비 작업
- 일반 앱 전체에 MCU 권한을 풀지 않고 Framework 전용 도메인에만 필요한 접근을 부여했습니다.
- 현재 소스의 vendor 정책을 통째로 덮어쓰면 기기에 존재하는 다른 서비스 규칙이 사라지는 차이를 발견했습니다. 기기 기존 정책에 Framework용 규칙 11개만 추가한 구성을 검증했습니다.
- Framework와 무관한 플랫폼 정책 변경은 기기용 산출물에서 분리했고, 기본 플랫폼 정책이 기기와 바이트 단위로 같음을 확인했습니다. 원본 소스는 보존했습니다.
- 기기 정책·컨텍스트 70개 파일을 백업하고, 적용 후보 12개 파일마다 원복 파일을 준비했습니다.
- 기존 혼합 정책의 보안 제약 위반 159건과 후보의 위반 블록이 같습니다. 신규 보고 위반이 없다는 뜻이며, 전체 정책 보안 적합성 통과라는 뜻은 아닙니다.
실제 시험 결과와 다음 순서
약풍 기본 청정을 공개 Task 경로로 한 번 요청하고 중단도 한 번 요청했습니다. 두 Task 모두 실패를 반환했습니다. 추가 시작·자동 재시도는 하지 않았습니다. 이후 청정 실행 기록 조회는 IDLE이며 실행에 연결된 팬 관측은 없었습니다. 별도 공개 STATE 조회에서는 새 팬 관측(RPM 0)이 확인됐습니다. 실행 기록과 현재 센서 상태는 서로 다른 조회입니다.
첫 번째 차단 요인은 Framework 저장소의 청정 시간·완료 기준 미설정입니다. 실행 준비 코드가 이 값을 필수로 요구합니다. 이를 통신 결과 불명과 구분해 시험앱에 “청정 시간·완료 기준 설정 필요”로 표시하는 소스 수정과 관련 테스트 7개, 독립 명세·품질 검토를 완료했습니다. 새 Host·테스트앱 APK도 적용했습니다. 실제 공개 Task 재시험에서 execution_dispatch_rejected_CLEANING_SETTINGS_UNCONFIGURED가 반환되어 원인 구분을 확인했습니다. 이 시험의 행동 성공 조건은 여전히 실패이며 청정 동작 완료를 의미하지 않습니다. 임의 기본값이나 자동 재전송으로 조건을 우회하지 않습니다.
아래 적용 순서의 1–4는 수행했고, 5–6의 실제 행동 검증·수정이 진행 중입니다.
- 기기의 도킹·이동 정지·청정 팬 정지를 확인합니다.
- 최종 파일 해시·서명·도메인 매핑·부팅 시 정책 선택을 대조합니다.
- 전체 이미지 설치 없이 검증한 APK·정책을 push로 적용합니다. 앱 데이터·UID를 보존합니다.
- 필요한 재부팅 후 Framework 전용 도메인, HAL 연결, DeviceAgent 비활성을 확인합니다.
- 테스트앱에서 조회 → 기본 행동 → 중단 → Task 상태 순서로 실제 응답과 관측을 확인합니다.
- 실패 항목은 원인과 미이관 범위를 표시하고, 전체 기능 성공으로 묶어 보고하지 않습니다.
전체 리팩터링에서 남은 구역
MCU 연결을 해결해도 전체 리팩터링 완료는 아닙니다. AMR 실행별 완료 판정, 이동청정 부모 흐름, WSS 전체 실행 주체, 일부 기기 정책·오류 전달, 재시작 Task 재조정, DeviceAgent 없는 부팅·재연결·장시간 시험이 남아 있습니다. OTA 저장 데이터 이관은 별도 보류 범위입니다.
최신 전체 진행률과 확정 완료일은 재산정하지 않았습니다. 빌드 성공·시험 개수로 전체 기능 완료율을 올리지 않습니다.