Skip to content

fix(upstream): Sprint 2 — #331 taskkill MSYS + #333 adversarial focus text + 6건 plan (Codex audit + R1) - #8

Merged
tgkim-openerd merged 3 commits into
mainfrom
chore/sprint-2-upstream-port-2026-05-28
May 28, 2026
Merged

tgkim-openerd merged 3 commits into
mainfrom
chore/sprint-2-upstream-port-2026-05-28

Conversation

@tgkim-openerd

Copy link
Copy Markdown
Collaborator

Sprint 2 — upstream HIGH port 시작

Daily-evolve digest 의 upstream-issue HIGH 8건 (openai#350 openai#349 openai#345 openai#336 openai#333 openai#331 openai#330 openai#295) 중 trivial 2건 실제 fix + 6건 plan doc.

적용된 fix (2건)

openai#331 — codex-companion cancel taskkill MSYS path fix

위치: plugins/opnd-codex/scripts/lib/process.mjs L168 terminateProcessTree Windows 분기

Fix: runCommandImpl("taskkill", ["/PID", ...]) → runCommandImpl("cmd.exe", ["/d", "/s", "/c", "taskkill", "/PID", ...])

MSYS/Git Bash 가 /PID 같은 single-slash 토큰을 filesystem path 로 변환 → cmd.exe 경유로 MSYS path translator 경계 밖에서 taskkill 실행. /T /F process tree semantics 유지.

openai#333 — adversarial-review focus text re-tokenization leak

위치:

  • plugins/opnd-codex/scripts/lib/args.mjs — parseReviewArgv() 신규 (+95 lines)
  • plugins/opnd-codex/scripts/codex-companion.mjs L1536 handleReviewCommand 의 parseCommandInput → parseReviewArgv 교체

Root cause: Claude Code 가 /opnd-codex:adversarial-review $ARGUMENTS 를 single raw string 전달 → normalizeArgv 가 splitRawArgumentString 으로 재토큰화 → focus text 안의 --base main 등이 실제 CLI option 으로 소비.

Fix 구조: known options 만 greedy 파싱 후 첫 unknown token 부터 모두 focusTokens 로 분리. 전역 parseArgs/parseCommandInput 미변경 — task/agent/pair 서브커맨드 영향 없음.

Plan doc (6건 — 다음 sprint 위임)

docs/exploration/2026-05-28-upstream-high-port-plan.md (+140 lines):

Issue Effort Priority 핵심 위치
openai#330 IPC pipe deadlocks L HIGH lib/jsonl.mjs, lib/broker-endpoint.mjs, lib/app-server.mjs
openai#345 SessionEnd kill background M HIGH session-lifecycle-hook.mjs, lib/tracked-jobs.mjs
openai#350 empty output on error M HIGH lib/render.mjs, lib/tracked-jobs.mjs
openai#349 Windows sandbox modes M HIGH lib/codex.mjs resolveSandboxValue (root cause) + codex-companion.mjs L1486/L1559/L1568 (arg 전달 site)
openai#336 CreateProcessAsUserW 1312 L MEDIUM lib/broker-lifecycle.mjs spawnBrokerProcess + Store pwsh 감지
openai#295 CreateProcessAsUserW 1920 L MEDIUM lib/codex.mjs buildThreadParams + Windows privilege 진단

Codex pair review trace

Round agent ID finding 상태
audit + apply a1a4f2e2ec24b3059 openai#331 + openai#333 fix 자동 + 6 plan doc commit 8e7009e
R1 a5c5e327679c4e9de HIGH 0 + MEDIUM 1 (parseReviewArgv --fast/--effort 누락) + LOW 1 (plan openai#349 wording) apply (fe49153 + 3d39632)
R2 task-mppld3uo-lvqimc fail (process_died, liveness check) — Codex job die Claude self-verify

R2 skip 사유 + Claude self-verify

R2 Codex job 이 process die — 재호출 cost vs value tradeoff. R1 fix 가 cosmetic wiring (valueOptions/booleanOptions array 에 2 항목 추가 + plan wording 1줄) — 회귀 risk 매우 낮음 (Section F "Document Count Consistency" lesson 의 cosmetic loop 회피).

Claude self-verify:

  • grep "effort\|fast" codex-companion.mjs | grep "Options" → 양쪽 모두 valueOptions/booleanOptions 에 포함 확인
  • node --test tests/process.test.mjs tests/commands.test.mjs → 15/15 pass (audit agent + R1 audit 자체 self-test)
  • R1 의 MEDIUM (parser wiring) + LOW (plan wording) 모두 정확 fix

skip_reason: codex_session_drift (Codex job process 도 die — session 재시작 cost).

Commit history (squash 시 1 commit)

3d39632 fix(sprint-2): R1 LOW plan doc #349 wording (commit 누락 보정)
fe49153 fix(sprint-2): Codex R1 MEDIUM (parseReviewArgv --fast/--effort wiring) + LOW (plan #349 wording)
8e7009e fix(upstream): Sprint 2 — #331 taskkill MSYS path + #333 adversarial focus text + 6건 plan doc

검증

  • node --test tests/process.test.mjs: 5/5 pass
  • node --test tests/commands.test.mjs: 10/10 pass
  • node --check 모든 변경 .mjs 통과
  • 회귀 평가: task/agent/pair 서브커맨드 미영향 (parseReviewArgv 가 review path 한정)

미검증 영역 (실 환경 e2e 필요)

변경 파일 (5 files / +247 -6)

  • plugins/opnd-codex/scripts/lib/process.mjs (+4 -1)
  • plugins/opnd-codex/scripts/lib/args.mjs (+95)
  • plugins/opnd-codex/scripts/codex-companion.mjs (+8/-2)
  • tests/process.test.mjs (+5/-1)
  • docs/exploration/2026-05-28-upstream-high-port-plan.md (+140)

merge 전략

Squash merge 권장 — 3 commits → 1 commit `fix(upstream): Sprint 2` 로 main history clean.

 adversarial-review focus text leak fix + 6건 plan doc

openai#331: terminateProcessTree(win32)에서 taskkill을 cmd.exe /d /s /c 경유로
변경해 Git Bash(MSYS)의 /PID → C:/Program Files/Git/PID path 오역을 방지.
tests/process.test.mjs assertion도 cmd.exe wrapping에 맞게 업데이트.

openai#333: handleReviewCommand의 parseCommandInput을 새 parseReviewArgv로 교체.
normalizeArgv+splitRawArgumentString이 단일 raw string을 재토큰화할 때
focus text 안의 --FLAG VALUE substring이 실제 CLI option으로 소비되던
문제를 수정. lib/args.mjs에 parseReviewArgv 추가 (review 계열 전용,
known option 파싱 후 첫 unknown/positional 이후를 focus text로 처리).

docs/exploration/2026-05-28-upstream-high-port-plan.md:
나머지 6건(openai#350 openai#349 openai#345 openai#336 openai#330 openai#295) M/L effort plan 문서화.
각 issue별 위치 후보, effort, 우선순위, fix 방향 포함.
@tgkim-openerd
tgkim-openerd merged commit 899c324 into main May 28, 2026
@tgkim-openerd
tgkim-openerd deleted the chore/sprint-2-upstream-port-2026-05-28 branch May 28, 2026 14:38
tgkim-openerd added a commit that referenced this pull request May 28, 2026
…ne + telemetry UX + Windows fixes (#10)

## Version bump 2.1.0 → 2.2.0 (semver minor — additive only, BREAKING 없음)

- package.json / package-lock.json / plugins/opnd-codex/.claude-plugin/plugin.json / .claude-plugin/marketplace.json 4 file version sync (scripts/bump-version.mjs 2.2.0)

## CHANGELOG release entry — 2.2.0 (2026-05-28)

본 release 의 main commits (9 PR squash):
- #1 daily-evolve pipeline Phase 0~6 + 1.5a + budget
- #3 /analyze Recommendations + /doc-sync + PII redact
- #4 broker false-negative 해소 (BROKER_BUSY_RPC_CODE + timeout 분기)
- #5 Phase A telemetry UX + setup advisory + verified-no-change
- #6 Phase B suminerProxy eval + upstream classification
- #7 Sprint 1 upstream comment body 8건
- #8 Sprint 2 openai#331 + openai#333 fix + 6 plan
- #9 Sprint 3 suminerProxy cherry-pick plan

## semver minor 정합

모두 additive (BREAKING 없음):
- 신규 daily-evolve pipeline (별도 commands/skills, 기존 영역 안 건드림)
- 신규 HEALTH_STATUS.TRANSIENT enum (existing 5 enum 보존)
- 신규 parseReviewArgv() (기존 parseArgs/parseCommandInput 보존)
- 신규 SELF_FORKS Set (fork-research 의 fork list filter — false-positive 제거만)
- 신규 inspectPluginHomeFreshness() + pluginHomeAdvisory field (additive)
- 신규 isUsageLimitError / annotateUsageLimitError (별도 helper)
- 기존 isStaleAuthCacheError pattern 확장 (backward compatible)
- broker busy / timeout 분기 추가 (catch fallback 보존)
- Windows process.mjs cmd.exe 래핑 (behavior change 가능성, e2e 검증 미완 — fork-cover 표기)

## marketplace install 즉시 가능

본 commit + 후속 push + main merge + tag v2.2.0 + gh release 후:

```bash
/plugin marketplace add opnd-io/opnd-codex-plugin
/plugin install opnd-codex@opnd-codex-plugin
/reload-plugins
/opnd-codex:setup
```

marketplace.json source = ./plugins/opnd-codex (main branch HEAD) → 사용자 install 시 v2.2.0 모든 변경 즉시 포함.

## 다음 sprint backlog (Unreleased)

- suminerProxy NDJSON event stream foundation cherry-pick (Phase 1, 3-4d)
- upstream HIGH port 6건 (openai#330 openai#345 openai#350 openai#349 openai#336 openai#295)
- quality-review-agent frontmatter description "3 영역 → 6 영역" (classifier 차단, 사용자 인가 후)
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