Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions emrg/server/competition_prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,15 @@ One improvement per round: local validation → submit → record the score delt
- Keep `best score` and the submission that produced it; never overwrite a better score with a worse one.
- Note the submission budget/limits if the platform has any (many limit daily submissions).

**Establish what the right answer is before changing what produces it.** "Adjust the thing, re-score, read the delta" is a valid unit only when the thing you adjusted is uniform. When the round's subject is *a class of cases handled wrongly*, a change applied to the whole class mixes the cases it fixed with the cases it broke into one score, and that score has two opposite causes inside it: it cannot be attributed, so the change can neither be kept nor reverted, and the submissions spent on it produced nothing. Work it in four steps instead:

1. **Classify** the cases that are not right, and keep the classification where the next round can read it.
2. **Draw a small sample from one class and submit it as a probe** — not the whole class.
3. **Read the probe's outcome as that class's answer.** A probe whose result is not read has bought nothing; a class whose answer is established is a fact the remaining cases can be judged against.
4. **Turn the answer into one concrete change** — a detector, a re-read rule, a corrected output format — recording what the answer was, where the previous behaviour went wrong, and what changed.

Step 4 is the one most easily left out. A round that classified, counted or observed and stopped has not improved anything, whatever it wrote down. Widen from the sample to the whole class only when the sample's reading cannot be interpreted.

#### Phase E — Deadline wrap-up

Freeze before the deadline; select the best historical submission as the final entry; settle the prize/ranking outcome.
Expand Down
32 changes: 32 additions & 0 deletions tests/test_competition_prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -1004,3 +1004,35 @@ def test_the_rendered_hygiene_section_still_precedes_the_round_it_binds(rendered
"§1's first sentence did not survive the render, so the round is sent the section "
"without the rule that fixes its mis-reading"
)


def test_phase_d_establishes_the_answer_on_a_sample_before_changing_the_class():
"""§Phase D must state how the right answer is established, not only that a round improves.

"Local validation → submit → record the delta" is a valid unit only when what was adjusted
is uniform. On a class of cases handled wrongly, a whole-class change mixes the cases it
fixed with the cases it broke into one unattributable score, so the round that made it can
neither keep the change nor revert it — and the submissions it spent bought nothing. The
four steps below are what separates a round that improved something from a round that
classified, counted or observed and stopped; the last one is the step most easily left out,
which is why it is asserted by name rather than implied.
"""
text = PROMPT.read_text(encoding="utf-8")
start = text.index("#### Phase D — Iteration")
end = text.index("#### Phase E — Deadline wrap-up")
phase_d = text[start:end]
for step in (
"**Classify** the cases that are not right",
"**Draw a small sample from one class and submit it as a probe**",
"**Read the probe's outcome as that class's answer",
"**Turn the answer into one concrete change**",
):
assert step in phase_d, f"§Phase D is missing the step {step!r}"
assert "not the whole class" in phase_d, (
"§Phase D must say the probe is a sample rather than the whole class — that is the "
"difference between an attributable reading and one number with two opposite causes"
)
assert "Step 4 is the one most easily left out" in phase_d, (
"§Phase D must name the step most easily skipped, or a round that only observed reads "
"as if it had improved something"
)
Loading