# task-2553+15 — TEST_LOADER_SYS_MODULES_REGISTRATION_HARDENING_LANDING (Track B landing, 회장 GO, test-only clean PR)

> **Lv**: Lv.3 — fresh origin/main clean branch + test-only patch + clean PR open(merge 아님). **Executor**: 적합 dev 1회 한정. **TTL**: 2h.
> **상태**: 회장 GO — task-2553+14 Track B PASS 인정 → landing. 직접 main push 금지, detached worktree micro-commit 그대로 밀기 금지, **검증된 patch 를 source 로만** 사용해 fresh origin/main clean branch + test-only clean PR open. 문서화 아닌 코드/파일 자동화.
> **선행 의존**: task-2553+14(검증 완료, ANU-Codex CONVERGED, Codex GO). task-2553+13 Track A = DONE/CONVERGED(회장 ACCEPT) — 본 landing 은 Track A closeout 을 **변경·전복 0**.

---

## 1. 확정 전제 (task-2553+14 — ANU 권위 artifact 직접 검증, 변경 불가)

- 권위 patch = `/home/jay/.cokacdir/workspace/0FEB7972/artifacts/task-2553+14.patch.diff` (sha256 `cc70b12c8091c8d3c934128def93f9f65f2c0707eb8df8cf6a316997b71dd56e`) — **단일 권위 소스**.
- 검증된 변경 = **test-only 2파일**:
  1. `tests/regression/test_owner_trigger_2553_plus1_high_fix.py` — `_load_otp()` 에 **+1줄** `sys.modules[spec.name] = mod` (`mod = importlib.util.module_from_spec(spec)` 와 `spec.loader.exec_module(mod)` **사이**)
  2. `tests/regression/test_load_otp_sysmodules_2553plus14.py` — **신규 regression 파일**(164줄, Codex audit (B) 검증 = pre-fix 회귀 시 py3.12 false-negative 결정적 검출 가드)
- production `anu_v2/owner_trigger_pat.py` **byte-0** (sha256 `7b7d996aae3c368561f63600f8e71017f7af85b86a63b5533153e956bdec7135`, git blob `3b79488386e5721beda3dbd76b840f51f29cfe78`). regression **11 passed**. Codex GO / CRITICAL·HIGH·MED 0 / LOW 1(non-blocking) / ANU-Codex CONVERGED.
- origin/main 현재 HEAD = `d08b8b0efa4d44fea99f1e5e391c1a18695e85f6` (ANU read-only 확인 15:56; +12 merge 가 tip, 추가 push 0). `_load_otp` 컨텍스트 origin/main 과 patch.diff 정확 일치, 신규 regression 파일 origin/main 부재(신규 정상).

## 2. 회장 scope 해석 (명시 — 옵션 A 확정)

회장이 **2파일 실상 전부 보고받은 뒤** "Track B 는 production byte-0 / test-only clean PR 원칙으로 별도 진행하라"(1파일 제한·옵션 B 미선택) 지시. regression 가드는 anti-recurrence 본래 목적의 핵심·Codex 검증·회장 PASS deliverable 구성요소 → **옵션 A**: landing PR effective diff = **위 2 test 파일 정확히**(patch.diff 와 1:1), production byte-0. PR open 은 가역(미머지·close 가능) — 회장 검토 후 정정 가능.

## 3. 목표 (회장 verbatim)

검증된 +1줄 patch(및 신규 regression) 만 fresh origin/main clean branch 에 적용하여 **test-only clean PR open**. 직접 main push 0, detached worktree micro-commit(`0c8d5f8d`) 그대로 push 0 — patch 는 source 로만.

## 4. 허용 (회장 verbatim)

fresh origin/main clean branch 생성 / test-only patch 적용 / commit / push / clean PR open / result·report·evidence marker 생성 / normal+fallback callback / Codex post-result audit / ANU-Codex adjudication.

## 5. 작업 방식 (코드/파일 자동화)

