Logged rather than fixed, under a bound declared before the round that found it.
PR #247 merged with this open.
The immediate finding
session-start's gather preamble states a fail-closed rule and then enumerates
which sources it governs, in three buckets: has a render slot (PR list, cron/CI,
config-drift), carries the rule inline (tracker), excluded with a stated reason
(the two narrative-file reads).
That is 6 of the 7 gather bullets. git status --short /
git branch --show-current — the first bullet in the list — appears in none of
them. Not covered, not excluded, not mentioned. The narrative reads got an explicit
one-sentence rationale for their exclusion; this got silence.
It matters on the paragraph's own terms: the rule names "a missing binary" as one
of three failure causes, and a failed git status renders identically to a clean
tree.
Secondary, LOW: the enumeration says three sources "each have a slot in Render the
briefing", which reads as uniform treatment. PR-list and cron/CI have literal
<… | unavailable: reason> alternations inside the fenced template; config-drift's
is a prose bullet below the template pointing at where the line would go. The
claim is true, the parallelism is not.
The pattern, which is the reason this is an issue and not a patch
Four review rounds on this one paragraph, and every round found the scope
sentence claiming more than the implementation delivered:
| round |
the sentence said |
what was actually true |
| 1 |
the PR and tracker sources "differ only in that one said so" |
CI/cron, in the same rendered line, had the same fail-open untouched |
| 2 |
"applies to every source below", naming no drift |
config-drift's render note was byte-identical to base |
| 3 (author, pre-push) |
all four named sources "each have a slot" |
the tracker has none; it carries the rule inline |
| 4 |
a three-bucket enumeration of the sources |
omits git status entirely |
Each fix corrected the previous sentence and wrote a new one that was also wrong.
That is not four typos. An enumeration that restates a list living elsewhere in
the same document will drift from it, and this paragraph restates the gather's
bullet list from six paragraphs above.
Round 4's version is the most checkable so far — it can be verified by grep, and
that verification is what caught round 3's error before it shipped. But
checkability is not the same as staying true: the gather can gain a bullet
tomorrow and nothing fails.
Directions, none of them obviously right
- Drop the enumeration. State the rule once and let each source's own bullet
say whether and how it reports a gap. Removes the thing that keeps drifting,
at the cost of the reader having to assemble the picture.
- Move the rule to the bullets. One clause per gather source, no central list.
Most robust, most repetitive.
- Make it derivable. The gather is a list and the render template is a list;
a check could assert every gather bullet is accounted for. This is the only
option that would actually fail when the two drift — and the reason it is
attractive is that nothing in this repo tests any workflow doc's prose today.
It is also the largest.
What is true of all three
There is no behavioural coverage of this file's meaning. Four independent lenses
mutation-tested it across these rounds — reverting the paragraph, inverting its
opening sentence, restoring the old render line — and every mutation SURVIVED at
720 passed, 1 deselected. The panel is the only check this document gets, which
is why four rounds on a nine-line diff each found something real rather than
diminishing.
Related: #245 (a different paragraph of this same step, withdrawn after both
lenses returned HIGH), #231 (withdraw rather than patch), #243 (the four
workflows with no shared doc at all — the same drift risk, one level up).
Logged rather than fixed, under a bound declared before the round that found it.
PR #247 merged with this open.
The immediate finding
session-start's gather preamble states a fail-closed rule and then enumerateswhich sources it governs, in three buckets: has a render slot (PR list, cron/CI,
config-drift), carries the rule inline (tracker), excluded with a stated reason
(the two narrative-file reads).
That is 6 of the 7 gather bullets.
git status --short/git branch --show-current— the first bullet in the list — appears in none ofthem. Not covered, not excluded, not mentioned. The narrative reads got an explicit
one-sentence rationale for their exclusion; this got silence.
It matters on the paragraph's own terms: the rule names "a missing binary" as one
of three failure causes, and a failed
git statusrenders identically to a cleantree.
Secondary, LOW: the enumeration says three sources "each have a slot in Render the
briefing", which reads as uniform treatment. PR-list and cron/CI have literal
<… | unavailable: reason>alternations inside the fenced template; config-drift'sis a prose bullet below the template pointing at where the line would go. The
claim is true, the parallelism is not.
The pattern, which is the reason this is an issue and not a patch
Four review rounds on this one paragraph, and every round found the scope
sentence claiming more than the implementation delivered:
git statusentirelyEach fix corrected the previous sentence and wrote a new one that was also wrong.
That is not four typos. An enumeration that restates a list living elsewhere in
the same document will drift from it, and this paragraph restates the gather's
bullet list from six paragraphs above.
Round 4's version is the most checkable so far — it can be verified by grep, and
that verification is what caught round 3's error before it shipped. But
checkability is not the same as staying true: the gather can gain a bullet
tomorrow and nothing fails.
Directions, none of them obviously right
say whether and how it reports a gap. Removes the thing that keeps drifting,
at the cost of the reader having to assemble the picture.
Most robust, most repetitive.
a check could assert every gather bullet is accounted for. This is the only
option that would actually fail when the two drift — and the reason it is
attractive is that nothing in this repo tests any workflow doc's prose today.
It is also the largest.
What is true of all three
There is no behavioural coverage of this file's meaning. Four independent lenses
mutation-tested it across these rounds — reverting the paragraph, inverting its
opening sentence, restoring the old render line — and every mutation SURVIVED at
720 passed, 1 deselected. The panel is the only check this document gets, whichis why four rounds on a nine-line diff each found something real rather than
diminishing.
Related:
#245(a different paragraph of this same step, withdrawn after bothlenses returned HIGH),
#231(withdraw rather than patch),#243(the fourworkflows with no shared doc at all — the same drift risk, one level up).