Skip to content

fix(ci): remove the duplicate ignore entries that broke the Dependabot config - #374

Merged
Ank-KhoaHo merged 1 commit into
mainfrom
fix/deduplicate-the-dependabot-ignores
Aug 24, 2026
Merged

fix(ci): remove the duplicate ignore entries that broke the Dependabot config#374
Ank-KhoaHo merged 1 commit into
mainfrom
fix/deduplicate-the-dependabot-ignores

Conversation

@Ank-KhoaHo

Copy link
Copy Markdown
Owner

#373 shipped a .github/dependabot.yml that Dependabot refuses to parse. It appended the
fifteen shipped packages to two ignore lists that already named SixLabors.Fonts, so both gained a
duplicate:

The property '#/updates/2/ignore/18/dependency-name' is a duplicate.

Dependabot stops parsing the whole file on that, so every update it would raise is disabled —
security updates included. main has been in that state since #373 merged.

Caught by Dependabot's own API check appearing on #366, not by anything in this repo.

Why nothing here saw it

Three separate blind spots, all pointing the same way:

  • check-dependabot-scoping.py reduces each block's ignore list to a set, so a duplicate is
    gone before it is examined
  • yaml.safe_load accepts duplicate list items happily — they are list entries, not map keys
  • the config check that objects is Dependabot's, and it runs on a PR touching the file, which
    ci: stop the chore block bumping shipped dependencies #373's own checks did not show before I merged it

Fixed

SixLabors.Fonts is no longer a standalone entry in either block; the derived list carries it. In
the root block that entry had an update-types: ["version-update:semver-major"] line under it —
removing only the name left the line orphaned and broke the YAML outright, which is worth recording
because it is the second way to get this wrong in one edit.

That is a deliberate widening: the root block ignored only SixLabors majors, the derived entry
ignores it entirely. Ignoring more is always safe, and src/ pins it to an exact version anyway.

Guarded

check-dependabot-scoping.py now counts each ignore list as a list rather than a set, using
this file's own line patterns.

Deliberately not via PyYAML. The first version of this check imported it inside a
try/except ImportError — and no workflow here installs PyYAML, so in CI it would have skipped
itself and reported success. A check that silently does nothing is worse than no check.

Sabotage-verified three ways, each duplicating a name that already exists in its own block:

duplicated caught
Ank.DocToolkit yes
OfficeIMO.Word yes
Microsoft.Extensions.Hosting yes

My first two sabotage attempts were ineffective — I added a name to a block that did not already
have it, so no duplicate existed and the check passed correctly. Worth stating: an ineffective
sabotage looks exactly like a guard that does not work.

@Ank-KhoaHo
Ank-KhoaHo merged commit cab06a2 into main Aug 24, 2026
29 checks passed
@Ank-KhoaHo
Ank-KhoaHo deleted the fix/deduplicate-the-dependabot-ignores branch August 24, 2026 13:25
Ank-KhoaHo added a commit that referenced this pull request Aug 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.37.0](v0.36.1...v0.37.0)
(2026-08-24)


### Added

* **extensions:** mirror DocxReview as IDocxReview
([#375](#375))
([8bcfacf](8bcfacf))


### Fixed

* **ci:** remove the duplicate ignore entries that broke the Dependabot
config ([#374](#374))
([cab06a2](cab06a2))
* **core:** restore the samples to the floating version
([#371](#371))
([51a66eb](51a66eb))


### Changed

* **deps:** bump OfficeIMO to 3.2.6, AngleSharp to 1.7.2 and PdfPig to
0.1.16 ([#366](#366))
([df1dc03](df1dc03))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant