Skip to content

fix(autoFIPC): fail fast on unresolved common-item mappings - #375

Draft
seonghobae wants to merge 1 commit into
masterfrom
fleet/common-item-membership-20260914
Draft

seonghobae wants to merge 1 commit into
masterfrom
fleet/common-item-membership-20260914

Conversation

@seonghobae

Copy link
Copy Markdown
Collaborator

Finding

Protected master@f87c2324f1686135e57d8730c1b0b9420874f300newformCommonItemNames / oldformCommonItemNames의 타입과 길이만 확인하고, 실제 form/model item namespace에 존재하는지와 mapping의 유일성을 확인하지 않습니다. 뒤쪽 IPD/linking 경로는 match() 결과가 NA인 pair를 일부 필터링하거나 그대로 다시 사용하므로, 잘못 지정한 anchor가 초기 계약 경계에서 명확하게 거부되지 않고 추정·linking 단계까지 흘러갈 수 있습니다.

이 PR은 먼저 public autoFIPC() 경계에서 현실 RED만 추가합니다.

  • protected base: master@f87c2324f1686135e57d8730c1b0b9420874f300
  • test-only RED head: bceb4e98f6ae98ea5e9e3dec201f4e41acf134e2
  • lifecycle: Draft / production repair pending

RED contract

tests/testthat/test-common-item-mapping.R는 calibration을 시작하지 않도록 confirmCommonItems = FALSE를 사용하면서도 validation ordering을 직접 검증합니다.

  • new-form에 없는 common-item 이름은 newformCommonItemNames ... not present로 fail fast
  • old-form에 없는 common-item 이름은 oldformCommonItemNames ... not present로 fail fast
  • 각 form 내부에서 중복 anchor 이름을 거부
  • NA와 empty name을 거부
  • 기존에 문서상 허용되는 factor common-item names는 계속 허용되어 confirmation 경계까지 진행

Protected implementation은 이 membership/uniqueness validation이 없어 첫 네 계약을 만족하지 못하므로 이 commit은 semantic RED입니다. Successor production fix가 아직 없고 hosted failure도 아직 확인하지 않았으므로 hosted RED라고 주장하지 않습니다.

Minimal GREEN acceptance

Production repair는 autoFIPC()의 초기 input boundary에서 수행합니다.

  1. data.frame/matrix는 colnames()를, valid SingleGroupClass는 실제 fitted model data item names를 authoritative namespace로 사용합니다.
  2. factor input은 기존 허용 계약을 보존해 character name으로 해석합니다.
  3. missing/empty/duplicate common-item name과 각 form namespace에 존재하지 않는 name을 estimation/interactive confirmation 전에 거부합니다.
  4. mapping pair 순서는 보존하고, 이름을 자동 교정·drop·deduplicate하지 않습니다.
  5. match(...); valid_idx <- ...로 silently partial mapping을 허용하는 방식으로 수리하지 않습니다.
  6. #374의 vector itemtype repair, #349의 binary-choice repair, #169의 fitted-model/data column membership 실험과 unrelated delta를 이 branch에 복사하지 않습니다.

Exact repaired head에서 R CMD check, package tests, Code Quality, Security/SAST/Required CodeQL과 qualifying independent current-head review를 다시 요구합니다. docs/product-technical-gap-baseline.md는 현재 #261 문서 lane과 경쟁 수정하지 않고, 이 contract가 protected integration된 뒤 canonical docs owner가 흡수하도록 합니다.

Force push, destructive rebase, self-approval, warning suppression, no-op retrigger, predecessor GREEN transfer는 acceptance가 아닙니다.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Collaborator Author

@jules 이 branch를 single-writer로 이어서 수리해 주세요. 현재 exact bceb4e98f6ae98ea5e9e3dec201f4e41acf134e2는 test-only semantic RED입니다. Protected master@f87c2324f1686135e57d8730c1b0b9420874f300의 public autoFIPC() 경계에서 최소 causal GREEN만 ordinary descendant로 추가해 주세요.

핵심 acceptance는 PR 본문 그대로입니다. raw data는 colnames(), fitted SingleGroupClass는 실제 model data item namespace를 사용하고, factor 이름 허용은 보존하되 NA/empty/duplicate/unresolved anchor를 estimation·confirmation 전에 fail closed해야 합니다. Pair를 자동 drop/deduplicate/rename하지 마세요. #374, #349, #169와 다른 PR의 source/docs delta는 가져오지 마세요.

먼저 새 test를 실제로 실행해 RED를 확인하고, 그 뒤 production repair → exact-head R CMD check/package tests → applicable quality/security/SAST/Required CodeQL → independent review 순서로 진행해 주세요. 이 handoff 이후 fleet loop는 이 branch의 source/docs/refs/PR-state를 read-only로 취급합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant