The general problem with auc/attendedsysupgrade is that dependencies change over time, and it is easy to accumulate unnecessary crust via old dependencies. Also dependencies of "user-installed" packages may change, not only those in the core selection.
The problem with all manifests (and .config files) is that there is no data regarding why a package was included in a build: was it an intentional user selection or an automatic dependency. Additionally, dependencies are left installed if you remove a package. So, if you try package A that requires B, and later remove A, you will still have B installed.
Thus the viable clean alternative in the long run is related to the "step 2" above: Keeping list of the intentionally added "top-level" packages like luci-app-sqm, prometheus etc. (No need to keep list on the dependencies even if they seem user installed.)
Using a .config recipe works well for all the build options:
- full toolchain: you can keep a short .config recipe. Example in Programmatically (non-interactively) configure the OpenWrt build - #3 by hnyman
- imagebuilder: you can create a personal image cooking script with the packages. Example in https://www.dropbox.com/sh/6lqwqkf50daa7mm/AABAmLTcTuF1pdOZVEVkpUBea/imagebuilder%20scripts?dl=0&preview=image-make.sh&subfolder_nav_tracking=1
and below:
make image \
PROFILE="dynalink_dl-wrx36" \
PACKAGES="ccrypt diffutils gdbserver htop irqbalance mtr-nojson nano-full \
openssh-sftp-server patch tcpdump-mini tree wget-ssl \
block-mount kmod-usb-storage kmod-fs-cifs kmod-fs-exfat libblkid \
kmod-fs-ext4 kmod-fs-msdos kmod-fs-ntfs3 kmod-nls-cp437 kmod-nls-iso8859-1 \
kmod-nls-utf8 hostapd-utils wpad-openssl ca-certificates \
luci-ssl-openssl \
luci-app-adblock luci-app-banip luci-app-bcp38 luci-app-commands \
luci-app-nlbwmon luci-app-opkg luci-app-sqm luci-app-uhttpd \
luci-app-statistics collectd-mod-conntrack collectd-mod-cpufreq \
collectd-mod-ping collectd-mod-thermal collectd-mod-uptime \
kmod-tun luci-proto-wireguard unetd unet-cli \
iptables-nft ip6tables-nft ipset \
qosify kmod-sched-bpf \
-wpad-basic-mbedtls -libustream-mbedtls -libmbedtls" \
FILES="../files"
- firmware selector: keep a short text file on your PC with the package selection. Keep it updated and apply it as modification when using firmware selector