Skip to content

Interview: separate inferred assumptions from confirmed requirements at handoff (#275) - #279

Merged
lidge-jun merged 4 commits into
devfrom
codex/issue-train-0930-wp3
Sep 29, 2026
Merged

lidge-jun merged 4 commits into
devfrom
codex/issue-train-0930-wp3

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Problem

Interview carried every unresolved item to Plan under one heading, OPEN ASSUMPTIONS, so an inference the assistant made read the same as a constraint the user agreed to (#275). Nothing recorded where an assumption came from, how sure it was, or what changes if it is wrong.

Change

Guidance only, in the Interview skill (new rule INTERVIEW-ASSUME-01):

  • Each assumption in the plan is one line with an id, a bracketed status, the assumption, its source (a path:line or the Q/A ledger eventId of the user's answer), confidence and if wrong.
  • Status is proposed, open, user_confirmed or user_rejected. The last two require the answer's eventId; a reply typed in chat is confirmed through the next question round or kept open.
  • The plan keeps three sections: ## OPEN ASSUMPTIONS (proposed and open only), ## CONFIRMED REQUIREMENTS and ## ASSUMPTION DECISIONS (rejected, kept as a decision trace). Because cxc freeze copies recorded tracker assumptions into the manifest as open, only proposed and open entries belong in the tracker.
  • High-impact proposed assumptions are asked in the next relevant round. Before I -> P, the closeout summary lists confirmed requirements separately from the remaining open ones.
  • references/mind-dispatch.md and loop/references/durable-goalplan.md are synced.

No code, schema, hook or runtime text changes. Existing trackers and freeze manifests read as before. The structured assumption schema the issue mentions as future work is not part of this change.

Verification

  • The rule is referenced in all three files (rg -c INTERVIEW-ASSUME-01: 4, 1, 1). Two reviewers checked every factual claim against freeze-cli.ts, interview-ledger.ts and interview.ts, and one did a fresh-reader pass whose stumbles led to the clarified wording.
  • npm test (3730 tests, 0 failures), inventory, gate.mjs and platform-smoke.mjs pass under cxc receipt test. The hook diff is empty.
  • Enforcement is agent-followed (E7): nothing checks an eventId against the ledger.

Refs #275. This closes by hand after merge because dev is not the default branch.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 29, 2026
@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 42 / 80

이 PR은 인터뷰가 Plan으로 넘어갈 때 “AI가 짐작한 것”과 “사용자가 동의한 것”이 같은 문장처럼 보이던 문제를 고치려는 문서(가이드) 변경입니다. 코드·스키마·훅은 안 건드리고, Interview 스킬에 INTERVIEW-ASSUME-01 규칙을 넣었습니다. 가정 한 줄마다 id, 상태([proposed]/[open]/[user_confirmed]/[user_rejected]), 출처(source), 확신도(confidence), 틀렸을 때 영향(if wrong)을 쓰게 합니다. Plan에는 열린 가정 / 확정 요구사항 / 거절된 가정(결정 흔적)을 세 구역으로 나눕니다. 영향이 큰 proposed는 다음 질문 라운드 후보로 올리고, I→P 직전에 확정과 남은 열린 가정을 따로 요약합니다. mind-dispatch.md와 durable-goalplan.md도 같은 말로 맞춰 두었고, 이슈 #275의 수용 조건 1~4를 “규칙이 요구한다(E7, 에이전트가 지키는 가이드)” 수준에서 맞춥니다. 구조화된 assumption 스키마는 이번 범위 밖입니다.

라인 - plugins/codexclaw/skills/interview/SKILL.md (tracker / cxc freeze 문단) — 규칙은 “트래커에는 proposed·open만 둔다”고 하면서, 이미 기록된 항목을 옮길 수 없으면 “Plan 줄의 상태가 권위”라고 합니다. 그런데 cxc freeze는 트래커에 남은 가정을 그대로 open으로 복사합니다. Plan에서는 확정·거절인데 freeze 매니페스트에는 다시 open으로 실릴 수 있어, 이슈가 고치려던 “같은 형태로 넘어간다” 증상이 freeze 경로에서 남을 수 있습니다.
라인 - 강제력(E7) — user_confirmed / user_rejected에 eventId(또는 goal 결정 id)가 필요하다고 적혀 있지만, 레저와 맞춰 검사하는 게이트는 없습니다. PR·플랜도 우회를 솔직히 적었습니다. 가이드만으로 수용 조건 1을 “막는다”고 읽히면 과합니다. “리뷰로 눈에 보이게 한다”가 맞는 읽기입니다.
라인 - devlog/_plan/260930_issue_train/010_wp2_dispatch_contract.md — wp2 D 요약이 이 PR(wp3 가정)에 같이 들어 있습니다. 이슈 트레인 기록으로는 자연스럽지만, 리뷰어가 “이번 변경 범위”를 볼 때 스킬 파일과 섞여 보일 수 있습니다.

메인테이너의 판단이 필요한 지점

트래커에 남은 resolved 항목이 freeze에서 open으로 다시 실리는 구멍을, 이번 가이드 PR에서 “Plan이 권위”로 받아들여 닫을지, 아니면 freeze/트래커 정리 규칙을 후속 이슈(#275 스키마 단계)로 명시할지. 또한 E7만으로 #275를 “closes”할지, 아니면 “guidance landed; schema/enforcement follow-up”으로 이슈를 열어 둘지.

너의 추천

dev 베이스 문서 PR로 merge해도 됩니다. 머지 전에 PR 본문이나 #275에 한 줄만 적어두세요: “freeze는 여전히 트래커 문자열을 open으로 복사한다. Plan 상태와 어긋나면 Plan을 따른다. 스키마·게이트는 후속.” 그다음 #275는 손으로 close하거나, freeze/스키마 후속을 남기고 partial close하면 됩니다. preview deploy 이야기는 불필요합니다.

이 댓글은 grok-bot이 작성했습니다

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T18:07:00.277607Z 6e7bd3e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6e7bd3eb41

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +96 to +97
- High-impact `proposed` assumptions (INTERVIEW-ASSUME-01) are candidates for the
next relevant question round. Low-impact ones may stay `proposed`; closeout lists them.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require high-impact assumptions to be asked

When a proposed assumption's if wrong consequence changes scope, design, or verification, calling it merely a “candidate” permits the agent to skip it and proceed to Plan on a materially unconfirmed premise; the readiness rules allow recorded assumptions through. This also weakens the accepted D20 contract in devlog/_plan/260930_issue_train/002_architect_consultation.md:28, which says high-impact proposals are asked next. Make the next relevant question round mandatory for these assumptions rather than optional.

Useful? React with 👍 / 👎.

Comment on lines +79 to +81
`text` repeats the plan line without that `- `, and only `proposed` or `open`
entries belong there. Do not hand-edit session state; if a tracker entry
cannot be moved after it is resolved, the plan line's status is authoritative.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Prevent resolved tracker entries from freezing as open

When an assumption already exists in the Interview tracker and is subsequently confirmed or rejected, this fallback changes only the plan line and leaves the recorded tracker entry in place. freeze-cli.ts:97 nevertheless copies every recorded tracker assumption into evidenceBundle.openAssumptions, so the resulting freeze manifest still presents the resolved item as open and contradicts the authoritative plan. The workflow needs a supported way to retire or replace the tracker entry, or freeze must derive/filter its open assumptions from the resolved plan state.

Useful? React with 👍 / 👎.

@lidge-jun
lidge-jun merged commit 58a8a17 into dev Sep 29, 2026
14 checks passed
@lidge-jun
lidge-jun deleted the codex/issue-train-0930-wp3 branch September 29, 2026 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant