---
phase: quick
plan: 260325-fij
subsystem: deploy-pipeline
tags: [odb-ship, heartbeat, seeder, kintsugi, stathera]
dependency_graph:
  requires: []
  provides: [post-deploy-health-guarantee]
  affects: [odb-ship-skill]
tech_stack:
  added: []
  patterns:
    [
      seeder-trigger-before-sidecar,
      kintsugi-rate-limit-clear,
      cross-day-stathera-check,
    ]
key_files:
  modified:
    - .claude/skills/odb-ship/SKILL.md
decisions:
  - "Seeder triggered via systemd oneshot (not Python API) for consistency with existing service patterns"
  - "Kintsugi rate-limit clear placed after sync_flush to avoid interfering with sidecar's initial writes"
  - "Boundary Stathera check uses argMaxIf/argMinIf with FINAL for correctness on RMT"
metrics:
  duration: "2min"
  completed: "2026-03-25T18:14:28Z"
  tasks: 1
  files: 1
---

# Quick Task 260325-fij: Update odb-ship to Guarantee Healthy Heartbeat Summary

Three new pipeline steps in odb-ship SKILL.md ensure the first heartbeat after deploy is clean by refreshing Parquet caches, clearing kintsugi rate limits, and verifying cross-day Stathera continuity.

## What Changed

### Task 1: Add post-deploy health guarantee steps to odb-ship SKILL.md

**Commit:** `02ef077`

Three insertions into the deploy pipeline:

1. **Section 4.3b "Refresh Parquet Tick Cache"** -- Triggers the Binance seeder via systemd oneshot after clearing stale streaming checkpoints. Waits for completion and verifies Parquet files exist for all 16 symbols. Ensures the sidecar's SEED-001 Parquet-first catchup has data, avoiding slow full REST fill.

2. **Section 4.6c "Clear Kintsugi Rate Limit and Wait for Yesterday Repair"** -- After sync_flush completes and kintsugi starts, truncates `kintsugi_log` to remove stale rate-limit entries, restarts kintsugi, and polls journalctl for a completed yesterday-repair pass (10 min timeout). Cross-references the existing Lessons Learned entry.

3. **Section 5.2b "Yesterday-to-Today Stathera Boundary Check"** -- ClickHouse query using `argMaxIf`/`argMinIf` with FINAL to find the last TID of yesterday and first TID of today per (symbol, threshold). Reports any non-zero `tid_delta` as gaps or overlaps. Added "Yesterday-Today Boundary" row to the Phase 5 Verdict Table.

## Pipeline Order Verification

The three new steps are correctly ordered in the pipeline:

- 4.3b (seeder) -- after checkpoint clearing, before venv swap and sidecar start
- 4.6c (kintsugi clear) -- after sync_flush and Stathera audit, after kintsugi start
- 5.2b (boundary check) -- in Phase 5 verification, after ClickHouse ping

## Deviations from Plan

None -- plan executed exactly as written.

## Known Stubs

None.

## Self-Check: PASSED

- [x] `.claude/skills/odb-ship/SKILL.md` modified with all 3 sections
- [x] Commit `02ef077` exists
- [x] Verification grep count >= 4 (got 5)
