Fruitful Docs
GuidesShip

Validate the package and its coverage

Test each entry, review generated expectations, and validate the exact package graph.

Coverage tests whether a binding reads the expected entries and fields. Package validation tests the locked route, transform, records, Lexicons, and presentation together. The two procedures are necessary before release.

Prepare the canonical files

Edit the definition, manifests, Lexicons, bindings, hook source, surfaces, and approved review evidence. Keep site URLs, selectors, and normalization rules in the package. Canonical Lexicon JSON controls runtime validation. Generated TypeScript is the authoring SDK. Hook modules must bundle into self-contained JavaScript. Read the runtime environment for available operations and imports.

For each new or changed Lexicon, lint the exact documents declared by its manifest:

yarn goat lex lint --json <lexicon-document>...
yarn fruitful lexicon generate <feed-package-definition> --write
yarn fruitful lexicon generate <feed-package-definition> --check

Generate only after the Lexicons, bindings, and transform agree:

yarn fruitful plugin generate feed-packages/<name> --write --json
yarn fruitful plugin generate feed-packages/<name> --check --json

If runtime bytes change for an existing release, increase its version. Do not overwrite the recorded release digest.

Coverage

yarn fruitful plugin coverage feed-packages/<name> --json

For each fixture, examine these fields:

FieldMeaning
matchedEntryCountEntries that the entry selector matched
extractedEntryCountEntries that produced an extract
processedEntryCountEntries stored after post-processing
requiredFieldsFields that each entry must provide
neverObservedFieldsDeclared fields that no entry provided
rejectedEntryIndexesEntries that post-processing rejected, with reasons
entries[].semanticSignatureThe field shape observed for each entry

Test each matched entry. Give a reason for each required-field gap and rejection, or repair its cause. For a never-observed field, find whether its selector or its required status is incorrect. Keep evidence for each observed semantic shape. A sample of successful entries does not prove complete coverage.

For new captures, use the MCP inspection procedure. Run analyze_binding_coverage and validate_capture_package against the same capture and definition. Then validate the stored review cases with the CLI.

Validate

yarn fruitful plugin validate feed-packages/<name> --json

The validation summary is the canonical evaluator report without captured content. It evaluates each review case through the locked package graph:

CheckMeaning of a pass
executionThe transform ran without errors in the sandbox for each case.
determinismTwo runs produced the same output bytes.
coverageCoverage met the required thresholds.
lexiconsEach record passed its pinned Lexicon's validation.
viewsbuildView produced a valid View for each root.
goldensRecords matched the committed expectation.
presentationRendered surfaces matched the committed presentation examples.

Make sure the report identifies the intended package root and resolution. resolutionDigest identifies the exact package graph that validation evaluated. Examine the aggregate checks and each case's results. Include record counts and types, determinism, coverage, rejections, required gaps, golden agreement, presentation agreement, and diagnostics. Use detailed coverage output or local diagnostics when the summary cannot explain a result.

Examine meaning after generation

Compare generated expectations with approved evidence. Examine changed values, record identities, relationships, and Activity-root membership. Generation produces a candidate expectation, not evidence that the expectation is correct. If identities or relationships change unexpectedly, stop regeneration. Repair the Lexicon, binding, or transform before you continue.

The summary alone cannot prove the following properties:

  • Correct record values and stable Activity-root membership.
  • Capture readiness and approval of exact fixture bytes.
  • Separation of runtime artifacts from private review evidence.
  • Correct presentation meaning and a credible result for a reader.

Examine these properties through approved evidence, the product preview, and release inspection. Tell the reader whether the evidence came from stored fixtures or a new authenticated capture.

Update generated references when contracts change

Regenerate the published schemas and reference pages after changes to these contracts:

  • #extract or #recordRef
  • The CLI command table
  • Manifest or binding Lexicons.
yarn docs:reference --write
yarn docs:reference --check

Edit the source contract for generated prose. Do not edit generated reference output directly.

Reference: CLI.

On this page