chore(tooling): enforce version sync, simplify release automation, add CI quality gates#4
Open
palicko wants to merge 2 commits into
Open
chore(tooling): enforce version sync, simplify release automation, add CI quality gates#4palicko wants to merge 2 commits into
palicko wants to merge 2 commits into
Conversation
…d CI quality gates
Release & versioning:
- Add scripts/check-versions.mjs + unconditional CI job: asserts
package.json/composer.json/CHANGELOG/style.css, compatibility-matrix top
row, .webentor/project.json baselines, and core<->theme shared
devDependency ranges all agree
- Remove changesets (versioning has been manual per AGENTS.md);
release.yml now runs check-versions -> scripts/publish-npm.mjs
(publishes committed versions missing from npm) ->
scripts/release-tags.sh (pushes missing core-v*/setup-v*/starter-v*
tags and dispatches split workflows, closing the npm<->Packagist gap)
- Add scripts/release-prep.mjs (pnpm release:prep pkg=x.y.z ...): stamps
all mirrored version fields, scaffolds changelog entries, inserts the
matrix row, updates project.json baselines in one reviewed diff
- Retire scripts/sync-composer-versions.mjs and the kill-switched
demo-bump workflow/stub; rework test-release.sh phases accordingly
CI fixes & quality gates:
- Fix filtered installs: '{packages/x}...' selector (bare './x...'
skipped workspace deps' own dependencies - root cause of the long-red
core lint job)
- Starter job: composer validate + phpcs via setup-php instead of
composer install (blocked on premium-plugin dist secrets); also lints
the theme (PSR12 app/)
- Add phpcs to webentor-core (composer lint) and CI; scope core/starter
rulesets (node_modules, blade, built assets, LocalValetDriver)
- Fix pre-existing PSR2/PSR12 violations in theme app/ files
- Wire the orphaned lint-staged config into the pre-commit hook and
point it at direct eslint/stylelint invocations
- Drop the no-op grumphp setup from the test-site harness
Hygiene:
- Add renovate.json (grouped monthly updates; standalone theme tree
separated; test-site and internal packages excluded)
- Refresh stale composer.lock content-hashes (core, starter)
- Update AGENTS.md release workflow + changelog path casing
Claude-Session: https://claude.ai/code/session_018UWsPchYR5GKjCr1pPYyjg
The theme's standalone lockfile had drifted many releases behind its manifest (still resolving @webikon/webentor-core ^0.10-era versions), so consumer installs and the CI frozen-lockfile install could not succeed. Regenerated with 'pnpm install --ignore-workspace'; build verified. Claude-Session: https://claude.ai/code/session_018UWsPchYR5GKjCr1pPYyjg
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.
Summary
Machine-enforces what AGENTS.md only documented, and fixes the two long-standing CI reds along the way.
Release & versioning (Track A)
scripts/check-versions.mjs+ unconditionalversionsCI job — asserts every mirrored version source agrees: package.json ↔ composer.json ↔ top CHANGELOG entry ↔ themestyle.css, compatibility-matrix top row,.webentor/project.jsonbaselines, and core↔theme shared devDependency ranges.release.ymlnow runs: check-versions gate →publish-npm.mjs(publishes committed versions missing from npm) →release-tags.sh(pushes missingcore-v*/setup-v*/starter-v*tags and dispatches the split workflows, closing the npm↔Packagist gap — no more forgotten tag pushes).pnpm release:prep core=0.16.0 theme=2.2.0 ...— one command stamps all mirrored version fields, scaffolds changelog entries, inserts the matrix row, and updates project.json baselines; self-verifies via check-versions.CI fixes & quality gates (Track B)
corejob:--filter './packages/webentor-core...'silently skipped webentor-configs' own dependencies; the correct selector is--filter '{packages/webentor-core}...'.composer install(blocked on premium-plugin dist secrets): nowcomposer validate+ phpcs via setup-php, plus theme PSR12 linting.composer lint) with sane ruleset excludes; pre-existing PSR2/PSR12 violations in themeapp/fixed (whitespace/docblock/line-wrapping only, behavior-neutral).Hygiene (Track D)
renovate.json(grouped monthly updates; standalone theme tree separated; test-site + internal packages excluded). Follow-up: enable the Renovate app on the repo.Deliberately not included
@wordpress/*type deps, 27 fixable withresolveJsonModule, rest are real block typing issues). A note in ci.yml marks where to add it once green.Verification
check-versionsgreen on HEAD; fails correctly on injected drift (style.css version, devDep range).pnpm run cigreen;composer lintgreen in core, starter, theme.pnpm test-releaseall 5 phases pass (CI checks, versions, publish dry-run, subtree split, tags dry-run).release:preptested with a multi-package bump (core+starter+theme) and reverted.https://claude.ai/code/session_018UWsPchYR5GKjCr1pPYyjg