Skip to content

fix(research): make cited text tool outputs directly readable - #7299

Merged
huangruiteng merged 1 commit into
mainfrom
codex/research-tool-source-reader-20261025
Oct 25, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/research-tool-source-reader-20261025

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

Opening a research citation containing a saved text tool result currently exposes escaped transport JSONL. Researchers must manually unwrap it before they can inspect the output. This repair shows the supported literal output in source order, keeps recorded exit information honest, and retains the complete original on demand.

  • Basis: reproduced citation-reading defect; existing roadmap S5 reading/recovery and S6 evidence traceability.
  • Entry points: native measurement, ordinary report and deep interpretation citations share the same reader. Base: main.

Author Declaration

  • Written by: OpenAI Codex model agent.
  • Implemented against: docs/reference/trajectory-assessment.md source-reading journey and docs/development/design.md progressive disclosure, at base af68b0ff180ca8309b5d63d7ee326c77848521bb.
Criterion Disposition Implementation / validation
Read output before transport detail; preserve full original implemented Existing CitationContent, literal output projection and one raw disclosure; packaged browser scenario
Preserve failure, unknown and mixed evidence implemented Pending exit stays unknown; unsafe numbers stay literal; unsupported or malformed lines retain the entire citation
Read without executing analysis or modifying history implemented Existing citation API/controller; real SQLite/HTTP fixture and read-only report readback

Scope And Continuation

Complete within this repair. It supports text-only function_call_output and custom_tool_call_output records and known direct shell-result envelopes. It reuses the native completed-command reader and existing styles; adds no endpoint, settings, source authority or model invocation.

Unknown nested transport remains literal. This does not establish scientific entailment, independent comprehension gains, full research-program acceptance or installed adoption. Those wider research outcomes remain with the existing program. Cross-surface extraction into the normalized conversation renderer is deferred because cited originals require a different lossless fallback boundary.

Validation

  • Tested revision: 1bf19b1d3f4e3c97b4e250089fe45f4c669e5450 (identical source content to the tested worktree).
  • Run state: finished. Inputs: synthetic, authorized_private_read_only.
Check kind Result Evidence / limitation
static passed Packaged dashboard TypeScript/build; git diff --check; RFC bilingual check; public text scan
real_entrypoint / real_backend passed Packaged research-native-reading: 23 synthetic cases over production HTTP and disposable on-disk SQLite 3.53.1; native commands, tool strings/arrays, pending/failure/empty, mixed/malformed fallback, unsafe integers, literal script-shaped text, exact raw content and keyboard return; Chinese/English and desktop/390px
integration passed pytest tests/capabilities/test_trajectory_assessment_store.py tests/presentation/test_research_analysis_api.py -q: 53 passed
regression_parity passed Original 15 cases pass on baseline with explicit legacy fixture configuration; baseline screenshots show escaped transport for the new tool case; head renders output. Initial baseline launch failed because the legacy fixture inherited the new synthesis-revision default; its configuration is corrected without relaxing validation. That initial failure is retained.
real_entrypoint passed Existing authorized report → deep judgment → exact cited original → return, with source/job files unchanged and zero mutation attempts. Private content is excluded; public reproduction uses synthetic fixtures.
manual passed Inspected desktop/narrow populated output, long failure, empty/unknown states and four synthetic screenshot pixels/metadata. Output uses 16px text and no horizontal page overflow. No timing or comprehension claim.
static / qualification passed / held Exact final diff quality receipt is valid. Standard premerge: 4 direct checks and 16 selected checks passed; overall manual_review_required for the four image files. Independent screenshot review remains required.
integration not_run Remote CI is pending after submission; full repository suite and installed desktop qualification were not rerun for this local renderer repair.

Coverage targets the changed parser/rendering seam and original source/API owner. No backend behavior, scoring, analysis output, permission or execution path changes. No self-merge or auto-merge.

Frontend / Visual Evidence

Source-packaged UI with fully synthetic data, tested at 1bf19b1d3f4e3c97b4e250089fe45f4c669e5450. These are the first visible screens after the same source-opening action. Natural document scrolling differs as decoded content grows; this is not a fixed-camera measurement. The failure text and script-shaped line are intentionally literal.

Desktop before · 1200×900 Desktop after · 1200×900
Before: escaped transport After: literal output and recorded exits
Narrow before · 390×844 Narrow after · 390×844
Before: tool transport fills the reading area After: readable output with original available

Reproduce with the packaged research-native-reading browser scenario in examples/personal-workspace-browser/. No public hosted preview is provided. Public screenshots contain only synthetic fixture data; the private readback is not attached.

Attention review: output earns the primary reading area, while transport and arguments remain on demand. Long negative results stay in document flow; failures and unknown exit status remain visible. Existing spacing, controls, status typography and colors are reused; no new card system or visual vocabulary.

Type And Boundary

  • Bug fix, documentation and focused regression update
  • Public presentation surface; shared-authority RFC impact: N/A
  • Explicit public-safe paths only; no private state, logs, credentials, local paths or private screenshots
  • No benchmark experiment duplicated or launched
  • No paired RFC changed
  • All commits include DCO sign-off

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@huangruiteng
huangruiteng merged commit 61b83ac into main Oct 25, 2026
28 of 31 checks passed
@huangruiteng
huangruiteng deleted the codex/research-tool-source-reader-20261025 branch October 25, 2026 11:08
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.

2 participants