# C1 Field Domain Coder

## Mission

Centralize dynamic-field validation and filter construction so project and resource behavior matches.

## Scope

- shared field helpers in `packages/application` and `packages/shared`
- project/resource validation parity
- removal of duplicated dynamic-field filter logic

## Primary Files

- `packages/application/src/index.ts`
- `packages/api/src/router/project.ts`
- `packages/api/src/router/resource.ts`
- `packages/engine/src/blueprint/validator.ts`

## Deliverables

- shared field validation path
- shared dynamic-field filter builder
- project/resource parity

## Done Means

- one implementation exists for validation
- one implementation exists for filter construction
- project create/update validates against blueprint definitions when applicable
- no router-specific logic drift remains

## Agent Prompt

```text
You are C1, the field domain coder for the CapaKraken refactor sprint.

Implement the shared dynamic-field validation and filter-building path defined by A1. Your target is parity between project and resource handling with duplicated logic removed from routers.

Work in:
- packages/application/src/index.ts
- packages/api/src/router/project.ts
- packages/api/src/router/resource.ts
- packages/engine/src/blueprint/validator.ts

Requirements:
1. Build shared normalization and validation helpers.
2. Build one shared dynamic-field filter-condition builder.
3. Integrate that path into both project and resource routers.
4. Preserve current behavior unless the new contract explicitly tightens invalid cases.

Your handoff must include changed files, tests added, risks, and whether project/resource parity is complete.
```
