Skip to content

Release: merge development into beta - #4

Open
github-actions[bot] wants to merge 492 commits into
betafrom
development
Open

Release: merge development into beta#4
github-actions[bot] wants to merge 492 commits into
betafrom
development

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow.

Reminder: Add a major, minor, or patch label to this PR to control the version bump. Default is patch.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 29233d5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 11:37 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 1ed39ee

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 11:55 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ c1a2f4a

Check PHP Vue Security License Tests
lint ⏭️
phpcs
phpmd ⏭️
psalm
phpstan
phpmetrics
eslint ⏭️
stylelint ⏭️
composer ⏭️
npm ✅ 215/215
PHPUnit
Newman
Playwright

Quality workflow — 2026-05-11 12:31 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 0eab416

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 12:33 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ fd9981b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 16:52 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ b3dd43e

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 18:21 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ f3ff3df

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 18:54 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 42f1ac1

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-11 21:20 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 9481e19

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-11 21:50 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 9478a9c

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-11 21:55 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 08dc2b5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-11 21:58 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 946145c

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-11 22:01 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 9bc461a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-11 22:02 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ ca77020

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-12 04:51 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 6a586d3

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-12 05:15 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 3429670

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-12 05:26 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 77a0fea

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-12 05:29 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ d864446

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-12 06:02 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ cc5edb5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 08:08 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 9924f1b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 08:11 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ a59a311

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 08:20 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 6cf8bc5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 09:20 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ c059a08

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 09:55 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 5591ad9

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 10:20 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 73a6ff9

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 10:38 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ b761d7a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 11:15 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ d15d93d

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 11:33 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 8ae89e3

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 12:04 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ e917fc6

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 12:10 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 5bb2104

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 429/429
PHPUnit
Newman
Playwright ⏭️

Quality workflow — 2026-05-12 12:20 UTC

Download the full PDF report from the workflow artifacts.

