rhalbersma / rhalbersma/cpp-ci

Config drift across the callers: the cross-repository view

Open
#39 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
1
Forks
0
Avg merge
2h 13m
Merged PRs (30d)
45

Description

Priority: low-medium. The per-repository work is filed where it can be done; this is the umbrella and the record of what is deliberately different.

Target state, per the owner: config identical across xstd, tabula and bit_set, with differences only where lib or test dependencies actually require them.

Where the work lives

rhalbersma/bit_set#72 bit_set's drift — eight mechanical items plus three shared decisions
rhalbersma/tabula#58 tabula's drift — three shared decisions plus one local, undocumented suppression
rhalbersma/bit_set#70, rhalbersma/tabula#55 no .clang-format, check dormant
rhalbersma/bit_set#71 no canary
xstd#231, tabula#53, bit_set#69 .gitignore — already unified, byte-identical bar the copyright year

xstd needs no issue of its own: it is the superset, and every difference resolves toward it. That is an assumption worth stating rather than a decision on record.

dctl is out of scope for now.

The three decisions that span repos

These are the only items where bit_set and tabula agree with each other and disagree with xstd, and none is settled by the dependency rule:

  1. -modernize-use-trailing-return-type — suppressed in bit_set and tabula, not in xstd, which writes trailing returns throughout. Pure style; no dependency angle at all. Either all three suppress it or none do.
  2. -misc-include-cleaner — disabled outright in bit_set and tabula; xstd keeps it on and passes IgnoreHeaders: 'boost/.*', which is strictly more informative. Enabling it surfaces findings that cannot be predicted without running clang-tidy against a compile database, so it wants a spike first.
  3. The CheckOptions block — absent in both. Adopting readability-operators-representation is a no-op in bit_set (verified: zero ||, zero logical !, its only && is a forwarding reference) and a ~7-site code change in tabula.

Workflow-set drift

xstd and tabula have identical workflow sets. bit_set differs in exactly two ways, both covered by the issues above: no canary.yml (#71), and appleclang.yml where everyone else has apple-clang.yml (#72).

Justified differences — recorded so they are not re-litigated

Each of these survives the dependency rule and should stay:

difference why
HeaderFilterRegex the library's own path
-bugprone-easily-swappable-parameters (bit_set) std::bitset's to_string signature; comparing two bitsets
-bugprone-signed-bitwise (tabula) chequer's parity; documented at length in the file
test/.clang-tidy (xstd only) only xstd passes sources_regex, so only xstd lints test sources
informational: true (tabula) tied to the coverage gap; converges via tabula#56
exclude:benchmark/ vs example/ each repository excludes the tree it actually ships
vcpkg.json genuinely different dependencies
misc-include-cleaner.IgnoreHeaders in tabula possibly unnecessary — no header there includes Boost; see tabula#58

What would keep it closed

The drift above was found by hand, by diffing three checkouts. Nothing would have reported it, and nothing will report the next one.

A report, not enforcement: a self-check.yml leg listing, per shared file, whether the callers agree — on the weekly cron it already runs, output to the step summary, never failing. Enforcement would be wrong; a caller with a real local need should not have to come here first. But drift should have to be looked at once, and either explained in a one-line comment in the file or removed.

Related

  • #26 item 5 — self-check.yml querying the packagers for ladder freshness. Same shape: cpp-ci noticing when something it owns has gone stale.
  • #38coverage.yml untested. Also a "nothing checks this" gap, but with a real failure mode rather than an explanatory one.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The proposed entry point is self-check.yml, alongside the existing weekly cron and the shared configuration files compared across xstd, tabula, and bit_set. First inspect how the current self-check workflow produces its step summary; done means a non-failing report lists agreement for each shared file and leaves justified differences explainable.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, github-actions
Domain
ci-cd, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.