Skip to content

Evaluation Package

Stability: contract-backed reference

Authority: The normative format lives in spec/jacqos/v1/evaluation-package.schema.json. Digest identity and equivalence rules live in spec/jacqos/v1/digests.md. This page summarizes the exported artifact and shows how to read it.

An evaluation package is the frozen runtime handoff for one evaluator. You export it when you need to move the same ontology IR, canonical mapper semantics, helper digests, and related metadata between environments.

Terminal window
jacqos export evaluation-package
ComponentDescription
Ontology IRThe intermediate representation of all .dh rules, relation declarations, and invariants
Mapper semanticsCanonical mapper exports (the structural contract, not the Rhai source)
Helper digestsContent-addressed hashes of all helper functions (Rhai and Wasm)
Prompt bundle digestHash of all prompt files used by LLM capabilities
Capability declarationsThe declared effect capabilities from jacqos.toml
MetadataApp ID, app version, export timestamp, and the evaluator digest

The evaluator digest is the package’s primary semantic identity, as defined in the digest authority above:

evaluator_digest = hash(ontology IR, mapper semantics, helper digests)

Two evaluation packages with the same evaluator digest will produce identical derived state from the same observations.

ChangeDigest changes?
Modify a .dh ruleYes
Add or remove a relation declarationYes
Change a mapper’s atom outputYes
Refactor mapper code without changing atom outputNo
Modify a helper functionYes
Change a prompt fileNo (prompt changes affect prompt_bundle_digest, not evaluator_digest)
Change jacqos.toml capabilitiesNo (capabilities are metadata, not semantics)

Why Prompts Don’t Change the Evaluator Digest

Section titled “Why Prompts Don’t Change the Evaluator Digest”

Prompts influence LLM behavior, but the evaluator derives facts from observations — including observations produced by LLM effects. The prompt affects what the LLM says, but the evaluator’s job is to derive facts from whatever the LLM actually said. Two different prompts that produce the same LLM response observations will produce the same derived facts.

The digest authority tracks prompt_bundle_digest separately so you can detect prompt changes without conflating them with semantic changes to derivation logic.

The package digest covers the entire evaluation package contents:

package_digest = hash(frozen evaluation package contents)

This is broader than the evaluator digest — it includes metadata, capability declarations, and the prompt bundle digest. Use it when you need to verify that two packages are identical in every respect, not just semantically equivalent.

A migration package is the local-to-cloud handoff around an evaluation package. Use it when you need to move a local app and lineage into JacqOS Cloud or an enterprise-managed cloud while preserving replay identity.

Terminal window
jacqos export migration-package

The migration package references the evaluation package, the redacted observation export, app files, verification bundle, BlobRefs, and any redaction, retention, review, or effect-receipt manifests. Importers must recompute digests and reject missing blobs, unsupported versions, and semantic identity drift. A local -> cloud -> local round trip is valid only when the lineage_id, evaluator_digest, package_digest, mapper_output_digest values, observation head, and verification result are preserved.

Rollback is lineage selection, not mutation. If a migration fails, keep the imported evidence inspectable and select a previous committed activation or lineage head instead of editing observations.

JacqOS uses a small number of explicit, non-interchangeable identities:

IdentityWhat it namesScope
evaluator_digestOne semantic evaluation configurationDerivation logic
package_digestOne frozen evaluation packageEverything in the package
mapper_output_digestCanonical mapper export for one observationOne mapper’s structural output
lineage_idOne observation historyObservation store

These are not interchangeable. The evaluator digest tells you whether two packages will produce the same facts. The package digest tells you whether two packages are byte-identical.

Terminal window
jacqos export evaluation-package
# => Wrote evaluation package to .jacqos/packages/eval-pkg-sha256-a1b2c3.tar

Evaluation packages are the contract surface for CI pipelines:

  1. Export a package from your development environment
  2. Ship it to CI alongside your fixtures
  3. Replay fixtures against the package
  4. Verify that derived state matches expected world state

You can run two evaluator versions side-by-side on the same lineage:

  1. Export packages from both versions
  2. Replay the same observations through each
  3. Compare the derived facts — differences highlight semantic changes

This is the mechanism behind the Studio Activity Compare lens (with full dual-pane render in V1.1) and shadow builds in production.

ExcludedWhy
ObservationsPackages are evaluator-side only — observations are a separate export
CredentialsNever included — credential_ref names environment variables
Derived factsFacts are computed, not stored — replay produces them
Effect resultsEffect observations belong to the observation export
Rhai source codeThe canonical mapper export is the contract, not the source

Migration packages add references to observations, verification evidence, and object handles, but they do not change the evaluation package contract.

Secrets are verified absent from all exports during jacqos verify. See the redaction check for details.