-- Only synthetic fixtures; this script is run exclusively in a randomly named scratch DB. CREATE TABLE alg.cargo_space_snapshot(warehouse_id varchar(80),space_id varchar(80),lane_code varchar(80),depth_raw varchar(10),space_status varchar(10),locked varchar(10),tray_code varchar(80),snapshot_generation bigint); CREATE TABLE alg.space_inventory_summary(warehouse_id varchar(80),space_id varchar(80),stock_detail_count int,snapshot_generation bigint); CREATE TABLE alg.space_role(space_id varchar(80),role varchar(40)); CREATE TABLE alg.active_job_snapshot(warehouse_id varchar(80),source_space_id varchar(80),in_or_out varchar(10),snapshot_generation bigint); CREATE TABLE alg.reservation(reservation_id varchar(80),space_id varchar(80),status varchar(20)); CREATE TABLE alg.shadow_snapshot_state(warehouse_id varchar(80),snapshot_generation bigint,snapshot_status varchar(20)); CREATE TABLE alg.lane_state(warehouse_id varchar(80),lane_code varchar(80),space_count int,occupied_count int,available_count int,pending_outbound bit,has_gap bit,semantic_fingerprint varbinary(32),snapshot_generation bigint,rebuilt_at datetime2 DEFAULT SYSUTCDATETIME(),PRIMARY KEY(warehouse_id,lane_code)); GO -- Explicit test stub: fingerprint internals are outside this aggregation regression. -- The actual rebuild procedure, cursor, guards and MERGE are always executed unmodified. CREATE PROCEDURE alg.usp_compute_lane_semantic_fingerprint @warehouse_id varchar(80),@lane_code varchar(80),@semantic_fingerprint varbinary(32) OUTPUT, @inventory_source varchar(20),@snapshot_generation bigint AS SET @semantic_fingerprint=HASHBYTES('SHA2_256',@warehouse_id+':'+@lane_code+':'+CONVERT(varchar(30),@snapshot_generation)); GO INSERT alg.shadow_snapshot_state VALUES('01',101,'PUBLISHED'),('02',201,'PUBLISHED'); INSERT alg.cargo_space_snapshot VALUES ('01','N','UNLOCK_N','1','1','N',NULL,101), ('01','ZERO','UNLOCK_ZERO','1','1','0',NULL,101), ('01','NULL','UNLOCK_NULL','1','1',NULL,NULL,101), ('01','BLANK','UNLOCK_BLANK','1','1',' ',NULL,101), ('01','TRIM','UNLOCK_TRIM','1','1',' N ',NULL,101), ('01','Y','LOCK_Y','1','1','Y',NULL,101), ('01','UNKNOWN','LOCK_UNKNOWN','1','1','?',NULL,101), ('01','STATUS','OCCUPIED','1','2','N',NULL,101), ('01','TRAY','HAS_TRAY','1','1','N','T1',101), ('01','STOCK','HAS_STOCK','1','1','N',NULL,101), ('01','ROLE','PROTECTED','1','1','N',NULL,101), ('01','RESERVED','RESERVED','1','1','N',NULL,101), ('01','RELEASED','UNLOCK_RELEASED','1','1','N',NULL,101), ('01','OUT1','OUTBOUND','1','1','N',NULL,101), ('01','OUT2','OUTBOUND','2','1','N',NULL,101), ('01','GAP1','GAP','1','1','N',NULL,101), ('01','GAP2','GAP','2','2','N','T2',101), ('01','HISTORY','UNLOCK_HISTORY','1','1','N',NULL,101), ('01','N','UNLOCK_N','1','2','Y','OLD',100), ('02','W2','OTHER_WAREHOUSE','1','1','N',NULL,201); INSERT alg.space_inventory_summary VALUES('01','STOCK',1,101),('01','HISTORY',1,100); INSERT alg.space_role VALUES('ROLE','BUFFER'); INSERT alg.reservation VALUES('R1','RESERVED','ACTIVE'),('R2','RELEASED','RELEASED'); INSERT alg.active_job_snapshot VALUES('01','OUT1','20',101),('01','HISTORY','20',100);