Model/docs
Khalim Conn-Kowlessar 31da90f5eb feat(modelling): persist recommendation.material_id from the catalogue
Expand half of the recommendation_materials retirement (ADR-0017). A
Plan Measure installs a single Product, so thread its catalogue id end to
end — Product.id -> MeasureOption.material_id -> PlanMeasure.material_id
-> recommendation.material_id — replacing the per-material BOM child
table with one nullable column on the row. ProductPostgresRepository
reads the id from MaterialRow; the four fabric generators set it on their
Option; the orchestrator carries it onto the Plan Measure; the mirror
declares + maps the column. Optional throughout (the JSON stopgap
catalogue carries no ids -> NULL).

The multi-measure integration test now pins each persisted measure's
material_id to its seeded MaterialRow id. Migration spec (live column
must be added before this deploys; contraction is the owner's next step)
in docs/migrations/recommendation-material-id.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 08:26:58 +00:00
..
adr docs(modelling): record Valuation Uplift design (ADR-0018 + glossary) 2026-06-04 07:52:33 +00:00
migrations feat(modelling): persist recommendation.material_id from the catalogue 2026-06-04 08:26:58 +00:00
HANDOVER_ARA_NEXT.md docs: correct SAP calculator path in CONTEXT (domain/sap → domain/sap10_calculator) 2026-06-01 18:56:41 +00:00
HANDOVER_MODELLING.md docs(modelling): next-phase handover — depth + scale e2e + grilling prompt 2026-06-03 23:09:08 +00:00
HANDOVER_NEXT_PHASE_PROMPT.md docs(modelling): next-phase handover — depth + scale e2e + grilling prompt 2026-06-03 23:09:08 +00:00