Skip to content

chore(sync): carry beta back into development - #537

Merged
rubenvdlinde merged 19 commits into
developmentfrom
sync/beta-to-development-20260830173955
Aug 30, 2026
Merged

chore(sync): carry beta back into development#537
rubenvdlinde merged 19 commits into
developmentfrom
sync/beta-to-development-20260830173955

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

beta held 18 commit(s) development did not — release version bumps committed onto the branch the release ran from, and anything else that arrived out of band. Left unreconciled, both branches change the version file independently and the next developmentbeta promotion conflicts on it.

0 file(s) change. A 0-file result is the normal and correct outcome once the content has already reached development by other means — recording the ancestry is the payload. Without it the merge base never moves and the next promotion conflicts exactly as before.

Version files were resolved to development's side, whose line is ahead of the released one, so this never moves a version backwards. Any conflict outside them aborts the merge for a human instead.

Opened by fleet-back-merge.yml, using the algorithm release.yml already applies to its own sync/*-to-development pull requests.

rjzondervan and others added 19 commits June 3, 2026 12:02
…existent Conduction org

All 8 reusable-workflow callers on `main` referenced `Conduction/.github`.
The `Conduction` GitHub org does not exist (`GET /orgs/Conduction` -> 404), so
every one of these workflows resolved to nothing and produced `startup_failure`
with **zero jobs**.

The stable release path has not executed since 2026-03-23. Run 23441791767
(head_sha 75aa9f0) is the last and only `release-stable.yml` run, and at that
commit the caller still read `ConductionNL/.github/...` — it started 1 job and
failed at "Install and build frontend". It was subsequently changed to
`Conduction/`, and every run since has produced 0 jobs.

`development` already carries the correct `ConductionNL/` refs; only `main`
lagged. The commented-out `additional-apps` example in `code-quality.yml`
carried the same typo and was corrected so the sweep leaves no bad copy to
paste from.

`app-name: doriath` was verified against `appinfo/info.xml` (`<id>doriath</id>`)
and `cname: doriath.conduction.nl` against the app. Both already correct.
(Note: the historic 2026-03 caller said `app-name: app-template`, an
unmigrated template default; that has since been fixed.)

Only `.github/` changes: `git ls-tree main` vs the new tree differ in exactly one
top-level entry, `.github`. `lib/`, `src/`, `docs/`, `appinfo/`, `openspec/`,
`tests/` and `.forgejo/` are byte-identical by tree hash. `.forgejo/` is
deliberately untouched — on Codeberg the org really is `Conduction`.
ci(main): fix shared-workflow org ref — stable release path has been dead since March
…nt-config peers (#140)

`npm ci` failed on main with ERESOLVE, breaking both the lint-check job and
step 9 (`npm ci`) of the release-stable workflow.

Root cause is the committed lockfile, not a real incompatibility. It listed
@nextcloud/eslint-config@8.4.2 while containing NONE of that package's 14
required peerDependencies -- no eslint-plugin-n, eslint-plugin-jsdoc,
eslint-plugin-import, eslint-config-standard, @vue/eslint-config-typescript,
eslint-import-resolver-typescript, and so on. A lockfile in that shape can
only be produced with peer resolution suppressed (--legacy-peer-deps).

On `npm ci`, npm has to satisfy the missing required peer
eslint-import-resolver-typescript@^3.8.0. Unpinned, it floats to 3.10.1,
which declares an optional peer eslint-plugin-import-x@"*"; that floats to
4.17.1, which requires @typescript-eslint/utils@^8.56.0 -- colliding with the
@typescript-eslint/utils@7.18.0 pulled in by our @typescript-eslint/eslint-plugin@7.18.0:

    Conflicting peer dependency: @typescript-eslint/utils@8.65.0
      peerOptional @typescript-eslint/utils@"^8.56.0" from eslint-plugin-import-x@4.17.1
        peerOptional eslint-plugin-import-x@"*" from eslint-import-resolver-typescript@3.10.1
          peer eslint-import-resolver-typescript@"^3.8.0" from @nextcloud/eslint-config@8.4.2

Regenerating the lockfile with peers resolved normally fixes it: npm records
the full peer set, and because eslint-import-resolver-typescript is then a
resolved node rather than a gap npm must fill, the optional
eslint-plugin-import-x is never pulled in and the v8 constraint never appears.

No --legacy-peer-deps, no --force, and no new `overrides` entry: the tree
resolves correctly on its own, so forcing it would only re-hide the problem.

@typescript-eslint stays at 7.18.0 (single copy, no duplication) and
@conduction/nextcloud-vue is held at 1.0.0-beta.101 so this stays a
dependency-resolution fix and not a library upgrade.

Verified: npm ci (npm 10) succeeds from the committed lockfile, and
`npm run lint` passes with 0 errors.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
…uild (#142)

`release-stable` now gets past `npm ci` but fails the next step, `npm run build`:

    [webpack-cli] Error: Cannot find module 'terser-webpack-plugin'
    Require stack:
    - node_modules/@nextcloud/webpack-vue-config/webpack.config.js

@nextcloud/webpack-vue-config requires terser-webpack-plugin without declaring
it, and had been getting away with it because webpack shipped it: webpack
5.105.4 listed "terser-webpack-plugin": "^5.3.17" in its own dependencies.
webpack 5.109.2 removed it, so the phantom disappeared and the require broke.

Our range is "webpack": "^5.94.0", so the previous lockfile regeneration moved
webpack 5.105.4 -> 5.109.2 in range and took terser-webpack-plugin with it.

Declaring terser-webpack-plugin directly fixes the actual defect -- we do use
it, through @nextcloud/webpack-vue-config's config -- and is version
independent, so a future in-range webpack bump cannot silently remove it again.
Pinning webpack back would restore the build but leave the undeclared
dependency in place to break on the next bump.

Verified locally: npm ci (npm 10) succeeds, `npm run build` compiles (0 errors,
2 pre-existing warnings), and `npm run lint` still passes with 0 errors.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
…ction` (#146)

GitHub names a reusable-workflow status context `<caller-job-id> / <called-job-name>`, so this
caller reported as `protect / check-branch` while the org ruleset requires
`branch-protection / check-branch`. The required context never reported at all, leaving PRs to
main/beta permanently BLOCKED.
* chore: raise Nextcloud floor to 32

* chore(ci): drop stable31 from the PHPUnit matrix
Release: merge development into beta
main held 12 commit(s) beta did not. Merged with -s ours: beta's
tree is kept BYTE FOR BYTE and only the ancestry is recorded, so the
beta -> main promotion stops conflicting on files where beta is simply
newer.

Not brought over -- beta is hundreds of commits ahead of main, so these
are the OLDER copies, and several are dead Forgejo/Codeberg CI that
development deliberately removed:

  .forgejo/workflows/documentation.yml .forgejo/workflows/release-stable.yml .github/workflows/branch-protection.yml .github/workflows/code-quality.yml .github/workflows/documentation.yml .github/workflows/issue-triage.yml .github/workflows/openspec-sync.yml .github/workflows/release-beta.yml .github/workflows/release-stable.yml .github/workflows/sync-to-beta.yml appinfo/info.xml package-lock.json package.json
The default branch is moving to `main` for every app in the fleet, and
Dependabot reads its config from the DEFAULT branch only. main's copy
here predates the `target-branch` addition, so the moment the default
flips, every bump would be opened against `main` -- where
branch-protection refuses it and it can never merge.

That is not hypothetical. Measured 2026-08-30, before the config was
fixed on the apps that already defaulted to main: 41 open pull requests
across ten repositories, none of them mergeable, and Dependabot reopening
them as fast as they were closed.

This carries development's canonical config onto main so the flip is
safe. 1 target-branch declarations, one per ecosystem.
Release: merge beta into main
…73947

chore(sync): carry main back into beta
@rubenvdlinde
rubenvdlinde merged commit e09f723 into development Aug 30, 2026
1 check passed
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/keepiq @ 0c7aff2

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
test-l10n
format
check-l10n-js
check-schema-l10n
composer ✅ 111/111
npm ✅ 536/536
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright 🚨 NO VERDICT — enabled but never ran
Hydra gates

Quality workflow — 2026-08-30 18:47 UTC

Download the full PDF report from the workflow artifacts.

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