fix(short): una cita partida en líneas es un span, no dos huecos que rellenar
Build & Deploy ResearchOwl / build-and-push (push) Successful in 8s
Build & Deploy ResearchOwl / build-and-push (push) Successful in 8s
El Short de Socorro salió con “LIKE ALUMINUM / SMOOTH, NO WINDOWS” atribuido a Zamora. La primera mitad es su informe literal; la segunda es la compresión de un divulgador resumiéndolo. Ninguna fuente pone esas palabras juntas y Zamora nunca dijo la segunda: es una cita fabricada con material auténtico. El comprobador funcionó — encuentra LIKE ALUMINUM y rechaza la unión — así que el fallo estaba antes, en el prompt. `scale_bars.quote` es una lista de líneas por maquetación, pero al modelo le llega como dos huecos, y los llenó de sitios distintos. Ningún otro campo de cita tiene esa forma: quote_a y quote_b sí son dos citas a propósito, y esas salieron bien. El prompt ahora dice que las líneas se leen unidas, que eso es lo que busca la comprobación y lo que lee el espectador, y que la atribución empeora el pegote en vez de arreglarlo: nombra a quien acabas de poner esas palabras en la boca. El test fija la unión como unidad de comprobación con el caso exacto: dos mitades que existen por separado y una frase que no. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
cfe4a6d754
commit
366ded1f59
@@ -159,6 +159,17 @@ when the source says "walnut shaped with a wide rim around its circumference" \
|
||||
— pick a shorter span that is still verbatim, or drop the quote marks and \
|
||||
state the fact plainly.
|
||||
|
||||
**A quote field that takes a list of lines is ONE span, broken where it has to \
|
||||
break to fit.** It is not two quotes and not two slots to fill. Read the lines \
|
||||
back joined with a single space: that sentence is what the check looks for in \
|
||||
the sources, and what a viewer reads off the frame. Welding a real fragment to \
|
||||
a phrase from somewhere else produces a sentence nobody ever said — \
|
||||
"“LIKE ALUMINUM" + "SMOOTH, NO WINDOWS”" is a fabricated quote even though \
|
||||
every word of it appears in the material, because the witness said the first \
|
||||
half and a later writer summarising him said the second. Attribution makes it \
|
||||
worse, not better: the line under the quote names the person you just put \
|
||||
those words into.
|
||||
|
||||
# 5. A worked example — FORMAT ONLY
|
||||
|
||||
This is a case_file that produced a good video. Read it for shape: how long a \
|
||||
|
||||
+26
-1
@@ -122,12 +122,37 @@ def test_geometry_is_not_a_claim(spec):
|
||||
|
||||
def test_a_split_quote_is_one_claim(spec):
|
||||
"""scale_bars.quote son las líneas de UNA cita: se comprueba entera, no a
|
||||
trozos (el renderizador no envuelve; el caller parte las líneas)."""
|
||||
trozos (esas líneas las parte quien escribe el spec, no el renderizador)."""
|
||||
quotes = [c.text for c in extract_claims(spec) if c.kind == "quote"]
|
||||
assert "TWICE THE SIZE OF AN AIRCRAFT CARRIER" in quotes
|
||||
assert "TWICE THE SIZE OF" not in quotes
|
||||
|
||||
|
||||
def test_a_quote_welded_from_two_sources_is_flagged(spec):
|
||||
"""El fallo real del Short de Socorro: cada mitad existe, la frase no.
|
||||
|
||||
El modelo cogió un verbatim del testigo y le soldó la compresión de un
|
||||
resumen posterior, todo dentro de unas comillas y con su atribución debajo.
|
||||
Comprobar las líneas por separado habría dado las dos por buenas y publicado
|
||||
una frase que nadie dijo — por eso la unión es la unidad de comprobación.
|
||||
"""
|
||||
chunks = CHUNKS + [{
|
||||
"url": "https://example.org/retelling",
|
||||
"content": ("Terauchi called it “twice the size of an aircraft carrier”. "
|
||||
"Later writers described the contact as unlit and silent."),
|
||||
}]
|
||||
haystack = " ".join(c["content"] for c in chunks).upper()
|
||||
assert "TWICE THE SIZE OF" in haystack and "UNLIT AND SILENT" in haystack
|
||||
|
||||
welded = json.loads(json.dumps(spec))
|
||||
welded["shots"][3]["props"]["quote"] = ["“TWICE THE SIZE OF", "UNLIT AND SILENT”"]
|
||||
|
||||
report = check_grounding(welded, chunks)
|
||||
|
||||
assert [c.text for c in report.ungrounded if c.kind == "quote"] == [
|
||||
"TWICE THE SIZE OF UNLIT AND SILENT"]
|
||||
|
||||
|
||||
# --- comprobación -----------------------------------------------------------
|
||||
|
||||
def test_reference_spec_is_fully_grounded(spec):
|
||||
|
||||
Reference in New Issue
Block a user