# Outcome Standards

A standard is a file, versioned and public. A commitment cites the standard id and version it was accepted under, and that version governs it for its whole life. Rulebook 0.4.0.

Each standard below carries the SHA-256 of the canonical JSON (RFC 8785) of its published file. Recompute it from the file and compare; a standard that changed would change its hash.

The verification engine that runs these criteria is not built yet. What a unit will be checked against is stated here in full so it can be read, hashed, and argued with before anyone relies on it. Machine-readable: https://recourse-mu.vercel.app/repr/json/standards.

## OS-1 Support Resolution (v0.4.0)

Verify that a vendor's agent resolved a customer conversation without human handoff, so the vendor is paid per resolution and the buyer pays only for resolutions that hold.

Unit: One customer conversation resolved by the vendor's agent without human handoff.
Dedupe key: conversation_id
Standard hash: sha256:06c0dd79f36093e9d90cbde1a7f0ae192267b57e6bac189ea6bee07befb75590
Windows: statement_dispute_hours=120h, evidence_hours=48h, inactivity_hours=72h

Acceptance criteria:
- c1 (deterministic, required): No human handoff
    Check: {"==":[{"var":"fields.handoff"},false]}
- c2 (deterministic, required): Closure marker present
    Check: {"or":[{"!=":[{"var":"fields.closed_at"},null]},{"!=":[{"var":"fields.inactivity_marker_at"},null]},{"==":[{"var":"connector.customer_confirmed_close"},true]}]}
- c3 (deterministic, required): Conversation id unique within the commitment
    Check: {"==":[{"var":"connector.recourse.dedupe_matches"},0]}
- c4 (deterministic, material): Opened within the period or the 7 days before it
    Check: {"within_window":[{"var":"fields.opened_at"},{"var":"time.period_lookback_start"},{"var":"time.period_end"}]}
- c5 (deterministic, material): No reopening within 7 days of close
    Check: {"==":[{"var":"connector.reopened_within_7d"},false]}
- r1 (rubric, required): The agent addressed the customer's stated issue
    Question: Did the agent address the customer's stated issue, rather than merely close the conversation?
    Passes when: The final agent message responds to the issue the customer raised and does not defer it.
    Evidence: transcript
- r2 (rubric, material): No policy violation evident
    Question: Does the transcript show the agent making a promise the vendor is not authorized to make?
    Passes when: No promise the vendor is not authorized to make appears in the transcript.
    Evidence: transcript

Evidence artifacts: transcript (required, text/plain | text/markdown | application/json, max 10485760 bytes)
Evidence fields, required: conversation_id, channel, opened_at, last_agent_message_at, handoff
Evidence fields, optional: closed_at, inactivity_marker_at, customer_reply_after_close

Exclusions: Spam conversations. Test conversations. Conversations the customer abandoned before the agent's first substantive reply.
Gaming defenses: Dedupe on conversation_id. Reopen check against the source of truth. Bursts of outcomes at period end raise sampling. Handoff detection cross-checked against the buyer's system when connected.

A required criterion that fails rejects the unit. Read the full standard at https://recourse-mu.vercel.app/standards#OS-1.

## OS-2 Qualified Lead (v0.4.0)

Verify that a lead delivered by the vendor meets the buyer's stated qualification profile and is contactable, so the buyer pays only for leads it can act on.

Unit: One lead delivered that meets the buyer's stated qualification profile and is contactable.
Dedupe key: lead_id
Standard hash: sha256:4c01e45abaadb00dc4477c7afdf9a5fc32182d2cb5f8552830f695926902de6c
Windows: statement_dispute_hours=120h, evidence_hours=48h, contact_verification_max_age_hours=168h, dedupe_lookback_hours=4320h

Acceptance criteria:
- c1 (deterministic, required): Contact passes deliverability verification
    Check: {"or":[{"==":[{"var":"connector.email_check.deliverable"},true]},{"==":[{"var":"connector.phone_check.valid"},true]}]}
- c2 (deterministic, required): Profile match on stated hard filters
    Check: {"and":[{">=":[{"var":"fields.employee_count"},{"var":"terms.profile.employee_count_min"}]},{"<=":[{"var":"fields.employee_count"},{"var":"terms.profile.employee_count_max"}]},{"in":[{"var":"fields.region"},{"var":"terms.profile.regions"}]},{"or":[{"==":[{"var":"terms.profile.titles"},null]},{"in":[{"var":"fields.title"},{"var":"terms.profile.titles"}]}]}]}
- c3 (deterministic, required): Not a duplicate within 180 days
    Check: {"==":[{"var":"connector.recourse.dedupe_matches_180d"},0]}
- c4 (deterministic, material): Company domain not on the buyer's suppression list
    Check: {"==":[{"var":"connector.suppression.domain_match"},false]}
- c5 (deterministic, material): Company domain not affiliated with the vendor
    Check: {"==":[{"var":"connector.affiliation.vendor_match"},false]}
