v2 chunk 2a iter 1: rules 6+18 — ed. invariant, expand publishers
Two prompt edits to SYSTEM_PROMPT_NOTES driven by chunk 1 smoke test
gaps on chapter_first_doyle.toml.
Rule 6 (chapter form) expanded with an explicit invariance statement:
"ed." is the canonical abbreviation regardless of editor count — do
NOT pluralize to "eds." for multiple editors. CMOS NB treats it as
an invariant abbreviation, not a number-agreeing word.
New rule 18 (publisher expansion) mirrors v1 formatter.py rule 14:
publisher names must be in full canonical form, with note-form-
specific examples ("U of Chicago Press" → "University of Chicago
Press"). Includes the same MIT Press / ALA Editions / MLA carve-out
for publishers whose canonical self-presentation legitimately uses
initials.
Two new prompt-content unit tests added to tests/test_note_formatter.py
following the v1 test_formatter.py discipline. TDD cycle: red-green-
verified end-to-end.
Real-API smoke test, 3 v2 exemplars × 2 runs each: 6/6 byte-perfect
matches (was 4/6 in chunk 1; chapter_first_doyle went 0/2 → 2/2,
book and journal still 2/2). v1 untouched, 96/96 v1 tests still
passing. Total suite: 116/116.
This commit is contained in:
@@ -99,9 +99,13 @@ Rules you must follow (CMOS 18th edition specifically, NOTE form):
|
|||||||
6. CHAPTER IN EDITED BOOK NOTE FORM:
|
6. CHAPTER IN EDITED BOOK NOTE FORM:
|
||||||
Author, "Chapter Title," in *Book Title*, ed. Editor Names
|
Author, "Chapter Title," in *Book Title*, ed. Editor Names
|
||||||
(Publisher, Year), specific-page.
|
(Publisher, Year), specific-page.
|
||||||
Use "ed." (abbreviated), NOT "Edited by". The lowercase "in"
|
Use "ed." (abbreviated), NOT "Edited by". The abbreviation "ed."
|
||||||
before the italicized book title is part of CMOS note form
|
is INVARIANT — use "ed." even when there are multiple editors.
|
||||||
and should appear as shown.
|
Do NOT pluralize to "eds." regardless of editor count. CMOS NB
|
||||||
|
note form treats "ed." as an unchanging abbreviation, not a
|
||||||
|
grammatical word that agrees in number with its referent.
|
||||||
|
The lowercase "in" before the italicized book title is part of
|
||||||
|
CMOS note form and should appear as shown.
|
||||||
|
|
||||||
7. TRANSLATED WORKS use "trans." (abbreviated), NOT "Translated by".
|
7. TRANSLATED WORKS use "trans." (abbreviated), NOT "Translated by".
|
||||||
|
|
||||||
@@ -168,6 +172,20 @@ Rules you must follow (CMOS 18th edition specifically, NOTE form):
|
|||||||
missing in the source, leave it missing. Do not fabricate
|
missing in the source, leave it missing. Do not fabricate
|
||||||
authors, publishers, years, page numbers, URLs, or DOIs.
|
authors, publishers, years, page numbers, URLs, or DOIs.
|
||||||
|
|
||||||
|
18. PUBLISHER NAMES must be in FULL canonical form. Do NOT abbreviate.
|
||||||
|
If the messy input contains an abbreviated form, EXPAND it to the
|
||||||
|
canonical full name. Examples:
|
||||||
|
- "U of Chicago Press" → "University of Chicago Press"
|
||||||
|
- "OUP" → "Oxford University Press"
|
||||||
|
- "CUP" → "Cambridge University Press"
|
||||||
|
- "HMC" → "Houghton Mifflin Company"
|
||||||
|
- "Random House" stays "Random House" (already canonical)
|
||||||
|
- "Pantheon Books" stays "Pantheon Books" (already canonical)
|
||||||
|
The exception: publishers whose canonical self-presentation
|
||||||
|
legitimately uses initials (e.g., "MIT Press", "ALA Editions",
|
||||||
|
"MLA") stay in that form. When in doubt, prefer the longer
|
||||||
|
form over the abbreviation.
|
||||||
|
|
||||||
Output ONLY the single reformatted note. No preamble, no explanation,
|
Output ONLY the single reformatted note. No preamble, no explanation,
|
||||||
no leading number, no code fences.
|
no leading number, no code fences.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -53,6 +53,38 @@ def test_system_prompt_mentions_no_ibid():
|
|||||||
assert "Ibid" in SYSTEM_PROMPT_NOTES or "ibid" in SYSTEM_PROMPT_NOTES.lower()
|
assert "Ibid" in SYSTEM_PROMPT_NOTES or "ibid" in SYSTEM_PROMPT_NOTES.lower()
|
||||||
|
|
||||||
|
|
||||||
|
def test_system_prompt_mentions_publisher_full_form():
|
||||||
|
"""Surfaced by chunk 1 smoke test on chapter_first_doyle: the formatter
|
||||||
|
preserved 'U of Chicago Press' from the messy input instead of
|
||||||
|
expanding it to 'University of Chicago Press'. v1 formatter.py rule 14
|
||||||
|
covers this; the v2 prompt must too. The rule is "publisher names must
|
||||||
|
be in full canonical form, not abbreviated."
|
||||||
|
"""
|
||||||
|
lower = SYSTEM_PROMPT_NOTES.lower()
|
||||||
|
assert "publisher" in lower
|
||||||
|
# Either "do not abbreviate" or "full canonical" or "full form" — any
|
||||||
|
# phrasing that conveys the prohibition.
|
||||||
|
assert (
|
||||||
|
"do not abbreviate" in lower
|
||||||
|
or "not abbreviated" in lower
|
||||||
|
or "full canonical" in lower
|
||||||
|
or "full form" in lower
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_system_prompt_mentions_ed_invariant_for_multiple_editors():
|
||||||
|
"""Surfaced by chunk 1 smoke test on chapter_first_doyle: the formatter
|
||||||
|
pluralized 'ed.' to 'eds.' when there were two editors. CMOS NB form
|
||||||
|
uses 'ed.' invariantly regardless of editor count. The prompt must
|
||||||
|
explicitly state this so the model does not grammatically pluralize
|
||||||
|
by default.
|
||||||
|
"""
|
||||||
|
# Search for an explicit mention of "eds." being wrong, OR an explicit
|
||||||
|
# statement that "ed." is invariant / not pluralized.
|
||||||
|
lower = SYSTEM_PROMPT_NOTES.lower()
|
||||||
|
assert "eds." in lower or "invariant" in lower or "do not pluralize" in lower or "not pluralize" in lower
|
||||||
|
|
||||||
|
|
||||||
def test_build_user_message_contains_the_messy_input():
|
def test_build_user_message_contains_the_messy_input():
|
||||||
msg = build_user_message("yu, charles. interior chinatown. 2020, 45")
|
msg = build_user_message("yu, charles. interior chinatown. 2020, 45")
|
||||||
assert "yu, charles. interior chinatown. 2020, 45" in msg
|
assert "yu, charles. interior chinatown. 2020, 45" in msg
|
||||||
|
|||||||
Reference in New Issue
Block a user