Skip to content

Reject multi-variant manifests at ingestion until .Files consumers are migrated #314

Description

@bobtista

Problem

The content model is gaining a Variants concept, but every existing consumer — deliverers, validators, CAS refcounting and GC — still reads .Files. A manifest that declares variants would be accepted by ingestion and then silently mishandled downstream, because nothing in the pipeline understands the resolved-variant shape yet.

Why this is first

This is a fail-closed gate that buys time for the real migration (see the .FilesResolvedArtifact issue). Until that migration lands, this gate is the only protection against a provider publishing a Variants manifest and corrupting refcounting or GC state.

It must land before any provider is able to publish such a manifest, not after.

Proposed approach

  • Reject manifests declaring variants at ingestion, explicitly and loudly — no partial handling, no best-effort fallback.
  • Bump the manifest schema version so the rejection is attributable to a known version rather than a parse failure.
  • Error message should name the migration as the unblock condition, so the rejection is self-explaining when a provider hits it.

Acceptance criteria

  • A manifest declaring variants is rejected at ingestion with a clear, actionable error.
  • Manifest version is bumped and the gate keys off it.
  • Existing single-variant manifests are unaffected.
  • Test coverage for both the rejection path and the unaffected legacy path.

Notes

Ships inside stack PR 2 (feat/platform-neutral-model).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions