# Phase 1 Production Preflight Evidence — 2026-08-06 ## Source / Assumption / Unknown / Decision Required - Source: SSH read-only inspection of `hz-prod-01`, `/app/kartsell/current`, remote Kestrel, and PostgreSQL through the configured application connection. - Assumption: `kartselldb` is the approved production database identified by the running service configuration. - Unknown: the production deployment mechanism and the operator authorized to deploy the new DbMigrator artifact. - Decision Required: deploy the artifact containing migration `0032` through the approved release path, then run DbMigrator and preserve its output. ## Confirmed remote facts ```text Host: hz-prod-01 Service: kartsell.service = running Application path: /app/kartsell/current API: 127.0.0.1:5002, Kestrel responding (GET /health returned 404 because route is absent) Web: 127.0.0.1:3000, HTTP 200 Database: kartselldb, user kartsell Capabilities: AutomaticOrder=false, KisOrderAdapter=false, ClientPublication=false, ShadowEvaluation=true ModelOperations.Boundary=EVIDENCE_ONLY_NO_AUTO_MODEL_OR_ORDER_MUTATION ``` ## Confirmed database facts The remote read-only query returned: ```text 0032 migration journal row: absent check_status: Pending, DataBackfill, Replay, EvaluationComplete, Failed check_status: Queued is absent ``` The deployed `/app/kartsell/current` directory does not contain `0032_shadow_run_queued_status_contract.sql`. ## Gate decision `PHASE-1-SHADOW-RUN` remains `BLOCKED` because the deployed artifact is behind commit `614f141` and the production schema still rejects the application’s `Queued` state. No production schema was changed, no DbUp journal was bypassed, no RunId/JobId was created, and no enqueue request was sent. ## Corrective sequence 1. Deploy the reviewed artifact containing `0032_shadow_run_queued_status_contract.sql` and the matching DbMigrator through the approved release path. 2. Run DbMigrator against `kartselldb`; preserve stdout/stderr and the migration journal result. 3. Re-run the read-only constraint query and verify `Queued` is present. 4. Freeze the approved server-side VersionSet and record it. 5. Generate new RunId, JobId, JobRunId, CorrelationId, and Idempotency-Key. 6. Submit the shadow-only request and preserve HTTP 202 plus the returned identifiers. Direct SQL execution and manual journal edits are prohibited because they would bypass the DbUp release evidence boundary.