Team, Repo, and App Model

Team, Repo, and App Model

1) Why this change

Conman currently models one "App" as one Git repository.

That assumption breaks for real config repos like hepquant-config, where one team has multiple user-facing apps in the same repo, each with its own URL/domain and access model.

Examples observed in current config repos:

2) New domain model

Use three layers:

Cardinality:

3) Scope boundaries (important)

Repo-scoped concerns stay repo-scoped:

App-scoped concerns move to app level:

This preserves atomic Git/release behavior while supporting multi-app repos.

4) Runtime profile impact

Current runtime profile design assumes a single URL. We need multi-surface routing in each profile.

Add per-profile surface routing config, for example:

Keep existing precedence model:

Apply precedence per surface endpoint and per variable/secret.

5) API and naming changes

Current Conman "App" is effectively a repo object (repo_path, integration_branch). To reduce confusion:

Canonical API shape:

API strategy for v1 implementation:

6) Data model changes (minimum)

Add teams collection:

Update app/repo document (currently apps):

Add app_surfaces collection:

Update environments/runtime profiles:

7) Release/deploy semantics

No change to queue-first release model:

Add visibility metadata:

8) Implementation phases

Phase 1:

Phase 2:

9) Decisions captured

Implementation plan: docs/team-repo-app-implementation-plan.md