# Releases Domain

**Status:** Approved target-state baseline  
**Activation:** I6.

## Target State

`Release` is an immutable logical product version/promotion unit over exact Artifact/source identities. It is not an Environment and not a Deployment attempt.

```text
verified source + Artifact(s)
  -> Release
      version/label
      immutable contents
      release policy/evidence
  -> Deployment(s) to Environment(s)
```

## Identity and Contents

A Release records Project, version/label, source/ChangeSet/merge identity, artifact set/digests, release notes/metadata, required evidence, creation Principal/time and status. Mutating the artifact set creates a new Release/revision identity, not a hidden edit.

## Invariants From Day 1

- Release references immutable Artifact/source identities;
- same Release may be deployed to multiple Environments;
- environment configuration is not baked into Release identity unless it changes the artifact/content contract;
- Release readiness depends on declared verification/provenance/policy/approval requirements;
- mutable Git tags/registry tags are provider mappings/labels, not sole identity;
- rollback selects a known Release/Deployment history.

## Lifecycle

```text
candidate -> ready -> released/available
 -> superseded
 -> withdrawn/quarantined
```

Deployment success/failure does not rewrite Release contents.

## Release Strategy

Project/Plan chooses continuous delivery, continuous deployment, scheduled/batched or on-demand. Release domain records strategy/result; Planning owns recommendation, Deployment owns environment rollout.

## Increment Realization

| Increment | Release realization |
|---|---|
| I2 | release strategy planned in EffectiveDeliveryPlan. |
| I6 | Release primitive/creation/promotion/evidence activates. |
| I9 | public release API/support/enterprise approval/retention. |

## Current Implementation State

Target spec only.

## Deferred Realization

Complex release trains/multi-project portfolio releases are not baseline; can be composed later using Release relationships.

## Temporary Dogfood Behavior

Before I6, Git merge/tag may occur without AWP Release product semantics. Such development operations must not become an incompatible release identity.

## Failure / Recovery

Release creation is transactional over immutable references. Provider tagging/registry publication failure reconciles separately and cannot silently leave Release contents ambiguous.

## UI Implications

Release/Deployment page shows exact artifacts/source/evidence, promotion state, environments and rollback ancestry.

## Decisions / ADRs

See release-and-deployment architecture boundary and ADR 0008.