From 1621d0d502c7b4887386214d34136b4c93653fc6 Mon Sep 17 00:00:00 2001 From: cmos dev Date: Fri, 10 Apr 2026 21:31:17 -0400 Subject: [PATCH] iter 1: preserve date qualifiers in web entries First real loop iteration found that GPT-5 silently drops date qualifiers ("Effective", "Published", "Accessed", etc.) when reformatting web sources. The field diff was satisfied because the canonical date field did not include the qualifier, but the canary exact-match axis caught the regression. Two fixes, per the canary-upstream policy: 1. Tighten the web-page exemplar canonical: date field now includes the "Effective" qualifier so the field diff will catch future regressions without relying on the canary. 2. Add SYSTEM_PROMPT rule 12 instructing the formatter to preserve semantic date qualifiers from the input. After these fixes: scalar 1.000, canary exact-match 1.000 on all three seed exemplars. --- exemplars/web_page_google_privacy.toml | 6 +++++- src/cmos/formatter.py | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/exemplars/web_page_google_privacy.toml b/exemplars/web_page_google_privacy.toml index d83f9bc..2dfed15 100644 --- a/exemplars/web_page_google_privacy.toml +++ b/exemplars/web_page_google_privacy.toml @@ -12,5 +12,9 @@ expected_bibliography = "Google. \"Privacy Policy.\" Privacy & Terms. Effective author = "Google" title = "Privacy Policy" site = "Privacy & Terms" -date = "November 15, 2023" +# Include the date qualifier ("Effective", "Published", "Accessed", etc.) in +# the canonical date field. CMOS 18 preserves these qualifiers in web-source +# entries; dropping them is a real regression even though the resulting +# string is structurally well-formed. +date = "Effective November 15, 2023" url = "https://policies.google.com/privacy" diff --git a/src/cmos/formatter.py b/src/cmos/formatter.py index f7c435c..715eda9 100644 --- a/src/cmos/formatter.py +++ b/src/cmos/formatter.py @@ -73,6 +73,14 @@ Rules you must follow (CMOS 18th edition specifically): 11. Web page format: Author-or-Organization. "Page Title." Site Name. Effective/Published Date. URL. +12. PRESERVE date qualifiers from the input. If the source provides a + qualified date such as "Effective November 15, 2023", "Published March + 3, 2024", "Accessed October 1, 2022", "Posted June 7", "Last modified + ...", or "Updated ...", keep the qualifier word in the output — do not + silently drop it. The qualifier is semantically meaningful: "Effective" + dates a policy's activation, "Accessed" marks when the researcher saw + the page, etc. CMOS 18 preserves these distinctions. + Output ONLY the single reformatted entry. No preamble, no explanation. """