chore(pipeline-conductor): state the argv constraint in present tense - #9393
Conversation
The comment-history gate matches "no longer" in fleet_probe.py's _probe docstring, putting the file at 3 spans against a baseline entry of 2, so Backend Lint & Type Check fails for any PR that touches the file (live on #9346). The sentence describes a property of the NUL-to-space transformation, not the code's history, so rewording it to present tense removes the false-positive match at zero cost to meaning. The two genuine narration spans (L244 incident date, L255 "used to") stay, level with the recorded entry of 2. Root cause: #9328 snapshotted comment-history-baseline.json against a tree older than the one it merged into, and the deliberately diff-scoped gate could not see drift in files #9328 did not touch. Per the Main Ratchet Audit policy (#9350), the drift is fixed on main rather than by raising the ceiling. Fixes #9372
Design Review (Fable 5) — ✅ PASSDesign-level review of Design-Verdict: PASS Minimal, zero-cost unblock of a stale-baseline gate failure, with the real root causes (drift hole, pattern over-breadth) correctly filed as follow-ups rather than smuggled in. [DESIGN-REVIEWED] 7a2f37f |
Opus 4.8 Review — ✅ no blocking findingsReviewed Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
First Principles Review (Fable 5) — ✅ PASSPremise-level review of All verified: the First-Principles-Verdict: PASS One point patch of a declared 33-file drift — confirm follow-up issues #9384/#9385 exist, since the general fix lives there, not here. What this change shipsInventory (1 item)Intent: turn the comment-history gate green for
[FIRST-PRINCIPLES-REVIEWED] 7a2f37f |
GPT 5.6 Review — ✅ no blocking findingsGPT 5.6 completed its review of This comment is updated in place on each push. Review detailsNo findings. False positive or not applicable? A repository writer can comment: |
iamwhatever
left a comment
There was a problem hiding this comment.
Tier 1 auto-approve: chore (1 file). Criteria: no conflict, no requested changes, security path denylist clean, design-doc gate clean, SAST annotations clean, security checklist all-NO, AI reviewers green. Category: single-line docstring rewording in pipeline-conductor's fleet_probe argv-constraint note -- no executable statement changed, no runtime impact.
chenmingwei23
left a comment
There was a problem hiding this comment.
Tier 1 auto-approve: chore (1 file). Criteria: no conflict, no requested changes, security path denylist clean, design-doc gate clean, SAST annotations clean, security checklist all-NO, AI reviewers green. Category: chore(pipeline-conductor) one-line docstring wording change, no runtime impact.
Fixes #9372. Unblocks #9346.
Symptom
comment-history-baseline.jsonrecords 2 history-narration spans forsrc/kiro_crew/builtin_skills/pipeline-conductor/scripts/fleet_probe.py, but the file on mainmatches 3 of
scripts/check_comment_history.py's patterns (L244incident date2026-08-30,L255"used to",L882"no longer"). The gate is diff-scoped, so the gap surfaces as agrew from 2 to 3failure inBackend Lint & Type Checkfor whichever PR touches the file next —live on #9346, whose failure log ends
0 new offender(s), 1 grown count(s), 0 file(s) with markers on added lines: proof that PR added none of the three.Root cause
The checker and the baseline both arrived in a single commit (
acfa55d0, #9328) whose baseline wassnapshotted against a tree older than the one it merged into; because the gate is deliberately
diff-scoped, #9328's own CI could not see drift in files #9328 did not touch. Nobody omitted
anything — a snapshot went stale in flight. (The issue as filed attributes the gap to
aa75a403c/#8736 leaving the entry "not raised"; that is chronologically impossible — #9328 landed ~1.5h
after
aa75a403c— and this PR deliberately does not repeat it.)fleet_probe.py is one corner of a 33-file drift; the full measured census is filed as #9384 and is
context, not scope.
Fix
One present-tense reword of the
L882docstring sentence:option/operand structure this function has to read is no longer recoverable.option/operand structure this function has to read cannot be recovered.L882is a false positive of the\bno longer\bpattern: the sentence states a property of theNUL-to-space transformation (true of the current code, not narration about its past) — the same
distinction the checker's own docstring draws when it exempts a message reading "this token is no
longer valid" (rule-design follow-up: #9387). Rewording removes the match at zero cost to meaning.
The two genuine narration spans (
L244,L255) stay: they are what the baseline entry of 2legitimately carries.
Per the Main Ratchet Audit policy (#9350: "Fix the drift on main rather than raising the ceiling in
someone else's PR") and
--write-baseline's own only-lowers contract, the entry is NOT raised, andcomment-history-baseline.jsonis untouched (no lowering needed — 2 is already the entry; and anyedit there would collide with #9364, which takes the same reword route for two other drifted files
and composes cleanly with this PR).
Verification
Red before green, with the gate's own entry points (not a re-implemented grep — the gate counts
distinct spans with overlaps collapsed):
7177fa44, file in scope):::error file=...fleet_probe.py::history narration in comments grew from 2 to 3…comment-history gate FAILED: 0 new offender(s), 1 grown count(s), 0 file(s) with markers on added lines, 0 entr(y/ies) to lower.Corroborated by fix(pipeline-conductor): put the process age on the banned probe line #9346's
Backend Lint & Type Check (3.12)CI log (same three lines, same trailer).comment-history gate passed: nothing in scope narrates change history outside the baseline (7606 known marker(s) in 1720 file(s) still listed).violations_in_sourceloaded fromscripts/check_comment_history.py):3 spans before → 2 after, level with the baseline entry of 2.
check was run: restoring the original sentence turns the gate red again (
grew from 2 to 3),restoring the fix turns it green.
check_black_formatting.pypassed (scope: 1 changed file), flake8 clean, mypy clean onthe changed file.
pytest -q -n auto --dist loadgroup, the identical bareinvocation) on this branch and on a
git worktreeatorigin/main; sorted FAILED/ERROR id setscompared both directions after ANSI stripping. Frontend cross-surface guard specs green.
(Evidence detail below.)
No new unit test, deliberately: (a) the gate already enforces this exact invariant in CI for
every PR touching the file — that is precisely how the defect surfaced on #9346, so a unit test
would duplicate an existing enforced check; (b) the tempting stronger test — asserting tree-wide
that no baselined file exceeds its entry — would recreate the very anti-pattern the checker's
docstring rejects ("an unscoped gate reddens a PR because the base branch merged someone else's
file") and would redden every open PR today for all 33 drifted files (#9384). Closing the drift
hole properly is a design question, filed as #9385.
Follow-ups filed (scope drawn deliberately)
reasoning should extend to descriptive docstring prose.
Sequencing
docstring sentence at
L882— no textual conflict expected. Landing this unblocks it.comment-history-baseline.jsonforchat_runner.py/context.py; this PR touchesneither its files nor the baseline, so the two compose cleanly in either order.
fleet_probe.py(verified at branch time).Pattern harvest
Rule candidate: when a ratchet gate and its baseline snapshot land as one commit, the snapshot must
be re-taken (or re-verified) against the merge target immediately before merge — a diff-scoped gate
cannot see its own baseline going stale in flight. Knowingly out-of-scope sibling sites: the other
32 drifted files measured in #9384, owned there rather than widened into this diff.
Screenshot evidence: none possible — a one-sentence docstring reword has no visual surface.