/* Read-only structural gate for installed V3.4 packages. No refresh or business procedure calls. */ SET NOCOUNT ON; SET LOCK_TIMEOUT 5000; SET DEADLOCK_PRIORITY LOW; IF OBJECT_ID(N'alg.shadow_package_manifest', N'U') IS NULL RETURN; IF NOT EXISTS (SELECT 1 FROM alg.shadow_package_manifest WHERE package_id = 'FT546WMS_SHADOW_ONLY' AND package_version = '2026-09-07-34') RETURN; DECLARE @expected TABLE (object_name sysname PRIMARY KEY, object_type char(2) NOT NULL); INSERT INTO @expected VALUES (N'shadow_package_manifest','U'),(N'warehouse_policy','U'),(N'project_policy','U'), (N'space_role','U'),(N'space_topology','U'),(N'inventory_item_snapshot','U'), (N'space_inventory_summary','U'),(N'lane_state','U'),(N'reservation','U'), (N'deep_workflow_lock','U'),(N'decision_log','U'),(N'shadow_snapshot_state','U'), (N'cargo_space_snapshot','U'),(N'active_job_snapshot','U'), (N'shadow_inbound_request_snapshot','U'),(N'shadow_outbound_request_snapshot','U'), (N'shadow_runtime_metric','U'),(N'shadow_instance_heartbeat','U'), (N'v_inventory_item','V'),(N'v_active_job','V'),(N'v_space_state','V'), (N'usp_rebuild_space_topology','P'),(N'usp_sync_inventory_snapshot','P'), (N'usp_compute_lane_semantic_fingerprint','P'),(N'usp_rebuild_lane_state','P'), (N'usp_refresh_dirty_lanes','P'),(N'usp_claim_shadow_instance','P'), (N'usp_refresh_shadow_snapshot','P'); IF EXISTS (SELECT 1 FROM sys.objects actual LEFT JOIN @expected expected ON expected.object_name = actual.name AND expected.object_type = actual.type COLLATE DATABASE_DEFAULT WHERE actual.schema_id = SCHEMA_ID(N'alg') AND actual.is_ms_shipped = 0 AND actual.parent_object_id = 0 AND expected.object_name IS NULL) THROW 51071, 'V3.4 schema check failed: unknown alg object', 1; IF EXISTS (SELECT 1 FROM @expected expected LEFT JOIN sys.objects actual ON actual.schema_id = SCHEMA_ID(N'alg') AND actual.name = expected.object_name AND actual.type COLLATE DATABASE_DEFAULT = expected.object_type WHERE actual.object_id IS NULL) THROW 51072, 'V3.4 schema check failed: expected alg object missing or wrong type', 1; IF EXISTS (SELECT 1 FROM sys.triggers t JOIN sys.objects parent ON parent.object_id = t.parent_id WHERE parent.schema_id = SCHEMA_ID(N'alg')) THROW 51073, 'V3.4 schema check failed: unexpected shadow trigger', 1; DECLARE @columns TABLE ( table_name sysname, column_name sysname, type_name sysname, max_length smallint, precision_value tinyint, scale_value tinyint, PRIMARY KEY (table_name, column_name)); INSERT INTO @columns VALUES (N'inventory_item_snapshot',N'spare1',N'varchar',255,0,0), (N'inventory_item_snapshot',N'spare2',N'varchar',255,0,0), (N'inventory_item_snapshot',N'spare3',N'varchar',255,0,0), (N'inventory_item_snapshot',N'voltage',N'varchar',255,0,0), (N'inventory_item_snapshot',N'phase',N'varchar',255,0,0), (N'inventory_item_snapshot',N'tray_job_count',N'int',4,10,0), (N'shadow_outbound_request_snapshot',N'spare1',N'varchar',255,0,0), (N'shadow_outbound_request_snapshot',N'spare2',N'varchar',255,0,0), (N'shadow_outbound_request_snapshot',N'spare3',N'varchar',255,0,0), (N'shadow_outbound_request_snapshot',N'voltage',N'varchar',255,0,0), (N'shadow_outbound_request_snapshot',N'phase',N'varchar',255,0,0), (N'shadow_outbound_request_snapshot',N'allocated_quantity',N'decimal',17,38,6), (N'shadow_outbound_request_snapshot',N'predicate_version',N'int',4,10,0), (N'cargo_space_snapshot',N'this_cargo_area',N'varchar',255,0,0), (N'shadow_inbound_request_snapshot',N'spare1',N'varchar',255,0,0), (N'shadow_inbound_request_snapshot',N'spare2',N'varchar',255,0,0), (N'shadow_inbound_request_snapshot',N'spare3',N'varchar',255,0,0), (N'shadow_inbound_request_snapshot',N'fault_flag',N'varchar',255,0,0), (N'shadow_inbound_request_snapshot',N'detail_count',N'int',4,10,0), (N'shadow_inbound_request_snapshot',N'field_group_count',N'int',4,10,0), (N'shadow_inbound_request_snapshot',N'product_scope_count',N'int',4,10,0), (N'shadow_inbound_request_snapshot',N'tray_job_count',N'int',4,10,0), (N'shadow_inbound_request_snapshot',N'legacy_scope_complete',N'int',4,10,0), (N'shadow_inbound_request_snapshot',N'predicate_version',N'int',4,10,0); IF EXISTS ( SELECT 1 FROM @columns expected LEFT JOIN sys.columns column_info ON column_info.object_id = OBJECT_ID(N'alg.' + expected.table_name) AND column_info.name = expected.column_name WHERE column_info.column_id IS NULL OR TYPE_NAME(column_info.user_type_id) <> expected.type_name OR column_info.max_length <> expected.max_length OR column_info.precision <> expected.precision_value OR column_info.scale <> expected.scale_value OR column_info.is_nullable <> 1) THROW 51074, 'V3.4 schema check failed: predicate columns missing or incompatible', 1; DECLARE @definition nvarchar(max) = OBJECT_DEFINITION(OBJECT_ID(N'alg.usp_refresh_shadow_snapshot', N'P')); IF @definition IS NULL OR CHARINDEX(N'INBOUND_JOB_FIELDS_V1', @definition) = 0 OR CHARINDEX(N'field_group_count', @definition) = 0 OR CHARINDEX(N'this_cargo_area', @definition) = 0 THROW 51075, 'V3.4 schema check failed: refresh procedure missing, unreadable or obsolete', 1; PRINT 'V34_SCHEMA_OK';