# Phase 3 - TED as a structured projection on the generic document core Phase 3 makes TED a proper type-specific projection layered on top of the generic `DOC.doc_document` root introduced in Phase 1 and the generic vectorization model introduced in Phase 2. ## What is implemented - `TED.ted_notice_projection` - `TED.ted_notice_lot` - `TED.ted_notice_organization` - `TedNoticeProjectionService` - optional startup backfill of missing TED projections - processing flow updated so freshly imported TED notices dual-write to: - `DOC` generic document/content/representation model - `TED` structured projection tables ## Core intent TED is no longer the root model of the platform. Instead: - `DOC.doc_document` is the canonical document root - `TED.ted_notice_projection` holds TED-specific structured metadata - `TED.ted_notice_lot` and `TED.ted_notice_organization` hold normalized child structures ## Compatibility This phase is additive: - legacy `TED.procurement_document` remains in place - existing search and API behavior continue to work - new imports are now representable in both the legacy and new projection model ## Important limitation Structured search endpoints still read from the legacy TED model. Moving TED structured reads to the new projection tables is the next migration step.