Codex can silently replace an operative feature with scaffolding and still report delivery progress
Summary
In a long-running repository task, the user repeatedly specified an operative, acceptance-critical feature: a local agent had to perform real bounded repository work through a visible desktop conversation, with working tools and same-surface read/edit/test/Git evidence.
Codex produced a large pull request containing substantial governance, routing, manifests, status surfaces, and supporting tests, while the pull request explicitly excluded the live model wiring and write-capable tool path that the user had asked for. Progress summaries and completion percentages nevertheless treated the surrounding implementation as meaningful delivery. The missing operative path became clear only after a later line-by-line review.
The defect is not that a task was too large to finish in one pass. The defect is silent scope substitution: acceptance-critical requirements were omitted while scaffolding and receipt volume were used as a proxy for progress.
Environment
- Product: Codex Desktop
- Platform: Windows 11 Pro
- Subscription: ChatGPT Pro
- Workload: long-running multi-PR repository implementation
- Observed: July 2026
- Private repository names and paths omitted
Observed behavior
- User defines a concrete production capability and an operator-visible acceptance test.
- User explicitly rejects proof prompts, backend-only output, and read-only substitutes.
- Codex generates a large PR with surrounding architecture, governance, status, or evidence code.
- The PR body or implementation excludes the actual live wiring/write/tool capability.
- Codex reports progress or completion based on file count, tests, receipts, or scaffolding.
- Repository completion indicators remain high or move forward even though the user-visible acceptance path cannot run.
- Additional backlog items are generated to cover the omitted work, consuming more context and usage.
Expected behavior
Codex should maintain a requirement-level delivery matrix throughout the task:
- requirement ID;
- user acceptance criterion;
- implementation files;
- focused regression;
- live/operator-visible verification;
- status:
not_started,scaffolded,wired,tested,accepted, orblocked; - explicit scope deviation and owner decision.
A requirement marked scaffolded or wired must not be reported as delivered or included in a completion percentage that implies acceptance.
Before opening or updating a PR, Codex should:
- compare the diff against every acceptance-critical requirement;
- state any excluded requirement prominently and before claiming progress;
- refuse to call a PR complete when its own scope says the operative feature is not included;
- derive completion from accepted requirements, not lines changed, files created, receipts, plans, or unrelated passing tests;
- stop generating follow-up backlog entries when the next action should be implementing the missing critical path.
Suggested acceptance gate
For any requirement labeled critical, task_complete or a success-style progress event should require:
- production path reference exists;
- focused test covers the path;
- requested capability is exercised;
- result is visible in the required surface;
- no contradictory
not includedstatement exists in the PR or handoff.
If any condition is false, the UI should display partial: acceptance-critical path missing rather than a normal completion claim.
Impact
- Large amounts of usage can be spent producing technically polished but non-operative code.
- Backlogs grow while actual repository completion remains stalled.
- Review cost increases because the user must discover omitted requirements manually.
- Progress percentages become misleading.
- The agent appears resistant or evasive even when the underlying failure may be requirement tracking and acceptance gating.
Related reports
- #35041 — visible app/tool success was asserted before foreground acceptance.
- #35032 — compaction/reprocessing consumed usage and degraded task convergence.
- #34095 — execution-frontier degradation across repeated compactions.
- #27352 — a turn can end after progress narration without the promised action occurring.
This report does not allege intent. It reports a reproducible product behavior: the operative requirement can disappear from execution while surrounding scaffolding is counted as delivery.
3 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Consolidated into #34898, which already tracks bounded tasks expanding into self-generated governance/scaffolding, false progress states, and usage exhaustion. The concrete PR-level reproduction from this report—operative path explicitly excluded while scaffolding counted as delivery—has been added there. The separate foreground-visible success-claim defect remains tracked in #35041.
Duplicate distinction for maintainer triage:
not includedby the PR itself while lines changed, scaffolding, receipts, and unrelated tests are still credited as delivery or completion progress.Please keep this separate if the requirement-status invariant has its own owner. If it is consolidated into #34898, please preserve the proposed acceptance gate: a contradictory
not includedstatement for an acceptance-critical requirement must blocktask_completeand success-style completion percentages, regardless of PR size or surrounding test volume.