Skip to content

feat: declarative backend Suitefile compiler and drift-safe sync #268

Description

@cmdr-chara

Problem

Backend tests can be created and updated individually, but a repository cannot currently declare an entire dependency-aware TestSprite suite as reviewable source. Teams must manually keep remote test metadata, Python code, and produces/consumes relationships aligned. That makes drift, accidental duplication, and unsafe bulk maintenance difficult to detect before mutation.

Proposed CLI surface

Add a versioned backend Suitefile and four commands:

  • testsprite suite validate <manifest> validates the manifest, referenced Python files, and dependency graph locally.
  • testsprite suite graph <manifest> emits deterministic execution waves compiled from produces/consumes declarations.
  • testsprite suite plan <manifest> compares desired state with the remote project without mutation.
  • testsprite suite apply <manifest> --confirm creates or updates the reviewed changes.

An adjacent lockfile records stable suite-key to remote-test identity, code version, desired-state hash, and any pending idempotent create request.

Safety boundaries

  • Schema v1 manages backend tests only.
  • Unknown fields, cycles, ambiguous or missing producers, duplicate identities, oversized code, and lexical/symlink path escapes fail locally.
  • Existing remote tests are adopted only by explicit testId or lockfile identity; same-name tests are conflicts.
  • Unmanaged remote tests are reported and never deleted.
  • Mutations require --confirm, use deterministic idempotency keys, and retain interrupted-create identity for safe replay.
  • Optimistic concurrency protects code updates.
  • No new runtime dependencies or outbound services are introduced.

Relationship to #125 / PR #265

PR #265 round-trips one test definition at a time. This proposal is complementary: it compiles a multi-test dependency graph and reconciles a repository-owned desired state against a project. It does not depend on or replace test export / test import.

Acceptance criteria

  • Local validation and graph compilation require no credentials or network.
  • Plan output classifies each managed test as create, update, unchanged, or conflict.
  • Apply refuses conflicts and unconfirmed mutations.
  • Lockfile writes are atomic and interrupted creates are replay-safe.
  • CLI help, documentation, unit tests, and package output include the new command group.

A tested implementation is ready on a contributor branch; I am opening this issue to satisfy the repository's feature workflow and am happy to adjust the contract during review.

Activity

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

Metadata

Metadata

Assignees

Labels

in-progressAssigned and actively being worked on

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions