Skip to content

feat(research): add project list presentation model#52

Draft
hubab1 wants to merge 3 commits into
34a-research-project-ui-foundationfrom
34b-research-project-list-model
Draft

feat(research): add project list presentation model#52
hubab1 wants to merge 3 commits into
34a-research-project-ui-foundationfrom
34b-research-project-list-model

Conversation

@hubab1

@hubab1 hubab1 commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a closure-injected, @MainActor observable project-list presentation model
  • preserve prior rows across reload and pagination failures with exact continuation offsets and ID deduplication
  • add stable project/keyword draft UUIDs for idempotent persistence retries
  • map store, provider, and Apple Ads issues to fixed redacted user-facing messages and truthful accessibility descriptions

Correctness

  • stale or cancelled loads cannot overwrite a newer publication
  • mutations check cancellation before persistence but never report cancellation after a successful commit return
  • a mutation before the initial page, or one that supersedes an in-flight load, exposes requiresReload and blocks unsafe continuation paging until recovery succeeds
  • project revisions advanced by detail mutations can be reconciled without accepting older or same-ID reincarnated snapshots
  • canceled dependencies that surface a non-cancellation error restore the prior load state
  • stale destructive mutations surface a conflict and are never retried automatically
  • creating and deleting rows preserve or adjust valid pagination offsets instead of hiding later pages

Validation

  • 10 focused presentation-model tests passed
  • 427 tests pass at this stack boundary; 445 passed at the current stacked UI head
  • signed Debug build passed
  • strict deep code-sign verification passed
  • independent review findings were fixed and the final P1/P2 review was clear
  • GitHub Actions is green for the amended head

Review gate

This is a stacked draft on PR #51 / 34a-research-project-ui-foundation. It is a presentation-only foundation with no UI entry point, provider call, or live-store launch. The inherited V5 persistence stack remains manually gated.

Implementation is independent; no external co-author applies.

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.

1 participant