# title
Kitsuno Handshake v0.2 — L1 Fire (seeker → vacancy)

# description
L1 message — the seeker agent signals interest in a vacancy after policy_match passes. POSTed to the vacancy's l2_delivery_target (when applicable for primary cards) OR queued for outside-Kitsuno digest (mirror cards). HMAC-signed with Stripe-style signature header.

# properties.event_id.description
Idempotency key — receivers MUST deduplicate by this.

# properties.initiated_by.description
Who originated this fire. 'agent' = the seeker agent fired autonomously under consent_policy.agent_may_signal_interest_without_human_review (passive discovery; ambient, high-volume; a terminal L2 no-match is SILENT). 'human' = a direct application by the principal (see seeker-application.json); the human-acted property obligates a report-back signal on terminal L2 no-match and permits an inline l3_at_fit. Absent = 'agent'.

# properties.conversation_id.description
Stable identifier for this seeker↔vacancy handshake. Used in all subsequent state transitions.

# properties.seeker_card_url.description
Where the vacancy agent should GET the seeker card.

# properties.policy_match_result.description
Audit trail of which criteria from handshake_policy matched. Receivers may store for analytics; not required for decision logic.

# properties.seeker_verification.description
Attestation the receiver can use to short-circuit verification of the seeker.

# properties.callback_url.description
Where the vacancy agent POSTs the vacancy-signal response (to express interest back at the seeker).

# properties.ttl_seconds.description
Seconds before this L1 expires if no vacancy-signal received. Default 14 days.