# title
Kitsuno Handshake v0.2 — L3 Release (vacancy → seeker)

# description
The human hand-off message. After reviewing the L2 disclosure, the vacancy poster (human, in their dashboard) clicks 'Engage' / 'Release L3'. This message carries the additional information load — hiring manager identity, exact compensation, confidential client identity (if applicable), interview scheduling, internal context. The protocol delivers this event to the conversation registered L3 endpoint and emits the corresponding signal (signal.json: l3_disclosed, carrying destination). What the receiving product does with it - draft an application, create a recruiter-inbox row, fire a CRM webhook, or nothing - is operator-defined and OUT of protocol scope; the handshake itself drafts and sends nothing. Billing follows pay-for-resolution-not-outcome: a charge attaches when L3 is requested or disclosed and resolves to accept or decline (both are signals); only pure ghosting (no response within the window) refunds. L1/L2 (anonymous tiers) are never billed.

# properties.released_by.description
Who released L3. actor_type=human records the poster who clicked Engage (on_request intake). actor_type=agent_with_pre_authorization records an auto-release: either the vacancy is on_match and the seeker's consent_policy.agent_may_release_l3_without_human_review=true (standing auth), or the seeker set l3_at_fit=true on a direct application (situated auth). On any agent-pre-authorized release the seeker is sent an l3_disclosed signal carrying destination (where the identity went) - the structural floor for a disclosure the seeker did not witness.

# properties.hiring_manager.description
L3 reveal of the hiring manager. Always L3 (not configurable).

# properties.client_identity.description
For posting_visibility=confidential, the client identity is revealed here at L3 — this is the moment retained-search firms disclose to the candidate. For posting_visibility=named, this is redundant with vacancy-card.company_name but included for completeness.

# properties.compensation_breakdown.description
Detailed compensation. May exceed what was shown at L1 (which is the headline range).

# properties.calendar_link.description
Direct booking link for the first round (Calendly / similar).

# properties.internal_team_context.description
What the role is replacing / expanding. Useful context for the candidate (e.g., 'You'd be partnering with our Head of Engineering on the new fintech vertical').

# properties.performance_metrics.description
What success looks like in the first 90 days / first year for this role.

# properties.next_step_message.description
Free-form message from the poster to the candidate. Writer surfaces this at the top of the drafted application.

# properties.expires_at.description
When this L3 release expires. Default 14 days from released_at — also the auto-refund deadline for the poster's credit balance.