…pping (#274)

* ci(quality): enable the Code Quality gates this repo was silently skipping

A skipped job and a passing job are indistinguishable in the Quality
Report. Every gate turned on here reported 'skipped' in every run.

Each newly-enabled leg was measured against this tree BEFORE being
enabled; the results are in the PR description. Legs that were measured
failing are enabled anyway - the defects are pre-existing, and the only
thing that changed is that CI can now see them.

Journeydoc Capture and enable-axe are deliberately NOT enabled.

* ci(quality): remove duplicate with: keys; respect documented newman opt-outs

A second key in the same with: block is accepted last-one-wins by every
YAML parser involved, so the file reads as configured while the value is
decided somewhere else in it.

Where enable-newman: false already carried a specific, still-live reason
(OR React/Async await + SQLite REGEXP; ZGW API incomplete; collections
hard-coding non-CI URLs and unseeded registers), it is left off and the
reason is quoted rather than overridden. Where it was a bare line with no
comment, the stale line is removed instead of shadowed.
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ f154a66

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-08-04 15:42 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 30372a3

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-08-04 15:56 UTC

Download the full PDF report from the workflow artifacts.

… install (#276)

lib/Settings/scholiq_register.json declared no components.registers section.
OpenRegister's ImportHandler creates a Register row from that key and nowhere
else on the main/beta lines (ImportHandler.php:1514) -- so a clean install
created schemas and ZERO registers, and then skipped all 13 seed objects,
whose @self.register is resolved through the registersMap that section
populates.

The slug is derived, not invented: lib/ and src/ address
`objects/scholiq/<schema>` in 161 places, there are ~90 `REGISTER = 'scholiq'`
constants, and all 13 seed objects carry `@self.register: "scholiq"`.

The schema list is by SLUG, not by components.schemas key -- and for scholiq
117 of 118 differ (`Course` -> `course`, `CourseTemplate` -> `course-template`,
`SovereigntyPolicy` -> `sovereignty-policy`, ...; only `AiFeature` coincides).
ImportHandler keys its schemasMap by $schema->getSlug()
(ImportHandler.php:1397/1477), so a register listing the KEYS binds ZERO
schemas while still looking correctly declared.

info.version 0.19.0 -> 0.20.0 so OpenRegister's version-gated importFromApp
actually re-imports.

VERIFICATION, and an OpenRegister bug this uncovered
----------------------------------------------------
scholiq's register import currently returns HTTP 500 against BOTH OpenRegister
main (0.2.19) and development (0.2.17-unstable.24), before and after this
change:

  OCA\OpenRegister\Db\SchemaMapper::loadSchema(): Argument #1 ($identifier)
  must be of type string|int, array given
  (SchemaMapper.php:2891, called from :3670)

Cause: SchemaMapper::resolveSchemaExtension() treats every entry of a schema's
`allOf` as a schema REFERENCE and passes it straight to loadSchema(). scholiq
uses `allOf`/`anyOf` for standard JSON Schema if/then/else conditional
subschemas (Lesson, GradeEntry, PortfolioEntry, DeliberationRecord) -- valid
JSON Schema, but OpenRegister overloads `allOf` as inheritance and crashes.
That is an OpenRegister defect, is entirely pre-existing, and is reported
separately; it means scholiq's register import has been failing outright, not
merely failing to create a register.

To show this change is nevertheless correct and sufficient once that crash is
fixed, the declaration was verified in isolation: with those 4 conditional
blocks removed in a THROWAWAY copy (not in this commit), on a virgin
OpenRegister development instance:

  configurations/import -> HTTP 200
  118/118 expected schema slugs present AND bound into the register
  118/118 GET /api/objects/scholiq/<schema> -> HTTP 200

appinfo/info.xml already lists InitializeSettings under <install> as well as
<post-migration>, so scholiq does NOT have the second, independent gap where
the register import is post-migration-only and therefore never runs on a fresh
install.

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 538e0e1

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-08-05 05:39 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 4258256

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-05 15:24 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 3 commits August 5, 2026 20:04
… EUPL-1.2

tests/e2e/docs-screenshots.spec.ts declared SPDX-License-Identifier:
AGPL-3.0-or-later while every other licence signal in the repo (LICENSE,
composer.json, package.json, appinfo/info.xml and every lib/**.php @license
tag) says EUPL-1.2. The file carries 'SPDX-FileCopyrightText: 2026 Scholiq
Contributors', so it is ours.

Header-only change; PHPUnit (898 tests) and the node:test JS unit suite
(5 tests) are identical before and after. gate-28: PASS -> PASS.
v1.0.1 contains ZERO `_skip` calls, so a gate whose prerequisite is absent
emits nothing and `hydra-gates-require-full-coverage` (default ON) counts it
as DID NOT RUN. v1.3.0 ships 36 not-applicable declarations. Measured on
doriath PR #160: gates 4/24/33 moved from unexplained DID NOT RUN to explicit
NOT APPLICABLE and Hydra Gates went failure -> success on the pin alone.
…ation-2026-08-05

chore(license): normalise the last stray AGPL-3.0 SPDX declaration to EUPL-1.2
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 9bce4e3

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd
psalm
phpstan ⏭️
phpmetrics ⏭️
eslint ⏭️
stylelint ⏭️
build
composer ⏭️ ⏭️
npm ⏭️
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-05 18:42 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 3276d28

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-05 18:56 UTC

Download the full PDF report from the workflow artifacts.

…o its own ruleset (#279)

The nested <exclude-pattern> inside the UnusedFormalParameter <rule> was inert:
PHPMD 2.15 honours exclude-patterns only as direct children of <ruleset>, so
lib/Migration was scanned by the very rule the pattern was written to spare.

Hoisting the pattern to the top level of phpmd.xml would have worked but is
applied at file-collection time, dropping lib/Migration from EVERY rule and
silently swallowing real complexity, StaticAccess and method-length findings.

UnusedFormalParameter now lives alone in phpmd-unusedparams.xml with a
top-level */Migration/* exclude, and the phpmd composer script runs both legs
keeping the worst exit code.
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ e5ff86a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-05 20:49 UTC

Download the full PDF report from the workflow artifacts.

A pinned `hydra-gates-ref` is a silent expiry date on every upstream fix:
this repo cannot receive a gate-package change until this line moves.

v1.4.0 is the latest tag and the first one that carries
`hydra-gates/scripts/axe-run.cjs` (verified absent at v1.3.0), so it is
also the first that has ConductionNL/.github#168 axe DOM scoping and
ConductionNL/.github#165 gate-46 fix.

`enable-axe` is deliberately NOT enabled in this commit. Ordering matters:
the ref lands first, enabling axe is a separate decision.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ ed62881

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 05:15 UTC

Download the full PDF report from the workflow artifacts.

…ne (#284)

The standing 'Release: merge development into beta' PR has head_ref
'development', so its pull_request run rendered the same concurrency group as a
push to development. cancel-in-progress killed the push run, which is the only
carrier of the push-only jobs (Coverage Baseline Check, SBOM, Features
Extract). Those jobs report 'skipped' on the surviving PR run, which renders
like a pass, so the gate never produced a verdict.

Suffixes -push on the group for main/development pushes only; feature-branch
dedup is unchanged. No gate weakened: no waiver, baseline, threshold or
continue-on-error.

Same fix as openconnector#1158.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 2542578

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 05:26 UTC

Download the full PDF report from the workflow artifacts.

…#286)

.coverage-baseline was read as a floor by the phpunit guard and as an exact
target by the push-side staleness check. Together they demand equality with a
checked-in constant, which against a moving base branch is not satisfiable:
closing "stale" means committing the value the tree will measure after the PR
lands. Measured on openregister — committed 58.93, development advanced
16030->16038 tests, merge result measured 58.88, guard reported a 0.05% drop.

coverage-guard.php gains --against=<clover.xml>, naming a report measured at
the merge base. When present it is the only floor; the committed constant is
reported but not enforced. Both numbers then come from one driver in one job,
so the xdebug/pcov statement-counting difference cancels rather than being
baked in, and the merge base cannot go stale.

Ratios are compared as exact integer cross-products, not rounded percentages:
at two decimals a one-statement regression read as "unchanged" and exited 0.
An empty or zero-statement report is now a hard error rather than 0%, which as
the merge-base side would set the floor to zero and pass every drop.

Verified on real CI clover artifacts: a genuine 1.44% drop fails, an unchanged
tree passes, and adding untested code fails while adding tested code passes.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ ff24ea5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 07:41 UTC

Download the full PDF report from the workflow artifacts.

Drops the `hydra-gates-ref:` override from the quality caller so the input
falls back to the shared workflow's own default, which is already `main`.

This workflow calls ConductionNL/.github/.github/workflows/quality.yml@main.
Pinning the gates package to a tag while consuming the workflow at @main
splits the two halves apart: the runner moves, the gate package does not.
Two fleet-wide incidents came out of exactly that split.

  * .github#159 — 22 repos were pinned to v1.0.1, which predated the fixes
    that made 16 gates actually execute. Every one of those gates reported
    PASS. A check that did not run looks exactly like one that passed.
  * .github#173 — `require-full-coverage` was flipped to default-on at
    @main and reached the old pinned runners, which had no coverage
    accounting to honour it with, so they went red on gates they had no
    subject matter for.

Unpinned, both sides move together and a gate fix lands here without a
commit here. The input is still honoured: to hold this repo still for a
specific reason, set it explicitly and say why. To roll it back for
everyone, revert on ConductionNL/.github main.

`enable-hydra-gates` is untouched. The comment block above it kept the part
that explains why the tier is on and lost the part that justified the pin.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ eec9a30

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 08:33 UTC

Download the full PDF report from the workflow artifacts.

…ppHost (gate-64 / ADR-040) (#288)

* fix(apphost): register OpenRegister's autoloader before referencing AppHost

Nextcloud registers apps in sorted order: OC_App::getEnabledApps() does
sort($apps) and Coordinator::registerApps() walks that list calling
OC_App::registerAutoloading($appId, $path) and then $app->register() for one
app at a time, so every app registers before the PSR-4 prefix of every
alphabetically-later app exists.

`scholiq` sorts after `openregister`, so OCA\OpenRegister\ happens to be
autoloadable here today — by alphabet, not by design. Scholiq depends on that
accident more sharply than most: its Bootstrap::register() call is UNGUARDED,
so the moment the ordering stops holding the resulting \Error aborts the WHOLE
of Application::register(). Coordinator catches it, logs an 'emergency' and
continues, leaving Scholiq enabled and serving with ServiceOverrideRegistrar
and EventListenerWiring silently never run.

Fix: register OpenRegister's prefix ourselves first. registerAutoloading()
touches only the autoloader and is idempotent, so on the current ordering this
costs nothing. IAppManager::loadApp() is deliberately NOT used: it marks
OpenRegister loaded and calls Coordinator::bootApp(), booting it before its own
register() has run.

Caught by hydra gate-64 (apphost-autoload-prelude), ADR-040. Unblocks the
gate-64 failure on the hydra-gates v1.5.0 bump PR (#287).

* fix(apphost): make the prelude branch-free and declare OC_App to psalm

Two CI findings on the prelude, both real:

1. psalm UndefinedClass on \OC_App. It is Nextcloud's server-private legacy
   bootstrap class, absent from nextcloud/ocp, and there is no OCP interface
   for registering another app's autoloader. Declared as a suppressed
   referencedClass in psalm.xml, the same way doriath declares it.

2. The coverage ratchet. `return true` after the call plus `return false` in
   the catch gave the method a branch that NO environment can exercise both
   sides of — whichever runs, the other is dead in that run — so the class
   could never reach full line coverage. No caller ever consumed the return
   value either: what callers depend on is the class_exists() guard that
   follows the call. The method is now void with a single statement in the
   try and a comment-only catch, so every executable line runs in every
   environment.

The tests now assert the two things that are actually observable: that control
returns to the caller at all (a Throwable escaping would fail the test, and in
production would abort the whole register()), and that a second call does not
stack another autoloader.

phpmd StaticAccess on the new composition-root call is documented on the
calling method rather than baselined.

* docs(spec): state the prelude invariant as prose, not as excluded scenarios

The two scenarios added for the ADR-040 prelude each carried an '@e2e exclude'.
An exclusion is not evidence, and neither behaviour is reachable from a browser
or an HTTP client: both live in the app-registration phase, which completes
before the first request is dispatched, and the absent-OpenRegister path cannot
be set up on an instance that needs OpenRegister to serve the app at all.

Stated in the requirement prose instead, naming the unit test that does assert
them (tests/Unit/AppInfo/OpenRegisterAutoloaderTest.php). No scenario is
declared, so none is excluded.

* test: cover the prelude's degraded path, which no instance could reach

The coverage ratchet was right and the code was wrong. Clover for scholiq shows
it exactly: line 100 (the registerAutoloading call) count=2, line 101 (the
catch) count=0. The catch was never entered — because every instance this suite
runs on HAS OpenRegister installed, so getAppPath() never throws. The
never-rethrow branch, which is the entire reason this class exists, had never
once been executed by a test.

register() now takes an optional app id. Production callers pass nothing and get
'openregister'; the new test passes an id that cannot resolve, so
getAppPath() throws and the catch runs. The literal stays AT the
registerAutoloading call site rather than becoming a signature default, so it
remains visible to a reader and to hydra gate-64, which reads that call's
arguments.

The new test asserts something real rather than merely not throwing: a prelude
whose app cannot be resolved must leave spl_autoload_functions() untouched.
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 48d21e5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 09:00 UTC

Download the full PDF report from the workflow artifacts.

Comment on lines +32 to +36
uses: ConductionNL/.github/.github/workflows/release-beta.yml@main
with:
app-name: scholiq
channel: dev
secrets: inherit
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ f03ce51

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 11:22 UTC

Download the full PDF report from the workflow artifacts.

rubenvdlinde and others added 2 commits August 6, 2026 13:44
squizlabs/php_codesniffer <3.13.6 is affected by CVE-2026-67434 (OS
command injection, GHSA-hmqg-cxww-wqhq), published 2026-08-05 23:53Z.
composer audit queries the live advisory database, so the Security
(composer) job started failing on every repo pinned to 3.13.5.

That failure is not confined to the security tier: quality.yml gates
PHPUnit, Newman, Playwright, journeydoc-capture and sbom on
needs.security.result != 'failure', so a failing security job turns the
entire test tier into skipped -- which renders as a grey tick, not a
red X. The tests stop running and nothing looks broken.

Dev-only formatter, no runtime exposure, but the lockfile bump is the
correct fix; a waiver would leave the test tier gated.
fix(security): bump php_codesniffer to 3.13.6 (CVE-2026-67434) — unblocks the skipped test tier
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/scholiq @ 04871a3

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
composer ✅ 100/100
npm ✅ 750/750
PHPUnit
Newman ⏭️
Playwright ⏭️
Hydra gates

Quality workflow — 2026-08-06 12:15 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.

4 participants