Skip to main content

Meridian Configuration and Artifact Plugin

meridian-plugin-config-artifact is the Apache-2.0 licensed Meridian V1 library for publishing and consuming versioned configuration and built runtime artifacts. It is an embeddable plugin, never a service or a Catalog.

Configuration payloads remain queryable and mutable through structured database semantics until publication. A published version stores its validated JSON inline and is immutable. Artifact bytes are written as immutable Objects; only their logical metadata, provenance, lifecycle state, and channel pointers are structured records.

Install

python -m pip install meridian-plugin-config-artifact

Python 3.12–3.14 and the exact Meridian 1.0.0 Core, Semantics, Query, and Object Common releases are supported. Add meridian-plugin-config-artifact[s3] or [oci] only to co-install a released provider; this library never imports either provider or its SDK.

Compose

The Artifact publisher and Object Adapter must share the same process-local payload registry. Use the package registry before constructing the runtime:

from meridian_storage.adapters.s3 import S3AdapterFactory
from meridian_storage.plugins.config_artifact import (
    ResourceStore,
    default_payload_registry,
)

payloads = default_payload_registry()
adapter_factory = S3AdapterFactory(payloads=payloads)

# Construct and start Meridian with Platform-IaC-rendered bindings, the released
# structured/object Catalog providers, ConfigArtifactSchemaProvider, and adapter_factory.
store = ResourceStore(meridian, payload_registry=payloads)

default_payload_registry() is deliberately truthy even while empty so released V1 Adapter factory constructors preserve the injected object. Applications may instead inject their own already-shared PayloadRegistry.

The schema entry point contributes these logical Resources by default:

  • structured:resources.metadata
  • structured:resources.channels
  • structured:resources.provenance
  • structured:resources.orphan-candidates
  • object:resources.objects

Platform IaC owns their physical provisioning, binding, identity/ACL, migrations, recovery, and lifecycle. Constructor arguments accept alternate logical Resource refs; no physical locator is accepted.

Publish configuration

receipt = store.publisher.publish_configuration(
    namespace="checkout",
    kind="service",
    name="runtime",
    version="2026.08.26",
    payload={"endpoint": "https://api.example", "replicas": 3},
    schema="application.service-config@1.0.0",
    actor="release-bot",
    version_order=20260826,
    channel="production",
    expected_pointer_version=4,
)

The profile-specific surface from the locked LLD is also available directly. Publication receipts expose their immutable ref for a later compare-and-set promotion:

revision = store.configurations.publish(
    namespace="checkout",
    kind="service",
    name="runtime",
    version="2026.08.27",
    payload={"endpoint": "https://api.example", "replicas": 3},
    schema="application.service-config@1.0.0",
    actor="release-bot",
)
store.configurations.promote(
    revision.ref,
    "production",
    expected_pointer_version=5,
    actor="release-bot",
)

The exact Schema is resolved through Core and applied locally with Meridian Semantics before any write. A retry with the same immutable content is idempotent; a different digest or immutable metadata at the same logical identity raises IdentityConflict.

Publish and consume an artifact

receipt = store.publisher.publish_artifact(
    namespace="recommendations",
    kind="model",
    name="ranker",
    version="v42",
    payload=model_bytes,
    media_type_value="application/vnd.example.model",
    actor="model-builder",
)

resolved = store.consumer.artifacts.exact(receipt.resource.identity)
with store.consumer.artifacts.open(resolved) as stream:
    deploy(stream)

Bytes, streams, PayloadSource objects, factories, and pre-registered PayloadReference values are supported. Streaming inputs must declare SHA-256 digest and byte length. Full reads are checked again at the consumer boundary; range reads use the released Object Catalog verification contract.

Artifact publication commits the Object first, then structured metadata and provenance. If the second phase fails, IncompletePublication is raised and an idempotently addressed orphan candidate is recorded. discover_orphans() scans only bounded logical Object prefixes and never deletes bytes.

Resolution and lifecycle

Configuration and Artifact consumers each support:

  • exact(ResourceIdentity(...))
  • latest(namespace, kind, name) using version_order, then creation time
  • channel(namespace, kind, name, channel)

Channel promotion requires expected_pointer_version; concurrent writers cannot silently win. Published versions may be deprecated but the library forbids deletion. It contains no bootstrap configuration, provider credentials, Adapter/Engine selection, NativeQuery, endpoint, or physical storage name.

See architecture, operations, and the checked-in public contract.

Metadata

Release files for meridian-plugin-config-artifact 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for meridian-plugin-config-artifact 1.0.2
File Size Uploaded
meridian_plugin_config_artifact-1.0.2.tar.gz 60.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for meridian-plugin-config-artifact 1.0.2
File Interpreter ABI Platform
meridian_plugin_config_artifact-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 114.2 kB

Release files / meridian_plugin_config_artifact-1.0.2.tar.gz

Download URL meridian_plugin_config_artifact-1.0.2.tar.gz
Size 60.4 kB
Tags Source
SHA-256 checksum
How to use checksums
76dfacbe7c5437fa4302a25cb7bf11472d9793a7676f8a9f068f098f818c766e
BLAKE2b-256 checksum
How to use checksums
9ec8d12f5eb3fc2c491339f472a7d1e3d5ccc6faf202eb05cd3de4fb694da15c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.

Transparency log

Release files / meridian_plugin_config_artifact-1.0.2-py3-none-any.whl

Download URL meridian_plugin_config_artifact-1.0.2-py3-none-any.whl
Size 53.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d16a9914872ae73e972176c9b075cd291297eb5b30ca3a1d99d8661f049cf8d6
BLAKE2b-256 checksum
How to use checksums
df02a41d6be8a1187b84283e8fe2916b191f5b6b59f314c7f5423183dc2cb2bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 28, 2026.

Transparency log

Release history Release notifications | RSS feed

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.3

2 release files

This release

1.0.2 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page