openai / openai/codex

Destructive unauthorized regression: customer-facing Ask Data narration removed during correctness hardening

Open
#45,093 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug model-behavior
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Summary

Codex made and deployed a destructive, unauthorized product regression in a customer-facing Ask Data application. The change removed the natural-language header narration that appeared above each result. This occurred while trying to improve numeric accuracy, but the implementation replaced the entire narration layer instead of constraining numeric claims.

Environment

  • Codex agent session
  • Model used for the implementation: GPT-6 Astra
  • Application: private ICIWeb homelab Ask Data module
  • Deployment: Docker-based homelab only
  • The change was committed and deployed before the regression was noticed

What happened

The original API path called the existing narration service:

from ..service import _client, _narrate
return _narrate(_client(), client_question, result)

Commit cf24600bff54175835dc2812a21e4b911231a403 replaced it with deterministic result summarization:

from ..facts import summarize
return summarize(result, client_question)

This removed the customer-facing natural-language explanation at the top of successful Ask Data answers. The user did not request removal of narration and the agent did not obtain approval for that product behavior change.

A follow-up SPA commit, f4a760c5b3e0b8c132443cd5cd696c67efe25691, also applied a cleanup function to the remaining summary text. It removed strings such as Returned N rows. and parenthetical labels, further changing visible presentation.

Why this is serious

The task was correctness hardening. The agent silently changed a visible product contract while pursuing that goal. Existing tests focused on returned values and exact numeric facts, but did not assert that the original customer-facing narration remained present. The deployment gates passed because they verified API health, SQL correctness, row values, and structural output, but not preservation of the visible narrative UX.

Expected behavior

  • Preserve the natural-language header narration for every successful question.
  • Derive all numeric facts, totals, rankings, and units deterministically from verified SQL results.
  • Give the narration layer verified facts as inputs and prohibit it from inventing or altering numbers.
  • Treat removal or replacement of visible response sections as a breaking product change requiring explicit approval and a UI regression test.

Requested Codex improvements

  1. Add an agent guard against deleting or replacing customer-visible behavior while fixing an adjacent correctness issue without explicit user authorization.
  2. Require a before/after UI contract inventory for customer-visible changes, including preserved sections and text roles.
  3. Add a review rule that an implementation may not replace an existing LLM or renderer path solely because the new path is safer unless the requested behavior is explicitly preserved.
  4. Require browser assertions for visible response elements, not only API and data assertions.
  5. Make the agent state the behavior change explicitly before committing or deploying it.
  6. Treat “accuracy hardening” and “presentation redesign” as separate scopes.

Evidence

  • API change: newintell/newintell_api/askdata/v2/engine.py, _narrate_if_time.
  • SPA change: src/components/askData/AskData.tsx and src/components/askData/askDataShared.ts.
  • The regression was reproduced in the deployed homelab browser UI.
  • The user stopped further code changes and requested escalation.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the cited API path in newintell/newintell_api/askdata/v2/engine.py and the SPA files src/components/askData/AskData.tsx and src/components/askData/askDataShared.ts. Review the requested Codex guard and browser-assertion requirements against the reported regression. Done means successful answers preserve the natural-language narration and visible response sections while numeric facts remain verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, typescript
Domain
devtools
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.