Skip to content

emrg: the system prompt's plan rule states no shape a round can be measured against #2615

Closed

Description

@argszero

What is observed

emrg/server/prompts/system.j2 states the plan rule as one bullet inside ## How you work:

Plan the round before the first call. Enumerate what this round has to establish and the readings it needs, and write that enumeration out as the opening lines of your reply, before you call anything. Every reading you can already specify goes out in one response; a call stands alone only when its arguments need an answer you have not read yet. …

It asks for a plan. It states no shape a round can be measured against, so a round that issues a single call satisfies it as written, and one-call rounds stay the norm. The instruction reads as an exhortation, and an exhortation is not a requirement.

What is expected

The rule should be a hard shape rule, carried by its own section at the very end of the template: a round has exactly two shapes — no call at all, or five or more calls — and a round below five has to answer for itself and say why it is spending a round that costs more than the calls it buys.

The text to carry, verbatim:

## Plan before every call

- **Plan before every call.** The opening lines of your reply list the tool calls the request needs in total. A round is billed for re-sending the whole conversation, so five planned calls in one round cost one fifth of what five calls in five rounds cost. A round therefore has two shapes and no third: **no call at all**, or **five or more calls**. Below five, the round must answer for it and say why it is wasting money.

The section is a ## heading of its own — not a bullet under ## How you work, and not a fourth clause of ## Hard limits. Its position is part of it: it is the last block in the file, after all of ## Hard limits.

What the fix must satisfy

File Change
emrg/server/prompts/system.j2 Delete the existing bullet entirely, leaving no fragment of it behind; insert the block above, heading included, as the file's last content.
tests/test_several_calls_rule_reach.py Follow the rewrite without loosening it: RULE_SECTION moves from ## How you work to the new heading; RULE_LEAD becomes **Plan before every call.**; RULE_ACTION_PHRASES is re-registered to the phrases the new wording uses; RULE_TERMS covers at least the two-shapes statement and the say-why-it-wastes clause, or the mutations below cannot redden. test_the_rule_is_a_tool_usage_line_not_a_new_section inverts: from "must be a bullet under ## How you work and must not be its own heading" to "must be its own section and the last block in the file".

Acceptance

  • The repository suite passes, and so does every CI leg.
  • Three mutation checks, each of which must turn the suite red and then green again on restore:
    1. delete no call at all, or five or more calls → red;
    2. delete say why it is wasting money → red;
    3. move the new section back into the middle of ## How you work → the positional assertion goes red.

A mutation that survives is a guard that does not measure the requirement it names.

Activity

  1. argszero commented on Oct 28, 2026

    @argszero
    OwnerAuthor

    Handled by #2616

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions