Supported assets
Exports resolve these records from their native product stores. Imported assets remain visible in the portability workspace with both source and destination references; they do not replace the native source record that produced the bundle.
Permissions
The importer also compares every bundle and asset
requiredScopes value with the actor’s current scopes. An import cannot grant or preserve a capability the committing actor does not hold.
Bundle identity and compatibility
Every new bundle declares:bundleHash and signature removed. Each asset has a separate SHA-256 contentHash over canonical asset content. EvalGate verifies both layers before planning an import.
dependencyOrder is a topological order, not a display hint. The importer rejects a missing required dependency, an expected dependency hash mismatch, or a cycle. Compatibility version 0 bundles are migrated to the current shape during validation. A bundle from a future unsupported compatibility version is rejected before any destination mutation.
Define the source-organization policy
The export policy travels inside the bundle hash and, when enabled, its signature:classificationis one ofpublic,internal,confidential, orrestricted.allowCrossOrganizationmust be true when source and destination organizations differ.allowedDestinationOrganizationIdsnarrows cross-organization import to explicit UUIDs. An empty list allows any destination only when cross-organization import is enabled.requiresSignaturemakes an unsigned, invalidly signed, or untrusted bundle incompatible.requiredScopesare checked in addition to each asset’s scopes.
Redact sensitive fields
Redactions use a canonical asset reference plus a JSON Pointer into that asset’scontent value:
Each applied rule adds a redaction-manifest entry containing the asset reference, pointer, action, reason, and SHA-256 hash of the original value. The original value is not stored in the manifest. Asset and bundle hashes are computed after redaction, so an importer verifies the transferred representation exactly.
Configure signing keys
Export signing uses Ed25519 PEM keys configured on the EvalGate server.PORTABILITY_SIGNING_KEYS is a JSON array:
publicKey is omitted, EvalGate derives it from the private key. Keep private keys in the deployment secret manager and rotate keyId values deliberately; the bundle embeds only the public key, key ID, algorithm, and signature.
Before importing a signature-required bundle, a destination owner trusts the exact key:
Export a governed bundle
Selectors identify native assets. Omitversion to resolve the latest immutable version.
bundle. Save the JSON without rewriting it. You can later retrieve the exact stored payload:
X-EvalGate-Bundle-Hash. Compare it with the JSON bundleHash when moving the file through another system.
Preview an import
Every import begins with a dry run. Choose both a conflict policy and a reference policy explicitly:dryRunToken, bound to the complete request and destination state;- global
compatibleandpartialresults; - dependency order and a per-action count;
- one planned target reference, target version, action, and compatibility result per asset;
- structured issue codes such as
SIGNER_UNTRUSTED,DEPENDENCY_MISSING,PRIVILEGE_WIDENING,REFERENCE_REMAP_MISSING, orCONFLICT.
allowPartial only when it is acceptable to commit compatible assets and retain explicit reject events for incompatible assets. With the default false, any incompatible asset blocks the commit.
Commit the exact plan
Add the returned token to the otherwise unchanged request:Verify imported evidence
List the organization workspace:canonicalRefandsourceCanonicalRefreflect the selected preserve or remap policy;versionis the planned destination version;contentHashequals the exported asset hash;dependenciespoint to the planned destination references;provenanceretains native source identifiers and the original native hash;requiredScopeshave not widened;- calibration assets retain
rubricVersion,scoreScaleVersion, and mapping interpretation; historicalEvidencecontains the selected native reviews, decisions, runs, or snapshots.
Failure behavior
Do not edit a bundle to work around an issue. Correct the source policy, redaction, dependency, destination conflict, signer trust, or actor authorization, create a new bundle when its contents change, and run a new dry run.