# Study 002 post-hoc C-modal extension

Run date: 2026-09-03 (Australia/Sydney)<br />
Status: pilot complete; not part of the frozen four-condition comparison

## Question

Can the candidate MCP condition implement and exercise the modal-focus behaviour
that was not applicable to original artifact C?

## Change from the frozen task

The original common implementation prompt and candidate MCP treatment were
reused. `TASK.md` adds one requirement: clearing the saved booking must use a
modal confirmation with safe initial focus, forward and reverse focus
containment, Escape dismissal, trigger restoration, and a deliberate focus
destination after destructive confirmation.

Original artifact C is unchanged. This extension must not be substituted for it
in the original A/B/C/D result because only C was rerun and the task changed.

## Result

The new C-modal artifact passed the complete booking and modal-focus exercise in
independent Chrome testing at `1440 × 1000` and `390 × 844`:

- the modal opens on `Keep this booking`;
- Tab cycles Keep → Clear → Keep;
- Shift+Tab cycles Keep → Clear → Keep in reverse;
- Escape closes the modal, retains the booking and returns focus to
  `Start a new booking`;
- destructive confirmation clears the saved booking and focuses the
  introductory heading; and
- the page has no horizontal overflow at the narrow viewport.

The run's own separate Playwright exercise reported 140 passing assertions at
`1280 × 900` and `375 × 812`. The independent Chrome record, rather than that
self-report, is the scored result in `control/keyboard-results.json`.

## Interpretation

This is useful diagnostic evidence that the candidate treatment can produce a
passing modal when the requirement is explicit. It does **not** make the
original Study 002 comparison apples-to-apples, demonstrate causality, or show
that C is generally superior. A fair comparative modal claim still requires
fresh A, B, C and D runs against the same amended task.

## Evidence

- `TASK.md` — amended task supplied to the run.
- `run/` — the generated application and original agent handoff.
- `control/run-metadata.json` — frozen configuration, identities and usage.
- `control/run-trace.sanitized.jsonl` — complete Codex JSONL event stream with
  local absolute paths replaced by placeholders.
- `control/keyboard-results.json` — independent Chrome observations.
- `screenshots/` — wide and narrow modal focus evidence.

The handoff says one invalid `max_chars: 1000` request occurred. The complete
event trace records five such rejected exploratory requests, followed by valid
retrievals. The trace is authoritative for the call count; this discrepancy is
preserved rather than silently editing the run's handoff.

No screen reader, Safari, Firefox interaction, physical touch-device,
forced-colours or browser-zoom exercise was performed. Passing this extension
does not establish WCAG conformance or production readiness.
