Skip to content

chore(deps): add the fleet dependabot config - #45

Merged
forkwright merged 1 commit into
mainfrom
chore/add-dependabot-config
Aug 24, 2026
Merged

chore(deps): add the fleet dependabot config#45
forkwright merged 1 commit into
mainfrom
chore/add-dependabot-config

Conversation

@forkwright

Copy link
Copy Markdown
Owner

This repository has no .github/dependabot.yml, so it has never received a dependency update.

Eight of fourteen audited fleet repos are in that state — typikon, logismos, epitelesis, koinon, sphragis, kanon, gnomon, dioptron. The absence is silent by nature: a repo with no config looks exactly like one whose dependencies happen to be current.

It cannot be fixed at the org level. Unlike community health files (SECURITY.md, CONTRIBUTING.md), Dependabot does not inherit a config from the .github repository — version updates require a per-repo file.

What this adds

The fleet form, matching aletheia and harmonia:

  • weekly, Monday
  • patch and minor grouped separately, so a green group lands as one PR instead of N
  • github-actions watched alongside the package ecosystem
  • forkwright on review

The warning in the file is load-bearing

Every lockfile needs its own row. A dependency graph watched by no entry never updates, and nothing reports it — thumos lost nine releases of fuzz/Cargo.lock exactly that way, with two path-dependencies missing entirely and invisible to cargo audit and cargo deny the whole time (forkwright/thumos#768).

Where a repo has more than one lockfile the correct form is directories (plural) in one entry, not one entry per directory. Three separate entries cover the same graphs but guarantee a separate PR each, and a bump declared in the root manifest spans all of them — so every PR regenerates one lockfile, leaves the others stale, and fails the repo's drift gates. That is exactly what happened to thumos's smoltcp bump (#923/#924/#925, none mergeable, hand-consolidated into #926, config fixed in #927).

Root cause of the class

kanon#3640: workflow/templates/ci/ ships dependabot-auto-merge.yml — the workflow that merges dependency PRs — and no dependabot.yml to produce any. Every repo scaffolded from canon inherits an auto-merger with nothing to merge. Fixing the template is tracked there; this PR fixes the instance.

Scope

One file. No dependency versions change here — this is the mechanism that will propose them.

This repository had no .github/dependabot.yml, so it has never received a
dependency update. Eight of fourteen audited fleet repos were in that state.
The absence is silent by nature: a repo with no config looks exactly like one
whose dependencies happen to be current.

It cannot be fixed at the org level. Unlike community health files, Dependabot
does not inherit a config from the .github repository -- version updates
require a per-repo file.

Matches the fleet form: weekly, patch and minor grouped separately so a green
group merges as one PR, github-actions watched alongside the package
ecosystem, forkwright on review.

The WARNING about enumerating every lockfile is carried deliberately. A
dependency graph watched by no entry never updates, and nothing reports it --
thumos lost nine releases of fuzz/Cargo.lock exactly that way.

Root cause of the class is kanon#3640: the CI template ships
dependabot-auto-merge.yml, the workflow that MERGES dependency PRs, and no
dependabot.yml to produce any. Every repo scaffolded from canon inherits an
auto-merger with nothing to merge.
@forkwright
forkwright merged commit 9a34391 into main Aug 24, 2026
12 checks passed
@forkwright
forkwright deleted the chore/add-dependabot-config branch August 24, 2026 16:18
forkwright added a commit that referenced this pull request Aug 24, 2026
)

sphragis received its first dependabot config today (#45) and
immediately had six update PRs open. Nothing merges them. This adds the
auto-merger.

## A caller, not a copy

Sixteen lines delegating to `forkwright/.github`, the same way theatron
already consumes it. The logic worth not duplicating is real — the
reusable workflow polls for check *groups* to appear rather than calling
`gh pr checks --watch`, because `--watch` returns as soon as the fast
checks report and would approve a PR whose gate had not started building
yet.

## Why this is NOT being copied into the other five repos

koinon, epitelesis, logismos, dioptron and typikon all gained dependabot
configs today too. They are **deliberately excluded**, and this is the
part worth reading.

The reusable workflow waits on four check groups — gate, `cargo deny`,
`cargo audit`, osv — and **fails when a group never reports**. That is
intentional: a verification check that silently goes missing is
precisely the case it exists to catch.

Measured against live PRs in each repo, not inferred from workflow
filenames:

| repo | gate | cargo deny | cargo audit | osv | adoptable |
|---|---|---|---|---|---|
| **sphragis** | `gate / gate` | ✓ | ✓ | `osv scanner / osv-scan` |
**yes** |
| epitelesis | `gate / gate-attestation` | ✓ | ✓ | — | no |
| logismos | `gate / gate` | ✓ | ✓ | — | no |
| koinon | `gate / gate` | ✓ | — | — | no |
| dioptron | gate-attestation only | — | — | — | no |
| typikon | gate-attestation only | — | — | — | no |

Copying this file into those five would not give them auto-merge. It
would give them a job that times out and reports failure on every
dependabot PR — worse than having no auto-merger, because it turns a
green PR red.

**The gap to close there is security scanning, not this workflow.**
koinon has neither `cargo audit` nor osv; dioptron and typikon have no
`security.yml` at all. Tracked separately.

## Pin choice

Pinned at `d5685976`, the current tip of `forkwright/.github`.

Deliberately **not** theatron's `54f1af7c`. That revision predates the
normalised check-name matching: it compared exact suffixes, so
`endswith("osv-scan")` could not match a check actually named `osv
scanner / osv-scan`. sphragis reports both spellings, and the current
revision strips non-alphanumerics from both sides before testing
containment, which matches the whole spelling class rather than the two
spellings seen so far.

theatron pinning a pre-fix revision is its own small drift, noted and
not fixed here.

Co-authored-by: forkwright <cody@forkwright.com>
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