Fruitful Docs
Get started

Publish it to the registry

Materialize an exact release, publish it as a candidate, and follow it through review.

A package reaches people through the registry. Publishing is three separate steps with a human gate between them: publish a candidate, approve it, promote it.

Materialize the release

Before publishing, build the exact release into a directory and look at it:

yarn fruitful plugin release feed-packages/hacker-news --out /tmp/hn-release

The directory has three parts:

  • runtime/ is what users' devices download: the manifest, the bundled transform, the surfaces.
  • review/ is what reviewers see: fixtures, expectations, evidence. It never ships to users.
  • attestation.json binds both by digest.

The command refuses a stale bundle or stale generated types, so run plugin generate --write and lexicon generate --write first if you changed anything.

Publish a candidate

Sign in if you have not:

yarn fruitful auth login

Publishing is a dry run until you pass --apply:

yarn fruitful registry publish-first-party --package com.ycombinator.news
yarn fruitful registry publish-first-party --package com.ycombinator.news --apply

This creates an exact candidate evaluation: the resolution digest, the runtime digest, and the review digest are all recorded. Nothing resolves to it yet.

Today the registry publishes the maintained first-party inventory in the repository, so a new package lands through a pull request to feed-packages/. Publishing from outside the repository is being built on the same commands.

Follow it through review

yarn fruitful registry status --package com.ycombinator.news

Status is read-only and shows releases, evaluations, and which tag each resolves to. Approval and promotion are operator commands that name every digest they cover, and are dry runs until --apply --confirm-stage <stage>:

yarn fruitful registry approve --package com.ycombinator.news --evaluation <id> \
  --resolution <digest> --runtime <digest> --review <digest>
yarn fruitful registry promote --package com.ycombinator.news --evaluation <id> \
  --resolution <digest> --runtime <digest> --review <digest>

Once promoted, Explore offers the feed and new installs resolve to that exact release. Existing installs keep the resolution they have until they update; a resolution never changes under a device.

Where to go next

  • Guides solve one task each, in the order the manifest reads.
  • Concepts explain why the pieces are shaped this way.
  • Reference has every field.

On this page