truffle by default uses the first account from ganache network, why do you need to specify the from address? if its necessary make sure the account is in ganache's network.
here is my suggestion
host: "127.0.0.1", // Localhost (default: none)
port: 8545, // Standard Ethereum port (default: none)
To update an artifact, you can simply recompile the contract. But deployed smart contracts are immutable. That's their beauty. If you don't want to redeploy the contract, why you want to recompile it? You cannot simply update the artifact (recompile) and expect the deployed contract to update.
The artifacts (also called ABI) are results of compilation ...
This turned out to be related to bytecode rather than the gas limit
Ganache: out-of-gas during deployment
The real reason (see the answer) is: apparently, there is a 24kB size restriction on the deployed bytecode (besides the gas limits).
So I read https://blog.polymath.network/solidity-tips-and-tricks-to-save-gas-and-reduce-bytecode-...
I somehow managed to work around it by calling each step in the script.
"deploy_test": "npm run reset_test_evm && npm run migrate -- --network test --reset && npm run snapshot_test_evm && npm run clean_contract_json",
"reset_test_evm": "node scripts/reset-test-evm.js",