cocottetech/@platform/codebase/@features/ai-copilot/docs/mentorship-pairing.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

16 KiB
Raw Blame History

mentorship-pairing.screen

Implements brief AE §AE8 — the structured peer mentorship pairing. One mentor + one mentee, a scope-claim, four vigils of work, a 30-day check-in, optional mutual review on close. The codified shape is intentional (per AE-Q7): "free-form mentorship" is just colleague-state DM; this screen exists because the structure earns its keep.

Reached from peer-profile.screen.md (mentor side: "Offer mentorship" CTA when a peer matches your endorsed scope; mentee side: incoming offer surfaces in pending-approvals drawer + inline chat card). Voice register: working by default, hearth on welcome + round-1 start + clean close, plain on offboarding / scope-conflict / unilateral end (per 00-system-voice.md §V2).

Layout (iPhone — full-screen sheet; web companion mirrors)

┌─────────────────────────────────────────────────┐
│ ◄ Peers                                  ⋯ menu │ 56pt — top bar; ⋯ = end, report, share
├─────────────────────────────────────────────────┤
│  @sarah-k                                       │   mentor handle (never govt name; K3c-1)
│  scope: bookings-tryst listing optimization     │   scope-claim (AE7 shape)
│                                                 │
│  Round  ●─●─●─○   3 of 4                        │   round-progress (1..4, vigil-paced)
│  Started Apr 28 · next vigil Sun May 24         │   cadence anchor
├─────────────────────────────────────────────────┤
│                                                 │
│ ┌─────────────────────────────────────────────┐ │   round-detail (current vigil)
│ │ Round 3 · focus                             │ │
│ │ "Tighten the about-me opener. Two A/B       │ │
│ │  drafts in the drawer when you're ready."   │ │
│ │ Tap to expand notes →                       │ │   tap → expand inline notes
│ └─────────────────────────────────────────────┘ │
│                                                 │
│ ┌─────────────────────────────────────────────┐ │   shared-drafts (opt-in receiving)
│ │ Shared drafts                          2    │ │
│ │ • Tryst about-me · v3 · sanitized           │ │   sanitized: no prospects/journals/audit
│ │ • OF caption pattern · sanitized            │ │
│ │ [ +1 more this round ]                      │ │
│ └─────────────────────────────────────────────┘ │
│                                                 │
│ ┌─────────────────────────────────────────────┐ │   30-day check-in (when due)
│ │ 30-day check-in                             │ │
│ │ Continue another 4 vigils, or close clean?  │ │
│ │ [ Continue ]   [ Close clean ]              │ │
│ └─────────────────────────────────────────────┘ │
│                                                 │
│ ┌─────────────────────────────────────────────┐ │   mutual-review composer (post-end only)
│ │ Mutual review                               │ │
│ │ Both consent before either reads.           │ │   AE8 §5 + MNT-Q2
│ │ ▢ Honest, kind, scope-claimed.              │ │
│ │ [textarea ≤ 400 chars]                      │ │
│ │ [ Save draft ]              [ Submit ]      │ │
│ └─────────────────────────────────────────────┘ │
│                                                 │
└─────────────────────────────────────────────────┘

Components

Component Notes
Top bar Back + overflow (⋯). Menu: "end pairing", "report (AE10)", "share a draft" (mentor-only), "stop receiving drafts" (mentee-only).
Header block @handle + scope-claim text + round-progress dots (●●●○ etc.) + cadence anchor (start date, next-vigil date). Round-progress is the spine — read first by VoiceOver.
Round-detail card Current vigil's focus (mentor-authored, ≤ 200 chars) + tappable notes expansion. Notes are ai-mediated per AD opacity — sender writes in their language, recipient sees in theirs (per AE3 pipeline).
Shared-drafts list Mentor's sanitized specialist drafts the mentee opted into receiving. Each row is K3-gated + voice §V6-checked before publish. Rows are sanitized: never includes prospects, journals, audit, or per-client detail. Long-press = un-receive (opt-out of further drafts; survives the pairing).
30-day check-in panel Surfaces only when due (30d ± 24h from pairing start). Both peers see it; both must explicitly continue or close. Quiet otherwise — no fake-urgency.
Mutual-review composer Post-end only. Hidden until state ∈ {ended-clean, ended-unilateral}. Honors MNT-Q2 — current lean: both-or-neither (one peer not consenting → review-locked, neither reads).
Specialist register mentor's drafts inherit the specialist's register lean (per voice §V4); the pairing surface itself is working/hearth.

States

  1. offered-mentor-side — mentor opens a pairing with scope + 4-vigil window + capacity (default 1 per MNT-Q1 lean: cap 3). Card shows "Waiting for a mentee" with cancel affordance. Round-progress: ○─○─○─○.
  2. offered-mentee-side — incoming offer card in chat / pending-approvals. Header: "@sarah-k offers mentorship for bookings-tryst listing optimization — 4 vigils, starts when you accept." Actions: Accept · Set aside · Decline-with-reason.
  3. accepted — transient: both peers see hearth-register receipt ("Round 1 starts on the next vigil. Mentor's drafts arrive opt-in"). Lasts until vigil-1 boundary.
  4. active-round-1 — round-progress ●─○─○─○. Round-detail card live; shared-drafts list empty unless mentor has pushed any. Hearth on welcome strip.
  5. active-round-2 — ●─●─○─○. Standard layout.
  6. active-round-3 — ●─●─●─○. Standard layout.
  7. active-round-4 — ●─●─●─●. Working register; final-round strip: "Last round. Wrap-up notes drafted by your mentor."
  8. 30d-check-in-pending — panel surfaces with continue/close decision. Both peers' explicit action required; no auto-advance.
  9. ended-clean — both peers chose close (or completed 4 rounds + check-in continue=no). Mutual-review composer unlocks. Hearth-register footer: "Four vigils kept. Review when ready."
  10. ended-unilateral — one peer ended early (set-aside-permanent, declined-continue at check-in, or AE10 sanction). Plain-register cue: "Pairing ended {category}. {Continue solo or request a new mentor.}" Mutual-review composer suppressed for the unilateral-ender; offered to the other peer one-sided per MNT-Q2.
  11. mentor-offboarded-mid-pairing — mentor entered incognito (AE11), erased (brief V), or got AE10-sanctioned during an active round. Mentee sees plain-register cue (per AE edge case): "Your mentor pairing ended. {Reason category}. Continue solo or request a new mentor." Shared-drafts list redacts retroactively if V erasure ran on mentor side (rows show "draft withdrawn"); the row metadata stays in audit (brief I append-only).
  12. review-open — both peers submitted reviews under both-or-neither (MNT-Q2 current lean). Reviews become readable to both. Hearth on positive, working on neutral, plain if any rubric flagged.
  13. review-locked — one peer didn't consent / didn't submit within the review window (default 14d post-end). Neither peer sees the other's draft; submitter's own draft remains in their audit but is never delivered.

