[상류 3단계] O3 finished/archived retention policy 준비 #211

Open
opened 2026-10-29 12:41:52 +09:00 by dreampiler · 5 comments
Owner

원 요구·승인

소유자 최신 실행 승인 3단계. feature-pr-map 42·181행 O3: finished/archived metadata와 successful cleanup-snapshot retention 정책 API·설정 UI. 두 정책 모두 기본 꺼짐, 독립 opt-in slice. #4746/#4747은 더 좁은 직렬화/query 수정이라 이 slice가 아님.

원 source (93 source-map 2026-10-29)

a76bcbfe9 → a5bc01453, 현재 통합 production bb6256ac3b60(git store D:/260720_Ai_Workspace_Tools/kandev-upstream-native-20261015/.git). 통째 cherry-pick 0. 공개 방향 #4813 OPEN, 답 0(두 정책 대상이 맞는지, 무엇을 먼저 할지 질문) — 재게시 0, 새 공개 동작 몫만 방향 대기.

할 일

자기 Native 새 사본(base 현재 upstream main) → current main·열린 PR과 동등성 대조(있으면 근거로 끝) → 빠진 몫을 독립 opt-in slice로 최소 포팅. live retention은 실행하지 않는다. archive 증거·unknown/live row·admin·backup 준비 보존. 기존 test 파일 최소 회귀, 새 commit, normal hooks, 바뀐 delta만 gate rv-run → 첫 결과·검토된 head·영문 PR 초안을 8e/current 96e9d7f4-0840-479a-b7b6-3e18d45b4da4에 각 1회. 결과에 '#4813 방향 대기 몫'과 '독립 준비 몫'을 구분. 공개는 93→5d. push/PR/댓글 0. 공통 파일 경합은 8e에 경로 보고. 운영 변경 0.

## 원 요구·승인 소유자 최신 실행 승인 3단계. feature-pr-map 42·181행 O3: finished/archived metadata와 successful cleanup-snapshot retention 정책 API·설정 UI. 두 정책 모두 기본 꺼짐, 독립 opt-in slice. #4746/#4747은 더 좁은 직렬화/query 수정이라 이 slice가 아님. ## 원 source (93 source-map 2026-10-29) a76bcbfe9 → a5bc01453, 현재 통합 production bb6256ac3b60(git store D:/260720_Ai_Workspace_Tools/kandev-upstream-native-20261015/.git). 통째 cherry-pick 0. 공개 방향 #4813 OPEN, 답 0(두 정책 대상이 맞는지, 무엇을 먼저 할지 질문) — 재게시 0, 새 공개 동작 몫만 방향 대기. ## 할 일 자기 Native 새 사본(base 현재 upstream main) → current main·열린 PR과 동등성 대조(있으면 근거로 끝) → 빠진 몫을 독립 opt-in slice로 최소 포팅. live retention은 실행하지 않는다. archive 증거·unknown/live row·admin·backup 준비 보존. 기존 test 파일 최소 회귀, 새 commit, normal hooks, 바뀐 delta만 gate rv-run → 첫 결과·검토된 head·영문 PR 초안을 8e/current 96e9d7f4-0840-479a-b7b6-3e18d45b4da4에 각 1회. 결과에 '#4813 방향 대기 몫'과 '독립 준비 몫'을 구분. 공개는 93→5d. push/PR/댓글 0. 공통 파일 경합은 8e에 경로 보고. 운영 변경 0.
Author
Owner

