A crowd that does not agree with whoever spoke last
Three fixes to how a round behaves, found by reading one real round on the live instance rather than by testing it. A member asked "what would you have done differently" answered the person's original question again instead of critiquing what was already there. Fine on a question with one answer; on a request to *make* something it is an invitation. `crowd.turn` now says to respond to what is above and not to re-answer. The model that opened the round, told to write the final answer and take what the others got right, abandoned its own good answer and adopted the newcomer's position with no argument anywhere for why. Both closing fragments now say that an answer is not the worse one for having been written first, and that agreement with no argument behind it is not a reason to change. That second one is not cosmetic: all three answers from the observed round were compiled. The original and the critic's alternative both build; the merged answer that was actually delivered does not. A crowd's failure mode is not looping -- the caps handle that -- it is converging on the last thing said. Third, the reply that opens a round now carries a chip like every other one. It is the single contribution the crowd does not start, so there was nothing to stamp it with until the round began, and a two-model round rendered as an unmarked reply followed by one saying "2 of 2". The stamp is display state and never scheduling state: `crowd.scheduling_state` hides it from everything that decides what happens next, because fed to the scheduler it would inherit the round's clock -- regenerating the opening an hour later would end the round with "out of time" before anybody spoke -- and would hand that reply a member's tools and a member's instruction. And the chip was never translated. It is now, with the count as placeholders rather than three t() calls around one sentence. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2023,17 +2023,28 @@ BUILTIN: tuple[Fragment, ...] = (
|
||||
group=GROUP_TASKS,
|
||||
order=451,
|
||||
hint="Added as the last turn when a member speaks on the forward pass. "
|
||||
"The failure to word against is a member that repeats what has already "
|
||||
"been said in different words, which is what makes a crowd feel like an "
|
||||
"echo rather than a second opinion.",
|
||||
"Two failures to word against. One is a member that repeats what has "
|
||||
"already been said in different words, which makes a crowd an echo "
|
||||
"rather than a second opinion. The other only shows up on a request that "
|
||||
"asks for something to be *made* -- write this, pick one, draft that -- "
|
||||
"where a member reads the original instruction as addressed to it too "
|
||||
"and produces a rival answer beside its critique. That is not a second "
|
||||
"opinion either; it is two first opinions, and it is what sends a round "
|
||||
"off the question.",
|
||||
default=(
|
||||
"You are one of several models answering this. The answers above are "
|
||||
"quoted with the name of whoever wrote them; yours comes next.\n"
|
||||
"\n"
|
||||
"Respond to what is above you. Do not answer the person's original "
|
||||
"request again yourself — that has been done, and your turn is about "
|
||||
"what was done with it.\n"
|
||||
"\n"
|
||||
"Add what is missing, correct what is wrong, and say what you would "
|
||||
"have done differently. Do not restate what has already been said to "
|
||||
"show that you agree with it — if you have nothing to add, say so in "
|
||||
"one line and stop. Be brief: somebody is reading all of these."
|
||||
"have done differently and why. Where you would have made a different "
|
||||
"choice, say what it would buy — naming an alternative is not the same "
|
||||
"as giving a reason to prefer it. Do not restate what has already been "
|
||||
"said to show that you agree with it — if you have nothing to add, say "
|
||||
"so in one line and stop. Be brief: somebody is reading all of these."
|
||||
),
|
||||
),
|
||||
Fragment(
|
||||
@@ -2066,11 +2077,23 @@ BUILTIN: tuple[Fragment, ...] = (
|
||||
"round. Its own fragment rather than a sentence inside the one below, "
|
||||
"because inviting a choice a model cannot express is worse than not "
|
||||
"offering it: on a model without the tools capability there is no "
|
||||
"crowd_again to call, and that is the case the next fragment covers.",
|
||||
"crowd_again to call, and that is the case the next fragment covers.\n"
|
||||
"\n"
|
||||
"The failure to word against is capitulation: the model that opened the "
|
||||
"round abandoning its own answer because somebody spoke after it. A "
|
||||
"closing turn told only to synthesise will follow the last speaker, "
|
||||
"which is how a crowd ends up less accurate than the model that started "
|
||||
"it.",
|
||||
default=(
|
||||
"You opened this and you are closing it. The others have answered and "
|
||||
"have had the chance to disagree.\n"
|
||||
"\n"
|
||||
"Your own answer is not automatically the worse one for having been "
|
||||
"written first. Change your position where somebody gave you a reason, "
|
||||
"and say what the reason was; agreement with no argument behind it is "
|
||||
"not a reason, and neither is a member having moved on to something "
|
||||
"else.\n"
|
||||
"\n"
|
||||
"Write the answer the person actually asked for. Take what the others "
|
||||
"got right, say where you disagree with them and why, and name "
|
||||
"anything still unresolved rather than papering over it. Attribute "
|
||||
@@ -2091,11 +2114,18 @@ BUILTIN: tuple[Fragment, ...] = (
|
||||
"is reached, or this model has no tools and so cannot ask. It says the "
|
||||
"answer has to be final rather than inviting a choice that would be "
|
||||
"ignored, which is the difference between a feature and a feature that "
|
||||
"looks like one.",
|
||||
"looks like one. It carries the same guard against capitulation as the "
|
||||
"fragment above, and for the same reason.",
|
||||
default=(
|
||||
"You opened this and you are closing it, and this is the last turn: "
|
||||
"there will be no further round.\n"
|
||||
"\n"
|
||||
"Your own answer is not automatically the worse one for having been "
|
||||
"written first. Change your position where somebody gave you a reason, "
|
||||
"and say what the reason was; agreement with no argument behind it is "
|
||||
"not a reason, and neither is a member having moved on to something "
|
||||
"else.\n"
|
||||
"\n"
|
||||
"Write the answer the person actually asked for. Take what the others "
|
||||
"got right, say where you disagree with them and why, and attribute "
|
||||
"what you took from whom. Where the disagreement is unresolved, say so "
|
||||
|
||||
Reference in New Issue
Block a user