Problem
The API-owned Stage 12 report table now contains the nullable observability_id column added by PolicyEngine/policyengine-api#3852, but the simulation service synchronized SQLAlchemy mapping does not. Deployment infrastructure validation therefore rejects the live table before Stage 12 deployment.
Scope
- add the nullable, length-bounded field to the typed Stage 12 report record;
- add the matching declarative SQLAlchemy column without emitting DDL;
- exercise the column in the infrastructure data-operation check;
- add focused contract and persistence tests.
The API repository remains the sole owner of database migrations.
Problem
The API-owned Stage 12 report table now contains the nullable observability_id column added by PolicyEngine/policyengine-api#3852, but the simulation service synchronized SQLAlchemy mapping does not. Deployment infrastructure validation therefore rejects the live table before Stage 12 deployment.
Scope
The API repository remains the sole owner of database migrations.