# TASK 0: Freeze Minimal `curated_to_s3` Delivery Contract

## Summary

Freeze exact scope and success boundary for first `curated_to_s3` delivery before runtime code starts.

## Dependencies

- none

## Files to Modify

- `specs/CuratedToS3Stage/TASK.md`
- `specs/CuratedToS3Stage/TASK0.md`
- optionally `docs/features/ETL/etl-source-adapter-framework.md` if stage description is tightened

## Progress Checklist

- [ ] First-adopter scope documented as Brink only
- [ ] First exported entities documented as `curated.pos_orders` and `curated.pos_order_items`
- [ ] Framework vs adapter ownership documented
- [ ] `UNLOAD` execution model documented
- [ ] Parent-batch success boundary documented
- [ ] Existing curated S3 path standard documented
- [ ] Out-of-scope Athena/Glue items documented

## Required Decisions

### 1. Freeze first source and entity scope

Document that Brink is first adopter and first exported entities are:

- `curated.pos_orders`
- `curated.pos_order_items`

### 2. Freeze ownership split

Document that:

- export list and export `SELECT` semantics are adapter-owned,
- export catalog contracts, Redshift execution mechanics, and common command shaping are shared.

Document extensibility requirement:

- new entities for Brink should be added by catalog extension,
- new source systems should adopt same stage by implementing shared export catalog contract.

### 3. Freeze execution model

Document that export uses Redshift `UNLOAD` to write Parquet directly to S3 curated prefix.

Document non-goal:

- application code does not read curated rows and rewrite Parquet itself.

### 4. Freeze success boundary

Document that parent ETL batch succeeds only after `curated_to_s3` succeeds.

`curated_to_s3` must therefore have:

- explicit stage identity,
- explicit failure path,
- explicit checkpoint semantics.

### 5. Freeze path contract source

Document that S3 object keys reuse existing project curated-path standard.

## Acceptance Criteria

- first source and entities are explicitly frozen,
- first-adopter vs framework boundary is explicit,
- ownership split is explicit,
- Redshift `UNLOAD` is explicit execution model,
- success boundary includes export stage,
- S3 path source is explicit,
- non-goals prevent scope drift into Athena/Glue work.

## Notes

- This task is decision-record only.
- Do not start executor or stage implementation here.
