Round #368

08 May 2026, 21:02· hr-law· qwen2.5-coder-7b-instruct· r13-clean-hints
Complexity
band 0
ZP / UO / OBS
3 / 5 / 2
Journey weight
840
Lightshift ΔL
+0.00

Prompt

An employee has a final written warning that expires in two weeks. They commit a minor act of misconduct today. Can we use the active FWW when deciding sanction?

Zero-point index (what the engine surfaced)

ZPI-ZPI-0007 | 2026-05-08T21:02:35Z An employee has a final written warning that expires in two weeks. They commit a minor act of misconduct today. Can we use the active FWW when deciding sanction? ZERO POINT — 3 entries (structural invariants) ● hsl(157.40, 100%, 15%) ACAS Code of Practice [contract] ● hsl(34.71, 100%, 15%) procedural fairness [contract] ● hsl(280.96, 100%, 15%) appeal right [contract] UNOBSERVED — 5 entries (implied truths) ○ hsl(230.00, 100%, 15%) right to be accompanied [feature] ○ hsl(231.00, 100%, 16%) appeal right [feature] ○ hsl(225.00, 100%, 18%) disciplinary investigation [feature] ○ hsl(180.00, 100%, 20%) Conduct disciplinary investigation [function] ○ hsl(182.25, 100%, 7%) Issue disciplinary invitation [function] OBSERVED — 2 entries (explicit in request) ◉ hsl(227.00, 100%, 20%) written warning [feature] ◉ hsl(228.00, 100%, 18%) final written warning [feature] COMPLEXITY │ 10 entries │ spread: 51° │ band: LOW

Baseline response (no ZPI)

In most workplace policies, an active Final Written Warning (FWW) typically serves as a formal notice to an employee that their behavior is unacceptable and that further violations could result in more severe consequences, including termination. Once issued, the FWW usually has a specific expiration date during which it remains valid. If an employee commits another minor act of misconduct after receiving an active FWW, you can generally use the existing FWW as part of your decision-making process for sanctioning the new infraction. However, there are several factors to consider: 1. **FWW Expiration**: If the FWW has expired, it is no longer valid, and you would need to issue a new one before considering any sanctions. 2. **Severity of the New Infraction**: The severity of the new misconduct should be assessed relative to the original FWW. If the new infraction is more serious than what was previously warned about in the FWW, it might warrant a stronger sanction. 3. **Company Policy and Procedures**: Check your company's policies and procedures regarding how to handle multiple infractions after an FWW. Some companies may have specific guidelines on this matter. 4. **Employee History**: Consider the employee's history of misconduct. If they have a pattern of repeated offenses, you might need to escalate the sanction more quickly. 5. **Documentation**: Ensure that all incidents are documented thoroughly and that there is clear evidence of both the original FWW and the new infraction. 6. **Consult HR or Legal Advice**: Depending on your company's size and jurisdiction, it may be advisable to consult with Human Resources (HR) or legal counsel to ensure compliance with workplace policies and labor laws. In summary, you can use the active FWW as part of your decision-making process for sanctioning a new infraction, but you should also consider the severity of the new misconduct, any changes in company policy, and whether the FWW has expired.

Enhanced response (with ZPI)

