Settle what interchangeability means, and ask for what is missing

Opens the brief that holds this binding to `@activitypods/refine-providers`,
with which it must be interchangeable, and settles its six questions. The
decisive finding of the comparison: the reference asks its server for almost
none of what a Refine resource needs — filters, sorting, pagination and
totals are computed in memory there too — so most of the gap is this
package's own work rather than the polyfill's.

What the engagement is now asked for, in order: a shape-typed write and
removal that can be awaited outside React, a call that closes a session, a
display name, and a write-ownership predicate that would let an interface
hide a control instead of letting it fail.

Two corrections worth their own mention, both found by review rather than
by reading further:

- a non-guarantee about how strongly the upstream authenticates was being
  allowed to dictate the SHAPE of this binding, which had `login` and
  `logout` published as having no surface. Opening a wallet is the act the
  target will have, so the auth provider is wired to it and the missing
  closing call is a request, not an absence of analogue;
- what is internal to the emulation must not be known in this repository at
  all. Restating it here would duplicate a claim this package cannot verify
  and would teach an application a distinction that disappears at migration.
This commit is contained in:
Sylvain Duchesne
2026-10-01 19:54:45 +02:00
parent 6875d8b353
commit 259d7fe58d
3 changed files with 100 additions and 12 deletions
@@ -2,7 +2,7 @@
type: overview
summary: How a Refine application's resources are bound to NextGraph documents through the eventual SDK — and what that binding may rely on
triggers:
keywords: [refine, provider, dataProvider, authProvider, liveProvider, resource, getList, getOne, shapeTypes, shape, scope, store, polyfill, eventually]
keywords: [refine, provider, dataProvider, authProvider, liveProvider, accessControlProvider, resource, getList, getOne, shapeTypes, shape, scope, store, polyfill, eventually, activitypods, interchangeable, equivalence]
paths:
- "src/**"
- "package.json"
@@ -25,3 +25,4 @@ The distinguishing rule: **nothing here compensates for the current state of Nex
- `polyfill-surface/contract_polyfill-surface` — the engagement this package consumes (pulled, version-pinned).
- `polyfill-surface/usage_refine-providers-eventually` — what this package actually relies on, and what it still needs.
- `brief_2026-10-01_interchangeability-with-activitypods` — the bar this binding is held to, and the questions still open on it.