Skip to content

No task template says which side wins when an installation's supplement contradicts the prompt #2744

Closed

Description

@how2how2how2-arch

What happens today

Each task prompt renders the installation's extra_prompt under one heading, and the block is a real part of the instruction a round reads — often the longest part of it. Nothing anywhere says which side wins when that block and the prompt's own body disagree about the same subject.

Measured on this checkout:

  • Eight task templates render the block and not one of them states a precedence rule. Two of them explain how to read a silent block (a value the block does not give is an item for the host, never invented); silence and contradiction are different questions, and only the first is answered.
  • The builder settles a neighbouring question and not this one. _template_task_context decides which copy of the block renders when a record carries one under config: and one at its top level — placement, not conflict. Its own docstring states that asymmetry deliberately.
  • The rendering is one block copied into each template, with no shared partial, so there is no single file where a rule about that block could live.

Why it matters

A round that reads two instructions and finds them disagreeing picks one. Which one it picks is then decided by reading order, by recency, or by which paragraph is more emphatic — none of which is written down, and none of which survives a change of model. The failure is quiet in both directions:

  • Follow the supplement and a rule the prompt states as a prohibition is dropped, in the one place it was written to protect.
  • Follow the prompt and a host instruction that the installation deliberately recorded is ignored, while every round keeps rendering it.

What the fix must satisfy

  1. Every template that renders the block states, inside that block, which side wins — the narrower instruction where the two address the same subject, and the prompt's own prohibition where that is what the disagreement is about, with the disagreement named as an item for the host rather than settled in silence.
  2. A subject the block does not mention is not a disagreement, said explicitly, so silence stays silence.
  3. The statement is the same in every carrier, appears once in each, and sits inside the block rather than beside it.
  4. The rule is mechanised: a carrier that loses the statement, or disagrees with the others, fails a test that names the file. The check must not be a blessed sentence — rewording it in every carrier has to stay green, or the next editor will weaken the guard instead of the drift.
  5. No threshold, no count of words, and no history — the statement says what to do, not when it was decided.

Scope

The evolution template is deliberately outside this: editing it is a separate class of work, and it already settles the subject for its own readers.

Activity

  1. how2how2how2-arch commented on Nov 7, 2026

    @how2how2how2-arch
    CollaboratorAuthor

    Handled by #2745

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