To address the request, we need to determine if an employee who has received a final written warning (FWW) can be sanctioned again for a minor act of misconduct committed after the expiration of the FWW. The ACAS Code of Practice and procedural fairness are relevant here. ### Implementation We will create a method to handle this scenario. This method will check if the FWW has expired and then decide whether to issue another sanction based on the severity of the new misconduct. ```csharp using System; using System.Threading.Tasks; public interface IDisciplinaryService { Task<bool> CanIssueSanctionAsync(Employee employee, Misconduct misconduct); } public class DisciplinaryService : IDisciplinaryService { private readonly IAcasCodeOfPractice _acasCodeOfPractice; private readonly IProceduralFairness _proceduralFairness; public DisciplinaryService(IAcasCodeOfPractice acasCodeOfPractice, IProceduralFairness proceduralFairness) { _acasCodeOfPractice = acasCodeOfPractice ?? throw new ArgumentNullException(nameof(acasCodeOfPractice)); _proceduralFairness = proceduralFairness ?? throw new ArgumentNullException(nameof(proceduralFairness)); } public async Task<bool> CanIssueSanctionAsync(Employee employee, Misconduct misconduct) { if (employee == null) throw new ArgumentNullException(nameof(employee)); if (misconduct == null) throw new ArgumentNullException(nameof(misconduct)); // Check if the FWW has expired var fww = await GetFinalWrittenWarningAsync(employee); if (fww != null && fww.ExpiryDate > DateTime.UtcNow) { return false; // FWW is still valid, cannot issue another sanction yet } // Check procedural fairness and ACAS Code of Practice if (!_proceduralFairness.IsProceduralFair(employee, misconduct)) { throw new InvalidOperationException("The disciplinary process must be conducted with procedural fairness."); } if (!_acasCodeOfPractice.IsCompliantWithAcasCodeOfPractice(employee, misconduct)) { throw new InvalidOperationException("The disciplinary action must comply with the ACAS Code of Practice."); } return true; // FWW has expired and all checks passed, can issue another sanction } private async Task<FinalWrittenWarning> GetFinalWrittenWarningAsync(Employee employee) { // Simulate fetching the FWW from a database or other storage // This is just a placeholder implementation await Task.Delay(100); // Simulate async operation return new FinalWrittenWarning { ExpiryDate = DateTime.UtcNow.AddDays(-14) }; // Example expiry date 2 weeks ago } } public class Employee { public int Id { get; set; } public string Name { get; set; } } public class Misconduct { public int Id { get; set; } public string Description { get; set; } public DateTime DateOccurred { get; set; } } public class FinalWrittenWarning { public DateTime ExpiryDate { get; set; } } public interface IAcasCodeOfPractice { bool IsCompliantWithAcasCodeOfPractice(Employee employee, Misconduct misconduct); } public class AcasCodeOfPractice : IAcasCodeOfPractice { public bool IsCompliantWithAcasCodeOfPractice(Employee employee, Misconduct misconduct) { // Simulate compliance check with ACAS Code of Practice return true; // Placeholder implementation } } public interface IProceduralFairness { bool IsProceduralFair(Employee employee, Misconduct misconduct); } public class ProceduralFairness : IProceduralFairness { public bool IsProceduralFair(Employee employee, Misconduct misconduct) { // Simulate procedural fairness check return true; // Placeholder implementation } } ``` ### Explanation 1. **IDisciplinaryService Interface**: Defines the contract for issuing sanctions. 2. **DisciplinaryService Class**: Implements the `IDisciplinaryService` interface and contains the logic to determine if a sanction can be issued. 3. **FinalWrittenWarning Class**: Represents the final written warning with an expiry date. 4. **Employee and Misconduct Classes**: Represent the employee and misconduct details. 5. **IAcasCodeOfPractice and IProceduralFairness Interfaces**: Define contracts for checking compliance with ACAS Code of Practice and procedural fairness. 6. **AcasCodeOfPractice and ProceduralFairness Classes**: Implement the interfaces to provide placeholder logic for compliance checks. ### Usage To use this implementation, you would register the services in a dependency injection container (e.g., using Microsoft.Extensions.DependencyInjection) and then call the `CanIssueSanctionAsync` method: ```csharp var services = new ServiceCollection(); services.AddTransient<IAcasCodeOfPractice, AcasCodeOfPractice>(); services.AddTransient<IProceduralFairness, ProceduralFairness>(); services.AddTransient<IDisciplinaryService, DisciplinaryService>(); var serviceProvider = services.BuildServiceProvider(); var disciplinaryService = serviceProvider.GetService<IDisciplinaryService>(); var employee = new Employee { Id = 1, Name = "John Doe" }; var misconduct = new Misconduct { Id = 1, Description = "Minor misconduct", DateOccurred = DateTime.UtcNow }; var canIssueSanction = await disciplinaryService.CanIssueSanctionAsync(employee, misconduct); Console.WriteLine(canIssueSanction); // Output: True or False based on the logic ``` This implementation ensures that the disciplinary process adheres to procedural fairness and ACAS Code of Practice guidelines while checking if the FWW has expired before issuing another sanction.

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-7b-instruct
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