rhalbersma / rhalbersma/cpp-ci
Config drift across the callers: the cross-repository view
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:
-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.-misc-include-cleaner— disabled outright in bit_set and tabula; xstd keeps it on and passesIgnoreHeaders: '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.- The
CheckOptionsblock — absent in both. Adoptingreadability-operators-representationis 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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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