The engine built staging as `LIKE dest` and merged into it without ever
checking the destination existed — a missing dest (e.g. a file-based deploy
that never went through the web wizard) failed deep in the staging step with
a raw `relation ... does not exist`.
Add `engine/dest.reconcile_dest()`, called as step 3b of run_module (after the
dry-run return, before staging):
- missing + not create -> DestError telling the user to pass --create-dest
- missing + create -> CREATE SCHEMA + CREATE TABLE from the module's
column map
- exists -> fail loudly if any mapped column is absent (drift);
no auto-ALTER, since the positional load can't
tolerate a mid-table add
Expose via `pipekit run --create-dest`. Default (scheduled groups, API) is
unchanged: validate-and-fail, never silently provision.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .archive/pre-rewrite | ||
| bin | ||
| config | ||
| pipekit | ||
| systemd | ||
| .gitignore | ||
| CLAUDE.md | ||
| config.yaml | ||
| deploy.sh | ||
| reconcile.py | ||
| requirements.txt | ||
| SPEC.md | ||