개선 #943
완료됨개선 #942: [부모] Codex App식 thread/turns/list 기반 이전 히스토리 lazy-load 및 transcript virtualization 이식
[Protocol] app-server thread/turns/list older-history 계약 반영
100%
설명
상위 일감: #942
책임:
- 확인된 Codex app-server
thread/turns/listpagination 계약을 HiveAppII schema fixture, live gate, 설계 문서, adapter contract에 반영한다. -
thread/resume excludeTurns와initialTurnsPage를 초기 restore 비용 절감 경로로 사용할지 확정한다. - Codex App renderer 내부
load-older-conversation-history-pageaction을 app-server JSON-RPC method로 취급하지 않는다.
정정된 기술 사실:
-
codex-cli 0.142.5의codex app-server --stdio에 직접 JSON-RPC 접속해 확인했다. -
thread/turns/list는 실제 app-server method다. bogus thread에서는 unknown method가 아니라thread not loaded가 반환됐고, 실제 저장 thread 대상itemsView: "notLoaded",limit: 2호출도 성공했다. - official source tags
rust-v0.142.5와rust-v0.142.2모두thread/turns/list,resume.excludeTurns,resume.initialTurnsPage를 포함한다. -
thread/turns/listparams:threadId, optionalcursor,limit,sortDirection,itemsView. -
thread/turns/listresponse:data: Turn[],nextCursor,backwardsCursor. -
thread/turns/items/list는 shape만 있고 현재-32601 thread/turns/items/list is not supported yet로 실패한다. - Codex App renderer의
load-older-conversation-history-page는 app-server JSON-RPC method가 아니다. - app-server pagination은 network payload를 줄이지만, 구현상 매 요청마다 stored rollout history를 읽고 turn list를 재구성한 뒤 paginate한다. 반복 상단 스크롤 요청은 반드시 제어해야 한다.
계약 초안:
- initialize는
capabilities.experimentalApi: true를 유지한다. - initial restore 후보:
thread/resumewithexcludeTurns: true, optionalinitialTurnsPage: { limit, sortDirection: "desc", itemsView }. - older page load:
thread/turns/listwiththreadId,cursor,limit,sortDirection: "desc",itemsView. - older 방향 continuation은 response
nextCursor를 다음 요청의cursor로 사용한다. - no-more-history는
nextCursor === null로 판정한다. -
thread/turns/items/list는 현재 미지원이므로 구현 dependency에서 제외한다.
결정 항목:
-
itemsView: "summary"는 first user + final agent 중심이라 payload는 작지만 transcript fidelity가 낮다.full은 fidelity가 높지만 payload/parse 비용이 크다. Hive transcript 요구 기준으로 기본값과 fallback을 결정한다. -
thread/read includeTurns:truefallback을 legacy/schema drift 상황에 유지할지, feature-detect 실패 시 명시 오류로 볼지 결정한다. - 최소 버전은 현재
0.142.2에서도 API가 확인됐으므로 version 상향보다 schema/live feature gate 중심으로 판단한다.
인수 기준:
-
scripts/fixtures/hive-app-server-contract.json와electron/liveAppServerGate.behavior.test.ts가thread/turns/list,resume.excludeTurns,resume.initialTurnsPage를 검증한다. - live app-server probe 결과가 문서 또는 Redmine note에 남는다.
-
thread/turns/items/list미지원과 app-server replay/rebuild 비용이 설계 제약으로 명시된다. - 이 child 완료 전까지 #944 구현은 시작하지 않는다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- 설명이 변경되었습니다. (비교(diff))
Carl Friedrich Gauss이(가) 하루 전에 변경
- 다음 일감의 해결을 막고 있음:에 개선 #944: [Bridge] Electron main/preload thread/turns/list load 경로 추가이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- 제목을(를) [Protocol] app-server older-history page 계약 확정에서 [Protocol] app-server thread/turns/list older-history 계약 반영(으)로 변경되었습니다.
- 설명이 변경되었습니다. (비교(diff))
일감 정정: app-server pagination 선행 검토 누락을 바로잡아 thread/turns/list 지원 확인, thread/turns/items/list 미지원, app-server replay/rebuild 비용 제약을 반영했습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- 상태을(를) 신규에서 진행(으)로 변경되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
#943 분석 계획을 검토 후 승인하고 implementation-only 지시를 보냈습니다. 승인 범위: 기존 schema fixture/gate 확장, thread/turns/list 및 resume.excludeTurns/initialTurnsPage 계약 pin, thread/turns/items/list schema-present/runtime-unsupported 기록, itemsView=summary 권장 및 thread/read includeTurns:true fallback 문서화. 금지 범위: #944 bridge/preload/runtime/renderer 구현, commit/push/Redmine closeout.
Carl Friedrich Gauss이(가) 하루 전에 변경
#943 protocol 계약 구현/검증 완료.\n\n브랜치: origin/codex/redmine-943-protocol\n커밋: bba19ba4 (#943 app-server 이전 히스토리 페이지 계약 고정)\n\n반영 내용:\n- thread/resume excludeTurns 및 initialTurnsPage 필드 계약을 schema fixture/gate에 추가\n- thread/turns/list request/response page 계약 추가\n- thread/turns/items/list는 schema-present/runtime-unsupported로 고정\n- generated response invariant 검증 추가\n- transcript-safe live smoke에 turns page/resume/items-list unsupported 확인 추가\n- cross-verify 지적사항 반영: paging smoke 대상 thread를 non-ephemeral로 생성하고, initialTurnsPage/data/cursor/excludeTurns semantic assertion 추가\n\n검증:\n- npm ci\n- HIVE_CODEX_BINARY=/opt/homebrew/bin/codex npm run validate:codex-app-server-schema\n- npx vitest run electron/codexAppServerSchemaGate.behavior.test.ts electron/liveAppServerGate.behavior.test.ts\n- npm run typecheck:electron\n- node --check scripts/lib/codex-app-server-smoke.mjs\n- git diff --check\n\n주의: 아직 main 반영 전 브랜치 커밋이므로 Redmine 완료 처리는 main 반영/통합 정책 확인 후 진행.
Carl Friedrich Gauss이(가) 하루 전에 변경
- 완료일을(를) 2026/07/06(으)로 지정되었습니다.
- 상태을(를) 진행에서 완료(으)로 변경되었습니다.
- 진척도을(를) 0에서 100(으)로 변경되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
Commit reflected on main: https://ap-northeast-1.console.aws.amazon.com/codesuite/codecommit/repositories/hive-x-electron/commit/5dc8974ec9da035a221235c3026cb66b1d92696c?region=ap-northeast-1
Origin main SHA: 5dc8974ec9da035a221235c3026cb66b1d92696c
Tokyo main SHA: 5dc8974ec9da035a221235c3026cb66b1d92696c
검증: npm run ci:production 통과 (161 files / 2159 tests, renderer build, fixtures, package-config, signing check skipped because HIVE_RELEASE_BUILD is not enabled).