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:
@@ -53,6 +53,38 @@ def test_system_prompt_mentions_no_ibid():
|
||||
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():
|
||||
msg = build_user_message("yu, charles. interior chinatown. 2020, 45")
|
||||
assert "yu, charles. interior chinatown. 2020, 45" in msg
|
||||
|
||||
Reference in New Issue
Block a user