Skip to content

Align user-data search and pagination with HaveAPI - #496

Open
Kerrycek wants to merge 5 commits into
mainfrom
codex/user-data-api-contract
Open

Kerrycek wants to merge 5 commits into
mainfrom
codex/user-data-api-contract

Conversation

@Kerrycek

@Kerrycek Kerrycek commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Latest isolated verification / Nejnovější izolované ověření

Real VM verification now passes on integrated UI 3ac1be67 (this PR's product
code c01f09ff) and API44 320af0e15. Four configured browser variants
(cs/en, desktop/mobile) each verify member and administrator views: three
pages (25/25/1), format/local search, owner scope, end, reload and browser Back.
The actual API rejects foreign reads and malformed cursors. All 212 disposable
templates were deleted and each deletion verified. No VPS deployment occurred.
KB runner: codex/clankerdev-kb / 5f616e9; receipts retain exact UI/API pins.
The new PR commit 3fd3a5dd only records this evidence. Broader #189 resources,
live adversarial timestamps and shared API rollout remain separate gates.

Skutečné VM ověření prošlo na uvedených přesných pinech ve čtyřech kombinacích
jazyka a velikosti obrazovky, vždy jako člen i administrátor. Ověřené jsou tři
stránky, filtry, vlastník, konec seznamu, reload/Zpět a skutečné chybové odpovědi
API. Všech 212 syntetických šablon je prokazatelně smazaných. Další kurzorové
zdroje, adversariální časová data a sdílené nasazení nadále nejsou hotové.


English

Fixes #241. User-data search sent unsupported q, Next used a descending cursor against id > from_id, and exact final pages exposed a false Next action. This fresh PR replaces those behaviors with supported owner/format parameters and bounded client-side label/exact-ID search; it does not reopen or merge #242.

The adapter validates observed ascending IDs, retains one hidden matching row for Next, and stops with an explicit error on malformed pages, request failure, or an inconclusive 1,000-row scan (plus one existence probe). Query cancellation and explicit advanced-filter confirmation prevent obsolete scans and per-keystroke request chains. Fresh forward cursors, empty-page recovery, accessible filters and wrapping controls preserve member/admin navigation on mobile.

Verification:

  • npm test: 1,441 tests passed, including adapter pagination and two hook regressions that fail before the fix.
  • Targeted Playwright on Chromium and mobile Chrome: 52 relevant scenarios across user-data, VPS, exports and known devices passed; all 14 user-data cases were also repeated successfully on Linux. Coverage includes member/admin, cs/en, 390 px width, later-batch matches, scope, URL history/reload, cancellation, exact end, stale forward edge, errors/retry, cap boundary and last-row deletion.
  • npm run typecheck, npm run lint, npm run audit:i18n, npm run audit:i18n-structure, npm run audit:component-contracts, npm run audit:mutations:check, and npm run build passed.
  • audit:structural still fails on unchanged main; reproduced from a clean archive of base fbb02a0 with identical existing violations (62 files over 500 lines vs budget 53 and unrelated cast regressions). No baseline or CI checks were changed.

Limitations of the earlier tests below: these are fixture tests. The new isolated evidence is described above. The currently deployed API lacks explicit ORDER BY id ASC; the authorized backend PR44 adds it at 320af0e15. Promotion requires the matching API ordering change; a frontend validator cannot detect every omitted row. #189 remains a beta gate. The search cap is explicit and can require a narrower format scope. See docs/contracts/user-data-pagination.md for the contract, evidence checklist and minimal backend proposal. No upstream PR or deployment is included.

URL-restoring keyset lists derive their cursor from the committed router URL during render, preventing page 1 content from remaining under the restored page 2 URL. Empty-page recovery runs once per result while navigation is pending. These changes also affect the opt-in VPS, exports and known-device lists covered above.