1. **isolated worktree** = fresh `git fetch origin main` 후 origin/main tip(`d08b8b0e` 예상; 실시간 재확인, tip 이동 시 그 tip 기준) 에서 `git worktree add <iso> origin/main`. live `/home/jay/workspace` 미접촉.
2. fresh clean branch 생성: `git checkout -b task/task-2553p14-testloader-hardening-<runid>` (collision-safe; worktree∪local∪remote 충돌 시 새 runid, force-reset 0).
3. patch.diff(sha `cc70b12c…` 검증 필수) 의 **논리 변경만** 적용: ① `_load_otp()` +1줄 ② 신규 `test_load_otp_sysmodules_2553plus14.py` 생성. `0c8d5f8d` micro-commit 을 git am/cherry-pick 으로 밀지 말 것 — 내용 동치 적용 후 **새 clean commit 1개**(test-only, 명확 메시지).
4. 적용 직후 가드: `git diff origin/main..HEAD` = **정확히 2 test 파일**(`test_owner_trigger_2553_plus1_high_fix.py` +1줄 + `test_load_otp_sysmodules_2553plus14.py` 신규), 그 외 0. production(`anu_v2/owner_trigger_pat.py` 등) byte-0(sha256 `7b7d996a…`·blob `3b794883…` 재도출 일치). 불일치 → §8 HOLD, push/PR 0.
5. push (신규 branch only) + `gh pr create --base main --head <branch> --repo Jeon-Jonghyuk/dev_workspace` (test-only, body 에 task-2553+14 검증 요약·production byte-0·Codex GO·11 passed·**merge 아님** 명시). admin·force·rebase 0.
6. PR open 후 read-only 재확인: PR 번호·head SHA·effective diff 2파일·CI 트리거. **merge 미수행**.

## 6. 금지 (회장 verbatim)

production code 변경 / `owner_trigger_pat.py` 변경 / **task-2553+1 closeout·Track A artifact 변경**(task-2553+13.* / task-2553+1.closeout.json / task-2553+1.result.json 기존 key / task-2553+1.done / task-2553+1.md) / PR #128 변경 / PR #102 원본 변경 / merge / rollback·revert·force push·rebase / credential·OWNER PAT·real write 일반 진입 / **Track B artifact 를 Track A evidence 로 retroactive 인용** / clean PR open 외 GitHub write / live `/home/jay/workspace` cleanup·reset·stash·rm — 전후 불변.

## 7. success condition (회장 verbatim)

clean PR opened / effective diff = patch.diff 와 일치(2 test 파일, §2 옵션 A) / production byte-0 재확인 / regression 11 passed 이상(신규 branch 에서 재실행) / Codex GO·HIGH 0 / Track A artifacts untouched(sha 전후 동일) / clean PR open 외 GitHub write 0.

## 8. HOLD_FOR_CHAIR (회장 verbatim)

production code diff 발생 / expected test 파일 외 diff / patch.diff 와 다른 변경 / regression fail / Codex HIGH·CRITICAL / Track A closeout·classification artifact touch 필요 / PR #128·#102 변경 필요 / merge 필요 / credential·permission expansion 필요 / origin/main tip 에서 `_load_otp` 컨텍스트 불일치(patch 적용 불가). 적중 시 push/PR 0 + `task-2553+15.hold-for-chair.json` + 회장 보고.

## 9. ANU 배치안 / expected_files (task-2553+15 자체)

