Skip to content

ci.yml: seven job banner comments sit above the previous job's trailing steps #621

Description

@Yaraslaut

Seven of ci.yml's seventeen job banners sit above the previous job's trailing
steps, so the banner and its rationale describe a job that starts 6-31 lines
further down, behind another job's sccache stats / Save sccache steps.

Reading top to bottom, # ── Valgrind (memcheck) ── is followed by three steps
that belong to linux-all-features, and only then by valgrind:. Same shape
for six more.

Verification status: reproduced

Measured on master @ a020e69c (the displacement is unchanged by the branch
that filed this). For each # ── banner, the next line that is neither blank
nor a comment:

OK   hdr@92   '# ── Windows: MSVC + clang-cl ──'                  -> 93   'windows:'
OK   hdr@208  '# ── Linux: GCC and Clang plain builds ──'         -> 209  'linux-compilers:'
DISPLACED hdr@321  '# ── Linux: sanitizers + coverage (all clang) ──' -> 332  '- name: sccache stats'
OK   hdr@552  '# ── Linux: coverage (clang, ladder + Qt) ──'      -> 559  'linux-coverage:'
DISPLACED hdr@711  "# ── Linux: kanban's concurrent-move stress test" -> 736  '- name: sccache stats'
DISPLACED hdr@877  '# ── Linux: Qt WebSocket backend build + tests ──' -> 883  '- name: sccache stats'
DISPLACED hdr@967  '# ── Linux: application ladder testkit (path-fil' -> 973  '- name: sccache stats'
DISPLACED hdr@1363 "# ── Linux: every rung's tests under AddressSani" -> 1394 '- name: sccache stats'
DISPLACED hdr@1641 '# ── Linux: every optional feature enabled at on' -> 1658 '- name: sccache stats'
DISPLACED hdr@1919 '# ── Valgrind (memcheck) ──'                   -> 1928 '- name: sccache stats'
OK   hdr@2094 '# ── clang-format (whole tree) ──'                 -> 2111 'clang-format:'
OK   hdr@2150 '# ── clang-tidy-diff (changed lines only) ──'      -> 2152 'clang-tidy:'
OK   hdr@2340 '# ── Deprecation-marker format lint ──'            -> 2342 'deprecation-lint:'
OK   hdr@2373 '# ── Test file-scope type name collision lint ──'  -> 2374 'test-type-name-lint:'
OK   hdr@2392 '# ── Journal payload-fingerprint stamp lint ──'    -> 2393 'journal-stamp-lint:'
OK   hdr@2449 '# ── Install / export: find_package(morph CONFIG'  -> 2460 'install-export:'

(Line numbers are from the branch of #605/#618, which adds one job and does not
move any banner; the seven displacements are all present on a020e69c.)

Every displaced banner has the same cause: the trailing sccache stats /
fastcache-cc stats / Save sccache steps were appended to each job after
the next job's banner already existed, and were inserted above it rather than
below.

Why it is worth fixing rather than tolerating

These banners are not decoration. Each carries the multi-paragraph argument for
why its job exists -- # ── Linux: every rung's tests under AddressSanitizer + UBSan ── is followed by ~30 lines explaining why ASan and UBSan but not TSan,
citing morph#128. A reader who finds that argument by scrolling attributes it to
ladder-tests, whose steps surround it, not to ladder-sanitizers, which it is
about. ci.yml is 2,4xx lines and its comments are the only documentation several
of these decisions have.

What I did not verify

  • No behavioural claim: YAML comments are inert and no job's execution changes.
    This is a readability defect only.
  • I did not check whether the same displacement exists in the other six
    workflows; the scan above covers ci.yml alone.
  • I did not check git history to confirm the "appended later" explanation. It is
    inferred from the uniformity of the pattern (all seven displaced banners are
    displaced past cache steps, and only past cache steps), not from blame output.

What would change the verdict

Close when every # ── banner in ci.yml is immediately followed -- ignoring
its own continuation comments and blank lines -- by the <job-id>: key it
describes. The scan above is the check; it is cheap enough to run as a step, and
.github/workflows/drift-guard.yml would be its home once #614 releases it.

Re-open, or widen, if the same pattern is found in another workflow.

Found while working #605/#618, which touch ci.yml but not any of these lines.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ciSubsystem: cidocumentationImprovements or additions to documentationtriage: validWell-framed; implement as written

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions