The short version

The first AI response passed all five checks: 10/10, with no correction. It reassigned three shifts and removed one extra interval from a deliberately invalid fictional roster. It also counted an overnight shift in two calendar weeks and included fixed shifts outside the requested repair period.

The invalid input was authored by the evaluator. Its 0/10 input score is not an AI first-response score and is not evidence that the model initially failed. The measured model scores are 10/10 first and 10/10 final because there was one answer and no follow-up.

Download the full evidence pack, or try the free shift schedule checker with the complete checker-input CSV. The checker covers hours, overlaps and rest; this case's separate validator also checks required coverage and supplied availability.

The task

Repair seven exact shift intervals for two fictional employees, Alex and Blair. Every interval needs exactly one eligible person. Four surrounding assignments are fixed: Alex's September 26 shift, Blair's September 27 shift, and both employees' October 4 shifts. Those fixed rows must remain outside the model's proposed roster but inside rest and weekly-hours checks.

Required intervalEligible employees
Sep 27 22:00–Sep 28 06:00Alex
Sep 28 14:00–22:00Blair
Sep 29 08:00–16:00Alex
Sep 30 08:00–16:00Alex or Blair
Oct 1 08:00–16:00Alex or Blair
Oct 2 08:00–16:00Alex or Blair
Oct 3 08:00–16:00Alex or Blair

The evaluator's initial roster assigned every interval to Alex and added a September 30 10:00–12:00 interval inside another shift. It violated coverage, availability, overlap, rest and weekly hours. No real employee data was supplied.

Before inference, we froze five checks worth two points each and the fixture/prompt/validator SHA-256 hashes in protocol.json. All arithmetic uses one local wall clock; no DST, breaks or labor-law interpretation is included.

The successful run took about 70 seconds on September 30, 2026, from 20:53:23 to 20:54:33 Asia/Shanghai. Codex CLI reported the alias gpt-6-astra with max reasoning. A dated backend snapshot identifier was unavailable. The model was instructed to use only the fixture; no tool calls were observed. CLI built-in instructions were not captured verbatim, so the complete user prompt below is not a claim to preserve the entire hidden system context.

An earlier invocation requested the desktop-configured alias gpt-6.1-sol and returned HTTP 400 before an answer. That transport error is recorded in the protocol; it is not counted as a scored model response. There was exactly one completed answer, with no sampling for a preferred result.

The exact first prompt

Download the exact user prompt.

This is a bounded, fictional scheduling evaluation. Answer only from the fixture below. Do not call tools, browse, run code, read files or change anything. Return only a JSON object, with no Markdown fences or text outside it.

Repair the supplied initialCsv. It was authored by the evaluator, not by a model. Assign exactly one eligible employee to each of the seven required intervals, with no extra intervals. The fixed assignments must stay unchanged and must NOT be included in scheduleCsv. Every employee must have no overlap and at least 12 hours of rest between occupied work blocks, including fixed assignments before and after the requested rota. Every Monday-starting calendar week must have at most 40 assigned hours, counting all fixed and proposed assignments. Split the overnight Sunday-to-Monday shift across the two calendar weeks. Use local wall-clock arithmetic without time zones, DST or unpaid breaks.

Return these keys:
- findings: a list of problems you found in the supplied roster.
- scheduleCsv: the entire repaired seven-row roster as a JSON string, with the exact header Employee,Start,End and unquoted YYYY-MM-DD HH:mm values.
- weeklyHours: one object per employee and calendar week containing assigned work, with keys employee, week (Monday YYYY-MM-DD), hours. Include all fixed assignments in these totals.
- explanation: a short account of the repair and limitations.

One independent attempt is being measured. Five equally weighted checks (2 points each) were frozen before this run: exact required coverage/no extras, supplied availability, no overlaps/duplicates, minimum rest including boundary shifts, and weekly cap with accurate reported totals including fixed shifts. If a check fails, at most one follow-up containing the detected failures will be allowed; otherwise there will be no correction. Do not infer real employee availability or legal compliance.

Complete synthetic fixture:
{
  "id": "cross-week-repair-2026-09-30",
  "inputOrigin": "synthetic-fixture",
  "rules": {
    "maxHours": 40,
    "minRest": 12,
    "weekStart": "Monday"
  },
  "required": [
    {
      "id": "S1",
      "start": "2026-09-27 22:00",
      "end": "2026-09-28 06:00",
      "eligible": [
        "Alex"
      ]
    },
    {
      "id": "S2",
      "start": "2026-09-28 14:00",
      "end": "2026-09-28 22:00",
      "eligible": [
        "Blair"
      ]
    },
    {
      "id": "S3",
      "start": "2026-09-29 08:00",
      "end": "2026-09-29 16:00",
      "eligible": [
        "Alex"
      ]
    },
    {
      "id": "S4",
      "start": "2026-09-30 08:00",
      "end": "2026-09-30 16:00",
      "eligible": [
        "Alex",
        "Blair"
      ]
    },
    {
      "id": "S5",
      "start": "2026-10-01 08:00",
      "end": "2026-10-01 16:00",
      "eligible": [
        "Alex",
        "Blair"
      ]
    },
    {
      "id": "S6",
      "start": "2026-10-02 08:00",
      "end": "2026-10-02 16:00",
      "eligible": [
        "Alex",
        "Blair"
      ]
    },
    {
      "id": "S7",
      "start": "2026-10-03 08:00",
      "end": "2026-10-03 16:00",
      "eligible": [
        "Alex",
        "Blair"
      ]
    }
  ],
  "fixed": [
    {
      "employee": "Alex",
      "start": "2026-09-26 08:00",
      "end": "2026-09-26 16:00"
    },
    {
      "employee": "Blair",
      "start": "2026-09-27 08:00",
      "end": "2026-09-27 16:00"
    },
    {
      "employee": "Alex",
      "start": "2026-10-04 04:00",
      "end": "2026-10-04 12:00"
    },
    {
      "employee": "Blair",
      "start": "2026-10-04 08:00",
      "end": "2026-10-04 16:00"
    }
  ],
  "initialCsv": "Employee,Start,End\nAlex,2026-09-27 22:00,2026-09-28 06:00\nAlex,2026-09-28 14:00,2026-09-28 22:00\nAlex,2026-09-29 08:00,2026-09-29 16:00\nAlex,2026-09-30 08:00,2026-09-30 16:00\nAlex,2026-09-30 10:00,2026-09-30 12:00\nAlex,2026-10-01 08:00,2026-10-01 16:00\nAlex,2026-10-02 08:00,2026-10-02 16:00\nAlex,2026-10-03 08:00,2026-10-03 16:00"
}

