diff --git a/docs/reference/python-api/result-analysis.md b/docs/reference/python-api/result-analysis.md index eb6a4e5189..bbebfe5c5b 100644 --- a/docs/reference/python-api/result-analysis.md +++ b/docs/reference/python-api/result-analysis.md @@ -609,7 +609,7 @@ Removes or replaces identifying data in results so they can be shared. -**Returns:** `str`, an identifier used in anonymized results. The value may recur across related output and should not be treated as an anonymity or trust signal. +**Returns:** `str`, an identifier used in anonymized results. The value recurs across related output and should not be treated as an anonymity or trust signal. ```python from benchbox.core.results.anonymization import AnonymizationManager @@ -660,7 +660,7 @@ True -Anonymizes a tuning companion payload while preserving the corresponding identifier values used in the related result payload. +Anonymizes a tuning companion payload with identifier values consistent with the related result payload. | Name | Type | Default | Meaning | | --- | --- | --- | --- | diff --git a/tests/unit/scripts/test_site_parity.py b/tests/unit/scripts/test_site_parity.py index d9d3c53058..986d4af54f 100644 --- a/tests/unit/scripts/test_site_parity.py +++ b/tests/unit/scripts/test_site_parity.py @@ -257,6 +257,20 @@ def test_project_allowance_preserves_legacy_atom_ids_and_allows_canonical_links( assert allowed["canonical-atom-entry-links"]["owner_approval"] == "approved" +def test_canonical_atom_allowance_rejects_id_loss_and_canonical_link_loss() -> None: + rules = site_inventory.load_allowed_differences(site_parity.DEFAULT_ALLOWED) + report = {kind: [] for kind in site_inventory.REPORT_KINDS} + report["feed regression"] = [ + "/blog/atom.xml: entry https://benchbox.dev/blog/blog/a.html removed", + "/blog/atom.xml: entry https://benchbox.dev/blog/blog/a.html lost link /blog/a.html", + ] + + remaining, allowed = site_inventory.apply_allowed_differences(report, rules) + + assert allowed["canonical-atom-entry-links"] == [] + assert remaining["feed regression"] == report["feed regression"] + + def test_browser_failures_fail_the_report(tmp_path: Path) -> None: baseline = _site(tmp_path / "base", theme=False, feed_link="/blog/a.html") candidate = _site(tmp_path / "cand", theme=False, feed_link="/blog/a.html") diff --git a/website/src/lib/atom.ts b/website/src/lib/atom.ts index 0eb00b9b6a..ba4d7385ed 100644 --- a/website/src/lib/atom.ts +++ b/website/src/lib/atom.ts @@ -2,6 +2,7 @@ import { atomTimestamp, BLOG_BASE_URL, BLOG_TITLE, feedCategory, FEED_LENGTH, ne const SITE_ORIGIN = "https://benchbox.dev"; const GENERATOR = { uri: "https://astro.build/", name: "Astro" }; +const LEGACY_FEED_ID_BASE = `${BLOG_BASE_URL}blog/`; export function feedEntryUrl(post: Pick): string { return `${BLOG_BASE_URL}${post.slug}.html`; @@ -59,7 +60,7 @@ function summaryOf(post: BlogPost): string { function entry(post: BlogPost): string { const stamp = atomTimestamp(post.date); - const entryId = `${BLOG_BASE_URL}blog/${post.slug}.html`; + const entryId = `${LEGACY_FEED_ID_BASE}${post.slug}.html`; const url = feedEntryUrl(post); const lines = [ " ",