docs/specs/20260626-123209-agent-feature.mdadded
---
spec: agent-feature
status: ready
owner: feature-pipeline-agent
related-routes:
files:
  # (none listed)
---

# agent-feature

## Goal

Add a per-project UNIQUE constraint on the Name column of 5 existing
project-scoped xyz tables: AssetType, SystemType, Asset, CommissioningSystem,
and CommissioningWorkflow (the latter two are the actual table names for the
spec's "System" and "Workflow"). Uniqueness is scoped per project — the
constraint is composite (ProjectShardId, Name) — per reviewer guidance.
DB-schema-only change owned by the Postgres repo; no API1/API2 code changes.


## Behavior changes

The approved plan's API2 changes (verbatim):

```yaml
none
...
```

## Acceptance criteria

- [ ] The behavior described above is implemented on the listed files.
- [ ] Existing behavior is unchanged when the new feature is not exercised.
- [ ] Unit and (where observable) e2e tests cover the new behavior.

## Out of scope

- Any API1 or API2 code changes (DB-schema-only change)
- Data migration / backfill / dedup scripts
- Uniqueness on any column other than Name
- Any tables beyond the 5 listed
- Global (cross-project) uniqueness — uniqueness is scoped per project per reviewer guidance

## Notes / open questions

- Generated by the feature pipeline from the approved architect plan. If any
  acceptance criterion is ambiguous, ask the human before implementing.

## Decisions

- **No API2 code changes were made.** The spec is a DB-schema-only change
  (composite `UNIQUE (ProjectShardId, Name)` on 5 tables) and explicitly places
  "Any API1 or API2 code changes" out of scope, with `Behavior changes: none`
  and an empty `files:` list. Repo investigation confirmed this is the correct
  call: `platform-api` contains no schema/DDL/migrations — the Postgres schema
  is externally managed via Liquibase (`docker/distributed_changelog_local.xml`
  references `PostgreSQLDatabase/Database/xyz/Tables/` and `.../Constraints/`,
  which do not exist in this repo). The UNIQUE constraint must be added in the
  Postgres schema repo. The 5 affected entities (AssetType, SystemType, Asset,
  CommissioningSystem, CommissioningWorkflow) do not appear in `src/` on
  `master`; no create/insert endpoint exists here that the constraint would
  affect. Therefore there is no surgical edit, validator, controller, route, or
  test to add in this repo.