8e receiving acceptance (local candidate, overall RV incomplete): O3 retention source 501903bd HEAD f75de5a5e397f55bc37049199686a9e9f7abb380 (base dc2d77359f10, 47 files, clean, no new test file - 8e git check). Accepted parts: (1) closed #4393 review 4236473370 Analyze busy defect fixed by reusing operationBusy, exact busy/preparation_required assertions in existing system_authz_test.go, both reviewers covered it; (2) v13 findings: results.tsx nanosecond Date fix, and #11 byte budget resolved as a doc mismatch (code already uses upstream toolretention.rowFitsBatch; O3 design/AC 004.4 and db-history AC 001.7 wording corrected, three boundary cases in existing batch_budget_test.go, small delta RV APPROVE); (3) safety reviews 4236473371/4236867409 executed in the existing test file with fake Options callbacks and the real-schema bootstrap pattern: approval gate, backup failure, cancellation, protected job plus archive evidence, message target live/unsupported preservation with an eligible positive control, saved state read by a second Service, and failed write rollback (byte-identical snapshot) all verified by execution; safety delta RV APPROVE. Exact unverified items: the restart recoverPreparation tick (new Service first reconcile waits for the scheduler's 1-minute idle timer; no public wake; alternatives are a production notify hook or a longer bounded test) and direct observation that the failed batch was attempted (no scan-failure callback; terminal failure needs 5 attempts x 1-minute backoff). Commit loop cause: golangci goconst on repeated 'cancelled' literal, fixed minimally; no --no-verify. Overall: 14 full rv-run rounds never converged (qwen APPROVE, codex REQUEST_CHANGES), remaining disputed items classified in rv-finding-classification.md; O3 stays an RV-incomplete local candidate. Publication remains blocked on #4813 maintainer direction (retention targets and order). Safety threads on closed #4393/#4396 are not resolved from this unpublished candidate. No push/PR/comment, no operational DB or retention run.

8e receiving acceptance (local candidate, overall RV incomplete): O3 retention source 501903bd HEAD f75de5a5e397f55bc37049199686a9e9f7abb380 (base dc2d77359f10, 47 files, clean, no new test file - 8e git check). Accepted parts: (1) closed #4393 review 4236473370 Analyze busy defect fixed by reusing operationBusy, exact busy/preparation_required assertions in existing system_authz_test.go, both reviewers covered it; (2) v13 findings: results.tsx nanosecond Date fix, and #11 byte budget resolved as a doc mismatch (code already uses upstream toolretention.rowFitsBatch; O3 design/AC 004.4 and db-history AC 001.7 wording corrected, three boundary cases in existing batch_budget_test.go, small delta RV APPROVE); (3) safety reviews 4236473371/4236867409 executed in the existing test file with fake Options callbacks and the real-schema bootstrap pattern: approval gate, backup failure, cancellation, protected job plus archive evidence, message target live/unsupported preservation with an eligible positive control, saved state read by a second Service, and failed write rollback (byte-identical snapshot) all verified by execution; safety delta RV APPROVE. Exact unverified items: the restart recoverPreparation tick (new Service first reconcile waits for the scheduler's 1-minute idle timer; no public wake; alternatives are a production notify hook or a longer bounded test) and direct observation that the failed batch was attempted (no scan-failure callback; terminal failure needs 5 attempts x 1-minute backoff). Commit loop cause: golangci goconst on repeated 'cancelled' literal, fixed minimally; no --no-verify. Overall: 14 full rv-run rounds never converged (qwen APPROVE, codex REQUEST_CHANGES), remaining disputed items classified in rv-finding-classification.md; O3 stays an RV-incomplete local candidate. Publication remains blocked on #4813 maintainer direction (retention targets and order). Safety threads on closed #4393/#4396 are not resolved from this unpublished candidate. No push/PR/comment, no operational DB or retention run.
Author
Owner

8e receiving acceptance (local candidate, overall RV incomplete; supersedes the unverified B/C items in artifact-note:20261029T130629169909Z): O3 HEAD 085ace784e87b089ec6761ac197c5a5581e37415 (base dc2d77359f10, clean, no untracked leftovers, only existing system_authz_test.go changed since f75de5a5e397 - 8e git check). Safety B restart: verified by execution - after a second Service.Start, the real first 1-minute idle tick (1m0.09s) ran recoverPreparation, settled the running preparation as failed (policy not approved) and preserved the operation ID, confirmed via Get; proven once with a one-shot build-tag temporary file that was then removed (not committed, not in CI). Safety C failed-batch attempt: verified by execution - sqlite3.SQLiteConn.RegisterFunc registered a driver function on the existing test connection, the existing BEFORE UPDATE trigger calls it then RAISE(ABORT); after the attempt signal the snapshot is byte-identical (rollback); the fixed sleep was removed; no production instrumentation, public API or mock framework; terminal 5x1-minute path not run. No production defect reproduced, so no production change. C delta RV APPROVE. go test ./internal/system/ pass. With this, the closed #4393/#4396 safety review items (approval, backup failure, cancellation, restart, protected/live/unknown data, saved scan, failed-batch rollback) are all verified by execution on the local candidate. Overall O3 stays an RV-incomplete local candidate (14 full rounds never converged; remaining disputed items in rv-finding-classification.md) and publication waits for #4813 direction. The old safety threads are not resolved from this unpublished candidate. No push/PR/comment, no operational DB or retention run.

