You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Restore the public pagination regression contract so the scheduled/full Django gate reflects the accepted shared pagination markup on current main. This is a test-contract correction only: the rendered paginator already intentionally carries the accepted interactive-lift design-system token.
Evidence and ownership boundary
On current origin/mainface8e4808d65afbf0374d1ced7a88079950d663, content/tests/test_public_pagination.py:423-424 still counts the obsolete exact strings:
class="filter-pill pagination-number"
class="filter-pill pagination-step"
templates/public/_pagination.html:46,52,62 emits the accepted classes with interactive-lift appended.
The token was introduced by the accepted a5d08f1 (“Unify clickable card and control interactions”), not by a paginator behavior change.
Scheduled run 33513872199 and the integrated v3 Django evidence reproduce the failure; the first failing assertion is line 423.
Change only content/tests/test_public_pagination.py:
Update the numeric-control count to match class="filter-pill pagination-number interactive-lift" and retain the expected count of 7.
Update the direction-control count to match class="filter-pill pagination-step interactive-lift" and retain the expected count of 2.
Keep every other pagination assertion unchanged, including control counts, labels, aria-current, arrows, page-window/ellipsis behavior, URLs, canonical/SEO/cache semantics, boundary behavior, empty/single-page behavior, and source/design-system guards.
The two rendered-class assertions recognize the accepted interactive-lift token and still prove exactly 7 numeric controls and 2 direction controls on the 12-page middle state.
No assertion is weakened by removing the control class, reducing the expected count, using a broad substring that can match unrelated markup, or changing the paginator to satisfy the test.
content.tests.test_public_pagination passes on the frozen candidate, including all existing query grammar, status, canonical, cache, accessibility, URL-window, boundary, and source-contract cases.
No test deletion, skip, xfail, quarantine, timeout/retry change, assertion weakening, or broad test refactor.
No commit, push, merge, deployment, or workflow rerun as implementation evidence before engineer/tester/PM gates.
Dependencies and handoff
No implementation dependency. This is a small independent testing/frontend lane and may be implemented without waiting for #261 because the changed file does not overlap #261's allowed paths. Final release verification remains subject to the common green-base/order recorded in #253/#261 and the release coordinator.
The engineer works uncommitted in an isolated worktree, posts the versioned handoff, and freezes it. A separate tester performs the focused and graph-selected checks. PM accepts only from a passing tester envelope; the orchestrator then owns commit/merge/push under _docs/PROCESS.md.
Product outcome
Restore the public pagination regression contract so the scheduled/full Django gate reflects the accepted shared pagination markup on current
main. This is a test-contract correction only: the rendered paginator already intentionally carries the acceptedinteractive-liftdesign-system token.Evidence and ownership boundary
origin/mainface8e4808d65afbf0374d1ced7a88079950d663,content/tests/test_public_pagination.py:423-424still counts the obsolete exact strings:class="filter-pill pagination-number"class="filter-pill pagination-step"templates/public/_pagination.html:46,52,62emits the accepted classes withinteractive-liftappended.a5d08f1(“Unify clickable card and control interactions”), not by a paginator behavior change.test_archive_row.pyandtest_collection_hub.py. Keep failed structured-component evidence schema-valid #280 is CI evidence orchestration and explicitly excludes product/test pagination changes. This issue therefore owns only the separatetest_public_pagination.pystale expectations.Scope
Change only
content/tests/test_public_pagination.py:class="filter-pill pagination-number interactive-lift"and retain the expected count of 7.class="filter-pill pagination-step interactive-lift"and retain the expected count of 2.aria-current, arrows, page-window/ellipsis behavior, URLs, canonical/SEO/cache semantics, boundary behavior, empty/single-page behavior, and source/design-system guards.Acceptance criteria
interactive-lifttoken and still prove exactly 7 numeric controls and 2 direction controls on the 12-page middle state.content.tests.test_public_paginationpasses on the frozen candidate, including all existing query grammar, status, canonical, cache, accessibility, URL-window, boundary, and source-contract cases.make format-check,make lint, and the applicable versioned verification checks; an independent tester recomputes the plan and verifies the same frozen candidate. Final full-Django/full-regression evidence must be green after the separately owned Reconcile non-reproducible public projection after face8e4 #253/Restore face8e4 formatting, typing, and focused content gates #261 and other release blockers are repaired; this issue never waives a red gate.not_applicable: only a regression test file changes and no rendered product input changes.Non-goals
Dependencies and handoff
No implementation dependency. This is a small independent testing/frontend lane and may be implemented without waiting for #261 because the changed file does not overlap #261's allowed paths. Final release verification remains subject to the common green-base/order recorded in #253/#261 and the release coordinator.
The engineer works uncommitted in an isolated worktree, posts the versioned handoff, and freezes it. A separate tester performs the focused and graph-selected checks. PM accepts only from a passing tester envelope; the orchestrator then owns commit/merge/push under
_docs/PROCESS.md.