Validation notes: the first CI smoke run failed on history navigation before the fix. One local unit run hit an unrelated asynchronous advisory assertion; its isolated suite and the subsequent complete unit run passed without changing that test. GitHub static/unit and Smoke E2E passed for the tested product head 67b0c2d3; the follow-up only updates the backend dependency documentation.

Česky

Oprava #241 odstraňuje nepodporované q, obrácený kurzor a falešné tlačítko Další na poslední plné stránce. Hledání názvu/přesného ID probíhá omezeným čtením podporovaných API stránek se zachováním vlastníka a formátu. Staré PR #242 se neobnovuje ani nemerguje.

Nové řešení kontroluje vzestupná ID, skryje záznam sloužící k určení pokračování, ruší zastaralé požadavky a při neúplném hledání nebo chybě ukáže výslovnou chybu. Pokročilé filtry se potvrzují najednou. Opravené jsou navazující kurzory, návrat po smazání posledního řádku, přístupné názvy filtrů a mobilní zalamování.

Prošlo 1 441 unit testů, 52 relevantních Playwright scénářů pro user-data/VPS/exporty/známá zařízení včetně desktopu/mobilu, cs/en a member/admin, navíc 14 opakování user-data na Linuxu. Prošly typecheck, lint, uvedené audity a build. Strukturální audit má shodné již existující chyby i na čistém výchozím main; kontroly se neobcházely.

Backendová záruka pořadí (#189) je připravena ve schváleném API PR44, commit 320af0e15. Nové společné izolované ověření je uvedeno nahoře; sdílené API zatím tuto změnu neobsahuje. Fixture testy toto nenahrazují. Limit hledání je přiznaný; případně je nutné zúžit formát. Součástí není upstream PR ani nasazení.

Kurzor seznamů s obnovou URL se bere z potvrzené URL při renderování, což opravuje starý obsah po navigaci Zpět. Návrat z prázdné stránky se neopakuje během čekání na navigaci. Dva nové regresní testy před opravou selhaly. Původní CI selhalo na historii; na testovaném produktovém commitu 67b0c2d3 prošly static/unit i Smoke E2E; následná změna upravuje pouze dokumentaci backendové závislosti. Jeden dřívější lokální unit běh selhal na nesouvisející async assertion advisory; izolovaná sada a následný celý běh prošly bez změny tohoto testu.

Current release integration / Integrace aktuálního release

Merged current main 67bbb6bb into this branch (c01f09ff) without conflicts.
Combined verification with the dependent IP audit: 44 targeted unit tests,
14 user-data Playwright cases (cs/en, member/admin, desktop/mobile), typecheck,
lint and build passed. This earlier run is fixture evidence; see the later actual API44 evidence above.

Aktuální main 67bbb6bb je zapojen bez konfliktů. Společně s navazující historií
IP prošlo 44 unit testů, 14 user-data browser scénářů, typecheck, lint a build.
Nové skutečné ověření user-data s API44 je uvedeno nahoře; další zdroje zůstávají otevřené.

Remove unsupported server search and use a bounded, cancellable scan with
ascending cursors and lookahead. Preserve owner scope and navigation,
recover empty pages, and make advanced filters explicit and accessible.

Cover API failures, scan boundaries, cs/en member/admin flows and mobile
layout. Document the remaining upstream ordering guarantee and VM gate.
CI caught a history entry showing page-one rows at a page-two URL. Read
the committed cursor during render for URL-restoring lists rather than
waiting for an effect to repair an optimistic local index.

Request empty-page recovery only once per result while navigation is
pending. Add regression tests for the first render and filter restoration.
Record the authorized backend PR and retain the real API/UI integration
gate so fixture evidence cannot be mistaken for server certification.
Validate the pending cursor adapter with the deployed auth and resource
fixes before dependent IP-history work and isolated API integration.
Document the exact joint UI/API pins and four browser variants, including
member/admin owner boundaries and verified cleanup of 212 templates.
Keep broader cursor and adversarial timestamp coverage explicitly pending.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make user-data template filters and pagination match HaveAPI

1 participant