Files
esengine c2ffdf6d5e feat(workgroup): the designed assay is finished; the natural one is not the same question
Twelve turns from a written task list said singletons were 17% of groups and
two thirds of turns had three or more calls to fold. Those numbers answer "how
good can this be where it fits", and they cannot answer "how often does
ordinary use have anything to fold" — the task list decided how many tools
each turn needed, half of it was routed plan-first when nothing in ordinary
use routes that way without being asked, and every one of the twelve called at
least one tool, which no real day does.

So that assay is closed rather than continued. It is recorded as a reference
condition with its raw trajectory kept outside the tree, and the natural
sample starts from its own freeze, after it, from zero. Folding the designed
turns into the natural denominator would put two sampling mechanisms in one
number and neither question would come back out.

The gate is untouched. It was written before any sample existed and has now
seen one; redrawing it here is exactly what would spend that.

Two things the natural sample reports that the designed one had no room for. A
turn with no tool call at all is in the sample, because a fold that has nothing
to show is evidence about coverage rather than a turn to exclude. And coverage
itself is printed and deliberately not gated: adding it to the verdict after
seeing a sample is redrawing the line, while leaving it out of the report lets
a low singleton rate read as broad reach when a fold might touch half the
turns.

The package's own doc now carries what the twelve turns actually established,
which was not a number: three call lifecycles reach a fold and only two of them
are calls, because Partial=true says arguments are still arriving and never
promises that a completion frame follows.
2026-09-07 21:57:55 -07:00

52 lines
2.0 KiB
Go

package main
import "time"
// P2-2e-natural, in the source so that moving it is a diff someone has to
// justify rather than a flag chosen once the numbers are visible. A separate,
// completed assay (P2-2d-designed, below) answered a different question from a
// written task list; mixing its turns in would put two sampling mechanisms in
// one denominator.
const (
// frozenAt is when this protocol was fixed — after the designed assay ran,
// so its turns cannot enter this sample even if they shared a session root.
frozenAt = "2026-09-08T04:53:31Z"
// sampleSize is the whole sample. Not a minimum: collecting past it because
// the answer sits near a threshold is the optional stopping this guards.
sampleSize = 20
// designedSample is false here: these turns are whatever ordinary Studio use
// produces. Turns authored for this experiment do not belong in it.
designedSample = false
// The NO-GO gate, unchanged since before any sample existed. Both halves
// required: a partition can be coarse and still rare, or common and still
// thin, and those are different products.
singletonShareGate = 0.50
richTurnShareGate = 0.40
// richTurn is a group worth offering as one fold.
richTurnCalls = 3
)
// designedReference is the completed P2-2d-designed assay, kept so the natural
// sample can be read against it — a reference condition, never a baseline to
// test against: neither randomized nor paired, and both small, so the contrast
// is a plain difference. Raw data: ~/.reasonix/research/p2-2d-designed/.
var designedReference = struct {
Turns int
Groups int
SingletonShare float64
RichTurnShare float64
ZeroCallTurns int
Note string
}{
Turns: 12, Groups: 18, SingletonShare: 3.0 / 18.0, RichTurnShare: 8.0 / 12.0, ZeroCallTurns: 0,
Note: "designed stress: half the turns routed plan-first, every turn called a tool",
}
func frozenTime() time.Time {
t, err := time.Parse(time.RFC3339, frozenAt)
if err != nil {
panic("workgroupassay: frozenAt is not a timestamp: " + err.Error())
}
return t
}