--- type: overview summary: An index is an ordinary public document that only ever grows — what this repo publishes to applications, and what it consumes from NextGraph triggers: keywords: [index, indexing, curate, curation, deposit, depositor, entry, descriptor, reference, only-grows] paths: - "src/**" - "test/**" - "e2e/**" - "README.md" vocabulary: - term: index gloss: an ordinary public document that holds one entry per indexed object, plus its own field declaration not: [catalogue, registry, listing] - term: deposit gloss: a bare object reference left in an index document's inbox — open to anyone, and never an instruction not: [message, submission, request] - term: curate gloss: the owner resolving the references deposited on its index and adding what it can not: [process, ingest, sync] - term: entry gloss: what an index holds for one indexed object — its NURI and its value for the index's field not: [row, record, item] --- # indexing — an index built on top of NextGraph, and the boundaries around it NextGraph has no indexing concept and will not grow one, so this is a construction **above** it, in its own repository, and the dependency runs one way only: this repo depends on `@ng-eventually/polyfill`, and the polyfill must never learn anything about indexing. An index is an **ordinary document** in its creator's public store. What makes it an index is that an application references its NURI in its own source. Anyone may hand it a reference by depositing into its inbox; its owner resolves those references itself and adds what it finds. **An index only ever grows** — no removal was ever built, and none is planned. ## Roles at the repository boundary This repo is a **provider** of `indexing-layer`, which the Festipod application consumes, and a **consumer** of two engagements published by `ng-eventually-js`: `polyfill-surface` and `ng-e2e-helpers`. Each pair lives in its own interface folder: the engagement is pulled and never hand-edited, our declaration beside it is ours to keep current. Frictions are the main path for telling a provider what we need. They go in our `usage_` leaf, the signal goes out of band, and the entry is pruned once the engagement absorbs it. ## Read first - `indexing-layer/contract_indexing-layer` — what an application may rely on from `@ng-helpers/indexing`. - `polyfill-surface/usage_ng-helpers` — the exact polyfill entries this layer stands on, and what it had to build for want of them. - `ng-e2e-helpers/usage_ng-helpers` — what our end-to-end suite calls, and the peer-dependency constraint it must respect.