Skip to content

prove single-component output is byte-identical to the pre-component baseline #285

Description

@joshua-temple

Problem / why

The foundation's keystone safety property is that adding the component model changes nothing
observable for a single-component repo. Every existing single-component repo must stay green
with byte-identical generated workflows and byte-identical state serialization, because its
manifest has no components: block and resolves to the single implicit default component. A
multi-component example must load into the component-major model and serialize back
round-trip-clean. This is the v1-freeze gate test before the multi-component surface is built
on top.

Scope

This PR does:

  • Run the existing fleet and e2e suites against the component-major spine and confirm green
    across every current single-component example repo, with empty generated-workflow diffs and
    empty serialized-state diffs.
  • Add a multi-component round-trip e2e: a minimal manifest that declares components: loads,
    generates per-component files, and serializes its state back to
    state.components.<name>.<env> round-trip-clean.

This PR does NOT:

  • Add a full multi-component capability example (that is V4); the example here is a minimal
    round-trip fixture.
  • Add any new capability; it is purely the foundation proof gate.

Files / areas touched

  • e2e/ scenarios (single-component stability, multi-component round-trip).
  • A minimal multi-component fixture manifest.

Tests and coverage required

  • Empty-diff assertion on single-component generated workflows and serialized state.
  • Multi-component round-trip e2e with a stable-shape assertion.
  • Full existing fleet green.

Acceptance criteria

  • Every existing single-component fleet repo passes unchanged with empty diffs (zero manifest
    edits).
  • A multi-component example loads, generates, and serializes round-trip-clean.

Dependencies

Blocked by F3 and F4 (and F2 for the multi-component fixture).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions