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>
16 KiB
16 KiB
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
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: ○─○─○─○.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.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.active-round-1— round-progress ●─○─○─○. Round-detail card live; shared-drafts list empty unless mentor has pushed any. Hearth on welcome strip.active-round-2— ●─●─○─○. Standard layout.active-round-3— ●─●─●─○. Standard layout.active-round-4— ●─●─●─●. Working register; final-round strip: "Last round. Wrap-up notes drafted by your mentor."30d-check-in-pending— panel surfaces with continue/close decision. Both peers' explicit action required; no auto-advance.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."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.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).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.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 1–4 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.
Related
- Brief AE §AE8 — parent spec; pairing lifecycle + schema (
peer_mentorshipstable). - 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.