Execute summon behaves weirdly

I'm on 1.20.6. I want to give an item to a player using a loot table. However, since this loot table is big and I need to get some data from a storage to the item, I cannot just use /loot command. What I tried to do is execute summon item run function asitem, and then is asitem function, apply everything that I need to the newly created item. However, it does not work as intended, the item remains air, whatever I try.

say start
data modify entity @s Health set value 5
data modify entity @s Owner set from entity @p UUID
data modify entity @s Item set value {count: 1, id: "minecraft:armor_stand"}
tellraw @a {"nbt":"{}","entity":"@s"}
item replace entity @s contents with minecraft:acacia_boat
tellraw @a {"nbt":"{}","entity":"@s"}
say end

With that I would expect the item picked up by player to be an acacia_boat. Here is what is printed to chat :

[System] [CHAT] [Air] start
[System] [CHAT] {Age:0s,Air:300s,FallDistance:0.0f,Fire:0s,Health:5s,Invulnerable:0b,Item:{count:1,id:"minecraft:armor_stand"},Motion:[0.0d,0.0d,0.0d],OnGround:0b,Owner:[I;-1511239202,2119453460,-1438478041,269571497],PickupDelay:0s,PortalCooldown:0,Pos:[26.816970865892692d,-60.0d,-3.206928086323239d],Rotation:[0.0f,0.0f],UUID:[I;1578297450,-664911264,-1110548239,-45125418]}
[System] [CHAT] {Age:0s,Air:300s,FallDistance:0.0f,Fire:0s,Health:5s,Invulnerable:0b,Item:{count:1,id:"minecraft:acacia_boat"},Motion:[0.0d,0.0d,0.0d],OnGround:0b,Owner:[I;-1511239202,2119453460,-1438478041,269571497],PickupDelay:0s,PortalCooldown:0,Pos:[26.816970865892692d,-60.0d,-3.206928086323239d],Rotation:[0.0f,0.0f],UUID:[I;1578297450,-664911264,-1110548239,-45125418]}
[System] [CHAT] [Air] end

I have no clue of what is going wrong

Continue to help post