---
gsd_state_version: 1.0
milestone: v1.0
milestone_name: milestone
status: executing
last_updated: "2026-03-23T09:21:09.028Z"
progress:
  total_phases: 2
  completed_phases: 1
  total_plans: 4
  completed_plans: 1
---

# Project State: v1.5 -- Sidecar Startup Architecture

**Initialized:** 2026-03-23
**Status:** Executing Phase 01

---

## Project Reference

See: .planning/PROJECT.md (updated 2026-03-23)

**Core value:** Zero Stathera gaps and overlaps across every restart, every midnight boundary, every deploy -- verified by continuous telemetry.
**Current focus:** Phase 01 — modularize-long-files-live-engine-rs-checkpoint-py-backfill-py

## Current Position

Phase: 01 (modularize-long-files-live-engine-rs-checkpoint-py-backfill-py) — EXECUTING
Plan: 1 of 3

## Accumulated Context

### Decisions

- [v1.5 init]: Yesterday repair is verify-first -- check integrity, only repair if broken
- [v1.5 init]: Sidecar never repairs yesterday inline -- defers to kintsugi's 24-worker parallel engine
- [v1.5 init]: Integrity check = crossover TID alignment + Stathera audit (zero gaps, zero overlaps)
- [v1.5 init]: Parameter-free midnight crossover already shipped (CH seed + API-max, self-validated)
- [v1.5 init]: Kintsugi modularization already shipped (9-file package)
- [v1.5 init]: Sidecar modularization already shipped (midnight.py has crossover + validation)
- [01-01]: Renamed signal.py to yesterday_signal.py to avoid stdlib signal module collision
- [01-01]: Used local import for write_yesterday_signal to avoid module-level shadowing
- [02-01]: Yesterday shards prepended before sort (not artificial sort key) -- simplest approach
- [02-01]: Signal cleanup deferred until ALL yesterday shards processed (budget-safe)
- [02-01]: Deduplication by (symbol, threshold) removes normal discovery duplicates

### From v1.4

- committed_floors fix, midnight preflight, heartbeat overhaul, WS resilience, seeder REST fallback, memory efficiency
- Writer ownership: sidecar owns today, kintsugi owns yesterday+older
- overlap_strategy="replace" causes 300s DELETE scan on 6000+ parts -- root cause of slow yesterday repair

### Performance Metrics

| Phase | Plan  | Duration | Tasks | Files |
| ----- | ----- | -------- | ----- | ----- |
| 01    | 01-01 | 14m45s   | 2     | 4     |
| 02    | 02-01 | 4m35s    | 2     | 3     |

### Pending Todos

None.

### Roadmap Evolution

- Phase 1 added (post-v1.5): Modularize long files: live_engine.rs, checkpoint.py, backfill.py

### Blockers/Concerns

None.
