# UAT: Muscle Loss Contradiction (Skeptic Lens) **Date:** YYYY-MM-DD **Feature:** First-Class Contradiction **Status:** [ ] PASS / [ ] FAIL / [ ] BLOCKED ## Scenario Two peer-reviewed studies report opposing conclusions on GLP-1 agonist muscle-sparing effects: - Study A (PMID_38001234): "Significant muscle loss observed" - Study B (PMID_38005678): "Muscle mass preserved vs placebo" Both are Tier 1 (Clinical) sources with similar confidence. The Skeptic Lens should surface both claims without forcing resolution. ## Acceptance Criteria | Criterion | Expected | Met? | |-----------|----------|------| | Both claims coexist | Neither deleted | [ ] | | Conflict score | >= 0.88 | [ ] | | Status | "Contested" | [ ] | | Claims array | 2 distinct values | [ ] | | No hallucinated average | No "moderate loss" | [ ] | ## Test Matrix | Step | Action | Expected | Actual | Status | |------|--------|----------|--------|--------| | 1 | Ingest Study A claim | Hash returned | | [ ] | | 2 | Ingest Study B claim | Hash returned | | [ ] | | 3 | Query skeptic lens | Both claims returned | | [ ] | | 4 | Check conflict_score | >= 0.88 | | [ ] | | 5 | Check status | Contested | | [ ] | | 6 | Verify no averaging | 2 distinct ObjectValues | | [ ] | ## Setup Commands ```bash # Start StemeDB cargo run --bin stemedb-api & # Wait for startup sleep 2 ``` ## Test Commands ### Step 1: Ingest Study A (muscle loss = true) ```bash curl -X POST http://localhost:18180/v1/assertions \ -H "Content-Type: application/json" \ -d '{ "subject": "Semaglutide:MuscleMass", "predicate": "muscle_sparing_effect", "object": {"Boolean": false}, "confidence": 0.85, "source_class": "Clinical", "source_hash": "0000000000000000000000000000000000000000000000000000000000000001" }' ``` **Expected:** `{"hash": "..."}` **Actual:** **Status:** [ ] ### Step 2: Ingest Study B (muscle loss = false) ```bash curl -X POST http://localhost:18180/v1/assertions \ -H "Content-Type: application/json" \ -d '{ "subject": "Semaglutide:MuscleMass", "predicate": "muscle_sparing_effect", "object": {"Boolean": true}, "confidence": 0.82, "source_class": "Clinical", "source_hash": "0000000000000000000000000000000000000000000000000000000000000002" }' ``` **Expected:** `{"hash": "..."}` **Actual:** **Status:** [ ] ### Step 3: Query with Skeptic Lens ```bash curl "http://localhost:18180/v1/skeptic?subject=Semaglutide:MuscleMass&predicate=muscle_sparing_effect" ``` **Expected:** ```json { "status": "Contested", "conflict_score": 0.88, "claims": [ {"value": {"Boolean": false}, "weight_share": 0.51, "assertion_count": 1}, {"value": {"Boolean": true}, "weight_share": 0.49, "assertion_count": 1} ], "candidates_count": 2 } ``` **Actual:** **Status:** [ ] ### Step 4: Verify Conflict Score From Step 3 response, extract `conflict_score`. **Expected:** >= 0.88 **Actual:** **Status:** [ ] ### Step 5: Verify Status From Step 3 response, check `status` field. **Expected:** "Contested" **Actual:** **Status:** [ ] ### Step 6: Verify No Averaging Confirm `claims` array contains exactly 2 entries with distinct `Boolean` values. NO claim should have an averaged or interpolated value. **Expected:** 2 distinct ObjectValues (true and false) **Actual:** **Status:** [ ] ## Sign-Off Checklist - [ ] Both studies ingested successfully - [ ] Skeptic lens returns both claims - [ ] Conflict score >= 0.88 - [ ] Status is "Contested" - [ ] No hallucinated average value - [ ] Neither original claim deleted ## Notes *Record any observations, edge cases, or issues here.* --- **Tester:** **Date:** **Result:**