--- type: overview summary: What an application may rely on from @ng-eventually/sdk, and what it will have to delete triggers: keywords: [polyfill, sdk, surface, contract, publish, published, entry, export, migration, unlearn, consumer, app-facing] paths: - "packages/sdk/src/index.ts" - "packages/sdk/src/surface/**" - "packages/sdk/README.md" - "examples/notebook/**" - "docs/api-contract.md" vocabulary: - term: reference gloss: a NURI that names a document and grants nothing — what an application circulates not: [link, lien, share-link] see: contract_sdk-surface - term: ReadCap gloss: upstream's word for what opens a document — a reference carrying its secret not: [token, credential, permission] - term: polyfill-era gloss: a published symbol with no counterpart in the target SDK, deleted at migration not: [transitional, shim-only] see: knowledge_what-an-app-deletes-at-migration --- # app-contract — the boundary between this library and the applications that use it This library exists so an application can be **written today against the NextGraph that does not ship yet**, and keep its code when it does. Everything under this concept governs that boundary: what the package publishes, what a caller may rely on, what it must not, and what disappears at migration. The distinguishing question, asked at every surface choice: **would this make a caller learn something it has to UNLEARN?** If yes it is a deviation, whatever it buys — see `rule_would-the-caller-unlearn-it`. This repo is the **provider** of `contract_sdk-surface`; consuming applications live in other repos and pull it. The per-symbol ruling, with an epistemic label on every target-side claim, stays here in `docs/api-contract.md` — that is maintainer material, not the engagement. ## Read first - `contract_sdk-surface` — the engagement itself, written from the caller's point of view. - `rule_would-the-caller-unlearn-it` — the test that decides what may be published. - `knowledge_what-an-app-deletes-at-migration` — the two fates a published symbol can have.