- (isolated wt, 신규 branch) `tests/regression/test_owner_trigger_2553_plus1_high_fix.py`(+1줄) / `tests/regression/test_load_otp_sysmodules_2553plus14.py`(신규)
- `memory/events/task-2553+15.preflight.json`(patch sha 검증·origin tip·컨텍스트 일치·Track A sha 전) / `.landing-exec.json`(branch/head/PR#/diff 2파일/prod byte-0) / `.activation-decision.json` / `.hold-for-chair.json`(조건부) / `.result.json`(최종 packet 10)
- `memory/reports/task-2553+15.md` / `memory/reports/task-2553+15.collector-final-packet.md`

> 본 marker = ANU 보고 채널(PR effective diff 미포함, Track A/task-2553+1 marker 무접촉). live workspace HEAD/branch/ref 전후 assertEqual.

## 10. 완료 후 최종 packet (회장 verbatim 10 — Track B landing 단독 압축)

1. PR 번호 2. branch / head SHA 3. effective diff 2 test 파일 일치 증거(patch.diff 대조) 4. production byte-0 증거(sha256·blob 재도출) 5. regression 결과(신규 branch 11+ passed) 6. Codex audit 결과 7. ANU-Codex adjudication 결과 8. Track A artifact untouched 증거(task-2553+13.*/task-2553+1.closeout/result/.done sha 전후 동일) 9. merge 가능 여부(판단만, 미수행) 10. HOLD_FOR_CHAIR 여부.

> 이번 GO = test-harness hardening clean PR open 까지. **merge GO 아님**. 재진단/merge 는 별건 회장 결정.

## 11. ANU-Codex loop + callback

batch plan(§9) → Codex lint → ANU refine(필요 시 9-R) → Codex re-lint → dispatch(적합 dev 1회, TTL2h, callback (a) normal+fallback, 4-tuple 분리, Track A/B artifact 인용 0) → preflight → patch 적용 → diff/byte-0 가드 → push → clean PR open → regression → post-result audit → ANU·Codex adjudication → 최종 packet 10 → 회장 보고. 회장 중간 라우팅 0, §8 HOLD 적중 시만 보고.

## 13. 9-R — Codex lint 반영 정밀 보강 (GO_READY_WITH_RECOMMENDATIONS → 자동 수렴, agent ae0b665199550adbb: CRITICAL 0 / HIGH 1 / MED 2 / LOW 1)

### 9-R.1 (HIGH 해소) duplicate remote-state gate (중복 PR 방지)
push/PR 직전 **결정적 전수 탐지**(heuristic 텍스트 검색 금지): `gh pr list --repo Jeon-Jonghyuk/dev_workspace --base main --state open --json number,headRefName,files,title` 로 **base=main 의 모든 open PR 열거** 후, 각 PR 을 ⓐ headRefName 이 `task/task-2553p14-testloader-hardening-` prefix 이거나 ⓑ changed files 집합이 **정확히 본 2 test 파일**(`tests/regression/test_owner_trigger_2553_plus1_high_fix.py` + `tests/regression/test_load_otp_sysmodules_2553plus14.py`) 와 동일한지로 판정(title/body 의존 0). + `git ls-remote --heads origin 'refs/heads/task/task-2553p14-testloader-hardening-*'`. ① ⓐ∨ⓑ 매칭 open PR 존재 → 신규 PR open **0**, 기존 PR 번호 회수·보고(reuse, 중복 생성 금지). ② 매칭 remote branch 만 존재(PR 없음) → 새 runid 재할당(force-reset 0) 또는 HOLD. ③ 무존재 → 정상 진행. 전수 열거 기반이라 title/body 상이해도 누락 0, 중복 PR open 0.

### 9-R.2 (MED 해소) push/PR 직전 stale-base 재검증 gate
preflight 후 push/PR **직전** 최종 `git fetch origin main` 재실행: origin/main tip 이 preflight 시점과 **동일**하면 진행. **이동** 시 → 새 tip 기준 branch 재생성 + `_load_otp` 컨텍스트·diff 2파일·production byte-0 가드 **전건 재실행** 후에만 진행(재검증 실패 → §8 HOLD). 일회성 관측으로 stale-base push 금지.

### 9-R.3 (MED 해소) Track A 무접촉 증거 = 회장 금지목록 1:1
§9·§10.8 보강 — before/after sha 증거에 §6 금지 Track A 경로 **전부** 포함: `task-2553+13.*`(activation-decision/result/reconcile/harness-artifact-classification/closeout-packet/report) / `task-2553+1.closeout.json` / `task-2553+1.result.json`(기존 23키 sha) / `task-2553+1.done` / **`task-2553+1.md`**(누락분 추가) / Track A 전 artifact. 각 전후 sha 동일 assert, 1개라도 변동 → HOLD. Track B artifact 의 Track A evidence retroactive 인용 0 (정적 확인).

### 9-R.4 (LOW 해소) patch.diff 정규화 대조 명시
§5.4/§7 fidelity 체크 구체화: branch diff(`git diff origin/main..HEAD`)를 권위 소스 `/home/jay/.cokacdir/workspace/0FEB7972/artifacts/task-2553+14.patch.diff`(sha `cc70b12c…` 선검증) 와 **정규화 비교**(주석/헤더 라인 제외, hunk 본문 + 신규 파일 본문 동치). 경로가 2 test 파일이어도 **내용 1byte 불일치 시 HOLD**(다른 변경 혼입 차단).

→ 9-R.1~9-R.4 로 HIGH 1 + MED 2 + LOW 1 전건 해소. CRITICAL 0 유지. Codex re-lint GO_READY 시 dispatch.

## 12. task-2553 계열

+12=BOT merge SUCCESS+POST_MERGE_HOLD / +13=Track A(harness-artifact 분류+reconcile+closeout) DONE·CONVERGED·회장 ACCEPT / +14=Track B(_load_otp 하드닝) PASS / **+15(본건)=Track B landing test-only clean PR open(옵션 A 2파일, merge 아님)**. Track C(policy profile)=별도 회장 결정 대기(미배정).
