chore(ci): drop composer.lock, group security updates, harden workflows - #217
Merged
Merged
Conversation
The committed composer.lock produced 51 of the repo's 60 open Dependabot alerts and nothing read it. Consumers resolve their own dependencies, the dist tarball already excluded it via export-ignore, and tests.yml installs with `composer update`, never `composer install`. It also broke the composer updater outright. Dependabot copies `require.php` into `config.platform.php`, so it resolved at PHP 8.3 while the lock held symfony 8 packages that need 8.4, and every targeted update died on "symfony/console v8.0.8 requires php >=8.4". That is why no composer PR has opened since the ecosystem was re-enabled. Without the lock the same tree resolves cleanly at 8.3, so the declared floor stays correct. Security updates now group per ecosystem instead of arriving one PR per advisory; `applies-to` defaults to version updates, which the previous groups relied on implicitly. The workflow changes clear all ten zizmor findings: checkouts that never push get `persist-credentials: false`, the four that do push carry an explicit ignore, and step outputs move out of `run:` into `env:`.
This was referenced Sep 7, 2026
Merged
chore(ci): add workflow scanning, group security updates, harden checkouts
relaticle/activity-log#46
Open
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Clears 51 of 60 open Dependabot alerts and all 10 code scanning alerts, and unbreaks the composer updater.
composer.lock
Removed. Nothing read it:
.gitattributesalready carriedcomposer.lock export-ignore, so it never shipped in the dist tarball.tests.ymlinstalls withcomposer require --no-update+composer update, nevercomposer install.grep -rn composer.lock bin/ src/ .github/ config/ database/ stubs/ tests/returns nothing.Its only observable effect was 51 Dependabot alerts, every one of them in a file no user of this package ever reads.
Why the composer updater has been silent
The composer ecosystem was restored to
dependabot.ymlon 2026-08-19 and has opened zero PRs since. Security updates, which ignore bothcooldownandopen-pull-requests-limit, have opened zero since the first composer alert on 2026-05-27.dependabot-core copies
require.phpintoconfig.platform.php(lockfile_updater.rb#initial_platform), so^8.3became a hard 8.3. The lock held symfony 8 packages requiring PHP >= 8.4. Reproduced locally with Composer 2.10.2, the version Dependabot ships:dependabot-core is meant to retry with a higher PHP version here, but the two files implementing that retry disagree:
version_resolver.rbmatches(?<=require\s)php,lockfile_updater.rbmatches(?<=requires\s)php. Composer emits "requires php", so the update checker's branch never fires and the job errors before the lockfile updater runs. Theext-*branch of the same regex is unaffected, which is why missing-extension retries still work.Without the lock, the full tree resolves at platform 8.3 (193 installs, no conflict), so
"php": "^8.3"stays accurate and is unchanged here.dependabot.yml
Each ecosystem gets a
security-updatesgroup alongside its existing group.applies-todefaults to version updates, which is why #211, #212 and #213 each arrived as a separate PR.Workflows
Clears all 6
artipackedand all 4template-injectionfindings. Verified withzizmor --no-online-auditson this branch against3.x: 6 warnings + 4 infos before, 0 after, nothing new introduced.tests.ymland the source checkout indeploy-docs.ymlnever push, so they getpersist-credentials: false.git-auto-commit-actionsteps, the tag cleanup) carry an inline ignore naming the push.run:bodies intoenv:.Also done outside this PR
allow_auto_mergewas off at the repo level, soauto-merge.ymlfailed on every Dependabot PR withAuto merge is not allowed for this repository. Now enabled.One caveat worth deciding separately: a merge enabled with
GITHUB_TOKENdoes not triggeron: pushworkflows, anddeploy-docs.ymlison: pushwithpaths: docs/**. Auto-merged docs bumps would stop redeploying the docs site until that uses a GitHub App token or a scheduled redeploy.4.xandfeat/4.0carry their owncomposer.lockand need the same treatment, or the file returns at the next merge.