# Hertz Session RCA Bundle

**Date:** 2026-07-10  
**Purpose:** Triage-ready reports for issues diagnosed on HFENDULEAM/ENLYZEAM during this session.  
**Constraint observed:** No live daemon or online endpoint was stopped, restarted, or killed during diagnosis.

## Reports

1. [`01-pty-freeze-rca.md`](01-pty-freeze-rca.md)  
   Historical v0.30.4 `SharedSend`/non-draining resume wedge is pinned and already structurally remediated. Residual freeze remains incident-gated. Proposed work: identity-bearing lifecycle instrumentation and deterministic black-holed-controller harness under the existing W6 overlap.

2. [`02-mesh-isolation-rca.md`](02-mesh-isolation-rca.md)  
   HFENDULEAM/ENLYZEAM self-sequester through a peer-address deletion trap: a failed dial deletes the exact route, retry falls to failing ID-only discovery, and correct roster addresses are ignored until a successful connection that cannot occur. Includes a separate persisted cache key/ID invariant defect and honest-health requirements.

3. [`03-cli-project-index-latency-rca.md`](03-cli-project-index-latency-rca.md)  
   `endpoint list` and picker startup synchronously spawn 100+ Git processes to derive informational project metadata. Proposed work: persistent daemon-maintained materialized project index, asynchronous generation-aware refresh, event-driven invalidation, atomic last-known-good storage, and zero synchronous Git on CLI read paths.

## Agreed triage outcome

Doyle read all three reports and spot-verified the load-bearing code citations.

- **PTY:** no new consolidated milestone scope and no speculative residual fix. v0.31.0 W6/F-039 already landed the core connection attribution, timestamps, lifecycle records, and a count-seam black-hole harness. Retain only independent-progress and indefinite-writer discriminator seeds; Hertz owns the next timestamped-incident correlation.
- **Mesh Recovery:** next-milestone priority recommendation. One contract with three waves: resolver/retention/reconcile; cache invariant plus roster-based migration; stage-specific telemetry plus truthful health. Health remains in the same milestone as the acceptance surface. No speculative route-rotation machinery.
- **Persistent Project Index:** second next-milestone recommendation, subject to operator ordering at the v0.32.0 boundary. `spt-store` owns format/read semantics; daemon owns the sole asynchronous writer; branch-tip fingerprints plus debounced/periodic reconciliation handle multiple context mutation paths. Complexity counters are the CI gate; wall-clock latency is manual acceptance.

Formal REQs will be minted registry-first at JIT dispatch, not prematurely during triage.

## Cross-report principles

1. Status must represent user-meaningful progress, not merely a live loop or allocated local host.
2. Informational enrichment must not block control surfaces.
3. Recovery state must be reconstructible from a durable source without requiring the connection it is meant to establish.
4. Derived caches require explicit invariants, schema/versioning, atomic replacement, and repair semantics.
5. Timeout tokens must identify the stage that consumed the bound.
6. Regression tests should assert observable behavior and complexity/lifecycle invariants, not source text.

## Resolved design decisions

1. Mesh health semantics stay in the same contract as cache recovery.
2. `spt-store` owns the project-index format/read API; the daemon is sole writer.
3. Multiple context-store mutation paths require branch-tip fingerprinting plus debounced and periodic reconciliation.
4. W6 already landed the main PTY attribution scope; do not mint duplicates.
5. Mesh Recovery precedes Project Index in Doyle's recommendation because permanent reachability loss outranks latency, while preserving the operator's right to reverse order at the milestone boundary.