Interactions

  • Tap round-detail → expand mentor's notes inline (ai-mediated translation per AD; "view what your mentor literally wrote" affordance per AE3 — the only AD opacity break, two-sided consent at pairing-accept time).
  • Long-press shared-draft → "Stop receiving drafts" (un-receive; opt-out of further drafts in this pairing; doesn't retroactively redact past drafts on mentee side).
  • Swipe sheet down on mutual-review composer → save-draft (resumes from drafts on next open; never auto-submits).
  • Tap 30-day Continue → resets the 30-day timer; round counter does not reset (rounds 14 are the contract; check-in is a meta-decision about continuing the relationship).
  • Tap 30-day Close clean → pairing → ended-clean; mutual-review composer unlocks.
  • Overflow → End pairing (either side) → confirmation sheet ("End now? Mutual review opens after. Both peers must consent to share reviews."). Plain register on the confirm.
  • Overflow → Report (AE10) → routes to coop / platform-admin per AE10. Suspends shared-draft sharing immediately.
  • Pull-to-refresh → re-pulls round-detail + shared-drafts (rate-limited).
  • VoiceOver order — handle → scope-claim → round-progress → current-round focus → shared-drafts count → 30d / review (whichever applies) → actions.

In-the-wild copy

  • (hearth, accepted receipt) "Round 1 starts on the next vigil. Sarah-K's drafts arrive opt-in — long-press to stop any time."
  • (working, round-3 focus) "Tighten the about-me opener. Two A/B drafts in the drawer when you're ready."
  • (working, 30-day check-in nudge) "30 days in. Continue another four vigils, or close clean?"
  • (hearth, ended-clean wrap) "Four vigils kept. Review when ready — both peers must consent before either reads."
  • (plain, mentor-offboarded mid-pairing) "Your mentor pairing ended. {Mentor stepped back / Sanction in effect / Erasure ran}. Continue solo or request a new mentor."
  • (plain, scope-claim conflict) "@sarah-k endorsed you for Mandarin-speaking subject handling, not bookings-tryst. Accept the pairing anyway, or ask for a re-scoped offer?"
  • (plain, review-locked) "Your review wasn't delivered — the other peer didn't submit theirs. Your draft stays in your audit."

Edge cases

  • Mentor enters incognito (AE11) mid-pairing — feed surfaces suppress per AE11, but the active pairing persists (consent existed at acceptance). Shared-drafts stop arriving until mentor switches back to discoverable. Mentee sees plain strip: "Mentor paused discoverability. Active rounds continue; new drafts paused."
  • Scope-claim conflict — mentor endorsed mentee for a different scope than the pairing offer (e.g. endorsed for Mandarin handling but offering pairing on Tryst optimization). Surfaces at accept-time; mentee can accept anyway or request re-scoped offer. Audit row captures the mismatch.
  • Brief V erasure on mentor side — sanitized drafts redact retroactively in the shared-drafts list ("draft withdrawn"); pairing state moves to mentor-offboarded-mid-pairing. Mentee's local audit row persists (append-only per brief I).
  • Mentee in vacation mode (brief H §H1) — incoming round-detail notifications queue; surfaces on vacation exit. Round-progress doesn't auto-advance during vacation (next-vigil date recomputed).
  • Mentor hits MNT-Q1 simultaneous-mentee cap (lean: 3) — new offer attempts blocked with plain cue: "You're mentoring 3 already — close one to offer another."
  • K3 leak in a shared draft — never delivered to mentee; counter-action row written; mentor sees plain cue ("Held a draft back — contains restricted content. See audit for the row.").
  • Both peers in different languages — round-detail + shared-drafts pass through AD opacity pipeline (sender's language → recipient's language, no "translated from" annotation). The verbatim-view affordance from AE3 applies on the recipient side only.
  • Cross-org mentorship attempt at P0 (per AE-Q6) — blocked: "Personal pairings only. Org-attributed mentorship is coming."
  • Reduced motion — round-progress dots replace fill animation with crossfade.
  • Dynamic Type XXL — header block stacks; round-progress dots scale; check-in panel actions stack vertically.
  • Brief AE §AE8 — parent spec; pairing lifecycle + schema (peer_mentorships table).
  • Brief AE §AE2 — colleague-state prerequisite for a pairing offer.
  • Brief AE §AE5 / AE7 — scope-claim shape inherited from endorsements.
  • Brief AE §AE11 — incognito posture interaction.
  • Brief AD — opacity + storage triad for round-detail + shared-drafts.
  • Brief K §K3 — PII gate on shared-drafts publish.
  • Brief I — append-only audit of pairing events.
  • Brief V — erasure flow redacts shared-drafts on mentor offboarding.
  • Brief L — specialist drafts are the source for shared-drafts.
  • approval-card.screen.md — 30-day check-in shape inherits the round-progress + binary-decision pattern.
  • peer-profile.screen.md — entry point: mentor "Offer mentorship" CTA + mentee incoming offer.
  • 00-system-voice.md §V2 — register selection (hearth on welcome, working on round-detail, plain on offboarding / scope-conflict).

Out of scope

  • Free-form mentorship (just colleague-state DM via peer-dm.screen.md; pairing screen exists because of the codified rounds).
  • Group mentorship / cohort pairings (P5+; salons cover loose group learning today).
  • Org-attributed mentorship (per AE-Q6, P5+).
  • Money handling for paid mentorship (brief Z).
  • Auto-suggestion of mentor pairings by strategist (per MNT-Q3 lean: strictly opt-in offers from peers; no model-initiated pairings).
  • Global mentor rating / leaderboard (per AE7 — no aggregated scores).

Open questions

  • MNT-Q1 Default cap on simultaneous mentees per mentor. Lean: 3. Higher caps risk diluting the "tended to" quality the codified shape is meant to enforce; lower caps (1) feel artificial.
  • MNT-Q2 Mutual-review visibility — both-or-neither (review-locked if one peer doesn't consent) vs unilateral (each peer's review delivered independently). Lean: both-or-neither. Protects against unilateral score-attacks; preserves the "mutual" in mutual review.
  • MNT-Q3 Mentor specialist-draft sharing — auto-suggest (mentor's specialist proactively offers candidate drafts to share) or strictly opt-in (mentor manually picks each shared draft). Lean: strictly opt-in. Auto-suggest risks accidental K3 leaks + dilutes the mentor's editorial judgment; opt-in keeps the mentor in the loop.