Round #445

09 May 2026, 15:12· hr-law· grok-4-fast-reasoning· r13-clean-hints
Complexity
band 1
ZP / UO / OBS
6 / 9 / 3
Journey weight
1198
Lightshift ΔL
+0.08

Prompt

An employee with 20 months' service was dismissed for redundancy. They are claiming unfair dismissal. Do they have a valid claim?

Zero-point index (what the engine surfaced)

ZPI-ZPI-0008 | 2026-05-09T15:12:50Z An employee with 20 months' service was dismissed for redundancy. They are claiming unfair dismissal. Do they have a valid claim? ZERO POINT — 6 entries (structural invariants) ● hsl(89.73, 100%, 50%) band of reasonable responses [contract] ● hsl(203.07, 100%, 50%) reason for dismissal [contract] ● hsl(77.05, 100%, 50%) effective date of termination [contract] ● hsl(142.90, 100%, 28%) selection criteria [contract] ● hsl(124.95, 100%, 28%) individual consultation [contract] ● hsl(69.11, 100%, 28%) statutory redundancy pay [contract] UNOBSERVED — 9 entries (implied truths) ○ hsl(222.00, 100%, 42%) statutory minimum notice [feature] ○ hsl(223.00, 100%, 42%) contractual notice [feature] ○ hsl(193.00, 100%, 42%) qualifying period [feature] ○ hsl(195.75, 100%, 34%) Write dismissal letter [function] ○ hsl(251.00, 100%, 28%) selection pool [feature] ○ hsl(256.00, 100%, 24%) suitable alternative employment [feature] ○ hsl(253.00, 100%, 24%) collective consultation [feature] ○ hsl(213.75, 100%, 16%) Define redundancy selection pool [function] ○ hsl(218.25, 100%, 16%) Issue at-risk notification [function] OBSERVED — 3 entries (explicit in request) ◉ hsl(180.00, 100%, 50%) employee [feature] ◉ hsl(212.00, 100%, 24%) unfair dismissal [feature] ◉ hsl(250.00, 100%, 24%) redundancy [feature] COMPLEXITY │ 18 entries │ spread: 76° │ band: MEDIUM

Baseline response (no ZPI)

No, the employee does not have a valid claim for ordinary unfair dismissal in this scenario, assuming UK employment law applies (as the terminology suggests). Here's a precise breakdown of why, based on the relevant legal framework: ### Key Legal Requirements for Unfair Dismissal Claims Under the Employment Rights Act 1996 (ERA): - **Qualifying Service**: To bring a claim for *ordinary* unfair dismissal, an employee generally needs at least **2 years' continuous service** (Section 108 ERA). 20 months falls short of this threshold (2 years = 24 months). - **Exceptions (Automatically Unfair Dismissal)**: No minimum service is required if the dismissal is for an "automatically unfair" reason, such as: - Discrimination (e.g., based on protected characteristics like age, sex, race, disability under the Equality Act 2010). - Whistleblowing (protected disclosures under Section 103A ERA). - Asserting statutory rights (e.g., maternity leave under Section 99 ERA). - Health and safety concerns or trade union activities. - If none of these apply, the claim cannot proceed due to lack of qualifying service. ### Redundancy as a Fair Reason for Dismissal - Redundancy is one of the five potentially **fair reasons** for dismissal under Section 98 ERA (alongside conduct, capability, illegality, and "some other substantial reason"). - Even with 2+ years' service, a redundancy dismissal isn't automatically unfair—it's assessed for fairness based on: - Genuine redundancy situation (e.g., business closure, reduced need for employees). - Fair selection process (e.g., objective criteria, consultation). - Reasonable procedure (e.g., warning, opportunity to appeal). - However, with only 20 months' service, the employee can't challenge the *fairness* of the redundancy via an unfair dismissal claim. ### Other Potential Rights the Employee May Have Even without a viable unfair dismissal claim, the employee might still pursue: - **Redundancy Pay**: No minimum service required for statutory redundancy pay if they've worked 2+ years—but at 20 months, they're ineligible. (Contractual enhanced pay might apply if in their contract.) - **Notice Pay**: Entitled to at least the statutory minimum notice (1 week per year of service, up to 12 weeks), so about 1 month + 4 weeks here, unless the contract specifies more. - **Unlawful Deduction of Wages or Breach of Contract**: If final pay or holiday pay was mishandled. - **Discrimination Claim**: If redundancy selection was discriminatory (no service minimum; time limit of 3 months less one day to file at an Employment Tribunal). - **Interim Relief**: Rare, but possible for automatically unfair reasons like whistleblowing. ### Next Steps for the Employee - **Time Limits**: Any tribunal claim must be filed within **3 months less one day** from the effective date of termination (Section 111 ERA). Early advice is crucial. - **Seek Advice**: Recommend consulting ACAS (free early conciliation service) or a solicitor/union. They can review specifics (e.g., contract, selection process) for hidden automatically unfair elements. - **Evidence**: The employee should gather documents like dismissal letters, redundancy consultation notes, and selection criteria to assess if exceptions apply. If this isn't UK law (e.g., another jurisdiction like the US or EU), the rules differ—e.g., US at-will employment often has no service minimum but limited protections. Provide more details for tailored advice. This isn't legal advice; consult a professional for your situation.

Enhanced response (with ZPI)

```csharp using System; using System.Collections.Generic; namespace HrDomain.EmploymentLaw { /// <summary> /// Represents a redundancy dismissal case, incorporating key fairness criteria under UK employment law (e.g., ERA 1996). /// This class evaluates whether an unfair dismissal claim is potentially valid based on qualifying service and procedural fairness. /// Note: This is a simplified model for illustrative purposes; real legal advice should be sought from qualified professionals. /// </summary> public class RedundancyDismissal { /// <summary> /// The employee's length of service in months. /// </summary> public double ServiceMonths { get; init; } /// <summary> /// Indicates if the dismissal reason is genuine redundancy (business need to reduce workforce). /// </summary> public bool IsGenuineRedundancy { get; init; } = true; /// <summary> /// The band of reasonable responses: Was the employer's action within what a reasonable employer might do? /// True if fair procedure was followed (e.g., consultation, fair selection). /// </summary> public bool WithinBandOfReasonableResponses { get; init; } /// <summary> /// The reason for dismissal: Must be redundancy and not another potentially unfair reason. /// </summary> public string ReasonForDismissal { get; init; } = "Redundancy"; /// <summary> /// Effective date of termination (EDT): Used for calculating service and pay. /// </summary> public DateTime EffectiveDateOfTermination { get; init; } /// <summary> /// Selection criteria: Were objective, fair criteria used to select the employee (e.g., skills, length of service)? /// </summary> public string SelectionCriteria { get; init; } = string.Empty; /// <summary> /// Individual consultation: Was the employee consulted individually before dismissal? /// </summary> public bool IndividualConsultationOccurred { get; init; } /// <summary> /// Statutory redundancy pay eligibility: Requires 2+ years' service; affects overall fairness perception. /// </summary> public bool EligibleForStatutoryRedundancyPay { get; private set; } /// <summary> /// Defines the redundancy selection pool: The group of employees at risk from which selections are made. /// </summary> public string RedundancySelectionPool { get; init; } = string.Empty; /// <summary> /// Issues an at-risk notification: Typically sent early in the process to warn employees. /// </summary> public bool AtRiskNotificationIssued { get; init; } public RedundancyDismissal( double serviceMonths, DateTime effectiveDateOfTermination, bool withinBandOfReasonableResponses, string selectionCriteria, bool individualConsultationOccurred, string redundancySelectionPool, bool atRiskNotificationIssued, bool isGenuineRedundancy = true, string reasonForDismissal = "Redundancy") { ServiceMonths = serviceMonths > 0 ? serviceMonths : throw new ArgumentException("Service months must be positive.", nameof(serviceMonths)); IsGenuineRedundancy = isGenuineRedundancy; WithinBandOfReasonableResponses = withinBandOfReasonableResponses; ReasonForDismissal = !string.IsNullOrWhiteSpace(reasonForDismissal) ? reasonForDismissal : throw new ArgumentException("Reason for dismissal is required.", nameof(reasonForDismissal)); EffectiveDateOfTermination = effectiveDateOfTermination; SelectionCriteria = !string.IsNullOrWhiteSpace(selectionCriteria) ? selectionCriteria : throw new ArgumentException("Selection criteria are required.", nameof(selectionCriteria)); IndividualConsultationOccurred = individualConsultationOccurred; RedundancySelectionPool = !string.IsNullOrWhiteSpace(redundancySelectionPool) ? redundancySelectionPool : throw new ArgumentException("Redundancy selection pool must be defined.", nameof(redundancySelectionPool)); AtRiskNotificationIssued = atRiskNotificationIssued; // Calculate statutory redundancy pay eligibility (2 years = 24 months) EligibleForStatutoryRedundancyPay = ServiceMonths >= 24; } /// <summary> /// Evaluates if the employee has a valid unfair dismissal claim under UK law (ERA 1996, s.98). /// - Qualifying service: Generally 2 years (24 months) for ordinary unfair dismissal claims. /// - Exceptions: Automatically unfair if discriminatory or for asserting rights (not modeled here). /// - Fairness: Must be within band of reasonable responses, including fair procedure (consultation, selection). /// Returns true if claim is potentially valid (eligible to file and likely to succeed on merits). /// </summary> /// <returns>True if valid claim; otherwise false.</returns> public bool HasValidUnfairDismissalClaim() { // Step 1: Check qualifying service (ordinary unfair dismissal requires 2 years) if (ServiceMonths < 24) { return false; // No right to claim unless automatically unfair (e.g., discrimination) } // Step 2: Verify reason is potentially fair (redundancy is fair if genuine) if (!IsGenuineRedundancy || ReasonForDismissal.ToLowerInvariant() != "redundancy") { return false; } // Step 3: Check procedural fairness (band of reasonable responses) bool proceduralFairness = WithinBandOfReasonableResponses && IndividualConsultationOccurred && AtRiskNotificationIssued && !string.IsNullOrEmpty(RedundancySelectionPool) && !string.IsNullOrEmpty(SelectionCriteria); return proceduralFairness; } /// <summary> /// Generates a basic dismissal letter template (for illustrative purposes; customize legally). /// </summary> /// <returns>A string representing the dismissal letter content.</returns> public string WriteDismissalLetter() { if (HasValidUnfairDismissalClaim()) { throw new InvalidOperationException("Do not proceed with dismissal if claim is potentially valid; seek legal advice."); } var letter = $@" Dear [Employee Name], We regret to inform you that your employment will terminate on {EffectiveDateOfTermination:dd/MM/yyyy} due to redundancy. Reason: {ReasonForDismissal} Selection Pool: {RedundancySelectionPool} Selection Criteria: {SelectionCriteria} You were consulted individually on [consultation dates]. An at-risk notification was issued on [date]. [Details on redundancy pay if eligible: {EligibleForStatutoryRedundancyPay ? "You are eligible for statutory redundancy pay." : "You do not qualify for statutory redundancy pay."}] If you have any questions, contact HR. Sincerely, [Employer Representative] "; return letter; } } /// <summary> /// Service for dependency injection to handle employment law evaluations. /// Register in DI container, e.g., services.AddScoped<IEmploymentLawService, EmploymentLawService>(); /// </summary> public interface IEmploymentLawService { bool EvaluateUnfairDismissalClaim(double serviceMonths, bool proceduralFairness); } public class EmploymentLawService : IEmploymentLawService { public bool EvaluateUnfairDismissalClaim(double serviceMonths, bool proceduralFairness) { if (serviceMonths < 0) { throw new ArgumentException("Service months cannot be negative.", nameof(serviceMonths)); } // Simplified evaluation mirroring RedundancyDismissal logic bool hasQualifyingService = serviceMonths >= 24; return hasQualifyingService && proceduralFairness; } } } ``` ### Explanation In UK employment law (Employment Rights Act 1996), an employee generally needs at least 2 years' continuous service (24 months) to bring an ordinary unfair dismissal claim to an employment tribunal. Redundancy is a potentially fair reason for dismissal, but the process must be fair (e.g., genuine business need, proper consultation, objective selection criteria, and within the "band of reasonable responses" that a reasonable employer might take). For this scenario (20 months' service, redundancy dismissal): - The employee does **not** have a valid claim for ordinary unfair dismissal due to insufficient qualifying service. - Exceptions apply for automatically unfair dismissals (e.g., if related to pregnancy, whistleblowing, or discrimination), but none are indicated here, so no claim is viable. - They may still be entitled to a basic notice period or accrued holiday pay, but not statutory redundancy pay (also requires 2 years). The code models this via the `RedundancyDismissal` class, incorporating the suggested criteria (e.g., `WithinBandOfReasonableResponses`, `SelectionCriteria`) and functions (e.g., `WriteDismissalLetter`, pool definition via constructor). Use `HasValidUnfairDismissalClaim()` to evaluate cases. The `IEmploymentLawService` enables DI for broader HR systems (e.g., in ASP.NET Core: `services.AddScoped<IEmploymentLawService, EmploymentLawService>();`). Always consult a lawyer for real cases, as this is not legal advice.

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
Better
V4qwen2.5-coder-3b-instruct
Better
V5cerebras/qwen-3-235b-a22b-instruct-2507
Better
V7qwen2.5-coder-7b-instruct
Better
V8openai/gpt-4.1
Better
V9anthropic/claude-opus-4-7
Worse
V12openai/gpt-4o
Better

Comments

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.

← back to all rounds