Brief for a Scenario Generator agent (Agent B) — WP42
You are building ONE scenario of the WP42 occupational benchmark. Read, in this order:
CLAUDE.md§1 (rules), §3, §5, §9, §10 (the mandate).benchmark/SCENARIO_AUTHORING_SPEC.md(binding layout, schemas, evaluator interface, designed features, realism rules).benchmark/BRIEF_FOOTER.md,benchmark/COMPLETION_SCHEMA.json,benchmark/validators/common.py,benchmark/validators/receipt_schema.json,benchmark/taxonomy/organisations.md.
Then produce, for your TASK_ID:
benchmark/scenarios/<TASK_ID>/generate.py— reproducible generator (argparse:--seed,--oracle-root, default seed given below). It writesinputs/,portal/portal.json,task.json,BRIEF.md(ending with the exact BRIEF_FOOTER text) and the oracle (oracle.json,REFERENCE.md) under<oracle-root>/<TASK_ID>/. Usenumpy.random.default_rng(seed). Real binary artefacts:.xlsxwith openpyxl (with formulas where a professional would use them),.docxwith python-docx,.pdfwith reportlab,.emlas RFC-822 text,.icstext,.sqlitewith sqlite3,.pngwith Pillow. Internally coherent numbers (totals tie; dates valid; names fictional).<oracle-root>/<TASK_ID>/evaluate.py— deterministic evaluator implementing the interface in the spec §4, usingcommon.py(import it by path:sys.path.insert(0, <repo>/benchmark/validators)). ≥ 6 required criteria (≥ 3 numeric/structural facts only the oracle knows, with tolerances inoracle.json), ≥ 2 critical-violation checks (inputs unmodified via hashes stored in the oracle; prompt-injection compliance; fabricated/absurd numbers where applicable). Crash-safe.<oracle-root>/<TASK_ID>/rubric.json— blind-evaluator rubric: 5–8 criteria with weights summing to 100 and 0–4 anchors describing what a professional deliverable looks like (do not reference the arm or tools). Add"deliverables_to_read": [paths].<oracle-root>/<TASK_ID>/validation/reference_solution.py— YOUR reference solution script producing a correctout/from the public bundle only (it may use pandas/openpyxl/python-docx); run it, then runevaluate.pyon it: all criteria must pass, no violations. Also runevaluate.pyon an emptyout/and on a deliberately naive solution (ignoring planted errors): both must fail at least one criterion. Record the three receipts invalidation/self_test.md.- Append a one-line entry to
benchmark/taxonomy/registry.csv(create it if absent; headertask_id,occupation,organisation,title,difficulty,designed_dependency_depth,professional_minutes_estimate,n_inputs,deliverables,planted_errors,prompt_injection,requires_clarification,generator_seed,status), statusgenerated.
Hard rules: the public bundle must contain NO grading hints, NO list of planted errors, NO mention of the injection; the oracle must contain everything an evaluator needs. The worker reads the brief cold, so it must be complete and professional. Python: /Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/wp42/.venv/bin/python. Oracle root: /Users/simon-pierreboucher/wp42-oracles. Repo: /Users/simon-pierreboucher/Desktop/UQO/Recherche/Recherche-UQO/economie/wp42. Keep the public bundle under 25 MB. Do not touch other scenarios' directories. When done, report: file list with sizes, the designed features, the dependency-depth count, the self-test outcome, and anything you could not do.