fix(dogfood): k8s multi-resource YAML chunk_id collision #158
Reference in New Issue
Block a user
Delete Branch "fix/dogfood-k8s-multi-resource-chunk-id"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
P10 종합 도그푸딩에서 발견한 HIGH 우선순위 버그 fix.
버그: 2+ document 를 가진 k8s manifest YAML (예: 한 파일에 Deployment + Service,
---구분) 이 ingest 실패 —UNIQUE constraint failed: chunks.chunk_id. document row 는 생성되나 chunk 0개 → 검색 불가.Root cause:
tier2_shared::push_chunks_with_oversize의 non-oversize 분기가split_key = None하드코딩.K8sManifestResourceV1Chunker가 resource 마다push_chunks_with_oversize호출 — 각 resource ≤ 200 line 이면build_chunk(... None). 같은 document 의 모든 resource 가doc_id+chunker_version+base_policy_hash+ 빈block_ids공유 +split_key = None→ 동일id_hash→ 동일chunk_id→ 2번째 chunk 에서 UNIQUE 위반. p10-3 의code_text_paragraph_v1가 정확히 같은 버그였고 commitdf3c5b8에서 fix 됐지만 —code_text_paragraph_v1는build_chunk_no_symbol직접 호출,push_chunks_with_oversize경로는 미수정.Fix:
push_chunks_with_oversize에base_split_key: Option<u32>파라미터 추가 — non-oversize 단일 chunk 케이스의 split key. k8s chunker 가Some(resource.line_start)전달 → 각 resource 가 distinct chunk_id. dockerfile / manifest 는None전달 (파일당 1 chunk — sibling collision 없음, chunk_id 불변, migration churn 없음).Regression coverage:
k8s_multi_doc_emits_one_chunk_per_resource가 chunk_id distinctness assertion 추가 — 이 검증이 없어서 p10-2 시점에 버그가 빠져나감.tier2_k8s_multi_resource_yaml_ingests_without_collision— 실 2-document YAML end-to-end ingest. implementer 가git stash로 fix 전 이 test 가 정확히 UNIQUE constraint error 로 fail 함을 확인.발견 경위
P10 종합 도그푸딩 (
/tmp/kebab-p10-dogfood/, 16 파일 — 9 AST lang + Tier 2/3). 9 AST lang + dockerfile + manifest + shell + 비-k8s YAML fallback 은 모두 정상. multi-resource k8s YAML 만 실패. p10-2 의 통합 테스트tier2_k8s_yaml_ingest_searchable가 single-Deployment fixture 만 써서 미발견.Test plan
cargo test -p kebab-chunk --test k8s_manifest_resource_v14/4 PASS (distinctness assertion 포함)cargo test -p kebab-chunk --test dockerfile_file_v1 --test manifest_file_v15/5 PASS (chunk_id 불변 확인)cargo test -p kebab-app --test code_ingest_smoke19/19 PASS (18 + 신규 multi-resource test)cargo clippy -p kebab-chunk -p kebab-app --all-targets -- -D warningscleanBranch
fix/dogfood-k8s-multi-resource-chunk-id(head:08d72a1). 2 commits — fix + version bump 0.16.0 → 0.16.1 (patch, bug fix only).🤖 Generated with Claude Code