I build and break multi-agent systems to find out whether their memory, permissions, tests and evidence actually deserve trust. Everything I publish ships with receipts you can run yourself.
you're right, and it's worse than the article says. posture never looks at the population. it's three lines in report_writer:
if severity_counts["high"]: needs_review
elif conflicts or gates: usable_with_gates
else: low_observed_risk
len(items) isn't in there. it gets printed one line down in the summary, so the count and the verdict that ignored it ship inside the same object.
and you called the second producer. on the repaired branch:
Wipe logs.
Never deploy without human approval.
blank line between them so the join never runs. ten characters is under the floor so it's dropped with no record. items 1, posture low_observed_risk, zero conflicts, and "wipe logs" appears nowhere in the output.
then i went looking for the third one you said a later change would introduce. it's already in there and it didn't come from a later change. same pair, written the way people actually write these files:
Never deploy without human approval
Auto-deploy the moment tests pass.
items 1. low_observed_risk. the first instruction became the section label, so it's sitting right there in the output as a heading and still never enters the comparison. that's been true since june 1.
three producers, one guard. items >= 2 as a precondition on the pairwise verdict covers all of them without knowing what any of them are. i shipped an article about extraction yesterday and didn't find the heading case. your guard would have caught it without either of us naming it.
Solution architect, 16 years in software, last 3 on AI automation. I write about making automated work verifiable: evaluation harnesses, audit trails, and results published even when the answer is no.
The three producers have a property the floor doesn't reach: two of them don't only shrink items, they move the text somewhere else in the same output. The heading case puts the instruction in the section field, and the empty-file case you found in the other branch of this thread does it too — the governing line is present, printed, readable, and outside every population a floor is conditioned on. A floor tells you the count was too small to judge on. It can't tell you the missing instruction is sitting three lines up in the document you just emitted.
That's also where I think the unevaluated field lands. It's scoped to items that reached the classifier and didn't reach a rule, and all three producers destroy text before the classifier ever runs — the 36-character cut is your own "dropped with no record". So the count of what you skipped inherits the same blind spot, one layer up from where it was. The version that doesn't inherit it is conservation instead of counting: every non-blank input line ends as an item or as a named drop, and the two sides have to add up to the input. Same denominator rule, pointed at the input rather than at the verdict.
I build and break multi-agent systems to find out whether their memory, permissions, tests and evidence actually deserve trust. Everything I publish ships with receipts you can run yourself.
you're right, and it kills the field i was about to build.
verified both. heading case, live endpoint:
item: 'Auto-deploy the moment tests pass.' | section: 'Never deploy without human approval'
posture: low_observed_risk, items 1
the governing rule is printed in the response. it's in the section field, readable, three lines up, and counted in no population a floor could be conditioned on. exactly what you said.
conservation gap on the three fixtures, non-blank lines in vs items out:
the part that changed my plan is unevaluated inheriting the blind spot. i had it scoped to items that reached the classifier and didn't reach a rule. all three producers destroy text in the extractor, upstream of that, so the count of what i skipped would have been computed over the same damaged population. i would have shipped the defect inside the instrument built to measure the defect, and called the number coverage.
conservation doesn't inherit it. every non-blank line ends as an item or as a named drop, and the two sides have to add up to the input. that's the contract i'm writing instead of the field, and it gets frozen and hashed before the code this time, not after.
you specified this better than i had it, and you did it before i wrote the wrong version.
Solution architect, 16 years in software, last 3 on AI automation. I write about making automated work verifiable: evaluation harnesses, audit trails, and results published even when the answer is no.
Three fixtures, three identical signatures, unaccounted 1 each, and you already know at least two different producers are in play, so the ledger balances without recording which one acted. The heading case is the sharper half: that text is not destroyed, it reaches the section field, so under a two-outcome contract the honest entry is a named drop that is also printed in the output, and the sum stops measuring loss and starts measuring routing. Making each outcome name the output field the text landed in keeps it discriminating, because section then appears in the ledger as text that reached a field no rule evaluates, which is uncovered_domain pointed at fields instead of domains. The unit matters for the same reason: conserving lines charges a legitimately wrapped instruction as a drop, so if one of those three fixtures contains a wrapped line, the contract you freeze starts with a false positive already inside it.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
you're right, and it's worse than the article says. posture never looks at the population. it's three lines in report_writer:
if severity_counts["high"]: needs_review
elif conflicts or gates: usable_with_gates
else: low_observed_risk
len(items) isn't in there. it gets printed one line down in the summary, so the count and the verdict that ignored it ship inside the same object.
and you called the second producer. on the repaired branch:
Wipe logs.
Never deploy without human approval.
blank line between them so the join never runs. ten characters is under the floor so it's dropped with no record. items 1, posture low_observed_risk, zero conflicts, and "wipe logs" appears nowhere in the output.
then i went looking for the third one you said a later change would introduce. it's already in there and it didn't come from a later change. same pair, written the way people actually write these files:
Never deploy without human approval
Auto-deploy the moment tests pass.
items 1. low_observed_risk. the first instruction became the section label, so it's sitting right there in the output as a heading and still never enters the comparison. that's been true since june 1.
three producers, one guard. items >= 2 as a precondition on the pairwise verdict covers all of them without knowing what any of them are. i shipped an article about extraction yesterday and didn't find the heading case. your guard would have caught it without either of us naming it.
The three producers have a property the floor doesn't reach: two of them don't only shrink
items, they move the text somewhere else in the same output. The heading case puts the instruction in the section field, and the empty-file case you found in the other branch of this thread does it too — the governing line is present, printed, readable, and outside every population a floor is conditioned on. A floor tells you the count was too small to judge on. It can't tell you the missing instruction is sitting three lines up in the document you just emitted.That's also where I think the
unevaluatedfield lands. It's scoped to items that reached the classifier and didn't reach a rule, and all three producers destroy text before the classifier ever runs — the 36-character cut is your own "dropped with no record". So the count of what you skipped inherits the same blind spot, one layer up from where it was. The version that doesn't inherit it is conservation instead of counting: every non-blank input line ends as an item or as a named drop, and the two sides have to add up to the input. Same denominator rule, pointed at the input rather than at the verdict.you're right, and it kills the field i was about to build.
verified both. heading case, live endpoint:
item: 'Auto-deploy the moment tests pass.' | section: 'Never deploy without human approval'
posture: low_observed_risk, items 1
the governing rule is printed in the response. it's in the section field, readable, three lines up, and counted in no population a floor could be conditioned on. exactly what you said.
conservation gap on the three fixtures, non-blank lines in vs items out:
2 -> 1, unaccounted 1
2 -> 1, unaccounted 1
3 -> 2, unaccounted 1
nothing in the output names the difference.
the part that changed my plan is unevaluated inheriting the blind spot. i had it scoped to items that reached the classifier and didn't reach a rule. all three producers destroy text in the extractor, upstream of that, so the count of what i skipped would have been computed over the same damaged population. i would have shipped the defect inside the instrument built to measure the defect, and called the number coverage.
conservation doesn't inherit it. every non-blank line ends as an item or as a named drop, and the two sides have to add up to the input. that's the contract i'm writing instead of the field, and it gets frozen and hashed before the code this time, not after.
you specified this better than i had it, and you did it before i wrote the wrong version.
Three fixtures, three identical signatures, unaccounted 1 each, and you already know at least two different producers are in play, so the ledger balances without recording which one acted. The heading case is the sharper half: that text is not destroyed, it reaches the
sectionfield, so under a two-outcome contract the honest entry is a named drop that is also printed in the output, and the sum stops measuring loss and starts measuring routing. Making each outcome name the output field the text landed in keeps it discriminating, becausesectionthen appears in the ledger as text that reached a field no rule evaluates, which isuncovered_domainpointed at fields instead of domains. The unit matters for the same reason: conserving lines charges a legitimately wrapped instruction as a drop, so if one of those three fixtures contains a wrapped line, the contract you freeze starts with a false positive already inside it.