You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[finding] The 2026-07 unknown-key strictness ledger still teaches the broken-sweep predicate as a detector, and states the misspelled-effect direction backwards — but it is a dated audit record, so correcting it is a decision not a sweep #13101
Filed unassigned by the dev on #13063 (PR #13096). Dedupe search run: one targeted search against the broken-sweep / spec-TSDoc family; positive control satisfied in the same session (#13063, #12722, #12685 and #12900 all came back), no existing card for this carrier.
The carrier
docs/audits/2026-07-unknown-key-strictness-ledger.md line 726, the flow-function.zod.ts row, ends:
... so a misspelled effect was dropped at the schema and then not looked for by the reader — and the failure runs the quiet way. The function registers, runs, and its writes are counted as none, which is precisely what keeps #4354's broken-sweep query (selected > 0 AND acted = 0 AND unmeasured = 0) silent on the one run that needed it
It carries both defects the #12685 family has been closing out, in one sentence:
After #13096 this is the last carrier of either defect in the tree outside CHANGELOG.md history.
Why this is a decision and not a sweep
It was deliberately left out of #13096's diff. The file is a dated audit record — a snapshot of a reading as of 2026-07 — and silently rewriting a record is a different act from correcting live contract prose. The maintainer's call, roughly:
A. Correct the sentence in place. Cheapest, and the ledger stops teaching a disproved claim to whoever reads it next. Cost: the record no longer says what the 2026-07 audit actually concluded, and nothing marks that it was changed.
C. Leave it entirely, on the grounds that a dated audit is read as historical by construction and needs no maintenance.
Recommendation: B. The severity argument the parent cards were graded on is that the claim comes back through the sentences the next author reads, and an audit ledger is exactly such a sentence — but the same argument does not license editing the record itself, and the ledger's .counts.md companion is gated (check:strictness-ledger, green here) while this prose is not, so nothing mechanical will notice either way.
Note the counts artifact is not affected: check:strictness-ledger was run green during #13096 and this row's prose is not part of what it gates.
Filed unassigned by the dev on #13063 (PR #13096). Dedupe search run: one targeted search against the broken-sweep / spec-TSDoc family; positive control satisfied in the same session (#13063, #12722, #12685 and #12900 all came back), no existing card for this carrier.
The carrier
docs/audits/2026-07-unknown-key-strictness-ledger.mdline 726, theflow-function.zod.tsrow, ends:It carries both defects the #12685 family has been closing out, in one sentence:
selected > 0 AND acted = 0 AND unmeasured = 0fires on a HEALTHY idempotent sweep — measured A/B, and "over consecutive runs" does not rescue it #12685 measured that the three-clause predicate cannot separate a healthy idempotent sweep from a dead gate; fix(service-automation): the broken-sweep predicate is a first FILTER, not the detector #12721, The corrected broken-sweep claim is still stated unqualified inpackages/specTSDoc — same false predicate, a surface #12685 was fenced away from #12722,FlowFunctionEffectSchemaTSDoc still states the broken-sweep predicate unqualified — the thirdpackages/specsurface, outside #12722's fence #12900 and docs(spec): the broken-sweep predicate inFlowFunctionEffectSchemais a first FILTER, not the detector #13068 rewrote every live surface to call it a FIRST FILTER with the per-node fold (FlowRunSummary.nodes[]/gates[]) as the discriminator. This row was outside all four fences.effect: 'writes'declaration means thescriptstep reports nounmeasuredEffect, so the run folds toselected > 0, acted 0, unmeasured 0— which SATISFIES the filter. The run lands INSIDE the candidate set reading exactly like a dead sweep, rather than escaping it. (Code path and the two in-tree confirmations are quoted in docs(spec): the residual broken-sweep mentions in automation are a first FILTER, and the misspelled-effect sentences state the measured direction #13096's body: the executor inpackages/services/service-automation/src/builtin/screen-nodes.ts, the same file's own@moduleblock, and the end-to-end assertions inpackages/qa/dogfood/test/flow-function-effect.dogfood.test.ts.)After #13096 this is the last carrier of either defect in the tree outside
CHANGELOG.mdhistory.Why this is a decision and not a sweep
It was deliberately left out of #13096's diff. The file is a dated audit record — a snapshot of a reading as of 2026-07 — and silently rewriting a record is a different act from correcting live contract prose. The maintainer's call, roughly:
selected > 0 AND acted = 0 AND unmeasured = 0fires on a HEALTHY idempotent sweep — measured A/B, and "over consecutive runs" does not rescue it #12685 and docs(spec): the residual broken-sweep mentions in automation are a first FILTER, and the misspelled-effect sentences state the measured direction #13096. Preserves the record and stops the claim propagating. Cost: a second convention for this file, and slightly more to read.Recommendation: B. The severity argument the parent cards were graded on is that the claim comes back through the sentences the next author reads, and an audit ledger is exactly such a sentence — but the same argument does not license editing the record itself, and the ledger's
.counts.mdcompanion is gated (check:strictness-ledger, green here) while this prose is not, so nothing mechanical will notice either way.Note the counts artifact is not affected:
check:strictness-ledgerwas run green during #13096 and this row's prose is not part of what it gates.Related: #13063, #13096, #12900, #12722, #12721, #12685, #4354, #4396.