---
id: w2/m11/t004
title: "Back-compat: confirm pre-existing directly-CR-created apps aren't broken by the routing change"
worker: worker2
status: todo
estimate: 30m
depends_on: [w2/m11/t002]
---

## Objective

Ensure apps created before this milestone (directly as CRs, not store-managed) keep working after t002 changes how new creates are routed.

## Context

- Existing prod/mock-cluster Apps created via the pre-change public-create path have no store row and no store app-id label.

## Steps

1. Confirm the projector and the operator's reconciler don't assume every `App` CR has a corresponding store row — pre-existing CRs must keep reconciling normally.
2. Decide and document: either backfill store rows for pre-existing apps (giving them deploy history retroactively), or explicitly document them as a legacy "no deploy history" class until redeployed.
3. If backfilling, write the one-off migration; if not, add a short doc note (e.g. in `docs/ADR003-control-plane.md` or the deploys API doc) explaining the legacy-app caveat.

## Files

- `lego/backend/internal/store/` (if backfilling)
- `docs/ADR003-control-plane.md` (doc note, whichever path chosen)

## Acceptance criteria

- [ ] Pre-existing directly-CR-created apps continue to reconcile and serve traffic unaffected.
- [ ] The deploy-history gap for legacy apps (if not backfilled) is documented, not silently left unexplained.

## Out of scope

- Retroactively fixing deploy history for legacy apps beyond the chosen backfill/document decision.
