Skip to content

Extract Flask apps and Docker deployment into a separate server repository #3741

Open

Description

@adamtheturtle

Part of #3737.

Blocked by #3739 and #3740.

Move the Flask implementation and container deployment to a new repository once the reusable contract suite and supported core interface are available. The new repository's name is to be decided.

Acceptance criteria:

  • Move the VWS/VWQ Flask apps, target-manager service, health checks, Dockerfiles/build configuration, Flask/deployment-specific tests, image release workflows, and deployment documentation.
  • Depend on vws-python-mock at runtime through its supported interface. Consume the shared contract suite as a development dependency, pinned to a compatible revision; do not copy its assertions.
  • Supply server-owned pytest adapters for Flask in-process and actual container deployments. Run applicable shared tests against both, preserving documented transport differences such as malformed Content-Length handling.
  • Preserve the three-service deployment and verify database setup, signed VWS requests, upload/processing, queries, report download URLs, health checks, restarts/state persistence, and cleanup through actual deployments.
  • Retain meaningful coverage gates for code owned by each repository. Update core CI partitions, package manifests, dependency ownership, documentation, and release workflows after removing server-owned files.
  • Pin compatible core and contract-suite revisions and update them through normal PRs. Add a scheduled compatibility run against core main to detect upcoming changes.
  • Preserve published image names/targets and environment-variable behavior where practical; provide a clear migration for any changed image references, commands, or documentation links.
  • Document installation, local development, contract-suite invocation, and release ownership in the new repository. Verify built packages and container images before considering the extraction complete.

Completion point: the independently released server passes the shared suite and deployment checks, and the core repository no longer owns its Flask/Docker implementation.

Related: #3724 tracks a deployment launcher that consumes published images. This extraction preserves that separate launcher scope.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions