build-site.sh staged only shopdb/, the chosen plugins/ and frontend-dist, so the output could be imported but not run or migrated. The Windows installer had to assemble wsgi.py, requirements.txt, migrations/ and deploy/ separately, which meant it could assemble a payload whose plugin set did not match the profile the tree was staged from. Stage those runtime files, and copy the profile in as site-profile.json so the set is self-describing: `flask plugin apply-profile` at provisioning reads the same profile the tree was built from, so installed plugins and shipped plugin code cannot drift. frontend-dist keeps its name; CI reads that path (ci.yml:79). The closing hint now spells out `prune-schema --yes --force`. ADR-014's prose says lean provisioning "uses --force", but --force alone only permits dropping non-empty tables; without --yes the command is a dry run that prints a preview and exits, so following the ADR literally silently skips the prune.
3.8 KiB
Executable File
3.8 KiB
Executable File