8e receiving acceptance (local candidate, overall RV incomplete; supersedes the unverified B/C items in artifact-note:20261029T130629169909Z): O3 HEAD 085ace784e87b089ec6761ac197c5a5581e37415 (base dc2d77359f10, clean, no untracked leftovers, only existing system_authz_test.go changed since f75de5a5e397 - 8e git check). Safety B restart: verified by execution - after a second Service.Start, the real first 1-minute idle tick (1m0.09s) ran recoverPreparation, settled the running preparation as failed (policy not approved) and preserved the operation ID, confirmed via Get; proven once with a one-shot build-tag temporary file that was then removed (not committed, not in CI). Safety C failed-batch attempt: verified by execution - sqlite3.SQLiteConn.RegisterFunc registered a driver function on the existing test connection, the existing BEFORE UPDATE trigger calls it then RAISE(ABORT); after the attempt signal the snapshot is byte-identical (rollback); the fixed sleep was removed; no production instrumentation, public API or mock framework; terminal 5x1-minute path not run. No production defect reproduced, so no production change. C delta RV APPROVE. go test ./internal/system/ pass. With this, the closed #4393/#4396 safety review items (approval, backup failure, cancellation, restart, protected/live/unknown data, saved scan, failed-batch rollback) are all verified by execution on the local candidate. Overall O3 stays an RV-incomplete local candidate (14 full rounds never converged; remaining disputed items in rv-finding-classification.md) and publication waits for #4813 direction. The old safety threads are not resolved from this unpublished candidate. No push/PR/comment, no operational DB or retention run.
Author
Owner

8e 수락(O3 로컬 보완, 공개 전): 501903bd 결과 agent-delivery-46fcc1af7181a0f1f0a6f3a333cc7ad6. 사본 kandev-upstream-s3-o_qgqerehz HEAD b3a244d63eb clean, 085ace784e87 위 test-only commit 3개(ac9eeb5, 2265565, b3a244d), system_authz_test.go 1파일 +51/-22. 8e 재실행 go test ./internal/system -run TestArchivedRetention PASS. RV: run1 b6cc5c30809c·run2 1acfab15fea3 REQUEST_CHANGES → 고친 변경분 2265565..b3a244 최종 CALL-20261030-727f49093ccf APPROVE findings 0. 항목별: message identity/order·A 양성 대조군·unsupported/live 보존 실행 검증 완료, B restart/C rollback 기존 one-shot 검증, #1 artifact locale·#28 timeout 즉시 중단은 반박·미채택. O3 전체 후보 formal RV는 미완(owner stop-loop 유지). 공개 조건 #4813 maintainer 답 — 외부대기 유지, flow open.

8e 수락(O3 로컬 보완, 공개 전): 501903bd 결과 agent-delivery-46fcc1af7181a0f1f0a6f3a333cc7ad6. 사본 kandev-upstream-s3-o_qgqerehz HEAD b3a244d63eb clean, 085ace784e87 위 test-only commit 3개(ac9eeb5, 2265565, b3a244d), system_authz_test.go 1파일 +51/-22. 8e 재실행 go test ./internal/system -run TestArchivedRetention PASS. RV: run1 b6cc5c30809c·run2 1acfab15fea3 REQUEST_CHANGES → 고친 변경분 2265565..b3a244 최종 CALL-20261030-727f49093ccf APPROVE findings 0. 항목별: message identity/order·A 양성 대조군·unsupported/live 보존 실행 검증 완료, B restart/C rollback 기존 one-shot 검증, #1 artifact locale·#28 timeout 즉시 중단은 반박·미채택. O3 전체 후보 formal RV는 미완(owner stop-loop 유지). 공개 조건 #4813 maintainer 답 — 외부대기 유지, flow open.
Author
Owner

