Round #387
08 May 2026, 22:31· hr-law· claude-haiku-4-5-20251001· r13-clean-hints
- Complexity
- band 0
- ZP / UO / OBS
- 3 / 5 / 0
- Journey weight
- 532
- Lightshift ΔL
- +0.17
Prompt
We received a complaint that a manager bullied a junior employee. What does a fair investigation look like before we hold a disciplinary hearing?
Zero-point index (what the engine surfaced)
ZPI-ZPI-0004 | 2026-05-08T22:31:25Z
We received a complaint that a manager bullied a junior employee. What does a fair investigation look like before we hold a disciplinary hearing?
ZERO POINT — 3 entries (structural invariants)
● hsl(157.40, 100%, 34%) ACAS Code of Practice [contract]
● hsl(34.71, 100%, 34%) procedural fairness [contract]
● hsl(280.96, 100%, 34%) appeal right [contract]
UNOBSERVED — 5 entries (implied truths)
○ hsl(230.00, 100%, 32%) right to be accompanied [feature]
○ hsl(231.00, 100%, 33%) appeal right [feature]
○ hsl(225.00, 100%, 34%) disciplinary investigation [feature]
○ hsl(180.00, 100%, 42%) Conduct disciplinary investigation [function]
○ hsl(182.25, 100%, 24%) Issue disciplinary invitation [function]
OBSERVED — 0 entries (explicit in request)
COMPLEXITY │ 8 entries │ spread: 51° │ band: LOW
Baseline response (no ZPI)
# Fair Investigation Framework for Bullying Allegations
## Key Principles
- **Impartiality**: Use someone independent of both parties (HR, external investigator, or uninvolved manager)
- **Confidentiality**: Limit disclosure to those with a need to know
- **Procedural fairness**: Both parties get opportunity to respond
- **Documentation**: Record all interviews and findings clearly
- **Timeliness**: Complete within reasonable timeframe (typically 2-4 weeks)
## Investigation Steps
**1. Initial Assessment**
- Secure the complaint in writing
- Determine scope and seriousness
- Preserve evidence (emails, messages, records)
- Interim measures if needed (separate duties, support)
**2. Interview the Complainant**
- Specific examples of alleged behavior with dates/witnesses
- Impact on the employee
- Any previous reports or informal complaints
- What outcome they seek
**3. Interview the Accused Manager**
- Present allegations clearly and specifically
- Allow full response and explanation
- Don't assume guilt; listen to their account
- Ask about their management approach generally
**4. Interview Witnesses**
- Anyone with direct knowledge of incidents
- Include those who may support either party
- Consistent questioning approach
**5. Review Evidence**
- Communications, performance records, attendance
- Any prior complaints or concerns noted
## Critical Safeguards
- ✓ Don't interview together
- ✓ Offer support (counseling, buddy, union rep)
- ✓ Protect against retaliation
- ✗ Don't pre-judge or discuss findings casually
- ✗ Don't delay unreasonably (causes stress)
**After investigation**, decide whether to proceed to disciplinary hearing or other outcome (management training, mediation, etc.).
Would you like guidance on specific elements?
Enhanced response (with ZPI)
# Fair Disciplinary Investigation Process
Based on UK employment law principles (ACAS Code of Practice, procedural fairness, and statutory appeal rights), here's a complete implementation for conducting a fair investigation before a disciplinary hearing:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
namespace DisciplinaryInvestigation
{
/// <summary>
/// Represents evidence gathered during an investigation
/// </summary>
public class InvestigationEvidence
{
public string Id { get; set; } = Guid.NewGuid().ToString();
public string SourceName { get; set; }
public string Description { get; set; }
public DateTime DateRecorded { get; set; }
public string EvidenceType { get; set; } // "Witness Statement", "Email", "Document", etc.
public bool IsConfidential { get; set; }
}
/// <summary>
/// Represents an interview conducted during investigation
/// </summary>
public class InvestigationInterview
{
public string Id { get; set; } = Guid.NewGuid().ToString();
public string IntervieweeName { get; set; }
public string Role { get; set; }
public DateTime InterviewDate { get; set; }
public string Interviewer { get; set; }
public List<string> KeyPoints { get; set; } = new();
public string Summary { get; set; }
public bool RightToBeAccompanied { get; set; }
}
/// <summary>
/// Represents the accused employee's right to respond
/// </summary>
public class AccusedResponse
{
public string EmployeeId { get; set; }
public string EmployeeName { get; set; }
public DateTime InvitationDate { get; set; }
public DateTime ResponseDeadline { get; set; }
public string WrittenResponse { get; set; }
public bool RespondedInTime { get; set; }
public DateTime? DateResponded { get; set; }
}
/// <summary>
/// Complete investigation record
/// </summary>
public class DisciplinaryInvestigation
{
public string Id { get; set; } = Guid.NewGuid().ToString();
public string ComplaintId { get; set; }
public string AccusedEmployeeId { get; set; }
public string AccusedEmployeeName { get; set; }
public string ComplainantName { get; set; }
public string Allegation { get; set; }
public DateTime ComplaintDate { get; set; }
public DateTime InvestigationStartDate { get; set; }
public DateTime? InvestigationCompletionDate { get; set; }
public string InvestigatingOfficer { get; set; }
public InvestigationStatus Status { get; set; }
// Investigation components
public List<InvestigationEvidence> Evidence { get; set; } = new();
public List<InvestigationInterview> Interviews { get; set; } = new();
public AccusedResponse AccusedResponse { get; set; }
public List<string> DocumentsReviewedUrls { get; set; } = new();
// Findings
public string InvestigationSummary { get; set; }
public string Findings { get; set; }
public bool IsCaseToAnswer { get; set; }
public List<string> RecommendedNextSteps { get; set; } = new();
}
public enum InvestigationStatus
{
NotStarted,
InProgress,
AwaitingAccusedResponse,
InterviewsComplete,
EvidenceAnalysis,
ConclusionsReached,
Completed,
Suspended
}
/// <summary>
/// Service to conduct fair investigations
/// </summary>
public interface IInvestigationService
{
Task<DisciplinaryInvestigation> InitiateInvestigationAsync(
string complaintId,
string accusedEmployeeId,
string accusedEmployeeName,
string complainantName,
string allegation,
string investigatingOfficer);
Task IssueAccusedResponseInvitationAsync(
DisciplinaryInvestigation investigation,
int daysToRespond = 7);
Task RecordAccusedResponseAsync(
DisciplinaryInvestigation investigation,
string writtenResponse);
Task ConductInterviewAsync(
DisciplinaryInvestigation investigation,
InvestigationInterview interview);
Task AddEvidenceAsync(
DisciplinaryInvestigation investigation,
InvestigationEvidence evidence);
Task<DisciplinaryInvestigation> CompleteInvestigationAsync(
DisciplinaryInvestigation investigation,
string summary,
string findings,
bool isCaseToAnswer);
Task<InvestigationReport> GenerateInvestigationReportAsync(
DisciplinaryInvestigation investigation);
}
public class InvestigationService : IInvestigationService
{
private readonly INotificationService _notificationService;
private readonly IComplianceValidator _complianceValidator;
public InvestigationService(
INotificationService notificationService,
IComplianceValidator complianceValidator)
{
_notificationService = notificationService;
_complianceValidator = complianceValidator;
}
public Task<DisciplinaryInvestigation> InitiateInvestigationAsync(
string complaintId,
string accusedEmployeeId,
string accusedEmployeeName,
string complainantName,
string allegation,
string investigatingOfficer)
{
var investigation = new DisciplinaryInvestigation
{
ComplaintId = complaintId,
AccusedEmployeeId = accusedEmployeeId,
AccusedEmployeeName = accusedEmployeeName,
ComplainantName = complainantName,
Allegation = allegation,
ComplaintDate = DateTime.UtcNow,
InvestigationStartDate = DateTime.UtcNow,
InvestigatingOfficer = investigatingOfficer,
Status = InvestigationStatus.InProgress
};
return Task.FromResult(investigation);
}
public async Task IssueAccusedResponseInvitationAsync(
DisciplinaryInvestigation investigation,
int daysToRespond = 7)
{
if (investigation.AccusedResponse != null)
throw new InvalidOperationException("Accused has already been invited to respond.");
var responseDeadline = DateTime.UtcNow.AddDays(daysToRespond);
investigation.AccusedResponse = new AccusedResponse
{
EmployeeId = investigation.AccusedEmployeeId,
EmployeeName = investigation.AccusedEmployeeName,
InvitationDate = DateTime.UtcNow,
ResponseDeadline = responseDeadline,
RespondedInTime = false
};
investigation.Status = InvestigationStatus.AwaitingAccusedResponse;
// Notify accused employee - right to know allegations and defend themselves
await _notificationService.SendInvitationAsync(
new InvitationNotification
{
EmployeeName = investigation.AccusedEmployeeName,
EmployeeId = investigation.AccusedEmployeeId,
InvitationType = "Investigation Response",
Allegation = investigation.Allegation,
ResponseDeadline = responseDeadline,
RightToBeAccompanied = true,
RightToAccessEvidence = true,
Message = $"You are invited to respond to allegations of: {investigation.Allegation}. " +
$"You have the right to be accompanied and to access evidence. " +
$"Please respond by {responseDeadline:yyyy-MM-dd}."
});
await _complianceValidator.ValidateInvitationCompliesWithACAS
Grader chain
Each grader reads the same baseline + enhanced pair and casts an independent verdict. Disagreement is the framework's own signal — not noise to be averaged away.
V1samba/Meta-Llama-3.3-70B-Instruct
BetterV4qwen2.5-coder-7b-instruct
BetterComments
Our grader said what it said. What do you say? Comment as a guest below.
No comments yet. Be the first to say what you make of this round.