First result: 10/10

The complete final assistant response is preserved below and as an unedited text file. No assignment was manually repaired before validation.

{
  "findings": [
    "S2 is assigned to Alex, but only Blair is eligible.",
    "The extra Alex interval on 2026-09-30 10:00–12:00 is not required and overlaps S4.",
    "Alex has only 8 hours of rest between S1 and S2, and 10 hours between S2 and S3; both violate the 12-hour minimum.",
    "Alex's initial assignments total 64 hours in the week starting 2026-09-28, including the extra interval and fixed assignment, exceeding the 40-hour cap."
  ],
  "scheduleCsv": "Employee,Start,End\nAlex,2026-09-27 22:00,2026-09-28 06:00\nBlair,2026-09-28 14:00,2026-09-28 22:00\nAlex,2026-09-29 08:00,2026-09-29 16:00\nBlair,2026-09-30 08:00,2026-09-30 16:00\nBlair,2026-10-01 08:00,2026-10-01 16:00\nAlex,2026-10-02 08:00,2026-10-02 16:00\nAlex,2026-10-03 08:00,2026-10-03 16:00",
  "weeklyHours": [
    {
      "employee": "Alex",
      "week": "2026-09-21",
      "hours": 10
    },
    {
      "employee": "Blair",
      "week": "2026-09-21",
      "hours": 8
    },
    {
      "employee": "Alex",
      "week": "2026-09-28",
      "hours": 38
    },
    {
      "employee": "Blair",
      "week": "2026-09-28",
      "hours": 32
    }
  ],
  "explanation": "Reassigned S2, S4 and S5 to Blair and removed the extra interval. Fixed assignments remain unchanged, are excluded from scheduleCsv, and are included in weeklyHours. S1 contributes 2 hours to the first week and 6 to the second. All seven intervals have eligible coverage without overlaps; every rest gap is at least 12 hours, including Alex's Saturday-to-Sunday boundary. All weekly totals meet the cap. Validation uses only the fictional fixture and implies no real availability or legal compliance."
}

The response moved September 28, September 30 and October 1 to Blair and deleted the extra nested interval. Alex's September 27 overnight shift contributes 2 hours to the week of September 21 and 6 hours to the week of September 28.

CriterionFirst response
Exact required coverage; no extra intervals2/2
Supplied availability2/2
No overlaps or duplicate intervals2/2
At least 12 hours of rest, including fixed boundary shifts2/2
At most 40 hours per week; reported totals match all assignments2/2
Total10/10

The one correction

Not needed and not performed. The frozen protocol allowed one failure-only correction if the first answer failed a check. All five passed, so we stopped after the first response. There is no corrected output to reconstruct.

Final result: 10/10

The final result is the same untouched first response. The independent minute-counting validator produced these totals, including all four fixed assignments:

EmployeeWeek starting MondayAssigned hours
AlexSep 2110
BlairSep 218
AlexSep 2838
BlairSep 2832

The minimum valid boundary gap is exactly 12 hours: Alex's October 3 shift ends at 16:00 and the fixed October 4 shift starts at 04:00. The published checks.json records the input and output separately.

What worked

  • The model repaired the eligibility error and both short-rest gaps without changing fixed work.
  • It removed the overlapping extra interval rather than counting it as required coverage.
  • It split the overnight assignment at Monday midnight and counted the following Sunday shifts in the same week as the repaired roster.
  • The actual assignments and all four reported weekly totals agreed with the deterministic checks.

What failed

No scored output check failed in this one completed attempt. The earlier CLI alias request failed at the transport layer before inference returned an answer. The deliberately faulty input is a test fixture, not an observed model failure.

Verdict

Worked on the first response for this bounded synthetic repair. This is one constrained text result, not evidence of general scheduling reliability, legal compliance or performance on messy real rosters. Availability was explicit and only two people were involved. No workbook was generated or recalculated; no real shift was changed. Editorial verification was performed by Codex, with no independent human or domain review.

Reproduce the checks

  1. Download and unzip the evidence pack.
  2. Run node validate.mjs with Node.js 22 or newer. It reads the saved fixture and raw response and prints both check results. No packages, credentials or network are required.
  3. To compare the browser checker, paste all rows from checker-input.csv, choose a 40-hour cap, 12-hour rest and Monday week start. Expect 11 total assignments, no hours/overlap/rest issues, and the four weekly totals above.
  4. Review coverage and availability with the standalone validator; the browser checker does not infer them.
  5. For a new model attempt, use the unchanged prompt, preserve the raw answer, and keep any different result. Model behavior may change.

For the original generation task and its observed failures, see the 24/7 scheduling workbook case. The five-check schedule guide explains the broader review process.