8e 수락(O3 내부 완성 범위 정정): 28 finding 대응표(rv-finding-classification.md '## 28 finding -> commit/evidence 대응') = 해소 26, 반박·미채택 2(#1 artifact locale, #28 timeout 즉시 중단), maintainer 몫 0, 실제 미해결 0. 8e가 대응 commit 13개(64989ef 53eb628 f5e9d9c a26a200 92a9fa7 d0e5442 d14f631 c214fab c13d5f8 9538927 1f220ba cf918a1 2d7d4b1)가 HEAD b3a244d63eb 조상임을 확인, 사본 clean. whole-candidate formal v1..v14는 수렴 실패로 owner stop-loop 중단(제품 미완 아님), 마지막 v13·v14 지적 2건은 #13·#11로 처분. 새 commit·RV 0. O3 내부 준비는 완료로 보고, 남은 것은 #4813 maintainer의 공개 대상·순서 결정뿐 — 외부대기, flow open(게시 뒤 close).

8e 수락(O3 내부 완성 범위 정정): 28 finding 대응표(rv-finding-classification.md '## 28 finding -> commit/evidence 대응') = 해소 26, 반박·미채택 2(#1 artifact locale, #28 timeout 즉시 중단), maintainer 몫 0, 실제 미해결 0. 8e가 대응 commit 13개(64989ef 53eb628 f5e9d9c a26a200 92a9fa7 d0e5442 d14f631 c214fab c13d5f8 9538927 1f220ba cf918a1 2d7d4b1)가 HEAD b3a244d63eb 조상임을 확인, 사본 clean. whole-candidate formal v1..v14는 수렴 실패로 owner stop-loop 중단(제품 미완 아님), 마지막 v13·v14 지적 2건은 #13·#11로 처분. 새 commit·RV 0. O3 내부 준비는 완료로 보고, 남은 것은 #4813 maintainer의 공개 대상·순서 결정뿐 — 외부대기, flow open(게시 뒤 close).
Author
Owner

8e currentprimarycd0c CM r2기존인수 재판정. 기존task501903bd/cleanhead b3a244d63eb9b5dd66b98784f8d68dd57cd103d5/최종parent receiving artifact-note:20261029T201604365570Z 재사용. 28finding해소26/반박2/실제미해결0 및원commit대조로내부준비완료수용은유효,최종deltaCALL-20261030-727f49093ccf completed/formalAPPROVE/findings0/coverage2of2를정본확인. wholev1-v14수렴실패/ownerstoploop는그대로보존하고APPROVE로재라벨·새전체RV/시험0. 정확선행#4813공개대상·순서maintainer답은공식현재OPEN/comments[]로미수신. 같은외부대기/flowcreatedr6유지,등록을착수·공개·완료로올리지않고새task/source/게시질문/운영retention실행/close-item0. 답도착후기존93→5d·정해진slice actualpublicreadback/result_ref/최종acceptance로같은flow를잇는다.

8e currentprimarycd0c CM r2기존인수 재판정. 기존task501903bd/cleanhead b3a244d63eb9b5dd66b98784f8d68dd57cd103d5/최종parent receiving artifact-note:20261029T201604365570Z 재사용. 28finding해소26/반박2/실제미해결0 및원commit대조로내부준비완료수용은유효,최종deltaCALL-20261030-727f49093ccf completed/formalAPPROVE/findings0/coverage2of2를정본확인. wholev1-v14수렴실패/ownerstoploop는그대로보존하고APPROVE로재라벨·새전체RV/시험0. 정확선행#4813공개대상·순서maintainer답은공식현재OPEN/comments[]로미수신. 같은외부대기/flowcreatedr6유지,등록을착수·공개·완료로올리지않고새task/source/게시질문/운영retention실행/close-item0. 답도착후기존93→5d·정해진slice actualpublicreadback/result_ref/최종acceptance로같은flow를잇는다.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dreampiler/kandev#211