# Review information and listing

What you give beside your code: five example days, three negative cases, each source's terms, release notes, five attestations, and the listing readers see.

A person reviews every plug-in, reading what machines already checked against
your output in the locked room. Prepare it while your fixtures are fresh. An optional `review.json` at the top of
your folder, outside the digest, fills in the portal's form (`examples`,
`negatives`, `sources`, `releaseNotes`, `notes`). DOP Economy's:

```json title="plugins/dop-economy/review.json" source=plugins/dop-economy/review.json
{
  "examples": [
    { "date": "2026-09-28", "series": "usd-dop", "expect": { "compra": 59.27, "venta": 59.56 }, "note": "A business day." },
    { "date": "2026-09-25", "series": "usd-dop", "expect": { "compra": 59.28, "venta": 59.65 }, "note": "The Friday whose rate is in force over the weekend." },
    { "date": "2026-09-23", "series": "usd-dop", "expect": { "compra": 59.35, "venta": 59.79 }, "note": "The business day before the 24 September holiday." },
    { "date": "2026-09-15", "series": "usd-dop", "expect": { "compra": 58.76, "venta": 59.08 } },
    { "date": "2008-03-04", "series": "usd-dop", "expect": { "compra": 33.85, "venta": 33.98 }, "note": "From the start of the workbook's history, as the listing shows it." }
  ],
  "negatives": [
    { "kind": "no-record", "date": "2026-09-24", "series": "usd-dop", "why": "Our Lady of Las Mercedes, a public holiday: the Banco Central publishes no rate." },
    { "kind": "in-force", "date": "2026-09-27", "from": "2026-09-25", "series": "usd-dop", "why": "A Sunday shows Friday's rate, muted." },
    { "kind": "source-fails", "case": "renamed-sheet", "why": "A renamed sheet stops the run with its reason, so nothing wrong is written." }
  ],
  "sources": [
    {
      "source": "rate",
      "holder": "Banco Central de la República Dominicana",
      "terms": "https://opendatacommons.org/licenses/odbl/1-0/",
      "basis": "open-licence",
      "evidence": "datos.gob.do publishes the Banco Central's reference-rate series under the Open Database License 1.0. The current workbook on cdn.bancentral.gov.do states no licence of its own."
    }
  ],
  "releaseNotes": {
    "en": "DOP Economy in the Plug-in Store: a listing with example days. The rate on your days is the same as before.",
    "es": "Economía RD en la tienda de complementos: una ficha con días de ejemplo. La tasa en tus días es la misma de antes."
  },
  "notes": "Kanboombo's own plug-in, moving from the release folder to the store (docs/plans/plugin-store.md R5). The code is the 1.1.0 already approved at host › Plug-ins."
}
```

## Five example days {#example-days}

Each with its **date**, **series**, what you **expect** (a value's figures, an
event's state and title, an item's title) and an optional **note**. Each is
checked against what your fixtures print, so you know before a person does.
Show each series and each thing your fetcher does: a revision, a scheduled
event, a link. Harbour Almanac's 10 September shows August's catch and July's
revised:

```day title="Harbour Almanac on Thu 10 Sep, as the app draws it"
Thu 10 Sep
High and low tide · High 2.37, Low 0.47 · +7.24% · Harbour Almanac
Fish landed · 2026-07 · Landed 461.60 · −0.94% · Harbour Almanac
Fish landed · 2026-08 · Landed 399.00 · −14.38% · Harbour Almanac
```

## Three negative cases {#negative-cases}

Each is checked like an example day.

- **A day with no record**, and why: for DOP Economy, Thursday 24 September
  2026, a holiday with no rate.
- **A day where a value is in force**, and the date it comes from: DOP
  Economy's Sunday 27 September shows Friday's rate, muted:

```day title="DOP Economy on Sun 27 Sep, as the app draws it"
Sun 27 Sep
Dollar · Buy 59.28, Sell 59.65 · Rate of Fri 25 Sep · Banco Central
```

- **A source that fails**: at least one `fixtures/runs/<case>/` with an
  `expect.json` ([Fixtures](/developers/plugins/build/fixtures/)), which `check`
  already holds to it with
  [PLG-RUN-EXPECTED-FAILURE](/developers/plugins/publish/submission-errors/#plg-run-expected-failure).

## Each source's terms {#source-terms}

For each source: its **holder**, its **terms**, your **basis** and your
**evidence** (the licence on the holder's page, the permission you were
given).

| Basis | It means |
|---|---|
| `open-licence` | The holder publishes it under an open licence that allows it, such as the ODbL. |
| `permission` | The holder gave you permission. Keep it in writing. |
| `public-domain` | Nobody holds rights in it. |
| `own-data` | Your organization is the holder. |

When the terms are unclear: [Data rights](/developers/plugins/plan/data-rights/#unclear).

## Release notes {#release-notes}

What changed, in each language your plug-in speaks; every update needs them.
Optionally, notes for the reviewer and a video link.

## Attestations {#attestations}

Your organization makes five statements about each version; submit is refused
until all five are given:

| Code | You state that |
|---|---|
| `A-RIGHTS` | You may publish every source's data this way: its holder's licence allows it, the holder gave you permission, it is in the public domain, or it is your own. |
| `A-AUTHORITATIVE` | Each source is the holder's own publication, not a copy of it someone else keeps. |
| `A-NO-PERSONAL-DATA` | Your records name no private person and carry nothing that identifies one. |
| `A-NO-NETWORK` | Your fetcher reads only the files Kanboombo hands it, and never tries the network. |
| `A-NEUTRAL` | Your records report what the source says. Titles inform; they do not persuade, sell or advertise. |

A plug-in has no network or keys, so the form never asks for an account,
password or key for a reviewer; a plug-in that needs one is not one contract 1
can run.

## The listing {#listing}

Readers have a minute to decide whether your plug-in belongs on their days:
the listing is that minute. `listing.json` and `listing/icon.png` sit outside
the code digest, with a digest and approval of their own; readers see only an
approved listing, and `check` holds it to the store's rules
([DOP Economy's](/developers/plugins/examples/dop-economy/#its-data)).

| Field | What it holds |
|---|---|
| `listing`, `plugin`, `publisher.domain` | `1`, your id, your verified domain |
| `tagline`, `description` | Per language, English required: a line of 80 characters; plain text of 2,000 |
| `category` | `economy`, `public-life`, `faith`, `sports`, `weather`, `science`, `culture` or `work` |
| `keywords` | At most 12, each at most 30 characters |
| `links` | `privacy`, required; `homepage`, optional; `support`, a `url` or an `email`, required. Links are https |
| `sources` | For a declared source: its `title` (120 characters), `page` and `licence` (`name`, 60 characters, and `url`) |
| `examples` | 1 to 3 dates, each with an optional `caption` per language (120 characters) |
| `listing/icon.png` | A 256 × 256 PNG, at most 64 KB |

Example days are drawn from your verified output: a typical day, a quiet one,
one that shows what it is for; a date with nothing refuses the listing
([PLG-LISTING-EXAMPLE](/developers/plugins/publish/submission-errors/#plg-listing-example)).
Your series and hosts come from the approved manifest, never the listing.
Installs show rounded (100+, 1,000+, 10,000+), and not at all below 100.
