# Phase 35.3: psyche-sync-setup-ux-pass-error-display-doctor-partial-docs - Discussion Log

> **Audit trail only.** Do not use as input to planning, research, or execution agents.
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

**Date:** 2026-05-29
**Phase:** 35.3-psyche-sync-setup-ux-pass-error-display-doctor-partial-docs
**Areas discussed:** Doctor evidence source, Doctor row UX, Recovery doc home & depth, Error-format test scope, (user-added) Non-git project sync bug

---

## Gray-area selection

| Option | Description | Selected |
|--------|-------------|----------|
| Doctor: evidence source | Probe-only vs persist `accept_flow_attempt_ts` (schema touch) | ✓ (Claude-decided) |
| Doctor: row UX | Severity + remediation wording | ✓ (Claude-decided) |
| Recovery doc home & depth | SKILL.md inline vs sibling; minimal vs full procedure | ✓ (Claude-decided) |
| Error-format test scope | Flip-only vs add regression test | ✓ (Claude-decided) |

**User's choice:** "agent decides all using best judgment." Plus a user-added fifth item (see below).
**Notes:** Issues 4 & 5 were pre-locked by the seed (one-char flip + exit-code bullet) and not put up for discussion. The user delegated the four real gray areas to Claude and added a new behavioral bug to roll in.

---

## Doctor: evidence source

| Option | Description | Selected |
|--------|-------------|----------|
| Probe-only | When state=Unset, check seed origin remote + `git ls-remote origin`; no schema change | ✓ |
| Probe + timestamp | Also persist `accept_flow_attempt_ts` pre-push for never-vs-failed distinction | |

**Decision:** Probe-only (D-03/D-04). Timestamp persistence deferred — avoids a SyncSettings schema change under the shared-users backward-compat constraint. Probe must be timeout-bounded and degrade non-fatally.

---

## Doctor: row UX

**Decision:** Warn severity (Fail reserved for `state=Failing`); message points operator at the idempotent re-run of `/spt:psyche-sync-setup` (D-06/D-07).

---

## Recovery doc home & depth

**Decision:** Inline in SKILL.md, minimal + pointer depth (re-run → doctor → --disable → seed/rebase last-resort one-liner). No sibling doc/ADR. 35.2's per-ref dispatcher output obsoletes the old `git update-ref` workaround (D-08).

---

## Error-format test scope

**Decision:** Add a lightweight unit test asserting no Debug-struct syntax in `SyncError`/`GitError` Display output — regression guard for the flip (D-12).

---

## Non-git project sync bug (user-added)

| Aspect | Captured |
|--------|----------|
| Symptom | Non-git host project on `$LIVE start` → gh/git false-negative → `tracked/projects/<name>/` context never synced |
| Disposition | In scope for 35.3 (D-09); behavioral fix, scope shift from polish-only |
| Root cause | UNCONFIRMED — researcher must investigate (D-10); suspected D-02 silent-degrade path |

**User's choice:** explicitly directed to "roll in" this fix as a UX bug.
**Notes:** Flagged for possible split to 35.4 if research shows it's larger than a localized gating fix.

---

## Claude's Discretion

- All four original gray areas (Doctor evidence, Doctor row UX, Recovery doc, Error-format test) decided by Claude per user delegation. Recorded as D-03 through D-08 and D-12 in CONTEXT.md.

## Deferred Ideas

- `accept_flow_attempt_ts` in SyncSettings — stronger partial-state signal; deferred to avoid schema change.
- Possible split of Issue 7 into its own phase (35.4) if root-cause proves large.
