ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster text
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
El error está en el cargador por lotes de codex-rs/skills/src/assets/samples/imagegen/scripts/image_gen.py, alrededor de la línea 464, donde toda la entrada UTF-8 se divide con str.splitlines(), lo que se rompe con U+2028 dentro de cadenas JSON. Reprodúcelo con los comandos de dry-run del issue usando un U+2028 literal frente a su escape \u2028. Está terminado cuando el archivo con el carácter literal lista los mismos dos trabajos que el que usa el escape, y el texto del póster se conserva literalmente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
One literal U+2028 LINE SEPARATOR in a poster's text makes generate-batch reject the entire UTF-8 JSONL input before processing any jobs. Escaping the same character as \u2028 allows both jobs to proceed with identical decoded text. This affects producers that emit UTF-8 directly, including Python's json.dumps(..., ensure_ascii=False).
Steps to reproduce From the Codex checkout at de83e7674a69b9ae18544dd1fbf53f31bfe8c640, with Python 3.12.14. Dry-run mode requires no credentials.
d=$(mktemp -d)
python3 - "$d" <<'PY'
import json, sys
from pathlib import Path
jobs = [
{"prompt": "A welcome poster", "text": "OPEN HOUSE\u2028SATURDAY"},
{"prompt": "A second poster"},
]
for filename, escape in [("literal.jsonl", False), ("escaped.jsonl", True)]:
path = Path(sys.argv[1]) / filename
with path.open("w", encoding="utf-8") as f:
for job in jobs:
print(json.dumps(job, ensure_ascii=escape), file=f)
with path.open(encoding="utf-8") as f:
assert list(map(json.loads, f)) == jobs
PY
script=codex-rs/skills/src/assets/samples/imagegen/scripts/image_gen.py
python3 "$script" generate-batch --dry-run --input "$d/literal.jsonl" --out-dir "$d/out1"
python3 "$script" generate-batch --dry-run --input "$d/escaped.jsonl" --out-dir "$d/out2"
Observed The first invocation exits 1 with Invalid JSON on line 1: Unterminated string starting at: line 1 column 40 (char 39). The second lists jobs 1 and 2. The independent parser check passes for both files.
Expected Both batches should process the same two jobs, preserving the verbatim poster text.
Suggested fix Iterate over the UTF-8 file by physical lines instead of calling str.splitlines() on the whole document. The latter treats U+2028 inside a JSON string as a record boundary. Batch loader
- Lenguaje dominante
- Rust
- Estrellas
- 135k
- Forks
- 21.4k
- Merge medio
- 1 min
- PR fusionados (30 d)
- 997
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openai/codex
-
gitDiffToRemote fails on an unpushed topic branch when the remote default branch contains a slashAbiertoapp-server bug CLI
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
bug CLI
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Default skill installation strips executable bits and breaks the curated Playwright launcherAbiertobug CLI skills
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
bug imagen skills
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Los mantenedores suelen responder en 1 día
-
bug CLI tool-calls
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
Todos los issues de openai/codex
Issues similares
-
bug UI
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
wardian-app/Wardian#1746 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
jlcodes99/cockpit-tools#3125 ·
Los mantenedores suelen responder en 2 días
-
bug user-sprint
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Vondor/KassenSturz#967 ·
Los mantenedores suelen responder en 1 día
-
area/ci
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
[BUG] Incremental sync warns "no stored highest_uid" on every round for folders with no new mailAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
rustmailer/bichon#411 ·