Participants: 3 developers who built the actual systems
Requirement: Participants have:
- Direct implementation experience (6+ months on the system)
- Can explain design decisions
- Know about production incidents
- Can discuss tradeoffs and limitations
Test Procedure:
- Conduct full viva session (3-4 questions, 10-15 min)
- Questions drawn from engineering review corpus
- Collect responses
- Run implementation familiarity analysis
- Record assessment
Expected Outcome:
- Classification: HIGH_IMPLEMENTATION_FAMILIARITY or better
- Confidence: HIGH
- Indicators: 3+ understanding indicators
Pass Criteria:
- ✅ All 3 participants classified as HIGH/PRACTICED
- ✅ Confidence >= MEDIUM
- ✅ <1 false uncertainty issue
Participants: 3 who only read code/documentation (no hands-on experience)
Requirement: Participants have:
- Studied code but never built/deployed
- Can recite concepts
- Know theory but not practice
- Cannot discuss production incidents
Test Procedure:
- Conduct full viva session (same questions as 1.1)
- Collect responses
- Run implementation familiarity analysis
- Record assessment
Expected Outcome:
- Classification: LOW_IMPLEMENTATION_FAMILIARITY or INSUFFICIENT
- Confidence: HIGH
- Indicators: 2+ memorization indicators, 0 understanding indicators
Pass Criteria:
- ✅ All 3 participants classified as LOW/INSUFFICIENT
- ✅ Confidence >= MEDIUM
- ✅ No false positives marking them as HIGH
Participants:
- 1 builder who communicates poorly (nervous, hedging, unsure tone)
- 1 non-builder who communicates confidently (confident tone, buzzwords)
Test Procedure:
- Run same viva session as 1.1/1.2
- Compare communication style markers vs familiarity assessment
- Verify FairnessAuditor detects patterns
Expected Outcome:
- Builder classified HIGH despite nervous communication
- Non-builder classified LOW despite confident communication
- FairnessAuditReport flags communication style bias
Pass Criteria:
- ✅ Nervous builder not penalized for communication
- ✅ Confident guesser not rewarded for delivery
- ✅ Assessment based on content, not style
Participants:
- 1 weak non-native English speaker who is a builder
- 1 unconventional (non-OOP, non-standard) but valid engineer
- 1 nervous but knowledgeable candidate
Test Procedure:
- Run viva sessions
- Collect assessments
- Flag any problematic conclusions
Expected Outcome:
- Fairness audit catches potential bias
- Manual review recommended for edge cases
- Confidence marked as MEDIUM (not HIGH)
Pass Criteria:
- ✅ No wrong classifications
- ✅ Uncertainty surfaced honestly
- ✅ Manual review recommended
Total: 10-15 real people
Mix:
- Backend developers who built systems (2-3)
- System contributors (2-3)
- Engineering leads (1-2)
- Students/learners (3-4)
- Cross-team members (2-3)
Inclusion Criteria:
- Willing to participate in 20-30 min viva session
- OK with recording/analyzing responses
- Willing to provide feedback on assessment accuracy
For each participant:
-
Pre-Session Survey (5 min)
- Background: role, experience, how long on this system?
- Communication style: comfortable in technical interviews? Nervous? Confident?
- Demographics: first language? Neurodivergent?
-
Viva Session (15-20 min)
- 3-4 opening questions
- Optional follow-ups based on response quality
- Record all responses
-
Assessment (automated)
- VivaSessionConductor scores responses
- ReasoningDepthAnalyzer classifies familiarity
- FairnessAuditor checks for bias
- TrustAudit verifies evidence grounding
-
Post-Session Survey (5 min)
- How accurate was the assessment? (1-5 scale)
- Which questions were: too easy / too hard / just right?
- Did you feel evaluated fairly? Any biases?
- Would you recommend this for hiring/evaluation?
-
Interviewer Notes (written)
- Technical depth impression
- Communication observations
- Any contradictions/confusion?
- Confidence in assessment
Metrics Collected:
For each participant:
├─ demographics (role, exp_years, first_language, etc.)
├─ responses (text, quality_score, correctness_score, etc.)
├─ assessment (classification, confidence, indicators)
├─ fairness_audit (issues found, recommendations)
├─ accuracy (participant self-report: 1-5 scale)
├─ feedback (too easy? fair? recommendations?)
└─ interviewer_notes (text observations)
Output Files:
viva_session_[participant_id].json(session recording)assessment_[participant_id].json(classification + evidence)fairness_audit_[participant_id].json(bias check results)participant_feedback_[participant_id].json(survey responses)
Find cases where:
- ORACLE says HIGH but interviewer says LOW (possible false positive)
- ORACLE says LOW but interviewer says HIGH (possible false negative)
- ORACLE HIGH but participant self-reports LOW (overconfidence?)
- ORACLE LOW but participant self-reports HIGH (underconfidence?)
For each disagreement, analyze:
- What signals did ORACLE use?
- Did fairness audit catch issues?
- Was evidence insufficient?
- Did communication style affect assessment?
- What should have happened?
Question: When did ORACLE mark someone as non-familiar when they actually were?
Analysis:
- Which communication patterns triggered false positives?
- Were fairness audit issues correctly flagged?
- Should confidence be reduced? Recommendations added?
- What follow-ups would have helped?
Output: False positive patterns document
Question: When did ORACLE mark someone as familiar when they actually weren't?
Analysis:
- Which confidence indicators were misleading?
- How many memorization indicators were missed?
- Did confident delivery trick the system?
- Should follow-ups probe deeper?
Output: False negative patterns document
Question: Did certain demographics get systematically misclassified?
Analysis by demographic:
- Non-native speakers: under/over represented in misclassifications?
- Early career: systematic bias?
- Non-traditional background: systematic bias?
- Communication style: correlation with accuracy?
Output: Bias analysis report
Based on findings from Phase 2-3:
- Adjust indicator weights if communication style bias detected
- Add new follow-up patterns if certain misclassifications repeat
- Improve fairness audit if certain biases not caught
- Reduce confidence scores if overconfidence detected
- Retrain on test cases if patterns are systematic
| Metric | Target | How to Measure |
|---|---|---|
| True Positive Rate | 90%+ | % of HIGH-familiarity test cases correctly identified |
| True Negative Rate | 90%+ | % of LOW-familiarity test cases correctly identified |
| False Positive Rate | <10% | % of non-familiar marked as familiar |
| False Negative Rate | <10% | % of familiar marked as non-familiar |
| Communication Bias | <5% | Correlation between communication style and assessment |
| Demographic Bias | <5% | Systematic bias by demographic |
| Fairness Audit Effectiveness | 80%+ | % of problems caught by fairness audit |
| Participant Accuracy Self-Report | 4+/5 avg | Mean participant satisfaction |
| Evidence Grounding | 100% | All conclusions have evidence trace |
- Define test case library (questions to ask)
- Recruit 6 internal testers (3 builders, 3 non-builders)
- Create feedback template
- Set baseline metrics
- Recruit 10-15 external participants
- Create pre/post surveys
- Set up recording infrastructure
- Train facilitators
- Analyze all disagreement cases
- Categorize false positives/negatives
- Identify bias patterns
- Create improvement plan
- Implement improvements
- Re-test on sample of failures
- Document learnings
- Generate final report
Participant: Backend developer, 3 years on project X
Question 1: "The API endpoint for user list loads 100+ related resources per user. What's the performance concern and how would you fix it?"
Good Response (HIGH familiarity):
"N+1 query problem. When we first built this, we didn't batch load relationships, so each user load triggered a separate query. We discovered this in production when response time hit 2 seconds for 10 users. We fixed it using SQLAlchemy's joinedload with batch pagination - we load at most 10 related records per batch. Tradeoff is complexity in query construction, but we get sub-100ms responses now."
Poor Response (LOW familiarity):
"Um, probably an N+1 query issue? That's like a common database pattern problem. You'd use eager loading to fix it, I think. That's a best practice in database design."
Expected Difference in Assessment:
- Good response: HIGH_FAMILIARITY, HIGH confidence, 3+ understanding indicators
- Poor response: LOW_FAMILIARITY, HIGH confidence, 2+ memorization indicators
TESTING_RESULTS_PHASE1.md- Internal validation resultsTESTING_RESULTS_PHASE2.md- Pilot study results + feedbackDISAGREEMENT_ANALYSIS.md- False positive/negative patternsBIAS_ANALYSIS.md- Demographic bias findingsIMPROVEMENTS_APPLIED.md- Changes made based on testing
- Finalize test case library
- Recruit internal testers
- Create feedback templates
- Schedule Phase 1 (Week 1-2)
- Recruit external participants
- Schedule Phase 2 (Week 3-4)