# Task D.7.8 Seed Manifest Setup State Persistence Date: 2026-07-03 Status: implemented ## Scope Delivered Added setup persistence schema and migration: - `setup_runs` - `setup_run_steps` - `seed_manifests` - `seed_manifest_items` - `drizzle/0004_setup_state_seed_manifest.sql` Added setup state services: - `src/features/setup/server/setup-state.service.ts` - `src/features/setup/server/seed-manifest.service.ts` Added protected setup run APIs: - `GET /api/setup/run/current` - `POST /api/setup/run/start` - `POST /api/setup/run/steps` - `POST /api/setup/run/complete` - `GET /api/setup/run/report` Updated CSV commit integration: - Successful non-dry-run CSV commits create seed manifest records. - Dry-run commits do not write seed manifest records. - Failed commits do not write seed manifest records. Updated Setup Wizard UI: - Loads current setup run on mount. - Shows resumable/completed setup run banner. - Shows persisted step statuses. - Saves readiness, CSV preview, CSV commit, and verification step outputs. - Marks dependent later steps stale when step input hash changes. - Shows persisted seed manifest summaries. - Adds complete setup action. - Wizard remains usable if persistence APIs fail, with a warning. ## Persistence Behavior - Step re-runs update the same `setup_run_steps` row. - Latest step report replaces prior step report. - CSV preview persistence strips raw row values before saving. - CSV commit persistence strips row-level raw details before saving. - Seed manifest item records store filenames, checksums, counts, status, and safe reports. - No raw CSV contents, passwords, password hashes, SQL errors, storage credentials, or secrets are persisted. ## Staleness Rules Implemented - `readiness` changes mark later setup steps stale. - `organization` changes mark administrator, scope, sequence, approval, CSV, and verification steps stale. - `scope` changes mark sequence, approval, CSV, and verification steps stale. - `sequences` changes mark verification stale. - `approval` changes mark CSV and verification stale. - `csv_preview` changes mark `csv_commit` stale. - `csv_commit` changes mark verification stale. ## Out Of Scope Preserved - No destructive reset/reseed behavior. - No `RESET_STEP` implementation. - No installation profile plugin runtime. - No CSV parser changes. - No setup template changes. - No storage or attachment import. - No new CRM behavior. - No production setup lock enforcement beyond completed status display. ## Validation - `npm run typecheck -- --pretty false` passed. - `npx oxlint src/features/setup src/app/api/setup src/app/dashboard/administration/setup src/db/schema.ts` passed. - `npm run db:migrate` passed and applied migrations successfully. ## Residual Notes - `plans/task-d.7.8.md` was untracked during implementation and was not modified as part of this delivery. - The Drizzle migration was added manually to match the current repository migration style and journal. - D.7.7 remains responsible for scoped reset/reseed behavior.