cocottetech/@platform/codebase/@features/ai-copilot/docs/vigil-close-digest.screen.md
natalie 1b719e1fd7 chore(bootstrap): initial V4 commit
Clean successor to V3 (forge: lilith/atlilith). Seeded from local Mac
working tree at ~/Code/@projects/@cocottetech/. node_modules and build
artifacts excluded via .gitignore.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 08:11:41 -07:00

113 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Vigil-close digest · screen
The morning surface where a closed vigil becomes a readable journal entry + activity recap. Pairs with [brief Q](./Q-vigil-journal-auto-conversations.brief.md) §Q1Q2 and [brief I](./I-audit-trust-replay.brief.md) §I1 (daily digest).
## When it fires
Vigil-detector closes a vigil when activity gap exceeds N hours (per v2 heuristics; defaults preserved). Closure fires `vigil-journal-generator`. When Quinn next opens CocotteAI after the close, this digest is the **first message in chat-home** from ai-copilot.
## Layout
```
┌────────────────────────────────────────┐
│ ai-copilot · today, 06:18 │
│ │
│ ◐ Vigil closed at 04:42 │
│ eight hours, twenty drafts, six │
│ receipts. │
│ │
│ Journal — auto-drafted │
│ ┌──────────────────────────────────┐ │
│ │ A slow morning. Tryst stayed │ │
│ │ steady, OF held two warm threads,│ │
│ │ and the Berlin tease cooled │ │
│ │ overnight. Mood: even. Worth │ │
│ │ re-warming Friday. │ │
│ │ │ │
│ │ Mood: even Tags: #of #berlin │ │
│ │ Mentions: @felix, @sasha │ │
│ └──────────────────────────────────┘ │
│ [ feels right ] [ re-tag ] ⋮ │
│ │
│ Receipts │
│ · Bumped Tryst 6× · TS4Rent 6×
│ · Posted 4 to X, 1 to OF │
│ · Drafted 12 DMs (sent 9, queued 3) │
│ · 1 retry: Tryst @ 03:14 → OK 03:16 │
│ │
│ 3 things want your eyes │
│ · @felix · OF · waiting since 02:11 │
│ · Tryst inquiry · waiting since 03:40 │
│ · OF post draft · 8pm slot │
│ │
│ [ open queue ] │
└────────────────────────────────────────┘
```
## Three layered blocks
The card has a deliberate visual hierarchy: **journal** (hearth, generative) → **receipts** (working, terse) → **call-outs** (working, decision-bound).
### Block 1 · Vigil header
- Phase glyph + duration + small counts (drafts / receipts).
- Hearth register, never urgent.
### Block 2 · Journal (auto-drafted)
- Claude-drafted paragraph (per `JOURNAL_MODEL_VERSION`).
- Mood + tags + mentions ribbon below.
- **Feedback affordances** (per Q2 correction-loop):
- `feels right` — implicit endorsement, model learns positively.
- `re-tag` — opens a small editor for mood + tags; correction lands in the journal-generator training loop.
- overflow `⋮`:
- `add a note from me` — Quinn-authored addendum, stored alongside.
- `delete this entry` — soft-delete; preserved for moderator/audit per Q open question.
- `make it private from peers` — never publishable upward (already the default; toggle reaffirms).
### Block 3 · Receipts (audit summary)
- 46 lines, plain enumeration.
- Tap any line → opens audit drawer (brief I §I2) scoped to that slice.
- Working register — never decorative.
### Block 4 · Call-outs (what wants Quinn's eyes)
- Up to 3 highest-priority items: inbox-warm-and-waiting, approval-queue-aging, scheduled-post-needs-final.
- Each line is tappable to its source (prospect drawer / approval card / content-plan drawer).
- `open queue` button collapses these into the full approval queue drawer.
## States
1. **Typical** (shown above).
2. **Quiet vigil** (low activity) — journal short, receipts collapsed to "kept steady, nothing notable", call-outs may be empty.
3. **Loud vigil** (failures, escalations) — journal mood likely "uneven"; receipts list failure lines first; call-outs prioritize escalations.
4. **Journal generation failed** — fallback:
> Cocotte couldn't draft the journal this morning. Receipts below. Try again in chat.
5. **First-ever vigil** (D-onboarding handoff) — journal block replaced by:
> First vigil on record. She'll start journaling from here on.
6. **Vigil still open** (Quinn opened the app mid-vigil) — different card entirely; this digest doesn't render until close.
7. **Privacy reminder** (every Nth open; tunable) — appended footer:
> Journals stay with you. Cocotte never sends them, never quotes them in outbound.
## Privacy invariants (rendered as part of the screen contract, not just brief Q text)
- Journal text is `outbound_suppressed=true` at the adapter boundary — never echoed into a DM draft.
- Mentions (@felix, @sasha) are tappable inside Quinn's drawers but never serialized into anything that ships to those prospects.
- The "make it private from peers" toggle is **always already on** for journals. The toggle exists so Quinn can confirm the invariant visually; it cannot be flipped off in P0.
## Gestures
- **Swipe down on the journal block**: collapses to a one-line summary, leaves receipts + call-outs visible. Persists for the rest of the day.
- **Long-press the journal block**: opens journal-entry detail (B5-adjacent drawer) with full text, full mention list, history of corrections.
- **Tap any mention chip**: opens prospect drawer (B3) scoped to that prospect's cross-vigil mention history (per Q open question Q-Q3, default-on).
## Edge cases
- **Multiple vigils since last open** (Quinn was away 2 days) — stack the digests, most recent first; offer "summarize all" affordance that asks ai-copilot to produce a meta-summary.
- **Vigil closed but call-outs already actioned** (Quinn handled them on web companion) — call-outs section shows "all caught up — nothing waiting."
- **Tag conflict** (journal-model tagged `#anxious`, Quinn re-tagged `#focused` last vigil; this vigil's draft uses `#anxious` again) — small inline note:
> Last time you re-tagged a similar entry. Want the model to lean your way?
## Related
- [brief Q](./Q-vigil-journal-auto-conversations.brief.md) §Q1, Q2.
- [brief I](./I-audit-trust-replay.brief.md) §I1 daily digest (this screen is a richer cousin).
- [brief A](./A-chat-surface.brief.md) §State 1 first-run empty (which this card replaces post-onboarding).
- [voice](./00-system-voice.md) §V2a hearth register for journal copy.