I was doing that before reading your update 
Using S1/S2 there is a behavior change.
Detach mode disabled
Sequence of actions:
S1/S2 connected -> light turns on
S1/S2 disconnected -> light turns off
Logs
2025-03-11 13:00:58.360infoTerrace Top Lights Terrace Top Lights is off [physical]
2025-03-11 13:00:58.349debugTerrace Top Lights switch state changed from on to off
2025-03-11 13:00:58.347debugTerrace Top Lights parse: descMap = [raw:464B0100060800001000, dni:464B, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0] description=read attr - raw: 464B0100060800001000, dni: 464B, endpoint: 01, cluster: 0006, size: 08, attrId: 0000, encoding: 10, command: 0A, value: 00
2025-03-11 13:00:54.116infoTerrace Top Lights Terrace Top Lights is on [physical]
2025-03-11 13:00:54.099debugTerrace Top Lights switch state changed from off to on
2025-03-11 13:00:54.096debugTerrace Top Lights parse: descMap = [raw:464B0100060800001001, dni:464B, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0] description=read attr - raw: 464B0100060800001001, dni: 464B, endpoint: 01, cluster: 0006, size: 08, attrId: 0000, encoding: 10, command: 0A, value: 01
Detach mode enabled
Sequence of actions:
S1/S2 connected -> nothing happens with the light, but there are logs
2025-03-11 13:04:19.208debugTerrace Top Lights standardParseOnOffCluster: skipped processing OnOIff cluster (attrId is null)
2025-03-11 13:04:19.206debugTerrace Top Lights parse: descMap = [raw:catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00 , profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:464B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:00, data:[]] description=catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00
2025-03-11 13:04:17.220debugTerrace Top Lights standardParseOnOffCluster: skipped processing OnOIff cluster (attrId is null)
2025-03-11 13:04:17.218debugTerrace Top Lights parse: descMap = [raw:catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00 , profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:464B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:00, data:[]] description=catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00
2025-03-11 13:04:15.263debugTerrace Top Lights standardParseOnOffCluster: skipped processing OnOIff cluster (attrId is null)
2025-03-11 13:04:15.261debugTerrace Top Lights parse: descMap = [raw:catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00 , profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:464B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:00, data:[]] description=catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00
S1/S2 disconnected -> light turns on
2025-03-11 13:04:29.204warnTerrace Top Lights customParseFC11Cluster: received unknown 0xFC11 attribute 0x0016 (value 00)
2025-03-11 13:04:29.201debugTerrace Top Lights parse: descMap = [raw:464B01FC110816002000, dni:464B, endpoint:01, cluster:FC11, size:08, attrId:0016, encoding:20, command:0A, value:00, clusterInt:64529, attrInt:22] description=read attr - raw: 464B01FC110816002000, dni: 464B, endpoint: 01, cluster: FC11, size: 08, attrId: 0016, encoding: 20, command: 0A, value: 00
2025-03-11 13:04:29.164debugTerrace Top Lights Ignored duplicated switch event on
2025-03-11 13:04:29.162debugTerrace Top Lights parse: descMap = [raw:464B0100060800001001, dni:464B, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0] description=read attr - raw: 464B0100060800001001, dni: 464B, endpoint: 01, cluster: 0006, size: 08, attrId: 0000, encoding: 10, command: 0A, value: 01
2025-03-11 13:04:29.126infoTerrace Top Lights Terrace Top Lights is on [physical]
2025-03-11 13:04:29.112debugTerrace Top Lights switch state changed from off to on
2025-03-11 13:04:29.110debugTerrace Top Lights parse: descMap = [raw:464B0100060800001001, dni:464B, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:01, clusterInt:6, attrInt:0] description=read attr - raw: 464B0100060800001001, dni: 464B, endpoint: 01, cluster: 0006, size: 08, attrId: 0000, encoding: 10, command: 0A, value: 01
S1/S2 connected -> light remains on (no change), but there are logs
2025-03-11 13:10:20.319debugTerrace Top Lights standardParseOnOffCluster: skipped processing OnOIff cluster (attrId is null)
2025-03-11 13:10:20.317debugTerrace Top Lights parse: descMap = [raw:catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00 , profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:464B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:00, data:[]] description=catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00
2025-03-11 13:10:18.333debugTerrace Top Lights standardParseOnOffCluster: skipped processing OnOIff cluster (attrId is null)
2025-03-11 13:10:18.331debugTerrace Top Lights parse: descMap = [raw:catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00 , profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:464B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:00, data:[]] description=catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00
2025-03-11 13:10:16.374debugTerrace Top Lights standardParseOnOffCluster: skipped processing OnOIff cluster (attrId is null)
2025-03-11 13:10:16.372debugTerrace Top Lights parse: descMap = [raw:catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00 , profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:464B, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:00, data:[]] description=catchall: 0104 0006 01 01 0040 00 464B 01 00 0000 02 00
S1/S2 disconnected -> light turns off
2025-03-11 13:10:36.831warnTerrace Top Lights customParseFC11Cluster: received unknown 0xFC11 attribute 0x0016 (value 00)
2025-03-11 13:10:36.829debugTerrace Top Lights parse: descMap = [raw:464B01FC110816002000, dni:464B, endpoint:01, cluster:FC11, size:08, attrId:0016, encoding:20, command:0A, value:00, clusterInt:64529, attrInt:22] description=read attr - raw: 464B01FC110816002000, dni: 464B, endpoint: 01, cluster: FC11, size: 08, attrId: 0016, encoding: 20, command: 0A, value: 00
2025-03-11 13:10:36.795debugTerrace Top Lights Ignored duplicated switch event off
2025-03-11 13:10:36.793debugTerrace Top Lights parse: descMap = [raw:464B0100060800001000, dni:464B, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0] description=read attr - raw: 464B0100060800001000, dni: 464B, endpoint: 01, cluster: 0006, size: 08, attrId: 0000, encoding: 10, command: 0A, value: 00
2025-03-11 13:10:36.742infoTerrace Top Lights Terrace Top Lights is off [physical]
2025-03-11 13:10:36.718debugTerrace Top Lights switch state changed from on to off
2025-03-11 13:10:36.716debugTerrace Top Lights parse: descMap = [raw:464B0100060800001000, dni:464B, endpoint:01, cluster:0006, size:08, attrId:0000, encoding:10, command:0A, value:00, clusterInt:6, attrInt:0] description=read attr - raw: 464B0100060800001000, dni: 464B, endpoint: 01, cluster: 0006, size: 08, attrId: 0000, encoding: 10, command: 0A, value: 00