개선 #942
완료됨[부모] Codex App식 thread/turns/list 기반 이전 히스토리 lazy-load 및 transcript virtualization 이식
100%
설명
배경:
- #689 롱 호라이즌 안정화는 #690-#694로 완료되었고, renderer bounded window/local reveal/scroll anchoring과 synthetic gate가 선행 반영됐다.
- 추가 검토 결과 Codex app-server는
thread/read includeTurns:true외에thread/turns/list기반 turn history pagination을 지원한다. - 이 부모 일감은 “API 지원 여부 조사”가 아니라, 확인된
thread/resume excludeTurns/initialTurnsPage와thread/turns/list계약을 HiveAppII에 이식하는 총괄로 정정한다.
정정된 기술 사실:
-
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한다. 반복 상단 스크롤 요청은 반드시 제어해야 한다.
목표:
- 초기 restore에서 full
thread.turnspayload를 피하거나 줄이고, 최신 turn page만 bootstrap한다. - 상단 스크롤 시
thread/turns/list의nextCursor로 older turn page를 가져와 prepend한다. - prepend 후 scroll anchor를 유지하고, measured-height turn virtualization으로 DOM/render 비용을 bounded하게 유지한다.
-
thread/turns/items/list에는 의존하지 않는다. older page의itemsView정책은 #943에서 fidelity/성능 기준으로 확정한다.
책임 경계:
- #943 Protocol, #944 Bridge, #945 Runtime, #946 Transcript, #947 Virtualizer, #948 Performance 순서로 진행한다.
- #689/#690-#694는 완료된 선행 작업으로 취급하고 재오픈하지 않는다.
- Protocol child는 API 존재 여부가 아니라 Hive fixture/live gate/adapter 계약 반영과
itemsView정책 확정을 책임진다.
완료 조건:
- child 1-6 완료.
- Hive contract fixture/live gate가
thread/turns/list,resume.excludeTurns,resume.initialTurnsPage를 검증한다. - 긴 transcript에서 initial restore payload/render 비용, older-load latency, rendered turn count, repeated top-scroll request 수가 report artifact로 남는다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- Subtask에 #943이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- Subtask에 #944이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- Subtask에 #945이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- Subtask에 #946이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- Subtask에 #947이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- Subtask에 #948이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
- 설명이 변경되었습니다. (비교(diff))
Carl Friedrich Gauss이(가) 하루 전에 변경
Codex App식 이전 대화 lazy-load 이식 계획을 child 일감으로 등록했습니다.
하위 일감:
- #943 [Protocol] app-server older-history page 계약 확정
- #944 [Bridge] Electron main/preload older-history load 경로 추가
- #945 [Runtime] 이전 히스토리 prepend merge와 보존 상태 모델
- #946 [Transcript] 상단 스크롤 load trigger와 anchor restore
- #947 [Virtualizer] Codex식 measured-height turn virtualization 적용
- #948 [Performance] lazy-load/virtualized transcript 검증 게이트
순서/차단 관계:
등록 원칙:
- Project Hive X / tracker 개선 / priority 보통 / status 신규 / assignee 정인 김(id=5)
- Protocol 우선: app-server older-history page API가 확인되지 않으면 후속 구현 child 진입 중단
- #689/#690-#694는 완료된 선행 작업으로 취급하고 재오픈하지 않음
Carl Friedrich Gauss이(가) 하루 전에 변경
- 제목을(를) [부모] Codex App식 대화 이전 히스토리 lazy-load 및 transcript virtualization 이식에서 [부모] Codex App식 thread/turns/list 기반 이전 히스토리 lazy-load 및 transcript virtualization 이식(으)로 변경되었습니다.
- 설명이 변경되었습니다. (비교(diff))
일감 정정: app-server pagination 선행 검토 누락을 바로잡아 thread/turns/list 지원 확인, thread/turns/items/list 미지원, app-server replay/rebuild 비용 제약을 반영했습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
Carl Friedrich Gauss이(가) 하루 전에 변경
총괄 조율 문서를 Wave 1 #943 handoff package까지 보강했습니다: docs/task-coordination/redmine-942/README.md. 포함 내용: 현재 Hive contract/gate 누락 지점, likely files, itemsView/fallback 결정 항목, 검증 명령, 분석-only worker prompt draft. multi-thread-coordination gate에 따라 visible worker thread 생성은 사용자 확인 전까지 보류합니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
사용자 승인에 따라 Wave 1 #943 분석 worker를 생성했습니다. Thread: 019f364e-8962-7492-bfac-63b9cadaa3d6, worktree: /Users/jeonginkim/.codex/worktrees/4083/HiveAppII. 제목 설정 및 pin 완료, Redmine #943은 진행으로 전환했습니다. worker에는 analysis-only 지시와 coordinator-local README 부재 보강 handoff를 전달했습니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
#943 Wave 1 protocol 계약 작업 검증 완료 및 브랜치 push.\n\n브랜치/커밋:\n- origin/codex/redmine-943-protocol\n- bba19ba4 #943 app-server 이전 히스토리 페이지 계약 고정\n\n핵심 결과:\n- thread/resume excludeTurns + initialTurnsPage 계약 고정\n- thread/turns/list request/page response 계약 고정\n- thread/turns/items/list는 schema-present/runtime-unsupported로 고정\n- default itemsView는 summary, fallback은 thread/read includeTurns:true로 문서화\n- cross-verify 후 live smoke를 보강: ephemeral thread 대신 materialized non-ephemeral thread에서 paging 확인, page shape/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다음 단계: #944 Bridge 작업을 #943 브랜치/커밋 위에서 시작 가능. #943 Redmine 완료 처리는 main 반영 정책 확인 후 진행.
Carl Friedrich Gauss이(가) 하루 전에 변경
#944 Wave 2 Bridge 구현/검증 완료 및 브랜치 push.\n\n브랜치/커밋:\n- origin/codex/redmine-944-bridge\n- 53c30bce #944 이전 히스토리 페이지 브리지 추가\n\n결과:\n- #943 계약의 thread/turns/list를 Electron supervisor/main/preload bridge로 연결\n- renderer가 raw app-server JSON-RPC payload 없이 projected turns/items/page metadata만 받도록 경계 설정\n- unsupported/unavailable method에 한정한 thread/read fallback과 malformed page error 구분 보강\n- #945 Runtime child가 raw next/backwards cursor를 재해석하지 않도록 olderCursor DTO 추가\n\n검증:\n- focused Vitest 4 files / 97 tests 통과\n- typecheck:electron, typecheck:renderer, lint, git diff --check 통과\n\n다음 단계: #945 Runtime prepend merge/state 모델은 origin/codex/redmine-944-bridge / 53c30bce 위에서 시작 가능. #943/#944 완료 처리는 main 반영 정책 확인 후 진행.
Carl Friedrich Gauss이(가) 하루 전에 변경
#945 Runtime 분석 worker 시작.\n\nThread: 019f3686-96f9-75a1-97d6-426b09d8c68c\nWorktree: /Users/jeonginkim/.codex/worktrees/14b0/HiveAppII\nBase: origin/codex/redmine-944-bridge / 53c30bce\n\n범위: #944 bridge DTO를 소비하는 runtime older-history state/prepend merge 모델 분석. 구현 금지 상태입니다.\n\n초기 관찰: current reducer의 limitRuntimeThread/limitThreadItems 500-item trim 때문에 naive prepend는 lazy-loaded older items를 즉시 잃을 수 있어 #945 핵심 설계 쟁점으로 확인 중입니다.
Carl Friedrich Gauss이(가) 하루 전에 변경
#945 분석 계획 검토 완료.\n\n핵심 판단:\n- 현재 runtime-store의 500-item trim 때문에 naive prepend는 older-history를 보존하지 못함\n- thread/restored는 full fallback replacement에는 적합하지만 incremental older page에는 별도 protected history policy 필요\n- #945 구현 범위는 RuntimeThreadState/RuntimeEvent/reducer merge와 limit preservation까지로 제한\n- App bridge caller/top-scroll trigger/anchor/error UI는 #946으로 유지\n\n다음 단계: #945 worker에 implementation-only 지시를 보낼 예정.
Carl Friedrich Gauss이(가) 하루 전에 변경
#945 Runtime child verified branch pushed.\n\nBranch: origin/codex/redmine-945-runtime\nCommit: a1869073 #945 이전 히스토리 런타임 상태 모델 추가\n\n확인된 handoff:\n- #944 older-history bridge DTO를 runtime event/state가 수용 가능\n- turns-list desc page -> transcript order prepend merge\n- requestId/projectId/cursor stale guard\n- item/turn dedupe와 current/live 우선 정책\n- thread-read-fallback terminal replacement semantics\n- loaded history id 보호로 500 live-tail trim과 충돌 방지\n\n검증: runtime-store focused Vitest 136 passed, typecheck:renderer, lint, git diff --check.\n\n다음 순서: #946 Transcript top-scroll async older page trigger 및 anchor restore 분석/구현으로 진행.
Carl Friedrich Gauss이(가) 하루 전에 변경
#946 Transcript child started.\n\nThread: 019f369e-1401-7051-bb82-d910b0a95966\nWorktree: /Users/jeonginkim/.codex/worktrees/ae6d/HiveAppII\nBase: origin/codex/redmine-945-runtime / commit a1869073\n\n분석 범위: #689 local reveal/windowing을 #944 bridge + #945 runtime history events와 연결하는 top-scroll async older page trigger, request guard, anchor restore, no-more/error/thread-switch 처리.\n\n구현/커밋/푸시/Redmine closeout은 계획 검토 후 별도 단계로 진행.
Carl Friedrich Gauss이(가) 하루 전에 변경
#946 Transcript 상단 스크롤 older-load 연결 브랜치 검증 완료.\n\n브랜치: codex/redmine-946-transcript\n커밋: b2dad90f1bea739dfc8922cf7696b18e24b131d6\n상태: 원격 push 완료, main 미반영으로 child 완료 처리는 보류.\n\n핵심 결과:\n- local reveal 우선 -> server older-history 요청 -> runtime prepend -> anchor restore 흐름 연결\n- 복원 programmatic scroll의 중복 older-load 재진입 방지까지 반영\n- focused test/typecheck/lint/diff-check 통과\n\n다음 순서: #947 Virtualizer 작업은 #946 브랜치 기준으로 진행 가능.
Carl Friedrich Gauss이(가) 하루 전에 변경
#947 Virtualizer 분석 worker 시작.\n\nCodex thread: 019f36bc-5f18-7910-bacd-3fa40b43589b\nWorktree: /Users/jeonginkim/.codex/worktrees/6579/HiveAppII\nBase branch: codex/redmine-946-transcript\nBase commit: b2dad90f1bea739dfc8922cf7696b18e24b131d6\n\n현재 단계: analysis-only. 구현/커밋/푸시/Redmine 완료 처리는 오케스트레이터 승인 전 금지.
Carl Friedrich Gauss이(가) 하루 전에 변경
#947 Virtualizer verified branch pushed.
- child: #947 Codex식 measured-height turn virtualization 적용
- branch: origin/codex/redmine-947-virtualizer
- commit: 09a53052 (#947 대화 transcript turn virtualization 적용)
- verification: related renderer suites, typecheck, lint, diff check, and full npm run test (151 files / 2080 tests) passed.
- cross-verify: no blockers; virtualized prepend anchor regression added after review.
Next allowed child: #948 Performance gate from #947 branch/commit. Parent closeout and child completion remain pending main integration policy.
Carl Friedrich Gauss이(가) 하루 전에 변경
#948 Performance gate analysis worker started.
Thread: 019f36db-87ad-7300-a8ff-6fbd0362501c
Worktree: /Users/jeonginkim/.codex/worktrees/4955/HiveAppII
Base: origin/codex/redmine-947-virtualizer / commit 09a53052e2fb87098f13b29a064683815921353d
Current phase: analysis-only for performance/report gate scope. Implementation will wait for coordinator plan review.
Carl Friedrich Gauss이(가) 하루 전에 변경
#948 Performance gate verified branch pushed.
- child: #948 thread/turns/list lazy-load/virtualized transcript 검증 게이트
- branch: origin/codex/redmine-948-performance-gate
- commit: e20439e8 (#948 lazy-load 성능 게이트 확장)
- verification: performance gate report/hard mode, focused renderer tests, lint, typecheck, full npm run test (151 files / 2080 tests), diff check passed.
- cross-verify: revise items fixed and accepted.
#943-#948 child implementation branches are now all verified/pushed. Parent closeout and child completion remain pending main integration policy.
Carl Friedrich Gauss이(가) 하루 전에 변경
- 상태을(를) 진행에서 완료(으)로 변경되었습니다.
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).