# Primary Channel Handoff Fixtures
Missing contacts and source preservation | Moxie Studio | evaluation v1

For RevOps implementers preparing a channel-rule handoff. The usual baseline is native simulation plus your own synthetic cases. This pack tests whether twelve explicit cases reduce preparation effort or reveal a case your baseline omitted. No savings or demand have been demonstrated.

## Run locally
Requires Python 3.10+; standard library only. Tested interpreter recorded in execution-checks.json. Extract the ZIP to a new directory, then run:

    python compare_results.py passing-control.csv
    python mutation-tests.py

The first command must print PASS and exit 0. The mutation suite checks intentionally wrong results. A comparator mismatch exits 1; unreadable or malformed files exit 2. No network, credentials, SDK or CRM integration is used. The comparator reads inputs only and prints to stdout. The tests create disposable temporary files.

## Use your own synthetic results
1. Read handoff-cases.html and rule-map.json. These are an example policy, not recommended business attribution rules. A channel is frozen at creation; Unknown stays Unknown after late association. The original source is a separate, preserved field. Conflicts use the literal needs_decision.
2. Confirm field mapping, lifecycle observations, blank handling, re-enrollment and replay semantics before testing. Unresolved policy is a decision, not an invitation to invent an answer. If your policy differs, copy the pack, version your rules and independently update expected-results.csv before comparison. Changing JSON priority descriptions alone does NOT regenerate expectations. There is no rule execution engine.
3. Use contacts.csv and opportunities.csv as a scenario specification, NOT a CRM import format. Event sequences require staged actions in your own authorized sandbox or a local simulator; no live account validation is included.
4. Populate observed-results-template.csv with one row per scenario. Keep synthetic IDs. Exact matching is intentional: whitespace and case matter. explanation is for notes and is not compared. original_source_after may be blank only when the expected preserved value is blank.
5. Run python compare_results.py observed-results-template.csv. To map different output headers: python compare_results.py your-output.csv --map rule-map.json. Set mapping to four unique exact observed headers. Do not put customer data in this pack or send it to Moxie.

## Twelve scenarios and boundaries
S01 Paid contact; S02 Event contact; S03 manual outbound; S04 absent contact; S05 blank contact source; S06 populated source preservation; S07 opportunity/contact conflict; S08 conflicting contacts; S09 late association; S10 re-enrollment; S11 source change after handoff; S12 replay. Each produces one final observation row. The comparator verifies the supplied output against declared expectations, not whether a workflow actually ran or whether inputs were fabricated. It does not measure revenue attribution, amounts, identity merges, timestamps or vendor API behavior. A passing copied control only verifies the comparator. No affiliation, certification, compliance or live-CRM reliability is claimed.

## Qualified comparison
Compare your existing preparation baseline with preparing the same cases using this pack. Record mapping separately; net saving = baseline preparation minus mapping minus fixture preparation. Stop if mapping alone exceeds baseline time. Use comparison-log.csv for aggregate timings and scenario IDs, never client records. Three qualified implementers must actually try both approaches. Continue only if at least two report >=10 net minutes saved or explain a substantive baseline-omitted policy mismatch. Retire if none benefits; intermediate evidence is inconclusive. Iterate once on an observed weakness. Review reach and results fourteen days after actual release, not fourteen days after the build. No automatic follow-up is authorized. No reach means acquisition is inconclusive, not no demand.

## Status, rights and disclosure
Free limited evaluation sample. No orders are open and no payment is collected. USD29 is only a possible future price, not an offer. Original fictional IDs, scenarios, prose, HTML and standard-library code were AI-assisted and reviewed by Moxie; no human-authorship or human-testing claim. No third-party code, logos, fonts or community quotations are bundled. See LICENSE.txt. No purchase was made in production; compute and hosting costs are unknown. Physical printing and external buyer testing have not occurred.