- r1 (rubric, material): Title matches the target persona
    Question: Does the lead's title reasonably match the target persona described in the terms?
    Passes when: The title falls within the persona description in the terms, allowing for common variants of the same role.
    Evidence: title, company_domain

Evidence artifacts: intent_signal (optional, application/json | text/plain, max 1048576 bytes)
Evidence fields, required: lead_id, company_domain, title, employee_count, region, source, delivered_at, contact_verification, contact_verified_at
Evidence fields, optional: none

Exclusions: Generic mailboxes (info@, sales@) unless terms allow. Leads sourced from the buyer's own CRM.
Gaming defenses: Vendor-affiliation detection. Contact verification must be recent (7 days old or less). Rate anomaly review.

A required criterion that fails rejects the unit. Read the full standard at https://recourse-mu.vercel.app/standards#OS-2.

## OS-3 Booked Meeting, Held (v0.4.0)

Verify that a meeting booked by the vendor's agent with an external prospect was attended by the buyer's representative and lasted long enough to count, so the buyer pays only for meetings that held.

Unit: One meeting booked by the vendor's agent with an external prospect that the buyer's representative attended and that lasted at least the minimum duration.
Dedupe key: meeting_id
Standard hash: sha256:35866ddd94b84b8316e3757e1afa62c7cd6ed1a30307e3d1a6ee99a3d0d6daea
Windows: statement_dispute_hours=120h, evidence_hours=48h, buyer_confirmation_hours=120h

Acceptance criteria:
- c1 (deterministic, required): Calendar event confirmed with at least one external attendee
    Check: {"and":[{"==":[{"var":"connector.gcal.status"},"confirmed"]},{">=":[{"var":"connector.gcal.attendee_count_external"},1]}]}
- c2 (deterministic, required): Attendance confirmed
    Check: {"or":[{"==":[{"var":"connector.attendance.confirmed"},true]},{"==":[{"var":"connector.buyer.confirmed_attendance"},true]}]}
- c3 (deterministic, required): Meeting lasted at least the minimum duration
    Check: {">=":[{"var":"fields.duration_minutes"},{"var":"terms.min_duration"}]}
- c4 (deterministic, required): Not a duplicate by event id or by prospect and week
    Check: {"and":[{"==":[{"var":"connector.recourse.meeting_id_matches"},0]},{"==":[{"var":"connector.recourse.prospect_week_matches"},0]}]}
- c5 (deterministic, material): Scheduled within the period and booked no more than 45 days before the start
    Check: {"and":[{"within_window":[{"var":"fields.scheduled_start"},{"var":"time.period_start"},{"var":"time.period_end"}]},{"<=":[{"var":"time.booked_lead_days"},45]}]}
- r1 (rubric, material): Prospect matches the target profile
    Question: Does the prospect match the target profile in the terms by title and company?
    Passes when: The prospect's role and company fall within the target profile described in the terms.
    Evidence: prospect_email, prospect_domain

Evidence artifacts: recording_or_notes (optional, audio/mpeg | video/mp4 | text/plain | text/markdown | application/json, max 104857600 bytes)
Evidence fields, required: meeting_id, prospect_email, prospect_domain, booked_at, scheduled_start, scheduled_end, attended, duration_minutes
Evidence fields, optional: none

Exclusions: Meetings with existing customers or open opportunities in the buyer's CRM at booking time (buyer supplies hashed list). Reschedules count once.
Gaming defenses: Vendor-affiliated domains detected. No-show handling: a no-show is not a unit. Reschedule chains collapse to one unit.

A required criterion that fails rejects the unit. Read the full standard at https://recourse-mu.vercel.app/standards#OS-3.

## CD-0 Custom Deliverable (v0.4.0)

A schema for one-shot deliverables. The vendor defines acceptance criteria using the acceptance criterion schema in the technical specification §5. Recourse requires at least one required deterministic criterion and rejects criteria that are not testable (R-520 applies against the drafter).

Unit: One deliverable as described in the terms.
Dedupe key: deliverable_id
Standard hash: sha256:e4e5a667c05365c2c6f2aeab392e2a9f6d8e13c9a958630dd941897a05df0e87
Windows: statement_dispute_hours=120h, evidence_hours=48h, buyer_review_hours=120h

Acceptance criteria:
- c1 (deterministic, required): Submitted before the deadline plus grace
    Check: {"==":[{"var":"time.submitted_before_deadline"},true]}

Evidence artifacts: deliverable (required, application/octet-stream | application/zip | application/pdf | text/plain | text/csv | application/json, max 1073741824 bytes)
Evidence fields, required: deliverable_id, delivered_at
Evidence fields, optional: none

Exclusions: none
Gaming defenses: At least one required deterministic criterion is enforced at terms validation. Criteria that are not testable as written are rejected before acceptance; ambiguity in accepted terms is read against the drafter (R-520).

A required criterion that fails rejects the unit. Read the full standard at https://recourse-mu.vercel.app/standards#CD-0.

