Label Shift MonitorML & Forecasting
Start with all trials for auto-written insights, or select a single trial to read its full trajectory.
Fable-5claude-code · high
Mean reward
100%All trials
Across 8 trials on this task, reward ran from 100% to 100% — 8 of 8 passed.
- $1.09avg cost
- 3mavg time
Summary · Fable-5
Fable-5 passed all 8 trials.
Common pattern
Every trial passed — capable and repeatable on this task.
Opus-4.8claude-code
Mean reward
100%All trials
Across 8 trials on this task, reward ran from 100% to 100% — 8 of 8 passed.
- $0.64avg cost
- 3mavg time
Summary · Opus-4.8
Opus-4.8 passed all 8 trials.
Common pattern
Every trial passed — capable and repeatable on this task.
Gemini-3gemini-cli
Mean reward
87.5%All trials
Across 8 trials on this task, reward ran from 0% to 100% — 7 of 8 passed.
- $0.49avg cost
- 3mavg time
Summary · Gemini-3
Gemini-3 passed 7 of 8 trials.
Common pattern
7 of 8 trials passed on identical attempts: the capability is there, the reliability is not.
GPT-5.4codex
Mean reward
37.5%All trials
Across 8 trials on this task, reward ran from 0% to 100% — 3 of 8 passed.
- 37avg turns
- $0.64avg cost
- 4mavg time
Summary · GPT-5.4
GPT-5.4 passed 3 of 8 trials.
Common pattern
3 of 8 trials passed on identical attempts: the capability is there, the reliability is not.
Published trajectory
The drop publishes a full step record for one of the trials above — every other attempt shipped its score without its route.
“Created [monitor.py](/logs/artifacts/monitor.py), [config.json](/logs/artifacts/config.json), and [REPORT.md](/logs/artifacts/REPORT.md). The fix replaces the marginal `P(X)` drift test with a label-conditioned detector: both windows are standardized to the same fraud mix, then each feature is tested with a label-stratified permutation test. That removes alerts caused only by fraud-rate spikes while still catching real changes in `P(X | fraud)` or `P(X | not fraud)`. Continuous features use a weighted KS distance; categorical features use weighted total variation. Verification is clean on the public sample: the artifact returns `retrain: false` even though fraud prevalence rises from `10.45%` to `30.7%`. Synthetic checks with actual within-class drift still alert the changed feature, including fraud-only `amount` drift and non-fraud `velocity` drift.”
The full trajectory
- system
<permissions instructions> Filesystem sandboxing defines which files can be read or written. `sandbox_mode` is `danger-full-access`: No filesystem sandboxing - all commands are permitted. Network access is enabled. Approval policy is currently never. Do not provide the `sandbox_permissions` for any reason, commands will be rejected. </permissions instructions><skills_instructions> ## Skills A skill is a set of instructions provided through a `SKILL.md` source. Below is the list of skills that can be used. Each entry includes a name, description, and source locator. `file` locators are on the host filesystem, `environment resource` locators are owned by an execution environment, `orchestrator resource` locators are opaque non-filesystem resources, and `custom resource` locators use their provider's access mechanism. ### Available skills - imagegen: Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG/vector/code-native assets, extending an established icon or logo system, or building the visual directly in HTML/CSS/canvas. (file: /tmp/codex-home/skills/.system/imagegen/SKILL.md) - openai-docs: Use when the user asks how to build with OpenAI products or APIs, asks about Codex itself or choosing Codex surfaces, needs up-to-date official documentation with citations, help choosing the latest model for a use case, or model upgrade and prompt-upgrade guidance; use OpenAI docs MCP tools for non-Codex docs questions, use the Codex manual helper first for broad Codex self-knowledge, and restrict fallback browsing to official OpenAI domains. (file: /tmp/codex-home/skills/.system/openai-docs
- user
<environment_context> <cwd>/app</cwd> <shell>bash</shell> <current_date>2026-07-17</current_date> <timezone>Etc/UTC</timezone> <filesystem><workspace_roots><root>/app</root></workspace_roots><permission_profile type="disabled"><file_system type="unrestricted" /></permission_profile></filesystem> </environment_context>
- user
# Fraud Drift Monitor The drift-monitoring pipeline in `/app` compares a reference CSV to a current production CSV and emits a retraining trigger when it believes feature distributions have changed. The on-call team has noticed that during fraud-rate surges the monitor fires retraining alerts on several features that are correlated with fraud. They suspect many of these alerts are false positives driven by the surge itself, not by genuine changes in the feature behavior. Your goal is to make the monitor robust to fraud-rate spikes: it should not waste retraining cycles when the only thing that changed is how common fraud is, but it must still detect real changes in the feature behavior. ## What you are given - `/app/monitor.py` — the current detector. - `/app/config.json` — feature metadata (label column, continuous/categorical lists). - `/app/reference.csv` and `/app/current.csv` — public examples for local debugging. - `/app/INCIDENT_RUNBOOK.md` — notes from the last alert spike. ## What you must produce Write the following under `/logs/artifacts/`: - `/logs/artifacts/monitor.py` — a self-contained fixed detector. - `/logs/artifacts/config.json` — the configuration used by your detector. - `/logs/artifacts/REPORT.md` — a concise explanation of the bug and the fix. During verification, the submitted monitor may be executed on hidden streams and produce intermediate JSON outputs under `/logs/artifacts/`; these intermediate files are not part of your graded deliverables. ## Detector interface The verifier will invoke your artifact as: ```bash python /logs/artifacts/monitor.py <reference.csv> <current.csv> <output.json> --label <label_column> ``` The script must accept positional arguments for the reference CSV, current CSV, and output JSON path, plus a `--label` option. It must write a JSON object to `<output.json>` containing at least: ```json { "retrain": true, "alerts": ["feature_3", "feature_7"], "p_values": { ... } } ``` - `alerts` is the lis
- agent
I’m inspecting the existing detector, config, and incident notes first so I can identify where prevalence shifts are leaking into the drift signal.
- agent
Executed exec_command call_wzvN2MBBx4IgXyrfwbOc69PP
- agent
Executed exec_command call_EnBYAh0kNoW15YtxFkNbScAu
- agent
Executed exec_command call_rjohRPaZhaCw3sdnWSQbek4S
- agent
Executed exec_command call_65v6gjR9CPj3IYP5g9EZHqxc
- agent
The current detector is purely marginal: it tests `P(X)` feature-by-feature and ignores the label. I’m checking the public data generator next to confirm the intended failure mode and choose a label-conditioned test that still catches real within-class drift.
- agent
Executed exec_command call_VXNauEjRzRsT3xNiMFGDChh8
- agent
Executed exec_command call_BiWVcbcy92CfKVQWoohoBOyx
- agent
Executed exec_command call_DJwxhXlrvsPr8625qO1ZNWWw
- agent
The failure mode is confirmed on the public sample: the current script alerts exactly the fraud-correlated features even though the generator only changes the fraud base rate. I’m prototyping a label-stratified test now and will verify it suppresses those alerts without losing sensitivity to within-label drift.
- agent
Executed update_plan call_JHqLDhNOQBwhnYhjuC9TTlvy
- agent
Executed exec_command call_qgXXv7rkPRRdBPxAUcpd5Cv7
- agent
Executed exec_command call_WwvGSTCKeYAneQwiyIiI3fQt
- agent
Executed exec_command call_2SadzbGFWDlkflH0D5byWxcf
- agent
Executed exec_command call_xHuOVKZWBVFrX2otyShdpimw
- agent
Executed exec_command call_jx2WJbv5q6d4cCpXAF3kSOyY
- agent
Executed exec_command call_K7STQVh6ITvTT7biGYjiXm7C
- agent
The asymptotic stratified tests still produce a couple of noisy alerts on the public sample, mostly from the small fraud stratum. I’m switching the prototype to a label-stratified permutation test so the p-values are calibrated under changing fraud prevalence rather than under the old marginal assumptions.
- agent
Executed exec_command call_cvQX56pY5rQMcycSSqbwWTNP
- agent
Executed write_stdin call_eu1uerMGZcA1QHF2nDwXKBzF
- agent
Executed exec_command call_nmpNbCtLr3W4yu9lXMyzCOiL
- agent
Executed write_stdin call_48lbgmjo7R7SBO056CNk5T8k
- agent
I have a detector shape that behaves correctly on the public prevalence-shift case: it standardizes feature distributions to a common fraud mix and uses a label-stratified permutation test, so base-rate changes alone no longer trip the alarm. I’m writing the artifact now, then I’ll rerun it on the public sample and a few synthetic within-class drift cases.
- agent
Executed exec_command call_wZbN7M7gRrfvJrGIvx0xR15E
- agent
I’m adding the artifact files under `/logs/artifacts` now. The detector will load its colocated config, standardize both windows to the same label mix, and then run a stratified permutation test per feature.
- agent
Executed apply_patch call_AGLsrzDYmElyiaw366tgfqcM
- agent
The artifact is in place. I’m running the submitted script exactly through its verifier interface on the public sample, then I’ll hit it with a few synthetic within-label drifts to make sure it still fires when it should.
- agent
Executed exec_command call_gfSeNC784cqqPgdu0ONcVkzG
- agent
Executed exec_command call_M07Ex8nD7qXwIowY4GZuyEx2
- agent
Executed exec_command call_GzysEPoEgsPrrwQM5OucMxdd
- agent
The public replay is clean: no retraining alert even though the fraud rate jumps from about 10% to 31%. I’m finishing with synthetic checks where only the within-class feature behavior changes, to confirm those still alert.
- agent
Executed write_stdin call_CI8aRyiuxVGwsDeOL10EuDIY
- agent
Executed update_plan call_H6VowHtTnaTlpw7atAt0UyQz
- agent
Created [monitor.py](/logs/artifacts/monitor.py), [config.json](/logs/artifacts/config.json), and [REPORT.md](/logs/artifacts/REPORT.md). The fix replaces the marginal `P(X)` drift test with a label-conditioned detector: both windows are standardized to the same fraud mix, then each feature is tested with a label-stratified permutation test. That removes alerts caused only by fraud-rate spikes while still catching real changes in `P(X | fraud)` or `P(X | not fraud)`. Continuous features use a weighted KS distance; categorical features use weighted total variation. Verification is clean on the public sample: the artifact returns `retrain: false` even though fraud prevalence rises from `10.45%` to `30.7%`. Synthetic checks with actual within-class drift still alert the changed feature, including fraud-only `amount` drift and non-fraud `velocity` drift.