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

6.6 KiB
Raw Blame History

Vigil-close digest · screen

The morning surface where a closed vigil becomes a readable journal entry + activity recap. Pairs with brief Q §Q1Q2 and brief I §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?

  • brief Q §Q1, Q2.
  • brief I §I1 daily digest (this screen is a richer cousin).
  • brief A §State 1 first-run empty (which this card replaces post-onboarding).
  • voice §V2a hearth register for journal copy.